merge-requests/1/head
Harshan Liyanage 8 years ago
commit f6032004fb

@ -73,7 +73,8 @@ public class ApplicationOperationsImpl implements ApplicationOperations {
getDevicesOfUser(userName);
for (org.wso2.carbon.device.mgt.common.Device device : deviceList) {
if(applicationOperationAction.getApp().getPlatform().equalsIgnoreCase(device.getType())){
if(MDMAppConstants.WEBAPP.equals(applicationOperationAction.getApp().getPlatform()) ||
applicationOperationAction.getApp().getPlatform().equalsIgnoreCase(device.getType())){
deviceIdentifiers.add(getDeviceIdentifierByDevice(device));
}
}
@ -176,8 +177,11 @@ public class ApplicationOperationsImpl implements ApplicationOperations {
operation =
IOSApplicationOperationUtil.createInstallAppOperation(mobileApp);
} else {
operation =
IOSApplicationOperationUtil.createAppUninstallOperation(mobileApp);
if (MDMAppConstants.WEBAPP.equals(app.getPlatform())) {
operation = IOSApplicationOperationUtil.createWebClipUninstallOperation(mobileApp);
} else {
operation = IOSApplicationOperationUtil.createAppUninstallOperation(mobileApp);
}
}
}
activity = MDMServiceAPIUtils.getAppManagementService(applicationOperationAction.getTenantId())

@ -23,6 +23,15 @@ import java.io.Serializable;
public class RemoveApplication implements Serializable {
private String bundleId;
private String url;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getBundleId() {
return bundleId;

@ -111,4 +111,22 @@ public class IOSApplicationOperationUtil {
return operation;
}
/**
* Create uninstall operations for webclip.
*
* @param application
* @return Uninstall operation
* @throws DeviceApplicationException
*/
public static Operation createWebClipUninstallOperation(MobileApp application) throws
DeviceApplicationException {
ProfileOperation operation = new ProfileOperation();
operation.setCode(MDMAppConstants.IOSConstants.OPCODE_REMOVE_APPLICATION);
operation.setType(Operation.Type.PROFILE);
RemoveApplication removeApplication = new RemoveApplication();
removeApplication.setUrl(application.getIdentifier());
operation.setPayLoad(removeApplication.toJSON());
return operation;
}
}

@ -32,8 +32,10 @@
"identityProviderUrl" : "https://localhost:9443/samlsso",
"acs": "https://localhost:9443/emm/uuf/sso/acs",
"identityAlias": "wso2carbon",
"responseSigningEnabled" : "true",
"useTenantKey": false
"responseSigningEnabled" : true,
"validateAssertionValidityPeriod": true,
"validateAudienceRestriction": true,
"assertionSigningEnabled": true
}
},
"generalConfig" : {

@ -7,7 +7,6 @@
"httpsWebURL" : "%https.ip%",
"wssURL" : "%https.ip%",
"wsURL" : "%http.ip%",
"dashboardServerURL" : "%https.ip%",
"enrollmentDir": "/emm-web-agent/enrollment",
"iOSConfigRoot" : "%https.ip%/ios-enrollment/",
"iOSAPIRoot" : "%https.ip%/ios/",
@ -121,5 +120,6 @@
"isOAuthEnabled" : true,
"backendRestEndpoints" : {
"deviceMgt" : "/api/device-mgt/v1.0"
}
},
"deviceStatisticsEnabled" : false
}

