mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Resolving conflicts
This commit is contained in:
commit
9fde8c0442
@ -374,7 +374,7 @@ public interface PolicyManagementService {
|
|||||||
required = true)
|
required = true)
|
||||||
List<Integer> policyIds);
|
List<Integer> policyIds);
|
||||||
|
|
||||||
@POST
|
@PUT
|
||||||
@Path("/deactivate-policy")
|
@Path("/deactivate-policy")
|
||||||
@ApiOperation(
|
@ApiOperation(
|
||||||
consumes = MediaType.APPLICATION_JSON,
|
consumes = MediaType.APPLICATION_JSON,
|
||||||
|
|||||||
@ -150,6 +150,9 @@ public class Application implements Serializable {
|
|||||||
if (applicationIdentifier != null ? !applicationIdentifier.equals(that.applicationIdentifier) : that.applicationIdentifier != null) {
|
if (applicationIdentifier != null ? !applicationIdentifier.equals(that.applicationIdentifier) : that.applicationIdentifier != null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (version != null ? !version.equals(that.version) : that.version != null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -217,13 +217,14 @@ public class ApplicationManagerProviderServiceImpl implements ApplicationManagem
|
|||||||
appIdsToRemove.add(installedApp.getId());
|
appIdsToRemove.add(installedApp.getId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
applicationMappingDAO.removeApplicationMapping(device.getId(), appIdsToRemove, tenantId);
|
||||||
Application installedApp;
|
Application installedApp;
|
||||||
List<Integer> applicationIds = new ArrayList<>();
|
List<Integer> applicationIds = new ArrayList<>();
|
||||||
|
|
||||||
for (Application application : applications) {
|
for (Application application : applications) {
|
||||||
if (!installedAppList.contains(application)) {
|
if (!installedAppList.contains(application)) {
|
||||||
installedApp = applicationDAO.getApplication(application.getApplicationIdentifier(), tenantId);
|
installedApp = applicationDAO.getApplication(application.getApplicationIdentifier(),
|
||||||
|
application.getVersion(), tenantId);
|
||||||
if (installedApp == null) {
|
if (installedApp == null) {
|
||||||
appsToAdd.add(application);
|
appsToAdd.add(application);
|
||||||
} else {
|
} else {
|
||||||
@ -244,7 +245,7 @@ public class ApplicationManagerProviderServiceImpl implements ApplicationManagem
|
|||||||
if (log.isDebugEnabled()) {
|
if (log.isDebugEnabled()) {
|
||||||
log.debug("num of remove app Ids:" + appIdsToRemove.size());
|
log.debug("num of remove app Ids:" + appIdsToRemove.size());
|
||||||
}
|
}
|
||||||
applicationMappingDAO.removeApplicationMapping(device.getId(), appIdsToRemove, tenantId);
|
|
||||||
DeviceManagementDAOFactory.commitTransaction();
|
DeviceManagementDAOFactory.commitTransaction();
|
||||||
} catch (DeviceManagementDAOException e) {
|
} catch (DeviceManagementDAOException e) {
|
||||||
DeviceManagementDAOFactory.rollbackTransaction();
|
DeviceManagementDAOFactory.rollbackTransaction();
|
||||||
|
|||||||
@ -32,5 +32,7 @@ public interface ApplicationDAO {
|
|||||||
|
|
||||||
Application getApplication(String identifier, int tenantId) throws DeviceManagementDAOException;
|
Application getApplication(String identifier, int tenantId) throws DeviceManagementDAOException;
|
||||||
|
|
||||||
|
Application getApplication(String identifier, String version,int tenantId) throws DeviceManagementDAOException;
|
||||||
|
|
||||||
List<Application> getInstalledApplications(int deviceId) throws DeviceManagementDAOException;
|
List<Application> getInstalledApplications(int deviceId) throws DeviceManagementDAOException;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -228,6 +228,34 @@ public class ApplicationDAOImpl implements ApplicationDAO {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Application getApplication(String identifier, String version, int tenantId) throws DeviceManagementDAOException {
|
||||||
|
Connection conn;
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
ResultSet rs = null;
|
||||||
|
Application application = null;
|
||||||
|
try {
|
||||||
|
conn = this.getConnection();
|
||||||
|
stmt = conn.prepareStatement("SELECT ID, NAME, APP_IDENTIFIER, PLATFORM, CATEGORY, VERSION, TYPE, " +
|
||||||
|
"LOCATION_URL, IMAGE_URL, APP_PROPERTIES, MEMORY_USAGE, IS_ACTIVE, TENANT_ID FROM DM_APPLICATION WHERE APP_IDENTIFIER = ? " +
|
||||||
|
"AND VERSION = ? AND TENANT_ID = ?");
|
||||||
|
stmt.setString(1, identifier);
|
||||||
|
stmt.setString(2, version);
|
||||||
|
stmt.setInt(3, tenantId);
|
||||||
|
rs = stmt.executeQuery();
|
||||||
|
|
||||||
|
if (rs.next()) {
|
||||||
|
application = this.loadApplication(rs);
|
||||||
|
}
|
||||||
|
return application;
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new DeviceManagementDAOException("Error occurred while retrieving application application '" +
|
||||||
|
identifier + "' and version '" + version + "'.", e);
|
||||||
|
} finally {
|
||||||
|
DeviceManagementDAOUtil.cleanupResources(stmt, rs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private Connection getConnection() throws SQLException {
|
private Connection getConnection() throws SQLException {
|
||||||
return DeviceManagementDAOFactory.getConnection();
|
return DeviceManagementDAOFactory.getConnection();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -239,8 +239,7 @@ var userModule = function () {
|
|||||||
* Get User Roles from user store (Internal roles not included).
|
* Get User Roles from user store (Internal roles not included).
|
||||||
* @returns {object} a response object with status and content on success.
|
* @returns {object} a response object with status and content on success.
|
||||||
*/
|
*/
|
||||||
publicMethods.getRolesByUserStore = function () {
|
publicMethods.getRolesByUserStore = function (userStore) {
|
||||||
var ROLE_LIMIT = devicemgtProps["pageSize"];
|
|
||||||
var carbonUser = session.get(constants["USER_SESSION_KEY"]);
|
var carbonUser = session.get(constants["USER_SESSION_KEY"]);
|
||||||
var utility = require("/app/modules/utility.js")["utility"];
|
var utility = require("/app/modules/utility.js")["utility"];
|
||||||
if (!carbonUser) {
|
if (!carbonUser) {
|
||||||
@ -249,7 +248,8 @@ var userModule = function () {
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
utility.startTenantFlow(carbonUser);
|
utility.startTenantFlow(carbonUser);
|
||||||
var url = devicemgtProps["httpsURL"] + devicemgtProps["backendRestEndpoints"]["deviceMgt"] + "/roles?limit=" + ROLE_LIMIT;
|
var url = devicemgtProps["httpsURL"] + devicemgtProps["backendRestEndpoints"]["deviceMgt"] +
|
||||||
|
"/roles?user-store=" + userStore + "&limit=100";
|
||||||
var response = privateMethods.callBackend(url, constants["HTTP_GET"]);
|
var response = privateMethods.callBackend(url, constants["HTTP_GET"]);
|
||||||
if (response.status == "success") {
|
if (response.status == "success") {
|
||||||
response.content = parse(response.content).roles;
|
response.content = parse(response.content).roles;
|
||||||
|
|||||||
@ -15,7 +15,7 @@
|
|||||||
specific language governing permissions and limitations
|
specific language governing permissions and limitations
|
||||||
under the License.
|
under the License.
|
||||||
}}
|
}}
|
||||||
{{unit "cdmf.unit.ui.title" pageTitle="Policy Management"}}
|
{{unit "cdmf.unit.ui.title" pageTitle="Policy Management | Policy Priorities"}}
|
||||||
|
|
||||||
{{#zone "breadcrumbs"}}
|
{{#zone "breadcrumbs"}}
|
||||||
<li>
|
<li>
|
||||||
@ -24,10 +24,17 @@
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
|
<!--suppress HtmlUnknownTarget -->
|
||||||
<a href="{{@app.context}}/policies">
|
<a href="{{@app.context}}/policies">
|
||||||
Policies
|
Policies
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<!--suppress HtmlUnknownTarget -->
|
||||||
|
<a href="{{@app.context}}/policy/priority">
|
||||||
|
Priorities
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
|
|
||||||
{{#zone "content"}}
|
{{#zone "content"}}
|
||||||
|
|||||||
@ -67,25 +67,19 @@
|
|||||||
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
|
||||||
</label>
|
</label>
|
||||||
<div id="usernameInputField" class="form-group wr-input-control">
|
<div id="usernameInputField" class="form-group wr-input-control">
|
||||||
<input limit="{{charLimit}}" type="text" id="username" data-regex="{{usernameJSRegEx}}"
|
<input limit="{{charLimit}}" type="text" id="username" data-regex="{{usernameJSRegEx}}" data-errormsg="{{usernameRegExViolationErrorMsg}}" class="form-control"/>
|
||||||
data-errormsg="{{usernameRegExViolationErrorMsg}}" class="form-control"/>
|
|
||||||
<span class=" usernameError hidden glyphicon glyphicon-remove form-control-feedback"></span>
|
<span class=" usernameError hidden glyphicon glyphicon-remove form-control-feedback"></span>
|
||||||
<label class="error usernameEmpty hidden" for="summary">This field is required. Username
|
<label class="error usernameEmpty hidden" for="summary">This field is required. Username should be in minimum 3 characters long and do not include any whitespaces.</label>
|
||||||
should be in minimum 3
|
|
||||||
characters long and do not
|
|
||||||
include any whitespaces.</label>
|
|
||||||
</div>
|
</div>
|
||||||
<label class="wr-input-label">First Name *</label>
|
<label class="wr-input-label">First Name *</label>
|
||||||
<div id="firstNameField" class="form-group wr-input-control">
|
<div id="firstNameField" class="form-group wr-input-control">
|
||||||
<input type="text" id="firstname" data-regex="{{firstnameJSRegEx}}"
|
<input type="text" id="firstname" data-regex="{{firstnameJSRegEx}}" data-errormsg="{{firstnameRegExViolationErrorMsg}}" class="form-control"/>
|
||||||
data-errormsg="{{firstnameRegExViolationErrorMsg}}" class="form-control"/>
|
|
||||||
<span class="glyphicon glyphicon-remove form-control-feedback hidden fnError"></span>
|
<span class="glyphicon glyphicon-remove form-control-feedback hidden fnError"></span>
|
||||||
<label class=" hidden error fnError" for="summary">This field is required.</label>
|
<label class=" hidden error fnError" for="summary">This field is required.</label>
|
||||||
</div>
|
</div>
|
||||||
<label class="wr-input-label">Last Name *</label>
|
<label class="wr-input-label">Last Name *</label>
|
||||||
<div id="lastNameField" class="form-group wr-input-control">
|
<div id="lastNameField" class="form-group wr-input-control">
|
||||||
<input type="text" id="lastname" data-regex="{{lastnameJSRegEx}}"
|
<input type="text" id="lastname" data-regex="{{lastnameJSRegEx}}" data-errormsg="{{lastnameRegExViolationErrorMsg}}" class="form-control"/>
|
||||||
data-errormsg="{{lastnameRegExViolationErrorMsg}}" class="form-control"/>
|
|
||||||
<span class="glyphicon glyphicon-remove form-control-feedback hidden lnError"></span>
|
<span class="glyphicon glyphicon-remove form-control-feedback hidden lnError"></span>
|
||||||
<label class=" hidden error lnError" for="summary">This field is required.</label>
|
<label class=" hidden error lnError" for="summary">This field is required.</label>
|
||||||
</div>
|
</div>
|
||||||
@ -121,6 +115,8 @@
|
|||||||
<p class="page-sub-title">User was added successfully.</p>
|
<p class="page-sub-title">User was added successfully.</p>
|
||||||
<br>
|
<br>
|
||||||
An invitation mail will be sent to this user to initiate device enrollment.
|
An invitation mail will be sent to this user to initiate device enrollment.
|
||||||
|
Below QR code can also be used to enroll a device.
|
||||||
|
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<div class="qr-code col-lg-5 col-md-6 col-centered"></div>
|
<div class="qr-code col-lg-5 col-md-6 col-centered"></div>
|
||||||
|
|||||||
@ -18,18 +18,16 @@
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the dynamic state to be populated by add-user page.
|
* 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
|
* @returns {*} A context object that returns the dynamic state of this page to be presented
|
||||||
*/
|
*/
|
||||||
function onRequest(context) {
|
function onRequest() {
|
||||||
//var log = new Log("/app/pages/cdmf.page.user.create server-side js");
|
//var log = new Log("/app/pages/cdmf.page.user.create server-side js");
|
||||||
|
|
||||||
var userModule = require("/app/modules/business-controllers/user.js")["userModule"];
|
var userModule = require("/app/modules/business-controllers/user.js")["userModule"];
|
||||||
var devicemgtProps = require("/app/modules/conf-reader/main.js")["conf"];
|
var devicemgtProps = require("/app/modules/conf-reader/main.js")["conf"];
|
||||||
|
|
||||||
var page = {};
|
var page = {};
|
||||||
var response = userModule.getRolesByUserStore();
|
var response = userModule.getRolesByUserStore("PRIMARY");
|
||||||
if (response["status"] == "success") {
|
if (response["status"] == "success") {
|
||||||
page["roles"] = response["content"];
|
page["roles"] = response["content"];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* 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,
|
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
* Version 2.0 (the "License"); you may not use this file except
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
@ -72,8 +72,8 @@ var disableInlineError = function (inputField, errorMsg, errorSign) {
|
|||||||
* Validate if provided username is valid against RegEx configures.
|
* Validate if provided username is valid against RegEx configures.
|
||||||
*/
|
*/
|
||||||
validateInline["user-name"] = function () {
|
validateInline["user-name"] = function () {
|
||||||
var usernameinput = $("input#username");
|
var usernameInput = $("input#username");
|
||||||
if (inputIsValid(usernameinput.data("regex"), usernameinput.val())) {
|
if (inputIsValid(usernameInput.data("regex"), usernameInput.val())) {
|
||||||
disableInlineError("usernameInputField", "usernameEmpty", "usernameError");
|
disableInlineError("usernameInputField", "usernameEmpty", "usernameError");
|
||||||
} else {
|
} else {
|
||||||
enableInlineError("usernameInputField", "usernameEmpty", "usernameError");
|
enableInlineError("usernameInputField", "usernameEmpty", "usernameError");
|
||||||
@ -84,8 +84,8 @@ validateInline["user-name"] = function () {
|
|||||||
* Validate if provided first name is valid against RegEx configures.
|
* Validate if provided first name is valid against RegEx configures.
|
||||||
*/
|
*/
|
||||||
validateInline["first-name"] = function () {
|
validateInline["first-name"] = function () {
|
||||||
var firstnameinput = $("input#firstname");
|
var firstnameInput = $("input#firstname");
|
||||||
if (firstnameinput.val()) {
|
if (firstnameInput.val()) {
|
||||||
disableInlineError("firstNameField", "fnError");
|
disableInlineError("firstNameField", "fnError");
|
||||||
} else {
|
} else {
|
||||||
enableInlineError("firstNameField", "fnError");
|
enableInlineError("firstNameField", "fnError");
|
||||||
@ -96,8 +96,8 @@ validateInline["first-name"] = function () {
|
|||||||
* Validate if provided last name is valid against RegEx configures.
|
* Validate if provided last name is valid against RegEx configures.
|
||||||
*/
|
*/
|
||||||
validateInline["last-name"] = function () {
|
validateInline["last-name"] = function () {
|
||||||
var lastnameinput = $("input#lastname");
|
var lastnameInput = $("input#lastname");
|
||||||
if (lastnameinput.val()) {
|
if (lastnameInput.val()) {
|
||||||
disableInlineError("lastNameField", "lnError");
|
disableInlineError("lastNameField", "lnError");
|
||||||
} else {
|
} else {
|
||||||
enableInlineError("lastNameField", "lnError");
|
enableInlineError("lastNameField", "lnError");
|
||||||
@ -167,7 +167,7 @@ $("#userStore").change(
|
|||||||
$("select option:selected").each(function () {
|
$("select option:selected").each(function () {
|
||||||
str += $(this).text() + "";
|
str += $(this).text() + "";
|
||||||
});
|
});
|
||||||
var getRolesAPI = deviceMgtAPIsBasePath + "/roles/"+ str;
|
var getRolesAPI = deviceMgtAPIsBasePath + "/roles?user-store=" + str + "&limit=100";
|
||||||
|
|
||||||
invokerUtil.get(
|
invokerUtil.get(
|
||||||
getRolesAPI,
|
getRolesAPI,
|
||||||
@ -188,8 +188,7 @@ $("#userStore").change(
|
|||||||
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}).change();
|
||||||
).change();
|
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
$("#emailValidationText").hide();
|
$("#emailValidationText").hide();
|
||||||
@ -207,7 +206,7 @@ $(document).ready(function () {
|
|||||||
var usernameInput = $("input#username");
|
var usernameInput = $("input#username");
|
||||||
var firstnameInput = $("input#firstname");
|
var firstnameInput = $("input#firstname");
|
||||||
var lastnameInput = $("input#lastname");
|
var lastnameInput = $("input#lastname");
|
||||||
//var charLimit = parseInt($("input#username").attr("limit"));
|
var charLimit = parseInt($("input#username").attr("limit"));
|
||||||
var domain = $("#userStore").val();
|
var domain = $("#userStore").val();
|
||||||
var username = usernameInput.val().trim();
|
var username = usernameInput.val().trim();
|
||||||
var firstname = firstnameInput.val();
|
var firstname = firstnameInput.val();
|
||||||
|
|||||||
@ -27,8 +27,10 @@ var invokerUtil = function () {
|
|||||||
restAPIRequestDetails["requestURL"] = requestURL;
|
restAPIRequestDetails["requestURL"] = requestURL;
|
||||||
restAPIRequestDetails["requestPayload"] = JSON.stringify(requestPayload);
|
restAPIRequestDetails["requestPayload"] = JSON.stringify(requestPayload);
|
||||||
|
|
||||||
|
var appContext = $("#app-context").data("app-context");
|
||||||
|
|
||||||
var request = {
|
var request = {
|
||||||
url: context + "/api/invoker/execute/",
|
url: appContext + "/api/invoker/execute/",
|
||||||
type: "POST",
|
type: "POST",
|
||||||
contentType: "application/json",
|
contentType: "application/json",
|
||||||
data: JSON.stringify(restAPIRequestDetails),
|
data: JSON.stringify(restAPIRequestDetails),
|
||||||
|
|||||||
@ -31,12 +31,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="app-context" data-app-context="{{@app.context}}" class="hidden"></div>
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
|
|
||||||
{{#zone "topJs"}}
|
{{#zone "topJs"}}
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var context = "{{@app.context}}"
|
var context = "{{@app.context}}"
|
||||||
</script>
|
</script>
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
|
|
||||||
{{#zone "bottomJs"}}
|
{{#zone "bottomJs"}}
|
||||||
{{js "js/js.cookie.js"}}
|
{{js "js/js.cookie.js"}}
|
||||||
{{js "js/invoker-lib.js"}}
|
{{js "js/invoker-lib.js"}}
|
||||||
|
|||||||
@ -15,17 +15,16 @@
|
|||||||
specific language governing permissions and limitations
|
specific language governing permissions and limitations
|
||||||
under the License.
|
under the License.
|
||||||
}}
|
}}
|
||||||
|
|
||||||
<div class="row wr-device-board">
|
<div class="row wr-device-board">
|
||||||
<div class="col-lg-12 wr-secondary-bar">
|
<div class="col-lg-12 wr-secondary-bar">
|
||||||
<span class="page-sub-title">
|
<span class="page-sub-title">
|
||||||
Policy List by priority order
|
Policy List by priority order
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<span id="policy-listing-status-msg">{{policyListingStatusMsg}}</span>
|
<span id="policy-listing-status-msg">{{policyListingStatusMsg}}</span>
|
||||||
|
|
||||||
<div class="wr-list-group wr-sortable policy-list">
|
<div class="wr-list-group wr-sortable policy-list">
|
||||||
{{#each policyListToView}}
|
{{#each policyListToView}}
|
||||||
<span class="list-group-item " place="place_{{id}}" id="{{id}}">
|
<span class="list-group-item " place="place_{{id}}" id="{{id}}">
|
||||||
@ -40,15 +39,7 @@
|
|||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
<span class="wr-list-icon">
|
<span class="wr-list-icon">
|
||||||
{{#equal platform "android"}}
|
<i class=" fw fw-{{platform}}"></i>
|
||||||
<i class=" fw fw-android"></i>
|
|
||||||
{{/equal}}
|
|
||||||
{{#equal platform "windows"}}
|
|
||||||
<i class=" fw fw-windows"></i>
|
|
||||||
{{/equal}}
|
|
||||||
{{#equal platform "ios"}}
|
|
||||||
<i class=" fw fw-apple"></i>
|
|
||||||
{{/equal}}
|
|
||||||
</span>
|
</span>
|
||||||
<span class="wr-list-desc">
|
<span class="wr-list-desc">
|
||||||
<h3 class="wr-list-name">{{name}}</h3>
|
<h3 class="wr-list-name">{{name}}</h3>
|
||||||
@ -62,19 +53,20 @@
|
|||||||
<b>Ownership Type : </b> {{ownershipType}}
|
<b>Ownership Type : </b> {{ownershipType}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{#if roles}}
|
{{#equal roles "None"}}
|
||||||
<div class="wr-desc-list-configs highlight col-xs-12 col-sm-4 col-md-4 col-lg-4">
|
|
||||||
<div>
|
|
||||||
<b>Assigned Role(s) : </b> {{roles}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{else}}
|
|
||||||
<div class="wr-desc-list-configs highlight col-xs-12 col-sm-4 col-md-4 col-lg-4">
|
<div class="wr-desc-list-configs highlight col-xs-12 col-sm-4 col-md-4 col-lg-4">
|
||||||
<div>
|
<div>
|
||||||
<b>Assigned User(s) : </b> {{users}}
|
<b>Assigned User(s) : </b> {{users}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/equal}}
|
||||||
|
{{#equal users "None"}}
|
||||||
|
<div class="wr-desc-list-configs highlight col-xs-12 col-sm-4 col-md-4 col-lg-4">
|
||||||
|
<div>
|
||||||
|
<b>Assigned Role(s) : </b> {{roles}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/equal}}
|
||||||
<div class="wr-desc-list-configs col-xs-12 col-sm-4 col-md-4 col-lg-4">
|
<div class="wr-desc-list-configs col-xs-12 col-sm-4 col-md-4 col-lg-4">
|
||||||
<div>
|
<div>
|
||||||
<b>Compliance Type :</b> {{compliance}}
|
<b>Compliance Type :</b> {{compliance}}
|
||||||
@ -89,8 +81,7 @@
|
|||||||
{{#equal noPolicy false}}
|
{{#equal noPolicy false}}
|
||||||
<div id="save-new-priorities-button" class="wr-input-control wr-btn-grp">
|
<div id="save-new-priorities-button" class="wr-input-control wr-btn-grp">
|
||||||
<button class="wr-btn hide" id="sortUpdateBtn" data-policycount="{{policyCount}}"
|
<button class="wr-btn hide" id="sortUpdateBtn" data-policycount="{{policyCount}}"
|
||||||
data-enabled="{{saveNewPrioritiesButtonEnabled}}" disabled>Save New Priority
|
data-enabled="{{saveNewPrioritiesButtonEnabled}}" disabled>Save New Priority Order
|
||||||
Order
|
|
||||||
</button>
|
</button>
|
||||||
<button class="wr-btn" id="applyChangesBtn">Apply Changes to Devices</button>
|
<button class="wr-btn" id="applyChangesBtn">Apply Changes to Devices</button>
|
||||||
</div>
|
</div>
|
||||||
@ -98,18 +89,17 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="change-policy-modal-content" class="hide">
|
<div id="apply-changes-modal-content" class="hide">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-5 col-md-6 col-centered">
|
<div class="col-lg-5 col-md-6 col-centered">
|
||||||
<h3>Do you really want to apply changes to all policies?</h3>
|
<h3>Do you really want to apply changes to all policies?</h3>
|
||||||
|
|
||||||
<div class="buttons">
|
<div class="buttons">
|
||||||
<a href="javascript:void(0)" id="change-policy-yes-link" class="btn-operations">
|
<a href="javascript:void(0)" id="apply-changes-yes-link" class="btn-operations">
|
||||||
Yes
|
Yes
|
||||||
</a>
|
</a>
|
||||||
<a href="javascript:void(0)" id="change-policy-cancel-link"
|
<a href="javascript:void(0)" id="apply-changes-cancel-link" class="btn-operations">
|
||||||
class="btn-operations">
|
|
||||||
No
|
No
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@ -118,15 +108,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="change-policy-success-content" class="hide">
|
<div id="apply-changes-success-content" class="hide">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-5 col-md-6 col-centered">
|
<div class="col-lg-5 col-md-6 col-centered">
|
||||||
<h3>Done. Changes applied successfully.</h3>
|
<h3>Done. Changes applied successfully.</h3>
|
||||||
|
|
||||||
<div class="buttons">
|
<div class="buttons">
|
||||||
<a href="javascript:void(0)" id="change-policy-success-link"
|
<a href="javascript:void(0)" id="apply-changes-success-link" class="btn-operations">
|
||||||
class="btn-operations">
|
|
||||||
Ok
|
Ok
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@ -135,15 +124,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="change-policy-error-content" class="hide">
|
<div id="apply-changes-error-content" class="hide">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-5 col-md-6 col-centered">
|
<div class="col-lg-5 col-md-6 col-centered">
|
||||||
<h3>An unexpected error occurred. Please try again later.</h3>
|
<h3>An unexpected error occurred. Please try again later.</h3>
|
||||||
|
|
||||||
<div class="buttons">
|
<div class="buttons">
|
||||||
<a href="javascript:void(0)" id="change-policy-error-link"
|
<a href="javascript:void(0)" id="apply-changes-error-link" class="btn-operations">
|
||||||
class="btn-operations">
|
|
||||||
Ok
|
Ok
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@ -159,8 +147,7 @@
|
|||||||
<h3>An unexpected error occurred. Please try again later.</h3>
|
<h3>An unexpected error occurred. Please try again later.</h3>
|
||||||
|
|
||||||
<div class="buttons">
|
<div class="buttons">
|
||||||
<a href="javascript:void(0)" id="remove-policy-error-link"
|
<a href="javascript:void(0)" id="remove-policy-error-link" class="btn-operations">
|
||||||
class="btn-operations">
|
|
||||||
Ok
|
Ok
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@ -176,8 +163,7 @@
|
|||||||
<h3>Done. New Policy priorities were successfully updated.</h3>
|
<h3>Done. New Policy priorities were successfully updated.</h3>
|
||||||
|
|
||||||
<div class="buttons">
|
<div class="buttons">
|
||||||
<a href="javascript:void(0)" id="save-policy-priorities-success-link"
|
<a href="javascript:void(0)" id="save-policy-priorities-success-link" class="btn-operations">
|
||||||
class="btn-operations">
|
|
||||||
Ok
|
Ok
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@ -191,11 +177,8 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-5 col-md-6 col-centered">
|
<div class="col-lg-5 col-md-6 col-centered">
|
||||||
<h3>An unexpected error occurred. Please try again later.</h3>
|
<h3>An unexpected error occurred. Please try again later.</h3>
|
||||||
<h4 class="message-from-server"></h4>
|
|
||||||
|
|
||||||
<div class="buttons">
|
<div class="buttons">
|
||||||
<a href="javascript:void(0)" id="save-policy-priorities-error-link"
|
<a href="javascript:void(0)" id="save-policy-priorities-error-link" class="btn-operations">
|
||||||
class="btn-operations">
|
|
||||||
Ok
|
Ok
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@ -203,6 +186,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
{{#zone "bottomJs"}}
|
{{#zone "bottomJs"}}
|
||||||
{{js "js/policy-priority.js"}}
|
{{js "js/policy-priority.js"}}
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* 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,
|
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
* Version 2.0 (the "License"); you may not use this file except
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
@ -10,8 +10,8 @@
|
|||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing,
|
* Unless required by applicable law or agreed to in writing,
|
||||||
* software distributed under the License is distributed on an
|
* software distributed under the License is distributed on an
|
||||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||||
* KIND, either express or implied. See the License for the
|
* either express or implied. See the License for the
|
||||||
* specific language governing permissions and limitations
|
* specific language governing permissions and limitations
|
||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
@ -27,8 +27,9 @@ function onRequest(context) {
|
|||||||
return options.fn(this);
|
return options.fn(this);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
var policyModule = require("/app/modules/business-controllers/group.js")["groupModule"];
|
var policyModule = require("/app/modules/business-controllers/policy.js")["policyModule"];
|
||||||
var response = policyModule.getAllPolicies();
|
var response = policyModule.getAllPolicies();
|
||||||
|
|
||||||
if (response["status"] == "success") {
|
if (response["status"] == "success") {
|
||||||
var policyListToView = response["content"];
|
var policyListToView = response["content"];
|
||||||
context["policyListToView"] = policyListToView;
|
context["policyListToView"] = policyListToView;
|
||||||
@ -38,7 +39,7 @@ function onRequest(context) {
|
|||||||
context["saveNewPrioritiesButtonEnabled"] = false;
|
context["saveNewPrioritiesButtonEnabled"] = false;
|
||||||
context["noPolicy"] = true;
|
context["noPolicy"] = true;
|
||||||
} else if (policyCount == 1) {
|
} else if (policyCount == 1) {
|
||||||
context["policyListingStatusMsg"] = "Add more policies to set up a priority order.";
|
context["policyListingStatusMsg"] = "Two or more policies should be available to set up a priority order.";
|
||||||
context["saveNewPrioritiesButtonEnabled"] = false;
|
context["saveNewPrioritiesButtonEnabled"] = false;
|
||||||
context["noPolicy"] = false;
|
context["noPolicy"] = false;
|
||||||
} else {
|
} else {
|
||||||
@ -47,9 +48,11 @@ function onRequest(context) {
|
|||||||
context["noPolicy"] = false;
|
context["noPolicy"] = false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
// here, response["status"] == "error"
|
||||||
context["policyListToView"] = [];
|
context["policyListToView"] = [];
|
||||||
context["policyListingStatusMsg"] = response["content"];
|
context["policyListingStatusMsg"] = "Error in retrieving policies. Please try reloading the page.";
|
||||||
context["saveNewPrioritiesButtonEnabled"] = false;
|
context["saveNewPrioritiesButtonEnabled"] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return context;
|
return context;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* 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,
|
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
* Version 2.0 (the "License"); you may not use this file except
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
@ -10,8 +10,8 @@
|
|||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing,
|
* Unless required by applicable law or agreed to in writing,
|
||||||
* software distributed under the License is distributed on an
|
* software distributed under the License is distributed on an
|
||||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||||
* KIND, either express or implied. See the License for the
|
* either express or implied. See the License for the
|
||||||
* specific language governing permissions and limitations
|
* specific language governing permissions and limitations
|
||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
@ -78,58 +78,66 @@ $(document).ready(function () {
|
|||||||
newPolicyPriorityList.push(policy);
|
newPolicyPriorityList.push(policy);
|
||||||
}
|
}
|
||||||
|
|
||||||
var updatePolicyAPI = "/devicemgt_admin/policies/priorities";
|
var updatePolicyAPI = "/api/device-mgt/v1.0/policies/priorities";
|
||||||
invokerUtil.put(
|
invokerUtil.put(
|
||||||
updatePolicyAPI,
|
updatePolicyAPI,
|
||||||
newPolicyPriorityList,
|
newPolicyPriorityList,
|
||||||
function () {
|
// on success
|
||||||
|
function (data, textStatus, jqXHR) {
|
||||||
|
if (jqXHR.status == 200) {
|
||||||
$(modalPopupContent).html($('#save-policy-priorities-success-content').html());
|
$(modalPopupContent).html($('#save-policy-priorities-success-content').html());
|
||||||
showPopup();
|
showPopup();
|
||||||
$("a#save-policy-priorities-success-link").click(function () {
|
$("a#save-policy-priorities-success-link").click(function () {
|
||||||
hidePopup();
|
hidePopup();
|
||||||
});
|
});
|
||||||
|
}
|
||||||
},
|
},
|
||||||
function () {
|
// on error
|
||||||
$("#save-policy-priorities-error-content").find(".message-from-server").html(
|
function (jqXHR) {
|
||||||
"Message From Server : " + data["statusText"]);
|
if (jqXHR.status == 400 || jqXHR.status == 500) {
|
||||||
$(modalPopupContent).html($('#save-policy-priorities-error-content').html());
|
$(modalPopupContent).html($("#save-policy-priorities-error-content").html());
|
||||||
showPopup();
|
showPopup();
|
||||||
$("a#save-policy-priorities-error-link").click(function () {
|
$("a#save-policy-priorities-error-link").click(function () {
|
||||||
hidePopup();
|
hidePopup();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
$(applyChangesBtn).click(function () {
|
|
||||||
var applyPolicyChangesAPI = "/devicemgt_admin/policies/apply-changes";
|
|
||||||
$(modalPopupContent).html($('#change-policy-modal-content').html());
|
|
||||||
showPopup();
|
|
||||||
|
|
||||||
$("a#change-policy-yes-link").click(function () {
|
|
||||||
invokerUtil.put(
|
|
||||||
applyPolicyChangesAPI,
|
|
||||||
null,
|
|
||||||
// on success
|
|
||||||
function () {
|
|
||||||
$(modalPopupContent).html($('#change-policy-success-content').html());
|
|
||||||
showPopup();
|
|
||||||
$("a#change-policy-success-link").click(function () {
|
|
||||||
hidePopup();
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// on error
|
|
||||||
function () {
|
|
||||||
$(modalPopupContent).html($('#change-policy-error-content').html());
|
|
||||||
showPopup();
|
|
||||||
$("a#change-policy-error-link").click(function () {
|
|
||||||
hidePopup();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
$("a#change-policy-cancel-link").click(function () {
|
$(applyChangesBtn).click(function () {
|
||||||
|
var applyPolicyChangesAPI = "/api/device-mgt/v1.0/policies/apply-changes";
|
||||||
|
$(modalPopupContent).html($("#apply-changes-modal-content").html());
|
||||||
|
showPopup();
|
||||||
|
|
||||||
|
$("a#apply-changes-yes-link").click(function () {
|
||||||
|
invokerUtil.put(
|
||||||
|
applyPolicyChangesAPI,
|
||||||
|
null,
|
||||||
|
// on success
|
||||||
|
function (data, textStatus, jqXHR) {
|
||||||
|
if (jqXHR.status == 200) {
|
||||||
|
$(modalPopupContent).html($("#apply-changes-success-content").html());
|
||||||
|
showPopup();
|
||||||
|
$("a#apply-changes-success-link").click(function () {
|
||||||
|
hidePopup();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// on error
|
||||||
|
function (jqXHR) {
|
||||||
|
if (jqXHR.status == 500) {
|
||||||
|
$(modalPopupContent).html($("#apply-changes-error-content").html());
|
||||||
|
showPopup();
|
||||||
|
$("a#apply-changes-error-link").click(function () {
|
||||||
|
hidePopup();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
$("a#apply-changes-cancel-link").click(function () {
|
||||||
hidePopup();
|
hidePopup();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* 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,
|
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
* Version 2.0 (the "License"); you may not use this file except
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
@ -47,7 +47,7 @@ var sortableListFunction = (function () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* on input text field focus autocomplete bind function
|
* on input text field focus auto-complete bind function
|
||||||
*/
|
*/
|
||||||
$(sortableElem).on('focus', '.wr-sort-index input.index', function () {
|
$(sortableElem).on('focus', '.wr-sort-index input.index', function () {
|
||||||
currentElemId = $(this).val();
|
currentElemId = $(this).val();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user