{{/zone}}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.device.search/public/js/bottomJs.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.device.search/public/js/bottomJs.js
index 0dc9a796029..c885566db84 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.device.search/public/js/bottomJs.js
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.device.search/public/js/bottomJs.js
@@ -1,13 +1,10 @@
/*
Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
-
WSO2 Inc. licenses this file to you under the Apache License,
Version 2.0 (the "License"); you may not use this file except
in compliance with the License.
You may obtain a copy of the License at
-
http://www.apache.org/licenses/LICENSE-2.0
-
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
@@ -46,17 +43,23 @@ var dynamicForm = '
@@ -143,4 +157,3 @@
{{/zone}}
-
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.device.search/search.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.device.search/search.js
deleted file mode 100644
index 75c34b8e0e8..00000000000
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.device.search/search.js
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
-
- WSO2 Inc. licenses this file to you under the Apache License,
- Version 2.0 (the "License"); you may not use this file except
- in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
- either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
- */
-
-/**
- * Returns the dynamic state to be populated by add-user page.
- *
- * @param context Object that gets updated with the dynamic state of this page to be presented
- * @returns {*} A context object that returns the dynamic state of this page to be presented
- */
-function onRequest(context) {
- var log = new Log("units/user-create/certificate-create.js");
- var userModule = require("/app/modules/business-controllers/user.js")["userModule"];
- var response = userModule.getRolesByUserStore();
- var mdmProps = require("/app/modules/conf-reader/main.js")["conf"];
- if (response["status"] == "success") {
- context["roles"] = response["content"];
- }
-
- context["charLimit"] = mdmProps["usernameLength"];
- context["usernameJSRegEx"] = mdmProps["userValidationConfig"]["usernameJSRegEx"];
- context["usernameHelpText"] = mdmProps["userValidationConfig"]["usernameHelpMsg"];
- context["usernameRegExViolationErrorMsg"] = mdmProps["userValidationConfig"]["usernameRegExViolationErrorMsg"];
- context["firstnameJSRegEx"] = mdmProps["userValidationConfig"]["firstnameJSRegEx"];
- context["firstnameRegExViolationErrorMsg"] = mdmProps["userValidationConfig"]["firstnameRegExViolationErrorMsg"];
- context["lastnameJSRegEx"] = mdmProps["userValidationConfig"]["lastnameJSRegEx"];
- context["lastnameRegExViolationErrorMsg"] = mdmProps["userValidationConfig"]["lastnameRegExViolationErrorMsg"];
-
- return context;
-}
\ No newline at end of file
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.devices/devices.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.devices/devices.js
index 40d7ee1d6bb..1c2d01b26bb 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.devices/devices.js
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.devices/devices.js
@@ -65,7 +65,9 @@ function onRequest(context) {
"type": data[i],
"category": deviceType.category,
"label": deviceType.label,
- "thumb": utility.getDeviceThumb(data[i])
+ "thumb": utility.getDeviceThumb(data[i]),
+ "analyticsEnabled": deviceType.analyticsEnabled,
+ "groupingEnabled": deviceType.groupingEnabled
});
}
}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.devices/public/js/listing.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.devices/public/js/listing.js
index a340b0e6f2e..65c74e886c8 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.devices/public/js/listing.js
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.devices/public/js/listing.js
@@ -66,7 +66,7 @@ $(document).ready(function () {
$.hasPermission = function (permission) {
return permissionSet[permission];
};
-
+
deviceListing = $("#device-listing");
currentUser = deviceListing.data("current-user");
@@ -246,7 +246,7 @@ function loadDevices(searchType, searchParam) {
return true;
}
// In JS Boolean("false") returns TRUE => http://stackoverflow.com/a/264037/1560536
- return (analyticsEnabled == "true");
+ return (groupingEnabled == "true");
}
}
return true;
@@ -351,7 +351,7 @@ function loadDevices(searchType, searchParam) {
'Analytics';
}
- if (!groupName || !groupId) {
+ if ((!groupName || !groupId) && groupingEnabled(row.deviceType)) {
html +=
'
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.generic.policy-wizard/public/js/editor.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.generic.policy-wizard/public/js/editor.js
index aca1bf0a7ce..e09b419b58d 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.generic.policy-wizard/public/js/editor.js
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.device.type.generic.policy-wizard/public/js/editor.js
@@ -34,4 +34,19 @@ window.queryEditor = CodeMirror.fromTextArea(document.getElementById('policy-def
var validatePolicyProfile = function () {
return true;
-};
\ No newline at end of file
+};
+
+/**
+ * Generates policy profile feature list which will be saved with the profile.
+ *
+ * This function will be invoked from the relevant cdmf unit at the time of policy creation.
+ *
+ * @returns {Array} profile payloads
+ */
+var generateGenericPayload = function () {
+ return [{
+ "featureCode": "CONFIG",
+ "deviceTypeId": policy["platformId"],
+ "content": {"policyDefinition": window.queryEditor.getValue()}
+ }];
+};
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.platform.configuration/configuration.hbs b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.platform.configuration/configuration.hbs
index 1fdef264e85..0a1b45b09cf 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.platform.configuration/configuration.hbs
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.platform.configuration/configuration.hbs
@@ -82,7 +82,7 @@
- ( Should be in milliseconds )
+ ( Should be in seconds )
{{label}}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.create/create.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.create/create.js
index f467aa9222c..1b945e5e7c0 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.create/create.js
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.create/create.js
@@ -43,10 +43,25 @@ function onRequest(context) {
if (configs && configs[DTYPE_CONF_DEVICE_TYPE_KEY][DTYPE_CONF_DEVICE_TYPE_LABEL_KEY]) {
deviceTypeLabel = configs[DTYPE_CONF_DEVICE_TYPE_KEY][DTYPE_CONF_DEVICE_TYPE_LABEL_KEY];
}
- var policyWizard = new File("/app/units/" + utility.getTenantedDeviceUnitName(deviceType, "policy-wizard"));
- if(policyWizard.isExists()){
+ var policyWizardSrc = "/app/units/" + utility.getTenantedDeviceUnitName(deviceType, "policy-wizard");
+ if (new File(policyWizardSrc).isExists()) {
content["icon"] = utility.getDeviceThumb(deviceType);
content["label"] = deviceTypeLabel;
+ var policyOperationsTemplateSrc = policyWizardSrc + "/public/templates/" + deviceType + "-policy-operations.hbs";
+ if (new File(policyOperationsTemplateSrc).isExists()) {
+ content["template"] = "/public/cdmf.unit.device.type." + deviceType +
+ ".policy-wizard/templates/" + deviceType + "-policy-operations.hbs";
+ }
+ var policyOperationsScriptSrc = policyWizardSrc + "/public/js/" + deviceType + "-policy-operations.js";
+ if (new File(policyOperationsScriptSrc).isExists()) {
+ content["script"] = "/public/cdmf.unit.device.type." + deviceType +
+ ".policy-wizard/js/" + deviceType + "-policy-operations.js";;
+ }
+ var policyOperationsStylesSrc = policyWizardSrc + "/public/css/" + deviceType + "-policy-operations.css";
+ if (new File(policyOperationsStylesSrc).isExists()) {
+ content["style"] = "/public/cdmf.unit.device.type." + deviceType +
+ ".policy-wizard/css/" + deviceType + "-policy-operations.css";;
+ }
types["types"].push(content);
}
}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.create/public/js/policy-create.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.create/public/js/policy-create.js
index d7d7b99f149..14d08a99697 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.create/public/js/policy-create.js
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.create/public/js/policy-create.js
@@ -18,10 +18,10 @@
var stepForwardFrom = {};
var stepBackFrom = {};
var policy = {};
-var configuredOperations = [];
var validateInline = {};
var clearInline = {};
var validateStep = {};
+var hasPolicyProfileScript = false;
var enableInlineError = function (inputField, errorMsg, errorSign) {
var fieldIdentifier = "#" + inputField;
@@ -139,52 +139,51 @@ stepForwardFrom["policy-platform"] = function (actionButton) {
$("#policy-profile-page-wizard-title").text("ADD " + policy["platform"] + " POLICY");
var deviceType = policy["platform"];
- var policyOperationsTemplateSrc = context + '/public/cdmf.unit.device.type.' + deviceType +
- '.policy-wizard/templates/' + deviceType + '-policy-operations.hbs';
- var policyOperationsScriptSrc = context + '/public/cdmf.unit.device.type.' + deviceType +
- '.policy-wizard/js/' + deviceType + '-policy-operations.js';
- var policyOperationsStylesSrc = context + '/public/cdmf.unit.device.type.' + deviceType +
- '.policy-wizard/css/' + deviceType + '-policy-operations.css';
+ var policyOperationsTemplateSrc = $(actionButton).data("template");
+ var policyOperationsScriptSrc = $(actionButton).data("script");
+ var policyOperationsStylesSrc = $(actionButton).data("style");
var policyOperationsTemplateCacheKey = deviceType + '-policy-operations';
- $.isResourceExists(policyOperationsTemplateSrc, function (status) {
- if (status) {
- $.template(policyOperationsTemplateCacheKey, policyOperationsTemplateSrc, function (template) {
- var content = template();
- $("#device-type-policy-operations").html(content).removeClass("hidden");
- $(".policy-platform").addClass("hidden");
- });
-
- $.isResourceExists(policyOperationsScriptSrc, function (status) {
- if (status) {
- var script = document.createElement('script');
- script.type = 'text/javascript';
- script.src = policyOperationsScriptSrc;
- $(".wr-advance-operations").prepend(script);
- }
- });
-
- $.isResourceExists(policyOperationsStylesSrc, function (status) {
- if (status) {
- var style = document.createElement('link');
- style.type = 'text/css';
- style.rel = 'stylesheet';
- style.href = policyOperationsStylesSrc;
- $(".wr-advance-operations").prepend(style);
- }
- });
- } else {
- $("#generic-policy-operations").removeClass("hidden");
- }
- $(".wr-advance-operations-init").addClass("hidden");
- });
+ if (policyOperationsTemplateSrc) {
+ $.template(policyOperationsTemplateCacheKey, context + policyOperationsTemplateSrc, function (template) {
+ var content = template();
+ $("#device-type-policy-operations").html(content).removeClass("hidden");
+ $(".policy-platform").addClass("hidden");
+ });
+ } else {
+ $("#generic-policy-operations").removeClass("hidden");
+ }
+ if (policyOperationsScriptSrc) {
+ var script = document.createElement('script');
+ script.type = 'text/javascript';
+ script.src = context + policyOperationsScriptSrc;
+ $(".wr-advance-operations").prepend(script);
+ hasPolicyProfileScript = true;
+ } else {
+ hasPolicyProfileScript = false;
+ }
+ if (policyOperationsStylesSrc) {
+ var style = document.createElement('link');
+ style.type = 'text/css';
+ style.rel = 'stylesheet';
+ style.href = context + policyOperationsStylesSrc;
+ $(".wr-advance-operations").prepend(style);
+ }
+ $(".wr-advance-operations-init").addClass("hidden");
};
/**
* Forward action of policy profile page. Generates policy profile payload.
*/
stepForwardFrom["policy-profile"] = function () {
- policy["profile"] = operationModule.generateProfile(policy["platform"], configuredOperations);
+ policy["profile"] = [];
+ if (hasPolicyProfileScript) {
+ /*
+ generatePolicyProfile() function should be implemented in plugin side and should include the logic to build the
+ policy profile object.
+ */
+ policy["profile"] = generatePolicyProfile();
+ }
// updating next-page wizard title with selected platform
$("#policy-criteria-page-wizard-title").text("ADD " + policy["platform"] + " POLICY");
};
@@ -193,8 +192,13 @@ stepForwardFrom["policy-profile"] = function () {
* Backward action of policy profile page. Moves back to platform selection step.
*/
stepBackFrom["policy-profile"] = function () {
- // reinitialize configuredOperations
- configuredOperations = [];
+ if (hasPolicyProfileScript) {
+ /*
+ resetPolicyProfile() function should be implemented in plugin side and should include the logic to reset the policy
+ profile object.
+ */
+ resetPolicyProfile();
+ }
};
/**
@@ -370,27 +374,26 @@ stepForwardFrom["policy-naming"] = function () {
};
var savePolicy = function (policy, isActive, serviceURL) {
- var profilePayloads = [];
- // traverses key by key in policy["profile"]
- var key;
- for (key in policy["profile"]) {
- if (policy["profile"].hasOwnProperty(key)) {
- profilePayloads.push({
- "featureCode": key,
- "deviceType": policy["platform"],
- "content": policy["profile"][key]
+ var profilePayloads;
+ if (hasPolicyProfileScript) {
+ /*
+ generateProfileFeaturesList() should be implemented in the plugin side and should include logic to build the
+ profilePayloads array which contains objects, {featureCode:"value", deviceType:"value", content:"value"}.
+ policy["profile"] object will be available for the method which returns from the generatePolicyProfile() function.
+ */
+ profilePayloads = generateProfileFeaturesList();
+
+ $.each(profilePayloads, function (i, item) {
+ $.each(item.content, function (key, value) {
+ //cannot add a true check since it will catch value = false as well
+ if (value === null || value === undefined || value === "") {
+ item.content[key] = null;
+ }
});
- }
- }
-
- $.each(profilePayloads, function (i, item) {
- $.each(item.content, function (key, value) {
- //cannot add a true check since it will catch value = false as well
- if (value === null || value === undefined || value === "") {
- item.content[key] = null;
- }
});
- });
+ } else {
+ profilePayloads = generateGenericPayload();
+ }
var payload = {
"policyName": policy["policyName"],
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.edit/public/js/policy-edit.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.edit/public/js/policy-edit.js
index ce37d8d6a94..f06ae437962 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.edit/public/js/policy-edit.js
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.edit/public/js/policy-edit.js
@@ -20,7 +20,6 @@ var validateStep = {};
var skipStep = {};
var stepForwardFrom = {};
var stepBackFrom = {};
-var configuredOperations = [];
var policy = {};
var currentlyEffected = {};
@@ -200,9 +199,11 @@ skipStep["policy-platform"] = function (policyPayloadObj) {
script.type = 'text/javascript';
script.src = policyOperationsScriptSrc;
$(".wr-advance-operations").prepend(script);
- var configuredOperations = operationModule.populateProfile(policy["platform"],
- policyPayloadObj["profile"]["profileFeaturesList"]);
- polulateProfileOperations(configuredOperations);
+ /*
+ This method should be implemented in the relevant plugin side and should include the logic to
+ populate the policy profile in the plugin specific UI.
+ */
+ polulateProfileOperations(policyPayloadObj["profile"]["profileFeaturesList"]);
}
});
});
@@ -227,7 +228,11 @@ skipStep["policy-platform"] = function (policyPayloadObj) {
* Forward action of policy profile page. Generates policy profile payload.
*/
stepForwardFrom["policy-profile"] = function () {
- policy["profile"] = operationModule.generateProfile(policy["platform"], configuredOperations);
+ /*
+ generatePolicyProfile() function should be implemented in plugin side and should include the logic to build the
+ policy profile object.
+ */
+ policy["profile"] = generatePolicyProfile();
// updating next-page wizard title with selected platform
$("#policy-criteria-page-wizard-title").text("EDIT " + policy["platform"] + " POLICY - " + policy["name"]);
};
@@ -415,19 +420,12 @@ var getParameterByName = function (name) {
};
var updatePolicy = function (policy, state) {
- var profilePayloads = [];
- // traverses key by key in policy["profile"]
- var key;
- for (key in policy["profile"]) {
-
- if (policy["profile"].hasOwnProperty(key)) {
- profilePayloads.push({
- "featureCode": key,
- "deviceType": policy["platform"],
- "content": policy["profile"][key]
- });
- }
- }
+ /*
+ generateProfileFeaturesList() should be implemented in the plugin side and should include logic to build the
+ profilePayloads array which contains objects, {featureCode:"value", deviceType:"value", content:"value"}.
+ policy["profile"] object will be available for the method which returns from the generatePolicyProfile() function.
+ */
+ var profilePayloads = generateProfileFeaturesList();
$.each(profilePayloads, function (i, item) {
$.each(item.content, function (key, value) {
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.view/public/js/view.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.view/public/js/view.js
index b7bea7684f9..2d045b864fa 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.view/public/js/view.js
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.view/public/js/view.js
@@ -86,9 +86,11 @@ var displayPolicy = function (policyPayloadObj) {
script.type = 'text/javascript';
script.src = policyOperationsScriptSrc;
$(".wr-advance-operations").prepend(script);
- var previouslyConfiguredOperations = operationModule.populateProfile(policy["platform"],
- policyPayloadObj["profile"]["profileFeaturesList"]);
- polulateProfileOperations(previouslyConfiguredOperations);
+ /*
+ This method should be implemented in the relevant plugin side and should include the logic to
+ populate the policy profile in the plugin specific UI.
+ */
+ polulateProfileOperations(policyPayloadObj["profile"]["profileFeaturesList"]);
}
});
});
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.wizard/public/js/policy-create.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.wizard/public/js/policy-create.js
deleted file mode 100644
index fd2bf3ff4f5..00000000000
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.wizard/public/js/policy-create.js
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- *
- * WSO2 Inc. licenses this file to you under the Apache License,
- * Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
- * either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-var validateStep = {};
-var stepForwardFrom = {};
-var stepBackFrom = {};
-var policy = {};
-var configuredOperations = [];
-var validateInline = {};
-var clearInline = {};
-
-var enableInlineError = function (inputField, errorMsg, errorSign) {
- var fieldIdentifier = "#" + inputField;
- var errorMsgIdentifier = "#" + inputField + " ." + errorMsg;
- var errorSignIdentifier = "#" + inputField + " ." + errorSign;
-
- if (inputField) {
- $(fieldIdentifier).addClass(" has-error has-feedback");
- }
-
- if (errorMsg) {
- $(errorMsgIdentifier).removeClass(" hidden");
- }
-
- if (errorSign) {
- $(errorSignIdentifier).removeClass(" hidden");
- }
-};
-
-var disableInlineError = function (inputField, errorMsg, errorSign) {
- var fieldIdentifier = "#" + inputField;
- var errorMsgIdentifier = "#" + inputField + " ." + errorMsg;
- var errorSignIdentifier = "#" + inputField + " ." + errorSign;
-
- if (inputField) {
- $(fieldIdentifier).removeClass(" has-error has-feedback");
- }
-
- if (errorMsg) {
- $(errorMsgIdentifier).addClass(" hidden");
- }
-
- if (errorSign) {
- $(errorSignIdentifier).addClass(" hidden");
- }
-};
-
-/**
- *clear inline validation messages.
- */
-clearInline["policy-name"] = function () {
- disableInlineError("policyNameField", "nameEmpty", "nameError");
-};
-
-
-/**
- * Validate if provided policy name is valid against RegEx configures.
- */
-validateInline["policy-name"] = function () {
- var policyName = $("input#policy-name-input").val();
- if (policyName && inputIsValidAgainstLength(policyName, 1, 30)) {
- disableInlineError("policyNameField", "nameEmpty", "nameError");
- } else {
- enableInlineError("policyNameField", "nameEmpty", "nameError");
- }
-};
-
-$("#policy-name-input").focus(function(){
- clearInline["policy-name"]();
-}).blur(function(){
- validateInline["policy-name"]();
-});
-
-stepForwardFrom["policy-platform"] = function (actionButton) {
- policy["platform"] = $(actionButton).data("platform");
- policy["platformId"] = $(actionButton).data("platform-type");
- // updating next-page wizard title with selected platform
- $("#policy-profile-page-wizard-title").text("ADD " + policy["platform"] + " POLICY");
-
- var deviceType = policy["platform"];
- var policyOperationsTemplateSrc = context + '/public/cdmf.unit.device.type.' + deviceType +
- '.policy-wizard/templates/' + deviceType + '-policy-operations.hbs';
- var policyOperationsScriptSrc = context + '/public/cdmf.unit.device.type.' + deviceType +
- '.policy-wizard/js/' + deviceType + '-policy-operations.js';
- var policyOperationsStylesSrc = context + '/public/cdmf.unit.device.type.' + deviceType +
- '.policy-wizard/css/' + deviceType + '-policy-operations.css';
- var policyOperationsTemplateCacheKey = deviceType + '-policy-operations';
-
- $.isResourceExists(policyOperationsTemplateSrc, function (status) {
- if (status) {
- $.template(policyOperationsTemplateCacheKey, policyOperationsTemplateSrc, function (template) {
- var content = template();
- $(".wr-advance-operations").html(content);
- $(".policy-platform").addClass("hidden");
- });
- }
- });
-
- $.isResourceExists(policyOperationsScriptSrc, function (status) {
- if (status) {
- var script = document.createElement('script');
- script.type = 'text/javascript';
- script.src = policyOperationsScriptSrc;
- $(".wr-advance-operations").prepend(script);
- }
- });
-
- $.isResourceExists(policyOperationsStylesSrc, function (status) {
- if (status) {
- var style = document.createElement('link');
- style.type = 'text/css';
- style.rel = 'stylesheet';
- style.href = policyOperationsStylesSrc;
- $(".wr-advance-operations").prepend(style);
- }
- });
-};
-
-stepForwardFrom["policy-profile"] = function () {
- policy["profile"] = operationModule.generateProfile(policy["platform"], configuredOperations);
- // updating next-page wizard title with selected platform
- $("#policy-criteria-page-wizard-title").text("ADD " + policy["platform"] + " POLICY");
-};
-
-stepBackFrom["policy-profile"] = function () {
- // reinitialize configuredOperations
- configuredOperations = [];
- // clearing already-loaded platform specific hidden-operations html content from the relevant div
- // so that, the wrong content would not be shown at the first glance, in case
- // the user selects a different platform
- $(".wr-advance-operations").html(
- "
"
- );
-};
-
-stepForwardFrom["policy-criteria"] = function () {
- $("input[type='radio'].select-users-radio").each(function () {
- if ($(this).is(':radio')) {
- if ($(this).is(":checked")) {
- if ($(this).attr("id") == "users-radio-btn") {
- policy["selectedUsers"] = $("#users-input").val();
- policy["selectedUserRoles"] = null;
- } else if ($(this).attr("id") == "user-roles-radio-btn") {
- policy["selectedUsers"] = null;
- policy["selectedUserRoles"] = $("#user-roles-input").val();
- }
- }
- }
- });
- policy["selectedNonCompliantAction"] = $("#action-input").find(":selected").data("action");
- policy["selectedOwnership"] = $("#ownership-input").val();
- //updating next-page wizard title with selected platform
- $("#policy-naming-page-wizard-title").text("ADD " + policy["platform"] + " POLICY");
-};
-
-/**
- * Checks if provided input is valid against provided length range.
- *
- * @param input Alphanumeric or non-alphanumeric input
- * @param minLength Minimum Required Length
- * @param maxLength Maximum Required Length
- * @returns {boolean} Returns true if input matches the provided minimum length and maximum length
- */
-var inputIsValidAgainstLength = function (input, minLength, maxLength) {
- var length = input.length;
- return (length == minLength || (length > minLength && length < maxLength) || length == maxLength);
-};
-
-validateStep["policy-criteria"] = function () {
- var validationStatus = {};
- var selectedAssignees;
- var selectedField = "Role(s)";
-
- $("input[type='radio'].select-users-radio").each(function () {
- if ($(this).is(":checked")) {
- if ($(this).attr("id") == "users-radio-btn") {
- selectedAssignees = $("#users-input").val();
- selectedField = "User(s)";
- } else if ($(this).attr("id") == "user-roles-radio-btn") {
- selectedAssignees = $("#user-roles-input").val();
- }
- return false;
- }
- });
-
- if (selectedAssignees) {
- validationStatus["error"] = false;
- } else {
- validationStatus["error"] = true;
- validationStatus["mainErrorMsg"] = selectedField + " is a required field. It cannot be empty";
- }
-
- var wizardIsToBeContinued;
- if (validationStatus["error"]) {
- wizardIsToBeContinued = false;
- var mainErrorMsgWrapper = "#policy-criteria-main-error-msg";
- var mainErrorMsg = mainErrorMsgWrapper + " span";
- $(mainErrorMsg).text(validationStatus["mainErrorMsg"]);
- $(mainErrorMsgWrapper).removeClass("hidden");
- } else {
- wizardIsToBeContinued = true;
- }
-
- return wizardIsToBeContinued;
-};
-
-validateStep["policy-naming"] = function () {
- var validationStatus = {};
-
- // taking values of inputs to be validated
- var policyName = $("input#policy-name-input").val();
- // starting validation process and updating validationStatus
- if (!policyName) {
- validationStatus["error"] = true;
- validationStatus["mainErrorMsg"] = "Policy name is empty. You cannot proceed.";
- } else if (!inputIsValidAgainstLength(policyName, 1, 30)) {
- validationStatus["error"] = true;
- validationStatus["mainErrorMsg"] =
- "Policy name exceeds maximum allowed length.";
- } else {
- validationStatus["error"] = false;
- }
- // ending validation process
-
- // start taking specific actions upon validation
- var wizardIsToBeContinued;
- if (validationStatus["error"]) {
- wizardIsToBeContinued = false;
- var mainErrorMsgWrapper = "#policy-naming-main-error-msg";
- var mainErrorMsg = mainErrorMsgWrapper + " span";
- $(mainErrorMsg).text(validationStatus["mainErrorMsg"]);
- $(mainErrorMsgWrapper).removeClass("hidden");
- } else {
- wizardIsToBeContinued = true;
- }
-
- return wizardIsToBeContinued;
-};
-
-validateStep["policy-platform"] = function () {
- return false;
-};
-
-validateStep["policy-naming-publish"] = function () {
- var validationStatus = {};
-
- // taking values of inputs to be validated
- var policyName = $("input#policy-name-input").val();
- // starting validation process and updating validationStatus
- if (!policyName) {
- validationStatus["error"] = true;
- validationStatus["mainErrorMsg"] = "Policy name is empty. You cannot proceed.";
- } else if (!inputIsValidAgainstLength(policyName, 1, 30)) {
- validationStatus["error"] = true;
- validationStatus["mainErrorMsg"] =
- "Policy name exceeds maximum allowed length.";
- } else {
- validationStatus["error"] = false;
- }
- // ending validation process
-
- // start taking specific actions upon validation
- var wizardIsToBeContinued;
- if (validationStatus["error"]) {
- wizardIsToBeContinued = false;
- var mainErrorMsgWrapper = "#policy-naming-main-error-msg";
- var mainErrorMsg = mainErrorMsgWrapper + " span";
- $(mainErrorMsg).text(validationStatus["mainErrorMsg"]);
- $(mainErrorMsgWrapper).removeClass("hidden");
- } else {
- wizardIsToBeContinued = true;
- }
-
- return wizardIsToBeContinued;
-};
-
-stepForwardFrom["policy-naming-publish"] = function () {
- policy["policyName"] = $("#policy-name-input").val();
- policy["description"] = $("#policy-description-input").val();
- //All data is collected. Policy can now be updated.
- savePolicy(policy, true, "/api/device-mgt/v1.0/policies/");
-};
-
-stepForwardFrom["policy-naming"] = function () {
- policy["policyName"] = $("#policy-name-input").val();
- policy["description"] = $("#policy-description-input").val();
- //All data is collected. Policy can now be updated.
- savePolicy(policy, false, "/api/device-mgt/v1.0/policies/");
-};
-
-var savePolicy = function (policy, isActive, serviceURL) {
- var profilePayloads = [];
- // traverses key by key in policy["profile"]
- var key;
- for (key in policy["profile"]) {
- if (policy["profile"].hasOwnProperty(key)) {
- profilePayloads.push({
- "featureCode": key,
- "deviceType": policy["platform"],
- "content": policy["profile"][key]
- });
- }
- }
-
- $.each(profilePayloads, function (i, item) {
- $.each(item.content, function (key, value) {
- //cannot add a true check since it will catch value = false as well
- if (value === null || value === undefined || value === "") {
- item.content[key] = null;
- }
- });
- });
-
- var payload = {
- "policyName": policy["policyName"],
- "description": policy["description"],
- "compliance": policy["selectedNonCompliantAction"],
- "ownershipType": policy["selectedOwnership"],
- "active": isActive,
- "profile": {
- "profileName": policy["policyName"],
- "deviceType": policy["platform"],
- "profileFeaturesList": profilePayloads
- }
- };
-
- if (policy["selectedUsers"]) {
- payload["users"] = policy["selectedUsers"];
- } else if (policy["selectedUserRoles"]) {
- payload["roles"] = policy["selectedUserRoles"];
- } else {
- payload["users"] = [];
- payload["roles"] = [];
- }
-
- invokerUtil.post(
- serviceURL,
- payload,
- function () {
- $(".add-policy").addClass("hidden");
- $(".policy-naming").addClass("hidden");
- $(".policy-message").removeClass("hidden");
- },
- function (data) {
- }
- );
-};
-
-function formatRepo(user) {
- if (user.loading) {
- return user.text;
- }
- if (!user.username) {
- return;
- }
- var markup = '
' +
- '
' +
- '
' +
- '
' + user.username + '
';
- if (user.firstname) {
- markup += '
' + user.firstname + '
';
- }
- if (user.emailAddress) {
- markup += '
' + user.emailAddress + '
';
- }
- markup += '
';
- return markup;
-}
-
-function formatRepoSelection(user) {
- return user.username || user.text;
-}
-
-// End of functions related to grid-input-view
-
-
-$(document).ready(function () {
- $("#users-input").select2({
- multiple: true,
- tags: false,
- ajax: {
- url: context + "/api/invoker/execute/",
- method: "POST",
- dataType: 'json',
- delay: 250,
- id: function (user) {
- return user.username;
- },
- data: function (params) {
- var postData = {};
- postData.requestMethod = "GET";
- postData.requestURL = "/api/device-mgt/v1.0/users/search/usernames?filter=" + params.term;
- postData.requestPayload = null;
- return JSON.stringify(postData);
- },
- processResults: function (data) {
- var newData = [];
- $.each(data, function (index, value) {
- value.id = value.username;
- newData.push(value);
- });
- return {
- results: newData
- };
- },
- cache: true
- },
- escapeMarkup: function (markup) {
- return markup;
- }, // let our custom formatter work
- minimumInputLength: 1,
- templateResult: formatRepo, // omitted for brevity, see the source of this page
- templateSelection: formatRepoSelection // omitted for brevity, see the source of this page
- });
-
- $("#loading-content").remove();
- $(".policy-platform").removeClass("hidden");
- // Adding initial state of wizard-steps.
- $("#policy-platform-wizard-steps").html($(".wr-steps").html());
-
- $("select.select2[multiple=multiple]").select2({
- "tags": false
- });
-
- $("#users-select-field").hide();
- $("#user-roles-select-field").show();
-
- $("input[type='radio'].select-users-radio").change(function () {
- if ($("#users-radio-btn").is(":checked")) {
- $("#user-roles-select-field").hide();
- $("#users-select-field").show();
- }
- if ($("#user-roles-radio-btn").is(":checked")) {
- $("#users-select-field").hide();
- $("#user-roles-select-field").show();
- }
- });
-
- // Support for special input type "ANY" on user(s) & user-role(s) selection
- $("#user-roles-input").select2({
- "tags": false
- }).on("select2:select", function (e) {
- if (e.params.data.id == "ANY") {
- $(this).val("ANY").trigger("change");
- } else {
- $("option[value=ANY]", this).prop("selected", false).parent().trigger("change");
- }
- });
-
- //Policy wizard stepper
- $(".wizard-stepper").click(function () {
- // button clicked here can be either a continue button or a back button.
- var currentStep = $(this).data("current");
- var validationIsRequired = $(this).data("validate");
- var wizardIsToBeContinued;
-
- if (validationIsRequired) {
- wizardIsToBeContinued = validateStep[currentStep]();
- } else {
- wizardIsToBeContinued = true;
- }
-
- if (wizardIsToBeContinued) {
- // When moving back and forth, following code segment will
- // remove if there are any visible error-messages.
- var errorMsgWrappers = ".alert.alert-danger";
- $(errorMsgWrappers).each(
- function () {
- if (!$(this).hasClass("hidden")) {
- $(this).addClass("hidden");
- }
- }
- );
-
- var nextStep = $(this).data("next");
- var isBackBtn = $(this).data("is-back-btn");
-
- // if current button is a continuation...
- if (!isBackBtn) {
- // initiate stepForwardFrom[*] functions to gather form data.
- if (stepForwardFrom[currentStep]) {
- stepForwardFrom[currentStep](this);
- }
- } else {
- // initiate stepBackFrom[*] functions to rollback.
- if (stepBackFrom[currentStep]) {
- stepBackFrom[currentStep]();
- }
- }
-
- // following step occurs only at the last stage of the wizard.
- if (!nextStep) {
- window.location.href = $(this).data("direct");
- }
-
- // updating next wizard step as current.
- $(".itm-wiz").each(function () {
- var step = $(this).data("step");
- if (step == nextStep) {
- $(this).addClass("itm-wiz-current");
- } else {
- $(this).removeClass("itm-wiz-current");
- }
- });
-
- // adding next update of wizard-steps.
- $("#" + nextStep + "-wizard-steps").html($(".wr-steps").html());
-
- // hiding current section of the wizard and showing next section.
- $("." + currentStep).addClass("hidden");
- $("." + nextStep).removeClass("hidden");
- }
- });
-});
\ No newline at end of file
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.wizard/wizard.hbs b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.wizard/wizard.hbs
deleted file mode 100644
index 02f7bc76cf6..00000000000
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.wizard/wizard.hbs
+++ /dev/null
@@ -1,244 +0,0 @@
-
-
-
-
-
-
Policy creation is
- successful.
- Please click "Add Another Policy", if you wish to add another policy or
- click
- "View policy list" to complete the process and go back to the policy list.
-
-
-
-
-
-
-
- Add another policy
-
-
-{{#zone "bottomJs"}}
- {{js "js/policy-create.js"}}
-{{/zone}}
\ No newline at end of file
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.wizard/wizard.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.wizard/wizard.js
deleted file mode 100644
index c3cb1ea3b84..00000000000
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.wizard/wizard.js
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
- *
- * WSO2 Inc. licenses this file to you under the Apache License,
- * Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-function onRequest(context) {
- // var log = new Log("wizard.js");
- var constants = require("/app/modules/constants.js");
- var DTYPE_CONF_DEVICE_TYPE_KEY = "deviceType";
- var DTYPE_CONF_DEVICE_TYPE_LABEL_KEY = "label";
-
- var userModule = require("/app/modules/business-controllers/user.js")["userModule"];
- var utility = require('/app/modules/utility.js').utility;
- var response = userModule.getRoles();
- var wizardPage = {};
- if (response["status"] == "success") {
- wizardPage["roles"] = response["content"];
- }
- var deviceType = context.uriParams.deviceType;
- var typesListResponse = userModule.getPlatforms();
- if (typesListResponse["status"] == "success") {
- wizardPage["type"] = {};
- for (var type in typesListResponse["content"]["deviceTypes"]) {
- if (deviceType == typesListResponse["content"]["deviceTypes"][type]) {
- wizardPage["type"]["name"] = deviceType;
- wizardPage["type"]["label"] = deviceType;
- }
- }
- }
- var user = session.get(constants.USER_SESSION_KEY);
- wizardPage.username = user.username;
- wizardPage.permissions = userModule.getUIPermissions();
- return wizardPage;
-}
\ No newline at end of file
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.wizard/wizard.json b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.wizard/wizard.json
deleted file mode 100644
index fd259012978..00000000000
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.policy.wizard/wizard.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "version" : "1.0.0"
-}
\ No newline at end of file
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.header.user-menu/user-menu.hbs b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.header.user-menu/user-menu.hbs
index 8d8e73dbb1f..f426b8d9cbe 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.header.user-menu/user-menu.hbs
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.ui.header.user-menu/user-menu.hbs
@@ -67,20 +67,20 @@
Type your current password *