@ -51,9 +51,9 @@ function getSelectedDeviceIds() {
var deviceId = device.data('deviceid');
var deviceType = device.data('type');
deviceIdentifierList.push({
"id": deviceId,
"type": deviceType
});
"id": deviceId,
"type": deviceType
});
});
if (deviceIdentifierList.length == 0) {
var thisTable = $(".DTTT_selected").closest('.dataTables_wrapper').find('.dataTable').dataTable();
@ -62,9 +62,9 @@ function getSelectedDeviceIds() {
var deviceId = $(thisTable.api().row(this).node()).data('deviceid');
var deviceType = $(thisTable.api().row(this).node()).data('devicetype');
deviceIdentifierList.push({
"id": deviceId,
"type": deviceType
});
"id": deviceId,
"type": deviceType
});
}
});
}
@ -102,11 +102,6 @@ function getDevicesByTypes(deviceList) {
return deviceTypes;
}
//function unloadOperationBar() {
// $("#showOperationsBtn").addClass("hidden");
// $(".wr-operations").html("");
//}
function loadOperationBar(deviceType, ownership, mode) {
var operationBar = $("#operations-bar");
var operationBarSrc = operationBar.attr("src");
@ -166,7 +161,7 @@ function loadOperationBar(deviceType, ownership, mode) {
/* adding ownership in addition to device-type
as it's vital in cases where UI for the same feature should change
according to ownership
*/
*/
if (ownership) {
current.ownership = ownership;
}
@ -190,22 +185,21 @@ function loadOperationBar(deviceType, ownership, mode) {
}
function runOperation(operationName) {
if (operationName == "NOTIFICATION") {
var messageTitle = $("#messageTitle").val();
var messageText = $("#messageText").val();
if (!messageTitle || !messageText) {
var errorMsg = "#notification-error-msg span";
var errorMsgWrapper = "#notification-error-msg";
$(errorMsg).text("Either the message title / message text or both are empty.");
$(errorMsgWrapper).removeClass("hidden");
return;
}
}
var deviceIdList = getSelectedDeviceIds();
var list = getDevicesByTypes(deviceIdList);
var successCallback = function (data) {
if (operationName == "NOTIFICATION") {
$(modalPopupContent).html($("#messageSuccess").html());
} else {
$(modalPopupContent).html($("#operationSuccess").html());
}
showPopup();
};
var errorCallback = function (data) {
$(modalPopupContent).html($("#errorOperationUnexpected").html());
showPopup();
};
var payload, serviceEndPoint;
if (list[platformTypeConstants.IOS]) {
payload =
@ -217,27 +211,22 @@ function runOperation(operationName) {
serviceEndPoint = operationModule.getAndroidServiceEndpoint(operationName);
} else if (list[platformTypeConstants.WINDOWS]) {
payload = operationModule.generatePayload(platformTypeConstants.WINDOWS, operationName,
list[platformTypeConstants.WINDOWS]);
list[platformTypeConstants.WINDOWS]);
serviceEndPoint = operationModule.getWindowsServiceEndpoint(operationName);
}
if (operationName == "NOTIFICATION") {
var errorMsgWrapper = "#notification-error-msg";
var errorMsg = "#notification-error-msg span";
var messageTitle = $("#messageTitle").val();
var messageText = $("#messageText").val();
if (!(messageTitle && messageText)) {
$(errorMsg).text("Enter a message. It cannot be empty.");
$(errorMsgWrapper).removeClass("hidden");
var successCallback = function () {
if (operationName == "NOTIFICATION") {
$(modalPopupContent).html($("#messageSuccess").html());
} else {
invokerUtil.post(serviceEndPoint, payload, successCallback, errorCallback);
$(modalPopupContent).removeData();
hidePopup();
$(modalPopupContent).html($("#operationSuccess").html());
}
} else {
invokerUtil.post(serviceEndPoint, payload, successCallback, errorCallback);
$(modalPopupContent).removeData();
hidePopup();
}
};
var errorCallback = function () {
$(modalPopupContent).html($("#errorOperationUnexpected").html());
};
invokerUtil.post(serviceEndPoint, payload, successCallback, errorCallback);
}
/*

@ -25,10 +25,16 @@
<li>
<a href="{{@app.context}}">
<i class="fw fw-dashboard"></i>
Resource Dashboard
System Resources
</a>
</li>
{{#if dashboardAvailable}}
{{#if permissions.VIEW_DASHBOARD}}
<li><a href="{{serverURL}}/portal/t/{{currentUser.domain}}/dashboards/device-statistics-dashboard/">
<i class="fw fw-bar-chart"></i>Device Statistics</a>
</li>
{{/if}}
{{/if}}
{{#if permissions.LIST_DEVICES}}
<li>
<!--suppress HtmlUnknownTarget -->
@ -74,11 +80,6 @@
</ul>
</li>
{{/if}}
{{#if permissions.VIEW_DASHBOARD}}
<li><a href="{{serverURL}}/portal/dashboards/emm-analytics-dashboard/">
<i class="fw fw-pie-chart"></i>Device Management Dashboard</a>
</li>
{{/if}}
{{/zone}}
{{#zone "navbarCollapsableRightItems"}}
@ -105,12 +106,13 @@
<ul class="sidebar-messages"></ul>
<br>
<div class="text-center">
<!--suppress HtmlUnknownTarget -->
<a href="{{@app.context}}/notification-listing" class="btn-operations btn-default">
<span class="fw-stack">
<i class="fw fw-ring fw-stroke fw-stack-2x"></i>
<i class="fw fw-notification fw-stack-1x"></i>
</span>
View All Notifications
View All Notifications
</a>
</div>
</div>

@ -17,6 +17,10 @@
*/
function onRequest(context) {
var userModule = require("/app/modules/business-controllers/user.js")["userModule"];
var mdmProps = require("/app/modules/conf-reader/main.js")["conf"];
var constants = require("/app/modules/constants.js");
context.handlebars.registerHelper('equal', function (lvalue, rvalue, options) {
if (arguments.length < 3) {
throw new Error("Handlebars Helper equal needs 2 parameters");
@ -27,9 +31,7 @@ function onRequest(context) {
return options.fn(this);
}
});
var userModule = require("/app/modules/business-controllers/user.js")["userModule"];
var mdmProps = require("/app/modules/conf-reader/main.js")["conf"];
var constants = require("/app/modules/constants.js");
var links = {
"user-mgt": [],
"role-mgt": [],
@ -40,7 +42,7 @@ function onRequest(context) {
// following viewModel.link value comes here based on the value passed at the point
// where units are attached to a page zone.
// eg: {{unit "appbar" pageLink="users" title="User Management"}}
// eg: {{unit "app-bar" pageLink="users" title="User Management"}}
viewModel["currentActions"] = links[viewModel["pageLink"]];
viewModel["enrollmentURL"] = mdmProps["generalConfig"]["host"] + mdmProps["enrollmentDir"];
viewModel["currentUser"] = session.get(constants["USER_SESSION_KEY"]);
@ -57,6 +59,8 @@ function onRequest(context) {
permissions["LIST_NOTIFICATIONS"] = userModule.isAuthorized("/permission/admin/device-mgt/notifications/view");
permissions["VIEW_DASHBOARD"] = userModule.isAuthorized("/permission/admin/device-mgt/dashboard/view");
viewModel["dashboardAvailable"] = mdmProps["deviceStatisticsEnabled"];
viewModel["permissions"] = permissions;
viewModel["appContext"] = mdmProps["appContext"];
viewModel["serverURL"] = mdmProps["httpsWebURL"];

Loading…
Cancel
Save