+ Please click "Add Another Role", if you wish to add another role or click
+ "View Role List" to complete the process and go back to the role list.
+
+
+
+
+
+
+
+
+ Add Another Role
+
+
+
+
+
+
+
+
+{{/zone}}
+{{#zone "bottomJs"}}
+ {{js "js/bottomJs.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.role.create/create.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.role.create/create.js
similarity index 68%
rename from components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.role.create/create.js
rename to components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.role.create/create.js
index a65fa31e257..909a3ee3038 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.role.create/create.js
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.role.create/create.js
@@ -25,14 +25,11 @@
function onRequest(context) {
var userModule = require("/app/modules/business-controllers/user.js")["userModule"];
var deviceMgtProps = require("/app/modules/conf-reader/main.js")["conf"];
- var response = userModule.getRoles();
- if (response["status"] == "success") {
- context["roles"] = response["content"];
- }
- var userStores = userModule.getSecondaryUserStores();
- context["userStores"] = userStores;
- context["roleNameJSRegEx"] = deviceMgtProps.roleValidationConfig.rolenameJSRegEx;
- context["roleNameHelpText"] = deviceMgtProps.roleValidationConfig.rolenameHelpMsg;
- context["roleNameRegExViolationErrorMsg"] = deviceMgtProps.roleValidationConfig.rolenameRegExViolationErrorMsg;
+
+ context["userStores"] = userModule.getSecondaryUserStores();
+ context["roleNameJSRegEx"] = deviceMgtProps["roleValidationConfig"]["roleNameJSRegEx"];
+ context["roleNameHelpText"] = deviceMgtProps["roleValidationConfig"]["roleNameHelpMsg"];
+ context["roleNameRegExViolationErrorMsg"] = deviceMgtProps["roleValidationConfig"]["roleNameRegExViolationErrorMsg"];
+
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.role.create/create.json b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.role.create/create.json
index e54dc5f2af2..adab2be0f6f 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.role.create/create.json
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.role.create/create.json
@@ -1,5 +1,5 @@
{
"version": "1.0.0",
- "uri": "/roles/add-role",
+ "uri": "/role/add",
"layout": "cdmf.layout.default"
}
\ 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.role.create/public/js/bottomJs.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.role.create/public/js/bottomJs.js
similarity index 69%
rename from components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.role.create/public/js/bottomJs.js
rename to components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.role.create/public/js/bottomJs.js
index 5a7d7eb304a..013402bf841 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.role.create/public/js/bottomJs.js
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.role.create/public/js/bottomJs.js
@@ -73,19 +73,19 @@ var disableInlineError = function (inputField, errorMsg, errorSign) {
*clear inline validation messages.
*/
clearInline["role-name"] = function () {
- disableInlineError("roleNameField", "rolenameEmpty", "rolenameError");
+ disableInlineError("roleNameField", "roleNameEmpty", "roleNameError");
};
/**
- * Validate if provided rolename is valid against RegEx configures.
+ * Validate if provided role-name is valid against RegEx configures.
*/
validateInline["role-name"] = function () {
- var rolenameinput = $("input#rolename");
- if (inputIsValid( rolenameinput.data("regex"), rolenameinput.val())) {
- disableInlineError("roleNameField", "rolenameEmpty", "rolenameError");
+ var roleNameInput = $("input#roleName");
+ if (inputIsValid( roleNameInput.data("regex"), roleNameInput.val())) {
+ disableInlineError("roleNameField", "roleNameEmpty", "roleNameError");
} else {
- enableInlineError("roleNameField", "rolenameEmpty", "rolenameError");
+ enableInlineError("roleNameField", "roleNameEmpty", "roleNameError");
}
};
@@ -97,16 +97,16 @@ function formatRepo (user) {
return;
}
var markup = '
' +
- '
' +
+ '
' +
'
' +
- '
' + user.username + '
';
- if (user.firstname) {
- markup += '
' + user.firstname + '
';
+ '
User : ' + user.username + '
';
+ if (user.name) {
+ markup += '
' + user.name + '
';
}
if (user.emailAddress) {
- markup += '
' + user.emailAddress + '
';
+ markup += '
' + user.emailAddress + '
';
}
- markup += '
';
+ markup += '
';
return markup;
}
@@ -129,17 +129,19 @@ $(document).ready(function () {
},
data: function (params) {
var postData = {};
- postData.actionMethod = "GET";
- postData.actionUrl = apiBasePath + "/users/search/usernames?filter=" + params.term;
- postData.actionPayload = null;
+ 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, page) {
+ processResults: function (data) {
var newData = [];
$.each(data, function (index, value) {
var user = {};
- user.username = value.username;
user.id = value.username;
+ user.username = value.username;
+ user.name = value.firstname + " " + value.lastname;
+ user.emailAddress = value.emailAddress;
newData.push(user);
});
return {
@@ -159,10 +161,10 @@ $(document).ready(function () {
* when a user clicks on "Add Role" button
* on Add Role page in WSO2 MDM Console.
*/
- $("button#add-role-btn").click(function() {
- var rolenameInput = $("input#rolename");
- var roleName = rolenameInput.val();
+ $("button#add-role-btn").click(function () {
var domain = $("#domain").val();
+ var roleNameInput = $("input#roleName");
+ var roleName = roleNameInput.val();
var users = $("#users").val();
var errorMsgWrapper = "#role-create-error-msg";
@@ -170,8 +172,8 @@ $(document).ready(function () {
if (!roleName) {
$(errorMsg).text("Role name is a required field. It cannot be empty.");
$(errorMsgWrapper).removeClass("hidden");
- } else if (!inputIsValid(rolenameInput.data("regex"), roleName)) {
- $(errorMsg).text(rolenameInput.data("errormsg"));
+ } else if (!inputIsValid(roleNameInput.data("regex"), roleName)) {
+ $(errorMsg).text(roleNameInput.data("error-msg"));
$(errorMsgWrapper).removeClass("hidden");
} else if (!domain) {
$(errorMsg).text("Domain is a required field. It cannot be empty.");
@@ -181,13 +183,11 @@ $(document).ready(function () {
$(errorMsgWrapper).removeClass("hidden");
} else {
var addRoleFormData = {};
-
addRoleFormData.roleName = roleName;
-
if (domain != "PRIMARY"){
addRoleFormData.roleName = domain + "/" + roleName;
}
- if (users == null){
+ if (users == null) {
users = [];
}
addRoleFormData.users = users;
@@ -197,37 +197,31 @@ $(document).ready(function () {
invokerUtil.post(
addRoleAPI,
addRoleFormData,
- function (data) {
- data = JSON.parse(data);
- if (data.errorMessage) {
- $(errorMsg).text("Selected user store prompted an error : " + data.errorMessage);
- $(errorMsgWrapper).removeClass("hidden");
- } else {
+ function (data, textStatus, jqXHR) {
+ if (jqXHR.status == 201) {
// Clearing user input fields.
- //$("input#rolename").val("");
- //$("#domain").val("");
- //// Refreshing with success message
- //$("#role-create-form").addClass("hidden");
- //$("#role-created-msg").removeClass("hidden");
- window.location.href = appContext + '/role/edit-permission/' + roleName;
+ $("input#roleName").val("");
+ $("#domain").val("PRIMARY");
+ $("#users").val("");
+ window.location.href = appContext + "/role/edit-permission/" + roleName;
}
- }, function (data) {
- if (JSON.parse(data).errorMessage.indexOf("RoleExisting") > -1) {
- $(errorMsg).text("Role name : " + roleName + " already exists. Pick another role name.");
- } else {
- $(errorMsg).text(JSON.parse(data.responseText).errorMessage);
+ },
+ function (jqXHR) {
+ if (jqXHR.status == 500) {
+ $(errorMsg).text("Either role already exists or unexpected error.");
+ $(errorMsgWrapper).removeClass("hidden");
}
- $(errorMsgWrapper).removeClass("hidden");
}
);
}
});
- $("#rolename").focus(function() {
+ var roleNameInputElement = "#roleName";
+ $(roleNameInputElement).focus(function() {
clearInline["role-name"]();
});
- $("#rolename").blur(function() {
+ $(roleNameInputElement).blur(function() {
validateInline["role-name"]();
});
});
\ 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.role.edit/edit.hbs b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.role.edit/edit.hbs
index cdf32d98844..d1c488dbef6 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.role.edit/edit.hbs
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.role.edit/edit.hbs
@@ -26,6 +26,7 @@
+
Roles
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.role.listing/public/js/role-listing.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.roles/public/js/role-listing.js
similarity index 50%
rename from components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.role.listing/public/js/role-listing.js
rename to components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.roles/public/js/role-listing.js
index afeb0a393ec..15ce9a1b483 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.role.listing/public/js/role-listing.js
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.roles/public/js/role-listing.js
@@ -1,26 +1,67 @@
/*
- * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * 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
+ * "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 loadRoleBasedActionURL = function (action, rolename) {
var href = $("#ast-container").data("app-context") + "role/" + action + "/" + rolename;
$(location).attr('href', href);
};
+$(function () {
+ var sortableElem = '.wr-sortable';
+ $(sortableElem).sortable({
+ beforeStop: function () {
+ $(this).sortable('toArray');
+ }
+ });
+ $(sortableElem).disableSelection();
+});
+
var apiBasePath = "/api/device-mgt/v1.0";
+var modalPopup = ".wr-modalpopup";
+var modalPopupContainer = modalPopup + " .modalpopup-container";
+var modalPopupContent = modalPopup + " .modalpopup-content";
+var body = "body";
+$(".icon .text").res_text(0.2);
+
+
+/*
+ * set popup maximum height function.
+ */
+function setPopupMaxHeight() {
+ $(modalPopupContent).css('max-height', ($(body).height() - ($(body).height() / 100 * 30)));
+ $(modalPopupContainer).css('margin-top', (-($(modalPopupContainer).height() / 2)));
+}
+
+/*
+ * show popup function.
+ */
+function showPopup() {
+ $(modalPopup).show();
+ setPopupMaxHeight();
+}
+
+/*
+ * hide popup function.
+ */
+function hidePopup() {
+ $(modalPopupContent).html('');
+ $(modalPopup).hide();
+}
/**
* Following function would execute
@@ -31,103 +72,96 @@ function InitiateViewOption() {
$(location).attr('href', $(this).data("url"));
}
-/**
- * Sorting function of roles
- * listed on Role Management page in WSO2 Devicemgt Console.
- */
-
-var loadPaginatedObjects = function (objectGridId, objectGridContainer, objectGridTemplateSrc, serviceURL, callback) {
- var templateSrc = $(objectGridTemplateSrc).attr("src");
- $.template(objectGridId, templateSrc, function (template) {
- invokerUtil.get(serviceURL,
- function (data) {
- data = callback(data);
- if (data.length > 0 && data != null) {
- $('#ast-container').removeClass('hidden');
- $('#role-listing-status').hide();
- for (var i = 0; i < data.viewModel.roles.length; i++) {
- data.viewModel.roles[i].adminRole = $("#role-table").data("role");
- }
- var content = template(data.viewModel);
- $(objectGridContainer).html(content);
- if (isInit) {
- $('#role-grid').datatables_extended_serverside_paging();
- isInit = false;
- }
- $("#dt-select-all").addClass("hidden");
- $(".icon .text").res_text(0.2);
- } else {
- $('#ast-container').addClass('hidden');
- $('#role-listing-status-msg').text('No roles are available to be displayed.');
- $('#role-listing-status').show();
- }
-
- //$(objectGridId).datatables_extended();
- }, function (message) {
- $('#ast-container').addClass('hidden');
- $('#role-listing-status-msg').text('Invalid search query. Try again with a valid search ' +
- 'query');
- $('#role-listing-status').show();
- });
- });
-};
-
-function loadRoles(searchQuery) {
+function loadRoles() {
var loadingContent = $("#loading-content");
loadingContent.show();
- var dataFilter = function(data){
+ var dataFilter = function (data) {
data = JSON.parse(data);
var objects = [];
$(data.roles).each(function( index ) {
- objects.push({name: data.roles[index], DT_RowId : "role-" + data.roles[index]})
+ objects.push(
+ {
+ name: data.roles[index],
+ DT_RowId: "role-" + data.roles[index]
+ }
+ )
});
- json = {
+ var json = {
"recordsTotal": data.count,
"recordsFiltered": data.count,
"data": objects
};
- return JSON.stringify( json );
- }
+ return JSON.stringify(json);
+ };
- var fnCreatedRow = function( nRow, aData, iDataIndex ) {
+ //noinspection JSUnusedLocalSymbols
+ var fnCreatedRow = function (nRow, aData, iDataIndex) {
$(nRow).attr('data-type', 'selectable');
- }
+ };
+ //noinspection JSUnusedLocalSymbols
var columns = [
{
class: "remove-padding icon-only content-fill",
data: null,
- defaultContent: '
-
-{{#zone "bottomJs"}}
- {{js "js/bottomJs.js"}}
-{{/zone}}
-
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.role.create/create.json b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.role.create/create.json
deleted file mode 100644
index 9eecd8f5bf8..00000000000
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.role.create/create.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.role.edit/edit.hbs b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.role.edit/edit.hbs
index 249e35a6e3e..281f5ea350f 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.role.edit/edit.hbs
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.role.edit/edit.hbs
@@ -31,11 +31,8 @@
-
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.role.edit/edit.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.role.edit/edit.js
index cf54af034e5..ac21d0b696f 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.role.edit/edit.js
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.role.edit/edit.js
@@ -18,30 +18,38 @@
/**
* 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 userModule = require("/app/modules/business-controllers/user.js")["userModule"];
var deviceMgtProps = require("/app/modules/conf-reader/main.js")["conf"];
+
var uri = request.getRequestURI();
var uriMatcher = new URIMatcher(String(uri));
- var isMatched = uriMatcher.match("/{context}/role/edit/{rolename}");
+ var isMatched = uriMatcher.match("/{context}/role/edit/{roleName}");
if (isMatched) {
var matchedElements = uriMatcher.elements();
- var roleName = matchedElements.rolename;
+ var roleName = matchedElements["roleName"];
var response = userModule.getRole(roleName);
if (response["status"] == "success") {
context["role"] = response["content"];
}
- var userStores = userModule.getSecondaryUserStores();
- context["userStores"] = userStores;
+ var userStore;
+ if (roleName.indexOf("/") > -1) {
+ userStore = roleName.substring(0, roleName.indexOf("/"));
+ } else {
+ userStore = "PRIMARY";
+ }
+ context["userStore"] = userStore;
+ context["roleNameJSRegEx"] = deviceMgtProps["roleValidationConfig"]["roleNameJSRegEx"];
+ context["roleNameHelpText"] = deviceMgtProps["roleValidationConfig"]["roleNameHelpMsg"];
+ context["roleNameRegExViolationErrorMsg"] = deviceMgtProps["roleValidationConfig"]["roleNameRegExViolationErrorMsg"];
+ return context;
+ } else {
+ //TODO: handle error scenario
+ return context;
}
- //TODO: error scenario
- context["roleNameJSRegEx"] = deviceMgtProps.roleValidationConfig.rolenameJSRegEx;
- context["roleNameHelpText"] = deviceMgtProps.roleValidationConfig.rolenameHelpMsg;
- context["roleNameRegExViolationErrorMsg"] = deviceMgtProps.roleValidationConfig.rolenameRegExViolationErrorMsg;
- 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/units/cdmf.unit.role.listing/listing.hbs b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.role.listing/listing.hbs
deleted file mode 100644
index acf56f79638..00000000000
--- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.role.listing/listing.hbs
+++ /dev/null
@@ -1,129 +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.
-}}
-