From 6e365333ab9544c6f827b90313b957439a7e1394 Mon Sep 17 00:00:00 2001 From: charitha Date: Sat, 23 Mar 2019 00:45:04 +0530 Subject: [PATCH 01/20] Fix incorrect type for tenant id in pgsql --- .../src/main/resources/dbscripts/cdm/postgresql.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/postgresql.sql b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/postgresql.sql index 79d158b8ea..4ef06be29c 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/postgresql.sql +++ b/features/device-mgt/org.wso2.carbon.device.mgt.basics.feature/src/main/resources/dbscripts/cdm/postgresql.sql @@ -44,7 +44,7 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_PROPERTIES ( DEVICE_IDENTIFICATION VARCHAR(300) NOT NULL, PROPERTY_NAME VARCHAR(100) DEFAULT 0, PROPERTY_VALUE VARCHAR(100) DEFAULT NULL, - TENANT_ID VARCHAR(100), + TENANT_ID INTEGER DEFAULT 0, PRIMARY KEY (DEVICE_TYPE_NAME, DEVICE_IDENTIFICATION, PROPERTY_NAME, TENANT_ID) ); From d64edd8cf90a8af3e831fefe94f057e4997e3186 Mon Sep 17 00:00:00 2001 From: Saad Sahibjan Date: Thu, 28 Mar 2019 14:26:07 +0530 Subject: [PATCH 02/20] Add handlebar helper to convert json to string --- .../devicemgt/app/modules/business-controllers/policy.js | 1 + .../cdmf.unit.policy.create/public/js/policy-create.js | 6 ++++++ .../units/cdmf.unit.policy.edit/public/js/policy-edit.js | 7 ++++++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/business-controllers/policy.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/business-controllers/policy.js index e36069f802..1c84db0261 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/business-controllers/policy.js +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/business-controllers/policy.js @@ -223,6 +223,7 @@ policyModule = function () { appObjectToView = {}; appObjectToView["appName"] = appObjectFromRestEndpoint["name"]; appObjectToView["appId"] = appObjectFromRestEndpoint["id"]; + appObjectToView["webUrl"] = appObjectFromRestEndpoint["appmeta"]["weburl"]; if ("webapp" === appObjectFromRestEndpoint["platform"]) { appObjectToView["packageName"] = appObjectFromRestEndpoint["appmeta"]["weburl"]; appObjectToView["type"] = "Web Clip" 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 ca52864f3f..c7701e5cd9 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 @@ -504,6 +504,12 @@ function formatRepoSelection(user) { $(document).ready(function () { + + // Handlebar helper to convert JSON to String + Handlebars.registerHelper("json", function (jsonObject) { + return JSON.stringify(jsonObject); + }); + $("#users-input").select2({ multiple: true, tags: false, 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 5ae9a68539..fd34ccc5a6 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 @@ -599,6 +599,12 @@ var formatRepoSelection = function (user) { $(document).ready(function () { + + // Handlebar helper to convert JSON to String + Handlebars.registerHelper("json", function (jsonObject) { + return JSON.stringify(jsonObject); + }); + // Adding initial state of wizard-steps. $("#users-input").select2({ multiple: true, @@ -755,5 +761,4 @@ $(document).ready(function () { $("." + nextStep).removeClass("hidden"); } }); - }); \ No newline at end of file From 20a4fb7b01959bb251ef3c768c42923afaf95ed6 Mon Sep 17 00:00:00 2001 From: Milan Perera Date: Tue, 9 Apr 2019 13:25:46 +0530 Subject: [PATCH 03/20] Fix Authentication Handler Issue Replaced the invalid value in the AuthenticationHandler file to support mutual SSL. --- .../org/wso2/carbon/apimgt/handlers/AuthenticationHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/main/java/org/wso2/carbon/apimgt/handlers/AuthenticationHandler.java b/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/main/java/org/wso2/carbon/apimgt/handlers/AuthenticationHandler.java index b851ee4f8c..6c95b40dee 100644 --- a/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/main/java/org/wso2/carbon/apimgt/handlers/AuthenticationHandler.java +++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/main/java/org/wso2/carbon/apimgt/handlers/AuthenticationHandler.java @@ -209,7 +209,7 @@ public class AuthenticationHandler extends AbstractHandler { private String getDeviceType(String url) { StringTokenizer parts = new StringTokenizer(url, "/"); while (parts.hasMoreElements()) { - if (parts.nextElement().equals("api")) { + if (parts.nextElement().equals("device-mgt")) { return (String) parts.nextElement(); } } From a7e40db75bae8b316c6d7356b9b968249f6509a6 Mon Sep 17 00:00:00 2001 From: Milan Perera Date: Tue, 9 Apr 2019 13:54:05 +0530 Subject: [PATCH 04/20] Fix AuthenticationHandler Test Failure --- .../handlers/AuthenticationHandlerTest.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/test/java/org/wso2/carbon/apimgt/handlers/AuthenticationHandlerTest.java b/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/test/java/org/wso2/carbon/apimgt/handlers/AuthenticationHandlerTest.java index f42505409a..b3b8cdac78 100644 --- a/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/test/java/org/wso2/carbon/apimgt/handlers/AuthenticationHandlerTest.java +++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/src/test/java/org/wso2/carbon/apimgt/handlers/AuthenticationHandlerTest.java @@ -96,7 +96,7 @@ public class AuthenticationHandlerTest extends BaseAPIHandlerTest { this.mockClient.setResponse(getAccessTokenReponse()); this.mockClient.setResponse(getValidationResponse()); boolean response = this.handler.handleRequest(createSynapseMessageContext("", this.synapseConfiguration, - transportHeaders, "https://test.com/testservice/api/testdevice")); + transportHeaders, "https://test.com/testservice/device-mgt/testdevice")); Assert.assertTrue(response); this.mockClient.reset(); } @@ -110,7 +110,7 @@ public class AuthenticationHandlerTest extends BaseAPIHandlerTest { this.mockClient.setResponse(getAccessTokenReponse()); this.mockClient.setResponse(getValidationResponse()); boolean response = this.handler.handleRequest(createSynapseMessageContext("", this.synapseConfiguration, - transportHeaders, "https://test.com/testservice/api/testdevice")); + transportHeaders, "https://test.com/testservice/device-mgt/testdevice")); Assert.assertTrue(response); this.mockClient.reset(); } @@ -124,7 +124,7 @@ public class AuthenticationHandlerTest extends BaseAPIHandlerTest { this.mockClient.setResponse(getAccessTokenReponse()); this.mockClient.setResponse(getValidationResponse()); MessageContext messageContext = createSynapseMessageContext("", this.synapseConfiguration, - transportHeaders, "https://test.com/testservice/api/testdevice"); + transportHeaders, "https://test.com/testservice/device-mgt/testdevice"); org.apache.axis2.context.MessageContext axisMC = ((Axis2MessageContext) messageContext).getAxis2MessageContext(); String certStr = getContent(TestUtils.getAbsolutePathOfConfig("ra_cert.pem")); X509Certificate cert = X509Certificate.getInstance(new ByteArrayInputStream(certStr. @@ -144,7 +144,7 @@ public class AuthenticationHandlerTest extends BaseAPIHandlerTest { this.mockClient.setResponse(getAccessTokenReponse()); this.mockClient.setResponse(getValidationResponse()); MessageContext messageContext = createSynapseMessageContext("", this.synapseConfiguration, - transportHeaders, "https://test.com/testservice/api/testdevice"); + transportHeaders, "https://test.com/testservice/device-mgt/testdevice"); boolean response = this.handler.handleRequest(messageContext); Assert.assertTrue(response); this.mockClient.reset(); @@ -159,7 +159,7 @@ public class AuthenticationHandlerTest extends BaseAPIHandlerTest { this.mockClient.setResponse(getAccessTokenReponse()); this.mockClient.setResponse(getInvalidResponse()); MessageContext messageContext = createSynapseMessageContext("", this.synapseConfiguration, - transportHeaders, "https://test.com/testservice/api/testdevice"); + transportHeaders, "https://test.com/testservice/device-mgt/testdevice"); boolean response = this.handler.handleRequest(messageContext); Assert.assertFalse(response); this.mockClient.reset(); @@ -173,7 +173,7 @@ public class AuthenticationHandlerTest extends BaseAPIHandlerTest { setMockClient(); this.mockClient.setResponse(null); MessageContext messageContext = createSynapseMessageContext("", this.synapseConfiguration, - transportHeaders, "https://test.com/testservice/api/testdevice"); + transportHeaders, "https://test.com/testservice/device-mgt/testdevice"); boolean response = this.handler.handleRequest(messageContext); Assert.assertFalse(response); this.mockClient.reset(); @@ -188,7 +188,7 @@ public class AuthenticationHandlerTest extends BaseAPIHandlerTest { this.mockClient.setResponse(getAccessTokenReponse()); this.mockClient.setResponse(null); MessageContext messageContext = createSynapseMessageContext("", this.synapseConfiguration, - transportHeaders, "https://test.com/testservice/api/testdevice"); + transportHeaders, "https://test.com/testservice/device-mgt/testdevice"); boolean response = this.handler.handleRequest(messageContext); Assert.assertFalse(response); this.mockClient.reset(); @@ -202,7 +202,7 @@ public class AuthenticationHandlerTest extends BaseAPIHandlerTest { transportHeaders.put(AuthConstants.MDM_SIGNATURE, "some cert"); AuthenticationHandler handler = new AuthenticationHandler(); boolean response = handler.handleRequest(createSynapseMessageContext("", this.synapseConfiguration, - transportHeaders, "https://test.com/testservice/api/testdevice")); + transportHeaders, "https://test.com/testservice/device-mgt/testdevice")); Assert.assertFalse(response); TestUtils.setSystemProperties(); } From 89e3c91fe6b8fc802215ccc95500ed81df65f0d1 Mon Sep 17 00:00:00 2001 From: Milan Perera Date: Tue, 9 Apr 2019 14:38:06 +0530 Subject: [PATCH 05/20] Fix device information reduction issue --- .../impl/DeviceInformationManagerImpl.java | 82 ++++++++++++++++++- 1 file changed, 80 insertions(+), 2 deletions(-) diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/device/details/mgt/impl/DeviceInformationManagerImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/device/details/mgt/impl/DeviceInformationManagerImpl.java index f265509910..39937baae4 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/device/details/mgt/impl/DeviceInformationManagerImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/device/details/mgt/impl/DeviceInformationManagerImpl.java @@ -67,11 +67,27 @@ public class DeviceInformationManagerImpl implements DeviceInformationManager { getDeviceManagementProvider().getDevice(deviceId, false); DeviceManagementDAOFactory.beginTransaction(); + DeviceInfo newDeviceInfo; + DeviceInfo previousDeviceInfo = deviceDetailsDAO.getDeviceInformation(device.getId(), + device.getEnrolmentInfo().getId()); + Map previousDeviceProperties = deviceDetailsDAO.getDeviceProperties(device.getId(), + device.getEnrolmentInfo().getId()); + if (previousDeviceInfo != null && previousDeviceProperties != null) { + previousDeviceInfo.setDeviceDetailsMap(previousDeviceProperties); + newDeviceInfo = processDeviceInfo(previousDeviceInfo, deviceInfo); + } else if (previousDeviceInfo == null && previousDeviceProperties != null) { + previousDeviceInfo = new DeviceInfo(); + previousDeviceInfo.setDeviceDetailsMap(previousDeviceProperties); + newDeviceInfo = processDeviceInfo(previousDeviceInfo, deviceInfo); + } else { + newDeviceInfo = deviceInfo; + } + deviceDAO.updateDevice(device, CarbonContext.getThreadLocalCarbonContext().getTenantId()); deviceDetailsDAO.deleteDeviceInformation(device.getId(), device.getEnrolmentInfo().getId()); deviceDetailsDAO.deleteDeviceProperties(device.getId(), device.getEnrolmentInfo().getId()); - deviceDetailsDAO.addDeviceInformation(device.getId(), device.getEnrolmentInfo().getId(), deviceInfo); - deviceDetailsDAO.addDeviceProperties(deviceInfo.getDeviceDetailsMap(), device.getId(), + deviceDetailsDAO.addDeviceInformation(device.getId(), device.getEnrolmentInfo().getId(), newDeviceInfo); + deviceDetailsDAO.addDeviceProperties(newDeviceInfo.getDeviceDetailsMap(), device.getId(), device.getEnrolmentInfo().getId()); DeviceManagementDAOFactory.commitTransaction(); @@ -291,5 +307,67 @@ public class DeviceInformationManagerImpl implements DeviceInformationManager { } } + private DeviceInfo processDeviceInfo(DeviceInfo previousDeviceInfo, DeviceInfo newDeviceInfo) { + if (newDeviceInfo.getDeviceModel().isEmpty()) { + newDeviceInfo.setDeviceModel(previousDeviceInfo.getDeviceModel()); + } + if (newDeviceInfo.getVendor().isEmpty()) { + newDeviceInfo.setVendor(previousDeviceInfo.getVendor()); + } + if (newDeviceInfo.getOsBuildDate().isEmpty()) { + newDeviceInfo.setOsBuildDate(previousDeviceInfo.getOsBuildDate()); + } + if (newDeviceInfo.getOsVersion().isEmpty()) { + newDeviceInfo.setOsVersion(previousDeviceInfo.getOsVersion()); + } + if (newDeviceInfo.getBatteryLevel() == -1D) { + newDeviceInfo.setBatteryLevel(previousDeviceInfo.getBatteryLevel()); + } + if (newDeviceInfo.getInternalTotalMemory() == -1D) { + newDeviceInfo.setInternalTotalMemory(previousDeviceInfo.getInternalTotalMemory()); + } + if (newDeviceInfo.getInternalAvailableMemory() == -1D) { + newDeviceInfo.setInternalAvailableMemory(previousDeviceInfo.getInternalAvailableMemory()); + } + if (newDeviceInfo.getExternalTotalMemory() == -1D) { + newDeviceInfo.setExternalTotalMemory(previousDeviceInfo.getExternalTotalMemory()); + } + if (newDeviceInfo.getExternalAvailableMemory() == -1D) { + newDeviceInfo.setExternalAvailableMemory(previousDeviceInfo.getExternalAvailableMemory()); + } + if (newDeviceInfo.getOperator().isEmpty()) { + newDeviceInfo.setOperator(previousDeviceInfo.getOperator()); + } + if (newDeviceInfo.getConnectionType().isEmpty()) { + newDeviceInfo.setConnectionType(previousDeviceInfo.getConnectionType()); + } + if (newDeviceInfo.getMobileSignalStrength() == 0.0) { + newDeviceInfo.setMobileSignalStrength(previousDeviceInfo.getMobileSignalStrength()); + } + if (newDeviceInfo.getSsid().isEmpty()) { + newDeviceInfo.setSsid(previousDeviceInfo.getSsid()); + } + if (newDeviceInfo.getCpuUsage() == 0.0) { + newDeviceInfo.setCpuUsage(previousDeviceInfo.getCpuUsage()); + } + if (newDeviceInfo.getTotalRAMMemory() == -1D) { + newDeviceInfo.setTotalRAMMemory(previousDeviceInfo.getTotalRAMMemory()); + } + if (newDeviceInfo.getAvailableRAMMemory() == -1D) { + newDeviceInfo.setAvailableRAMMemory(previousDeviceInfo.getAvailableRAMMemory()); + } + if (!newDeviceInfo.isPluggedIn()) { + newDeviceInfo.setPluggedIn(previousDeviceInfo.isPluggedIn()); + } + Map newDeviceDetailsMap = newDeviceInfo.getDeviceDetailsMap(); + Map previousDeviceDetailsMap = previousDeviceInfo.getDeviceDetailsMap(); + for (String eachKey : previousDeviceDetailsMap.keySet()) { + if (!newDeviceDetailsMap.containsKey(eachKey)) { + newDeviceDetailsMap.put(eachKey, previousDeviceDetailsMap.get(eachKey)); + } + } + return newDeviceInfo; + } + } From b075688d917883b61ef6a103363ea1a058c16916 Mon Sep 17 00:00:00 2001 From: Pahansith Gunathilake Date: Wed, 10 Apr 2019 17:29:05 +0000 Subject: [PATCH 06/20] Whitelabel UI --- .../app/pages/cdmf.page.devices/devices.hbs | 4 +- .../pages/cdmf.page.processing/processing.hbs | 2 +- .../app/pages/cdmf.page.user.view/view.hbs | 2 +- .../public/css/styles.css | 2 +- .../public/css/listing-grid.css | 2 +- .../cdmf.unit.effective-policy.view/view.hbs | 6 +- .../app/units/cdmf.unit.footer/footer.hbs | 2 +- .../app/units/cdmf.unit.policy.view/view.hbs | 6 +- .../units/cdmf.unit.ui.header.logo/logo.hbs | 8 +- .../public/css/custom-common.css | 4 +- .../public/css/custom-desktop.css | 210 +++++++++--------- .../public/css/custom-theme.css | 8 +- .../public/less/theme-variables.less | 4 +- .../uuf.unit.favicon/public/img/favicon.png | Bin 5143 -> 18171 bytes .../app/units/uuf.unit.footer/footer.hbs | 4 +- .../public/img/logo-inverse.png | Bin 0 -> 33023 bytes .../public/img/logo-inverse.svg | 60 ----- .../uuf.unit.header.logo/public/img/logo.png | Bin 4200 -> 33023 bytes .../uuf.unit.theme/public/css/theme-wso2.css | 127 ++++++----- .../lib/theme-wso2_1.0/images/favicon.png | Bin 1923 -> 18171 bytes .../theme-wso2_1.0/images/logo-inverse.png | Bin 0 -> 33023 bytes .../theme-wso2_1.0/images/logo-inverse.svg | 60 ----- .../public/lib/theme-wso2_1.0/images/logo.png | Bin 0 -> 33023 bytes .../public/lib/theme-wso2_1.0/images/logo.svg | 58 ----- .../lib/theme-wso2_1.0/less/theme-wso2.less | 2 +- .../email/templates/user-enrollment.vm | 2 +- 26 files changed, 205 insertions(+), 368 deletions(-) create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.header.logo/public/img/logo-inverse.png delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.header.logo/public/img/logo-inverse.svg create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/theme-wso2_1.0/images/logo-inverse.png delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/theme-wso2_1.0/images/logo-inverse.svg create mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/theme-wso2_1.0/images/logo.png delete mode 100644 components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/uuf-template-app/app/units/uuf.unit.theme/public/lib/theme-wso2_1.0/images/logo.svg diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.devices/devices.hbs b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.devices/devices.hbs index 7c1c2a00c2..96d763192b 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.devices/devices.hbs +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.devices/devices.hbs @@ -92,11 +92,11 @@
+ style="background-color: #008cc4; height: 152px;">
-
+
Overview
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.processing/processing.hbs b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.processing/processing.hbs index 48a23ed87e..ac4e28107d 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.processing/processing.hbs +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.processing/processing.hbs @@ -46,7 +46,7 @@ {{#zone "topCss"}}