fixing code conflicts

revert-dabc3590
hasuniea 8 years ago
commit 29c1b055d9

@ -21,7 +21,6 @@ package org.wso2.carbon.mdm.services.android.services;
import io.swagger.annotations.*;
import org.wso2.carbon.apimgt.annotations.api.API;
import org.wso2.carbon.apimgt.annotations.api.Permission;
import org.wso2.carbon.apimgt.annotations.api.Scope;
import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
import org.wso2.carbon.mdm.services.android.bean.wrapper.*;
@ -93,7 +92,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " +
"Server error occurred while adding a new lock operation.")
})
@Permission(name = "Lock Device", permission = "/device-mgt/devices/owning/operations/android/lock")
@Permission(name = "Lock Device", permission = "/device-mgt/devices/owning-device/operations/android/lock")
Response configureDeviceLock(
@ApiParam(name = "deviceLockBeanWrapper",
value = "Device lock configurations with device IDs") DeviceLockBeanWrapper deviceLockBeanWrapper);
@ -147,7 +146,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " +
"Server error occurred while adding a new un-lock operation.")
})
@Permission(name = "Unlock Device", permission = "/device-mgt/devices/owning/operations/android/unlock")
@Permission(name = "Unlock Device", permission = "/device-mgt/devices/owning-device/operations/android/unlock")
Response configureDeviceUnlock(
@ApiParam(name = "deviceIDs", value = "DeviceIds to be enable device unlock operation")
List<String> deviceIDs);
@ -200,7 +199,7 @@ public interface DeviceManagementAdminService {
code = 500,
message = "Internal Server Error. \n " +
"Server error occurred while adding a new get-location operation.")})
@Permission(name = "Get Device Location", permission = "/device-mgt/devices/owning/operations/android/location")
@Permission(name = "Get Device Location", permission = "/device-mgt/devices/owning-device/operations/android/location")
Response getDeviceLocation(
@ApiParam(name = "deviceIDs", value = "DeviceIDs to be requested to get device location")
List<String> deviceIDs);
@ -253,7 +252,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " +
"Server error occurred while adding a new clear password operation.")
})
@Permission(name = "Clear Password of Device", permission = "/device-mgt/devices/owning/operations/android/clear-password")
@Permission(name = "Clear Password of Device", permission = "/device-mgt/devices/owning-device/operations/android/clear-password")
Response removePassword(
@ApiParam(name = "deviceIDs",
value = "DeviceIds to be requested to remove password") List<String> deviceIDs);
@ -306,7 +305,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " +
"Server error occurred while adding a new control camera operation.")
})
@Permission(name = "Manage Camera", permission = "/device-mgt/devices/owning/operations/android/camera")
@Permission(name = "Manage Camera", permission = "/device-mgt/devices/owning-device/operations/android/camera")
Response configureCamera(
@ApiParam(name = "cameraBeanWrapper", value = "Camera enable/disable configurations with device IDs")
CameraBeanWrapper cameraBeanWrapper);
@ -362,7 +361,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " +
"Server error occurred while adding a new device info operation.")
})
@Permission(name = "Get Device Information", permission = "/device-mgt/devices/owning/operations/android/info")
@Permission(name = "Get Device Information", permission = "/device-mgt/devices/owning-device/operations/android/info")
Response getDeviceInformation(
@ApiParam(name = "deviceIds", value = "Device IDs to be requested to get device information")
List<String> deviceIDs);
@ -418,7 +417,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " +
"Server error occurred while adding a new device logcat operation.")
})
@Permission(name = "Get Logs", permission = "/device-mgt/devices/owning/operations/android/logcat")
@Permission(name = "Get Logs", permission = "/device-mgt/devices/owning-device/operations/android/logcat")
Response getDeviceLogcat(
@ApiParam(name = "deviceIds", value = "Device IDs to be requested to get device logcat")
List<String> deviceIDs);
@ -472,7 +471,7 @@ public interface DeviceManagementAdminService {
code = 500,
message = "Internal Server Error. \n " +
"Server error occurred while adding a enterprise wipe operation.")})
@Permission(name = "Enterprise Wipe", permission = "/device-mgt/devices/owning/operations/android/enterprise-wipe")
@Permission(name = "Enterprise Wipe", permission = "/device-mgt/devices/owning-device/operations/android/enterprise-wipe")
Response wipeDevice(@ApiParam(name = "deviceIDs", value = "Device IDs to be requested to do enterprise-wipe")
List<String> deviceIDs);
@ -524,7 +523,7 @@ public interface DeviceManagementAdminService {
code = 500,
message = "Internal Server Error. \n " +
"Server error occurred while adding a device wipe operation.")})
@Permission(name = "Factory Reset", permission = "/device-mgt/devices/owning/operations/android/wipe")
@Permission(name = "Factory Reset", permission = "/device-mgt/devices/owning-device/operations/android/wipe")
Response wipeData(
@ApiParam(name = "wipeDataBeanWrapper", value = "Configurations and DeviceIds needed to do wipe-data")
WipeDataBeanWrapper wipeDataBeanWrapper);
@ -581,7 +580,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " +
"Server error occurred while adding a new get-applications operation.")
})
@Permission(name = "Get Installed Application", permission = "/device-mgt/devices/owning/operations/android/applications")
@Permission(name = "Get Installed Application", permission = "/device-mgt/devices/owning-device/operations/android/applications")
Response getApplications(
@ApiParam(name = "deviceIDs", value = "Device Ids needed to get applications that are already installed")
List<String> deviceIDs);
@ -634,7 +633,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " +
"Server error occurred while adding a new device ring operation.")
})
@Permission(name = "Ring Device", permission = "/device-mgt/devices/owning/operations/android/ring")
@Permission(name = "Ring Device", permission = "/device-mgt/devices/owning-device/operations/android/ring")
Response ringDevice(
@ApiParam(name = "deviceIDs", value = "Device Ids needed for ring")
List<String> deviceIDs);
@ -687,7 +686,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " +
"Server error occurred while adding a new device reboot operation.")
})
@Permission(name = "Reboot Device", permission = "/device-mgt/devices/owning/operations/android/reboot")
@Permission(name = "Reboot Device", permission = "/device-mgt/devices/owning-device/operations/android/reboot")
Response rebootDevice(
@ApiParam(name = "deviceIDs", value = "Device Ids needed for reboot.")
List<String> deviceIDs);
@ -740,7 +739,7 @@ public interface DeviceManagementAdminService {
"Server error occurred while adding a new device mute operation.")
})
@Path("/mute")
@Permission(name = "Mute Device", permission = "/device-mgt/devices/owning/operations/android/mute")
@Permission(name = "Mute Device", permission = "/device-mgt/devices/owning-device/operations/android/mute")
Response muteDevice(
@ApiParam(name = "deviceIDs", value = "DeviceIDs need to be muted")
List<String> deviceIDs);
@ -796,7 +795,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " +
"Server error occurred while adding a new install-application operation.")
})
@Permission(name = "Install Applications", permission = "/device-mgt/devices/owning/operations/android/install-app")
@Permission(name = "Install Applications", permission = "/device-mgt/devices/owning-device/operations/android/install-app")
Response installApplication(
@ApiParam(name = "applicationInstallationBeanWrapper", value = "Properties of installed apps and device IDs")
ApplicationInstallationBeanWrapper applicationInstallationBeanWrapper);
@ -852,7 +851,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " +
"Server error occurred while adding a new update-application operation.")
})
@Permission(name = "Update installed applications", permission = "/device-mgt/devices/owning/operations/android/update-app")
@Permission(name = "Update installed applications", permission = "/device-mgt/devices/owning-device/operations/android/update-app")
Response updateApplication(
@ApiParam(name = "applicationUpdateBeanWrapper", value = "Properties of updated apps and device IDs")
ApplicationUpdateBeanWrapper applicationUpdateBeanWrapper);
@ -905,7 +904,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " +
"Server error occurred while adding a new uninstall-application operation.")
})
@Permission(name = "Uninstall Applications", permission = "/device-mgt/devices/owning/operations/android/uninstall-app")
@Permission(name = "Uninstall Applications", permission = "/device-mgt/devices/owning-device/operations/android/uninstall-app")
Response uninstallApplication(
@ApiParam(name = "applicationUninstallationBeanWrapper",
value = "applicationUninstallationConfigs and Device Ids")
@ -960,7 +959,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " +
"Server error occurred while adding a new blacklist-applications operation.")
})
@Permission(name = "Blacklist Applications", permission = "/device-mgt/devices/owning/operations/android/blacklist-app")
@Permission(name = "Blacklist Applications", permission = "/device-mgt/devices/owning-device/operations/android/blacklist-app")
Response blacklistApplications(
@ApiParam(name = "blacklistApplicationsBeanWrapper", value = "BlacklistApplications " +
"Configuration and DeviceIds")
@ -1015,7 +1014,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " +
"Server error occurred while adding a new upgrade firmware operation.")
})
@Permission(name = "Upgrade Firmware", permission = "/device-mgt/devices/owning/operations/android/upgrade")
@Permission(name = "Upgrade Firmware", permission = "/device-mgt/devices/owning-device/operations/android/upgrade")
Response upgradeFirmware(
@ApiParam(name = "upgradeFirmwareBeanWrapper",
value = "Firmware upgrade configuration and DeviceIds")
@ -1070,7 +1069,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " +
"Server error occurred while adding a new configure VPN operation.")
})
@Permission(name = "Add VPN", permission = "/device-mgt/devices/owning/operations/android/vpn")
@Permission(name = "Add VPN", permission = "/device-mgt/devices/owning-device/operations/android/vpn")
Response configureVPN(
@ApiParam(name = "vpnBeanWrapper",
value = "VPN configuration and DeviceIds")
@ -1124,7 +1123,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " +
"Server error occurred while adding a new send notification operation.")
})
@Permission(name = "Send Notifications", permission = "/device-mgt/devices/owning/operations/android/notification")
@Permission(name = "Send Notifications", permission = "/device-mgt/devices/owning-device/operations/android/send-notification")
Response sendNotification(
@ApiParam(name = "notificationBeanWrapper",
value = "Notification Configurations and device Ids")
@ -1178,7 +1177,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " +
"Server error occurred while adding a new configure wifi operation.")
})
@Permission(name = "Add Wifi Configuration", permission = "/device-mgt/devices/owning/operations/android/wifi")
@Permission(name = "Add Wifi Configuration", permission = "/device-mgt/devices/owning-device/operations/android/wifi")
Response configureWifi(
@ApiParam(name = "wifiBeanWrapper",
value = "WifiConfigurations and Device Ids") WifiBeanWrapper wifiBeanWrapper);
@ -1231,7 +1230,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " +
"Server error occurred while adding a new encrypt storage operation.")
})
@Permission(name = "Encrypt Device", permission = "/device-mgt/devices/owning/operations/android/encrypt")
@Permission(name = "Encrypt Device", permission = "/device-mgt/devices/owning-device/operations/android/encrypt")
Response encryptStorage(
@ApiParam(name = "encryptionBeanWrapper",
value = "Configurations and deviceIds need to be done data encryption")
@ -1285,7 +1284,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " +
"Server error occurred while adding a new change lock code operation.")
})
@Permission(name = "Change Password of Device", permission = "/device-mgt/devices/owning/operations/android/change-lock")
@Permission(name = "Change Password of Device", permission = "/device-mgt/devices/owning-device/operations/android/change-lock-code")
Response changeLockCode(
@ApiParam(name = "lockCodeBeanWrapper",
value = "Configurations and device Ids need to be done change lock code")
@ -1339,7 +1338,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " +
"Server error occurred while adding a new set password policy operation.")
})
@Permission(name = "Set Password Policy", permission = "/device-mgt/devices/owning/operations/android/password-policy")
@Permission(name = "Set Password Policy", permission = "/device-mgt/devices/owning-device/operations/android/password-policy")
Response setPasswordPolicy(
@ApiParam(name = "passwordPolicyBeanWrapper",
value = "Password Policy Configurations and Device Ids")
@ -1393,7 +1392,7 @@ public interface DeviceManagementAdminService {
message = "Internal Server Error. \n " +
"Server error occurred while adding a new set webclip operation.")
})
@Permission(name = "Add Webclips", permission = "/device-mgt/devices/owning/operations/android/webclip")
@Permission(name = "Add Webclips", permission = "/device-mgt/devices/owning-device/operations/android/webclip")
Response setWebClip(
@ApiParam(name = "webClipBeanWrapper",
value = "Configurations to need set web clip on device and device Ids")

@ -21,7 +21,6 @@ package org.wso2.carbon.mdm.services.android.services;
import io.swagger.annotations.*;
import org.wso2.carbon.apimgt.annotations.api.API;
import org.wso2.carbon.apimgt.annotations.api.Permission;
import org.wso2.carbon.apimgt.annotations.api.Scope;
import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration;
import org.wso2.carbon.mdm.services.android.bean.AndroidPlatformConfiguration;
import org.wso2.carbon.mdm.services.android.exception.AndroidAgentException;
@ -82,7 +81,7 @@ public interface DeviceTypeConfigurationService {
code = 500,
message = "Internal Server Error. \n Server error occurred while fetching Android platform configuration.")
})
@Permission(name = "View Configurations", permission = "/device-mgt/configurations/view")
@Permission(name = "View Configurations", permission = "/device-mgt/platform-configurations/view")
Response getConfiguration(
@ApiParam(
name = "If-Modified-Since",
@ -132,7 +131,7 @@ public interface DeviceTypeConfigurationService {
message = "Internal Server Error. \n " +
"Server error occurred while modifying Android platform configuration.")
})
@Permission(name = "Manage Configurations", permission = "/device-mgt/configurations/manage")
@Permission(name = "Manage Configurations", permission = "/device-mgt/platform-configurations/manage")
Response updateConfiguration(
@ApiParam(name = "configuration",
value = "AndroidPlatformConfiguration")

@ -19,8 +19,8 @@
{{unit "cdmf.unit.lib.qrcode"}}
{{unit "mdm.unit.device.qr-modal"}}
{{#zone "content"}}
<div class="row ">
{{#if permissions.LIST_DEVICES}}
<div class="row ">
<div class="col-md-3 wr-stats-board">
<div class="wr-stats-board-tile">
<div class="tile-name">Devices</div>
@ -150,8 +150,15 @@
</div>
</div>
</div>
</div>
{{/if}}
{{# if permissions.PERMITTED_NONE}}
<h1 class="page-sub-title">
Permitted None
</h1>
<br>
You are not authorized to view any of the dashboard listed resources.
{{/if}}
</div>
{{/zone}}
{{#zone "bottomJs"}}
{{js "js/dashboard.js"}}

@ -16,24 +16,27 @@
* under the License.
*/
function onRequest(context) {
function onRequest() {
var userModule = require("/app/modules/business-controllers/user.js")["userModule"];
var generalConfig = context.app.conf["generalConfig"];
var mdmProps = require("/app/modules/conf-reader/main.js")["conf"];
var viewModel = {};
var permissions = {};
permissions.LIST_DEVICES = userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/view");
permissions.LIST_POLICIES = userModule.isAuthorized("/permission/admin/device-mgt/policies/view");
permissions.LIST_ROLES = userModule.isAuthorized("/permission/admin/device-mgt/roles/view");
permissions.LIST_USERS = userModule.isAuthorized("/permission/admin/device-mgt/users/view");
permissions.ADD_POLICY = userModule.isAuthorized("/permission/admin/device-mgt/policies/manage");
permissions.ADD_ROLE = userModule.isAuthorized("/permission/admin/device-mgt/roles/manage");
permissions.ADD_USER = userModule.isAuthorized("/permission/admin/device-mgt/users/manage");
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/enroll/ios") | userModule.isAuthorized("/permission/admin/devices/enroll/android") | userModule.isAuthorized("/permission/admin/device-mgt/devices/enroll/windows") ){
permissions.ENROLL_DEVICE = true;
}
viewModel.permissions = permissions;
permissions["LIST_DEVICES"] = userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/view");
permissions["ENROLL_DEVICE"] = userModule.isAuthorized("/permission/admin/device-mgt/devices/enroll/ios") ||
userModule.isAuthorized("/permission/admin/devices/enroll/android") ||
userModule.isAuthorized("/permission/admin/device-mgt/devices/enroll/windows");
permissions["LIST_POLICIES"] = userModule.isAuthorized("/permission/admin/device-mgt/policies/view");
permissions["ADD_POLICY"] = userModule.isAuthorized("/permission/admin/device-mgt/policies/manage");
permissions["LIST_USERS"] = userModule.isAuthorized("/permission/admin/device-mgt/users/view");
permissions["ADD_USER"] = userModule.isAuthorized("/permission/admin/device-mgt/users/manage");
permissions["LIST_ROLES"] = userModule.isAuthorized("/permission/admin/device-mgt/roles/view");
permissions["ADD_ROLE"] = userModule.isAuthorized("/permission/admin/device-mgt/roles/manage");
permissions["PERMITTED_NONE"] = !(permissions["LIST_DEVICES"] || permissions["LIST_POLICIES"] ||
permissions["LIST_USERS"] || permissions["LIST_ROLES"]);
viewModel["permissions"] = permissions;
//TODO: Move enrollment URL into app-conf.json
viewModel.enrollmentURL = mdmProps.generalConfig.host + mdmProps.enrollmentDir;
viewModel["enrollmentURL"] = mdmProps["generalConfig"]["host"] + mdmProps["enrollmentDir"];
return viewModel;
}

@ -22,7 +22,7 @@ function onRequest(context){
// permission checks
// [1] checking viewing devices permission
viewModel["isAuthorized"] = userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/view");
viewModel["isAuthorized"] = userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/view");
if (viewModel["isAuthorized"]) {
context.handlebars.registerHelper('equal', function (lvalue, rvalue, options) {

@ -138,20 +138,19 @@
</div>
<div id="no-device-view" class="ast-container list-view hidden">
<div class="ctrl-info-panel col-centered text-center wr-login">
<h2>You don't have any device registered at the moment.</h2>
<br/>
<h2>You do not have any device enrolled at the moment.</h2>
<p class="text-center">
<a href="javascript:toggleEnrollment()" class="wr-btn">
<span class="fw-stack">
<i class="fw fw-ring fw-stack-2x"></i>
<i class="fw fw-mobile fw-stack-1x"></i>
<span class="fw-stack fw-move-right fw-move-bottom">
<i class="fw fw-circle fw-stack-2x fw-stroke fw-inverse"></i>
<i class="fw fw-circle fw-stack-2x"></i>
<i class="fw fw-add fw-stack-1x"></i>
<i class="fw fw-ring fw-stack-2x"></i>
<i class="fw fw-circle fw-stack-2x fw-stroke text-info"></i>
<i class="fw fw-add fw-stack-1x fw-inverse"></i>
</span>
</span>
Enroll New Device
&nbsp;&nbsp;Enroll New Device
</a>
</p>
</div>

@ -29,10 +29,10 @@ function onRequest() {
userModule.isAuthorized("/permission/admin/device-mgt/devices/enroll/windows");
// [2] checking advanced device search permissions
permissions["ADVANCED_SEARCH"] = userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/view");
permissions["ADVANCED_SEARCH"] = userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/view");
// [3] checking device viewing permission
permissions["VIEW_DEVICES"] = userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/view");
permissions["VIEW_DEVICES"] = userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/view");
var currentUser = session.get(constants["USER_SESSION_KEY"]);

@ -76,8 +76,10 @@ function loadDevices() {
return {};
}
var fnCreatedRow = function (nRow) {
var fnCreatedRow = function (nRow, aData, dataIndex) {
$(nRow).attr('data-type', 'selectable');
$(nRow).attr('data-deviceid', aData.deviceIdentifier);
$(nRow).attr('data-devicetype', aData.deviceType);
};
@ -226,7 +228,7 @@ function initPage() {
function (data) {
if (data) {
data = JSON.parse(data);
if (data.devices.length > 0) {
if (data["count"] > 0) {
$(".bulk-action-row").removeClass('hidden');
loadDevices();
} else {

@ -273,7 +273,7 @@
<div class="modal-footer">
<div class="buttons">
<a href="#" id="remove-policy-yes-link" class="btn-operations">Remove</a>
<a href="#" id="remove-policy-cancel-link" class="btn-operations">Cancel</a>
<a href="#" id="remove-policy-cancel-link" class="btn-operations btn-default">Cancel</a>
</div>
</div>
</div>
@ -342,7 +342,7 @@
<div class="modal-footer">
<div class="buttons">
<a href="#" id="publish-policy-yes-link" class="btn-operations">Yes</a>
<a href="#" id="publish-policy-cancel-link" class="btn-operations">No</a>
<a href="#" id="publish-policy-cancel-link" class="btn-operations btn-default">No</a>
</div>
</div>
</div>
@ -398,7 +398,7 @@
Yes
</a>
<a href="#" id="unpublish-policy-cancel-link" class="btn-operations">
<a href="#" id="unpublish-policy-cancel-link" class="btn-operations btn-default">
No
</a>
</div>
@ -492,7 +492,7 @@
Yes
</a>
<a href="#" id="change-policy-cancel-link" class="btn-operations">
<a href="#" id="change-policy-cancel-link" class="btn-operations btn-default">
No
</a>
</div>

@ -16,7 +16,7 @@
* under the License.
*/
function onRequest(context) {
function onRequest() {
// var log = new Log("mdm.unit.device.operation-bar");
var userModule = require("/app/modules/business-controllers/user.js")["userModule"];
var viewModel = {};
@ -24,48 +24,79 @@ function onRequest(context) {
// adding android operations related permission checks
permissions["android"] = [];
if (userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/operations/android/ring")) {
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/operations/android/lock-devices")) {
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/operations/android/unlock-devices")) {
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/operations/android/location")) {
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/operations/android/clear-password")) {
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/operations/android/reboot")) {
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/operations/android/upgrade-firmware")) {
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/operations/android/mute")) {
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/operations/android/send-notification")) {
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/operations/android/change-lock-code")) {
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/operations/android/enterprise-wipe")) {
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/operations/android/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/lockreset")) {
permissions["windows"].push("LOCK_RESET");
}
viewModel["permissions"] = stringify(permissions);
return viewModel;
}

@ -235,7 +235,7 @@
<div class="modal-footer">
<div class="buttons">
<a href="javascript:runOperation('{{code}}')" class="btn-operations">Yes</a>
<a href="javascript:hidePopup()" class="btn-operations">No</a>
<a href="javascript:hidePopup()" class="btn-operations btn-default">No</a>
</div>
</div>
</div>

@ -107,7 +107,6 @@ var operationModule = function () {
"NOTIFICATION_OPERATION_CODE": "NOTIFICATION",
"CALENDAR_SUBSCRIPTION_OPERATION_CODE": "CALENDAR_SUBSCRIPTION",
"APN_OPERATION_CODE": "APN",
"DOMAIN_CODE": "DOMAIN",
"CELLULAR_OPERATION_CODE": "CELLULAR",
"PER_APP_VPN_OPERATION_CODE": "PER_APP_VPN",
"APP_TO_PER_APP_VPN_MAPPING_OPERATION_CODE": "APP_TO_PER_APP_VPN_MAPPING"
@ -116,20 +115,10 @@ var operationModule = function () {
publicMethods.getIOSServiceEndpoint = function (operationCode) {
var featureMap = {
"DEVICE_LOCK": "lock",
"VPN": "vpn",
"PER_APP_VPN": "per-app-vpn",
"APP_TO_PER_APP_VPN_MAPPING": "app-to-per-app-vpn-mapping",
"RING": "ring",
"LOCATION": "location",
"ENTERPRISE_WIPE": "enterprise-wipe",
"NOTIFICATION": "notification",
"AIR_PLAY": "airplay",
"RESTRICTION": "restriction",
"CELLULAR": "cellular",
"WIFI": "wifi",
"INSTALL_STORE_APPLICATION": "store-application",
"INSTALL_ENTERPRISE_APPLICATION": "enterprise-application",
"REMOVE_APPLICATION": "remove-application",
"ENTERPRISE_WIPE": "enterprise-wipe"
"RING": "ring"
};
return "/api/device-mgt/ios/v1.0/admin/devices/" + featureMap[operationCode];
};
@ -895,7 +884,7 @@ var operationModule = function () {
"ALLOW_PARENT_PROFILE_APP_LINKING" : operationData["disallowParentProfileAppLinking"],
"ENSURE_VERIFY_APPS" : operationData["ensureVerifyApps"],
"AUTO_TIME" : operationData["enableAutoTime"],
"SET_SCREEN_CAPTURE_DISABLED" : operationData["diableScreenCapture"],
"SET_SCREEN_CAPTURE_DISABLED" : operationData["disableScreenCapture"],
"SET_STATUS_BAR_DISABLED" : operationData["disableStatusBar"]
}
};
@ -1016,13 +1005,21 @@ var operationModule = function () {
break;
case androidOperationConstants["SYSTEM_UPDATE_POLICY_CODE"]:
operationType = operationTypeConstants["PROFILE"];
payload = {
"operation": {
"type": operationData["cosuSystemUpdateType"],
"startTime": operationData["cosuWindowStartTime"],
"endTime": operationData["cosuWindowEndTime"]
}
};
if (operationData["cosuSystemUpdatePolicyType"] != "window") {
payload = {
"operation": {
"type": operationData["cosuSystemUpdatePolicyType"]
}
};
} else {
payload = {
"operation": {
"type": operationData["cosuSystemUpdatePolicyType"],
"startTime": operationData["cosuSystemUpdatePolicyWindowStartTime"],
"endTime": operationData["cosuSystemUpdatePolicyWindowEndTime"]
}
};
}
break;
case androidOperationConstants["KIOSK_APPS_CODE"]:
operationType = operationTypeConstants["PROFILE"];
@ -1178,29 +1175,14 @@ var operationModule = function () {
publicMethods.getWindowsServiceEndpoint = function (operationCode) {
var featureMap = {
"CAMERA": "camera",
"DEVICE_LOCK": "lock",
"DEVICE_LOCATION": "location",
"CLEAR_PASSWORD": "clear-password",
"APPLICATION_LIST": "get-application-list",
"DEVICE_RING": "ring-device",
"DEVICE_REBOOT": "reboot-device",
"UPGRADE_FIRMWARE": "upgrade-firmware",
"DEVICE_MUTE": "mute",
"LOCK_RESET": "lock-reset",
"NOTIFICATION": "notification",
"ENCRYPT_STORAGE": "encrypt",
"CHANGE_LOCK_CODE": "change-lock-code",
"WEBCLIP": "webclip",
"INSTALL_APPLICATION": "install-application",
"UNINSTALL_APPLICATION": "uninstall-application",
"BLACKLIST_APPLICATIONS": "blacklist-applications",
"PASSCODE_POLICY": "password-policy",
"ENTERPRISE_WIPE": "enterprise-wipe",
"WIPE_DATA": "wipe-data",
"DISENROLL": "disenroll"
"DEVICE_LOCK": "lock-devices",
"DISENROLL": "disenroll",
"DEVICE_RING": "ring-devices",
"LOCK_RESET": "lock-reset-devices",
"WIPE_DATA": "wipe-devices"
};
return "/mdm-windows-agent/services/windows/operation/" + featureMap[operationCode];
//return "/mdm-windows-agent/services/windows/operation/" + featureMap[operationCode];
return "/api/device-mgt/windows/v1.0/admin/devices/" + featureMap[operationCode];
};
/**
* Get the icon for the featureCode
@ -1233,15 +1215,10 @@ var operationModule = function () {
publicMethods.getWindowsIconForFeature = function (operationCode) {
var featureMap = {
"DEVICE_LOCK": "fw-lock",
"DEVICE_LOCATION": "fw-map-location",
"DISENROLL": "fw-delete",
"WIPE_DATA": "fw-clear",
"DEVICE_RING": "fw-dial-up",
"DEVICE_REBOOT": "fw-refresh",
"UPGRADE_FIRMWARE": "fw-up-arrow",
"DEVICE_MUTE": "fw-incoming-call",
"NOTIFICATION": "fw-message",
"LOCK_RESET": "fw-key"
"DISENROLL": "fw-delete",
"LOCK_RESET": "fw-key",
"WIPE_DATA": "fw-clear"
};
return featureMap[operationCode];
};
@ -1292,14 +1269,18 @@ var operationModule = function () {
var key = operationDataObj.data("key");
var value;
if (operationDataObj.is(":text") || operationDataObj.is("textarea") ||
operationDataObj.is(":password") || operationDataObj.is(":hidden")) {
operationDataObj.is(":password") || operationDataObj.is("input[type=hidden]")) {
value = operationDataObj.val();
operationData[key] = value;
} else if (operationDataObj.is(":checkbox")) {
value = operationDataObj.is(":checked");
operationData[key] = value;
} else if (operationDataObj.is(":radio") && operationDataObj.is(":checked")) {
value = operationDataObj.val();
value = operationDataObj.val();
operationData[key] = value;
} else if (operationDataObj.is("select")) {
value = operationDataObj.find("option:selected").attr("value");
operationData[key] = value;
} else if (operationDataObj.hasClass("grouped-array-input")) {
value = [];
var childInput;
@ -1308,7 +1289,7 @@ var operationModule = function () {
$(".child-input", this).each(function () {
childInput = $(this);
if (childInput.is(":text") || childInput.is("textarea") || childInput.is(":password")
|| childInput.is(":hidden")) {
|| childInput.is("input[type=hidden]")) {
childInputValue = childInput.val();
} else if (childInput.is(":checkbox")) {
childInputValue = childInput.is(":checked");
@ -1335,7 +1316,7 @@ var operationModule = function () {
$(".child-input", this).each(function () {
childInput = $(this);
if (childInput.is(":text") || childInput.is("textarea") || childInput.is(":password")
|| childInput.is(":hidden")) {
|| childInput.is("input[type=hidden]")) {
childInputValue = childInput.val();
} else if (childInput.is(":checkbox")) {
childInputValue = childInput.is(":checked");
@ -1367,7 +1348,7 @@ var operationModule = function () {
childInput = $(this);
childInputKey = childInput.data("child-key");
if (childInput.is(":text") || childInput.is("textarea") || childInput.is(":password")
|| childInput.is(":hidden")) {
|| childInput.is("input[type=hidden]")) {
childInputValue = childInput.val();
} else if (childInput.is(":checkbox")) {
childInputValue = childInput.is(":checked");
@ -1391,8 +1372,8 @@ var operationModule = function () {
}
});
}
operationData[key] = value;
}
operationData[key] = value;
}
);
@ -1443,10 +1424,15 @@ var operationModule = function () {
// populating input value according to the type of input
if (operationDataObj.is(":text") ||
operationDataObj.is("textarea") ||
operationDataObj.is(":password")) {
operationDataObj.is(":password") ||
operationDataObj.is("input[type=hidden]")) {
operationDataObj.val(value);
} else if (operationDataObj.is(":checkbox")) {
operationDataObj.prop("checked", value);
} else if (operationDataObj.is(":radio")) {
if (operationDataObj.val() == uiPayload[key]) {
operationDataObj.attr("checked", true);
}
} else if (operationDataObj.is("select")) {
operationDataObj.val(value);
/* trigger a change of value, so that if slidable panes exist,
@ -1469,9 +1455,9 @@ var operationModule = function () {
var childInputValue = value[childInputIndex];
// populating extracted value in the UI according to the input type
if (childInput.is(":text") ||
childInput.is(":hidden") ||
childInput.is("textarea") ||
childInput.is(":password") ||
childInput.is("input[type=hidden]") ||
childInput.is("select")) {
childInput.val(childInputValue);
} else if (childInput.is(":checkbox")) {
@ -1517,9 +1503,9 @@ var operationModule = function () {
}
// populating extracted value in the UI according to the input type
if (childInput.is(":text") ||
childInput.is(":hidden") ||
childInput.is("textarea") ||
childInput.is(":password") ||
childInput.is("input[type=hidden]") ||
childInput.is("select")) {
childInput.val(childInputValue);
} else if (childInput.is(":checkbox")) {
@ -1546,9 +1532,9 @@ var operationModule = function () {
var childInputValue = multiColumnKeyValuePair[childInputKey];
// populating extracted value in the UI according to the input type
if (childInput.is(":text") ||
childInput.is(":hidden") ||
childInput.is("textarea") ||
childInput.is(":password") ||
childInput.is("input[type=hidden]") ||
childInput.is("select")) {
childInput.val(childInputValue);
} else if (childInput.is(":checkbox")) {
@ -1582,7 +1568,7 @@ var operationModule = function () {
var payload = publicMethods.generatePayload(platformType, operationCode, null);
if(platformType == platformTypeConstants["ANDROID"] &&
operationCodes[i] == androidOperationConstants["CAMERA_OPERATION_CODE"]){
operationCodes[i] == androidOperationConstants["CAMERA_OPERATION_CODE"]){
var operations = payload["operation"];
for (var key in operations){
operationCode = key;
@ -1719,7 +1705,7 @@ var operationModule = function () {
restrictions["enableAutoTime"] = restriction["enabled"];
continue;
} else if (featureCode == androidOperationConstants["SET_SCREEN_CAPTURE_DISABLED"]){
restrictions["diableScreenCapture"] = restriction["enabled"];
restrictions["disableScreenCapture"] = restriction["enabled"];
continue;
} else if (featureCode == androidOperationConstants["SET_STATUS_BAR_DISABLED"]){
restrictions["disableStatusBar"] = restriction["enabled"];

@ -18,25 +18,46 @@
{{#zone "content"}}
<div id="qr-code-modal" data-enrollment-url="{{enrollmentURL}}" class="hidden">
<div class="modal-header">
<h3 class="pull-left modal-title">
Scan QR code to start enrollment
</h3>
<h4 class="pull-left modal-title">
<span class="fw-stack">
<i class="fw fw-mobile fw-stack-2x"></i>
<span class="fw-stack fw-move-right fw-move-bottom">
<i class="fw fw-ring fw-stack-2x"></i>
<i class="fw fw-circle fw-stack-2x fw-stroke text-info"></i>
<i class="fw fw-add fw-stack-1x fw-inverse"></i>
</span>
</span>
&nbsp;&nbsp;Add your new mobile device to {{@app.conf.appName}}
</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
</div>
<hr>
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
<div>
<h4>
Please scan the QR code using your mobile device to retrieve enrollment URL.
</h4>
<div class="panel-body col-centered text-center">
<h5>
Please scan the following QR code using your new <b>Android</b>, <b>iPhone</b> or <b>Windows</b> mobile device.
</h5>
<br>
<div class="panel panel-default">
<div class="panel-body col-centered text-center">
<div class="panel-body">
<div class="qr-code"></div>
</div>
</div>
<br>
<h5>
Not having a QR code scanner in your device?
<br><br>
Try following link
<br><br>
<b>{{enrollmentURL}}</b>
<br><br>
on your device's Internet browser instead.
</h5>
</div>
</div>
<div class="modal-footer">
<div class="buttons">
<a href="javascript:hidePopup()" class="btn-operations btn-default">Ok</a>
</div>
</div>
</div>

@ -14,11 +14,10 @@
* limitations under the License.
*/
function onRequest(context) {
function onRequest() {
var mdmProps = require("/app/modules/conf-reader/main.js")["conf"];
var viewModel = {};
//TODO: Move enrollment URL into app-conf.json
viewModel.enrollmentURL = mdmProps.generalConfig.host + mdmProps.enrollmentDir;
viewModel["enrollmentURL"] = mdmProps["generalConfig"]["host"] + mdmProps["enrollmentDir"];
return viewModel;
}

@ -44,7 +44,7 @@ var InitiateViewOption = null;
// error-callback
function () {
var defaultInnerHTML =
"<br><p class='fw-warning'>Device data may not have been updated. Please refresh to try again.<p>";
"<br><p class='small'><i class='fw-warning'></i>&nbsp;Device data may not have been updated. Please refresh to try again.<p>";
$(".panel-body").append(defaultInnerHTML);
}
);

@ -57,28 +57,35 @@
<span id="work-profile-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
<span id="work-profile-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>
</a>
<!--COSU-->
<a href="javascript:void(0)" onclick="showAdvanceOperation('android-for-work-cosu', this)">
<span class="wr-hidden-operation-icon fw-stack">
<i class="fw fw-service fw-stack-2x"></i>
</span>
&nbsp;&nbsp;COSU Configuration
<span id="android-for-work-cosu-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span>
<span id="android-for-work-cosu-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
<span id="android-for-work-cosu-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>
</a>
<!--/COSU-->
<a href="javascript:void(0)" onclick="showAdvanceOperation('app-restriction', this)">
<span class="fw-stack fw-lg">
<i class="fw fw-application fw-stack-1x"></i>
<i class="fw fw-block fw-stack-2x"></i>
</span>
<span class="fw-stack fw-lg">
<i class="fw fw-application fw-stack-1x"></i>
<i class="fw fw-block fw-stack-2x"></i>
</span>
Applications Restrictions
<span id="app-restriction-configured" class="has-configured status-icon hidden"><i
class="fw fw-ok"></i></span>
<span id="app-restriction-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
<span id="app-restriction-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>
</a>
<a href="javascript:void(0)" onclick="showAdvanceOperation('cosu-system-update-policy', this)">
<span class="wr-hidden-operation-icon fw-stack">
<i class="fw fw-import fw-stack-2x"></i>
</span>
&nbsp;&nbsp;System Update Policy (COSU)
<span id="cosu-system-update-policy-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span>
<span id="cosu-system-update-policy-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
<span id="cosu-system-update-policy-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>
</a>
<a href="javascript:void(0)" onclick="showAdvanceOperation('cosu-whitelist-applications', this)">
<span class="wr-hidden-operations-icon fw-stack">
<i class="fw fw-register fw-stack-2x"></i>
</span>
Whitelist Apps (COSU)
<span id="cosu-whitelist-applications-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span>
<span id="cosu-whitelist-applications-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
<span id="cosu-whitelist-applications-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>
</a>
</div>
<div class="wr-hidden-operations-content col-lg-8">
@ -448,7 +455,7 @@
<div class="wr-input-control">
<label class="wr-input-control checkbox">
<input id="disable-screen-capture-enabled" type="checkbox" class="operationDataKeys"
data-key="diableScreenCapture"/>
data-key="disableScreenCapture"/>
<span class="helper" title="Having this checked would disable screen capture .">
&nbsp;&nbsp;&nbsp;Disable screen capture
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
@ -865,7 +872,7 @@
</span>
</label>
<input id="wifi-cacert-upload" type="file" class="form-control"
onchange="base64EncodeFile(this, document.getElementById('wifi-cacert'), document.getElementById('wifi-cacert-name'))"/>
onchange="base64EncodeFile(this, document.getElementById('wifi-cacert'), document.getElementById('wifi-cacert-name'))"/>
<input id="wifi-cacert" type="hidden" class="form-control operationDataKeys"
data-key="wifiCaCert" />
<input id="wifi-cacert-name" type="hidden" class="form-control operationDataKeys"
@ -886,6 +893,7 @@
</div>
</div>
<!-- /wi-fi -->
<!--app-restriction-->
<div class="wr-hidden-operation" data-operation="app-restriction">
<div class="panel panel-default operation-data" data-operation="app-restriction"
@ -1068,113 +1076,6 @@
</div>
<!-- /VPN -->
<!-- install-applications -->
<!--<div class="wr-hidden-operation" data-operation="install-apps">-->
<!--<div class="panel panel-default operation-data" data-operation="INSTALL_APPLICATION">-->
<!--<div class="panel-heading" role="tab">-->
<!--<h2 class="sub-title panel-title">-->
<!--<br>-->
<!--&nbsp;&nbsp;&nbsp;App Installations-->
<!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#installApp">-->
<!--<input type="checkbox" />-->
<!--<span class="helper"></span>-->
<!--<span class="text"></span>-->
<!--</label>-->
<!--<br>-->
<!--<br>-->
<!--</h2>-->
<!--</div>-->
<!--<div id="installApp" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="installApp">-->
<!--<div id="install-app-feature-error-msg" class="alert alert-danger hidden" role="alert">-->
<!--<i class="icon fw fw-error"></i><span></span>-->
<!--</div>-->
<!--<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 Identifier"/>-->
<!--</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>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!-- /install-applications -->
<!-- /uninstall-applications -->
<!--<div class="wr-hidden-operation" data-operation="uninstall-apps">-->
<!--<div class="panel panel-default operation-data" data-operation="UNINSTALL_APPLICATION">-->
<!--<div class="panel-heading" role="tab">-->
<!--<h2 class="sub-title panel-title">-->
<!--<br>-->
<!--&nbsp;&nbsp;&nbsp;App Uninstallations-->
<!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#uninstallApp">-->
<!--<input type="checkbox" />-->
<!--<span class="helper"></span>-->
<!--<span class="text"></span>-->
<!--</label>-->
<!--<br>-->
<!--<br>-->
<!--</h2>-->
<!--</div>-->
<!--<div id="uninstallApp" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="uninstallApp">-->
<!--<div id="uninstall-app-feature-error-msg" class="alert alert-danger hidden" role="alert">-->
<!--<i class="icon fw fw-error"></i><span></span>-->
<!--</div>-->
<!--<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 Identifier"/>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!-- /uninstall-applications -->
<!-- /web-clips -->
<!--<div class="wr-hidden-operation" data-operation="web-clips">-->
<!--<div class="panel panel-default operation-data" data-operation="WEBCLIP">-->
<!--<div class="panel-heading" role="tab">-->
<!--<h2 class="sub-title panel-title">-->
<!--<br>-->
<!--&nbsp;&nbsp;&nbsp;Web clips-->
<!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#installWebClip">-->
<!--<input type="checkbox" />-->
<!--<span class="helper"></span>-->
<!--<span class="text"></span>-->
<!--</label>-->
<!--<br>-->
<!--<br>-->
<!--</h2>-->
<!--</div>-->
<!--<div id="installWebClip" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="installWebClip">-->
<!--<div id="install-webclip-feature-error-msg" class="alert alert-danger hidden" role="alert">-->
<!--<i class="icon fw fw-error"></i><span></span>-->
<!--</div>-->
<!--<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>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!-- /web-clips -->
<!--Work-profile-->
<div class="wr-hidden-operation" data-operation="work-profile">
<div class="panel panel-default operation-data" data-operation="work-profile"
@ -1262,7 +1163,7 @@
rows="4" data-key="workProfilePolicyUnhideSystemApps" placeholder=""></textarea>
</div>
<div class="wr-input-control">
<label class="wr-input-label" for="passcode-policy-max-passcode-age-in-days">
<label class="wr-input-label" for="work-profile-policy-install-playstore-apps">
Enable Google Play Store Apps
<span class="helper"
title="The set of apps needed to be installed from Google Playstore to work-profile">
@ -1279,88 +1180,91 @@
</div>
</div>
<!--android-for-work-cosu-->
<div class="wr-hidden-operation" data-operation="android-for-work-cosu">
<!--system-update-policy-->
<div class="panel panel-default operation-data" data-operation="system-update-policy"
data-operation-code="SYSTEM_UPDATE_POLICY">
<div id="system-update-policy-heading" class="panel-heading" role="tab">
<!-- cosu-system-update-policy -->
<div class="wr-hidden-operation" data-operation="cosu-system-update-policy">
<div class="panel panel-default operation-data" data-operation="cosu-system-update-policy"
data-operation-code="SYSTEM_UPDATE_POLICY">
<div id="cosu-system-update-policy-heading" class="panel-heading" role="tab">
<h2 class="sub-title panel-title">
System Update Policy
<label id="system-update-policy-lbl" class="wr-input-control switch" data-toggle="collapse"
data-target="#system-update-policy-body">
System Update Policy (COSU)
<label id="cosu-system-update-policy-lbl" class="wr-input-control switch" data-toggle="collapse"
data-target="#cosu-system-update-policy-body">
<input type="checkbox"/>
<span class="helper"></span>
<span class="text"></span>
</label>
<hr>
<div class="panel-title-description">
This configuration can be used to set a passcode policy to an Android Device.
Once this configuration profile is installed on a device, corresponding users will not be
able
to modify these settings on their devices.
</div>
</h2>
</div>
<div id="system-update-policy-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="android-for-work-cosu-policy-body">
<div id="system-update-policy-feature-error-msg" class="alert alert-danger hidden" role="alert">
<div id="cosu-system-update-policy-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="cosu-system-update-policy-body">
<div id="cosu-system-update-policy-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span>
</div>
<div class="wr-input-control">
<label class="wr-input-label" for="android-for-work-cosu-policy-system-update">
<label class="wr-input-label">
System Update
<span class="helper" title="Type of the System Update to be set by the Device Owner">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span>
<br>
</label>
<br>
<div class="wr-input-control">
<label class="wr-input-control radio light">
<input id="automatic-system-update-radio-btn" type="radio" name="android-for-work-cosu-policy-system-update"
class="form-control operationDataKeys" data-key="cosuSystemUpdateType"
value="automatic" onclick="slideDownPaneAgainstValueSetForRadioButtons(this, 'android-for-work-cosu-window-select', ['window'])" checked/>
<span class="helper" title="Installs system update automatically as soon as one is available">
&nbsp;Automatic
</span>
</span>
</label>
<label class="wr-input-control radio light">
<input id="postpone-system-update-radio-btn" type="radio" name="android-for-work-cosu-policy-system-update"
class="form-control operationDataKeys" data-key="cosuSystemUpdateType"
value="postpone" onclick="slideDownPaneAgainstValueSetForRadioButtons(this, 'android-for-work-cosu-window-select', ['window'])"/>
<span class="helper" title="Incoming system update will be blocked for a maximum of 30 days">
&nbsp;Postpone
</span>
</label>
<label class="wr-input-control radio light">
<input id="window-system-update-radio-btn" type="radio" name="android-for-work-cosu-policy-system-update"
class="form-control operationDataKeys" data-key="cosuSystemUpdateType"
value="window" onclick="slideDownPaneAgainstValueSetForRadioButtons(this, 'android-for-work-cosu-window-select', ['window'])"/>
<span class="helper" title="Install system update automatically within a daily maintenance window, for a maximum of 30 days">
&nbsp;Window
</span>
</label>
</div>
<br><br>
<label class="wr-input-control radio light">
<input id="automatic-system-update-radio-btn" type="radio" name="cosu-system-update-type"
class="form-control operationDataKeys" data-key="cosuSystemUpdatePolicyType"
value="automatic" onclick="slideDownPaneAgainstValueSetForRadioButtons(this, 'cosu-system-update-policy-window-select', ['window'])" checked/>
<span class="helper" title="Installs system update automatically as soon as one is available">
&nbsp;Automatic
</span>
</label>
<label class="wr-input-control radio light">
<input id="postpone-system-update-radio-btn" type="radio" name="cosu-system-update-type"
class="form-control operationDataKeys" data-key="cosuSystemUpdatePolicyType"
value="postpone" onclick="slideDownPaneAgainstValueSetForRadioButtons(this, 'cosu-system-update-policy-window-select', ['window'])"/>
<span class="helper" title="Incoming system update will be blocked for a maximum of 30 days">
&nbsp;Postpone
</span>
</label>
<label class="wr-input-control radio light">
<input id="window-system-update-radio-btn" type="radio" name="cosu-system-update-type"
class="form-control operationDataKeys" data-key="cosuSystemUpdatePolicyType"
value="window" onclick="slideDownPaneAgainstValueSetForRadioButtons(this, 'cosu-system-update-policy-window-select', ['window'])"/>
<span class="helper" title="Install system update automatically within a daily maintenance window, for a maximum of 30 days">
&nbsp;Window
</span>
</label>
</div>
<div id="android-for-work-cosu-window-select" class="hidden">
<div id="cosu-system-update-policy-window-select" class="hidden">
<div>
<ul class="message message-info">
<i class="icon fw fw-info"></i>
<a id="android-for-work-cosu-window-select-msg"> Below configuration of start time and end time are valid only when
<b>window</b> option is selected.</a>
<a id="cosu-system-update-policy-window-select-msg">
Below configuration of start time and end time are valid only when
<b>window</b> option is selected.
</a>
</ul>
</div>
<div class="wr-input-control">
<label class="wr-input-label" for="android-for-work-cosu-window-start-time">
<label class="wr-input-label" for="cosu-system-update-policy-window-start-time">
Start Time
<span class="helper" title="Window start time for system update">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span>
</label>
<select id="android-for-work-cosu-start-time" class="form-control operationDataKeys"
data-key="cosuWindowStartTime" data-default="0">
<option value="1440" selected="selected">
12 AM
</option>
<select id="cosu-system-update-policy-window-start-time"
class="form-control operationDataKeys"
data-key="cosuSystemUpdatePolicyWindowStartTime" data-default="0">
<option value="1440" selected="selected">12 AM</option>
<option value="60">1 AM</option>
<option value="120">2 AM</option>
<option value="180">3 AM</option>
@ -1387,17 +1291,16 @@
</select>
</div>
<div class="wr-input-control">
<label class="wr-input-label" for="android-for-work-cosu-window-end-time">
Start Time
<label class="wr-input-label" for="cosu-system-update-policy-window-end-time">
End Time
<span class="helper" title="Window end time for system update">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span>
</label>
<select id="android-for-work-cosu-end-time" class="form-control operationDataKeys"
data-key="cosuWindowEndTime" data-default="0">
<option value="1440" selected="selected">
12 AM
</option>
<select id="cosu-system-update-policy-window-end-time"
class="form-control operationDataKeys"
data-key="cosuSystemUpdatePolicyWindowEndTime" data-default="0">
<option value="1440" selected="selected">12 AM</option>
<option value="60">1 AM</option>
<option value="120">2 AM</option>
<option value="180">3 AM</option>
@ -1409,7 +1312,7 @@
<option value="540">9 AM</option>
<option value="600">10 AM</option>
<option value="660">11 AM</option>
<option value="720">12 noon</option>
<option value="720">12 Noon</option>
<option value="780">1 PM</option>
<option value="840">2 PM</option>
<option value="900">3 PM</option>
@ -1424,39 +1327,49 @@
</select>
</div>
</div>
</div>
</div>
<!--system-update-policy-->
</div>
<!--whitelisted-applications-->
<div class="panel panel-default operation-data" data-operation="whitelisted-applications"
data-operation-code="KIOSK_APPS">
<div id="whitelisted-applications-heading" class="panel-heading" role="tab">
<!-- cosu-whitelist-applications -->
<div class="wr-hidden-operation" data-operation="cosu-whitelist-applications">
<div class="panel panel-default operation-data" data-operation="cosu-whitelist-applications"
data-operation-code="KIOSK_APPS">
<div id="cosu-whitelist-applications-heading" class="panel-heading" role="tab">
<h2 class="sub-title panel-title">
Whitelisted Applications
<label id="whitelisted-applications-lbl" class="wr-input-control switch" data-toggle="collapse"
data-target="#whitelisted-applications-body">
Whitelist Applications (COSU)
<label id="cosu-whitelist-applications-lbl" class="wr-input-control switch" data-toggle="collapse"
data-target="#cosu-whitelist-applications-body">
<input type="checkbox"/>
<span class="helper"></span>
<span class="text"></span>
</label>
<hr>
<div class="panel-title-description">
This configuration can be used to set a passcode policy to an Android Device.
Once this configuration profile is installed on a device, corresponding users will not be
able
to modify these settings on their devices.
</div>
</h2>
</div>
<div id="whitelisted-applications-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="whitelisted-applications-body">
<div id="whitelisted-applications-error-msg" class="alert alert-danger hidden" role="alert">
<div id="cosu-whitelist-applications-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="cosu-whitelist-applications-body">
<div id="cosu-whitelist-applications-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span>
</div>
<div class="wr-input-control">
<label class="wr-input-label" for="whitelisted-application">
<br><br>Whitelisted Application List to enter Lock Task Mode
<span class="helper" title="Add an application to whitelist.">
<label class="wr-input-label" for="cosu-whitelisted-applications">
Whitelisted Applications to enter Lock Task Mode
<span class="helper" title="Configuration information specific to a given third-party VPN solution. This has to be input as key/value pairs.">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span>
<br>
<a href="#whitelisted-applications-grid" class="grid-input-add" data-click-event="add-form">
<a href="#cosu-whitelisted-applications-grid" class="grid-input-add" data-click-event="add-form">
<span class="icon fw-stack">
<i class="fw fw-add fw-stack-1x"></i>
<i class="fw fw-ring fw-stack-2x"></i>
@ -1465,44 +1378,43 @@
Add Application
</a>
</label>
<div id="whitelisted-applications"
class="operationDataKeys grouped-array-input multi-column-key-value-pair-array"
data-key="cosuWhitelistedApplications" data-column-count="2">
<div id="cosu-whitelisted-applications"
class="operationDataKeys grouped-array-input multi-column-key-value-pair-array"
data-key="cosuWhitelistedApplications" data-column-count="2">
<table class="table table-responsive table-striped">
<thead>
<tr>
<th>No:</th>
<th>Application Name/Description</th>
<th>Package Name</th>
<th></th>
</tr>
<tr>
<th>No:</th>
<th>Application Name / Description</th>
<th>Package Name</th>
<th></th>
</tr>
</thead>
<tbody data-add-form-container="#whitelisted-applications-grid">
<tr data-help-text="add-form">
<td colspan="4">
No entries added yet.
</td>
</tr>
<tbody data-add-form-container="#cosu-whitelisted-applications-grid">
<tr data-help-text="add-form">
<td colspan="4">
No entries added yet .
</td>
</tr>
</tbody>
</table>
<table class="template hidden">
<tbody data-add-form="#whitelisted-applications-grid">
<tr data-add-form-element="clone">
<td data-title="No:">
<span class="index"></span>
</td>
<td data-title="App Name">
<input type="text" class="form-control grid-input-text" data-child-key="appName"
maxlength="100" data-default="" placeholder="[ Gmail ]"/>
</td>
<td data-title="Package Name">
<input type="text" class="form-control grid-input-text"
data-child-key="packageName" maxlength="100" data-default=""
placeholder="[ com.google.android.gm ]"/>
</td>
<td>
<tbody data-add-form="#cosu-whitelisted-applications-grid">
<tr data-add-form-element="clone">
<td data-title="No:">
<span class="index"></span>
</td>
<td data-title="Application Name / Description">
<input type="text" class="form-control grid-input-text" data-child-key="appName"
maxlength="100" data-default="" placeholder="[ Application Name / Description ]"/>
</td>
<td data-title="Package Name">
<input type="text" class="form-control grid-input-text" data-child-key="packageName"
maxlength="100" data-default="" placeholder="[ Package Name ]"/>
</td>
<td>
<span class="list-group-item-actions">
<a href="#whitelisted-applications-grid" class="grid-input-remove"
<a href="#cosu-whitelisted-applications-grid" class="grid-input-remove"
data-click-event="remove-form">
<span class="fw-stack helper" title="Remove Entry">
<i class="fw fw-ring fw-stack-2x"></i>
@ -1510,18 +1422,14 @@
</span>
</a>
</span>
</td>
</tr>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<!--/whitelisted-applications-->
</div>
<!--/android-for-work-cosu-->
</div>
</div>

@ -175,18 +175,17 @@
<span class="helper"></span>
<span class="text"></span>
</label>
<hr>
<div class="panel-title-description">
This configuration can be used to set a passcode policy to an iOS Device.
Once this configuration profile is installed on a device, corresponding users
will not be able
to modify these settings on their devices.
</div>
</h2>
<div class="panel-title-description">
This configuration can be used to set a passcode policy to an iOS Device.
Once this configuration profile is installed on a device, corresponding users
will not be able
to modify these settings on their devices.
</div>
</div>
<div id="passcode-policy-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="passcode-policy-body">
<hr/>
<div id="passcode-policy-feature-error-msg" class="alert alert-danger hidden"
role="alert">
<i class="icon fw fw-error"></i><span></span>
@ -396,17 +395,17 @@
<span class="helper"></span>
<span class="text"></span>
</label>
<hr>
<div class="panel-title-description">
This configurations can be used to configure VPN settings on an iOS device.
Once this configuration profile is installed on a device, corresponding users will not
be able
to modify these settings on their devices.
</div>
</h2>
<div class="panel-title-description">
This configurations can be used to configure VPN settings on an iOS device.
Once this configuration profile is installed on a device, corresponding users will not
be able
to modify these settings on their devices.
</div>
</div>
<div id="vpn-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="vpn-body">
<hr/>
Please note that * sign represents required fields of data.
<br>
<br>
@ -1200,18 +1199,18 @@
<span class="helper"></span>
<span class="text"></span>
</label>
<hr>
<div class="panel-title-description">
This configuration can be used to configure add-on VPN software (per-app VPN),
and it works only on VPN services of
type 'VPN'. Once this configuration profile is installed on a device,
corresponding users will not be able
to modify these settings on their devices.
</div>
</h2>
<div class="panel-title-description">
This configuration can be used to configure add-on VPN software (per-app VPN),
and it works only on VPN services of
type 'VPN'. Once this configuration profile is installed on a device,
corresponding users will not be able
to modify these settings on their devices.
</div>
</div>
<div id="per-app-vpn-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="per-app-vpn-body">
<hr/>
Please note that * sign represents required fields of data.
<br>
<br>
@ -1319,16 +1318,16 @@
<span class="helper"></span>
<span class="text"></span>
</label>
<hr>
<div class="panel-title-description">
This configuration can be used to configure app-to-per-app VPN mappings.
Once this configuration profile is installed on a device, corresponding users will not be able
to modify these settings on their devices.
</div>
</h2>
<div class="panel-title-description">
This configuration can be used to configure app-to-per-app VPN mappings.
Once this configuration profile is installed on a device, corresponding users will not be able
to modify these settings on their devices.
</div>
</div>
<div id="app-to-per-app-vpn-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="app-to-per-app-vpn-body">
<hr/>
Please note that * sign represents required fields of data.
<br>
<br>
@ -1418,18 +1417,18 @@
<span class="helper"></span>
<span class="text"></span>
</label>
<hr>
<div class="panel-title-description">
These configurations can be used to set how devices connect to your wireless network(s),
including the necessary authentication
information. Once this configuration profile is installed on an iOS device,
corresponding users will not be able
to modify these settings on their devices.
</div>
</h2>
<div class="panel-title-description">
These configurations can be used to set how devices connect to your wireless network(s),
including the necessary authentication
information. Once this configuration profile is installed on an iOS device,
corresponding users will not be able
to modify these settings on their devices.
</div>
</div>
<div id="wifi-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="wifi-body">
<hr/>
<div id="wifi-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span>
</div>
@ -2281,18 +2280,17 @@
<span class="helper"></span>
<span class="text"></span>
</label>
<hr>
<div class="panel-title-description">
These configurations can be used to define settings for connecting
to your POP or IMAP email accounts.
Once this configuration profile is installed on an iOS device,
corresponding users will not be able to modify these settings on their devices.
</div>
</h2>
<div class="panel-title-description">
These configurations can be used to define settings for connecting
to your POP or IMAP email accounts.
Once this configuration profile is installed on an iOS device,
corresponding users will not be able to modify these settings on their devices.
</div>
</div>
<div id="email-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="email-body">
<hr/>
<div id="email-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span>
</div>
@ -2648,19 +2646,18 @@
<span class="helper"></span>
<span class="text"></span>
</label>
<hr>
<div class="panel-title-description">
This configuration can be used to define settings for connecting to AirPlay
destinations.
Once this configuration profile is installed on an iOS device,
corresponding users will not be able to modify these settings on their devices.
<br><br>(This feature is supported only on iOS 7.0 and later.)
</div>
</h2>
<div class="panel-title-description">
This configuration can be used to define settings for connecting to AirPlay
destinations.
Once this configuration profile is installed on an iOS device,
corresponding users will not be able to modify these settings on their devices.
<br><br>(This feature is supported only on iOS 7.0 and later.)
</div>
</div>
<div id="airplay-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="airplay-body">
<hr/>
<div id="airplay-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span>
</div>
@ -2828,15 +2825,14 @@
<span class="helper"></span>
<span class="text"></span>
</label>
<hr/>
<div class="panel-title-description">
This payload defines web domains that are under an enterprises management.
</div>
</h2>
<div class="panel-title-description">
This payload defines web domains that are under an enterprises management.
</div>
</div>
<div id="domain-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="domain-body">
<hr/>
<div id="DOMAIN-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span>
</div>
@ -2990,18 +2986,17 @@
<span class="helper"></span>
<span class="text"></span>
</label>
<hr>
<div class="panel-title-description">
This configuration can be used to define settings for connecting to LDAP
servers.
Once this configuration profile is installed on an iOS device,
corresponding users will not be able to modify these settings on their devices.
</div>
</h2>
<div class="panel-title-description">
This configuration can be used to define settings for connecting to LDAP
servers.
Once this configuration profile is installed on an iOS device,
corresponding users will not be able to modify these settings on their devices.
</div>
</div>
<div id="ldap-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="ldap-body">
<hr/>
<div id="ldap-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span>
</div>
@ -3176,18 +3171,17 @@
<span class="helper"></span>
<span class="text"></span>
</label>
<hr>
<div class="panel-title-description">
This configuration can be used to define settings for connecting to CalDAV
servers.
Once this configuration profile is installed on an iOS device,
corresponding users will not be able to modify these settings on their devices.
</div>
</h2>
<div class="panel-title-description">
This configuration can be used to define settings for connecting to CalDAV
servers.
Once this configuration profile is installed on an iOS device,
corresponding users will not be able to modify these settings on their devices.
</div>
</div>
<div id="calendar-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="calendar-body">
<hr/>
<div id="calendar-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span>
</div>
@ -3301,17 +3295,16 @@
<span class="helper"></span>
<span class="text"></span>
</label>
<hr>
<div class="panel-title-description">
This configuration can be used to define settings for calendar subscriptions.
Once this configuration profile is installed on an iOS device,
corresponding users will not be able to modify these settings on their devices.
</div>
</h2>
<div class="panel-title-description">
This configuration can be used to define settings for calendar subscriptions.
Once this configuration profile is installed on an iOS device,
corresponding users will not be able to modify these settings on their devices.
</div>
</div>
<div id="calendar-subscription-body" class="panel-collapse panel-body collapse"
role="tabpanel" aria-labelledby="calendar-subscription-body">
<hr/>
<div id="calendar-subscription-feature-error-msg" class="alert alert-danger hidden"
role="alert">
<i class="icon fw fw-error"></i><span></span>
@ -3400,19 +3393,18 @@
<span class="helper"></span>
<span class="text"></span>
</label>
<hr>
<div class="panel-title-description">
These configurations can be used to specify Access Point Names ( APN ).
Once this configuration profile is installed on an iOS device, corresponding
users will not
be able to modify these settings on their devices.
<br><br>(This feature is not supported on iOS 7.0 and later.)
</div>
</h2>
<div class="panel-title-description">
These configurations can be used to specify Access Point Names ( APN ).
Once this configuration profile is installed on an iOS device, corresponding
users will not
be able to modify these settings on their devices.
<br><br>(This feature is not supported on iOS 7.0 and later.)
</div>
</div>
<div id="apn-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="apn-body">
<hr/>
<div id="apn-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span>
</div>
@ -3527,21 +3519,20 @@
<span class="helper"></span>
<span class="text"></span>
</label>
<hr>
<div class="panel-title-description">
These configurations can be used to specify Cellular Network Settings on an iOS
device.
Cellular settings cannot be installed if an APN setting is already installed and
upon successful installation, corresponding users will not be able to modify
these
settings on their devices.
<br><br>(This feature is supported only on iOS 7.0 and later.)
</div>
</h2>
<div class="panel-title-description">
These configurations can be used to specify Cellular Network Settings on an iOS
device.
Cellular settings cannot be installed if an APN setting is already installed and
upon successful installation, corresponding users will not be able to modify
these
settings on their devices.
<br><br>(This feature is supported only on iOS 7.0 and later.)
</div>
</div>
<div id="cellular-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="cellular-body">
<hr/>
<div id="cellular-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span>
</div>
@ -3713,18 +3704,17 @@
<span class="helper"></span>
<span class="text"></span>
</label>
<hr>
<div class="panel-title-description">
These configurations can be used to restrict apps, device features and
media content available on an iOS device. Once this configuration profile is installed
on a device, corresponding users will not be able to modify these settings on their
devices.
</div>
</h2>
<div class="panel-title-description">
These configurations can be used to restrict apps, device features and
media content available on an iOS device. Once this configuration profile is installed
on a device, corresponding users will not be able to modify these settings on their
devices.
</div>
</div>
<div id="restrictions-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="restrictions-body">
<hr/>
<div id="restrictions-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span>
</div>
@ -4768,16 +4758,15 @@
<span class="helper"></span>
<span class="text"></span>
</label>
<hr>
<div class="panel-title-description">
This configuration can be used to create a black list or white list of
applications.
</div>
</h2>
<div class="panel-title-description">
This configuration can be used to create a black list or white list of
applications.
</div>
</div>
<div id="app-restriction-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="app-restriction-body">
<hr/>
<div id="app-restriction-feature-error-msg" class="alert alert-danger hidden"
role="alert">
<i class="icon fw fw-error"></i><span></span>

@ -3,8 +3,7 @@
<a href="javascript:void(0)" onclick="showAdvanceOperation('passcode-policy', this)" class="selected">
<span class="wr-hidden-operations-icon fw-stack">
<i class="fw fw-key fw-stack-2x"></i>
</span>
Passcode Policy
</span>Passcode Policy
<span id="passcode-policy-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span>
<span id="passcode-policy-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
<span id="passcode-policy-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>
@ -78,16 +77,16 @@
<span class="helper"></span>
<span class="text"></span>
</label>
<hr>
<div class="panel-title-description">
This configuration can be used to set a passcode policy to an Windows Device.
Once this configuration profile is installed on a device, corresponding users will not be able
to modify these settings on their devices.
</div>
</h2>
<div class="panel-title-description">
This configuration can be used to set a passcode policy to an Windows Device.
Once this configuration profile is installed on a device, corresponding users will not be able
to modify these settings on their devices.
</div>
</div>
<div id="passcode-policy-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="passcode-policy-body">
<hr/>
<div id="passcode-policy-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span>
</div>
@ -221,15 +220,15 @@
<span class="helper"></span>
<span class="text"></span>
</label>
<hr>
<div class="panel-title-description">
This configuration can be used to restrict the usage of camera on an Windows device together with all the applications using the camera.
Once this configuration profile is installed on a device, corresponding users will not be able
to modify these settings on their devices.
</div>
</h2>
<div class="panel-title-description">
This configuration can be used to restrict the usage of camera on an Windows device together with all the applications using the camera.
Once this configuration profile is installed on a device, corresponding users will not be able
to modify these settings on their devices.
</div>
</div>
<div id="camera-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="camera-body">
<hr/>
<div id="camera-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span>
</div>
@ -262,15 +261,15 @@
<span class="helper"></span>
<span class="text"></span>
</label>
<hr>
<div class="panel-title-description">
This configuration can be used to encrypt data on an Windows device, when the device is locked and
make it readable when the passcode is entered. Once this configuration profile is installed on a device,
corresponding users will not be able to modify these settings on their devices.
</div>
</h2>
<div class="panel-title-description">
This configuration can be used to encrypt data on an Windows device, when the device is locked and
make it readable when the passcode is entered. Once this configuration profile is installed on a device,
corresponding users will not be able to modify these settings on their devices.
</div>
</div>
<div id="encrypt-storage-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="encrypt-storage-body">
<hr/>
<div id="encrypt-storage-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span>
</div>
@ -302,14 +301,13 @@
<span class="helper"></span>
<span class="text"></span>
</label>
<hr>
<div class="panel-title-description">
This configuration can be used to create a black list or white list of applications.
</div>
</h2>
<div class="panel-title-description">
This configuration can be used to create a black list or white list of applications.
</div>
</div>
<div id="app-restriction-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="app-restriction-body">
<hr/>
<div id="app-restriction-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span>
</div>

@ -2219,6 +2219,24 @@ var slideDownPaneAgainstValueSet = function (selectElement, paneID, valueSet) {
);
}
};
var slideDownPaneAgainstValueSetForRadioButtons = function (selectElement, paneID, valueSet) {
var selectedValueOnChange = selectElement.value;
var i, slideDownVotes = 0;
for (i = 0; i < valueSet.length; i++) {
if (selectedValueOnChange == valueSet[i]) {
slideDownVotes++;
}
}
var paneSelector = "#" + paneID;
if(slideDownVotes > 0) {
$(paneSelector).removeClass("hidden");
} else {
$(paneSelector).addClass("hidden");
}
};
// End of HTML embedded invoke methods

@ -78,16 +78,15 @@
<span class="helper"></span>
<span class="text"></span>
</label>
<hr>
<div class="panel-title-description">
This configuration can be used to set a passcode policy to an Windows Device.
Once this configuration profile is installed on a device, corresponding users will not be able
to modify these settings on their devices.
</div>
</h2>
<div class="panel-title-description">
This configuration can be used to set a passcode policy to an Windows Device.
Once this configuration profile is installed on a device, corresponding users will not be able
to modify these settings on their devices.
</div>
</div>
<div id="passcode-policy-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="passcode-policy-body">
<hr/>
<div id="passcode-policy-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span>
</div>
@ -221,15 +220,15 @@
<span class="helper"></span>
<span class="text"></span>
</label>
<hr>
<div class="panel-title-description">
This configuration can be used to restrict the usage of camera on an Windows device together with all the applications using the camera.
Once this configuration profile is installed on a device, corresponding users will not be able
to modify these settings on their devices.
</div>
</h2>
<div class="panel-title-description">
This configuration can be used to restrict the usage of camera on an Windows device together with all the applications using the camera.
Once this configuration profile is installed on a device, corresponding users will not be able
to modify these settings on their devices.
</div>
</div>
<div id="camera-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="camera-body">
<hr/>
<div id="camera-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span>
</div>
@ -262,15 +261,15 @@
<span class="helper"></span>
<span class="text"></span>
</label>
<hr>
<div class="panel-title-description">
This configuration can be used to encrypt data on an Windows device, when the device is locked and
make it readable when the passcode is entered. Once this configuration profile is installed on a device,
corresponding users will not be able to modify these settings on their devices.
</div>
</h2>
<div class="panel-title-description">
This configuration can be used to encrypt data on an Windows device, when the device is locked and
make it readable when the passcode is entered. Once this configuration profile is installed on a device,
corresponding users will not be able to modify these settings on their devices.
</div>
</div>
<div id="encrypt-storage-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="encrypt-storage-body">
<hr/>
<div id="encrypt-storage-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span>
</div>
@ -303,14 +302,13 @@
<span class="helper"></span>
<span class="text"></span>
</label>
<hr>
<div class="panel-title-description">
This configuration can be used to create a black list or white list of applications.
</div>
</h2>
<div class="panel-title-description">
This configuration can be used to create a black list or white list of applications.
</div>
</div>
<div id="app-restriction-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="app-restriction-body">
<hr/>
<div id="app-restriction-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span>
</div>

@ -633,7 +633,7 @@
<div class="wr-input-control">
<label class="wr-input-control checkbox">
<input id="disable-screen-capture-enabled" type="checkbox" class="operationDataKeys"
data-key="diableScreenCapture"/>
data-key="disableScreenCapture"/>
<span class="helper" title="Having this checked would disable screen capture .">
&nbsp;&nbsp;&nbsp;Disable screen capture
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>

@ -22,15 +22,16 @@
{{/zone}}
{{#zone "navMenu-items"}}
<li>
<a href="{{@app.context}}">
<i class="fw fw-dashboard"></i>
Admin Dashboard
</a>
</li>
<li>
<a href="{{@app.context}}">
<i class="fw fw-dashboard"></i>
Resource Dashboard
</a>
</li>
{{#if permissions.LIST_DEVICES}}
<li>
<!--suppress HtmlUnknownTarget -->
<a href="{{@app.context}}/devices">
<i class="fw fw-mobile"></i>
Device Management
@ -38,33 +39,41 @@
</li>
{{/if}}
<li><a><i class="fw fw-user"></i>User Management</a>
<ul>
{{#if permissions.LIST_USERS}}
<li><a href="{{@app.context}}/users"><i class="fw fw-user"></i>Users</a></li>
{{/if}}
{{#if permissions.LIST_ROLES}}
<li><a href="{{@app.context}}/roles"><i class="fw fw-bookmark"></i>Roles</a></li>
{{/if}}
</ul>
</li>
{{#if permissions.USER_MGT_PERMITTED}}
<li><a><i class="fw fw-user"></i>User Management</a>
<ul>
{{#if permissions.LIST_USERS}}
<li><!--suppress HtmlUnknownTarget -->
<a href="{{@app.context}}/users"><i class="fw fw-user"></i>Users</a></li>
{{/if}}
{{#if permissions.LIST_ROLES}}
<li><!--suppress HtmlUnknownTarget -->
<a href="{{@app.context}}/roles"><i class="fw fw-bookmark"></i>Roles</a></li>
{{/if}}
</ul>
</li>
{{/if}}
{{#if permissions.LIST_POLICIES}}
<li><a href="{{@app.context}}/policies"><i class="fw fw-policy"></i>Policy Management</a></li>
<li><!--suppress HtmlUnknownTarget -->
<a href="{{@app.context}}/policies"><i class="fw fw-policy"></i>Policy Management</a></li>
{{/if}}
{{#if permissions.CONFIG_MGT_PERMITTED}}
<li><a><i class="fw fw-settings"></i>Configuration Management</a>
<ul>
{{#if permissions.LIST_PLATFORM_CONFIGURATIONS}}
<li><!--suppress HtmlUnknownTarget -->
<a href="{{@app.context}}/platform-configuration"><i class="fw fw-service"></i>Platform Configurations</a>
</li>
{{/if}}
<!-- todo change the permission and get the related permission -->
{{#if permissions.LIST_CERTIFICATES}}
<li><!--suppress HtmlUnknownTarget -->
<a href="{{@app.context}}/certificates"><i class="fw fw-security-policy"></i>Certificate Configurations</a>
</li>
{{/if}}
</ul>
</li>
{{/if}}
<li><a><i class="fw fw-settings"></i>Configuration Management</a>
<ul>
{{#if permissions.LIST_CONFIGURATION}}
<li><a href="{{@app.context}}/platform-configuration"><i class="fw fw-service"></i>Platform Configurations</a>
</li>
{{/if}}
<!-- todo change the permission and get the related permission -->
{{#if permissions.LIST_CONFIGURATION}}
<li><a href="{{@app.context}}/certificates"><i class="fw fw-security-policy"></i>Certificate Configurations</a>
</li>
{{/if}}
</ul>
</li>
{{/zone}}
{{#zone "navbarCollapsableRightItems"}}
@ -83,6 +92,7 @@
</ul>
{{/zone}}
{{#zone "sidePanes"}}
<!--suppress HtmlUnknownAttribute -->
<div class="sidebar-wrapper" id="right-sidebar" is-authorized="{{permissions.LIST_NOTIFICATIONS}}"
data-side="right" data-width="320" data-sidebar-fixed="true" data-fixed-offset="50" data-spy="affix"
data-offset-top="80">
@ -92,6 +102,7 @@
</div>
{{/zone}}
{{#zone "bottomJs"}}
<!--suppress HtmlUnknownTarget -->
<script id="notifications" data-current-user="{{currentUser.username}}"
data-image-resource="{{@unit.publicUri}}/images/" src="{{@unit.publicUri}}/templates/notifications.hbs"
type="text/x-handlebars-template"></script>

@ -43,16 +43,20 @@ function onRequest(context) {
// eg: {{unit "appbar" pageLink="users" title="User Management"}}
viewModel["currentActions"] = links[viewModel["pageLink"]];
viewModel["enrollmentURL"] = mdmProps["generalConfig"]["host"] + mdmProps["enrollmentDir"];
var currentUser = session.get(constants["USER_SESSION_KEY"]);
viewModel["currentUser"] = session.get(constants["USER_SESSION_KEY"]);
var permissions = {};
permissions.LIST_DEVICES = userModule.isAuthorized("/permission/admin/device-mgt/devices/owning/view");
permissions.LIST_POLICIES = userModule.isAuthorized("/permission/admin/device-mgt/policies/view");
permissions.LIST_ROLES = userModule.isAuthorized("/permission/admin/device-mgt/roles/view");
permissions.LIST_USERS = userModule.isAuthorized("/permission/admin/device-mgt/users/view");
permissions.LIST_NOTIFICATIONS = userModule.isAuthorized("/permission/admin/device-mgt/notifications/view");
permissions.LIST_CONFIGURATION = userModule.isAuthorized("/permission/admin/device-mgt/configurations/view");
viewModel.permissions = permissions;
viewModel["currentUser"] = currentUser;
permissions["LIST_DEVICES"] = userModule.isAuthorized("/permission/admin/device-mgt/devices/owning-device/view");
permissions["LIST_POLICIES"] = userModule.isAuthorized("/permission/admin/device-mgt/policies/view");
permissions["LIST_USERS"] = userModule.isAuthorized("/permission/admin/device-mgt/users/view");
permissions["LIST_ROLES"] = userModule.isAuthorized("/permission/admin/device-mgt/roles/view");
permissions["USER_MGT_PERMITTED"] = (permissions["LIST_USERS"] || permissions["LIST_ROLES"]);
permissions["LIST_PLATFORM_CONFIGURATIONS"] = userModule.isAuthorized("/permission/admin/device-mgt/platform-configurations/view");
permissions["LIST_CERTIFICATES"] = userModule.isAuthorized("/permission/admin/device-mgt/certificates/view");
permissions["CONFIG_MGT_PERMITTED"] = (permissions["LIST_PLATFORM_CONFIGURATIONS"] || permissions["LIST_CERTIFICATES"]);
permissions["LIST_NOTIFICATIONS"] = userModule.isAuthorized("/permission/admin/device-mgt/notifications/view");
viewModel["permissions"] = permissions;
viewModel["appContext"] = mdmProps["appContext"];
return viewModel;

@ -5,8 +5,8 @@
<a href="{{../appContext}}/device/{{deviceType}}?id={{deviceIdentifier}}#event_log_tab"
data-id="{{operationId}}"
data-url="device/{{deviceType}}?id={{deviceIdentifier}}#event_log_tab"
class="new-notification" data-click-event="remove-form">
{{deviceType}}
class="new-notification text-capitalize" data-click-event="remove-form">
{{deviceType}} {{deviceName}}
</a>
</h4>
<p>{{description}}</p>

@ -6,7 +6,7 @@
@base-dark-color: #11375B;
@base-light-color: #ffffff;
@base-success-color: #5cb85c;
@base-info-color: #009DA7;
@base-info-color: #526A84;
@base-warning-color: #f0ad4e;
@base-danger-color: #d9534f;

@ -44,13 +44,7 @@ import javax.ws.rs.core.Response;
@Produces({"application/json", "application/xml"})
@Consumes({"application/json", "application/xml"})
public interface ConfigurationMgtService {
/**
* Retrieve Tenant configurations according to the device type.
*
* @return Tenant configuration object contains specific tenant configurations.
* @throws WindowsConfigurationException
*/
@GET
@ApiOperation(
produces = MediaType.APPLICATION_JSON,
@ -91,7 +85,7 @@ public interface ConfigurationMgtService {
code = 500,
message = "Internal Server Error. \n Server error occurred while fetching Windows platform configuration.")
})
@Permission(name = "View Configurations", permission = "/device-mgt/configurations/view")
@Permission(name = "View Configurations", permission = "/device-mgt/platform-configurations/view")
PlatformConfiguration getConfiguration() throws WindowsConfigurationException;
/**

@ -49,7 +49,7 @@ public interface DeviceManagementAdminService {
@POST
@Path("/lock-devices")
@Permission(name = "Lock Device", permission = "/device-mgt/devices/owning/operations/windows/lock")
@Permission(name = "Lock Device", permission = "/device-mgt/devices/owning-device/operations/windows/lock")
Response lock(@HeaderParam("Accept") String headerParam, List<String> deviceIds) throws
WindowsDeviceEnrolmentException;
@ -61,19 +61,19 @@ public interface DeviceManagementAdminService {
@POST
@Path("/wipe-devices")
@Permission(name = "Wipe Device", permission = "/device-mgt/devices/owning/operations/windows/wipe")
@Permission(name = "Wipe Device", permission = "/device-mgt/devices/owning-device/operations/windows/wipe")
Response wipe(@HeaderParam("Accept") String headerParam, List<String> deviceIds) throws
WindowsDeviceEnrolmentException;
@POST
@Path("/ring-devices")
@Permission(name = "Ring Device", permission = "/device-mgt/devices/owning/operations/windows/ring")
@Permission(name = "Ring Device", permission = "/device-mgt/devices/owning-device/operations/windows/ring")
Response ring(@HeaderParam("Accept") String headerParam, List<String> deviceIds) throws
WindowsDeviceEnrolmentException;
@POST
@Path("/lockreset-devices")
@Permission(name = "Lock-Reset Device", permission = "/device-mgt/devices/owning/operations/windows/lockreset")
@Path("/lock-reset-devices")
@Permission(name = "Lock-Reset Device", permission = "/device-mgt/devices/owning-device/operations/windows/lock-reset")
Response lockReset(@HeaderParam("Accept") String acceptHeader, List<String> deviceIds)
throws WindowsDeviceEnrolmentException;
}

Loading…
Cancel
Save