parent
f81a980f59
commit
1e3d8021e9
@ -0,0 +1,32 @@
|
|||||||
|
{{!
|
||||||
|
Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
|
||||||
|
WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
|
Version 2.0 (the "License"); you may not use this file except
|
||||||
|
in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing,
|
||||||
|
software distributed under the License is distributed on an
|
||||||
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
KIND, either express or implied. See the License for the
|
||||||
|
specific language governing permissions and limitations
|
||||||
|
under the License.
|
||||||
|
}}
|
||||||
|
|
||||||
|
{{unit "mdm.unit.date-range-picker"}}
|
||||||
|
|
||||||
|
{{#zone "content"}}
|
||||||
|
<div id="operations-mod" data-permissions="{{permissions}}" data-device-type="{{deviceType}}" data-ownership="{{ownership}}">
|
||||||
|
{{unit "mdm.unit.device.operation-mod"}}
|
||||||
|
</div>
|
||||||
|
{{/zone}}
|
||||||
|
|
||||||
|
{{#zone "bottomJs"}}
|
||||||
|
<!--suppress HtmlUnknownTarget -->
|
||||||
|
<script id="operations-bar" src="{{@unit.publicUri}}/templates/operations.hbs"
|
||||||
|
type="text/x-handlebars-template"></script>
|
||||||
|
{{js "js/operation-bar.js"}}
|
||||||
|
{{/zone}}
|
@ -0,0 +1,106 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
function onRequest(context) {
|
||||||
|
var log = new Log("mdm.unit.device.operation-bar");
|
||||||
|
var userModule = require("/app/modules/business-controllers/user.js")["userModule"];
|
||||||
|
var viewModel = {};
|
||||||
|
var permissions = {};
|
||||||
|
|
||||||
|
// adding android operations related permission checks
|
||||||
|
permissions["android"] = [];
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/ring")) {
|
||||||
|
permissions["android"].push("DEVICE_RING");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/lock")) {
|
||||||
|
permissions["android"].push("DEVICE_LOCK");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/unlock")) {
|
||||||
|
permissions["android"].push("DEVICE_UNLOCK");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/location")) {
|
||||||
|
permissions["android"].push("DEVICE_LOCATION");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/clear-password")) {
|
||||||
|
permissions["android"].push("CLEAR_PASSWORD");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/reboot")) {
|
||||||
|
permissions["android"].push("DEVICE_REBOOT");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/upgrade-firmware")) {
|
||||||
|
permissions["android"].push("UPGRADE_FIRMWARE");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/mute")) {
|
||||||
|
permissions["android"].push("DEVICE_MUTE");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/send-notification")) {
|
||||||
|
permissions["android"].push("NOTIFICATION");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/change-lock-code")) {
|
||||||
|
permissions["android"].push("CHANGE_LOCK_CODE");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/enterprise-wipe")) {
|
||||||
|
permissions["android"].push("ENTERPRISE_WIPE");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/wipe")) {
|
||||||
|
permissions["android"].push("WIPE_DATA");
|
||||||
|
}
|
||||||
|
|
||||||
|
// adding ios operations related permission checks
|
||||||
|
permissions["ios"] = [];
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/ios/lock")) {
|
||||||
|
permissions["ios"].push("DEVICE_LOCK");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/ios/location")) {
|
||||||
|
permissions["ios"].push("LOCATION");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/ios/enterprise-wipe")) {
|
||||||
|
permissions["ios"].push("ENTERPRISE_WIPE");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/ios/notification")) {
|
||||||
|
permissions["ios"].push("NOTIFICATION");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/ios/ring")) {
|
||||||
|
permissions["ios"].push("RING");
|
||||||
|
}
|
||||||
|
|
||||||
|
// adding windows operations related permission checks
|
||||||
|
permissions["windows"] = [];
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/windows/lock")) {
|
||||||
|
permissions["windows"].push("DEVICE_LOCK");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/disenroll/windows")) {
|
||||||
|
permissions["windows"].push("DISENROLL");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/windows/wipe")) {
|
||||||
|
permissions["windows"].push("WIPE_DATA");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/windows/ring")) {
|
||||||
|
permissions["windows"].push("DEVICE_RING");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/windows/lock-reset")) {
|
||||||
|
permissions["windows"].push("LOCK_RESET");
|
||||||
|
}
|
||||||
|
|
||||||
|
viewModel["permissions"] = stringify(permissions);
|
||||||
|
|
||||||
|
viewModel["deviceType"] = context.unit.params.deviceType;
|
||||||
|
viewModel["ownership"] = context.unit.params.ownership;
|
||||||
|
|
||||||
|
return viewModel;
|
||||||
|
}
|
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"version": "1.0.0",
|
||||||
|
"extends": "cdmf.unit.device.operation-bar"
|
||||||
|
}
|
@ -0,0 +1,248 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Setting-up global variables.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var operations = '.wr-operations',
|
||||||
|
modalPopup = '.modal',
|
||||||
|
modalPopupContent = modalPopup + ' .modal-content',
|
||||||
|
navHeight = $('#nav').height(),
|
||||||
|
headerHeight = $('header').height(),
|
||||||
|
offset = (headerHeight + navHeight),
|
||||||
|
deviceSelection = '.device-select',
|
||||||
|
platformTypeConstants = {
|
||||||
|
"ANDROID": "android",
|
||||||
|
"IOS": "ios",
|
||||||
|
"WINDOWS": "windows"
|
||||||
|
},
|
||||||
|
ownershipTypeConstants = {
|
||||||
|
"BYOD": "BYOD",
|
||||||
|
"COPE": "COPE"
|
||||||
|
},
|
||||||
|
operationBarModeConstants = {
|
||||||
|
"BULK": "BULK_OPERATION_MODE",
|
||||||
|
"SINGLE": "SINGLE_OPERATION_MODE"
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function to get selected devices ID's
|
||||||
|
*/
|
||||||
|
function getSelectedDeviceIds() {
|
||||||
|
var deviceIdentifierList = [];
|
||||||
|
$(deviceSelection).each(function (index) {
|
||||||
|
var device = $(this);
|
||||||
|
var deviceId = device.data('deviceid');
|
||||||
|
var deviceType = device.data('type');
|
||||||
|
deviceIdentifierList.push({
|
||||||
|
"id": deviceId,
|
||||||
|
"type": deviceType
|
||||||
|
});
|
||||||
|
});
|
||||||
|
if (deviceIdentifierList.length == 0) {
|
||||||
|
var thisTable = $(".DTTT_selected").closest('.dataTables_wrapper').find('.dataTable').dataTable();
|
||||||
|
thisTable.api().rows().every(function () {
|
||||||
|
if ($(this.node()).hasClass('DTTT_selected')) {
|
||||||
|
var deviceId = $(thisTable.api().row(this).node()).data('deviceid');
|
||||||
|
var deviceType = $(thisTable.api().row(this).node()).data('devicetype');
|
||||||
|
deviceIdentifierList.push({
|
||||||
|
"id": deviceId,
|
||||||
|
"type": deviceType
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return deviceIdentifierList;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* On operation click function.
|
||||||
|
* @param selection: Selected operation
|
||||||
|
*/
|
||||||
|
function operationSelect(selection) {
|
||||||
|
var deviceIdList = getSelectedDeviceIds();
|
||||||
|
if (deviceIdList == 0) {
|
||||||
|
$(modalPopupContent).html($("#errorOperations").html());
|
||||||
|
} else {
|
||||||
|
$(modalPopupContent).addClass("operation-data");
|
||||||
|
$(modalPopupContent).html($(operations + " .operation[data-operation-code=" + selection + "]").html());
|
||||||
|
$(modalPopupContent).data("operation-code", selection);
|
||||||
|
}
|
||||||
|
showPopup();
|
||||||
|
}
|
||||||
|
|
||||||
|
function getDevicesByTypes(deviceList) {
|
||||||
|
var deviceTypes = {};
|
||||||
|
$.each(deviceList, function (index, item) {
|
||||||
|
if (!deviceTypes[item.type]) {
|
||||||
|
deviceTypes[item.type] = [];
|
||||||
|
}
|
||||||
|
if (item.type == platformTypeConstants.ANDROID ||
|
||||||
|
item.type == platformTypeConstants.IOS || item.type == platformTypeConstants.WINDOWS) {
|
||||||
|
deviceTypes[item.type].push(item.id);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return deviceTypes;
|
||||||
|
}
|
||||||
|
|
||||||
|
//function unloadOperationBar() {
|
||||||
|
// $("#showOperationsBtn").addClass("hidden");
|
||||||
|
// $(".wr-operations").html("");
|
||||||
|
//}
|
||||||
|
|
||||||
|
function loadOperationBar(deviceType, ownership, mode) {
|
||||||
|
var operationBar = $("#operations-bar");
|
||||||
|
var operationBarSrc = operationBar.attr("src");
|
||||||
|
|
||||||
|
$.template("operations-bar", operationBarSrc, function (template) {
|
||||||
|
var serviceURL = "/api/device-mgt/v1.0/devices/" + deviceType + "/*/features";
|
||||||
|
invokerUtil.get(
|
||||||
|
serviceURL,
|
||||||
|
// success callback
|
||||||
|
function (data) {
|
||||||
|
var permittedOperations = [];
|
||||||
|
var i;
|
||||||
|
var permissionList = $("#operations-mod").data("permissions");
|
||||||
|
var totalFeatures = JSON.parse(data);
|
||||||
|
for (i = 0; i < permissionList[deviceType].length; i++) {
|
||||||
|
var j;
|
||||||
|
for (j = 0; j < totalFeatures.length; j++) {
|
||||||
|
if (permissionList[deviceType][i] == totalFeatures[j]["code"]) {
|
||||||
|
if (deviceType == platformTypeConstants.ANDROID) {
|
||||||
|
if (totalFeatures[j]["code"] == "DEVICE_UNLOCK") {
|
||||||
|
if (ownership == ownershipTypeConstants.COPE) {
|
||||||
|
permittedOperations.push(totalFeatures[j]);
|
||||||
|
}
|
||||||
|
} else if (totalFeatures[j]["code"] == "WIPE_DATA") {
|
||||||
|
if (mode == operationBarModeConstants.BULK) {
|
||||||
|
if (ownership == ownershipTypeConstants.COPE) {
|
||||||
|
permittedOperations.push(totalFeatures[j]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
permittedOperations.push(totalFeatures[j]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
permittedOperations.push(totalFeatures[j]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
permittedOperations.push(totalFeatures[j]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var viewModel = {};
|
||||||
|
permittedOperations = permittedOperations.filter(function (current) {
|
||||||
|
var iconName;
|
||||||
|
switch (deviceType) {
|
||||||
|
case platformTypeConstants.ANDROID:
|
||||||
|
iconName = operationModule.getAndroidIconForFeature(current.code);
|
||||||
|
break;
|
||||||
|
case platformTypeConstants.WINDOWS:
|
||||||
|
iconName = operationModule.getWindowsIconForFeature(current.code);
|
||||||
|
break;
|
||||||
|
case platformTypeConstants.IOS:
|
||||||
|
iconName = operationModule.getIOSIconForFeature(current.code);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* adding ownership in addition to device-type
|
||||||
|
as it's vital in cases where UI for the same feature should change
|
||||||
|
according to ownership
|
||||||
|
*/
|
||||||
|
if (ownership) {
|
||||||
|
current.ownership = ownership;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (iconName) {
|
||||||
|
current.icon = iconName;
|
||||||
|
}
|
||||||
|
|
||||||
|
return current;
|
||||||
|
});
|
||||||
|
|
||||||
|
viewModel.features = permittedOperations;
|
||||||
|
var content = template(viewModel);
|
||||||
|
$(".wr-operations").html(content);
|
||||||
|
},
|
||||||
|
// error callback
|
||||||
|
function (message) {
|
||||||
|
$(".wr-operations").html(message);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function runOperation(operationName) {
|
||||||
|
var deviceIdList = getSelectedDeviceIds();
|
||||||
|
var list = getDevicesByTypes(deviceIdList);
|
||||||
|
|
||||||
|
var successCallback = function (data) {
|
||||||
|
if (operationName == "NOTIFICATION") {
|
||||||
|
$(modalPopupContent).html($("#messageSuccess").html());
|
||||||
|
} else {
|
||||||
|
$(modalPopupContent).html($("#operationSuccess").html());
|
||||||
|
}
|
||||||
|
showPopup();
|
||||||
|
};
|
||||||
|
var errorCallback = function (data) {
|
||||||
|
$(modalPopupContent).html($("#errorOperationUnexpected").html());
|
||||||
|
showPopup();
|
||||||
|
};
|
||||||
|
|
||||||
|
var payload, serviceEndPoint;
|
||||||
|
if (list[platformTypeConstants.IOS]) {
|
||||||
|
payload =
|
||||||
|
operationModule.generatePayload(platformTypeConstants.IOS, operationName, list[platformTypeConstants.IOS]);
|
||||||
|
serviceEndPoint = operationModule.getIOSServiceEndpoint(operationName);
|
||||||
|
} else if (list[platformTypeConstants.ANDROID]) {
|
||||||
|
payload = operationModule
|
||||||
|
.generatePayload(platformTypeConstants.ANDROID, operationName, list[platformTypeConstants.ANDROID]);
|
||||||
|
serviceEndPoint = operationModule.getAndroidServiceEndpoint(operationName);
|
||||||
|
} else if (list[platformTypeConstants.WINDOWS]) {
|
||||||
|
payload = operationModule.generatePayload(platformTypeConstants.WINDOWS, operationName,
|
||||||
|
list[platformTypeConstants.WINDOWS]);
|
||||||
|
serviceEndPoint = operationModule.getWindowsServiceEndpoint(operationName);
|
||||||
|
}
|
||||||
|
if (operationName == "NOTIFICATION") {
|
||||||
|
var errorMsgWrapper = "#notification-error-msg";
|
||||||
|
var errorMsg = "#notification-error-msg span";
|
||||||
|
var messageTitle = $("#messageTitle").val();
|
||||||
|
var messageText = $("#messageText").val();
|
||||||
|
if (!(messageTitle && messageText)) {
|
||||||
|
$(errorMsg).text("Enter a message. It cannot be empty.");
|
||||||
|
$(errorMsgWrapper).removeClass("hidden");
|
||||||
|
} else {
|
||||||
|
invokerUtil.post(serviceEndPoint, payload, successCallback, errorCallback);
|
||||||
|
$(modalPopupContent).removeData();
|
||||||
|
hidePopup();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
invokerUtil.post(serviceEndPoint, payload, successCallback, errorCallback);
|
||||||
|
$(modalPopupContent).removeData();
|
||||||
|
hidePopup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* DOM ready functions.
|
||||||
|
*/
|
||||||
|
$(document).ready(function () {
|
||||||
|
$(operations).show();
|
||||||
|
});
|
@ -0,0 +1,286 @@
|
|||||||
|
<div class="row no-gutter">
|
||||||
|
<div class="wr-hidden-operations-nav col-lg-4">
|
||||||
|
<a href="javascript:void(0)" onclick="showAdvanceOperation('security', this)" class="selected">
|
||||||
|
<span class="wr-hidden-operations-icon fw-stack">
|
||||||
|
<i class="fw fw-padlock fw-stack-2x"></i>
|
||||||
|
</span>
|
||||||
|
Security
|
||||||
|
</a>
|
||||||
|
<a href="javascript:void(0)" onclick="showAdvanceOperation('restriction', this)">
|
||||||
|
<span class="wr-hidden-operations-icon fw-stack">
|
||||||
|
<i class="fw fw-settings fw-stack-2x"></i>
|
||||||
|
</span>
|
||||||
|
Restrictions
|
||||||
|
</a>
|
||||||
|
<a href="javascript:void(0)" onclick="showAdvanceOperation('application', this)">
|
||||||
|
<span class="wr-hidden-operations-icon fw-stack">
|
||||||
|
<i class="fw fw-padlock fw-stack-2x"></i>
|
||||||
|
</span>
|
||||||
|
Applications
|
||||||
|
</a>
|
||||||
|
<a href="javascript:void(0)" onclick="showAdvanceOperation('wifi', this)">
|
||||||
|
<span class="wr-hidden-operations-icon fw-stack">
|
||||||
|
<i class="fw fw-wifi fw-stack-2x"></i>
|
||||||
|
</span>
|
||||||
|
Wi-fi
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="wr-hidden-operations-content col-lg-8">
|
||||||
|
|
||||||
|
<!-- security -->
|
||||||
|
<div class="wr-hidden-operation" data-operation="security" style="display: block">
|
||||||
|
<div class="panel panel-default operation-data" data-operation="{{features.ENCRYPT_STORAGE.code}}">
|
||||||
|
<div class="panel-heading" role="tab">
|
||||||
|
<h2 class="sub-title panel-title">
|
||||||
|
<a data-toggle="collapse" data-parent="#accordion" href="#enableEncryptionTab"
|
||||||
|
aria-expanded="true" aria-controls="enableEncryptionTab">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw fw-arrow fw-down-arrow fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
Encryption Enable/Disable
|
||||||
|
</a>
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
<div id="enableEncryptionTab" class="panel-collapse panel-body collapse in" role="tabpanel"
|
||||||
|
aria-labelledby="enableEncryptionTab">
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="enableEncryption"
|
||||||
|
data-key="enableEncryption"/>
|
||||||
|
<span class="helper" title="Enable Encryption">Enable Encryption<span
|
||||||
|
class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<a href="javascript:runOperation('{{features.ENCRYPT_STORAGE.code}}')" class="btn-operations">Configure</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="panel panel-default operation-data" data-operation="{{features.PASSCODE_POLICY.code}}">
|
||||||
|
<div class="panel-heading" role="tab">
|
||||||
|
<h2 class="sub-title panel-title">
|
||||||
|
<a data-toggle="collapse" data-parent="#accordion" href="#passCodePolicy" aria-expanded="false"
|
||||||
|
aria-controls="passCodePolicy" class="collapsed">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw fw-arrow fw-down-arrow fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
Passcode Policy
|
||||||
|
</a>
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
<div id="passCodePolicy" class="panel-collapse panel-body collapse" role="tabpanel"
|
||||||
|
aria-labelledby="passCodePolicy">
|
||||||
|
|
||||||
|
<label class="wr-input-label col-sm-4" for="maxFailedAttempts">Maximum Failed Attempts</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="maxFailedAttempts"
|
||||||
|
data-key="maxFailedAttempts" placeholder="Enter maximum Failed Attempts">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label col-sm-4" for="minLength">Minimum Length</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="minLength" data-key="minLength"
|
||||||
|
placeholder="Enter minimum Length">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label col-sm-4" for="pinHistory">PIN History</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="pinHistory" data-key="pinHistory"
|
||||||
|
placeholder="Enter PIN History">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label col-sm-4" for="minComplexChars">Minimum complex characters</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="minComplexChars"
|
||||||
|
data-key="minComplexChars" placeholder="Enter minimum complex characters">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label col-sm-4" for="lockcode">Minimum PIN Age in days</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="maxPINAgeInDays"
|
||||||
|
data-key="maxPINAgeInDays" placeholder="Enter minimum PIN age in days">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="requireAlphanumeric"
|
||||||
|
data-key="requireAlphanumeric"/>
|
||||||
|
<span class="helper" title="Require Alphanumeric">Require Alphanumeric<span
|
||||||
|
class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="allowSimple" data-key="allowSimple"/>
|
||||||
|
<span class="helper" title="Allow simple PIN">Allow simple PIN<span
|
||||||
|
class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a href="javascript:runOperation('{{features.PASSCODE_POLICY.code}}')" class="btn-operations">Configure</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /security -->
|
||||||
|
|
||||||
|
<!-- wi-fi -->
|
||||||
|
<div class="wr-hidden-operation panel-body" data-operation="wifi">
|
||||||
|
<div class="operation-data" data-operation="{{features.WIFI.code}}">
|
||||||
|
<label class="wr-input-label" title="Identification of the wireless network to connect to">Service Set
|
||||||
|
Identifier<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>Identification of the wireless network to connect to</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="ssid" data-key="ssid"
|
||||||
|
placeholder="Enter SSID"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label" title="Password for the wireless network">Password<span
|
||||||
|
class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>Password for the wireless network</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="password" class="form-control operationDataKeys" id="password" data-key="password"
|
||||||
|
placeholder="Password"/>
|
||||||
|
</div>
|
||||||
|
<a href="javascript:runOperation('{{features.WIFI.code}}')" class="btn-operations">Configure</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- /wi-fi -->
|
||||||
|
<!-- application -->
|
||||||
|
<div class="wr-hidden-operation" data-operation="application">
|
||||||
|
<div class="panel panel-default operation-data" data-operation="{{features.INSTALL_APPLICATION.code}}">
|
||||||
|
<div class="panel-heading" role="tab">
|
||||||
|
<h2 class="sub-title panel-title">
|
||||||
|
<a data-toggle="collapse" data-parent="#accordion" href="#installApp" aria-expanded="true"
|
||||||
|
aria-controls="installApp">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw fw-arrow fw-down-arrow fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
Install App
|
||||||
|
</a>
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
<div id="installApp" class="panel-collapse panel-body collapse in" role="tabpanel"
|
||||||
|
aria-labelledby="installApp">
|
||||||
|
<label class="wr-input-label" title="Application Identifier">App Identifier<span
|
||||||
|
class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="package-name"
|
||||||
|
data-key="packageName" placeholder="Enter App Identifer"/>
|
||||||
|
</div>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control dropdown">
|
||||||
|
<span class="helper" title="App Type">App Type<span
|
||||||
|
class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
<select class="form-control col-sm-8 operationDataKeys appTypesInput" id="type"
|
||||||
|
data-key="type">
|
||||||
|
<option>Public</option>
|
||||||
|
<option>Enterprise</option>
|
||||||
|
</select>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<label class="wr-input-label" title="URL">URL<span
|
||||||
|
class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="url" data-key="url"
|
||||||
|
placeholder="Enter URL"/>
|
||||||
|
</div>
|
||||||
|
<a href="javascript:runOperation('{{features.INSTALL_APPLICATION.code}}')" class="btn-operations">Install</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="panel panel-default operation-data" data-operation="{{features.WEBCLIP.code}}">
|
||||||
|
<div class="panel-heading" role="tab">
|
||||||
|
<h2 class="sub-title panel-title">
|
||||||
|
<a data-toggle="collapse" data-parent="#accordion" href="#installWebClip" aria-expanded="true"
|
||||||
|
aria-controls="installWebClip" class="collapsed">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw fw-arrow fw-down-arrow fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
Install Web Clip
|
||||||
|
</a>
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
<div id="installWebClip" class="panel-collapse panel-body collapse" role="tabpanel"
|
||||||
|
aria-labelledby="installWebClip">
|
||||||
|
<label class="wr-input-label" title="Title of the web clip">Title<span
|
||||||
|
class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="title" data-key="title"
|
||||||
|
placeholder="Enter Title"/>
|
||||||
|
</div>
|
||||||
|
<label class="wr-input-label" title="URL">URL<span
|
||||||
|
class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="url" data-key="url"
|
||||||
|
placeholder="Enter URL"/>
|
||||||
|
</div>
|
||||||
|
<a href="javascript:runOperation('{{features.WEBCLIP.code}}')" class="btn-operations">Install</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="panel panel-default operation-data" data-operation="{{features.UNINSTALL_APPLICATION.code}}">
|
||||||
|
<div class="panel-heading" role="tab">
|
||||||
|
<h2 class="sub-title panel-title">
|
||||||
|
<a data-toggle="collapse" data-parent="#accordion" href="#uninstallApp" aria-expanded="true"
|
||||||
|
aria-controls="uninstallApp" class="collapsed">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw fw-arrow fw-down-arrow fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
Uninstall App
|
||||||
|
</a>
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
<div id="uninstallApp" class="panel-collapse panel-body collapse" role="tabpanel"
|
||||||
|
aria-labelledby="uninstallApp">
|
||||||
|
<label class="wr-input-label" title="Application Identifier">App Identifier<span
|
||||||
|
class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>Identification of the wireless network to connect to</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="package-name"
|
||||||
|
data-key="packageName" placeholder="Enter App Identifer"/>
|
||||||
|
</div>
|
||||||
|
<a href="javascript:runOperation('{{features.UNINSTALL_APPLICATION.code}}')" class="btn-operations">Uninstall</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /application -->
|
||||||
|
|
||||||
|
<!-- Restriction -->
|
||||||
|
<div class="wr-hidden-operation" data-operation="restriction">
|
||||||
|
<div class="panel panel-default operation-data" data-operation="{{features.CAMERA.code}}">
|
||||||
|
<div class="panel-heading" role="tab">
|
||||||
|
<h2 class="sub-title panel-title">
|
||||||
|
<a data-toggle="collapse" data-parent="#accordion" href="#cameraDisable" aria-expanded="true"
|
||||||
|
aria-controls="cameraDisable">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw fw-arrow fw-down-arrow fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
Camera Enable/Disable
|
||||||
|
</a>
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
<div id="cameraDisable" class="panel-collapse panel-body collapse in" role="tabpanel"
|
||||||
|
aria-labelledby="cameraDisable">
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="enableCamera" data-key="enableCamera"
|
||||||
|
checked/>
|
||||||
|
<span class="helper" title="Remove App upon dis-enrollment">Enable Camera<span
|
||||||
|
class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<a href="javascript:runOperation('{{features.CAMERA.code}}')" class="btn-operations">Configure</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /Restriction -->
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -0,0 +1,366 @@
|
|||||||
|
<div class="row no-gutter">
|
||||||
|
<div class="wr-hidden-operations-nav col-lg-4">
|
||||||
|
<a href="javascript:void(0)" onclick="showAdvanceOperation('{{features.WIFI.code}}', this)" class="selected">
|
||||||
|
<span class="wr-hidden-operations-icon fw-stack">
|
||||||
|
<i class="fw fw-wifi fw-stack-2x"></i>
|
||||||
|
</span>
|
||||||
|
Wi-fi
|
||||||
|
</a>
|
||||||
|
<a href="javascript:void(0)" onclick="showAdvanceOperation('application', this)" >
|
||||||
|
<span class="wr-hidden-operations-icon fw-stack">
|
||||||
|
<i class="fw fw-padlock fw-stack-2x"></i>
|
||||||
|
</span>
|
||||||
|
Applications
|
||||||
|
</a>
|
||||||
|
<a href="javascript:void(0)" onclick="showAdvanceOperation('{{features.RESTRICTION.code}}', this)">
|
||||||
|
<span class="wr-hidden-operations-icon fw-stack">
|
||||||
|
<i class="fw fw-settings fw-stack-2x"></i>
|
||||||
|
</span>
|
||||||
|
Restrictions
|
||||||
|
</a>
|
||||||
|
<a href="javascript:void(0)" onclick="showAdvanceOperation('mail', this)">
|
||||||
|
<span class="wr-hidden-operations-icon fw-stack">
|
||||||
|
<i class="fw fw-message fw-stack-2x"></i>
|
||||||
|
</span>
|
||||||
|
Mail
|
||||||
|
</a>
|
||||||
|
<a href="javascript:void(0)" onclick="showAdvanceOperation('{{features.AIR_PLAY.code}}', this)">
|
||||||
|
<span class="wr-hidden-operations-icon fw-stack">
|
||||||
|
<i class="fw fw-service-provider fw-stack-2x"></i>
|
||||||
|
</span>
|
||||||
|
Air Play
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="wr-hidden-operations-content col-lg-8">
|
||||||
|
|
||||||
|
<!-- application -->
|
||||||
|
<div class="wr-hidden-operation" data-operation="application" style="display: block">
|
||||||
|
<div class="panel panel-default operation-data" data-operation="{{features.INSTALL_STORE_APPLICATION.code}}">
|
||||||
|
<div class="panel-heading" role="tab">
|
||||||
|
<h2 class="sub-title panel-title">
|
||||||
|
<a data-toggle="collapse" data-parent="#accordion" href="#installPublicAppiOS" aria-expanded="true" aria-controls="installPublicAppiOS">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw fw-arrow fw-down-arrow fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
Install Public App
|
||||||
|
</a>
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
<div id="installPublicAppiOS" class="panel-collapse panel-body collapse in" role="tabpanel" aria-labelledby="installPublicAppiOS">
|
||||||
|
<label class="wr-input-label" for="appIdentifier">App identifier</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="appIdentifier" data-key="appIdentifier" placeholder="Enter App Identifier">
|
||||||
|
</div>
|
||||||
|
<label class="wr-input-label col-sm-4" for="ituneID">iTunes store ID</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="ituneID" data-key="ituneID" placeholder="Enter iTunes store ID">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label col-sm-4" for="bundleId">Bundle ID</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="bundleId" data-key="bundleId" placeholder="Enter Bundle ID">
|
||||||
|
</div>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="appRemoval" data-key="appRemoval" checked />
|
||||||
|
<span class="helper" title="Remove App upon dis-enrollment">Remove App upon dis-enrollment<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
<!--span>Enable if target network is not open or broadcasting</span-->
|
||||||
|
</div>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="backupData" data-key="backupData" checked />
|
||||||
|
<span class="helper" title="Prevent backup of App data">Prevent backup of App data<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
<!--span>Enable if target network is not open or broadcasting</span-->
|
||||||
|
</div>
|
||||||
|
<a href="javascript:runOperation('{{features.INSTALL_STORE_APPLICATION.code}}')" class="btn-operations">Install</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="panel panel-default operation-data" data-operation="{{features.INSTALL_ENTERPRISE_APPLICATION.code}}">
|
||||||
|
<div class="panel-heading" role="tab">
|
||||||
|
<h2 class="sub-title panel-title">
|
||||||
|
<a data-toggle="collapse" data-parent="#accordion" href="#installEnterpriseAppiOS" aria-expanded="true" aria-controls="installPublicAppiOS" class="collapsed">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw fw-arrow fw-down-arrow fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
Install Enterprise App
|
||||||
|
</a>
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
<div id="installEnterpriseAppiOS" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="installEnterpriseAppiOS">
|
||||||
|
<label class="wr-input-label" for="appIdentifier">App identifier</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="appIdentifier" data-key="appIdentifier" placeholder="Enter App Identifier">
|
||||||
|
</div>
|
||||||
|
<label class="wr-input-label col-sm-4" for="manifestURL">Manifest URL</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="manifestURL" data-key="manifestURL" placeholder="Enter manifest URL">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label col-sm-4" for="bundleId">Bundle ID</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="bundleId" data-key="bundleId" placeholder="Enter Bundle ID">
|
||||||
|
</div>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="appRemoval" data-key="appRemoval" checked />
|
||||||
|
<span class="helper" title="Remove App upon dis-enrollment">Remove App upon dis-enrollment<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
<!--span>Enable if target network is not open or broadcasting</span-->
|
||||||
|
</div>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="backupData" data-key="backupData" checked />
|
||||||
|
<span class="helper" title="Prevent backup of App data">Prevent backup of App data<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
<!--span>Enable if target network is not open or broadcasting</span-->
|
||||||
|
</div>
|
||||||
|
<a href="javascript:runOperation('{{features.INSTALL_ENTERPRISE_APPLICATION.code}}')" class="btn-operations">Install</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="panel panel-default operation-data" data-operation="{{features.REMOVE_APPLICATION.code}}">
|
||||||
|
<div class="panel-heading" role="tab">
|
||||||
|
<h2 class="sub-title panel-title">
|
||||||
|
<a data-toggle="collapse" data-parent="#accordion" href="#removeApplication" aria-expanded="true" aria-controls="removeApplication" class="collapsed">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw fw-arrow fw-down-arrow fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
Uninstall App
|
||||||
|
</a>
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
<div id="removeApplication" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="removeApplication">
|
||||||
|
<label class="wr-input-label col-sm-4" for="bundleId">Bundle ID</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="bundleId" data-key="bundleId" placeholder="Enter Bundle ID">
|
||||||
|
</div>
|
||||||
|
<a href="javascript:runOperation('{{features.REMOVE_APPLICATION.code}}')" class="btn-operations">Uninstall</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /application -->
|
||||||
|
|
||||||
|
<!-- wi-fi -->
|
||||||
|
<div class="wr-hidden-operation panel-body operation-data" data-operation="{{features.WIFI.code}}">
|
||||||
|
<label class="wr-input-label" title="Identification of the wireless network to connect to">Service Set Identifier<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>Identification of the wireless network to connect to</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="ssid" data-key="ssid" placeholder="Enter SSID" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="hiddenNetwork" data-key="hiddenNetwork" checked />
|
||||||
|
<span class="helper" title="Enable if target network is not open or broadcasting">Hidden Network<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
<!--span>Enable if target network is not open or broadcasting</span-->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="autoJoin" data-key="autoJoin" checked />
|
||||||
|
<span class="helper" title="Automatically join this wireless network">Auto Join<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
<!--span>Automatically join this wireless network</span-->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label" title="Configures proxies to be used with this network">Proxy Setup<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>Configures proxies to be used with this network</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<select class="form-control">
|
||||||
|
<option>None</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label" title="Wireless network encryption to use when connecting">Security Type<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>Wireless network encryption to use when connecting</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<select class="form-control operationDataKeys" id="encryptionType" data-key="encryptionType">
|
||||||
|
<option data-id="WPA">WPA/WPA2 Personal</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label" title="Password for the wireless network">Password<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>Password for the wireless network</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="password" value="" class="operationDataKeys" id="password" data-key="password" placeholder="input text"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label" title="Configures network to appear as legacy or Passport">Network Type<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>Configures network to appear as legacy or Passport</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<select class="form-control">
|
||||||
|
<option>Standard</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<a href="javascript:runOperation('{{features.WIFI.code}}')" class="btn-operations">Configure</a>
|
||||||
|
</div>
|
||||||
|
<!-- /wi-fi -->
|
||||||
|
|
||||||
|
<!-- mail -->
|
||||||
|
<div class="wr-hidden-operation panel-body" data-operation="mail">
|
||||||
|
<label class="wr-input-label" title="The display name of the account">Account Description<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>Identification of the wireless network to connect to</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" value="" placeholder="input text"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label" title="The protocol for accessing the email account">Account Type<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>Configures proxies to be used with this network</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<div class="cus-col-25">
|
||||||
|
<select class="form-control">
|
||||||
|
<option>IMAP</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="cus-col-50">
|
||||||
|
<span>Path Prefix</span> <input type="text" value="" placeholder="input text" />
|
||||||
|
</div>
|
||||||
|
<br class="c-both" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label" title="The display name of the user">User Display Name<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>Identification of the wireless network to connect to</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" value="" placeholder="input text"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label" title="The address of the account">Email Address<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>Identification of the wireless network to connect to</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" value="" placeholder="input text"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" checked />
|
||||||
|
<span class="helper" title="Messages can be moved from this account to another">Allow user to move messages from this account<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
<!--span>Enable if target network is not open or broadcasting</span-->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" checked />
|
||||||
|
<span class="helper" title="Include this account in recent address syncing">Allow Recent Address syncing<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
<!--span>Enable if target network is not open or broadcasting</span-->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" checked />
|
||||||
|
<span class="helper" title="Send outgoing mail from this account only from Mail app">Use Only in Mail<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
<!--span>Send outgoing mail from this account only from Mail app</span-->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" checked />
|
||||||
|
<span class="helper" title="Support S/MIME for this account">Enable S/MIME<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
<!--span>Support S/MIME for this account</span-->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label" title="The protocol for accessing the email account">Mail Server and Port<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>The protocol for accessing the email account</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<div class="cus-col-70">
|
||||||
|
<input type="text" value="" placeholder="input text"/>
|
||||||
|
</div>
|
||||||
|
<div class="cus-col-25">
|
||||||
|
<span> : </span><input type="text" value="993" placeholder="input text" />
|
||||||
|
</div>
|
||||||
|
<br class="c-both" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label" title="The username used to connect to the server for incoming mail">Username<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>The Username used to connect to the server for incoming mail</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" value="" placeholder="input text"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label" title="The autyentication method for the incoming mail server">Authentication Type<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>Wireless network encryption to use when connecting</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<select class="form-control">
|
||||||
|
<option>Password</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label" title="The password for the incoming mail server">Password<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>The Username used to connect to the server for incoming mail</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" value="" placeholder="input text"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" checked />
|
||||||
|
<span class="helper" title="Retrieve incoming mail through secure socket layer">Use SSL<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
<!--span>Enable if target network is not open or broadcasting</span-->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /mail -->
|
||||||
|
|
||||||
|
<!-- general -->
|
||||||
|
<div class="wr-hidden-operation panel-body operation-data" data-operation="{{features.RESTRICTION.code}}">
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="allowCamera" data-key="allowCamera" checked />
|
||||||
|
<span class="helper" title="Allow Camera">Allow Camera<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="allowCloudBackup" data-key="allowCloudBackup" checked/>
|
||||||
|
<span class="helper" title="Allow Cloud Backup">Allow Cloud Backup<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="allowScreenShot" data-key="allowScreenShot" checked/>
|
||||||
|
<span class="helper" title="Allow Screenshots">Allow Screenshots<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="allowSafari" data-key="allowSafari" checked />
|
||||||
|
<span class="helper" title="Allow Safari Browser">Allow Safari Browser<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="allowAirDrop" data-key="allowAirDrop" checked />
|
||||||
|
<span class="helper" title="Allow AirDrop">Allow AirDrop<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<a href="javascript:runOperation('{{features.RESTRICTION.code}}')" class="btn-operations">Configure</a>
|
||||||
|
</div>
|
||||||
|
<!-- /general -->
|
||||||
|
<!-- air play -->
|
||||||
|
<div class="wr-hidden-operation panel-body operation-data" data-operation="{{features.AIR_PLAY.code}}">
|
||||||
|
<label class="wr-input-label col-sm-4" for="airPlayLocation">Location</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="airPlayLocation" data-key="location" placeholder="Enter location" />
|
||||||
|
</div>
|
||||||
|
<label class="wr-input-label col-sm-4" for="airPlayDeviceName">Device Name</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="airPlayDeviceName" data-key="deviceName" placeholder="Enter Device Name" />
|
||||||
|
</div
|
||||||
|
<label class="wr-input-label col-sm-4" for="airPlayPassword">AirPlay password</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="password" class="form-control operationDataKeys" id="airPlayPassword" data-key="password" placeholder="Password" />
|
||||||
|
</div>
|
||||||
|
<a href="javascript:runOperation('{{features.AIR_PLAY.code}}')" class="btn-operations">Configure</a>
|
||||||
|
</div>
|
||||||
|
<!-- /air play -->
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -0,0 +1,249 @@
|
|||||||
|
<div id="errorOperations" class="operation">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h3 class="pull-left modal-title">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw fw-error fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
Operation cannot be performed !
|
||||||
|
</h3>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
|
||||||
|
<h4>
|
||||||
|
Please select a device or a list of devices to perform an operation.
|
||||||
|
</h4>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<div class="buttons">
|
||||||
|
<a href="javascript:hidePopup()" class="btn-operations">Ok</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="errorOperationUnexpected" class="operation">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h3 class="pull-left modal-title">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw fw-error fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
Operation cannot be performed !
|
||||||
|
</h3>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
|
||||||
|
<h4>
|
||||||
|
Unexpected error occurred. Please Try again later.
|
||||||
|
</h4>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<div class="buttons">
|
||||||
|
<a href="javascript:hidePopup()" class="btn-operations">Ok</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="operationSuccess" class="operation">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h3 class="pull-left modal-title">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw fw-check fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
Operation queued successfully !
|
||||||
|
</h3>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
|
||||||
|
<h4>
|
||||||
|
Operation has been queued successfully to be sent to the device.
|
||||||
|
</h4>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<div class="buttons">
|
||||||
|
<a href="javascript:hidePopup()" class="btn-operations">Ok</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="messageSuccess" class="operation">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h3 class="pull-left modal-title">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw fw-check fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
Message sent successfully !
|
||||||
|
</h3>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
|
||||||
|
<h4>Message has been queued to be sent to the device.</h4>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<div class="buttons">
|
||||||
|
<a href="javascript:hidePopup()" class="btn-operations">Ok</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{#each features}}
|
||||||
|
<a href="javascript:operationSelect('{{code}}')" title="{{description}}">
|
||||||
|
<i class="fw {{icon}}"></i>
|
||||||
|
<span>{{name}}</span>
|
||||||
|
</a>
|
||||||
|
<div class="operation" data-operation-code="{{code}}">
|
||||||
|
|
||||||
|
<div class="modal-content clearfix">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h3 class="pull-left modal-title">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw {{icon}} fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
{{name}}
|
||||||
|
<br>
|
||||||
|
</h3>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
|
||||||
|
<h4>
|
||||||
|
{{#equal code "WIPE_DATA"}}
|
||||||
|
{{#equal deviceType "android"}}
|
||||||
|
{{#equal ownership "BYOD"}}
|
||||||
|
Enter PIN code* of the device
|
||||||
|
<br><br>
|
||||||
|
<div>
|
||||||
|
<input id="pin" type="password"
|
||||||
|
class="form-control modal-input operationDataKeys"
|
||||||
|
placeholder="[ Required for a BYOD device ]" data-key="pin" />
|
||||||
|
</div>
|
||||||
|
{{/equal}}
|
||||||
|
{{/equal}}
|
||||||
|
{{/equal}}
|
||||||
|
{{#equal code "NOTIFICATION"}}
|
||||||
|
Type your message below.
|
||||||
|
<br><br>
|
||||||
|
<div id="notification-error-msg" class="alert alert-danger hidden" role="alert">
|
||||||
|
<i class="icon fw fw-error"></i><span></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<input class="form-control modal-input operationDataKeys"
|
||||||
|
id="messageTitle" data-key="messageTitle" placeholder="Title here..." />
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<textarea class="form-control modal-input operationDataKeys"
|
||||||
|
id="messageText" data-key="messageText" placeholder="Message here..."></textarea>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
{{/equal}}
|
||||||
|
{{#equal code "CHANGE_LOCK_CODE"}}
|
||||||
|
Type new lock-code below.
|
||||||
|
<br><br>
|
||||||
|
<input type="password" class="form-control modal-input operationDataKeys" id="lockcode"
|
||||||
|
data-key="lockCode" placeholder="Enter Lockcode"/>
|
||||||
|
<br>
|
||||||
|
{{/equal}}
|
||||||
|
{{#equal code "DEVICE_LOCK"}}
|
||||||
|
{{#equal deviceType "android"}}
|
||||||
|
{{#equal ownership "COPE"}}
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input id="hard-lock" type="checkbox" class="form-control operationDataKeys"
|
||||||
|
data-key="hard-lock"/>
|
||||||
|
<span class="helper" title="Once it enables, device will be blocked permanently.">
|
||||||
|
Enable Permanent Lock
|
||||||
|
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
|
<br><br>
|
||||||
|
{{/equal}}
|
||||||
|
Type your message to be shown in the lock screen
|
||||||
|
<br><br>
|
||||||
|
<div>
|
||||||
|
<textarea id="lock-message" class="form-control modal-input operationDataKeys"
|
||||||
|
data-key="lock-message" placeholder="[ Message content is optional ]"></textarea>
|
||||||
|
</div>
|
||||||
|
{{/equal}}
|
||||||
|
{{/equal}}
|
||||||
|
{{#equal code "UPGRADE_FIRMWARE"}}
|
||||||
|
{{#equal deviceType "android"}}
|
||||||
|
Enter firmware upgrade scheduling information.
|
||||||
|
<br><br>
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input id="instant-upgrade" type="checkbox" class="form-control operationDataKeys"
|
||||||
|
data-key="instant-upgrade"/>
|
||||||
|
<span class="helper"
|
||||||
|
title="Once enabled, device firmware upgrade process will start instantly.">
|
||||||
|
Instant Upgrade
|
||||||
|
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
|
<br><br>
|
||||||
|
<div class='input-group date' id='dateTimePicker'>
|
||||||
|
Enter the date and time to schedule firmware upgrade.
|
||||||
|
<br><br>
|
||||||
|
<div id="firmware-error-msg" class="alert alert-danger hidden" role="alert">
|
||||||
|
<i class="icon fw fw-error"></i><span></span>
|
||||||
|
</div>
|
||||||
|
<input type='text' class="form-control modal-input operationDataKeys"
|
||||||
|
style="z-index : 900;" name="daterange" id="schedule" data-key="schedule"/>
|
||||||
|
</div>
|
||||||
|
<br><br>
|
||||||
|
<div class='wr-input-control' id='firmwareServerInfo'>
|
||||||
|
Enter firmware upgrade server URL (ie. http://abc.com or http://abc.com/ota)
|
||||||
|
(Optional).
|
||||||
|
<br><br>
|
||||||
|
<input type='text' class="form-control modal-input operationDataKeys" id="server"
|
||||||
|
data-key="server"/>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(function () {
|
||||||
|
$('.modalpopup-bg').css('z-index', '1000');
|
||||||
|
$('.modalpopup-container').css('z-index', '1200');
|
||||||
|
|
||||||
|
$('input[name="daterange"]').daterangepicker({
|
||||||
|
singleDatePicker: true,
|
||||||
|
timePicker: true,
|
||||||
|
showDropdowns: true,
|
||||||
|
timePickerIncrement: 1,
|
||||||
|
locale: {
|
||||||
|
format: 'MM-DD-YYYY hh:mm a'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
$('#instant-upgrade').change(function () {
|
||||||
|
if ($(this).is(":checked")) {
|
||||||
|
$('#dateTimePicker').addClass("hidden");
|
||||||
|
$("#schedule").val('');
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$('#dateTimePicker').removeClass("hidden");
|
||||||
|
$('input[name="daterange"]').daterangepicker({
|
||||||
|
singleDatePicker: true,
|
||||||
|
timePicker: true,
|
||||||
|
showDropdowns: true,
|
||||||
|
timePickerIncrement: 1,
|
||||||
|
locale: {
|
||||||
|
format: 'MM-DD-YYYY hh:mm a'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<br>
|
||||||
|
{{/equal}}
|
||||||
|
{{/equal}}
|
||||||
|
<br><br>
|
||||||
|
Do you want to perform this operation on selected device(s) ?
|
||||||
|
<br>
|
||||||
|
</h4>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<div class="buttons">
|
||||||
|
<a href="javascript:runOperation('{{code}}')" class="btn-operations">Yes</a>
|
||||||
|
<a href="javascript:hidePopup()" class="btn-operations btn-default">No</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
<br class="c-both"/>
|
@ -0,0 +1,32 @@
|
|||||||
|
{{!
|
||||||
|
Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
|
||||||
|
WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
|
Version 2.0 (the "License"); you may not use this file except
|
||||||
|
in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing,
|
||||||
|
software distributed under the License is distributed on an
|
||||||
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
KIND, either express or implied. See the License for the
|
||||||
|
specific language governing permissions and limitations
|
||||||
|
under the License.
|
||||||
|
}}
|
||||||
|
|
||||||
|
{{unit "mdm.unit.date-range-picker"}}
|
||||||
|
|
||||||
|
{{#zone "content"}}
|
||||||
|
<div id="operations-mod" data-permissions="{{permissions}}" data-device-type="{{deviceType}}" data-ownership="{{ownership}}">
|
||||||
|
{{unit "mdm.unit.device.operation-mod"}}
|
||||||
|
</div>
|
||||||
|
{{/zone}}
|
||||||
|
|
||||||
|
{{#zone "bottomJs"}}
|
||||||
|
<!--suppress HtmlUnknownTarget -->
|
||||||
|
<script id="operations-bar" src="{{@unit.publicUri}}/templates/operations.hbs"
|
||||||
|
type="text/x-handlebars-template"></script>
|
||||||
|
{{js "js/operation-bar.js"}}
|
||||||
|
{{/zone}}
|
@ -0,0 +1,106 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
function onRequest(context) {
|
||||||
|
var log = new Log("mdm.unit.device.operation-bar");
|
||||||
|
var userModule = require("/app/modules/business-controllers/user.js")["userModule"];
|
||||||
|
var viewModel = {};
|
||||||
|
var permissions = {};
|
||||||
|
|
||||||
|
// adding android operations related permission checks
|
||||||
|
permissions["android"] = [];
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/ring")) {
|
||||||
|
permissions["android"].push("DEVICE_RING");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/lock")) {
|
||||||
|
permissions["android"].push("DEVICE_LOCK");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/unlock")) {
|
||||||
|
permissions["android"].push("DEVICE_UNLOCK");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/location")) {
|
||||||
|
permissions["android"].push("DEVICE_LOCATION");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/clear-password")) {
|
||||||
|
permissions["android"].push("CLEAR_PASSWORD");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/reboot")) {
|
||||||
|
permissions["android"].push("DEVICE_REBOOT");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/upgrade-firmware")) {
|
||||||
|
permissions["android"].push("UPGRADE_FIRMWARE");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/mute")) {
|
||||||
|
permissions["android"].push("DEVICE_MUTE");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/send-notification")) {
|
||||||
|
permissions["android"].push("NOTIFICATION");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/change-lock-code")) {
|
||||||
|
permissions["android"].push("CHANGE_LOCK_CODE");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/enterprise-wipe")) {
|
||||||
|
permissions["android"].push("ENTERPRISE_WIPE");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/operations/android/wipe")) {
|
||||||
|
permissions["android"].push("WIPE_DATA");
|
||||||
|
}
|
||||||
|
|
||||||
|
// adding ios operations related permission checks
|
||||||
|
permissions["ios"] = [];
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/ios/lock")) {
|
||||||
|
permissions["ios"].push("DEVICE_LOCK");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/ios/location")) {
|
||||||
|
permissions["ios"].push("LOCATION");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/ios/enterprise-wipe")) {
|
||||||
|
permissions["ios"].push("ENTERPRISE_WIPE");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/ios/notification")) {
|
||||||
|
permissions["ios"].push("NOTIFICATION");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/ios/ring")) {
|
||||||
|
permissions["ios"].push("RING");
|
||||||
|
}
|
||||||
|
|
||||||
|
// adding windows operations related permission checks
|
||||||
|
permissions["windows"] = [];
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/windows/lock")) {
|
||||||
|
permissions["windows"].push("DEVICE_LOCK");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/disenroll/windows")) {
|
||||||
|
permissions["windows"].push("DISENROLL");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/windows/wipe")) {
|
||||||
|
permissions["windows"].push("WIPE_DATA");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/windows/ring")) {
|
||||||
|
permissions["windows"].push("DEVICE_RING");
|
||||||
|
}
|
||||||
|
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/windows/lock-reset")) {
|
||||||
|
permissions["windows"].push("LOCK_RESET");
|
||||||
|
}
|
||||||
|
|
||||||
|
viewModel["permissions"] = stringify(permissions);
|
||||||
|
|
||||||
|
viewModel["deviceType"] = context.unit.params.deviceType;
|
||||||
|
viewModel["ownership"] = context.unit.params.ownership;
|
||||||
|
|
||||||
|
return viewModel;
|
||||||
|
}
|
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"version": "1.0.0",
|
||||||
|
"extends": "cdmf.unit.device.operation-bar"
|
||||||
|
}
|
@ -0,0 +1,248 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Setting-up global variables.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var operations = '.wr-operations',
|
||||||
|
modalPopup = '.modal',
|
||||||
|
modalPopupContent = modalPopup + ' .modal-content',
|
||||||
|
navHeight = $('#nav').height(),
|
||||||
|
headerHeight = $('header').height(),
|
||||||
|
offset = (headerHeight + navHeight),
|
||||||
|
deviceSelection = '.device-select',
|
||||||
|
platformTypeConstants = {
|
||||||
|
"ANDROID": "android",
|
||||||
|
"IOS": "ios",
|
||||||
|
"WINDOWS": "windows"
|
||||||
|
},
|
||||||
|
ownershipTypeConstants = {
|
||||||
|
"BYOD": "BYOD",
|
||||||
|
"COPE": "COPE"
|
||||||
|
},
|
||||||
|
operationBarModeConstants = {
|
||||||
|
"BULK": "BULK_OPERATION_MODE",
|
||||||
|
"SINGLE": "SINGLE_OPERATION_MODE"
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function to get selected devices ID's
|
||||||
|
*/
|
||||||
|
function getSelectedDeviceIds() {
|
||||||
|
var deviceIdentifierList = [];
|
||||||
|
$(deviceSelection).each(function (index) {
|
||||||
|
var device = $(this);
|
||||||
|
var deviceId = device.data('deviceid');
|
||||||
|
var deviceType = device.data('type');
|
||||||
|
deviceIdentifierList.push({
|
||||||
|
"id": deviceId,
|
||||||
|
"type": deviceType
|
||||||
|
});
|
||||||
|
});
|
||||||
|
if (deviceIdentifierList.length == 0) {
|
||||||
|
var thisTable = $(".DTTT_selected").closest('.dataTables_wrapper').find('.dataTable').dataTable();
|
||||||
|
thisTable.api().rows().every(function () {
|
||||||
|
if ($(this.node()).hasClass('DTTT_selected')) {
|
||||||
|
var deviceId = $(thisTable.api().row(this).node()).data('deviceid');
|
||||||
|
var deviceType = $(thisTable.api().row(this).node()).data('devicetype');
|
||||||
|
deviceIdentifierList.push({
|
||||||
|
"id": deviceId,
|
||||||
|
"type": deviceType
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return deviceIdentifierList;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* On operation click function.
|
||||||
|
* @param selection: Selected operation
|
||||||
|
*/
|
||||||
|
function operationSelect(selection) {
|
||||||
|
var deviceIdList = getSelectedDeviceIds();
|
||||||
|
if (deviceIdList == 0) {
|
||||||
|
$(modalPopupContent).html($("#errorOperations").html());
|
||||||
|
} else {
|
||||||
|
$(modalPopupContent).addClass("operation-data");
|
||||||
|
$(modalPopupContent).html($(operations + " .operation[data-operation-code=" + selection + "]").html());
|
||||||
|
$(modalPopupContent).data("operation-code", selection);
|
||||||
|
}
|
||||||
|
showPopup();
|
||||||
|
}
|
||||||
|
|
||||||
|
function getDevicesByTypes(deviceList) {
|
||||||
|
var deviceTypes = {};
|
||||||
|
$.each(deviceList, function (index, item) {
|
||||||
|
if (!deviceTypes[item.type]) {
|
||||||
|
deviceTypes[item.type] = [];
|
||||||
|
}
|
||||||
|
if (item.type == platformTypeConstants.ANDROID ||
|
||||||
|
item.type == platformTypeConstants.IOS || item.type == platformTypeConstants.WINDOWS) {
|
||||||
|
deviceTypes[item.type].push(item.id);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return deviceTypes;
|
||||||
|
}
|
||||||
|
|
||||||
|
//function unloadOperationBar() {
|
||||||
|
// $("#showOperationsBtn").addClass("hidden");
|
||||||
|
// $(".wr-operations").html("");
|
||||||
|
//}
|
||||||
|
|
||||||
|
function loadOperationBar(deviceType, ownership, mode) {
|
||||||
|
var operationBar = $("#operations-bar");
|
||||||
|
var operationBarSrc = operationBar.attr("src");
|
||||||
|
|
||||||
|
$.template("operations-bar", operationBarSrc, function (template) {
|
||||||
|
var serviceURL = "/api/device-mgt/v1.0/devices/" + deviceType + "/*/features";
|
||||||
|
invokerUtil.get(
|
||||||
|
serviceURL,
|
||||||
|
// success callback
|
||||||
|
function (data) {
|
||||||
|
var permittedOperations = [];
|
||||||
|
var i;
|
||||||
|
var permissionList = $("#operations-mod").data("permissions");
|
||||||
|
var totalFeatures = JSON.parse(data);
|
||||||
|
for (i = 0; i < permissionList[deviceType].length; i++) {
|
||||||
|
var j;
|
||||||
|
for (j = 0; j < totalFeatures.length; j++) {
|
||||||
|
if (permissionList[deviceType][i] == totalFeatures[j]["code"]) {
|
||||||
|
if (deviceType == platformTypeConstants.ANDROID) {
|
||||||
|
if (totalFeatures[j]["code"] == "DEVICE_UNLOCK") {
|
||||||
|
if (ownership == ownershipTypeConstants.COPE) {
|
||||||
|
permittedOperations.push(totalFeatures[j]);
|
||||||
|
}
|
||||||
|
} else if (totalFeatures[j]["code"] == "WIPE_DATA") {
|
||||||
|
if (mode == operationBarModeConstants.BULK) {
|
||||||
|
if (ownership == ownershipTypeConstants.COPE) {
|
||||||
|
permittedOperations.push(totalFeatures[j]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
permittedOperations.push(totalFeatures[j]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
permittedOperations.push(totalFeatures[j]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
permittedOperations.push(totalFeatures[j]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var viewModel = {};
|
||||||
|
permittedOperations = permittedOperations.filter(function (current) {
|
||||||
|
var iconName;
|
||||||
|
switch (deviceType) {
|
||||||
|
case platformTypeConstants.ANDROID:
|
||||||
|
iconName = operationModule.getAndroidIconForFeature(current.code);
|
||||||
|
break;
|
||||||
|
case platformTypeConstants.WINDOWS:
|
||||||
|
iconName = operationModule.getWindowsIconForFeature(current.code);
|
||||||
|
break;
|
||||||
|
case platformTypeConstants.IOS:
|
||||||
|
iconName = operationModule.getIOSIconForFeature(current.code);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* adding ownership in addition to device-type
|
||||||
|
as it's vital in cases where UI for the same feature should change
|
||||||
|
according to ownership
|
||||||
|
*/
|
||||||
|
if (ownership) {
|
||||||
|
current.ownership = ownership;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (iconName) {
|
||||||
|
current.icon = iconName;
|
||||||
|
}
|
||||||
|
|
||||||
|
return current;
|
||||||
|
});
|
||||||
|
|
||||||
|
viewModel.features = permittedOperations;
|
||||||
|
var content = template(viewModel);
|
||||||
|
$(".wr-operations").html(content);
|
||||||
|
},
|
||||||
|
// error callback
|
||||||
|
function (message) {
|
||||||
|
$(".wr-operations").html(message);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function runOperation(operationName) {
|
||||||
|
var deviceIdList = getSelectedDeviceIds();
|
||||||
|
var list = getDevicesByTypes(deviceIdList);
|
||||||
|
|
||||||
|
var successCallback = function (data) {
|
||||||
|
if (operationName == "NOTIFICATION") {
|
||||||
|
$(modalPopupContent).html($("#messageSuccess").html());
|
||||||
|
} else {
|
||||||
|
$(modalPopupContent).html($("#operationSuccess").html());
|
||||||
|
}
|
||||||
|
showPopup();
|
||||||
|
};
|
||||||
|
var errorCallback = function (data) {
|
||||||
|
$(modalPopupContent).html($("#errorOperationUnexpected").html());
|
||||||
|
showPopup();
|
||||||
|
};
|
||||||
|
|
||||||
|
var payload, serviceEndPoint;
|
||||||
|
if (list[platformTypeConstants.IOS]) {
|
||||||
|
payload =
|
||||||
|
operationModule.generatePayload(platformTypeConstants.IOS, operationName, list[platformTypeConstants.IOS]);
|
||||||
|
serviceEndPoint = operationModule.getIOSServiceEndpoint(operationName);
|
||||||
|
} else if (list[platformTypeConstants.ANDROID]) {
|
||||||
|
payload = operationModule
|
||||||
|
.generatePayload(platformTypeConstants.ANDROID, operationName, list[platformTypeConstants.ANDROID]);
|
||||||
|
serviceEndPoint = operationModule.getAndroidServiceEndpoint(operationName);
|
||||||
|
} else if (list[platformTypeConstants.WINDOWS]) {
|
||||||
|
payload = operationModule.generatePayload(platformTypeConstants.WINDOWS, operationName,
|
||||||
|
list[platformTypeConstants.WINDOWS]);
|
||||||
|
serviceEndPoint = operationModule.getWindowsServiceEndpoint(operationName);
|
||||||
|
}
|
||||||
|
if (operationName == "NOTIFICATION") {
|
||||||
|
var errorMsgWrapper = "#notification-error-msg";
|
||||||
|
var errorMsg = "#notification-error-msg span";
|
||||||
|
var messageTitle = $("#messageTitle").val();
|
||||||
|
var messageText = $("#messageText").val();
|
||||||
|
if (!(messageTitle && messageText)) {
|
||||||
|
$(errorMsg).text("Enter a message. It cannot be empty.");
|
||||||
|
$(errorMsgWrapper).removeClass("hidden");
|
||||||
|
} else {
|
||||||
|
invokerUtil.post(serviceEndPoint, payload, successCallback, errorCallback);
|
||||||
|
$(modalPopupContent).removeData();
|
||||||
|
hidePopup();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
invokerUtil.post(serviceEndPoint, payload, successCallback, errorCallback);
|
||||||
|
$(modalPopupContent).removeData();
|
||||||
|
hidePopup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* DOM ready functions.
|
||||||
|
*/
|
||||||
|
$(document).ready(function () {
|
||||||
|
$(operations).show();
|
||||||
|
});
|
@ -0,0 +1,286 @@
|
|||||||
|
<div class="row no-gutter">
|
||||||
|
<div class="wr-hidden-operations-nav col-lg-4">
|
||||||
|
<a href="javascript:void(0)" onclick="showAdvanceOperation('security', this)" class="selected">
|
||||||
|
<span class="wr-hidden-operations-icon fw-stack">
|
||||||
|
<i class="fw fw-padlock fw-stack-2x"></i>
|
||||||
|
</span>
|
||||||
|
Security
|
||||||
|
</a>
|
||||||
|
<a href="javascript:void(0)" onclick="showAdvanceOperation('restriction', this)">
|
||||||
|
<span class="wr-hidden-operations-icon fw-stack">
|
||||||
|
<i class="fw fw-settings fw-stack-2x"></i>
|
||||||
|
</span>
|
||||||
|
Restrictions
|
||||||
|
</a>
|
||||||
|
<a href="javascript:void(0)" onclick="showAdvanceOperation('application', this)">
|
||||||
|
<span class="wr-hidden-operations-icon fw-stack">
|
||||||
|
<i class="fw fw-padlock fw-stack-2x"></i>
|
||||||
|
</span>
|
||||||
|
Applications
|
||||||
|
</a>
|
||||||
|
<a href="javascript:void(0)" onclick="showAdvanceOperation('wifi', this)">
|
||||||
|
<span class="wr-hidden-operations-icon fw-stack">
|
||||||
|
<i class="fw fw-wifi fw-stack-2x"></i>
|
||||||
|
</span>
|
||||||
|
Wi-fi
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="wr-hidden-operations-content col-lg-8">
|
||||||
|
|
||||||
|
<!-- security -->
|
||||||
|
<div class="wr-hidden-operation" data-operation="security" style="display: block">
|
||||||
|
<div class="panel panel-default operation-data" data-operation="{{features.ENCRYPT_STORAGE.code}}">
|
||||||
|
<div class="panel-heading" role="tab">
|
||||||
|
<h2 class="sub-title panel-title">
|
||||||
|
<a data-toggle="collapse" data-parent="#accordion" href="#enableEncryptionTab"
|
||||||
|
aria-expanded="true" aria-controls="enableEncryptionTab">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw fw-arrow fw-down-arrow fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
Encryption Enable/Disable
|
||||||
|
</a>
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
<div id="enableEncryptionTab" class="panel-collapse panel-body collapse in" role="tabpanel"
|
||||||
|
aria-labelledby="enableEncryptionTab">
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="enableEncryption"
|
||||||
|
data-key="enableEncryption"/>
|
||||||
|
<span class="helper" title="Enable Encryption">Enable Encryption<span
|
||||||
|
class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<a href="javascript:runOperation('{{features.ENCRYPT_STORAGE.code}}')" class="btn-operations">Configure</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="panel panel-default operation-data" data-operation="{{features.PASSCODE_POLICY.code}}">
|
||||||
|
<div class="panel-heading" role="tab">
|
||||||
|
<h2 class="sub-title panel-title">
|
||||||
|
<a data-toggle="collapse" data-parent="#accordion" href="#passCodePolicy" aria-expanded="false"
|
||||||
|
aria-controls="passCodePolicy" class="collapsed">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw fw-arrow fw-down-arrow fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
Passcode Policy
|
||||||
|
</a>
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
<div id="passCodePolicy" class="panel-collapse panel-body collapse" role="tabpanel"
|
||||||
|
aria-labelledby="passCodePolicy">
|
||||||
|
|
||||||
|
<label class="wr-input-label col-sm-4" for="maxFailedAttempts">Maximum Failed Attempts</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="maxFailedAttempts"
|
||||||
|
data-key="maxFailedAttempts" placeholder="Enter maximum Failed Attempts">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label col-sm-4" for="minLength">Minimum Length</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="minLength" data-key="minLength"
|
||||||
|
placeholder="Enter minimum Length">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label col-sm-4" for="pinHistory">PIN History</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="pinHistory" data-key="pinHistory"
|
||||||
|
placeholder="Enter PIN History">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label col-sm-4" for="minComplexChars">Minimum complex characters</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="minComplexChars"
|
||||||
|
data-key="minComplexChars" placeholder="Enter minimum complex characters">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label col-sm-4" for="lockcode">Minimum PIN Age in days</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="maxPINAgeInDays"
|
||||||
|
data-key="maxPINAgeInDays" placeholder="Enter minimum PIN age in days">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="requireAlphanumeric"
|
||||||
|
data-key="requireAlphanumeric"/>
|
||||||
|
<span class="helper" title="Require Alphanumeric">Require Alphanumeric<span
|
||||||
|
class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="allowSimple" data-key="allowSimple"/>
|
||||||
|
<span class="helper" title="Allow simple PIN">Allow simple PIN<span
|
||||||
|
class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a href="javascript:runOperation('{{features.PASSCODE_POLICY.code}}')" class="btn-operations">Configure</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /security -->
|
||||||
|
|
||||||
|
<!-- wi-fi -->
|
||||||
|
<div class="wr-hidden-operation panel-body" data-operation="wifi">
|
||||||
|
<div class="operation-data" data-operation="{{features.WIFI.code}}">
|
||||||
|
<label class="wr-input-label" title="Identification of the wireless network to connect to">Service Set
|
||||||
|
Identifier<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>Identification of the wireless network to connect to</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="ssid" data-key="ssid"
|
||||||
|
placeholder="Enter SSID"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label" title="Password for the wireless network">Password<span
|
||||||
|
class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>Password for the wireless network</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="password" class="form-control operationDataKeys" id="password" data-key="password"
|
||||||
|
placeholder="Password"/>
|
||||||
|
</div>
|
||||||
|
<a href="javascript:runOperation('{{features.WIFI.code}}')" class="btn-operations">Configure</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- /wi-fi -->
|
||||||
|
<!-- application -->
|
||||||
|
<div class="wr-hidden-operation" data-operation="application">
|
||||||
|
<div class="panel panel-default operation-data" data-operation="{{features.INSTALL_APPLICATION.code}}">
|
||||||
|
<div class="panel-heading" role="tab">
|
||||||
|
<h2 class="sub-title panel-title">
|
||||||
|
<a data-toggle="collapse" data-parent="#accordion" href="#installApp" aria-expanded="true"
|
||||||
|
aria-controls="installApp">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw fw-arrow fw-down-arrow fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
Install App
|
||||||
|
</a>
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
<div id="installApp" class="panel-collapse panel-body collapse in" role="tabpanel"
|
||||||
|
aria-labelledby="installApp">
|
||||||
|
<label class="wr-input-label" title="Application Identifier">App Identifier<span
|
||||||
|
class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="package-name"
|
||||||
|
data-key="packageName" placeholder="Enter App Identifer"/>
|
||||||
|
</div>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control dropdown">
|
||||||
|
<span class="helper" title="App Type">App Type<span
|
||||||
|
class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
<select class="form-control col-sm-8 operationDataKeys appTypesInput" id="type"
|
||||||
|
data-key="type">
|
||||||
|
<option>Public</option>
|
||||||
|
<option>Enterprise</option>
|
||||||
|
</select>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<label class="wr-input-label" title="URL">URL<span
|
||||||
|
class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="url" data-key="url"
|
||||||
|
placeholder="Enter URL"/>
|
||||||
|
</div>
|
||||||
|
<a href="javascript:runOperation('{{features.INSTALL_APPLICATION.code}}')" class="btn-operations">Install</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="panel panel-default operation-data" data-operation="{{features.WEBCLIP.code}}">
|
||||||
|
<div class="panel-heading" role="tab">
|
||||||
|
<h2 class="sub-title panel-title">
|
||||||
|
<a data-toggle="collapse" data-parent="#accordion" href="#installWebClip" aria-expanded="true"
|
||||||
|
aria-controls="installWebClip" class="collapsed">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw fw-arrow fw-down-arrow fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
Install Web Clip
|
||||||
|
</a>
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
<div id="installWebClip" class="panel-collapse panel-body collapse" role="tabpanel"
|
||||||
|
aria-labelledby="installWebClip">
|
||||||
|
<label class="wr-input-label" title="Title of the web clip">Title<span
|
||||||
|
class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="title" data-key="title"
|
||||||
|
placeholder="Enter Title"/>
|
||||||
|
</div>
|
||||||
|
<label class="wr-input-label" title="URL">URL<span
|
||||||
|
class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="url" data-key="url"
|
||||||
|
placeholder="Enter URL"/>
|
||||||
|
</div>
|
||||||
|
<a href="javascript:runOperation('{{features.WEBCLIP.code}}')" class="btn-operations">Install</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="panel panel-default operation-data" data-operation="{{features.UNINSTALL_APPLICATION.code}}">
|
||||||
|
<div class="panel-heading" role="tab">
|
||||||
|
<h2 class="sub-title panel-title">
|
||||||
|
<a data-toggle="collapse" data-parent="#accordion" href="#uninstallApp" aria-expanded="true"
|
||||||
|
aria-controls="uninstallApp" class="collapsed">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw fw-arrow fw-down-arrow fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
Uninstall App
|
||||||
|
</a>
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
<div id="uninstallApp" class="panel-collapse panel-body collapse" role="tabpanel"
|
||||||
|
aria-labelledby="uninstallApp">
|
||||||
|
<label class="wr-input-label" title="Application Identifier">App Identifier<span
|
||||||
|
class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>Identification of the wireless network to connect to</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="package-name"
|
||||||
|
data-key="packageName" placeholder="Enter App Identifer"/>
|
||||||
|
</div>
|
||||||
|
<a href="javascript:runOperation('{{features.UNINSTALL_APPLICATION.code}}')" class="btn-operations">Uninstall</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /application -->
|
||||||
|
|
||||||
|
<!-- Restriction -->
|
||||||
|
<div class="wr-hidden-operation" data-operation="restriction">
|
||||||
|
<div class="panel panel-default operation-data" data-operation="{{features.CAMERA.code}}">
|
||||||
|
<div class="panel-heading" role="tab">
|
||||||
|
<h2 class="sub-title panel-title">
|
||||||
|
<a data-toggle="collapse" data-parent="#accordion" href="#cameraDisable" aria-expanded="true"
|
||||||
|
aria-controls="cameraDisable">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw fw-arrow fw-down-arrow fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
Camera Enable/Disable
|
||||||
|
</a>
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
<div id="cameraDisable" class="panel-collapse panel-body collapse in" role="tabpanel"
|
||||||
|
aria-labelledby="cameraDisable">
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="enableCamera" data-key="enableCamera"
|
||||||
|
checked/>
|
||||||
|
<span class="helper" title="Remove App upon dis-enrollment">Enable Camera<span
|
||||||
|
class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<a href="javascript:runOperation('{{features.CAMERA.code}}')" class="btn-operations">Configure</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /Restriction -->
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -0,0 +1,366 @@
|
|||||||
|
<div class="row no-gutter">
|
||||||
|
<div class="wr-hidden-operations-nav col-lg-4">
|
||||||
|
<a href="javascript:void(0)" onclick="showAdvanceOperation('{{features.WIFI.code}}', this)" class="selected">
|
||||||
|
<span class="wr-hidden-operations-icon fw-stack">
|
||||||
|
<i class="fw fw-wifi fw-stack-2x"></i>
|
||||||
|
</span>
|
||||||
|
Wi-fi
|
||||||
|
</a>
|
||||||
|
<a href="javascript:void(0)" onclick="showAdvanceOperation('application', this)" >
|
||||||
|
<span class="wr-hidden-operations-icon fw-stack">
|
||||||
|
<i class="fw fw-padlock fw-stack-2x"></i>
|
||||||
|
</span>
|
||||||
|
Applications
|
||||||
|
</a>
|
||||||
|
<a href="javascript:void(0)" onclick="showAdvanceOperation('{{features.RESTRICTION.code}}', this)">
|
||||||
|
<span class="wr-hidden-operations-icon fw-stack">
|
||||||
|
<i class="fw fw-settings fw-stack-2x"></i>
|
||||||
|
</span>
|
||||||
|
Restrictions
|
||||||
|
</a>
|
||||||
|
<a href="javascript:void(0)" onclick="showAdvanceOperation('mail', this)">
|
||||||
|
<span class="wr-hidden-operations-icon fw-stack">
|
||||||
|
<i class="fw fw-message fw-stack-2x"></i>
|
||||||
|
</span>
|
||||||
|
Mail
|
||||||
|
</a>
|
||||||
|
<a href="javascript:void(0)" onclick="showAdvanceOperation('{{features.AIR_PLAY.code}}', this)">
|
||||||
|
<span class="wr-hidden-operations-icon fw-stack">
|
||||||
|
<i class="fw fw-service-provider fw-stack-2x"></i>
|
||||||
|
</span>
|
||||||
|
Air Play
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="wr-hidden-operations-content col-lg-8">
|
||||||
|
|
||||||
|
<!-- application -->
|
||||||
|
<div class="wr-hidden-operation" data-operation="application" style="display: block">
|
||||||
|
<div class="panel panel-default operation-data" data-operation="{{features.INSTALL_STORE_APPLICATION.code}}">
|
||||||
|
<div class="panel-heading" role="tab">
|
||||||
|
<h2 class="sub-title panel-title">
|
||||||
|
<a data-toggle="collapse" data-parent="#accordion" href="#installPublicAppiOS" aria-expanded="true" aria-controls="installPublicAppiOS">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw fw-arrow fw-down-arrow fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
Install Public App
|
||||||
|
</a>
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
<div id="installPublicAppiOS" class="panel-collapse panel-body collapse in" role="tabpanel" aria-labelledby="installPublicAppiOS">
|
||||||
|
<label class="wr-input-label" for="appIdentifier">App identifier</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="appIdentifier" data-key="appIdentifier" placeholder="Enter App Identifier">
|
||||||
|
</div>
|
||||||
|
<label class="wr-input-label col-sm-4" for="ituneID">iTunes store ID</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="ituneID" data-key="ituneID" placeholder="Enter iTunes store ID">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label col-sm-4" for="bundleId">Bundle ID</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="bundleId" data-key="bundleId" placeholder="Enter Bundle ID">
|
||||||
|
</div>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="appRemoval" data-key="appRemoval" checked />
|
||||||
|
<span class="helper" title="Remove App upon dis-enrollment">Remove App upon dis-enrollment<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
<!--span>Enable if target network is not open or broadcasting</span-->
|
||||||
|
</div>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="backupData" data-key="backupData" checked />
|
||||||
|
<span class="helper" title="Prevent backup of App data">Prevent backup of App data<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
<!--span>Enable if target network is not open or broadcasting</span-->
|
||||||
|
</div>
|
||||||
|
<a href="javascript:runOperation('{{features.INSTALL_STORE_APPLICATION.code}}')" class="btn-operations">Install</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="panel panel-default operation-data" data-operation="{{features.INSTALL_ENTERPRISE_APPLICATION.code}}">
|
||||||
|
<div class="panel-heading" role="tab">
|
||||||
|
<h2 class="sub-title panel-title">
|
||||||
|
<a data-toggle="collapse" data-parent="#accordion" href="#installEnterpriseAppiOS" aria-expanded="true" aria-controls="installPublicAppiOS" class="collapsed">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw fw-arrow fw-down-arrow fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
Install Enterprise App
|
||||||
|
</a>
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
<div id="installEnterpriseAppiOS" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="installEnterpriseAppiOS">
|
||||||
|
<label class="wr-input-label" for="appIdentifier">App identifier</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="appIdentifier" data-key="appIdentifier" placeholder="Enter App Identifier">
|
||||||
|
</div>
|
||||||
|
<label class="wr-input-label col-sm-4" for="manifestURL">Manifest URL</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="manifestURL" data-key="manifestURL" placeholder="Enter manifest URL">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label col-sm-4" for="bundleId">Bundle ID</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="bundleId" data-key="bundleId" placeholder="Enter Bundle ID">
|
||||||
|
</div>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="appRemoval" data-key="appRemoval" checked />
|
||||||
|
<span class="helper" title="Remove App upon dis-enrollment">Remove App upon dis-enrollment<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
<!--span>Enable if target network is not open or broadcasting</span-->
|
||||||
|
</div>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="backupData" data-key="backupData" checked />
|
||||||
|
<span class="helper" title="Prevent backup of App data">Prevent backup of App data<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
<!--span>Enable if target network is not open or broadcasting</span-->
|
||||||
|
</div>
|
||||||
|
<a href="javascript:runOperation('{{features.INSTALL_ENTERPRISE_APPLICATION.code}}')" class="btn-operations">Install</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="panel panel-default operation-data" data-operation="{{features.REMOVE_APPLICATION.code}}">
|
||||||
|
<div class="panel-heading" role="tab">
|
||||||
|
<h2 class="sub-title panel-title">
|
||||||
|
<a data-toggle="collapse" data-parent="#accordion" href="#removeApplication" aria-expanded="true" aria-controls="removeApplication" class="collapsed">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw fw-arrow fw-down-arrow fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
Uninstall App
|
||||||
|
</a>
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
<div id="removeApplication" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="removeApplication">
|
||||||
|
<label class="wr-input-label col-sm-4" for="bundleId">Bundle ID</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="bundleId" data-key="bundleId" placeholder="Enter Bundle ID">
|
||||||
|
</div>
|
||||||
|
<a href="javascript:runOperation('{{features.REMOVE_APPLICATION.code}}')" class="btn-operations">Uninstall</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /application -->
|
||||||
|
|
||||||
|
<!-- wi-fi -->
|
||||||
|
<div class="wr-hidden-operation panel-body operation-data" data-operation="{{features.WIFI.code}}">
|
||||||
|
<label class="wr-input-label" title="Identification of the wireless network to connect to">Service Set Identifier<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>Identification of the wireless network to connect to</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="ssid" data-key="ssid" placeholder="Enter SSID" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="hiddenNetwork" data-key="hiddenNetwork" checked />
|
||||||
|
<span class="helper" title="Enable if target network is not open or broadcasting">Hidden Network<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
<!--span>Enable if target network is not open or broadcasting</span-->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="autoJoin" data-key="autoJoin" checked />
|
||||||
|
<span class="helper" title="Automatically join this wireless network">Auto Join<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
<!--span>Automatically join this wireless network</span-->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label" title="Configures proxies to be used with this network">Proxy Setup<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>Configures proxies to be used with this network</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<select class="form-control">
|
||||||
|
<option>None</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label" title="Wireless network encryption to use when connecting">Security Type<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>Wireless network encryption to use when connecting</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<select class="form-control operationDataKeys" id="encryptionType" data-key="encryptionType">
|
||||||
|
<option data-id="WPA">WPA/WPA2 Personal</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label" title="Password for the wireless network">Password<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>Password for the wireless network</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="password" value="" class="operationDataKeys" id="password" data-key="password" placeholder="input text"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label" title="Configures network to appear as legacy or Passport">Network Type<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>Configures network to appear as legacy or Passport</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<select class="form-control">
|
||||||
|
<option>Standard</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<a href="javascript:runOperation('{{features.WIFI.code}}')" class="btn-operations">Configure</a>
|
||||||
|
</div>
|
||||||
|
<!-- /wi-fi -->
|
||||||
|
|
||||||
|
<!-- mail -->
|
||||||
|
<div class="wr-hidden-operation panel-body" data-operation="mail">
|
||||||
|
<label class="wr-input-label" title="The display name of the account">Account Description<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>Identification of the wireless network to connect to</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" value="" placeholder="input text"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label" title="The protocol for accessing the email account">Account Type<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>Configures proxies to be used with this network</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<div class="cus-col-25">
|
||||||
|
<select class="form-control">
|
||||||
|
<option>IMAP</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="cus-col-50">
|
||||||
|
<span>Path Prefix</span> <input type="text" value="" placeholder="input text" />
|
||||||
|
</div>
|
||||||
|
<br class="c-both" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label" title="The display name of the user">User Display Name<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>Identification of the wireless network to connect to</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" value="" placeholder="input text"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label" title="The address of the account">Email Address<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>Identification of the wireless network to connect to</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" value="" placeholder="input text"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" checked />
|
||||||
|
<span class="helper" title="Messages can be moved from this account to another">Allow user to move messages from this account<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
<!--span>Enable if target network is not open or broadcasting</span-->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" checked />
|
||||||
|
<span class="helper" title="Include this account in recent address syncing">Allow Recent Address syncing<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
<!--span>Enable if target network is not open or broadcasting</span-->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" checked />
|
||||||
|
<span class="helper" title="Send outgoing mail from this account only from Mail app">Use Only in Mail<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
<!--span>Send outgoing mail from this account only from Mail app</span-->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" checked />
|
||||||
|
<span class="helper" title="Support S/MIME for this account">Enable S/MIME<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
<!--span>Support S/MIME for this account</span-->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label" title="The protocol for accessing the email account">Mail Server and Port<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>The protocol for accessing the email account</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<div class="cus-col-70">
|
||||||
|
<input type="text" value="" placeholder="input text"/>
|
||||||
|
</div>
|
||||||
|
<div class="cus-col-25">
|
||||||
|
<span> : </span><input type="text" value="993" placeholder="input text" />
|
||||||
|
</div>
|
||||||
|
<br class="c-both" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label" title="The username used to connect to the server for incoming mail">Username<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>The Username used to connect to the server for incoming mail</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" value="" placeholder="input text"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label" title="The autyentication method for the incoming mail server">Authentication Type<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>Wireless network encryption to use when connecting</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<select class="form-control">
|
||||||
|
<option>Password</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label class="wr-input-label" title="The password for the incoming mail server">Password<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>
|
||||||
|
<!--span>The Username used to connect to the server for incoming mail</span-->
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" value="" placeholder="input text"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" checked />
|
||||||
|
<span class="helper" title="Retrieve incoming mail through secure socket layer">Use SSL<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
<!--span>Enable if target network is not open or broadcasting</span-->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /mail -->
|
||||||
|
|
||||||
|
<!-- general -->
|
||||||
|
<div class="wr-hidden-operation panel-body operation-data" data-operation="{{features.RESTRICTION.code}}">
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="allowCamera" data-key="allowCamera" checked />
|
||||||
|
<span class="helper" title="Allow Camera">Allow Camera<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="allowCloudBackup" data-key="allowCloudBackup" checked/>
|
||||||
|
<span class="helper" title="Allow Cloud Backup">Allow Cloud Backup<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="allowScreenShot" data-key="allowScreenShot" checked/>
|
||||||
|
<span class="helper" title="Allow Screenshots">Allow Screenshots<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="allowSafari" data-key="allowSafari" checked />
|
||||||
|
<span class="helper" title="Allow Safari Browser">Allow Safari Browser<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input type="checkbox" class="operationDataKeys" id="allowAirDrop" data-key="allowAirDrop" checked />
|
||||||
|
<span class="helper" title="Allow AirDrop">Allow AirDrop<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<a href="javascript:runOperation('{{features.RESTRICTION.code}}')" class="btn-operations">Configure</a>
|
||||||
|
</div>
|
||||||
|
<!-- /general -->
|
||||||
|
<!-- air play -->
|
||||||
|
<div class="wr-hidden-operation panel-body operation-data" data-operation="{{features.AIR_PLAY.code}}">
|
||||||
|
<label class="wr-input-label col-sm-4" for="airPlayLocation">Location</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="airPlayLocation" data-key="location" placeholder="Enter location" />
|
||||||
|
</div>
|
||||||
|
<label class="wr-input-label col-sm-4" for="airPlayDeviceName">Device Name</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="text" class="form-control operationDataKeys" id="airPlayDeviceName" data-key="deviceName" placeholder="Enter Device Name" />
|
||||||
|
</div
|
||||||
|
<label class="wr-input-label col-sm-4" for="airPlayPassword">AirPlay password</label>
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<input type="password" class="form-control operationDataKeys" id="airPlayPassword" data-key="password" placeholder="Password" />
|
||||||
|
</div>
|
||||||
|
<a href="javascript:runOperation('{{features.AIR_PLAY.code}}')" class="btn-operations">Configure</a>
|
||||||
|
</div>
|
||||||
|
<!-- /air play -->
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -0,0 +1,249 @@
|
|||||||
|
<div id="errorOperations" class="operation">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h3 class="pull-left modal-title">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw fw-error fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
Operation cannot be performed !
|
||||||
|
</h3>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
|
||||||
|
<h4>
|
||||||
|
Please select a device or a list of devices to perform an operation.
|
||||||
|
</h4>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<div class="buttons">
|
||||||
|
<a href="javascript:hidePopup()" class="btn-operations">Ok</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="errorOperationUnexpected" class="operation">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h3 class="pull-left modal-title">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw fw-error fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
Operation cannot be performed !
|
||||||
|
</h3>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
|
||||||
|
<h4>
|
||||||
|
Unexpected error occurred. Please Try again later.
|
||||||
|
</h4>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<div class="buttons">
|
||||||
|
<a href="javascript:hidePopup()" class="btn-operations">Ok</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="operationSuccess" class="operation">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h3 class="pull-left modal-title">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw fw-check fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
Operation queued successfully !
|
||||||
|
</h3>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
|
||||||
|
<h4>
|
||||||
|
Operation has been queued successfully to be sent to the device.
|
||||||
|
</h4>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<div class="buttons">
|
||||||
|
<a href="javascript:hidePopup()" class="btn-operations">Ok</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="messageSuccess" class="operation">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h3 class="pull-left modal-title">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw fw-check fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
Message sent successfully !
|
||||||
|
</h3>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
|
||||||
|
<h4>Message has been queued to be sent to the device.</h4>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<div class="buttons">
|
||||||
|
<a href="javascript:hidePopup()" class="btn-operations">Ok</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{#each features}}
|
||||||
|
<a href="javascript:operationSelect('{{code}}')" title="{{description}}">
|
||||||
|
<i class="fw {{icon}}"></i>
|
||||||
|
<span>{{name}}</span>
|
||||||
|
</a>
|
||||||
|
<div class="operation" data-operation-code="{{code}}">
|
||||||
|
|
||||||
|
<div class="modal-content clearfix">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h3 class="pull-left modal-title">
|
||||||
|
<span class="fw-stack">
|
||||||
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
|
<i class="fw {{icon}} fw-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
{{name}}
|
||||||
|
<br>
|
||||||
|
</h3>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
|
||||||
|
<h4>
|
||||||
|
{{#equal code "WIPE_DATA"}}
|
||||||
|
{{#equal deviceType "android"}}
|
||||||
|
{{#equal ownership "BYOD"}}
|
||||||
|
Enter PIN code* of the device
|
||||||
|
<br><br>
|
||||||
|
<div>
|
||||||
|
<input id="pin" type="password"
|
||||||
|
class="form-control modal-input operationDataKeys"
|
||||||
|
placeholder="[ Required for a BYOD device ]" data-key="pin" />
|
||||||
|
</div>
|
||||||
|
{{/equal}}
|
||||||
|
{{/equal}}
|
||||||
|
{{/equal}}
|
||||||
|
{{#equal code "NOTIFICATION"}}
|
||||||
|
Type your message below.
|
||||||
|
<br><br>
|
||||||
|
<div id="notification-error-msg" class="alert alert-danger hidden" role="alert">
|
||||||
|
<i class="icon fw fw-error"></i><span></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<input class="form-control modal-input operationDataKeys"
|
||||||
|
id="messageTitle" data-key="messageTitle" placeholder="Title here..." />
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<textarea class="form-control modal-input operationDataKeys"
|
||||||
|
id="messageText" data-key="messageText" placeholder="Message here..."></textarea>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
{{/equal}}
|
||||||
|
{{#equal code "CHANGE_LOCK_CODE"}}
|
||||||
|
Type new lock-code below.
|
||||||
|
<br><br>
|
||||||
|
<input type="password" class="form-control modal-input operationDataKeys" id="lockcode"
|
||||||
|
data-key="lockCode" placeholder="Enter Lockcode"/>
|
||||||
|
<br>
|
||||||
|
{{/equal}}
|
||||||
|
{{#equal code "DEVICE_LOCK"}}
|
||||||
|
{{#equal deviceType "android"}}
|
||||||
|
{{#equal ownership "COPE"}}
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input id="hard-lock" type="checkbox" class="form-control operationDataKeys"
|
||||||
|
data-key="hard-lock"/>
|
||||||
|
<span class="helper" title="Once it enables, device will be blocked permanently.">
|
||||||
|
Enable Permanent Lock
|
||||||
|
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
|
<br><br>
|
||||||
|
{{/equal}}
|
||||||
|
Type your message to be shown in the lock screen
|
||||||
|
<br><br>
|
||||||
|
<div>
|
||||||
|
<textarea id="lock-message" class="form-control modal-input operationDataKeys"
|
||||||
|
data-key="lock-message" placeholder="[ Message content is optional ]"></textarea>
|
||||||
|
</div>
|
||||||
|
{{/equal}}
|
||||||
|
{{/equal}}
|
||||||
|
{{#equal code "UPGRADE_FIRMWARE"}}
|
||||||
|
{{#equal deviceType "android"}}
|
||||||
|
Enter firmware upgrade scheduling information.
|
||||||
|
<br><br>
|
||||||
|
<label class="wr-input-control checkbox">
|
||||||
|
<input id="instant-upgrade" type="checkbox" class="form-control operationDataKeys"
|
||||||
|
data-key="instant-upgrade"/>
|
||||||
|
<span class="helper"
|
||||||
|
title="Once enabled, device firmware upgrade process will start instantly.">
|
||||||
|
Instant Upgrade
|
||||||
|
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
|
<br><br>
|
||||||
|
<div class='input-group date' id='dateTimePicker'>
|
||||||
|
Enter the date and time to schedule firmware upgrade.
|
||||||
|
<br><br>
|
||||||
|
<div id="firmware-error-msg" class="alert alert-danger hidden" role="alert">
|
||||||
|
<i class="icon fw fw-error"></i><span></span>
|
||||||
|
</div>
|
||||||
|
<input type='text' class="form-control modal-input operationDataKeys"
|
||||||
|
style="z-index : 900;" name="daterange" id="schedule" data-key="schedule"/>
|
||||||
|
</div>
|
||||||
|
<br><br>
|
||||||
|
<div class='wr-input-control' id='firmwareServerInfo'>
|
||||||
|
Enter firmware upgrade server URL (ie. http://abc.com or http://abc.com/ota)
|
||||||
|
(Optional).
|
||||||
|
<br><br>
|
||||||
|
<input type='text' class="form-control modal-input operationDataKeys" id="server"
|
||||||
|
data-key="server"/>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(function () {
|
||||||
|
$('.modalpopup-bg').css('z-index', '1000');
|
||||||
|
$('.modalpopup-container').css('z-index', '1200');
|
||||||
|
|
||||||
|
$('input[name="daterange"]').daterangepicker({
|
||||||
|
singleDatePicker: true,
|
||||||
|
timePicker: true,
|
||||||
|
showDropdowns: true,
|
||||||
|
timePickerIncrement: 1,
|
||||||
|
locale: {
|
||||||
|
format: 'MM-DD-YYYY hh:mm a'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
$('#instant-upgrade').change(function () {
|
||||||
|
if ($(this).is(":checked")) {
|
||||||
|
$('#dateTimePicker').addClass("hidden");
|
||||||
|
$("#schedule").val('');
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$('#dateTimePicker').removeClass("hidden");
|
||||||
|
$('input[name="daterange"]').daterangepicker({
|
||||||
|
singleDatePicker: true,
|
||||||
|
timePicker: true,
|
||||||
|
showDropdowns: true,
|
||||||
|
timePickerIncrement: 1,
|
||||||
|
locale: {
|
||||||
|
format: 'MM-DD-YYYY hh:mm a'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<br>
|
||||||
|
{{/equal}}
|
||||||
|
{{/equal}}
|
||||||
|
<br><br>
|
||||||
|
Do you want to perform this operation on selected device(s) ?
|
||||||
|
<br>
|
||||||
|
</h4>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<div class="buttons">
|
||||||
|
<a href="javascript:runOperation('{{code}}')" class="btn-operations">Yes</a>
|
||||||
|
<a href="javascript:hidePopup()" class="btn-operations btn-default">No</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
<br class="c-both"/>
|
Loading…
Reference in new issue