Merge pull request #396 from charithag/IoTS-1.0.0

Synced with master
This commit is contained in:
Charitha Goonetilleke 2016-11-01 15:56:20 +05:30 committed by GitHub
commit cc8f5d87a7
136 changed files with 5305 additions and 4241 deletions

View File

@ -18,11 +18,11 @@
<parent> <parent>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<artifactId>extensions</artifactId> <artifactId>extensions</artifactId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<artifactId>org.wso2.carbon.appmgt.mdm.osgiconnector</artifactId> <artifactId>org.wso2.carbon.appmgt.mdm.osgiconnector</artifactId>
<packaging>bundle</packaging> <packaging>bundle</packaging>
<name>WSO2 Carbon - App Manager WSO2 MDM OSGI Connector Component</name> <name>WSO2 Carbon - App Manager WSO2 MDM OSGI Connector Component</name>

View File

@ -68,8 +68,8 @@ public class IOSApplicationOperationUtil {
appStoreApplication.setPreventBackupOfAppData((Boolean) application.getProperties(). appStoreApplication.setPreventBackupOfAppData((Boolean) application.getProperties().
get(MDMAppConstants.IOSConstants.IS_PREVENT_BACKUP)); get(MDMAppConstants.IOSConstants.IS_PREVENT_BACKUP));
appStoreApplication.setBundleId(application.getId()); appStoreApplication.setBundleId(application.getId());
appStoreApplication.setiTunesStoreID((Integer) application.getProperties(). appStoreApplication.setiTunesStoreID(Integer.parseInt((String)application.getProperties().
get(MDMAppConstants.IOSConstants.I_TUNES_ID)); get(MDMAppConstants.IOSConstants.I_TUNES_ID)));
operation.setCode(MDMAppConstants.IOSConstants.OPCODE_INSTALL_STORE_APPLICATION); operation.setCode(MDMAppConstants.IOSConstants.OPCODE_INSTALL_STORE_APPLICATION);
operation.setType(Operation.Type.COMMAND); operation.setType(Operation.Type.COMMAND);
operation.setPayLoad(appStoreApplication.toJSON()); operation.setPayLoad(appStoreApplication.toJSON());
@ -106,7 +106,7 @@ public class IOSApplicationOperationUtil {
operation.setCode(MDMAppConstants.IOSConstants.OPCODE_REMOVE_APPLICATION); operation.setCode(MDMAppConstants.IOSConstants.OPCODE_REMOVE_APPLICATION);
operation.setType(Operation.Type.PROFILE); operation.setType(Operation.Type.PROFILE);
RemoveApplication removeApplication = new RemoveApplication(); RemoveApplication removeApplication = new RemoveApplication();
removeApplication.setBundleId(application.getIdentifier()); removeApplication.setBundleId(application.getPackageName());
operation.setPayLoad(removeApplication.toJSON()); operation.setPayLoad(removeApplication.toJSON());
return operation; return operation;
} }

View File

@ -22,7 +22,7 @@
<parent> <parent>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<artifactId>carbon-device-mgt-plugins-parent</artifactId> <artifactId>carbon-device-mgt-plugins-parent</artifactId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>

View File

@ -21,7 +21,7 @@
<parent> <parent>
<artifactId>androidsense-plugin</artifactId> <artifactId>androidsense-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -3,7 +3,7 @@
<parent> <parent>
<artifactId>androidsense-plugin</artifactId> <artifactId>androidsense-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -14,7 +14,7 @@
<parent> <parent>
<artifactId>androidsense-plugin</artifactId> <artifactId>androidsense-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -22,7 +22,7 @@
<parent> <parent>
<artifactId>androidsense-plugin</artifactId> <artifactId>androidsense-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -74,9 +74,9 @@
<div class="panel-body"> <div class="panel-body">
<div id="operations-spinner" class="wr-advance-operations-init hidden"> <div id="operations-spinner" class="wr-advance-operations-init hidden">
<br> <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<i class="fw fw-settings fw-spin fw-2x"></i> <i class="fw fw-settings fw-spin fw-2x"></i>
&nbsp;&nbsp;&nbsp;
Loading Operations Log . . . Loading Operations Log . . .
<br> <br>
<br> <br>

View File

@ -41,7 +41,7 @@
</div> </div>
<div class="wr-input-control wr-btn-grp"> <div class="wr-input-control wr-btn-grp">
<button id="save-general-btn" class="wr-btn" onclick="addConfiguration();"> <button id="save-general-btn" class="wr-btn" onclick="addConfiguration();">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Save&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Save
</button> </button>
</div> </div>
</div> </div>

View File

@ -42,18 +42,18 @@
<ul class="list-unstyled"> <ul class="list-unstyled">
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">STEP 01</span> <span class="circle">STEP 01</span>
&nbsp;&nbsp;&nbsp;Go ahead and click [Enroll Device]. Go ahead and click [Enroll Device].
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">STEP 02</span> <span class="circle">STEP 02</span>
&nbsp;&nbsp;&nbsp;You can either scan the QR code or directly download Android agent. You can either scan the QR code or directly download Android agent.
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">STEP 03</span> <span class="circle">STEP 03</span>
&nbsp;&nbsp;&nbsp;Install Android agent into your Android Device. Install Android agent into your Android Device.
</li> </li>
<li class="padding-top-double"><span class="circle">STEP 04</span> <li class="padding-top-double"><span class="circle">STEP 04</span>
&nbsp;&nbsp;&nbsp;Proceed to [Prepare] section. Proceed to [Prepare] section.
</ul> </ul>
<br> <br>
<a href="#" class="download-link btn-operations"> <a href="#" class="download-link btn-operations">
@ -84,7 +84,7 @@
<div class="buttons"> <div class="buttons">
<a href="#" id="device-401-link" class="blue-button"> <a href="#" id="device-401-link" class="blue-button">
Goto Login Page Goto Login Page
</a>&nbsp;&nbsp; </a>
<a href="#" onclick="hidePopup();" class="btn-operations"> <a href="#" onclick="hidePopup();" class="btn-operations">
Cancel Cancel
</a> </a>
@ -147,17 +147,17 @@
<ul class="list-unstyled"> <ul class="list-unstyled">
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">01</span> <span class="circle">01</span>
&nbsp;&nbsp;&nbsp;Connect Android device to network. Connect Android device to network.
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">02</span> <span class="circle">02</span>
&nbsp;&nbsp;&nbsp;Start Android Sense app in your device. Start Android Sense app in your device.
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">03</span> <span class="circle">03</span>
&nbsp;&nbsp;&nbsp;Fill login form with the credentials. Fill login form with the credentials.
<i>(Use server URL as [&nbsp;https://&lt;WSO2_IoT_SERVER_HOST&gt;:&lt; <i>(Use server URL as [ https://&lt;WSO2_IoT_SERVER_HOST&gt;:&lt;
HTTPS_SERVER_PORT&gt;&nbsp;] and click on HTTPS_SERVER_PORT&gt; ] and click on
<strong>Register Device</strong> button.)</i> <strong>Register Device</strong> button.)</i>
</li> </li>
<li> <li>
@ -169,7 +169,7 @@
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">04</span> <span class="circle">04</span>
&nbsp;&nbsp;&nbsp;Once the device is enrolled, click on <strong>[+]</strong> button to Once the device is enrolled, click on <strong>[+]</strong> button to
select the sensors. select the sensors.
<a href="{{@unit.publicUri}}/images/selectSensorView.png" target="_blank" <a href="{{@unit.publicUri}}/images/selectSensorView.png" target="_blank"
class="padding-top-double"> class="padding-top-double">
@ -178,7 +178,7 @@
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">05</span> <span class="circle">05</span>
&nbsp;&nbsp;&nbsp;Click on <i>[Publish data]</i> button to publish sensor readings to Click on <i>[Publish data]</i> button to publish sensor readings to
IoT server. IoT server.
<a href="{{@unit.publicUri}}/images/publishDataView.png" target="_blank" <a href="{{@unit.publicUri}}/images/publishDataView.png" target="_blank"
class="padding-top-double"> class="padding-top-double">
@ -198,7 +198,7 @@
<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-ring fw-stack-2x"></i>
<i class="fw fw-right-arrow fw-stack-1x"></i> <i class="fw fw-right-arrow fw-stack-1x"></i>
</span> </span>
&nbsp;&nbsp;&nbsp;You can view all your connected devices You can view all your connected devices
<a href="{{@app.context}}/devices">[Device Management]</a> page. <a href="{{@app.context}}/devices">[Device Management]</a> page.
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
@ -206,14 +206,14 @@
<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-ring fw-stack-2x"></i>
<i class="fw fw-right-arrow fw-stack-1x"></i> <i class="fw fw-right-arrow fw-stack-1x"></i>
</span> </span>
&nbsp;&nbsp;&nbsp;You can select any one of your connected devices for available You can select any one of your connected devices for available
operations and Real-Time data monitoring. operations and Real-Time data monitoring.
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="fw-stack fw-lg margin-right"> <span class="fw-stack fw-lg margin-right">
<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-ring fw-stack-2x"></i>
<i class="fw fw-right-arrow fw-stack-1x"></i> <i class="fw fw-right-arrow fw-stack-1x"></i>
</span>&nbsp;&nbsp;&nbsp;For historical analytics of sensor data navigate to device </span> For historical analytics of sensor data navigate to device
analytics page. analytics page.
</li> </li>
</ul> </ul>
@ -237,7 +237,7 @@
<i class="fw fw-add fw-stack-1x fw-inverse"></i> <i class="fw fw-add fw-stack-1x fw-inverse"></i>
</span> </span>
</span> </span>
&nbsp;&nbsp;Add your new mobile device to {{@app.conf.appName}} Add your new mobile device to {{@app.conf.appName}}
</h4> </h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
</div> </div>

View File

@ -22,7 +22,7 @@
<parent> <parent>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<artifactId>iot-plugins</artifactId> <artifactId>iot-plugins</artifactId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -21,7 +21,7 @@
<parent> <parent>
<artifactId>arduino-plugin</artifactId> <artifactId>arduino-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -21,7 +21,7 @@
<parent> <parent>
<artifactId>arduino-plugin</artifactId> <artifactId>arduino-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -22,7 +22,7 @@
<parent> <parent>
<artifactId>arduino-plugin</artifactId> <artifactId>arduino-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -23,7 +23,7 @@
<parent> <parent>
<artifactId>arduino-plugin</artifactId> <artifactId>arduino-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -64,9 +64,9 @@
<div class="panel-body"> <div class="panel-body">
<div id="operations-spinner" class="wr-advance-operations-init hidden"> <div id="operations-spinner" class="wr-advance-operations-init hidden">
<br> <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<i class="fw fw-settings fw-spin fw-2x"></i> <i class="fw fw-settings fw-spin fw-2x"></i>
&nbsp;&nbsp;&nbsp;
Loading Operations Log . . . Loading Operations Log . . .
<br> <br>
<br> <br>

View File

@ -52,7 +52,7 @@
</div> </div>
<div class="wr-input-control wr-btn-grp"> <div class="wr-input-control wr-btn-grp">
<button id="save-general-btn" class="wr-btn" onclick="addConfiguration();"> <button id="save-general-btn" class="wr-btn" onclick="addConfiguration();">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Save&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Save
</button> </button>
</div> </div>
</div> </div>

View File

@ -41,24 +41,24 @@
<ul class="list-unstyled"> <ul class="list-unstyled">
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">ITEM 01</span> <span class="circle">ITEM 01</span>
&nbsp;&nbsp;&nbsp;Arduino UNO Board. Arduino UNO Board.
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">ITEM 02</span> <span class="circle">ITEM 02</span>
&nbsp;&nbsp;&nbsp;Adafruit Wifi Shield for Arduino. Adafruit Wifi Shield for Arduino.
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">ITEM 03</span> <span class="circle">ITEM 03</span>
&nbsp;&nbsp;&nbsp;LED bulb connected to Pin 13. LED bulb connected to Pin 13.
<i>(If not available, will use the one on the board.)</i> <i>(If not available, will use the one on the board.)</i>
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">ITEM 04</span> <span class="circle">ITEM 04</span>
&nbsp;&nbsp;&nbsp;Resister( e.g 330 ohms ) Resister( e.g 330 ohms )
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">STEP 05</span> <span class="circle">STEP 05</span>
&nbsp;&nbsp;&nbsp;Proceed to [Prepare] section. Proceed to [Prepare] section.
</ul> </ul>
<br> <br>
<a href="/api-store/apis/info?name={{@uriParams.deviceType}}&version=1.0.0&provider=admin" <a href="/api-store/apis/info?name={{@uriParams.deviceType}}&version=1.0.0&provider=admin"
@ -90,7 +90,7 @@
<input type="hidden" class="deviceType" name="deviceType" <input type="hidden" class="deviceType" name="deviceType"
value="{{@uriParams.deviceType}}"/> value="{{@uriParams.deviceType}}"/>
<input type="hidden" class="sketchType" name="sketchType" <input type="hidden" class="sketchType" name="sketchType"
value="{{@uriParams.deviceType}}"/> &nbsp;&nbsp; value="{{@uriParams.deviceType}}"/>
</div> </div>
</div> </div>
<div class="buttons" style="padding-bottom: 0px"> <div class="buttons" style="padding-bottom: 0px">
@ -134,7 +134,7 @@
<div class="buttons"> <div class="buttons">
<a href="#" id="device-401-link" class="blue-button"> <a href="#" id="device-401-link" class="blue-button">
Goto Login Page Goto Login Page
</a>&nbsp;&nbsp; </a>
<a href="#" onclick="hidePopup();" class="btn-operations"> <a href="#" onclick="hidePopup();" class="btn-operations">
Cancel Cancel
</a> </a>
@ -196,11 +196,11 @@
<ul class="list-unstyled"> <ul class="list-unstyled">
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">01</span> <span class="circle">01</span>
&nbsp;&nbsp;&nbsp;Wifi-Shield mounted onto the Arduino-UNO board Wifi-Shield mounted onto the Arduino-UNO board
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">02</span> <span class="circle">02</span>
&nbsp;&nbsp;&nbsp;Connect LED bulb to arduino as follows Connect LED bulb to arduino as follows
<br/><br/> <br/><br/>
<a href="{{@unit.publicUri}}/images/schematicsGuide.png" target="_blank"> <a href="{{@unit.publicUri}}/images/schematicsGuide.png" target="_blank">
<img src="{{@unit.publicUri}}/images/schematicsGuide.png" class="img-responsive"> <img src="{{@unit.publicUri}}/images/schematicsGuide.png" class="img-responsive">
@ -210,20 +210,20 @@
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">03</span> <span class="circle">03</span>
&nbsp;&nbsp;&nbsp;Download Arduino-Sketch from [Download Sketch] link above. Download Arduino-Sketch from [Download Sketch] link above.
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">04</span> <span class="circle">04</span>
&nbsp;&nbsp;&nbsp;Unzip the downloaded Arduino Agent Unzip the downloaded Arduino Agent
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">05</span> <span class="circle">05</span>
&nbsp;&nbsp;&nbsp;Create a folder called "ArduinoBoardSketch" and move all source files Create a folder called "ArduinoBoardSketch" and move all source files
inside inside
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">06</span> <span class="circle">06</span>
&nbsp;&nbsp;&nbsp;Open ArduinoBoardSketch.h and provide appropriate values for Open ArduinoBoardSketch.h and provide appropriate values for
<i>[WLAN_SSID]</i>, <i>[WLAN_SSID]</i>,
<i>[WLAN_PASS]</i>, <i>[WLAN_PASS]</i>,
<i>[SERVICE_PORT]</i>, <i>[SERVICE_PORT]</i>,
@ -233,22 +233,22 @@
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">07</span> <span class="circle">07</span>
&nbsp;&nbsp;&nbsp;Burn the sketch onto your Arduino board and let the program run. Burn the sketch onto your Arduino board and let the program run.
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<span class="fw-stack fw-lg margin-right"> <span class="fw-stack fw-lg margin-right">
<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-ring fw-stack-2x"></i>
<i class="fw fw-right-arrow fw-stack-1x"></i> <i class="fw fw-right-arrow fw-stack-1x"></i>
</span> </span>
&nbsp;&nbsp;&nbsp;Arduino will publish it's internal temperature to WSO2-IoT-Server Arduino will publish it's internal temperature to WSO2-IoT-Server
<br/><br/> <br/><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<span class="fw-stack fw-lg margin-right"> <span class="fw-stack fw-lg margin-right">
<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-ring fw-stack-2x"></i>
<i class="fw fw-right-arrow fw-stack-1x"></i> <i class="fw fw-right-arrow fw-stack-1x"></i>
</span> </span>
&nbsp;&nbsp;&nbsp;LED on <i>PIN 13</i> can be controlled from Device Management page. LED on <i>PIN 13</i> can be controlled from Device Management page.
</li> </li>
</ul> </ul>
<br> <br>
@ -261,17 +261,17 @@
<ul class="list-unstyled"> <ul class="list-unstyled">
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">01</span> <span class="circle">01</span>
&nbsp;&nbsp;&nbsp;You can view all your connected devices at You can view all your connected devices at
<a href="{{@app.context}}/devices">[Device Management]</a> page. <a href="{{@app.context}}/devices">[Device Management]</a> page.
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">02</span> <span class="circle">02</span>
&nbsp;&nbsp;&nbsp;Select one of connected devices and check for available control Select one of connected devices and check for available control
operations and monitor Real-Time data. operations and monitor Real-Time data.
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">03</span> <span class="circle">03</span>
&nbsp;&nbsp;&nbsp;You can also view analytics of the data published to IoT-Server by You can also view analytics of the data published to IoT-Server by
navigating to Device Analytics page. navigating to Device Analytics page.
</li> </li>
</ul> </ul>

View File

@ -22,7 +22,7 @@
<parent> <parent>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<artifactId>iot-plugins</artifactId> <artifactId>iot-plugins</artifactId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -21,7 +21,7 @@
<parent> <parent>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<artifactId>iot-analytics</artifactId> <artifactId>iot-analytics</artifactId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -22,7 +22,7 @@
<parent> <parent>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<artifactId>iot-plugins</artifactId> <artifactId>iot-plugins</artifactId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -20,7 +20,7 @@
<parent> <parent>
<artifactId>iot-base-plugin</artifactId> <artifactId>iot-base-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -20,7 +20,7 @@
<parent> <parent>
<artifactId>iot-base-plugin</artifactId> <artifactId>iot-base-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -20,7 +20,7 @@
<parent> <parent>
<artifactId>iot-base-plugin</artifactId> <artifactId>iot-base-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -20,7 +20,7 @@
<parent> <parent>
<artifactId>iot-base-plugin</artifactId> <artifactId>iot-base-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -20,7 +20,7 @@
<parent> <parent>
<artifactId>iot-base-plugin</artifactId> <artifactId>iot-base-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -22,7 +22,7 @@
<parent> <parent>
<artifactId>iot-base-plugin</artifactId> <artifactId>iot-base-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -21,7 +21,7 @@
<parent> <parent>
<artifactId>iot-base-plugin</artifactId> <artifactId>iot-base-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -20,7 +20,7 @@
<parent> <parent>
<artifactId>iot-base-plugin</artifactId> <artifactId>iot-base-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -23,7 +23,7 @@
<parent> <parent>
<artifactId>iot-base-plugin</artifactId> <artifactId>iot-base-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -74,8 +74,8 @@
<input type="{{type}}" id="{{name}}" placeholder="{{name}}" class="form-control" data-param-type="query" value="{{value}}" /> <input type="{{type}}" id="{{name}}" placeholder="{{name}}" class="form-control" data-param-type="query" value="{{value}}" />
<br /> <br />
{{/each}} {{/each}}
<button id="btnSend" type="button" onclick="submitForm('form-{{operation}}')" class="btn btn-default">&nbsp;&nbsp;&nbsp;&nbsp;Send <button id="btnSend" type="button" onclick="submitForm('form-{{operation}}')" class="btn btn-default"> Send
to Device&nbsp;&nbsp;&nbsp;&nbsp;</button> to Device </button>
<label id="lblSending" class="wr-input-label hidden"><i <label id="lblSending" class="wr-input-label hidden"><i
class="fw fw-lifecycle fw-spin fw-2x"></i> Sending..</label> class="fw fw-lifecycle fw-spin fw-2x"></i> Sending..</label>
<label id="lblSent" class="wr-input-label hidden"><i <label id="lblSent" class="wr-input-label hidden"><i

View File

@ -157,7 +157,7 @@
<input id="user-roles-radio-btn" type="radio" <input id="user-roles-radio-btn" type="radio"
name="select-users-radio-btn" class="select-users-radio" name="select-users-radio-btn" class="select-users-radio"
checked/> checked/>
<span class="helper">&nbsp;Set user role(s)</span> <span class="helper"> Set user role(s)</span>
</label> </label>
{{/if}} {{/if}}
{{#if permissions.LIST_USERS}} {{#if permissions.LIST_USERS}}
@ -165,7 +165,7 @@
<input id="users-radio-btn" type="radio" <input id="users-radio-btn" type="radio"
name="select-users-radio-btn" name="select-users-radio-btn"
class="select-users-radio"/> class="select-users-radio"/>
<span class="helper">&nbsp;Set user(s)</span> <span class="helper"> Set user(s)</span>
</label> </label>
{{/if}} {{/if}}
<!-- <!--
@ -174,7 +174,7 @@
<input id="groups-radio-btn" type="radio" <input id="groups-radio-btn" type="radio"
name="select-users-radio-btn" name="select-users-radio-btn"
class="select-users-radio"/> class="select-users-radio"/>
<span class="helper">&nbsp;Set groups(s)</span> <span class="helper"> Set groups(s)</span>
</label> </label>
{{/if}} {{/if}}
--> -->

View File

@ -23,7 +23,7 @@
<parent> <parent>
<artifactId>iot-base-plugin</artifactId> <artifactId>iot-base-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -22,7 +22,7 @@
<parent> <parent>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<artifactId>iot-plugins</artifactId> <artifactId>iot-plugins</artifactId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -22,7 +22,7 @@
<parent> <parent>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<artifactId>carbon-device-mgt-plugins-parent</artifactId> <artifactId>carbon-device-mgt-plugins-parent</artifactId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>

View File

@ -21,7 +21,7 @@
<parent> <parent>
<artifactId>raspberrypi-plugin</artifactId> <artifactId>raspberrypi-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -21,7 +21,7 @@
<parent> <parent>
<artifactId>raspberrypi-plugin</artifactId> <artifactId>raspberrypi-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -23,7 +23,7 @@
<parent> <parent>
<artifactId>raspberrypi-plugin</artifactId> <artifactId>raspberrypi-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -23,7 +23,7 @@
<parent> <parent>
<artifactId>raspberrypi-plugin</artifactId> <artifactId>raspberrypi-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -64,9 +64,9 @@
<div class="panel-body"> <div class="panel-body">
<div id="operations-spinner" class="wr-advance-operations-init hidden"> <div id="operations-spinner" class="wr-advance-operations-init hidden">
<br> <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<i class="fw fw-settings fw-spin fw-2x"></i> <i class="fw fw-settings fw-spin fw-2x"></i>
&nbsp;&nbsp;&nbsp;
Loading Operations Log . . . Loading Operations Log . . .
<br> <br>
<br> <br>

View File

@ -62,7 +62,7 @@
</div> </div>
<div class="wr-input-control wr-btn-grp"> <div class="wr-input-control wr-btn-grp">
<button id="save-general-btn" class="wr-btn" onclick="addConfiguration();"> <button id="save-general-btn" class="wr-btn" onclick="addConfiguration();">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Save&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Save
</button> </button>
</div> </div>
</div> </div>

View File

@ -40,28 +40,28 @@
<ul class="list-unstyled"> <ul class="list-unstyled">
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">ITEM 01</span> <span class="circle">ITEM 01</span>
&nbsp;&nbsp;&nbsp;Raspberry Pi with SD Card(Internet Enabled [Wifi or Ethernet]). Raspberry Pi with SD Card(Internet Enabled [Wifi or Ethernet]).
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">ITEM 02</span> <span class="circle">ITEM 02</span>
&nbsp;&nbsp;&nbsp;Adafruit DHT11 Temperature Sensor. Adafruit DHT11 Temperature Sensor.
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">ITEM 03</span> <span class="circle">ITEM 03</span>
&nbsp;&nbsp;&nbsp;LED Bulb. LED Bulb.
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">ITEM 04</span> <span class="circle">ITEM 04</span>
&nbsp;&nbsp;&nbsp;Resister (eg : 470 ohm). Resister (eg : 470 ohm).
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">STEP 05</span> <span class="circle">STEP 05</span>
&nbsp;&nbsp;&nbsp;Proceed to [Prepare] section. Proceed to [Prepare] section.
</ul> </ul>
<br> <br>
<a href="/api-store/apis/info?name={{@uriParams.deviceType}}&version=1.0.0&provider=admin" <a href="/api-store/apis/info?name={{@uriParams.deviceType}}&version=1.0.0&provider=admin"
class="btn-operations" class="btn-operations"
target="_blank"><i class="fw fw-api"></i> View API</i> &nbsp; target="_blank"><i class="fw fw-api"></i> View API</i>
</a> </a>
<a href="#" class="download-link btn-operations"> <a href="#" class="download-link btn-operations">
<i class="fw fw-download"></i>Download Agent <i class="fw fw-download"></i>Download Agent
@ -93,11 +93,11 @@
</div> </div>
<div class="buttons" style="padding-bottom: 0px"> <div class="buttons" style="padding-bottom: 0px">
<a class="btn btn-operations" onclick="downloadAgent()">Download Now</a> <a class="btn btn-operations" onclick="downloadAgent()">Download Now</a>
&nbsp;&nbsp;
<a href="#" id="download-device-download-link" <a href="#" id="download-device-download-link"
class="btn btn-operations"> Copy Link class="btn btn-operations"> Copy Link
</a> </a>
&nbsp;&nbsp;
</div> </div>
</form> </form>
</div> </div>
@ -135,7 +135,7 @@
<div class="buttons"> <div class="buttons">
<a href="#" id="device-401-link" class="blue-button"> <a href="#" id="device-401-link" class="blue-button">
Goto Login Page Goto Login Page
</a>&nbsp;&nbsp; </a>
<a href="#" onclick="hidePopup();" class="btn-operations"> <a href="#" onclick="hidePopup();" class="btn-operations">
Cancel Cancel
</a> </a>
@ -195,43 +195,43 @@
<ul class="list-unstyled"> <ul class="list-unstyled">
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">01</span> <span class="circle">01</span>
&nbsp;&nbsp;&nbsp;Connect RaspberryPi, DHT11 Temperature sensor and LED as per the Connect RaspberryPi, DHT11 Temperature sensor and LED as per the
schematic below. schematic below.
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">02</span> <span class="circle">02</span>
&nbsp;&nbsp;&nbsp;Ensure your RaspberryPi Board can connect to Internet. Ensure your RaspberryPi Board can connect to Internet.
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">03</span> <span class="circle">03</span>
&nbsp;&nbsp;&nbsp;Download RaspberryPi Agent via [Download Agent] button above. Download RaspberryPi Agent via [Download Agent] button above.
(Alternatively you can use the "curl" command to directly download the Agent to your (Alternatively you can use the "curl" command to directly download the Agent to your
RaspberryPi.) RaspberryPi.)
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">04</span> <span class="circle">04</span>
&nbsp;&nbsp;&nbsp;Copy downloaded Agent into your RaspberryPi. Copy downloaded Agent into your RaspberryPi.
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">05</span> <span class="circle">05</span>
&nbsp;&nbsp;&nbsp;Unzip the downloaded Agent and start terminal to run below commands. Unzip the downloaded Agent and start terminal to run below commands.
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<span class="fw-stack fw-lg margin-right"> <span class="fw-stack fw-lg margin-right">
<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-ring fw-stack-2x"></i>
<i class="fw fw-right-arrow fw-stack-1x"></i> <i class="fw fw-right-arrow fw-stack-1x"></i>
</span> </span>
&nbsp;&nbsp;&nbsp;[sudo ./testAgent.sh] &nbsp;&nbsp; - &nbsp;&nbsp; Script to test agent [sudo ./testAgent.sh] - Script to test agent
functionality. functionality.
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<span class="fw-stack fw-lg margin-right"> <span class="fw-stack fw-lg margin-right">
<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-ring fw-stack-2x"></i>
<i class="fw fw-right-arrow fw-stack-1x"></i> <i class="fw fw-right-arrow fw-stack-1x"></i>
</span> </span>
&nbsp;&nbsp;&nbsp;[sudo ./startService.sh] &nbsp;&nbsp; - &nbsp;&nbsp; Use this to start [sudo ./startService.sh] - Use this to start
agent as Daemon. agent as Daemon.
</li> </li>
</ul> </ul>
@ -254,17 +254,17 @@
<ul class="list-unstyled"> <ul class="list-unstyled">
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">01</span> <span class="circle">01</span>
&nbsp;&nbsp;&nbsp;You can view all your connected devices at You can view all your connected devices at
<a href="{{@app.context}}/devices">[Device Management]</a> page. <a href="{{@app.context}}/devices">[Device Management]</a> page.
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">02</span> <span class="circle">02</span>
&nbsp;&nbsp;&nbsp;Select one of connected devices and check for available control Select one of connected devices and check for available control
operations and monitor Real-Time data. operations and monitor Real-Time data.
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">03</span> <span class="circle">03</span>
&nbsp;&nbsp;&nbsp;You can also view analytics of the data published to IoT-Server by You can also view analytics of the data published to IoT-Server by
navigating to Device Analytics page. navigating to Device Analytics page.
</li> </li>
</ul> </ul>

View File

@ -22,7 +22,7 @@
<parent> <parent>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<artifactId>iot-plugins</artifactId> <artifactId>iot-plugins</artifactId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -23,7 +23,7 @@
<parent> <parent>
<artifactId>virtual-fire-alarm-plugin</artifactId> <artifactId>virtual-fire-alarm-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -23,7 +23,7 @@
<parent> <parent>
<artifactId>virtual-fire-alarm-plugin</artifactId> <artifactId>virtual-fire-alarm-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -21,7 +21,7 @@
<parent> <parent>
<artifactId>virtual-fire-alarm-plugin</artifactId> <artifactId>virtual-fire-alarm-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -23,7 +23,7 @@
<parent> <parent>
<artifactId>virtual-fire-alarm-plugin</artifactId> <artifactId>virtual-fire-alarm-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -21,7 +21,7 @@
<parent> <parent>
<artifactId>virtual-fire-alarm-plugin</artifactId> <artifactId>virtual-fire-alarm-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -23,7 +23,7 @@
<parent> <parent>
<artifactId>virtual-fire-alarm-plugin</artifactId> <artifactId>virtual-fire-alarm-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -66,9 +66,9 @@
<div class="panel-body"> <div class="panel-body">
<div id="policy-spinner" class="wr-advance-operations-init hidden"> <div id="policy-spinner" class="wr-advance-operations-init hidden">
<br> <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<i class="fw fw-settings fw-spin fw-2x"></i> <i class="fw fw-settings fw-spin fw-2x"></i>
&nbsp;&nbsp;&nbsp;
Loading Policies . . . Loading Policies . . .
<br> <br>
<br> <br>
@ -95,9 +95,9 @@
<div class="panel-body"> <div class="panel-body">
<div id="operations-spinner" class="wr-advance-operations-init hidden"> <div id="operations-spinner" class="wr-advance-operations-init hidden">
<br> <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<i class="fw fw-settings fw-spin fw-2x"></i> <i class="fw fw-settings fw-spin fw-2x"></i>
&nbsp;&nbsp;&nbsp;
Loading Operations Log . . . Loading Operations Log . . .
<br> <br>
<br> <br>

View File

@ -63,7 +63,7 @@
</div> </div>
<div class="wr-input-control wr-btn-grp"> <div class="wr-input-control wr-btn-grp">
<button id="save-general-btn-virtualfirealarm" class="wr-btn" onclick="addConfiguration();"> <button id="save-general-btn-virtualfirealarm" class="wr-btn" onclick="addConfiguration();">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Save&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Save
</button> </button>
</div> </div>
</div> </div>

View File

@ -41,21 +41,21 @@
<ul class="list-unstyled"> <ul class="list-unstyled">
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">STEP 01</span> <span class="circle">STEP 01</span>
&nbsp;&nbsp;&nbsp;Go ahead and [Download] the Device. Go ahead and [Download] the Device.
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">STEP 02</span> <span class="circle">STEP 02</span>
&nbsp;&nbsp;&nbsp;Proceed to [Prepare] section. Proceed to [Prepare] section.
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">STEP 03</span> <span class="circle">STEP 03</span>
&nbsp;&nbsp;&nbsp;Read [Try Out] section to further experiment with the device. Read [Try Out] section to further experiment with the device.
</li> </li>
</ul> </ul>
<br> <br>
<a href="/api-store/apis/info?name={{@uriParams.deviceType}}&version=1.0.0&provider=admin" <a href="/api-store/apis/info?name={{@uriParams.deviceType}}&version=1.0.0&provider=admin"
class="btn-operations" class="btn-operations"
target="_blank"><i class="fw fw-api"></i> View API</i> &nbsp; target="_blank"><i class="fw fw-api"></i> View API</i>
</a> </a>
<a href="#" class="download-link btn-operations"> <a href="#" class="download-link btn-operations">
<i class="fw fw-download"></i>Download Agent</a> <i class="fw fw-download"></i>Download Agent</a>
@ -71,7 +71,7 @@
<i class="fw fw-add fw-stack-1x fw-inverse"></i> <i class="fw fw-add fw-stack-1x fw-inverse"></i>
</span> </span>
</span> </span>
&nbsp;&nbsp;Add your new firealarm device to {{@app.conf.appName}} Add your new firealarm device to {{@app.conf.appName}}
</h4> </h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i>
</button> </button>
@ -99,7 +99,7 @@
<input type="radio" name="sketchType" value="virtual_firealarm" <input type="radio" name="sketchType" value="virtual_firealarm"
id="virtual_firealarm" id="virtual_firealarm"
checked> checked>
<label for="simple_agent">Simple Agent</label> &nbsp;&nbsp; <label for="simple_agent">Simple Agent</label>
<input type="radio" name="sketchType" <input type="radio" name="sketchType"
value="virtual_firealarm_advanced" value="virtual_firealarm_advanced"
id="virtual_firealarm_advanced"> id="virtual_firealarm_advanced">
@ -148,7 +148,7 @@
<div class="buttons"> <div class="buttons">
<a href="#" id="device-401-link" class="blue-button"> <a href="#" id="device-401-link" class="blue-button">
Goto Login Page Goto Login Page
</a>&nbsp;&nbsp; </a>
<a href="#" onclick="hidePopup();" class="btn-operations"> <a href="#" onclick="hidePopup();" class="btn-operations">
Cancel Cancel
</a> </a>
@ -209,19 +209,19 @@
<ul class="list-unstyled"> <ul class="list-unstyled">
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">01</span> <span class="circle">01</span>
&nbsp;&nbsp;&nbsp;Download your VirtualFireAlarm using [Download Agent] button above. Download your VirtualFireAlarm using [Download Agent] button above.
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">02</span> <span class="circle">02</span>
&nbsp;&nbsp;&nbsp;Unzip the downloaded Agent. Unzip the downloaded Agent.
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">03</span> <span class="circle">03</span>
&nbsp;&nbsp;&nbsp;Move into the unzipped Agent folder in the terminal. Move into the unzipped Agent folder in the terminal.
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">04</span> <span class="circle">04</span>
&nbsp;&nbsp;&nbsp;Unzip the downloaded Agent and start terminal to run this command: [sh Unzip the downloaded Agent and start terminal to run this command: [sh
start-device.sh] start-device.sh]
</li> </li>
</ul> </ul>
@ -244,17 +244,17 @@
<ul class="list-unstyled"> <ul class="list-unstyled">
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">01</span> <span class="circle">01</span>
&nbsp;&nbsp;&nbsp;You can view all your connected devices at You can view all your connected devices at
<a href="{{@app.context}}/devices">[Device Management]</a> page. <a href="{{@app.context}}/devices">[Device Management]</a> page.
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">02</span> <span class="circle">02</span>
&nbsp;&nbsp;&nbsp;Select one of connected devices and check for available control Select one of connected devices and check for available control
operations and monitor Real-Time data. operations and monitor Real-Time data.
</li> </li>
<li class="padding-top-double"> <li class="padding-top-double">
<span class="circle">03</span> <span class="circle">03</span>
&nbsp;&nbsp;&nbsp;You can also view analytics of the data published to IoT-Server by You can also view analytics of the data published to IoT-Server by
navigating to Device Analytics page. navigating to Device Analytics page.
</li> </li>
</ul> </ul>

View File

@ -22,7 +22,7 @@
<parent> <parent>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<artifactId>iot-plugins</artifactId> <artifactId>iot-plugins</artifactId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -21,7 +21,7 @@
<parent> <parent>
<artifactId>android-plugin</artifactId> <artifactId>android-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -36,7 +36,7 @@ import java.util.List;
@XmlAccessorType(XmlAccessType.NONE) @XmlAccessorType(XmlAccessType.NONE)
@ApiModel( @ApiModel(
value = "PlatformConfiguration", value = "PlatformConfiguration",
description = "This class carries all information related to a Tenant configuration" description = "This class carries all the information related to Android platform configurations."
) )
public class AndroidPlatformConfiguration implements Serializable { public class AndroidPlatformConfiguration implements Serializable {
public static final int INVALID_NOTIFIER_FREQUENCY = -1; public static final int INVALID_NOTIFIER_FREQUENCY = -1;

View File

@ -39,7 +39,7 @@ import java.util.List;
tags = {"devicemgt_android"}) tags = {"devicemgt_android"})
@Api(value = "Android Device Management", @Api(value = "Android Device Management",
description = "This carries all the resources related to Android device management functionalities") description = "This carries all the resources related to the Android device management functionalities.")
@Path("/devices") @Path("/devices")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
@ -51,13 +51,14 @@ public interface DeviceManagementService {
produces = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON,
consumes = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON,
httpMethod = "PUT", httpMethod = "PUT",
value = "Update the application list of a device", value = "Updating the Application Details on Android Devices",
notes = "Update the details of the applications that are installed on Android devices.",
tags = "Android Device Management" tags = "Android Device Management"
) )
@ApiResponses(value = { @ApiResponses(value = {
@ApiResponse( @ApiResponse(
code = 200, code = 200,
message = "OK. \n Application list has been updated successfully", message = "OK. \n Successfully updated the application details.",
responseHeaders = { responseHeaders = {
@ResponseHeader( @ResponseHeader(
name = "Content-Location", name = "Content-Location",
@ -71,17 +72,17 @@ public interface DeviceManagementService {
"Used by caches, or in conditional requests."), "Used by caches, or in conditional requests."),
@ResponseHeader( @ResponseHeader(
name = "Last-Modified", name = "Last-Modified",
description = "Date and time the resource has been modified the last time.\n" + description = "Date and time the resource was last modified.\n" +
"Used by caches, or in conditional requests.")}), "Used by caches, or in conditional requests.")}),
@ApiResponse( @ApiResponse(
code = 400, code = 400,
message = "Bad Request. \n Invalid request or validation error."), message = "Bad Request. \n Invalid request or validation error."),
@ApiResponse( @ApiResponse(
code = 404, code = 404,
message = "Not Found. \n Resource to be deleted does not exist."), message = "Not Found. \n The specified resource does not exist."),
@ApiResponse( @ApiResponse(
code = 415, code = 415,
message = "Unsupported media type. \n The entity of the request was in a not supported format."), message = "Unsupported media type. \n The format of the requested entity was not supported."),
@ApiResponse( @ApiResponse(
code = 500, code = 500,
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
@ -91,14 +92,14 @@ public interface DeviceManagementService {
Response updateApplicationList( Response updateApplicationList(
@ApiParam( @ApiParam(
name = "id", name = "id",
value = "Device Identifier") value = "The unique device identifier.")
@NotNull @NotNull
@Size(min = 2 , max = 45) @Size(min = 2 , max = 45)
@Pattern(regexp = "^[A-Za-z0-9]*$") @Pattern(regexp = "^[A-Za-z0-9]*$")
@PathParam("id") String id, @PathParam("id") String id,
@ApiParam( @ApiParam(
name = "applications", name = "applications",
value = "List of applications that need to be persisted against the device") value = "The properties to update application details. Multiple applications can be updated using comma separated values.")
List<AndroidApplication> androidApplications); List<AndroidApplication> androidApplications);
@PUT @PUT
@ -106,16 +107,18 @@ public interface DeviceManagementService {
@ApiOperation( @ApiOperation(
produces = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON,
httpMethod = "PUT", httpMethod = "PUT",
value = "Get the operation list pending for the device", value = "Getting the Pending Operation List",
responseContainer = "List", responseContainer = "List",
notes = "The Android agent communicates with the server to get the operations that are queued up " + notes = "The Android agent communicates with the server to get the operations that are queued up " +
"at the server end for a given device using via this particular resource", "at the server end via this REST API." +
" While getting the pending operations the details of the operations executed at the device end is shared with the server. " +
"The server then updates the status of the operations that were carried out on the device.",
response = Operation.class, response = Operation.class,
tags = "Android Device Management") tags = "Android Device Management")
@ApiResponses(value = { @ApiResponses(value = {
@ApiResponse( @ApiResponse(
code = 200, code = 200,
message = "OK. \n Successfully fetched the pending application list of the Android device.", message = "OK. \n Successfully fetched the pending operations of the Android device.",
response = Operation.class, response = Operation.class,
responseContainer = "List", responseContainer = "List",
responseHeaders = { responseHeaders = {
@ -128,33 +131,36 @@ public interface DeviceManagementService {
"Used by caches, or in conditional requests."), "Used by caches, or in conditional requests."),
@ResponseHeader( @ResponseHeader(
name = "Last-Modified", name = "Last-Modified",
description = "Date and time the resource has been modified the last time.\n" + description = "Date and time the resource was last modified.\n" +
"Used by caches, or in conditional requests.") "Used by caches, or in conditional requests.")
}), }),
@ApiResponse( @ApiResponse(
code = 304, code = 304,
message = "Not Modified. \n Empty body because the client has already the latest version of the requested resource."), message = "Not Modified. \n Empty body because the client already has the latest version of the requested resource."),
@ApiResponse( @ApiResponse(
code = 406, code = 406,
message = "Not Acceptable.\n The requested media type is not supported"), message = "Not Acceptable.\n The requested media type is not supported"),
@ApiResponse( @ApiResponse(
code = 500, code = 500,
message = "Internal Server Error. \n Server error occurred while fetching policies.") message = "Internal Server Error. \n Server error occurred while fetching the list of pending operations.")
}) })
@Permission(name = "Enroll Device", permission = "/device-mgt/devices/enroll/android") @Permission(name = "Enroll Device", permission = "/device-mgt/devices/enroll/android")
Response getPendingOperations( Response getPendingOperations(
@ApiParam( @ApiParam(
name = "id", name = "id",
value = "Device Identifier") value = "The unique device identifier.",
required = true)
@PathParam("id") String id, @PathParam("id") String id,
@ApiParam( @ApiParam(
name = "If-Modified-Since", name = "If-Modified-Since",
value = "Validates if the requested variant has not been modified since the time specified", value = "Checks if the requested variant was modified, since the specified date-time.\n" +
"Provide the value in the following format: EEE, d MMM yyyy HH:mm:ss Z.\n" +
"Example: Mon, 05 Jan 2014 15:10:00 +0200.",
required = false) required = false)
@HeaderParam("If-Modified-Since") String ifModifiedSince, @HeaderParam("If-Modified-Since") String ifModifiedSince,
@ApiParam( @ApiParam(
name = "resultOperations", name = "resultOperations",
value = "Device Operation Status") value = "Properties to update the device operations and their status.")
List<? extends Operation> resultOperations); List<? extends Operation> resultOperations);
@POST @POST
@ -162,17 +168,17 @@ public interface DeviceManagementService {
produces = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON,
consumes = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON,
httpMethod = "POST", httpMethod = "POST",
value = "Register an Android Device", value = "Registering an Android Device",
notes = "When carrying out device registration via an Android device, you need to initially install" + notes = "When registering an Android device, you need to install" +
" an Android Agent on the device, before being able to register the device with WSO2 EMM. Instead," + " the Android Agent on the device, before being able to register the device with WSO2 EMM. Instead," +
" you can use this REST API to register an Android device with WSO2 EMM, without having to install" + " you can use this REST API to register an Android device with WSO2 EMM, without having to install" +
" an Android Agent on the respective device", " an Android Agent. This API can be mainly used to test the device enrollment process.",
tags = "Android Device Management" tags = "Android Device Management"
) )
@ApiResponses(value = { @ApiResponses(value = {
@ApiResponse( @ApiResponse(
code = 201, code = 201,
message = "Created. \n Device enrollment has successfully been created", message = "Created. \n Successfully created an instance of the device.",
responseHeaders = { responseHeaders = {
@ResponseHeader( @ResponseHeader(
name = "Content-Location", name = "Content-Location",
@ -186,11 +192,11 @@ public interface DeviceManagementService {
"Used by caches, or in conditional requests."), "Used by caches, or in conditional requests."),
@ResponseHeader( @ResponseHeader(
name = "Last-Modified", name = "Last-Modified",
description = "Date and time the resource has been modified the last time.\n" + description = "Date and time the resource was last modified.\n" +
"Used by caches, or in conditional requests.")}), "Used by caches, or in conditional requests.")}),
@ApiResponse( @ApiResponse(
code = 303, code = 303,
message = "See Other. \n Source can be retrieved from the URL specified at the Location header.", message = "See Other. \n The source can be retrieved from the URL specified in the location header.",
responseHeaders = { responseHeaders = {
@ResponseHeader( @ResponseHeader(
name = "Content-Location", name = "Content-Location",
@ -200,14 +206,16 @@ public interface DeviceManagementService {
message = "Bad Request. \n Invalid request or validation error."), message = "Bad Request. \n Invalid request or validation error."),
@ApiResponse( @ApiResponse(
code = 415, code = 415,
message = "Unsupported media type. \n The entity of the request was in a not supported format."), message = "Unsupported media type. \n The format of the requested entity was not supported.\n"),
@ApiResponse( @ApiResponse(
code = 500, code = 500,
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while adding a new device.") "Server error occurred while adding a new device.")
}) })
@Permission(name = "Enroll Device", permission = "/device-mgt/devices/enroll/android") @Permission(name = "Enroll Device", permission = "/device-mgt/devices/enroll/android")
Response enrollDevice(@ApiParam(name = "device", value = "Device Information to be enroll") Response enrollDevice(@ApiParam(
name = "device",
value = "The properties required to enroll a device.")
@Valid AndroidDevice device); @Valid AndroidDevice device);
@GET @GET
@ -215,7 +223,7 @@ public interface DeviceManagementService {
@ApiOperation( @ApiOperation(
httpMethod = "GET", httpMethod = "GET",
value = "Getting the Registration Status of an Android Device", value = "Getting the Registration Status of an Android Device",
notes = "Use this REST API to retrieve the registration status of an Android device", notes = "Use this REST API to retrieve the registration status of an Android device.",
tags = "Android Device Management" tags = "Android Device Management"
) )
@ApiResponses(value = { @ApiResponses(value = {
@ -232,12 +240,12 @@ public interface DeviceManagementService {
"Used by caches, or in conditional requests."), "Used by caches, or in conditional requests."),
@ResponseHeader( @ResponseHeader(
name = "Last-Modified", name = "Last-Modified",
description = "Date and time the resource has been modified the last time.\n" + description = "Date and time the resource was last modified.\n" +
"Used by caches, or in conditional requests."), "Used by caches, or in conditional requests."),
}), }),
@ApiResponse( @ApiResponse(
code = 304, code = 304,
message = "Not Modified. \n Empty body because the client has already the latest version of the requested resource."), message = "Not Modified. \n Empty body because the client already has the latest version of the requested resource."),
@ApiResponse( @ApiResponse(
code = 406, code = 406,
message = "Not Acceptable.\n The requested media type is not supported"), message = "Not Acceptable.\n The requested media type is not supported"),
@ -249,11 +257,13 @@ public interface DeviceManagementService {
Response isEnrolled( Response isEnrolled(
@ApiParam( @ApiParam(
name = "id", name = "id",
value = "Device Identifier") value = "The unique device identifier")
@PathParam("id") String id, @PathParam("id") String id,
@ApiParam( @ApiParam(
name = "If-Modified-Since", name = "If-Modified-Since",
value = "Validates if the requested variant has not been modified since the time specified", value = "Checks if the requested variant was modified, since the specified date-time.\n" +
"Provide the value in the following format: EEE, d MMM yyyy HH:mm:ss Z.\n" +
"Example: Mon, 05 Jan 2014 15:10:00 +0200",
required = false) required = false)
@HeaderParam("If-Modified-Since") String ifModifiedSince); @HeaderParam("If-Modified-Since") String ifModifiedSince);
@ -262,14 +272,14 @@ public interface DeviceManagementService {
@ApiOperation( @ApiOperation(
httpMethod = "PUT", httpMethod = "PUT",
value = "Updating the Registration Details of an Android Device", value = "Updating the Registration Details of an Android Device",
notes = "Use this REST API to update the registration details of an Android device", notes = "Use this REST API to update the registration details of an Android device.",
tags = "Android Device Management" tags = "Android Device Management"
) )
@ApiResponses( @ApiResponses(
value = { value = {
@ApiResponse( @ApiResponse(
code = 200, code = 200,
message = "OK. \n Device enrollment has been updated successfully", message = "OK. \n Successfully updated the device enrollment details.",
responseHeaders = { responseHeaders = {
@ResponseHeader( @ResponseHeader(
name = "Content-Location", name = "Content-Location",
@ -283,17 +293,17 @@ public interface DeviceManagementService {
"Used by caches, or in conditional requests."), "Used by caches, or in conditional requests."),
@ResponseHeader( @ResponseHeader(
name = "Last-Modified", name = "Last-Modified",
description = "Date and time the resource has been modified the last time.\n" + description = "Date and time the resource was last modified.\n" +
"Used by caches, or in conditional requests.")}), "Used by caches, or in conditional requests.")}),
@ApiResponse( @ApiResponse(
code = 400, code = 400,
message = "Bad Request. \n Invalid request or validation error."), message = "Bad Request. \n Invalid request or validation error."),
@ApiResponse( @ApiResponse(
code = 404, code = 404,
message = "Not Found. \n Resource to be deleted does not exist."), message = "Not Found. \n The specified resource does not exist."),
@ApiResponse( @ApiResponse(
code = 415, code = 415,
message = "Unsupported media type. \n The entity of the request was in a not supported format."), message = "Unsupported media type. \n The format of the requested entity was not supported."),
@ApiResponse( @ApiResponse(
code = 500, code = 500,
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
@ -303,27 +313,27 @@ public interface DeviceManagementService {
Response modifyEnrollment( Response modifyEnrollment(
@ApiParam( @ApiParam(
name = "id", name = "id",
value = "Device Identifier") value = "The unique device identifier.")
@PathParam("id") String id, @PathParam("id") String id,
@ApiParam( @ApiParam(
name = "device", name = "device",
value = "Device information to be modify") @Valid AndroidDevice androidDevice); value = "The properties of required to update device enrollment details.") @Valid AndroidDevice androidDevice);
@DELETE @DELETE
@Path("/{id}") @Path("/{id}")
@ApiOperation( @ApiOperation(
httpMethod = "DELETE", httpMethod = "DELETE",
value = "Un-register an Android Device", value = "Unregistering an Android Device",
notes = "Use this REST API to un-register a specific Android device", notes = "Use this REST API to unregister an Android device.",
tags = "Android Device Management" tags = "Android Device Management"
) )
@ApiResponses(value = { @ApiResponses(value = {
@ApiResponse( @ApiResponse(
code = 200, code = 200,
message = "OK. \n Device has successfully been dis-enrolled"), message = "OK. \n Successfully disenrolled the device."),
@ApiResponse( @ApiResponse(
code = 404, code = 404,
message = "Not Found. \n Resource to be deleted does not exist."), message = "Not Found. \n The specified resource does not exist."),
@ApiResponse( @ApiResponse(
code = 500, code = 500,
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
@ -333,7 +343,7 @@ public interface DeviceManagementService {
Response disEnrollDevice( Response disEnrollDevice(
@ApiParam( @ApiParam(
name = "id", name = "id",
value = "Device Identifier") value = "The unique device identifier.")
@PathParam("id") String id); @PathParam("id") String id);
} }

View File

@ -34,8 +34,7 @@ import javax.ws.rs.core.Response;
context = "api/device-mgt/android/v1.0/configuration", context = "api/device-mgt/android/v1.0/configuration",
tags = {"devicemgt_android"}) tags = {"devicemgt_android"})
@Api(value = "Android Configuration Management", description = "This API carries all resource associated with " + @Api(value = "Android Configuration Management", description = "This API carries all the resource used to mange the Android platform configurations.")
"manipulating the general configurations of Android platform")
@Path("/configuration") @Path("/configuration")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
@ -46,14 +45,14 @@ public interface DeviceTypeConfigurationService {
produces = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON,
httpMethod = "GET", httpMethod = "GET",
value = "Getting Android Platform Configurations", value = "Getting Android Platform Configurations",
notes = "Get the Android platform configuration details using this REST API", notes = "Get the Android platform configuration details using this REST API.",
response = PlatformConfiguration.class, response = PlatformConfiguration.class,
tags = "Android Configuration Management" tags = "Android Configuration Management"
) )
@ApiResponses(value = { @ApiResponses(value = {
@ApiResponse( @ApiResponse(
code = 200, code = 200,
message = "OK. \n Successfully fetched Android platform configuration.", message = "OK. \n Successfully fetched the Android platform configurations.",
response = PlatformConfiguration.class, response = PlatformConfiguration.class,
responseHeaders = { responseHeaders = {
@ResponseHeader( @ResponseHeader(
@ -65,27 +64,29 @@ public interface DeviceTypeConfigurationService {
"Used by caches, or in conditional requests."), "Used by caches, or in conditional requests."),
@ResponseHeader( @ResponseHeader(
name = "Last-Modified", name = "Last-Modified",
description = "Date and time the resource has been modified the last time.\n" + description = "Date and time the resource was last modified.\n" +
"Used by caches, or in conditional requests."), "Used by caches, or in conditional requests."),
}), }),
@ApiResponse( @ApiResponse(
code = 304, code = 304,
message = "Not Modified. \n Empty body because the client has already the latest version of the requested resource."), message = "Not Modified. \n Empty body because the client already has the latest version of the requested resource."),
@ApiResponse( @ApiResponse(
code = 404, code = 404,
message = "Not Found. \n Resource to be deleted does not exist."), message = "Not Found. \n The specified resource does not exist."),
@ApiResponse( @ApiResponse(
code = 406, code = 406,
message = "Not Acceptable.\n The requested media type is not supported"), message = "Not Acceptable.\n The requested media type is not supported"),
@ApiResponse( @ApiResponse(
code = 500, code = 500,
message = "Internal Server Error. \n Server error occurred while fetching Android platform configuration.") message = "Internal Server Error. \n Server error occurred while fetching the Android platform configuration.")
}) })
@Permission(name = "View Configurations", permission = "/device-mgt/platform-configurations/view") @Permission(name = "View Configurations", permission = "/device-mgt/platform-configurations/view")
Response getConfiguration( Response getConfiguration(
@ApiParam( @ApiParam(
name = "If-Modified-Since", name = "If-Modified-Since",
value = "Validates if the requested variant has not been modified since the time specified", value = "Checks if the requested variant was modified, since the specified date-time.\n" +
"Provide the value in the following format: EEE, d MMM yyyy HH:mm:ss Z.\n" +
"Example: Mon, 05 Jan 2014 15:10:00 +0200",
required = false) required = false)
@HeaderParam("If-Modified-Since") String ifModifiedSince); @HeaderParam("If-Modified-Since") String ifModifiedSince);
@ -94,14 +95,14 @@ public interface DeviceTypeConfigurationService {
consumes = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON,
httpMethod = "PUT", httpMethod = "PUT",
value = "Updating Android Platform Configuration.", value = "Updating Android Platform Configurations",
notes = "Update the Android platform configurations using this REST API.", notes = "Update the Android platform configurations using this REST API.",
tags = "Android Configuration Management" tags = "Android Configuration Management"
) )
@ApiResponses(value = { @ApiResponses(value = {
@ApiResponse( @ApiResponse(
code = 200, code = 200,
message = "OK. \n Android platform configuration has been updated successfully", message = "OK. \n Successfully updated the Android platform configurations.",
responseHeaders = { responseHeaders = {
@ResponseHeader( @ResponseHeader(
name = "Content-Location", name = "Content-Location",
@ -115,26 +116,26 @@ public interface DeviceTypeConfigurationService {
"Used by caches, or in conditional requests."), "Used by caches, or in conditional requests."),
@ResponseHeader( @ResponseHeader(
name = "Last-Modified", name = "Last-Modified",
description = "Date and time the resource has been modified the last time.\n" + description = "Date and time the resource was last modified.\n" +
"Used by caches, or in conditional requests.")}), "Used by caches, or in conditional requests.")}),
@ApiResponse( @ApiResponse(
code = 400, code = 400,
message = "Bad Request. \n Invalid request or validation error."), message = "Bad Request. \n Invalid request or validation error."),
@ApiResponse( @ApiResponse(
code = 404, code = 404,
message = "Not Found. \n Resource to be deleted does not exist."), message = "Not Found. \n The specified resource does not exist."),
@ApiResponse( @ApiResponse(
code = 415, code = 415,
message = "Unsupported media type. \n The entity of the request was in a not supported format."), message = "Unsupported media type. \n The format of the requested entity was not supported."),
@ApiResponse( @ApiResponse(
code = 500, code = 500,
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
"Server error occurred while modifying Android platform configuration.") "Server error occurred while modifying the Android platform configuration.")
}) })
@Permission(name = "Manage Configurations", permission = "/device-mgt/platform-configurations/manage") @Permission(name = "Manage Configurations", permission = "/device-mgt/platform-configurations/manage")
Response updateConfiguration( Response updateConfiguration(
@ApiParam(name = "configuration", @ApiParam(name = "configuration",
value = "AndroidPlatformConfiguration") value = "The properties to update the Android platform configurations.")
@Valid AndroidPlatformConfiguration androidPlatformConfiguration); @Valid AndroidPlatformConfiguration androidPlatformConfiguration);
@GET @GET
@ -143,9 +144,9 @@ public interface DeviceTypeConfigurationService {
@ApiOperation( @ApiOperation(
produces = MediaType.TEXT_PLAIN, produces = MediaType.TEXT_PLAIN,
httpMethod = "GET", httpMethod = "GET",
value = "Getting the License Agreement for Android Device Registration", value = "Getting the License Agreement for the Android Device Registration",
notes = "Use this REST API to retrieve the license agreement that is used for the Android device " + notes = "Use this REST API to retrieve the license agreement that is used for the Android device " +
"registration process", "registration process.",
response = String.class, response = String.class,
tags = "Android Configuration Management") tags = "Android Configuration Management")
@ApiResponses(value = { @ApiResponses(value = {
@ -163,27 +164,29 @@ public interface DeviceTypeConfigurationService {
"Used by caches, or in conditional requests."), "Used by caches, or in conditional requests."),
@ResponseHeader( @ResponseHeader(
name = "Last-Modified", name = "Last-Modified",
description = "Date and time the resource has been modified the last time.\n" + description = "Date and time the resource was last modified.\n" +
"Used by caches, or in conditional requests."), "Used by caches, or in conditional requests."),
}), }),
@ApiResponse( @ApiResponse(
code = 304, code = 304,
message = "Not Modified. \n Empty body because the client has already the latest version of the requested resource."), message = "Not Modified. \n Empty body because the client already has the latest version of the requested resource."),
@ApiResponse( @ApiResponse(
code = 404, code = 404,
message = "Not Found. \n Resource to be deleted does not exist."), message = "Not Found. \n The specified resource does not exist."),
@ApiResponse( @ApiResponse(
code = 406, code = 406,
message = "Not Acceptable.\n The requested media type is not supported"), message = "Not Acceptable.\n The requested media type is not supported"),
@ApiResponse( @ApiResponse(
code = 500, code = 500,
message = "Internal Server Error. \n Server error occurred while fetching Android license configuration.") message = "Internal Server Error. \n Server error occurred while fetching the Android license configuration.")
}) })
@Permission(name = "Enroll Device", permission = "/device-mgt/devices/enroll/android") @Permission(name = "Enroll Device", permission = "/device-mgt/devices/enroll/android")
Response getLicense( Response getLicense(
@ApiParam( @ApiParam(
name = "If-Modified-Since", name = "If-Modified-Since",
value = "Validates if the requested variant has not been modified since the time specified", value = "Checks if the requested variant was modified, since the specified date-time.\n" +
"Provide the value in the following format: EEE, d MMM yyyy HH:mm:ss Z.\n" +
"Example: Mon, 05 Jan 2014 15:10:00 +0200.",
required = false) required = false)
@HeaderParam("If-Modified-Since") String ifModifiedSince) throws AndroidAgentException; @HeaderParam("If-Modified-Since") String ifModifiedSince) throws AndroidAgentException;

View File

@ -35,9 +35,9 @@ import javax.ws.rs.core.Response;
context = "api/device-mgt/android/v1.0/events", context = "api/device-mgt/android/v1.0/events",
tags = {"devicemgt_android"}) tags = {"devicemgt_android"})
@Api(value = "Event Receiver", description = "Event publishing/retrieving related APIs.To enable Eventing need to" + @Api(value = "Event Receiver", description = "Event publishing/retrieving related APIs. To enable event publishing/retrieving you need to" +
" configure as ref-https://docs.wso2.com/display/EMM210/Managing+Event+Publishing+with+WSO2+Data+Analytics+Server, " + " configure WSO2 EMM as explained in https://docs.wso2.com/display/EMM220/Managing+Event+Publishing+with+WSO2+Data+Analytics+Server, " +
"https://docs.wso2.com/display/EMM210/Creating+a+New+Event+Stream+and+Receiver") "https://docs.wso2.com/display/EMM220/Creating+a+New+Event+Stream+and+Receiver")
@Path("/events") @Path("/events")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
@ -49,13 +49,13 @@ public interface EventReceiverService {
produces = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON,
consumes = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON,
httpMethod = "POST", httpMethod = "POST",
value = "Event publishing via REST API.", value = "Publishing Events",
notes = "Publish events received by the EMM Android client to WSO2 DAS using this API.", notes = "Publish events received by the WSO2 EMM Android client to the WSO2 Data Analytics Server (DAS) using this API.",
tags = "Event Receiver" tags = "Event Receiver"
) )
@ApiResponses( @ApiResponses(
value = { value = {
@ApiResponse(code = 201, message = "Created. \n Event is published successfully. Location header " + @ApiResponse(code = 201, message = "Created. \n Successfully published the event. Location header " +
"contains URL of newly enrolled device", "contains URL of newly enrolled device",
responseHeaders = { responseHeaders = {
@ResponseHeader( @ResponseHeader(
@ -70,12 +70,12 @@ public interface EventReceiverService {
"Used by caches, or in conditional requests."), "Used by caches, or in conditional requests."),
@ResponseHeader( @ResponseHeader(
name = "Last-Modified", name = "Last-Modified",
description = "Date and time the resource has been modified the last time.\n" + description = "Date and time the resource was last modified.\n" +
"Used by caches, or in conditional requests.") "Used by caches, or in conditional requests.")
}), }),
@ApiResponse( @ApiResponse(
code = 303, code = 303,
message = "See Other. \n Source can be retrieved from the URL specified at the Location header.", message = "See Other. \n The source can be retrieved from the URL specified in the location header.",
responseHeaders = { responseHeaders = {
@ResponseHeader( @ResponseHeader(
name = "Content-Location", name = "Content-Location",
@ -85,7 +85,7 @@ public interface EventReceiverService {
message = "Bad Request. \n Invalid request or validation error."), message = "Bad Request. \n Invalid request or validation error."),
@ApiResponse( @ApiResponse(
code = 415, code = 415,
message = "Unsupported media type. \n The entity of the request was in a not supported format."), message = "Unsupported media type. \n The format of the requested entity was not supported."),
@ApiResponse( @ApiResponse(
code = 500, code = 500,
message = "Internal Server Error. \n " + message = "Internal Server Error. \n " +
@ -104,10 +104,10 @@ public interface EventReceiverService {
produces = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON,
httpMethod = "GET", httpMethod = "GET",
value = "Getting event details for a given time period.", value = "Getting event details for a given time period.",
notes = "Get the event details of a device for a given time duration using this API.Request must contain " + notes = "Get the event details of a device for a given time duration using this API. The request must contain " +
"the device identifier. Optionally, both, date from and date to value should be present to get " + "the device identifier. Optionally, both date from and date to value should be present to get " +
"alerts between times. Based on device type and the device identifier also filtering can be done" + "alerts between a specified time. Filtering can also be done based on the device type and the device identifier." +
"(This cannot be combined with to and from parameters).", "(This cannot be combined with the to and from parameters).",
response = DeviceState.class, response = DeviceState.class,
responseContainer = "List", responseContainer = "List",
tags = "Event Receiver" tags = "Event Receiver"
@ -116,12 +116,11 @@ public interface EventReceiverService {
value = { value = {
@ApiResponse( @ApiResponse(
code = 200, code = 200,
message = "OK. \n Event details of a device for a given time duration have been successfully fetched", message = "OK. \n Successfully fetched the event details of the specified device for a given time duration.",
response = DeviceState.class, responseContainer = "List"), response = DeviceState.class, responseContainer = "List"),
@ApiResponse( @ApiResponse(
code = 303, code = 303,
message = "See Other. \n Source can be retrieved from the URL specified at" + message = "See Other. \n The source can be retrieved from the URL specified in the location header.",
" the Location header.",
responseHeaders = { responseHeaders = {
@ResponseHeader(name = "Content-Location", description = "Source URL of the document.") @ResponseHeader(name = "Content-Location", description = "Source URL of the document.")
}), }),
@ -132,39 +131,44 @@ public interface EventReceiverService {
@ApiResponse( @ApiResponse(
code = 400, code = 400,
message = "Bad Request. \n Invalid request or validation error. You must provide" + message = "Bad Request. \n Invalid request or validation error. You must provide" +
" the device identifier. Additionally, the device identifier can be combined with either the type" + " the device identifier. Additionally, the device identifier can be combined with either the device type" +
" OR date from and to."), " OR the from and to date."),
@ApiResponse( @ApiResponse(
code = 404, code = 404,
message = "Not Found. \n Resource requested does not exist."), message = "Not Found. \n The specified resource does not exist."),
@ApiResponse( @ApiResponse(
code = 500, code = 500,
message = "Error occurred while getting published events for specific device.") message = "Error occurred while getting the published events for the specified device.")
}) })
@Permission(name = "Publish Events to DAS", permission = "/device-mgt/devices/enroll/android") @Permission(name = "Publish Events to DAS", permission = "/device-mgt/devices/enroll/android")
Response retrieveAlerts( Response retrieveAlerts(
@ApiParam( @ApiParam(
name = "id", name = "id",
value = "Device Identifier to be need to retrieve events.", value = "The unique device identifier.",
required = true) required = true)
@Size(min = 2, max = 45) @Size(min = 2, max = 45)
@QueryParam("id") String deviceId, @QueryParam("id") String deviceId,
@ApiParam( @ApiParam(
name = "from", name = "from",
value = "From Date.") value = "Specify the time and date from when you want to get the data." +
"Provide the time and date format in the unix/epoch format as the value for {unixTimestamp}. Use a Epoch convertor, to convert the time and date to this format.")
@QueryParam("from") long from, @QueryParam("from") long from,
@ApiParam( @ApiParam(
name = "to", name = "to",
value = "To Date.") value = "Specify the time and date up to when you require the data." +
"Provide the time and date format in the unix/epoch format as the value for {unixTimestamp}. Use a Epoch convertor, to convert the time and date to this format.")
@QueryParam("to") long to, @QueryParam("to") long to,
@ApiParam( @ApiParam(
name = "type", name = "type",
value = "Type of the Alert to be need to retrieve events.") value = "The alert type to retrieve the events." +
"Provide APPLICATION_STATE or RUNTIME_STATE as the value.")
@Size(min = 2, max = 45) @Size(min = 2, max = 45)
@QueryParam("type") String type, @QueryParam("type") String type,
@ApiParam( @ApiParam(
name = "If-Modified-Since", name = "If-Modified-Since",
value = "Validates if the requested variant has not been modified since the time specified", value = "Checks if the requested variant was modified, since the specified date-time.\n" +
"Provide the value in the following format: EEE, d MMM yyyy HH:mm:ss Z.\n" +
"Example: Mon, 05 Jan 2014 15:10:00 +0200",
required = false) required = false)
@HeaderParam("If-Modified-Since") String ifModifiedSince); @HeaderParam("If-Modified-Since") String ifModifiedSince);

View File

@ -1072,7 +1072,7 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
private static void validateScheduleDate(String dateString){ private static void validateScheduleDate(String dateString){
try { try {
if (dateString != null) { if (dateString != null && !dateString.isEmpty()) {
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
sdf.setLenient(false); sdf.setLenient(false);
sdf.parse(dateString); sdf.parse(dateString);

View File

@ -51,7 +51,7 @@
<property name="version" value="1.0"/> <property name="version" value="1.0"/>
<property name="host" value="localhost:9443"/> <property name="host" value="localhost:9443"/>
<property name="schemes" value="https" /> <property name="schemes" value="https" />
<property name="basePath" value="/api-device-mgt-android-v1.0"/> <property name="basePath" value="/api/device-mgt/android/v1.0"/>
<property name="title" value="Android Device Management API Definitions"/> <property name="title" value="Android Device Management API Definitions"/>
<property name="contact" value="dev@wso2.org"/> <property name="contact" value="dev@wso2.org"/>
<property name="license" value="Apache 2.0"/> <property name="license" value="Apache 2.0"/>

View File

@ -23,13 +23,13 @@
<parent> <parent>
<artifactId>android-plugin</artifactId> <artifactId>android-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>org.wso2.carbon.device.mgt.mobile.android.ui</artifactId> <artifactId>org.wso2.carbon.device.mgt.mobile.android.ui</artifactId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<name>WSO2 Carbon - Mobile Android UI</name> <name>WSO2 Carbon - Mobile Android UI</name>
<packaging>pom</packaging> <packaging>pom</packaging>

View File

@ -55,9 +55,9 @@
<div class="panel-body"> <div class="panel-body">
<div id="policy-spinner" class="wr-advance-operations-init hidden"> <div id="policy-spinner" class="wr-advance-operations-init hidden">
<br> <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<i class="fw fw-settings fw-spin fw-2x"></i> <i class="fw fw-settings fw-spin fw-2x"></i>
&nbsp;&nbsp;&nbsp;
Loading Policies . . . Loading Policies . . .
<br> <br>
<br> <br>
@ -85,9 +85,9 @@
<div id="policy-spinner" <div id="policy-spinner"
class="wr-advance-operations-init hidden"> class="wr-advance-operations-init hidden">
<br> <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<i class="fw fw-settings fw-spin fw-2x"></i> <i class="fw fw-settings fw-spin fw-2x"></i>
&nbsp;&nbsp;&nbsp;
Loading Policy Compliance . . . Loading Policy Compliance . . .
<br> <br>
<br> <br>
@ -123,9 +123,9 @@
<div class="panel-body"> <div class="panel-body">
<div id="apps-spinner" class="wr-advance-operations-init hidden"> <div id="apps-spinner" class="wr-advance-operations-init hidden">
<br> <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<i class="fw fw-settings fw-spin fw-2x"></i> <i class="fw fw-settings fw-spin fw-2x"></i>
&nbsp;&nbsp;&nbsp;
Loading App List . . . Loading App List . . .
<br> <br>
<br> <br>
@ -147,9 +147,9 @@
<div id="operations-spinner" <div id="operations-spinner"
class="wr-advance-operations-init hidden"> class="wr-advance-operations-init hidden">
<br> <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<i class="fw fw-settings fw-spin fw-2x"></i> <i class="fw fw-settings fw-spin fw-2x"></i>
&nbsp;&nbsp;&nbsp;
Loading Operations Log . . . Loading Operations Log . . .
<br> <br>
<br> <br>

View File

@ -14,8 +14,8 @@
<div class="wr-advance-operations"> <div class="wr-advance-operations">
<div class="wr-advance-operations-init"> <div class="wr-advance-operations-init">
<br> <br>
&nbsp;&nbsp;&nbsp;&nbsp;<i class="fw fw-settings fw-spin fw-2x"></i> <i class="fw fw-settings fw-spin fw-2x"></i>
&nbsp;&nbsp;&nbsp;Loading platform features . . . Loading platform features . . .
<br><br> <br><br>
</div> </div>
</div> </div>

View File

@ -21,13 +21,13 @@
<h3 class="uppercase">What You Need</h3> <h3 class="uppercase">What You Need</h3>
<hr> <hr>
<ul class="list-unstyled"> <ul class="list-unstyled">
<li class="padding-top-double"><span class="circle">STEP 01</span>&nbsp;&nbsp;&nbsp;Android <li class="padding-top-double"><span class="circle">STEP 01</span> Android
Mobile. Mobile.
</li> </li>
<li class="padding-top-double"><span class="circle">STEP 02</span>&nbsp;&nbsp;&nbsp;Go ahead <li class="padding-top-double"><span class="circle">STEP 02</span> Go ahead
and click [Enroll Device]. and click [Enroll Device].
</li> </li>
<li class="padding-top-double"><span class="circle">STEP 03</span>&nbsp;&nbsp;&nbsp;Proceed <li class="padding-top-double"><span class="circle">STEP 03</span> Proceed
to the [Prepare] section. to the [Prepare] section.
</li> </li>
</ul> </ul>

View File

@ -22,7 +22,7 @@
<parent> <parent>
<artifactId>android-plugin</artifactId> <artifactId>android-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -22,7 +22,7 @@
<parent> <parent>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<artifactId>mobile-plugins</artifactId> <artifactId>mobile-plugins</artifactId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -23,7 +23,7 @@
<parent> <parent>
<artifactId>mobile-base-plugin</artifactId> <artifactId>mobile-base-plugin</artifactId>
<groupId>org.wso2.carbon.devicemgt-plugins</groupId> <groupId>org.wso2.carbon.devicemgt-plugins</groupId>
<version>2.2.5-SNAPSHOT</version> <version>2.2.6-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>

View File

@ -44,7 +44,7 @@
<i class="fw fw-ring fw-stroke fw-stack-2x"></i> <i class="fw fw-ring fw-stroke fw-stack-2x"></i>
<i class="fw fw-add fw-stack-1x"></i> <i class="fw fw-add fw-stack-1x"></i>
</span> </span>
&nbsp;&nbsp;Add New Device Add New Device
</a> </a>
</li> </li>
{{/if}} {{/if}}
@ -55,7 +55,7 @@
<i class="fw fw-ring fw-stroke fw-stack-2x"></i> <i class="fw fw-ring fw-stroke fw-stack-2x"></i>
<i class="fw fw-search fw-stack-1x"></i> <i class="fw fw-search fw-stack-1x"></i>
</span> </span>
&nbsp;&nbsp;Advanced Search Advanced Search
</a> </a>
</li> </li>
{{/if}} {{/if}}
@ -75,7 +75,7 @@
<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-ring fw-stack-2x"></i>
<i class="fw fw-add fw-stack-1x"></i> <i class="fw fw-add fw-stack-1x"></i>
</span> </span>
&nbsp;&nbsp;Add New Device Add New Device
</a> </a>
</h3> </h3>
</div> </div>

View File

@ -17,6 +17,7 @@
}} }}
{{unit "cdmf.unit.ui.title" pageTitle="Policy Management"}} {{unit "cdmf.unit.ui.title" pageTitle="Policy Management"}}
{{unit "cdmf.unit.data-tables-extended"}} {{unit "cdmf.unit.data-tables-extended"}}
{{unit "cdmf.unit.ui.modal"}}
{{#zone "topCss"}} {{#zone "topCss"}}
<style> <style>
@ -50,7 +51,7 @@
<i class="fw fw-add fw-stack-1x"></i> <i class="fw fw-add fw-stack-1x"></i>
<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-ring fw-stack-2x"></i>
</span> </span>
&nbsp;Add New Policy Add New Policy
</a> </a>
</li> </li>
{{/equal}} {{/equal}}
@ -64,7 +65,7 @@
<i class="fw fw-throttling-policy fw-stack-1x"></i> <i class="fw fw-throttling-policy fw-stack-1x"></i>
<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-ring fw-stack-2x"></i>
</span> </span>
&nbsp;Policy Priority Policy Priority
</a> </a>
</li> </li>
{{/equal}} {{/equal}}
@ -75,7 +76,7 @@
<i class="fw fw-check fw-stack-1x"></i> <i class="fw fw-check fw-stack-1x"></i>
<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-ring fw-stack-2x"></i>
</span> </span>
&nbsp;Apply Changes To Devices Apply Changes To Devices
</a> </a>
</li> </li>
{{/zone}} {{/zone}}
@ -99,7 +100,7 @@
<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-ring fw-stack-2x"></i>
<i class="fw fw-add fw-stack-1x"></i> <i class="fw fw-add fw-stack-1x"></i>
</span> </span>
&nbsp;&nbsp;Add New Policy Add New Policy
</a> </a>
</h3> </h3>
{{/if}} {{/if}}
@ -268,393 +269,6 @@
<a href="#">By Status</a> <a href="#">By Status</a>
</div> </div>
</div> </div>
<div id="remove-policy-modal-content" class="hide">
<div class="modal-header">
<h3 class="pull-left modal-title">
Do you really want to remove the selected policy(s)?
</h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
</div>
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
</div>
<div class="modal-footer">
<div class="buttons">
<a href="#" id="remove-policy-yes-link" class="btn-operations">Remove</a>
<a href="#" id="remove-policy-cancel-link" class="btn-operations btn-default">Cancel</a>
</div>
</div>
</div>
<div id="remove-policy-success-content" class="hide">
<div class="modal-header">
<h3 class="pull-left modal-title">
Done. Selected policy was successfully removed.
</h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
</div>
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
</div>
<div class="modal-footer">
<div class="buttons">
<a href="#" id="remove-policy-success-link" class="btn-operations">Ok</a>
</div>
</div>
</div>
<div id="remove-policy-error-content" class="hide">
<div class="modal-header">
<h3 class="pull-left modal-title">
An unexpected error occurred. Please try again later
</h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
</div>
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
</div>
<div class="modal-footer">
<div class="buttons">
<a href="#" id="remove-policy-error-link" class="btn-operations">Ok</a>
</div>
</div>
</div>
<div id="remove-active-policy-error-content" class="hide">
<div class="modal-header">
<h3 class="pull-left modal-title">
Please Try again.
</h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
</div>
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
<h4>You cannot remove policies that have been already applied to devices.
Please deselect active policies from your selection and try again.</h4>
</div>
<div class="modal-footer">
<div class="buttons">
<a href="#" id="remove-active-policy-error-link" class="btn-operations">Ok</a>
</div>
</div>
</div>
<div id="publish-policy-modal-content" class="hide">
<div class="modal-header">
<h3 class="pull-left modal-title">
Do you really want to publish the selected policy(s)?
</h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
</div>
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
</div>
<div class="modal-footer">
<div class="buttons">
<a href="#" id="publish-policy-yes-link" class="btn-operations">Yes</a>
<a href="#" id="publish-policy-cancel-link" class="btn-operations btn-default">No</a>
</div>
</div>
</div>
<div id="publish-policy-success-content" class="hide">
<div class="modal-header">
<h3 class="pull-left modal-title">
Done. Selected policy was successfully published.
</h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
</div>
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
</div>
<div class="modal-footer">
<div class="buttons">
<a href="#" id="publish-policy-success-link" class="btn-operations">
Ok
</a>
</div>
</div>
</div>
<div id="publish-policy-error-content" class="hide">
<div class="modal-header">
<h3 class="pull-left modal-title">
An unexpected error occurred. Please try again later.
</h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
</div>
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
</div>
<div class="modal-footer">
<div class="buttons">
<a href="#" id="publish-policy-error-link" class="btn-operations">
Ok
</a>
</div>
</div>
</div>
<div id="unpublish-policy-modal-content" class="hide">
<div class="modal-header">
<h3 class="pull-left modal-title">
Do you really want to unpublish the selected policy(s)?
</h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
</div>
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
</div>
<div class="modal-footer">
<div class="buttons">
<a href="#" id="unpublish-policy-yes-link" class="btn-operations">
Yes
</a>
<a href="#" id="unpublish-policy-cancel-link" class="btn-operations btn-default">
No
</a>
</div>
</div>
</div>
<div id="unpublish-policy-success-content" class="hide">
<div class="modal-header">
<h3 class="pull-left modal-title">
Done. Selected policy was successfully unpublished.
</h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
</div>
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
</div>
<div class="modal-footer">
<div class="buttons">
<a href="#" id="unpublish-policy-success-link" class="btn-operations">
Ok
</a>
</div>
</div>
</div>
<div id="unpublish-policy-error-content" class="hide">
<div class="modal-header">
<h3 class="pull-left modal-title">
An unexpected error occurred. Please try again later.
</h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
</div>
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
</div>
<div class="modal-footer">
<div class="buttons">
<a href="#" id="unpublish-policy-error-link" class="btn-operations">
Ok
</a>
</div>
</div>
</div>
<div id="save-policy-priorities-success-content" class="hide">
<div class="modal-header">
<h3 class="pull-left modal-title">
Done. New Policy priorities were successfully updated.
</h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
</div>
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
</div>
<div class="modal-footer">
<div class="buttons">
<a href="#" id="save-policy-priorities-success-link" class="btn-operations">
Ok
</a>
</div>
</div>
</div>
<div id="save-policy-priorities-error-content" class="hide">
<div class="modal-header">
<h3 class="pull-left modal-title">
An unexpected error occurred. Please try again later.
</h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
</div>
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
</div>
<div class="modal-footer">
<div class="buttons">
<a href="#" id="save-policy-priorities-error-link" class="btn-operations">
Ok
</a>
</div>
</div>
</div>
<div id="change-policy-modal-content" class="hide">
<div class="modal-header">
<h3 class="pull-left modal-title">
Do you really want to apply changes to all policies?
</h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
</div>
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
</div>
<div class="modal-footer">
<div class="buttons">
<a href="#" id="change-policy-yes-link" class="btn-operations">
Yes
</a>
<a href="#" id="change-policy-cancel-link" class="btn-operations btn-default">
No
</a>
</div>
</div>
</div>
<div id="change-policy-success-content" class="hide">
<div class="modal-header">
<h3 class="pull-left modal-title">
Done. Changes applied successfully.
</h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
</div>
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
</div>
<div class="modal-footer">
<div class="buttons">
<a href="#" id="change-policy-success-link" class="btn-operations">
Ok
</a>
</div>
</div>
</div>
<div id="change-policy-error-content" class="hide">
<div class="modal-header">
<h3 class="pull-left modal-title">
An unexpected error occurred. Please try again later.
</h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
</div>
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
</div>
<div class="modal-footer">
<div class="buttons">
<a href="#" id="change-policy-error-link" class="btn-operations">
Ok
</a>
</div>
</div>
</div>
<div id="errorPolicyUnPublish" class="hide">
<div class="modal-header">
<h3 class="pull-left modal-title">
<span class="fw-stack">
<i class="fw fw-ring fw-stack-2x"></i>
<i class="fw fw-error fw-stack-1x"></i>
</span>
Action cannot be performed !
</h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
</div>
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
<h4>Please select a policy or a list of policies to un-publish.</h4>
</div>
<div class="modal-footer">
<div class="buttons">
<a href="javascript:hidePopup()" class="btn-operations">
Ok
</a>
</div>
</div>
</div>
<div id="errorPolicyUnPublishSelection" class="hide">
<div class="modal-header">
<h3 class="pull-left modal-title">
<span class="fw-stack">
<i class="fw fw-ring fw-stack-2x"></i>
<i class="fw fw-error fw-stack-1x"></i>
</span>
Action cannot be performed !
</h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
</div>
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
<h4>You cannot select already inactive policies to be unpublished.
Please deselect inactive policies and try again.</h4>
</div>
<div class="modal-footer">
<div class="buttons">
<a href="javascript:hidePopup()" class="btn-operations">
Ok
</a>
</div>
</div>
</div>
<div id="active-policy-selection-error" class="hide">
<div class="modal-header">
<h3 class="pull-left modal-title">
<span class="fw-stack">
<i class="fw fw-ring fw-stack-2x"></i>
<i class="fw fw-error fw-stack-1x"></i>
</span>
Action cannot be performed !
</h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
</div>
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
<h4>You cannot select already active policies. Please deselect active policies and try again.</h4>
</div>
<div class="modal-footer">
<div class="buttons">
<a href="javascript:hidePopup()" class="btn-operations">
Ok
</a>
</div>
</div>
</div>
<div id="policy-publish-error" class="hide">
<div class="modal-header">
<h3 class="pull-left modal-title">
<span class="fw-stack">
<i class="fw fw-ring fw-stack-2x"></i>
<i class="fw fw-error fw-stack-1x"></i>
</span>
Action cannot be performed !
</h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
</div>
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
<h4>Please select a policy or a list of policies to publish.</h4>
</div>
<div class="modal-footer">
<div class="buttons">
<a href="javascript:hidePopup()" class="btn-operations">
Ok
</a>
</div>
</div>
</div>
<div id="policy-remove-error" class="hide">
<div class="modal-header">
<h3 class="pull-left modal-title">
<span class="fw-stack">
<i class="fw fw-ring fw-stack-2x"></i>
<i class="fw fw-error fw-stack-1x"></i>
</span>
Action cannot be performed !
</h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
</div>
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
<h4>Please select a policy or a list of policies to remove.</h4>
</div>
<div class="modal-footer">
<div class="buttons">
<a href="javascript:hidePopup()" class="btn-operations">
Ok
</a>
</div>
</div>
</div>
{{/zone}} {{/zone}}
{{#zone "bottomJs"}} {{#zone "bottomJs"}}

View File

@ -163,8 +163,10 @@ $(document).ready(function () {
// click-event function for applyChangesButton // click-event function for applyChangesButton
$(applyChangesButtonId).click(function () { $(applyChangesButtonId).click(function () {
var serviceURL = "/api/device-mgt/v1.0/policies/apply-changes"; var serviceURL = "/api/device-mgt/v1.0/policies/apply-changes";
$(modalPopupContent).html($('#change-policy-modal-content').html()); modalDialog.header('Do you really want to apply changes to all policies?');
showPopup(); modalDialog.footer('<div class="buttons"><a href="#" id="change-policy-yes-link" class="btn-operations">Yes' +
'</a><a href="#" id="change-policy-cancel-link" class="btn-operations btn-default">No</a></div>');
modalDialog.show();
$("a#change-policy-yes-link").click(function () { $("a#change-policy-yes-link").click(function () {
invokerUtil.put( invokerUtil.put(
@ -173,10 +175,11 @@ $(document).ready(function () {
// on success // on success
function (data, textStatus, jqXHR) { function (data, textStatus, jqXHR) {
if (jqXHR.status == 200) { if (jqXHR.status == 200) {
$(modalPopupContent).html($('#change-policy-success-content').html()); modalDialog.header('Done. Changes applied successfully.');
showPopup(); modalDialog.footer('<div class="buttons"><a href="#" id="change-policy-success-link" ' +
'class="btn-operations">Ok</a></div>');
$("a#change-policy-success-link").click(function () { $("a#change-policy-success-link").click(function () {
hidePopup(); modalDialog.hide();
location.reload(); location.reload();
}); });
} }
@ -184,17 +187,19 @@ $(document).ready(function () {
// on error // on error
function (jqXHR) { function (jqXHR) {
console.log(stringify(jqXHR.data)); console.log(stringify(jqXHR.data));
$(modalPopupContent).html($("#change-policy-error-content").html()); modalDialog.header('An unexpected error occurred. Please try again later.');
showPopup(); modalDialog.footer('<div class="buttons"><a href="#" id="change-policy-error-link" ' +
'class="btn-operations">Ok</a></div>');
modalDialog.showAsError();
$("a#change-policy-error-link").click(function () { $("a#change-policy-error-link").click(function () {
hidePopup(); modalDialog.hide();
}); });
} }
); );
}); });
$("a#change-policy-cancel-link").click(function () { $("a#change-policy-cancel-link").click(function () {
hidePopup(); modalDialog.hide();
}); });
}); });
@ -207,16 +212,27 @@ $(document).ready(function () {
// if policies found in Inactive or Inactive/Updated states with in the selection, // if policies found in Inactive or Inactive/Updated states with in the selection,
// pop-up an error saying // pop-up an error saying
// "You cannot select already inactive policies. Please deselect inactive policies and try again." // "You cannot select already inactive policies. Please deselect inactive policies and try again."
$(modalPopupContent).html($("#errorPolicyUnPublishSelection").html()); modalDialog.header('Action cannot be performed !');
showPopup(); modalDialog.content('You cannot select already inactive policies to be unpublished. Please deselect ' +
'inactive policies and try again.');
modalDialog.footer('<div class="buttons"><a href="javascript:modalDialog.hide()" class="btn-operations">Ok</a>' +
'</div>');
modalDialog.showAsAWarning();
} else { } else {
var serviceURL = "/api/device-mgt/v1.0/policies/deactivate-policy"; var serviceURL = "/api/device-mgt/v1.0/policies/deactivate-policy";
if (policyList.length == 0) { if (policyList.length == 0) {
$(modalPopupContent).html($("#errorPolicyUnPublish").html()); modalDialog.header('Action cannot be performed !');
modalDialog.content('Please select a policy or a list of policies to un-publish.');
modalDialog.footer('<div class="buttons"><a href="javascript:modalDialog.hide()" ' +
'class="btn-operations">Ok</a></div>');
modalDialog.showAsAWarning();
} else { } else {
$(modalPopupContent).html($("#unpublish-policy-modal-content").html()); modalDialog.header('Do you really want to unpublish the selected policy(s)?');
modalDialog.footer('<div class="buttons"><a href="#" id="unpublish-policy-yes-link" ' +
'class="btn-operations">Yes</a><a href="#" id="unpublish-policy-cancel-link" ' +
'class="btn-operations btn-default">No</a></div>');
modalDialog.show();
} }
showPopup();
// on-click function for policy un-publishing "yes" button // on-click function for policy un-publishing "yes" button
$("a#unpublish-policy-yes-link").click(function () { $("a#unpublish-policy-yes-link").click(function () {
@ -226,9 +242,11 @@ $(document).ready(function () {
// on success // on success
function (data, textStatus, jqXHR) { function (data, textStatus, jqXHR) {
if (jqXHR.status == 200 && data) { if (jqXHR.status == 200 && data) {
$(modalPopupContent).html($("#unpublish-policy-success-content").html()); modalDialog.header('Done. Selected policy was successfully unpublished.');
modalDialog.footer('<div class="buttons"><a href="#" id="unpublish-policy-success-link" ' +
'class="btn-operations">Ok</a></div>');
$("a#unpublish-policy-success-link").click(function () { $("a#unpublish-policy-success-link").click(function () {
hidePopup(); modalDialog.hide();
location.reload(); location.reload();
}); });
} }
@ -236,9 +254,12 @@ $(document).ready(function () {
// on error // on error
function (jqXHR) { function (jqXHR) {
console.log(stringify(jqXHR.data)); console.log(stringify(jqXHR.data));
$(modalPopupContent).html($("#unpublish-policy-error-content").html()); modalDialog.header('An unexpected error occurred. Please try again later.');
modalDialog.footer('<div class="buttons"><a href="#" id="unpublish-policy-error-link" ' +
'class="btn-operations">Ok</a></div>');
modalDialog.showAsError();
$("a#unpublish-policy-error-link").click(function () { $("a#unpublish-policy-error-link").click(function () {
hidePopup(); modalDialog.hide();
}); });
} }
); );
@ -246,7 +267,7 @@ $(document).ready(function () {
// on-click function for policy un-publishing "cancel" button // on-click function for policy un-publishing "cancel" button
$("a#unpublish-policy-cancel-link").click(function () { $("a#unpublish-policy-cancel-link").click(function () {
hidePopup(); modalDialog.hide();
}); });
} }
}); });
@ -260,17 +281,27 @@ $(document).ready(function () {
// if policies found in Active or Active/Updated states with in the selection, // if policies found in Active or Active/Updated states with in the selection,
// pop-up an error saying // pop-up an error saying
// "You cannot select already active policies. Please deselect active policies and try again." // "You cannot select already active policies. Please deselect active policies and try again."
$(modalPopupContent).html($("#active-policy-selection-error").html()); modalDialog.header('Action cannot be performed !');
showPopup(); modalDialog.content('You cannot select already active policies. Please deselect active policies and try ' +
'again.');
modalDialog.footer('<div class="buttons"><a href="javascript:modalDialog.hide()" class="btn-operations">' +
'Ok</a></div>');
modalDialog.showAsAWarning();
} else { } else {
var serviceURL = "/api/device-mgt/v1.0/policies/activate-policy"; var serviceURL = "/api/device-mgt/v1.0/policies/activate-policy";
if (policyList.length == 0) { if (policyList.length == 0) {
$(modalPopupContent).html($("#policy-publish-error").html()); modalDialog.header('Action cannot be performed !');
modalDialog.content('Please select a policy or a list of policies to publish.');
modalDialog.footer('<div class="buttons"><a href="javascript:modalDialog.hide()" ' +
'class="btn-operations">Ok</a></div>');
modalDialog.showAsAWarning();
} else { } else {
$(modalPopupContent).html($("#publish-policy-modal-content").html()); modalDialog.header('Do you really want to publish the selected policy(s)?');
modalDialog.footer('<div class="buttons"><a href="#" id="publish-policy-yes-link" ' +
'class="btn-operations">Yes</a><a href="#" id="publish-policy-cancel-link" ' +
'class="btn-operations btn-default">No</a></div>');
modalDialog.show();
} }
showPopup();
// on-click function for policy removing "yes" button // on-click function for policy removing "yes" button
$("a#publish-policy-yes-link").click(function () { $("a#publish-policy-yes-link").click(function () {
invokerUtil.post( invokerUtil.post(
@ -279,9 +310,11 @@ $(document).ready(function () {
// on success // on success
function (data, textStatus, jqXHR) { function (data, textStatus, jqXHR) {
if (jqXHR.status == 200 && data) { if (jqXHR.status == 200 && data) {
$(modalPopupContent).html($("#publish-policy-success-content").html()); modalDialog.header('Done. Selected policy was successfully published.');
modalDialog.footer('<div class="buttons"><a href="#" id="publish-policy-success-link" ' +
'class="btn-operations">Ok</a></div>');
$("a#publish-policy-success-link").click(function () { $("a#publish-policy-success-link").click(function () {
hidePopup(); modalDialog.hide();
location.reload(); location.reload();
}); });
} }
@ -289,9 +322,12 @@ $(document).ready(function () {
// on error // on error
function (jqXHR) { function (jqXHR) {
console.log(stringify(jqXHR.data)); console.log(stringify(jqXHR.data));
$(modalPopupContent).html($("#publish-policy-error-content").html()); modalDialog.header('An unexpected error occurred. Please try again later.');
modalDialog.footer('<div class="buttons"><a href="#" id="publish-policy-error-link" ' +
'class="btn-operations">Ok</a></div>');
modalDialog.showAsError();
$("a#publish-policy-error-link").click(function () { $("a#publish-policy-error-link").click(function () {
hidePopup(); modalDialog.hide();
}); });
} }
); );
@ -299,7 +335,7 @@ $(document).ready(function () {
// on-click function for policy removing "cancel" button // on-click function for policy removing "cancel" button
$("a#publish-policy-cancel-link").click(function () { $("a#publish-policy-cancel-link").click(function () {
hidePopup(); modalDialog.hide();
}); });
} }
}); });
@ -313,16 +349,27 @@ $(document).ready(function () {
// if policies found in Active or Active/Updated states with in the selection, // if policies found in Active or Active/Updated states with in the selection,
// pop-up an error saying // pop-up an error saying
// "You cannot remove already active policies. Please deselect active policies and try again." // "You cannot remove already active policies. Please deselect active policies and try again."
$(modalPopupContent).html($("#active-policy-selection-error").html()); modalDialog.header('Action cannot be performed !');
showPopup(); modalDialog.content('You cannot select already active policies. Please deselect active policies and try ' +
'again.');
modalDialog.footer('<div class="buttons"><a href="javascript:modalDialog.hide()" class="btn-operations">' +
'Ok</a></div>');
modalDialog.showAsAWarning();
} else { } else {
var serviceURL = "/api/device-mgt/v1.0/policies/remove-policy"; var serviceURL = "/api/device-mgt/v1.0/policies/remove-policy";
if (policyList.length == 0) { if (policyList.length == 0) {
$(modalPopupContent).html($("#policy-remove-error").html()); modalDialog.header('Action cannot be performed !');
modalDialog.content('Please select a policy or a list of policies to remove.');
modalDialog.footer('<div class="buttons"><a href="javascript:modalDialog.hide()" ' +
'class="btn-operations">Ok</a></div>');
modalDialog.showAsAWarning();
} else { } else {
$(modalPopupContent).html($("#remove-policy-modal-content").html()); modalDialog.header('Do you really want to remove the selected policy(s)?');
modalDialog.footer('<div class="buttons"><a href="#" id="remove-policy-yes-link" class=' +
'"btn-operations">Remove</a> <a href="#" id="remove-policy-cancel-link" ' +
'class="btn-operations btn-default">Cancel</a></div>');
modalDialog.show();
} }
showPopup();
// on-click function for policy removing "yes" button // on-click function for policy removing "yes" button
$("a#remove-policy-yes-link").click(function () { $("a#remove-policy-yes-link").click(function () {
@ -332,9 +379,11 @@ $(document).ready(function () {
// on success // on success
function (data, textStatus, jqXHR) { function (data, textStatus, jqXHR) {
if (jqXHR.status == 200 && data) { if (jqXHR.status == 200 && data) {
$(modalPopupContent).html($("#remove-policy-success-content").html()); modalDialog.header('Done. Selected policy was successfully removed.');
modalDialog.footer('<div class="buttons"><a href="#" id="remove-policy-success-link" ' +
'class="btn-operations">Ok</a></div>');
$("a#remove-policy-success-link").click(function () { $("a#remove-policy-success-link").click(function () {
hidePopup(); modalDialog.hide();
location.reload(); location.reload();
}); });
} }
@ -342,9 +391,12 @@ $(document).ready(function () {
// on error // on error
function (jqXHR) { function (jqXHR) {
console.log(stringify(jqXHR.data)); console.log(stringify(jqXHR.data));
$(modalPopupContent).html($("#remove-policy-error-content").html()); modalDialog.header('An unexpected error occurred. Please try again later.');
modalDialog.footer('<div class="buttons"><a href="#" id="remove-policy-error-link" ' +
'class="btn-operations">Ok</a></div>');
modalDialog.showAsError();
$("a#remove-policy-error-link").click(function () { $("a#remove-policy-error-link").click(function () {
hidePopup(); modalDialog.hide();
}); });
} }
); );
@ -352,7 +404,7 @@ $(document).ready(function () {
// on-click function for policy removing "cancel" button // on-click function for policy removing "cancel" button
$("a#remove-policy-cancel-link").click(function () { $("a#remove-policy-cancel-link").click(function () {
hidePopup(); modalDialog.hide();
}); });
} }
}); });

View File

@ -149,7 +149,7 @@
<input id="hard-lock" type="checkbox" class="form-control operationDataKeys" <input id="hard-lock" type="checkbox" class="form-control operationDataKeys"
data-key="hard-lock"/> data-key="hard-lock"/>
<span class="helper" title="Once it enables, device will be blocked permanently."> <span class="helper" title="Once it enables, device will be blocked permanently.">
&nbsp;&nbsp;&nbsp;Enable Permanent Lock Enable Permanent Lock
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -172,7 +172,7 @@
data-key="instant-upgrade"/> data-key="instant-upgrade"/>
<span class="helper" <span class="helper"
title="Once enabled, device firmware upgrade process will start instantly."> title="Once enabled, device firmware upgrade process will start instantly.">
&nbsp;&nbsp;&nbsp;Instant Upgrade Instant Upgrade
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -205,7 +205,7 @@
showDropdowns: true, showDropdowns: true,
timePickerIncrement: 1, timePickerIncrement: 1,
locale: { locale: {
format: 'MM-DD-YYYY hh:mm a' format: "YYYY-MM-DDTHH:mm:ssZZ"
} }
}); });
}); });
@ -222,7 +222,7 @@
showDropdowns: true, showDropdowns: true,
timePickerIncrement: 1, timePickerIncrement: 1,
locale: { locale: {
format: 'MM-DD-YYYY hh:mm a' format: "YYYY-MM-DDTHH:mm:ssZZ"
} }
}); });
} }

View File

@ -48,41 +48,41 @@ var operationModule = function () {
"LOCK_OPERATION_CODE": "DEVICE_LOCK", "LOCK_OPERATION_CODE": "DEVICE_LOCK",
"UPGRADE_FIRMWARE": "UPGRADE_FIRMWARE", "UPGRADE_FIRMWARE": "UPGRADE_FIRMWARE",
"DISALLOW_ADJUST_VOLUME": "DISALLOW_ADJUST_VOLUME", "DISALLOW_ADJUST_VOLUME": "DISALLOW_ADJUST_VOLUME",
"DISALLOW_CONFIG_BLUETOOTH" : "DISALLOW_CONFIG_BLUETOOTH", "DISALLOW_CONFIG_BLUETOOTH": "DISALLOW_CONFIG_BLUETOOTH",
"DISALLOW_CONFIG_CELL_BROADCASTS" : "DISALLOW_CONFIG_CELL_BROADCASTS", "DISALLOW_CONFIG_CELL_BROADCASTS": "DISALLOW_CONFIG_CELL_BROADCASTS",
"DISALLOW_CONFIG_CREDENTIALS" : "DISALLOW_CONFIG_CREDENTIALS", "DISALLOW_CONFIG_CREDENTIALS": "DISALLOW_CONFIG_CREDENTIALS",
"DISALLOW_CONFIG_MOBILE_NETWORKS" : "DISALLOW_CONFIG_MOBILE_NETWORKS", "DISALLOW_CONFIG_MOBILE_NETWORKS": "DISALLOW_CONFIG_MOBILE_NETWORKS",
"DISALLOW_CONFIG_TETHERING" : "DISALLOW_CONFIG_TETHERING", "DISALLOW_CONFIG_TETHERING": "DISALLOW_CONFIG_TETHERING",
"DISALLOW_CONFIG_VPN" : "DISALLOW_CONFIG_VPN", "DISALLOW_CONFIG_VPN": "DISALLOW_CONFIG_VPN",
"DISALLOW_CONFIG_WIFI" : "DISALLOW_CONFIG_WIFI", "DISALLOW_CONFIG_WIFI": "DISALLOW_CONFIG_WIFI",
"DISALLOW_APPS_CONTROL" : "DISALLOW_APPS_CONTROL", "DISALLOW_APPS_CONTROL": "DISALLOW_APPS_CONTROL",
"DISALLOW_CREATE_WINDOWS" : "DISALLOW_CREATE_WINDOWS", "DISALLOW_CREATE_WINDOWS": "DISALLOW_CREATE_WINDOWS",
"DISALLOW_CROSS_PROFILE_COPY_PASTE" : "DISALLOW_CROSS_PROFILE_COPY_PASTE", "DISALLOW_CROSS_PROFILE_COPY_PASTE": "DISALLOW_CROSS_PROFILE_COPY_PASTE",
"DISALLOW_DEBUGGING_FEATURES" : "DISALLOW_DEBUGGING_FEATURES", "DISALLOW_DEBUGGING_FEATURES": "DISALLOW_DEBUGGING_FEATURES",
"DISALLOW_FACTORY_RESET" : "DISALLOW_FACTORY_RESET", "DISALLOW_FACTORY_RESET": "DISALLOW_FACTORY_RESET",
"DISALLOW_ADD_USER" : "DISALLOW_ADD_USER", "DISALLOW_ADD_USER": "DISALLOW_ADD_USER",
"DISALLOW_INSTALL_APPS" : "DISALLOW_INSTALL_APPS", "DISALLOW_INSTALL_APPS": "DISALLOW_INSTALL_APPS",
"DISALLOW_INSTALL_UNKNOWN_SOURCES" : "DISALLOW_INSTALL_UNKNOWN_SOURCES", "DISALLOW_INSTALL_UNKNOWN_SOURCES": "DISALLOW_INSTALL_UNKNOWN_SOURCES",
"DISALLOW_MODIFY_ACCOUNTS" : "DISALLOW_MODIFY_ACCOUNTS", "DISALLOW_MODIFY_ACCOUNTS": "DISALLOW_MODIFY_ACCOUNTS",
"DISALLOW_MOUNT_PHYSICAL_MEDIA" : "DISALLOW_MOUNT_PHYSICAL_MEDIA", "DISALLOW_MOUNT_PHYSICAL_MEDIA": "DISALLOW_MOUNT_PHYSICAL_MEDIA",
"DISALLOW_NETWORK_RESET" : "DISALLOW_NETWORK_RESET", "DISALLOW_NETWORK_RESET": "DISALLOW_NETWORK_RESET",
"DISALLOW_OUTGOING_BEAM" : "DISALLOW_OUTGOING_BEAM", "DISALLOW_OUTGOING_BEAM": "DISALLOW_OUTGOING_BEAM",
"DISALLOW_OUTGOING_CALLS" : "DISALLOW_OUTGOING_CALLS", "DISALLOW_OUTGOING_CALLS": "DISALLOW_OUTGOING_CALLS",
"DISALLOW_REMOVE_USER" : "DISALLOW_REMOVE_USER", "DISALLOW_REMOVE_USER": "DISALLOW_REMOVE_USER",
"DISALLOW_SAFE_BOOT" : "DISALLOW_SAFE_BOOT", "DISALLOW_SAFE_BOOT": "DISALLOW_SAFE_BOOT",
"DISALLOW_SHARE_LOCATION" : "DISALLOW_SHARE_LOCATION", "DISALLOW_SHARE_LOCATION": "DISALLOW_SHARE_LOCATION",
"DISALLOW_SMS" : "DISALLOW_SMS", "DISALLOW_SMS": "DISALLOW_SMS",
"DISALLOW_UNINSTALL_APPS" : "DISALLOW_UNINSTALL_APPS", "DISALLOW_UNINSTALL_APPS": "DISALLOW_UNINSTALL_APPS",
"DISALLOW_UNMUTE_MICROPHONE" : "DISALLOW_UNMUTE_MICROPHONE", "DISALLOW_UNMUTE_MICROPHONE": "DISALLOW_UNMUTE_MICROPHONE",
"DISALLOW_USB_FILE_TRANSFER" : "DISALLOW_USB_FILE_TRANSFER", "DISALLOW_USB_FILE_TRANSFER": "DISALLOW_USB_FILE_TRANSFER",
"ALLOW_PARENT_PROFILE_APP_LINKING" : "ALLOW_PARENT_PROFILE_APP_LINKING", "ALLOW_PARENT_PROFILE_APP_LINKING": "ALLOW_PARENT_PROFILE_APP_LINKING",
"ENSURE_VERIFY_APPS" : "ENSURE_VERIFY_APPS", "ENSURE_VERIFY_APPS": "ENSURE_VERIFY_APPS",
"AUTO_TIME" : "AUTO_TIME", "AUTO_TIME": "AUTO_TIME",
"SET_SCREEN_CAPTURE_DISABLED" : "SET_SCREEN_CAPTURE_DISABLED", "SET_SCREEN_CAPTURE_DISABLED": "SET_SCREEN_CAPTURE_DISABLED",
"SET_STATUS_BAR_DISABLED" : "SET_STATUS_BAR_DISABLED", "SET_STATUS_BAR_DISABLED": "SET_STATUS_BAR_DISABLED",
"APPLICATION_OPERATION_CODE" : "APP-RESTRICTION", "APPLICATION_OPERATION_CODE": "APP-RESTRICTION",
"SYSTEM_UPDATE_POLICY_CODE" : "SYSTEM_UPDATE_POLICY", "SYSTEM_UPDATE_POLICY_CODE": "SYSTEM_UPDATE_POLICY",
"KIOSK_APPS_CODE" : "KIOSK_APPS" "KIOSK_APPS_CODE": "KIOSK_APPS"
}; };
// Constants to define Windows Operation Constants // Constants to define Windows Operation Constants
@ -151,10 +151,8 @@ var operationModule = function () {
break; break;
case iosOperationConstants["DOMAIN_OPERATION_CODE"]: case iosOperationConstants["DOMAIN_OPERATION_CODE"]:
payload = { payload = {
"operation": { "emailDomains": operationPayload["emailDomains"],
"emailDomains": operationData["emailDomains"], "webDomains": operationPayload["webDomains"]
"webDomains": operationData["webDomains"]
}
}; };
break; break;
case iosOperationConstants["RESTRICTIONS_OPERATION_CODE"]: case iosOperationConstants["RESTRICTIONS_OPERATION_CODE"]:
@ -839,6 +837,15 @@ var operationModule = function () {
"encryptStorageEnabled": operationPayload["encrypted"] "encryptStorageEnabled": operationPayload["encrypted"]
}; };
break; break;
case androidOperationConstants["WORK_PROFILE_CODE"]:
payload = {
"workProfilePolicyProfileName": operationPayload["profileName"],
"workProfilePolicyEnableSystemApps": operationPayload["enableSystemApps"],
"workProfilePolicyHideSystemApps": operationPayload["hideSystemApps"],
"workProfilePolicyUnhideSystemApps": operationPayload["unhideSystemApps"],
"workProfilePolicyEnablePlaystoreApps": operationPayload["enablePlaystoreApps"]
};
break;
case androidOperationConstants["WIFI_OPERATION_CODE"]: case androidOperationConstants["WIFI_OPERATION_CODE"]:
payload = { payload = {
"wifiSSID": operationPayload["ssid"], "wifiSSID": operationPayload["ssid"],
@ -1636,7 +1643,6 @@ var operationModule = function () {
generatedProfile[operationCode] = payload["operation"]; generatedProfile[operationCode] = payload["operation"];
} }
} }
console.log(generatedProfile);
return generatedProfile; return generatedProfile;
}; };

View File

@ -27,7 +27,7 @@
<i class="fw fw-add fw-stack-1x fw-inverse"></i> <i class="fw fw-add fw-stack-1x fw-inverse"></i>
</span> </span>
</span> </span>
&nbsp;&nbsp;Add your new mobile device to {{@app.conf.appName}} Add your new mobile device to {{@app.conf.appName}}
</h4> </h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fw fw-cancel"></i></button>
</div> </div>

View File

@ -39,10 +39,10 @@
<b>Compliance Status</b> <b>Compliance Status</b>
<br> <br>
{{#equal complianceStatus "COMPLIANT"}} {{#equal complianceStatus "COMPLIANT"}}
<span><i class="fw fw-ok icon-success"></i>&nbsp;&nbsp;Compliant</span> <span><i class="fw fw-ok icon-success"></i> Compliant</span>
{{/equal}} {{/equal}}
{{#equal complianceStatus "NON-COMPLIANT"}} {{#equal complianceStatus "NON-COMPLIANT"}}
<span><i class="fw fw-warning icon-danger"></i>&nbsp;&nbsp;Not Compliant</span> <span><i class="fw fw-warning icon-danger"></i> Not Compliant</span>
{{/equal}} {{/equal}}
</div> </div>
</div> </div>
@ -58,7 +58,7 @@
<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-ring fw-stack-2x"></i>
<i class="fw fw-view fw-stack-1x"></i> <i class="fw fw-view fw-stack-1x"></i>
</span> </span>
&nbsp;View View
</a> </a>
</span> </span>
</div> </div>
@ -77,8 +77,8 @@
<tr data-type="selectable"> <tr data-type="selectable">
<td data-display="{{featureCode}}" data-grid-label="Feature Code">{{featureCode}}</td> <td data-display="{{featureCode}}" data-grid-label="Feature Code">{{featureCode}}</td>
<td data-display="{{complianceStatus}}" data-grid-label="Status"> <td data-display="{{complianceStatus}}" data-grid-label="Status">
{{#equal complianceStatus true}}<span><i class="fw fw-ok icon-success"></i>&nbsp;&nbsp;Compliant</span>{{/equal}} {{#equal complianceStatus true}}<span><i class="fw fw-ok icon-success"></i> Compliant</span>{{/equal}}
{{#equal complianceStatus false}}<span><i class="fw fw-warning icon-danger"></i>&nbsp;&nbsp;Not Compliant</span>{{/equal}} {{#equal complianceStatus false}}<span><i class="fw fw-warning icon-danger"></i> Not Compliant</span>{{/equal}}
</td> </td>
</tr> </tr>
{{/each}} {{/each}}

View File

@ -52,13 +52,13 @@
<td class="sorting_1" style="padding:10px 15px; width: 15%;">Status</td> <td class="sorting_1" style="padding:10px 15px; width: 15%;">Status</td>
<td style="padding:10px 15px;"> <td style="padding:10px 15px;">
{{#equal deviceView.status "ACTIVE"}}<span><i {{#equal deviceView.status "ACTIVE"}}<span><i
class="fw fw-ok icon-success"></i>&nbsp;&nbsp;Active</span>{{/equal}} class="fw fw-ok icon-success"></i>Active</span>{{/equal}}
{{#equal deviceView.status "INACTIVE"}}<span><i {{#equal deviceView.status "INACTIVE"}}<span><i
class="fw fw-warning icon-warning"></i>&nbsp;&nbsp;Inactive</span>{{/equal}} class="fw fw-warning icon-warning"></i>Inactive</span>{{/equal}}
{{#equal deviceView.status "BLOCKED"}}<span><i {{#equal deviceView.status "BLOCKED"}}<span><i
class="fw fw-remove icon-danger"></i>&nbsp;&nbsp;Blocked</span>{{/equal}} class="fw fw-remove icon-danger"></i>Blocked</span>{{/equal}}
{{#equal deviceView.status "REMOVED"}}<span><i {{#equal deviceView.status "REMOVED"}}<span><i
class="fw fw-delete icon-danger"></i>&nbsp;&nbsp;Removed</span>{{/equal}} class="fw fw-delete icon-danger"></i>Removed</span>{{/equal}}
</td> </td>
</tr> </tr>
{{/if}} {{/if}}
@ -314,7 +314,7 @@
</div> </div>
<div class="panel-heading display-none-xs"> <div class="panel-heading display-none-xs">
Policy Compliance Policy Compliance
&nbsp;&nbsp;
<span> <span>
<a href="javascript:void(0);" id="refresh-policy"> <a href="javascript:void(0);" id="refresh-policy">
<i class="fw fw-refresh"></i> <i class="fw fw-refresh"></i>
@ -331,7 +331,7 @@
</span> </span>
<div id="policy-spinner" <div id="policy-spinner"
class="wr-advance-operations-init add-padding-bottom-2x add-padding-bottom-4x hidden"> class="wr-advance-operations-init add-padding-bottom-2x add-padding-bottom-4x hidden">
<i class="fw fw-settings fw-spin fw-2x"></i>&nbsp;&nbsp;Loading Policy <i class="fw fw-settings fw-spin fw-2x"></i>Loading Policy
Compliance... Compliance...
</div> </div>
<div id="policy-list-container"> <div id="policy-list-container">
@ -364,7 +364,7 @@
<div id="map-error" class="message message-warning"> <div id="map-error" class="message message-warning">
<h4 class="remove-margin"> <h4 class="remove-margin">
<i class="icon fw fw-warning"></i> <i class="icon fw fw-warning"></i>
&nbsp;Device location information is not available. Device location information is not available.
</h4> </h4>
</div> </div>
<p class="add-padding-5x"></p> <p class="add-padding-5x"></p>
@ -388,7 +388,7 @@
</div> </div>
<div class="panel-heading display-none-xs"> <div class="panel-heading display-none-xs">
Installed Applications Installed Applications
&nbsp;&nbsp;
<span> <span>
<a href="javascript:void(0);" id="refresh-apps"> <a href="javascript:void(0);" id="refresh-apps">
<i class="fw fw-refresh"></i> <i class="fw fw-refresh"></i>

View File

@ -115,7 +115,7 @@ function onRequest(context) {
} }
} else if (deviceType == "ios") { } else if (deviceType == "ios") {
viewModel["BatteryLevel"] = {}; viewModel["BatteryLevel"] = {};
viewModel["BatteryLevel"]["value"] = filteredDeviceData["initialDeviceInfo"]["DEVICE_INFO"]["BatteryLevel"]; viewModel["BatteryLevel"]["value"] = Math. round(filteredDeviceData["initialDeviceInfo"]["DEVICE_INFO"]["BatteryLevel"] * 10000) / 100;
viewModel["internalMemory"] = {}; viewModel["internalMemory"] = {};
viewModel["internalMemory"]["total"] = Math. viewModel["internalMemory"]["total"] = Math.

View File

@ -1843,28 +1843,23 @@ validateStep["policy-profile"] = function () {
if (continueToCheckNextInputs) { if (continueToCheckNextInputs) {
var calendarAccountPort = $("input#calendar-account-port").val(); var calendarAccountPort = $("input#calendar-account-port").val();
if (!calendarAccountPort) { if (calendarAccountPort) {
validationStatus = { if (!$.isNumeric(calendarAccountPort)) {
"error": true, validationStatus = {
"subErrorMsg": "Account Port is empty. You cannot proceed.", "error": true,
"erroneousFeature": operation "subErrorMsg": "Account Port requires a number input.",
}; "erroneousFeature": operation
continueToCheckNextInputs = false; };
} else if (!$.isNumeric(calendarAccountPort)) { continueToCheckNextInputs = false;
validationStatus = { } else if (!inputIsValidAgainstRange(calendarAccountPort, 0, 65535)) {
"error": true, validationStatus = {
"subErrorMsg": "Account Port requires a number input.", "error": true,
"erroneousFeature": operation "subErrorMsg": "Account Port is not within the range " +
};
continueToCheckNextInputs = false;
} else if (!inputIsValidAgainstRange(calendarAccountPort, 0, 65535)) {
validationStatus = {
"error": true,
"subErrorMsg": "Account Port is not within the range " +
"of valid port numbers.", "of valid port numbers.",
"erroneousFeature": operation "erroneousFeature": operation
}; };
continueToCheckNextInputs = false; continueToCheckNextInputs = false;
}
} }
} }
@ -2387,8 +2382,6 @@ var savePolicy = function (policy, isActive, serviceURL) {
payload["roles"] = []; payload["roles"] = [];
} }
console.log(JSON.stringify(payload));
invokerUtil.post( invokerUtil.post(
serviceURL, serviceURL,
payload, payload,
@ -2543,8 +2536,8 @@ var slideDownPaneAgainstValueSet = function (selectElement, paneID, valueSet) {
var slideDownPaneAgainstValueSetForRadioButtons = function (selectElement, paneID, valueSet) { var slideDownPaneAgainstValueSetForRadioButtons = function (selectElement, paneID, valueSet) {
var selectedValueOnChange = selectElement.value; var selectedValueOnChange = selectElement.value;
var i, slideDownVotes = 0; var slideDownVotes = 0;
for (i = 0; i < valueSet.length; i++) { for (var i = 0; i < valueSet.length; i++) {
if (selectedValueOnChange == valueSet[i]) { if (selectedValueOnChange == valueSet[i]) {
slideDownVotes++; slideDownVotes++;
} }

View File

@ -217,7 +217,7 @@
<label class="wr-input-label" for="passcodePolicyMaxFailedAttempts"> <label class="wr-input-label" for="passcodePolicyMaxFailedAttempts">
Maximum number of failed attempts Maximum number of failed attempts
<span class="helper" <span class="helper"
title="Maximum number of passcode entry attempts allowed before all data on a device will be erased"> title="The maximum number of failed password entry attempts. If the correct password is not entered within the defined number of attempts, the data on the device will be erased">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -657,7 +657,8 @@
<div> <div>
<ul class="message message-info"> <ul class="message message-info">
<i class="icon fw fw-info"></i> <i class="icon fw fw-info"></i>
<a id="policy-listing-status-msg">Below restrictions will be applied on devices with Android version 6.0 Marshmallow onwards only.</a> <a id="policy-listing-status-msg">Below restrictions will be applied on devices with Android
version 6.0 Marshmallow onwards only.</a>
</ul> </ul>
</div> </div>
<div class="wr-input-control"> <div class="wr-input-control">
@ -691,9 +692,9 @@
</label> </label>
</h2> </h2>
<div class="panel-title-description"> <div class="panel-title-description">
This configuration can be used to encrypt data on an Android device, when the device is locked and This configuration can be used to encrypt data on an Android device, when the device is locked
make it readable when the passcode is entered. Once this configuration profile is installed on a device, and make it readable when the passcode is entered. Once this configuration profile is installed
corresponding users will not be able to modify these settings on their devices. on a device, corresponding users will not be able to modify these settings on their devices.
</div> </div>
</div> </div>
<div id="encrypt-storage-body" class="panel-collapse panel-body collapse" role="tabpanel" <div id="encrypt-storage-body" class="panel-collapse panel-body collapse" role="tabpanel"
@ -766,7 +767,8 @@
<label class="wr-input-label" for="wifi-type"> <label class="wr-input-label" for="wifi-type">
Security* Security*
<span class="helper" <span class="helper"
title="Security type of the wireless network to be configured. 802.1x EAP works with Android 4.3 and above devices only."> title="Security type of the wireless network to be configured. 802.1x EAP works with
Android 4.3 and above devices only.">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -787,7 +789,8 @@
</span> </span>
</label> </label>
<select class="form-control operationDataKeys" id="wifi-eap" <select class="form-control operationDataKeys" id="wifi-eap"
onchange="changeAndroidWifiPolicyEAP(this, document.getElementById('wifi-type'))" data-key="wifiEAP"> onchange="changeAndroidWifiPolicyEAP(this, document.getElementById('wifi-type'))"
data-key="wifiEAP">
<option value="peap">PEAP</option> <option value="peap">PEAP</option>
<option value="tls">TLS</option> <option value="tls">TLS</option>
<option value="ttls">TTLS</option> <option value="ttls">TTLS</option>
@ -862,7 +865,8 @@
</span> </span>
</label> </label>
<input id="wifi-cacert-upload" type="file" class="form-control" <input id="wifi-cacert-upload" type="file" class="form-control"
onchange="base64EncodeFile(this, document.getElementById('wifi-cacert'), document.getElementById('wifi-cacert-name'))"/> onchange="base64EncodeFile(this, document.getElementById('wifi-cacert'),
document.getElementById('wifi-cacert-name'))"/>
<input id="wifi-cacert" type="hidden" class="form-control operationDataKeys" <input id="wifi-cacert" type="hidden" class="form-control operationDataKeys"
data-key="wifiCaCert" /> data-key="wifiCaCert" />
<input id="wifi-cacert-name" type="hidden" class="form-control operationDataKeys" <input id="wifi-cacert-name" type="hidden" class="form-control operationDataKeys"
@ -870,8 +874,8 @@
</div> </div>
<div class="wr-input-control" id="control-wifi-password" style="display:none;"> <div class="wr-input-control" id="control-wifi-password" style="display:none;">
<label class="wr-input-label" for="wifi-password"> <label class="wr-input-label" for="wifi-password">
Password* Password
<span class="helper" title="Password for the wireless network."> <span class="helper required" title="Password for the wireless network.">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -902,7 +906,8 @@
This configuration can be used to create a black list or white list of applications. This configuration can be used to create a black list or white list of applications.
</div> </div>
</div> </div>
<div id="app-restriction-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="app-restriction-body"> <div id="app-restriction-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="app-restriction-body">
<hr/> <hr/>
<div id="app-restriction-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="app-restriction-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
@ -931,7 +936,8 @@
</span> </span>
</label> </label>
<br/> <br/>
<a href="#restricted-applications-grid" class="btn btn-secondary grid-input-add " data-click-event="add-form"> <a href="#restricted-applications-grid" class="btn btn-secondary grid-input-add "
data-click-event="add-form">
<span class="icon fw-stack"> <span class="icon fw-stack">
<i class="fw fw-add fw-stack-1x"></i> <i class="fw fw-add fw-stack-1x"></i>
<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-ring fw-stack-2x"></i>
@ -1094,8 +1100,10 @@
</div> </div>
<!--<div class="wr-input-control"> <!--<div class="wr-input-control">
<label class="wr-input-control checkbox"> <label class="wr-input-control checkbox">
<input id="work-profile-policy-allow-cross-profile" type="checkbox" class="form-control operationDataKeys" data-key="workProfilePolicyAllowCopyPaste" checked="checked" /> <input id="work-profile-policy-allow-cross-profile" type="checkbox" class="form-control
<span class="helper" title="Permit the use of repeating, ascending and descending character sequences"> operationDataKeys" data-key="workProfilePolicyAllowCopyPaste" checked="checked" />
<span class="helper" title="Permit the use of repeating, ascending and descending
character sequences">
Allow cross profile copy-paste Allow cross profile copy-paste
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
@ -1206,24 +1214,34 @@
<label class="wr-input-control radio light"> <label class="wr-input-control radio light">
<input id="automatic-system-update-radio-btn" type="radio" name="cosu-system-update-type" <input id="automatic-system-update-radio-btn" type="radio" name="cosu-system-update-type"
class="form-control operationDataKeys" data-key="cosuSystemUpdatePolicyType" class="form-control operationDataKeys" data-key="cosuSystemUpdatePolicyType"
value="automatic" onclick="slideDownPaneAgainstValueSetForRadioButtons(this, 'cosu-system-update-policy-window-select', ['window'])" checked/> value="automatic"
<span class="helper" title="Installs system update automatically as soon as one is available"> onclick="slideDownPaneAgainstValueSetForRadioButtons(this,
'cosu-system-update-policy-window-select', ['window'])" checked/>
<span class="helper"
title="Installs system update automatically as soon as one is available">
Automatic Automatic
</span> </span>
</label> </label>
<label class="wr-input-control radio light"> <label class="wr-input-control radio light">
<input id="postpone-system-update-radio-btn" type="radio" name="cosu-system-update-type" <input id="postpone-system-update-radio-btn" type="radio" name="cosu-system-update-type"
class="form-control operationDataKeys" data-key="cosuSystemUpdatePolicyType" class="form-control operationDataKeys" data-key="cosuSystemUpdatePolicyType"
value="postpone" onclick="slideDownPaneAgainstValueSetForRadioButtons(this, 'cosu-system-update-policy-window-select', ['window'])"/> value="postpone"
<span class="helper" title="Incoming system update will be blocked for a maximum of 30 days"> onclick="slideDownPaneAgainstValueSetForRadioButtons(this,
'cosu-system-update-policy-window-select', ['window'])"/>
<span class="helper"
title="Incoming system update will be blocked for a maximum of 30 days">
Postpone Postpone
</span> </span>
</label> </label>
<label class="wr-input-control radio light"> <label class="wr-input-control radio light">
<input id="window-system-update-radio-btn" type="radio" name="cosu-system-update-type" <input id="window-system-update-radio-btn" type="radio" name="cosu-system-update-type"
class="form-control operationDataKeys" data-key="cosuSystemUpdatePolicyType" class="form-control operationDataKeys" data-key="cosuSystemUpdatePolicyType"
value="window" onclick="slideDownPaneAgainstValueSetForRadioButtons(this, 'cosu-system-update-policy-window-select', ['window'])"/> value="window"
<span class="helper" title="Install system update automatically within a daily maintenance window, for a maximum of 30 days"> onclick="slideDownPaneAgainstValueSetForRadioButtons(this,
'cosu-system-update-policy-window-select', ['window'])"/>
<span class="helper"
title="Install system update automatically within a daily maintenance window, for a
maximum of 30 days">
Window Window
</span> </span>
</label> </label>
@ -1344,11 +1362,13 @@
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="cosu-whitelisted-applications"> <label class="wr-input-label" for="cosu-whitelisted-applications">
Whitelisted Applications to enter Lock Task Mode Whitelisted Applications to enter Lock Task Mode
<span class="helper" title="Configuration information specific to a given third-party VPN solution. This has to be input as key/value pairs."> <span class="helper" title="Configuration information specific to a given third-party VPN
solution. This has to be input as key/value pairs.">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
<br> <br>
<a href="#cosu-whitelisted-applications-grid" class="btn btn-secondary grid-input-add" data-click-event="add-form"> <a href="#cosu-whitelisted-applications-grid" class="btn btn-secondary grid-input-add"
data-click-event="add-form">
<span class="icon fw-stack"> <span class="icon fw-stack">
<i class="fw fw-add fw-stack-1x"></i> <i class="fw fw-add fw-stack-1x"></i>
<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-ring fw-stack-2x"></i>

View File

@ -95,7 +95,7 @@
<label class="wr-input-control checkbox"> <label class="wr-input-control checkbox">
<input id="passcode-policy-allow-simple" type="checkbox" class="form-control operationDataKeys" data-key="passcodePolicyAllowSimple" checked="checked" /> <input id="passcode-policy-allow-simple" type="checkbox" class="form-control operationDataKeys" data-key="passcodePolicyAllowSimple" checked="checked" />
<span class="helper" title="Permit the use of repeating, ascending and descending character sequences"> <span class="helper" title="Permit the use of repeating, ascending and descending character sequences">
&nbsp;&nbsp;&nbsp;Allow simple value Allow simple value
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -105,7 +105,7 @@
<label class="wr-input-control checkbox"> <label class="wr-input-control checkbox">
<input id="passcode-policy-require-alphanumeric" type="checkbox" class="form-control operationDataKeys" data-key="passcodePolicyRequireAlphanumeric" checked="checked" /> <input id="passcode-policy-require-alphanumeric" type="checkbox" class="form-control operationDataKeys" data-key="passcodePolicyRequireAlphanumeric" checked="checked" />
<span class="helper" title="Require passcode to contain both letters and numbers"> <span class="helper" title="Require passcode to contain both letters and numbers">
&nbsp;&nbsp;&nbsp;Require alphanumeric value Require alphanumeric value
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -168,7 +168,9 @@
<br> <br>
( Should be in between 1-to-730 days or none ) ( Should be in between 1-to-730 days or none )
</label> </label>
<input id="passcode-policy-max-passcode-age-in-days" type="text" class="form-control operationDataKeys" data-key="passcodePolicyMaxPasscodeAgeInDays" maxlength="3" placeholder="[ Requires Number Input ]"> <input id="passcode-policy-max-passcode-age-in-days" type="text"
class="form-control operationDataKeys" data-key="passcodePolicyMaxPasscodeAgeInDays"
maxlength="3" placeholder="[ Requires Number Input ]">
</div> </div>
<div class="wr-input-control"> <div class="wr-input-control">
@ -180,17 +182,20 @@
<br> <br>
( Should be in between 1-to-50 passcodes or none ) ( Should be in between 1-to-50 passcodes or none )
</label> </label>
<input id="passcode-policy-passcode-history" type="text" class="form-control operationDataKeys" data-key="passcodePolicyPasscodeHistory" maxlength="2" placeholder="[ Requires Number Input ]"> <input id="passcode-policy-passcode-history" type="text" class="form-control operationDataKeys"
data-key="passcodePolicyPasscodeHistory" maxlength="2" placeholder="[ Requires Number Input ]">
</div> </div>
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="passcodePolicyMaxFailedAttempts"> <label class="wr-input-label" for="passcodePolicyMaxFailedAttempts">
Maximum number of failed attempts Maximum number of failed attempts
<span class="helper" title="Maximum number of passcode entry attempts allowed before all data on a device will be erased"> <span class="helper" title="Maximum number of passcode entry attempts allowed before all
data on a device will be erased">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
<select id="passcode-policy-max-failed-attempts" class="form-control operationDataKeys" data-key="passcodePolicyMaxFailedAttempts" data-default="0"> <select id="passcode-policy-max-failed-attempts" class="form-control operationDataKeys"
data-key="passcodePolicyMaxFailedAttempts" data-default="0">
<option value="" selected="selected"> <option value="" selected="selected">
None None
</option> </option>
@ -222,7 +227,8 @@
</label> </label>
</h2> </h2>
<div class="panel-title-description"> <div class="panel-title-description">
This configuration can be used to restrict the usage of camera on an Windows device together with all the applications using the camera. This configuration can be used to restrict the usage of camera on an Windows device together
with all the applications using the camera.
Once this configuration profile is installed on a device, corresponding users will not be able Once this configuration profile is installed on a device, corresponding users will not be able
to modify these settings on their devices. to modify these settings on their devices.
</div> </div>
@ -237,9 +243,11 @@
<br> <br>
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-control checkbox"> <label class="wr-input-control checkbox">
<input id="camera-enabled" type="checkbox" class="operationDataKeys" data-key="cameraEnabled" checked="checked" /> <input id="camera-enabled" type="checkbox" class="operationDataKeys"
<span class="helper" title="Having this checked would enable Usage of phone camera in the device."> data-key="cameraEnabled" checked="checked" />
&nbsp;&nbsp;&nbsp;Allow use of camera <span class="helper" title="Having this checked would enable Usage of phone camera in
the device.">
Allow use of camera
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -252,7 +260,8 @@
<!-- encrypt-storage --> <!-- encrypt-storage -->
<div class="wr-hidden-operation" data-operation="encrypt-storage"> <div class="wr-hidden-operation" data-operation="encrypt-storage">
<div class="panel panel-default operation-data" data-operation="encrypt-storage" data-operation-code="ENCRYPT_STORAGE"> <div class="panel panel-default operation-data" data-operation="encrypt-storage"
data-operation-code="ENCRYPT_STORAGE">
<div id="encrypt-storage-heading" class="panel-heading" role="tab"> <div id="encrypt-storage-heading" class="panel-heading" role="tab">
<h2 class="sub-title panel-title"> <h2 class="sub-title panel-title">
Encryption Settings Encryption Settings
@ -264,11 +273,12 @@
</h2> </h2>
<div class="panel-title-description"> <div class="panel-title-description">
This configuration can be used to encrypt data on an Windows device, when the device is locked and This configuration can be used to encrypt data on an Windows device, when the device is locked and
make it readable when the passcode is entered. Once this configuration profile is installed on a device, make it readable when the passcode is entered. Once this configuration profile is installed on a
corresponding users will not be able to modify these settings on their devices. device, corresponding users will not be able to modify these settings on their devices.
</div> </div>
</div> </div>
<div id="encrypt-storage-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="encrypt-storage-body"> <div id="encrypt-storage-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="encrypt-storage-body">
<hr/> <hr/>
<div id="encrypt-storage-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="encrypt-storage-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
@ -278,9 +288,10 @@
<br> <br>
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-control checkbox"> <label class="wr-input-control checkbox">
<input id="encrypt-storage-enabled" type="checkbox" class="operationDataKeys" data-key="encryptStorageEnabled" checked="checked" /> <input id="encrypt-storage-enabled" type="checkbox" class="operationDataKeys"
data-key="encryptStorageEnabled" checked="checked" />
<span class="helper" title="Having this checked would enable Storage-encryption in the device"> <span class="helper" title="Having this checked would enable Storage-encryption in the device">
&nbsp;&nbsp;&nbsp;Enable storage-encryption Enable storage-encryption
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -292,7 +303,8 @@
<!-- /encrypt-storage --> <!-- /encrypt-storage -->
<!--app-restriction--> <!--app-restriction-->
<div class="wr-hidden-operation" data-operation="app-restriction"> <div class="wr-hidden-operation" data-operation="app-restriction">
<div class="panel panel-default operation-data" data-operation="app-restriction" data-operation-code="APP-RESTRICTION"> <div class="panel panel-default operation-data" data-operation="app-restriction"
data-operation-code="APP-RESTRICTION">
<div id="app-restriction-heading" class="panel-heading" role="tab"> <div id="app-restriction-heading" class="panel-heading" role="tab">
<h2 class="sub-title panel-title"> <h2 class="sub-title panel-title">
Application Restriction Settings Application Restriction Settings
@ -306,7 +318,8 @@
This configuration can be used to create a black list or white list of applications. This configuration can be used to create a black list or white list of applications.
</div> </div>
</div> </div>
<div id="app-restriction-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="app-restriction-body"> <div id="app-restriction-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="app-restriction-body">
<hr/> <hr/>
<div id="app-restriction-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="app-restriction-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
@ -327,16 +340,19 @@
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
<br> <br>
<a href="#restricted-applications-grid" class="btn btn-secondary grid-input-add" data-click-event="add-form"> <a href="#restricted-applications-grid" class="btn btn-secondary grid-input-add"
data-click-event="add-form">
<span class="icon fw-stack"> <span class="icon fw-stack">
<i class="fw fw-add fw-stack-1x"></i> <i class="fw fw-add fw-stack-1x"></i>
<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-ring fw-stack-2x"></i>
</span> </span>
&nbsp;
Add Application Add Application
</a> </a>
</label> </label>
<div id="restricted-applications" class="operationDataKeys grouped-array-input multi-column-key-value-pair-array" data-key="restrictedApplications" data-column-count="2"> <div id="restricted-applications"
class="operationDataKeys grouped-array-input multi-column-key-value-pair-array"
data-key="restrictedApplications" data-column-count="2">
<table class="table table-responsive table-striped"> <table class="table table-responsive table-striped">
<thead> <thead>
<tr> <tr>
@ -361,14 +377,19 @@
<span class="index"></span> <span class="index"></span>
</td> </td>
<td data-title="App Name"> <td data-title="App Name">
<input type="text" class="form-control grid-input-text" data-child-key="appName" maxlength="100" data-default="" placeholder="[ Application Name or Description ]" /> <input type="text" class="form-control grid-input-text"
data-child-key="appName" maxlength="100" data-default=""
placeholder="[ Application Name or Description ]" />
</td> </td>
<td data-title="Package Name"> <td data-title="Package Name">
<input type="text" class="form-control grid-input-text" data-child-key="packageName" maxlength="100" data-default="" placeholder="[ Package Name of Application ]" /> <input type="text" class="form-control grid-input-text"
data-child-key="packageName" maxlength="100" data-default=""
placeholder="[ Package Name of Application ]" />
</td> </td>
<td> <td>
<span class="list-group-item-actions"> <span class="list-group-item-actions">
<a href="#restricted-applications-grid" class="grid-input-remove" data-click-event="remove-form"> <a href="#restricted-applications-grid" class="grid-input-remove"
data-click-event="remove-form">
<span class="fw-stack helper" title="Remove Entry"> <span class="fw-stack helper" title="Remove Entry">
<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-ring fw-stack-2x"></i>
<i class="fw fw-delete fw-stack-1x"></i> <i class="fw fw-delete fw-stack-1x"></i>
@ -460,7 +481,7 @@
<!--<div class="panel-heading" role="tab">--> <!--<div class="panel-heading" role="tab">-->
<!--<h2 class="sub-title panel-title">--> <!--<h2 class="sub-title panel-title">-->
<!--<br>--> <!--<br>-->
<!--&nbsp;&nbsp;&nbsp;App Installations--> <!-- App Installations-->
<!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#installApp">--> <!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#installApp">-->
<!--<input type="checkbox" />--> <!--<input type="checkbox" />-->
<!--<span class="helper"></span>--> <!--<span class="helper"></span>-->
@ -504,7 +525,7 @@
<!--<div class="panel-heading" role="tab">--> <!--<div class="panel-heading" role="tab">-->
<!--<h2 class="sub-title panel-title">--> <!--<h2 class="sub-title panel-title">-->
<!--<br>--> <!--<br>-->
<!--&nbsp;&nbsp;&nbsp;App Uninstallations--> <!-- App Uninstallations-->
<!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#uninstallApp">--> <!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#uninstallApp">-->
<!--<input type="checkbox" />--> <!--<input type="checkbox" />-->
<!--<span class="helper"></span>--> <!--<span class="helper"></span>-->
@ -534,7 +555,7 @@
<!--<div class="panel-heading" role="tab">--> <!--<div class="panel-heading" role="tab">-->
<!--<h2 class="sub-title panel-title">--> <!--<h2 class="sub-title panel-title">-->
<!--<br>--> <!--<br>-->
<!--&nbsp;&nbsp;&nbsp;Web clips--> <!-- Web clips-->
<!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#installWebClip">--> <!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#installWebClip">-->
<!--<input type="checkbox" />--> <!--<input type="checkbox" />-->
<!--<span class="helper"></span>--> <!--<span class="helper"></span>-->

View File

@ -142,14 +142,14 @@
<input id="user-roles-radio-btn" type="radio" <input id="user-roles-radio-btn" type="radio"
name="select-users-radio-btn" class="select-users-radio" name="select-users-radio-btn" class="select-users-radio"
checked/> checked/>
<span class="helper">&nbsp;Set user role(s)</span> <span class="helper"> Set user role(s)</span>
</label> </label>
{{/if}} {{/if}}
{{#if isAuthorizedViewUsers}} {{#if isAuthorizedViewUsers}}
<label class="wr-input-control radio light" rel="assetfilter"> <label class="wr-input-control radio light" rel="assetfilter">
<input id="users-radio-btn" type="radio" name="select-users-radio-btn" <input id="users-radio-btn" type="radio" name="select-users-radio-btn"
class="select-users-radio"/> class="select-users-radio"/>
<span class="helper">&nbsp;Set user(s)</span> <span class="helper"> Set user(s)</span>
</label> </label>
{{/if}} {{/if}}
</div> </div>
@ -231,9 +231,9 @@
<div class="wr-advance-operations"> <div class="wr-advance-operations">
<div class="wr-advance-operations-init"> <div class="wr-advance-operations-init">
<br> <br>
&nbsp;&nbsp;
<i class="fw fw-settings fw-spin fw-2x"></i> <i class="fw fw-settings fw-spin fw-2x"></i>
&nbsp;Loading platform features . . . Loading platform features . . .
<br> <br>
<br> <br>
</div> </div>

View File

@ -1601,28 +1601,23 @@ validateStep["policy-profile"] = function () {
if (continueToCheckNextInputs) { if (continueToCheckNextInputs) {
var calendarAccountPort = $("input#calendar-account-port").val(); var calendarAccountPort = $("input#calendar-account-port").val();
if (!calendarAccountPort) { if (calendarAccountPort) {
validationStatus = { if (!$.isNumeric(calendarAccountPort)) {
"error": true, validationStatus = {
"subErrorMsg": "Account Port is empty. You cannot proceed.", "error": true,
"erroneousFeature": operation "subErrorMsg": "Account Port requires a number input.",
}; "erroneousFeature": operation
continueToCheckNextInputs = false; };
} else if (!$.isNumeric(calendarAccountPort)) { continueToCheckNextInputs = false;
validationStatus = { } else if (!inputIsValidAgainstRange(calendarAccountPort, 0, 65535)) {
"error": true, validationStatus = {
"subErrorMsg": "Account Port requires a number input.", "error": true,
"erroneousFeature": operation "subErrorMsg": "Account Port is not within the range " +
}; "of valid port numbers.",
continueToCheckNextInputs = false; "erroneousFeature": operation
} else if (!inputIsValidAgainstRange(calendarAccountPort, 0, 65535)) { };
validationStatus = { continueToCheckNextInputs = false;
"error": true, }
"subErrorMsg": "Account Port is not within the range " +
"of valid port numbers.",
"erroneousFeature": operation
};
continueToCheckNextInputs = false;
} }
} }
@ -2319,8 +2314,8 @@ var slideDownPaneAgainstValueSet = function (selectElement, paneID, valueSet) {
var slideDownPaneAgainstValueSetForRadioButtons = function (selectElement, paneID, valueSet) { var slideDownPaneAgainstValueSetForRadioButtons = function (selectElement, paneID, valueSet) {
var selectedValueOnChange = selectElement.value; var selectedValueOnChange = selectElement.value;
var i, slideDownVotes = 0; var slideDownVotes = 0;
for (i = 0; i < valueSet.length; i++) { for (var i = 0; i < valueSet.length; i++) {
if (selectedValueOnChange == valueSet[i]) { if (selectedValueOnChange == valueSet[i]) {
slideDownVotes++; slideDownVotes++;
} }

View File

@ -86,7 +86,7 @@
<!--</span>--> <!--</span>-->
<!--Web clips--> <!--Web clips-->
<!--</a>--> <!--</a>-->
<!-- <!--
<a href="javascript:void(0)" onclick="showAdvanceOperation('cosu-system-update-policy', this)"> <a href="javascript:void(0)" onclick="showAdvanceOperation('cosu-system-update-policy', this)">
<span class="wr-hidden-operation-icon fw-stack"> <span class="wr-hidden-operation-icon fw-stack">
@ -243,7 +243,7 @@
<label class="wr-input-label" for="passcodePolicyMaxFailedAttempts"> <label class="wr-input-label" for="passcodePolicyMaxFailedAttempts">
Maximum number of failed attempts Maximum number of failed attempts
<span class="helper" <span class="helper"
title="Maximum number of passcode entry attempts allowed before all data on a device will be erased"> title="The maximum number of failed password entry attempts. If the correct password is not entered within the defined number of attempts, the data on the device will be erased">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -787,7 +787,7 @@
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="wifi-ssid"> <label class="wr-input-label" for="wifi-ssid">
Service Set Identifier (SSID) * Service Set Identifier (SSID) *
<span class="helper" title="Identification of the wireless network to be configured."> <span class="helper" title="Identification of the wireless network to be configured.">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
<br> <br>
@ -799,8 +799,8 @@
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="wifi-type"> <label class="wr-input-label" for="wifi-type">
Security* Security*
<span class="helper" <span class="helper"
title="Security type of the wireless network to be configured. 802.1x EAP works with Android 4.3 and above devices only."> title="Security type of the wireless network to be configured. 802.1x EAP works with Android 4.3 and above devices only.">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -816,7 +816,7 @@
<div class="wr-input-control" id="control-wifi-eap" style="display:none;"> <div class="wr-input-control" id="control-wifi-eap" style="display:none;">
<label class="wr-input-label" for="wifi-eap"> <label class="wr-input-label" for="wifi-eap">
EAP Method EAP Method
<span class="helper" title="EAP Method of the wireless network to be configured."> <span class="helper" title="EAP Method of the wireless network to be configured.">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -834,8 +834,8 @@
<div class="wr-input-control" id="control-wifi-phase2" style="display:none;"> <div class="wr-input-control" id="control-wifi-phase2" style="display:none;">
<label class="wr-input-label" for="wifi-phase2"> <label class="wr-input-label" for="wifi-phase2">
Phase 2 Authentication Phase 2 Authentication
<span class="helper" <span class="helper"
title="Phase 2 authentication of the wireless network to be configured."> title="Phase 2 authentication of the wireless network to be configured.">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -850,7 +850,7 @@
<div class="wr-input-control" id="control-wifi-provisioning" style="display:none;"> <div class="wr-input-control" id="control-wifi-provisioning" style="display:none;">
<label class="wr-input-label" for="wifi-provisioning"> <label class="wr-input-label" for="wifi-provisioning">
Provisioning Provisioning
<span class="helper" title="Provisioning of the wireless network to be configured."> <span class="helper" title="Provisioning of the wireless network to be configured.">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -865,7 +865,7 @@
<div class="wr-input-control" id="control-wifi-identity" style="display:none;"> <div class="wr-input-control" id="control-wifi-identity" style="display:none;">
<label class="wr-input-label" for="wifi-identity"> <label class="wr-input-label" for="wifi-identity">
Identity Identity
<span class="helper" title="Identity of the wireless network to be configured."> <span class="helper" title="Identity of the wireless network to be configured.">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -879,7 +879,7 @@
<div class="wr-input-control" id="control-wifi-anoidentity" style="display:none;"> <div class="wr-input-control" id="control-wifi-anoidentity" style="display:none;">
<label class="wr-input-label" for="wifi-anoidentity"> <label class="wr-input-label" for="wifi-anoidentity">
Anonymous Identity Anonymous Identity
<span class="helper" title="Identity of the wireless network to be configured."> <span class="helper" title="Identity of the wireless network to be configured.">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -893,7 +893,7 @@
<div class="wr-input-control" id="control-wifi-cacert" style="display:none;"> <div class="wr-input-control" id="control-wifi-cacert" style="display:none;">
<label class="wr-input-label" for="wifi-password"> <label class="wr-input-label" for="wifi-password">
CA Certificate CA Certificate
<span class="helper" title="CA Certificate for the wireless network."> <span class="helper" title="CA Certificate for the wireless network.">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -906,10 +906,10 @@
</div> </div>
<div class="wr-input-control" id="control-wifi-password" style="display:none;"> <div class="wr-input-control" id="control-wifi-password" style="display:none;">
<label class="wr-input-label" for="wifi-password"> <label class="wr-input-label" for="wifi-password">
Password* Password
<span class="helper" title="Password for the wireless network."> <span class="helper required" title="Password for the wireless network.">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
<input id="wifi-password" type="password" class="form-control operationDataKeys" <input id="wifi-password" type="password" class="form-control operationDataKeys"
data-key="wifiPassword" maxlength="100"/> data-key="wifiPassword" maxlength="100"/>
@ -967,12 +967,13 @@
</span> </span>
</label> </label>
<br/> <br/>
<a href="#restricted-applications-grid" class="btn btn-secondary grid-input-add " data-click-event="add-form"> <a href="#restricted-applications-grid" class="btn btn-secondary grid-input-add "
data-click-event="add-form">
<span class="icon fw-stack"> <span class="icon fw-stack">
<i class="fw fw-add fw-stack-1x"></i> <i class="fw fw-add fw-stack-1x"></i>
<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-ring fw-stack-2x"></i>
</span> </span>
Add Application Add Application
</a> </a>
<div id="restricted-applications" <div id="restricted-applications"
@ -1062,7 +1063,7 @@
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="vpn-server-address"> <label class="wr-input-label" for="vpn-server-address">
VPN Server Address* VPN Server Address*
<span class="helper" title="Address of the VPN server to be configured."> <span class="helper" title="Address of the VPN server to be configured.">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -1072,7 +1073,7 @@
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="vpn-server-port"> <label class="wr-input-label" for="vpn-server-port">
VPN Server Port VPN Server Port
<span class="helper" title="Port of the VPN server to be configured."> <span class="helper" title="Port of the VPN server to be configured.">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -1082,7 +1083,7 @@
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="vpn-shared-secret"> <label class="wr-input-label" for="vpn-shared-secret">
Shared Secret Shared Secret
<span class="helper" title="Shared secret."> <span class="helper" title="Shared secret.">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -1092,7 +1093,7 @@
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="vpn-dns"> <label class="wr-input-label" for="vpn-dns">
DNS Server DNS Server
<span class="helper" title="DNS Server."> <span class="helper" title="DNS Server.">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -1330,7 +1331,8 @@
<hr> <hr>
<div class="panel-title-description"> <div class="panel-title-description">
This configuration can be used to set system update policy to an Android Device in COSU. This configuration can be used to set system update policy to an Android Device in COSU.
Once this configuration profile is installed on a device, corresponding users will not be able Once this configuration profile is installed on a device, corresponding users will not be
able
to modify these settings on their devices. to modify these settings on their devices.
</div> </div>
</h2> </h2>
@ -1338,7 +1340,8 @@
<div id="cosu-system-update-policy-body" class="panel-collapse panel-body collapse" role="tabpanel" <div id="cosu-system-update-policy-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="cosu-system-update-policy-body"> aria-labelledby="cosu-system-update-policy-body">
<div id="cosu-system-update-policy-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="cosu-system-update-policy-feature-error-msg" class="alert alert-danger hidden"
role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
<div class="wr-input-control"> <div class="wr-input-control">
@ -1352,24 +1355,31 @@
<label class="wr-input-control radio light"> <label class="wr-input-control radio light">
<input id="automatic-system-update-radio-btn" type="radio" name="cosu-system-update-type" <input id="automatic-system-update-radio-btn" type="radio" name="cosu-system-update-type"
class="form-control operationDataKeys" data-key="cosuSystemUpdatePolicyType" class="form-control operationDataKeys" data-key="cosuSystemUpdatePolicyType"
value="automatic" onclick="slideDownPaneAgainstValueSetForRadioButtons(this, 'cosu-system-update-policy-window-select', ['window'])" checked/> value="automatic"
<span class="helper" title="Installs system update automatically as soon as one is available"> onclick="slideDownPaneAgainstValueSetForRadioButtons(this, 'cosu-system-update-policy-window-select', ['window'])"
checked/>
<span class="helper"
title="Installs system update automatically as soon as one is available">
Automatic Automatic
</span> </span>
</label> </label>
<label class="wr-input-control radio light"> <label class="wr-input-control radio light">
<input id="postpone-system-update-radio-btn" type="radio" name="cosu-system-update-type" <input id="postpone-system-update-radio-btn" type="radio" name="cosu-system-update-type"
class="form-control operationDataKeys" data-key="cosuSystemUpdatePolicyType" class="form-control operationDataKeys" data-key="cosuSystemUpdatePolicyType"
value="postpone" onclick="slideDownPaneAgainstValueSetForRadioButtons(this, 'cosu-system-update-policy-window-select', ['window'])"/> value="postpone"
<span class="helper" title="Incoming system update will be blocked for a maximum of 30 days"> onclick="slideDownPaneAgainstValueSetForRadioButtons(this, 'cosu-system-update-policy-window-select', ['window'])"/>
<span class="helper"
title="Incoming system update will be blocked for a maximum of 30 days">
Postpone Postpone
</span> </span>
</label> </label>
<label class="wr-input-control radio light"> <label class="wr-input-control radio light">
<input id="window-system-update-radio-btn" type="radio" name="cosu-system-update-type" <input id="window-system-update-radio-btn" type="radio" name="cosu-system-update-type"
class="form-control operationDataKeys" data-key="cosuSystemUpdatePolicyType" class="form-control operationDataKeys" data-key="cosuSystemUpdatePolicyType"
value="window" onclick="slideDownPaneAgainstValueSetForRadioButtons(this, 'cosu-system-update-policy-window-select', ['window'])"/> value="window"
<span class="helper" title="Install system update automatically within a daily maintenance window, for a maximum of 30 days"> onclick="slideDownPaneAgainstValueSetForRadioButtons(this, 'cosu-system-update-policy-window-select', ['window'])"/>
<span class="helper"
title="Install system update automatically within a daily maintenance window, for a maximum of 30 days">
Window Window
</span> </span>
</label> </label>
@ -1468,7 +1478,8 @@
<div id="cosu-whitelisted-applications-heading" class="panel-heading" role="tab"> <div id="cosu-whitelisted-applications-heading" class="panel-heading" role="tab">
<h2 class="sub-title panel-title"> <h2 class="sub-title panel-title">
Whitelist Applications (COSU) Whitelist Applications (COSU)
<label id="cosu-whitelisted-applications-lbl" class="wr-input-control switch" data-toggle="collapse" <label id="cosu-whitelisted-applications-lbl" class="wr-input-control switch"
data-toggle="collapse"
data-target="#cosu-whitelisted-applications-body"> data-target="#cosu-whitelisted-applications-body">
<input type="checkbox"/> <input type="checkbox"/>
<span class="helper"></span> <span class="helper"></span>
@ -1476,8 +1487,10 @@
</label> </label>
<hr> <hr>
<div class="panel-title-description"> <div class="panel-title-description">
This configuration can be used to whitelist applications in lock task mode of an Android Device in COSU. This configuration can be used to whitelist applications in lock task mode of an Android
Once this configuration profile is installed on a device, corresponding users will not be able Device in COSU.
Once this configuration profile is installed on a device, corresponding users will not be
able
to modify these settings on their devices. to modify these settings on their devices.
</div> </div>
</h2> </h2>
@ -1485,22 +1498,25 @@
<div id="cosu-whitelisted-applications-body" class="panel-collapse panel-body collapse" role="tabpanel" <div id="cosu-whitelisted-applications-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="cosu-whitelisted-applications-body"> aria-labelledby="cosu-whitelisted-applications-body">
<div id="cosu-whitelisted-applications-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="cosu-whitelisted-applications-feature-error-msg" class="alert alert-danger hidden"
role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="cosu-whitelisted-applications"> <label class="wr-input-label" for="cosu-whitelisted-applications">
Whitelisted Applications to enter Lock Task Mode Whitelisted Applications to enter Lock Task Mode
<span class="helper" title="Configuration information specific to a given third-party VPN solution. This has to be input as key/value pairs."> <span class="helper"
title="Configuration information specific to a given third-party VPN solution. This has to be input as key/value pairs.">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
<br> <br>
<a href="#cosu-whitelisted-applications-grid" class="grid-input-add" data-click-event="add-form"> <a href="#cosu-whitelisted-applications-grid" class="btn btn-secondary grid-input-add"
data-click-event="add-form">
<span class="icon fw-stack"> <span class="icon fw-stack">
<i class="fw fw-add fw-stack-1x"></i> <i class="fw fw-add fw-stack-1x"></i>
<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-ring fw-stack-2x"></i>
</span> </span>
Add Application Add Application
</a> </a>
</label> </label>
@ -1526,19 +1542,21 @@
</table> </table>
<table class="template hidden"> <table class="template hidden">
<tbody data-add-form="#cosu-whitelisted-applications-grid"> <tbody data-add-form="#cosu-whitelisted-applications-grid">
<tr data-add-form-element="clone"> <tr data-add-form-element="clone">
<td data-title="No:"> <td data-title="No:">
<span class="index"></span> <span class="index"></span>
</td> </td>
<td data-title="Application Name / Description"> <td data-title="Application Name / Description">
<input type="text" class="form-control grid-input-text" data-child-key="appName" <input type="text" class="form-control grid-input-text" data-child-key="appName"
maxlength="100" data-default="" placeholder="[ Application Name / Description ]"/> maxlength="100" data-default=""
</td> placeholder="[ Application Name / Description ]"/>
<td data-title="Package Name"> </td>
<input type="text" class="form-control grid-input-text" data-child-key="packageName" <td data-title="Package Name">
maxlength="100" data-default="" placeholder="[ Package Name ]"/> <input type="text" class="form-control grid-input-text"
</td> data-child-key="packageName"
<td> maxlength="100" data-default="" placeholder="[ Package Name ]"/>
</td>
<td>
<span class="list-group-item-actions"> <span class="list-group-item-actions">
<a href="#cosu-whitelisted-applications-grid" class="grid-input-remove" <a href="#cosu-whitelisted-applications-grid" class="grid-input-remove"
data-click-event="remove-form"> data-click-event="remove-form">
@ -1548,8 +1566,8 @@
</span> </span>
</a> </a>
</span> </span>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>

View File

@ -1954,8 +1954,8 @@ var slideDownPaneAgainstValueSet = function (selectElement, paneID, valueSet) {
var slideDownPaneAgainstValueSetForRadioButtons = function (selectElement, paneID, valueSet) { var slideDownPaneAgainstValueSetForRadioButtons = function (selectElement, paneID, valueSet) {
var selectedValueOnChange = selectElement.value; var selectedValueOnChange = selectElement.value;
var i, slideDownVotes = 0; var slideDownVotes = 0;
for (i = 0; i < valueSet.length; i++) { for (var i = 0; i < valueSet.length; i++) {
if (selectedValueOnChange == valueSet[i]) { if (selectedValueOnChange == valueSet[i]) {
slideDownVotes++; slideDownVotes++;
} }

View File

@ -5,7 +5,8 @@
<i class="fw fw-key fw-stack-2x"></i> <i class="fw fw-key fw-stack-2x"></i>
</span> </span>
Passcode Policy Passcode Policy
<span id="passcode-policy-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span> <span id="passcode-policy-configured" class="has-configured status-icon hidden"><i
class="fw fw-ok"></i></span>
<span id="passcode-policy-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span> <span id="passcode-policy-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
<span id="passcode-policy-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span> <span id="passcode-policy-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>
</a> </a>
@ -23,9 +24,11 @@
<i class="fw fw-security fw-stack-2x"></i> <i class="fw fw-security fw-stack-2x"></i>
</span> </span>
Encryption Settings Encryption Settings
<span id="encrypt-storage-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span> <span id="encrypt-storage-configured" class="has-configured status-icon hidden"><i
class="fw fw-ok"></i></span>
<span id="encrypt-storage-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span> <span id="encrypt-storage-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
<span id="encrypt-storage-error" class="encryption-error status-icon hidden"><i class="fw fw-error"></i></span> <span id="encrypt-storage-error" class="encryption-error status-icon hidden"><i
class="fw fw-error"></i></span>
</a> </a>
<a href="javascript:void(0)" onclick="showAdvanceOperation('wifi', this)"> <a href="javascript:void(0)" onclick="showAdvanceOperation('wifi', this)">
<span class="wr-hidden-operations-icon fw-stack"> <span class="wr-hidden-operations-icon fw-stack">
@ -60,7 +63,8 @@
<i class="fw fw-block fw-stack-2x"></i> <i class="fw fw-block fw-stack-2x"></i>
</span> </span>
Applications Restrictions Applications Restrictions
<span id="app-restriction-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span> <span id="app-restriction-configured" class="has-configured status-icon hidden"><i
class="fw fw-ok"></i></span>
<span id="app-restriction-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span> <span id="app-restriction-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
<span id="app-restriction-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span> <span id="app-restriction-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>
</a> </a>
@ -69,8 +73,10 @@
<i class="fw fw-import fw-stack-2x"></i> <i class="fw fw-import fw-stack-2x"></i>
</span> </span>
System Update Policy (COSU) System Update Policy (COSU)
<span id="cosu-system-update-policy-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span> <span id="cosu-system-update-policy-configured" class="has-configured status-icon hidden"><i
<span id="cosu-system-update-policy-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span> class="fw fw-ok"></i></span>
<span id="cosu-system-update-policy-ok" class="has-success status-icon hidden"><i
class="fw fw-ok"></i></span>
<span id="cosu-system-update-policy-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span> <span id="cosu-system-update-policy-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>
</a> </a>
<a href="javascript:void(0)" onclick="showAdvanceOperation('cosu-whitelisted-applications', this)" class="hide"> <a href="javascript:void(0)" onclick="showAdvanceOperation('cosu-whitelisted-applications', this)" class="hide">
@ -78,20 +84,24 @@
<i class="fw fw-register fw-stack-2x"></i> <i class="fw fw-register fw-stack-2x"></i>
</span> </span>
Whitelist Apps (COSU) Whitelist Apps (COSU)
<span id="cosu-whitelisted-applications-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span> <span id="cosu-whitelisted-applications-configured" class="has-configured status-icon hidden"><i
class="fw fw-ok"></i></span>
<span id="cosu-whitelisted-applications-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span> <span id="cosu-whitelisted-applications-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
<span id="cosu-whitelisted-applications-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span> <span id="cosu-whitelisted-applications-error" class="has-error status-icon hidden"><i
class="fw fw-error"></i></span>
</a> </a>
</div> </div>
<div class="wr-hidden-operations-content col-lg-8"> <div class="wr-hidden-operations-content col-lg-8">
<!-- passcode-policy --> <!-- passcode-policy -->
<div class="wr-hidden-operation" data-operation="passcode-policy" style="display: block"> <div class="wr-hidden-operation" data-operation="passcode-policy" style="display: block">
<div class="panel panel-default operation-data" data-operation="passcode-policy" data-operation-code="PASSCODE_POLICY"> <div class="panel panel-default operation-data" data-operation="passcode-policy"
data-operation-code="PASSCODE_POLICY">
<div id="passcode-policy-heading" class="panel-heading" role="tab"> <div id="passcode-policy-heading" class="panel-heading" role="tab">
<h2 class="sub-title panel-title"> <h2 class="sub-title panel-title">
Passcode Policy Passcode Policy
<label id="passcode-policy-lbl" class="wr-input-control switch hidden" data-toggle="collapse" data-target="#passcode-policy-body"> <label id="passcode-policy-lbl" class="wr-input-control switch hidden" data-toggle="collapse"
<input type="checkbox" /> data-target="#passcode-policy-body">
<input type="checkbox"/>
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
@ -102,7 +112,8 @@
to modify these settings on their devices. to modify these settings on their devices.
</div> </div>
</div> </div>
<div id="passcode-policy-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="passcode-policy-body"> <div id="passcode-policy-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="passcode-policy-body">
<hr/> <hr/>
<div id="passcode-policy-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="passcode-policy-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
@ -110,8 +121,11 @@
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-control checkbox"> <label class="wr-input-control checkbox">
<input id="passcode-policy-allow-simple" type="checkbox" class="form-control operationDataKeys" data-key="passcodePolicyAllowSimple" checked="checked" disabled/> <input id="passcode-policy-allow-simple" type="checkbox"
<span class="helper" title="Permit the use of repeating, ascending and descending character sequences"> class="form-control operationDataKeys" data-key="passcodePolicyAllowSimple"
checked="checked" disabled/>
<span class="helper"
title="Permit the use of repeating, ascending and descending character sequences">
Allow simple value Allow simple value
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
@ -120,7 +134,9 @@
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-control checkbox"> <label class="wr-input-control checkbox">
<input id="passcode-policy-require-alphanumeric" type="checkbox" class="form-control operationDataKeys" data-key="passcodePolicyRequireAlphanumeric" checked="checked" disabled/> <input id="passcode-policy-require-alphanumeric" type="checkbox"
class="form-control operationDataKeys" data-key="passcodePolicyRequireAlphanumeric"
checked="checked" disabled/>
<span class="helper" title="Require passcode to contain both letters and numbers"> <span class="helper" title="Require passcode to contain both letters and numbers">
Require alphanumeric value Require alphanumeric value
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
@ -135,7 +151,8 @@
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
<select id="passcode-policy-min-length" class="form-control operationDataKeys" data-key="passcodePolicyMinLength" data-default="0" disabled> <select id="passcode-policy-min-length" class="form-control operationDataKeys"
data-key="passcodePolicyMinLength" data-default="0" disabled>
<option value="" selected="selected"> <option value="" selected="selected">
None None
</option> </option>
@ -157,11 +174,13 @@
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="passcode-policy-min-complex-chars"> <label class="wr-input-label" for="passcode-policy-min-complex-chars">
Minimum number of complex characters Minimum number of complex characters
<span class="helper" title="Minimum number of complex or non-alphanumeric characters allowed in a passcode"> <span class="helper"
title="Minimum number of complex or non-alphanumeric characters allowed in a passcode">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
<select id="passcode-policy-min-complex-chars" class="form-control operationDataKeys" data-key="passcodePolicyMinComplexChars" data-default="0" disabled> <select id="passcode-policy-min-complex-chars" class="form-control operationDataKeys"
data-key="passcodePolicyMinComplexChars" data-default="0" disabled>
<option value="" selected="selected"> <option value="" selected="selected">
None None
</option> </option>
@ -182,7 +201,9 @@
<br> <br>
( Should be in between 1-to-730 days or none ) ( Should be in between 1-to-730 days or none )
</label> </label>
<input id="passcode-policy-max-passcode-age-in-days" type="text" class="form-control operationDataKeys" data-key="passcodePolicyMaxPasscodeAgeInDays" maxlength="3" placeholder="[ Requires Number Input ]" disabled> <input id="passcode-policy-max-passcode-age-in-days" type="text"
class="form-control operationDataKeys" data-key="passcodePolicyMaxPasscodeAgeInDays"
maxlength="3" placeholder="[ Requires Number Input ]" disabled>
</div> </div>
<div class="wr-input-control"> <div class="wr-input-control">
@ -194,17 +215,21 @@
<br> <br>
( Should be in between 1-to-50 passcodes or none ) ( Should be in between 1-to-50 passcodes or none )
</label> </label>
<input id="passcode-policy-passcode-history" type="text" class="form-control operationDataKeys" data-key="passcodePolicyPasscodeHistory" maxlength="2" placeholder="[ Requires Number Input ]" disabled> <input id="passcode-policy-passcode-history" type="text" class="form-control operationDataKeys"
data-key="passcodePolicyPasscodeHistory" maxlength="2"
placeholder="[ Requires Number Input ]" disabled>
</div> </div>
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="passcodePolicyMaxFailedAttempts"> <label class="wr-input-label" for="passcodePolicyMaxFailedAttempts">
Maximum number of failed attempts Maximum number of failed attempts
<span class="helper" title="Maximum number of passcode entry attempts allowed before all data on a device will be erased"> <span class="helper"
title="The maximum number of failed password entry attempts. If the correct password is not entered within the defined number of attempts, the data on the device will be erased">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
<select id="passcode-policy-max-failed-attempts" class="form-control operationDataKeys" data-key="passcodePolicyMaxFailedAttempts" data-default="0" disabled> <select id="passcode-policy-max-failed-attempts" class="form-control operationDataKeys"
data-key="passcodePolicyMaxFailedAttempts" data-default="0" disabled>
<option value="" selected="selected"> <option value="" selected="selected">
None None
</option> </option>
@ -241,7 +266,8 @@
to modify these settings on their devices. to modify these settings on their devices.
</div> </div>
</div> </div>
<div id="camera-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="camera-body"> <div id="camera-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="camera-body">
<hr/> <hr/>
<div id="camera-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="camera-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
@ -251,7 +277,8 @@
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-control checkbox"> <label class="wr-input-control checkbox">
<input id="camera-enabled" type="checkbox" class="operationDataKeys" data-key="cameraEnabled" <input id="camera-enabled" type="checkbox" class="operationDataKeys"
data-key="cameraEnabled"
checked="checked" disabled/> checked="checked" disabled/>
<span class="helper" <span class="helper"
title="Having this checked would enable Usage of phone camera in the device."> title="Having this checked would enable Usage of phone camera in the device.">
@ -659,7 +686,8 @@
<br> <br>
<br> <br>
<b> <b>
Bellow restrictions will be applied on devices with Android version 6.0 Marshmallow onwards only. Bellow restrictions will be applied on devices with Android version 6.0 Marshmallow onwards
only.
</b> </b>
<br><br> <br><br>
<div class="wr-input-control"> <div class="wr-input-control">
@ -680,23 +708,28 @@
<!-- encrypt-storage --> <!-- encrypt-storage -->
<div class="wr-hidden-operation" data-operation="encrypt-storage"> <div class="wr-hidden-operation" data-operation="encrypt-storage">
<div class="panel panel-default operation-data" data-operation="encrypt-storage" data-operation-code="ENCRYPT_STORAGE"> <div class="panel panel-default operation-data" data-operation="encrypt-storage"
data-operation-code="ENCRYPT_STORAGE">
<div id="encrypt-storage-heading" class="panel-heading" role="tab"> <div id="encrypt-storage-heading" class="panel-heading" role="tab">
<h2 class="sub-title panel-title"> <h2 class="sub-title panel-title">
Encryption Settings Encryption Settings
<label class="wr-input-control switch hidden" data-toggle="collapse" data-target="#encrypt-storage-body"> <label class="wr-input-control switch hidden" data-toggle="collapse"
<input type="checkbox" /> data-target="#encrypt-storage-body">
<input type="checkbox"/>
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
</h2> </h2>
<div class="panel-title-description"> <div class="panel-title-description">
This configuration can be used to encrypt data on an Android device, when the device is locked and This configuration can be used to encrypt data on an Android device, when the device is locked
make it readable when the passcode is entered. Once this configuration profile is installed on a device, and
make it readable when the passcode is entered. Once this configuration profile is installed on a
device,
corresponding users will not be able to modify these settings on their devices. corresponding users will not be able to modify these settings on their devices.
</div> </div>
</div> </div>
<div id="encrypt-storage-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="encrypt-storage-body"> <div id="encrypt-storage-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="encrypt-storage-body">
<hr/> <hr/>
<div id="encrypt-storage-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="encrypt-storage-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
@ -706,8 +739,10 @@
<br> <br>
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-control checkbox"> <label class="wr-input-control checkbox">
<input id="encrypt-storage-enabled" type="checkbox" class="operationDataKeys" data-key="encryptStorageEnabled" checked="checked" disabled/> <input id="encrypt-storage-enabled" type="checkbox" class="operationDataKeys"
<span class="helper" title="Having this checked would enable Storage-encryption in the device"> data-key="encryptStorageEnabled" checked="checked" disabled/>
<span class="helper"
title="Having this checked would enable Storage-encryption in the device">
Enable storage-encryption Enable storage-encryption
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
@ -726,7 +761,7 @@
<h2 class="sub-title panel-title"> <h2 class="sub-title panel-title">
Wi-Fi Settings Wi-Fi Settings
<label class="wr-input-control switch hidden" data-toggle="collapse" data-target="#wifi-body"> <label class="wr-input-control switch hidden" data-toggle="collapse" data-target="#wifi-body">
<input type="checkbox" /> <input type="checkbox"/>
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
@ -737,7 +772,8 @@
to modify these settings on their devices. to modify these settings on their devices.
</div> </div>
</div> </div>
<div id="wifi-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="wifi-body"> <div id="wifi-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="wifi-body">
<hr/> <hr/>
<!--<div class="cloneable">--> <!--<div class="cloneable">-->
<!--<a href="#" class="multi-view add enabled">--> <!--<a href="#" class="multi-view add enabled">-->
@ -770,7 +806,8 @@
<br> <br>
( should be 1-to-30 characters long ) ( should be 1-to-30 characters long )
</label> </label>
<input id="wifi-ssid" type="text" class="form-control operationDataKeys" data-key="wifiSSID" maxlength="100" placeholder="[ Required field ]" disabled/> <input id="wifi-ssid" type="text" class="form-control operationDataKeys" data-key="wifiSSID"
maxlength="100" placeholder="[ Required field ]" disabled/>
</div> </div>
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="wifi-type"> <label class="wr-input-label" for="wifi-type">
@ -797,7 +834,8 @@
</span> </span>
</label> </label>
<select class="form-control operationDataKeys" id="wifi-eap" <select class="form-control operationDataKeys" id="wifi-eap"
onchange="changeAndroidWifiPolicyEAP(this, document.getElementById('wifi-type'))" data-key="wifiEAP" disabled> onchange="changeAndroidWifiPolicyEAP(this, document.getElementById('wifi-type'))"
data-key="wifiEAP" disabled>
<option value="peap">PEAP</option> <option value="peap">PEAP</option>
<option value="tls">TLS</option> <option value="tls">TLS</option>
<option value="ttls">TTLS</option> <option value="ttls">TTLS</option>
@ -829,7 +867,8 @@
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
<select class="form-control operationDataKeys" id="wifi-provisioning" data-key="wifiProvisioning" disabled> <select class="form-control operationDataKeys" id="wifi-provisioning"
data-key="wifiProvisioning" disabled>
<option value="0">0</option> <option value="0">0</option>
<option value="1">1</option> <option value="1">1</option>
<option value="2">2</option> <option value="2">2</option>
@ -848,7 +887,7 @@
</label> </label>
<input id="wifi-identity" type="text" class="form-control operationDataKeys" <input id="wifi-identity" type="text" class="form-control operationDataKeys"
data-key="wifiIdentity" data-key="wifiIdentity"
maxlength="100" placeholder="[ Should be 1-to-30 characters long ]" disabled /> maxlength="100" placeholder="[ Should be 1-to-30 characters long ]" disabled/>
</div> </div>
<div class="wr-input-control" id="control-wifi-anoidentity" style="display:none;"> <div class="wr-input-control" id="control-wifi-anoidentity" style="display:none;">
<label class="wr-input-label" for="wifi-anoidentity"> <label class="wr-input-label" for="wifi-anoidentity">
@ -866,8 +905,8 @@
</div> </div>
<div class="wr-input-control" id="control-wifi-password" style="display:none;"> <div class="wr-input-control" id="control-wifi-password" style="display:none;">
<label class="wr-input-label" for="wifi-password"> <label class="wr-input-label" for="wifi-password">
Password* Password
<span class="helper" title="Password for the wireless network."> <span class="helper required" title="Password for the wireless network.">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -881,12 +920,14 @@
<!-- /wi-fi --> <!-- /wi-fi -->
<!--app-restriction--> <!--app-restriction-->
<div class="wr-hidden-operation" data-operation="app-restriction"> <div class="wr-hidden-operation" data-operation="app-restriction">
<div class="panel panel-default operation-data" data-operation="app-restriction" data-operation-code="APP-RESTRICTION"> <div class="panel panel-default operation-data" data-operation="app-restriction"
data-operation-code="APP-RESTRICTION">
<div id="app-restriction-heading" class="panel-heading" role="tab"> <div id="app-restriction-heading" class="panel-heading" role="tab">
<h2 class="sub-title panel-title"> <h2 class="sub-title panel-title">
Application Restriction Settings Application Restriction Settings
<label class="wr-input-control switch hidden" data-toggle="collapse" data-target="#app-restriction-body"> <label class="wr-input-control switch hidden" data-toggle="collapse"
<input type="checkbox" /> data-target="#app-restriction-body">
<input type="checkbox"/>
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
@ -895,13 +936,15 @@
This configuration can be used to create a black list or white list of applications. This configuration can be used to create a black list or white list of applications.
</div> </div>
</div> </div>
<div id="app-restriction-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="app-restriction-body"> <div id="app-restriction-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="app-restriction-body">
<hr/> <hr/>
<div id="app-restriction-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="app-restriction-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
<select id="app-restriction-type" class="form-control operationDataKeys" data-key="restrictionType" disabled> <select id="app-restriction-type" class="form-control operationDataKeys" data-key="restrictionType"
disabled>
<option value="" selected="selected"> <option value="" selected="selected">
None None
</option> </option>
@ -917,7 +960,8 @@
</span> </span>
</label> </label>
<br/> <br/>
<a href="#restricted-applications-grid" class="btn btn-secondary grid-input-add hidden" data-click-event="add-form"> <a href="#restricted-applications-grid" class="btn btn-secondary grid-input-add hidden"
data-click-event="add-form">
<span class="icon fw-stack"> <span class="icon fw-stack">
<i class="fw fw-add fw-stack-1x"></i> <i class="fw fw-add fw-stack-1x"></i>
<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-ring fw-stack-2x"></i>
@ -925,7 +969,9 @@
Add Application Add Application
</a> </a>
<div id="restricted-applications" class="operationDataKeys grouped-array-input multi-column-key-value-pair-array" data-key="restrictedApplications" data-column-count="2"> <div id="restricted-applications"
class="operationDataKeys grouped-array-input multi-column-key-value-pair-array"
data-key="restrictedApplications" data-column-count="2">
<table class="table table-responsive table-striped"> <table class="table table-responsive table-striped">
<thead> <thead>
<tr> <tr>
@ -950,14 +996,18 @@
<span class="index"></span> <span class="index"></span>
</td> </td>
<td data-title="App Name"> <td data-title="App Name">
<input type="text" class="form-control grid-input-text" data-child-key="appName" maxlength="100" data-default="" placeholder="[ Gmail ]" disabled/> <input type="text" class="form-control grid-input-text" data-child-key="appName"
maxlength="100" data-default="" placeholder="[ Gmail ]" disabled/>
</td> </td>
<td data-title="Package Name"> <td data-title="Package Name">
<input type="text" class="form-control grid-input-text" data-child-key="packageName" maxlength="100" data-default="" placeholder="[ com.google.android.gm ]" disabled/> <input type="text" class="form-control grid-input-text"
data-child-key="packageName" maxlength="100" data-default=""
placeholder="[ com.google.android.gm ]" disabled/>
</td> </td>
<td> <td>
<span class="list-group-item-actions hidden"> <span class="list-group-item-actions hidden">
<a href="#restricted-applications-grid" class="grid-input-remove" data-click-event="remove-form"> <a href="#restricted-applications-grid" class="grid-input-remove"
data-click-event="remove-form">
<span class="fw-stack helper" title="Remove Entry"> <span class="fw-stack helper" title="Remove Entry">
<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-ring fw-stack-2x"></i>
<i class="fw fw-delete fw-stack-1x"></i> <i class="fw fw-delete fw-stack-1x"></i>
@ -982,7 +1032,7 @@
<h2 class="sub-title panel-title"> <h2 class="sub-title panel-title">
VPN Settings VPN Settings
<label class="wr-input-control switch hidden" data-toggle="collapse" data-target="#vpn-body"> <label class="wr-input-control switch hidden" data-toggle="collapse" data-target="#vpn-body">
<input type="checkbox" /> <input type="checkbox"/>
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
@ -993,7 +1043,8 @@
to modify these settings on their devices. to modify these settings on their devices.
</div> </div>
</div> </div>
<div id="vpn-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="vpn-body"> <div id="vpn-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="vpn-body">
<hr/> <hr/>
Please note that * sign represents required fields of data. Please note that * sign represents required fields of data.
<br> <br>
@ -1008,7 +1059,9 @@
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
<input id="vpn-server-address" type="text" class="form-control operationDataKeys" data-key="serverAddress" maxlength="200" placeholder="[ Should be a valid hostname ]" disabled/> <input id="vpn-server-address" type="text" class="form-control operationDataKeys"
data-key="serverAddress" maxlength="200" placeholder="[ Should be a valid hostname ]"
disabled/>
</div> </div>
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="vpn-server-port"> <label class="wr-input-label" for="vpn-server-port">
@ -1017,7 +1070,8 @@
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
<input id="vpn-server-port" type="text" class="form-control operationDataKeys" data-key="serverPort" maxlength="100" placeholder="[ Optional field ]" disabled/> <input id="vpn-server-port" type="text" class="form-control operationDataKeys"
data-key="serverPort" maxlength="100" placeholder="[ Optional field ]" disabled/>
</div> </div>
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="vpn-shared-secret"> <label class="wr-input-label" for="vpn-shared-secret">
@ -1026,7 +1080,8 @@
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
<input id="vpn-shared-secret" type="password" class="form-control operationDataKeys" data-key="sharedSecret" maxlength="100" placeholder="[ Optional field ]" disabled/> <input id="vpn-shared-secret" type="password" class="form-control operationDataKeys"
data-key="sharedSecret" maxlength="100" placeholder="[ Optional field ]" disabled/>
</div> </div>
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="vpn-dns"> <label class="wr-input-label" for="vpn-dns">
@ -1035,7 +1090,8 @@
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
<input id="vpn-dns" type="text" class="form-control operationDataKeys" data-key="dnsServer" maxlength="100" placeholder="[ Optional field ]" disabled/> <input id="vpn-dns" type="text" class="form-control operationDataKeys" data-key="dnsServer"
maxlength="100" placeholder="[ Optional field ]" disabled/>
</div> </div>
</div> </div>
</div> </div>
@ -1151,21 +1207,25 @@
<!--Work-profile--> <!--Work-profile-->
<div class="wr-hidden-operation" data-operation="work-profile"> <div class="wr-hidden-operation" data-operation="work-profile">
<div class="panel panel-default operation-data" data-operation="work-profile" data-operation-code="WORK_PROFILE"> <div class="panel panel-default operation-data" data-operation="work-profile"
data-operation-code="WORK_PROFILE">
<div id="work-profile-policy-heading" class="panel-heading" role="tab"> <div id="work-profile-policy-heading" class="panel-heading" role="tab">
<h2 class="sub-title panel-title"> <h2 class="sub-title panel-title">
Work-Profile Configurations Work-Profile Configurations
<label id="work-profile-policy-lbl" class="wr-input-control switch hidden" data-toggle="collapse" data-target="#work-profile-policy-body"> <label id="work-profile-policy-lbl" class="wr-input-control switch hidden"
<input type="checkbox" /> data-toggle="collapse" data-target="#work-profile-policy-body">
<input type="checkbox"/>
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
</h2> </h2>
<div class="panel-title-description"> <div class="panel-title-description">
The configurations below can be applied to the devices where the agent is running in Android Work-Profile. The configurations below can be applied to the devices where the agent is running in Android
Work-Profile.
</div> </div>
</div> </div>
<div id="work-profile-policy-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="work-profile-policy-body"> <div id="work-profile-policy-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="work-profile-policy-body">
<hr/> <hr/>
<div id="work-profile-policy-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="work-profile-policy-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
@ -1188,7 +1248,8 @@
</span> </span>
<br> <br>
</label> </label>
<input id="work-profile-policy-profile-name" type="text" class="form-control operationDataKeys" data-key="workProfilePolicyProfileName" maxlength="20" disabled> <input id="work-profile-policy-profile-name" type="text" class="form-control operationDataKeys"
data-key="workProfilePolicyProfileName" maxlength="20" disabled>
</div> </div>
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="work-profile-policy-enable-system-apps"> <label class="wr-input-label" for="work-profile-policy-enable-system-apps">
@ -1197,9 +1258,12 @@
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
<br> <br>
( Should be exact package names seperated by commas. Ex: com.google.android.apps.maps, com.google.android.calculator ) ( Should be exact package names seperated by commas. Ex: com.google.android.apps.maps,
com.google.android.calculator )
</label> </label>
<textarea id="workProfilePolicyEnableSystemApps" type ="text" class="form-control operationDataKeys" rows="4" data-key="workProfilePolicyEnableSystemApps" disabled></textarea> <textarea id="workProfilePolicyEnableSystemApps" type="text"
class="form-control operationDataKeys" rows="4"
data-key="workProfilePolicyEnableSystemApps" disabled></textarea>
</div> </div>
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="work-profile-policy-hide-system-apps"> <label class="wr-input-label" for="work-profile-policy-hide-system-apps">
@ -1208,9 +1272,12 @@
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
<br> <br>
( Should be exact package names seperated by commas. Ex: com.google.android.apps.maps, com.google.android.calculator ) ( Should be exact package names seperated by commas. Ex: com.google.android.apps.maps,
com.google.android.calculator )
</label> </label>
<textarea id="work-profile-policy-hide-system-apps" class="form-control operationDataKeys" rows="4" data-key="workProfilePolicyHideSystemApps" placeholder="" disabled></textarea> <textarea id="work-profile-policy-hide-system-apps" class="form-control operationDataKeys"
rows="4" data-key="workProfilePolicyHideSystemApps" placeholder=""
disabled></textarea>
</div> </div>
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="work-profile-policy-unhide-system-apps"> <label class="wr-input-label" for="work-profile-policy-unhide-system-apps">
@ -1219,20 +1286,27 @@
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
<br> <br>
( Should be exact package names seperated by commas. Ex: com.google.android.apps.maps, com.google.android.calculator ) ( Should be exact package names seperated by commas. Ex: com.google.android.apps.maps,
com.google.android.calculator )
</label> </label>
<textarea id="work-profile-policy-unhide-system-apps" class="form-control operationDataKeys" rows="4" data-key="workProfilePolicyUnhideSystemApps" placeholder="" disabled></textarea> <textarea id="work-profile-policy-unhide-system-apps" class="form-control operationDataKeys"
rows="4" data-key="workProfilePolicyUnhideSystemApps" placeholder=""
disabled></textarea>
</div> </div>
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="passcode-policy-max-passcode-age-in-days"> <label class="wr-input-label" for="passcode-policy-max-passcode-age-in-days">
Enable Google Play Store Apps Enable Google Play Store Apps
<span class="helper" title="The set of apps needed to be installed from Google Playstore to work-profile"> <span class="helper"
title="The set of apps needed to be installed from Google Playstore to work-profile">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
<br> <br>
( Should be exact package names seperated by commas. Ex: com.google.android.apps.maps, com.google.android.calculator ) ( Should be exact package names seperated by commas. Ex: com.google.android.apps.maps,
com.google.android.calculator )
</label> </label>
<textarea id="work-profile-policy-install-playstore-apps" class="form-control operationDataKeys" rows="4" data-key="workProfilePolicyEnablePlaystoreApps" placeholder="" disabled></textarea> <textarea id="work-profile-policy-install-playstore-apps" class="form-control operationDataKeys"
rows="4" data-key="workProfilePolicyEnablePlaystoreApps" placeholder=""
disabled></textarea>
</div> </div>
</div> </div>
</div> </div>
@ -1244,7 +1318,8 @@
<div id="cosu-system-update-policy-heading" class="panel-heading" role="tab"> <div id="cosu-system-update-policy-heading" class="panel-heading" role="tab">
<h2 class="sub-title panel-title"> <h2 class="sub-title panel-title">
System Update Policy (COSU) System Update Policy (COSU)
<label id="cosu-system-update-policy-lbl" class="wr-input-control switch hidden" data-toggle="collapse" <label id="cosu-system-update-policy-lbl" class="wr-input-control switch hidden"
data-toggle="collapse"
data-target="#cosu-system-update-policy-body"> data-target="#cosu-system-update-policy-body">
<input type="checkbox"/> <input type="checkbox"/>
<span class="helper"></span> <span class="helper"></span>
@ -1261,7 +1336,8 @@
</div> </div>
<div id="cosu-system-update-policy-body" class="panel-collapse panel-body collapse" role="tabpanel" <div id="cosu-system-update-policy-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="cosu-system-update-policy-body"> aria-labelledby="cosu-system-update-policy-body">
<div id="cosu-system-update-policy-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="cosu-system-update-policy-feature-error-msg" class="alert alert-danger hidden"
role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
<div class="wr-input-control"> <div class="wr-input-control">
@ -1275,24 +1351,33 @@
<label class="wr-input-control radio light"> <label class="wr-input-control radio light">
<input id="automatic-system-update-radio-btn" type="radio" name="cosu-system-update-type" <input id="automatic-system-update-radio-btn" type="radio" name="cosu-system-update-type"
class="form-control operationDataKeys" data-key="cosuSystemUpdatePolicyType" class="form-control operationDataKeys" data-key="cosuSystemUpdatePolicyType"
value="automatic" onclick="slideDownPaneAgainstValueSetForRadioButtons(this, 'cosu-system-update-policy-window-select', ['window'])" checked disabled/> value="automatic"
<span class="helper" title="Installs system update automatically as soon as one is available"> onclick="slideDownPaneAgainstValueSetForRadioButtons(this, 'cosu-system-update-policy-window-select', ['window'])"
checked disabled/>
<span class="helper"
title="Installs system update automatically as soon as one is available">
Automatic Automatic
</span> </span>
</label> </label>
<label class="wr-input-control radio light"> <label class="wr-input-control radio light">
<input id="postpone-system-update-radio-btn" type="radio" name="cosu-system-update-type" <input id="postpone-system-update-radio-btn" type="radio" name="cosu-system-update-type"
class="form-control operationDataKeys" data-key="cosuSystemUpdatePolicyType" class="form-control operationDataKeys" data-key="cosuSystemUpdatePolicyType"
value="postpone" onclick="slideDownPaneAgainstValueSetForRadioButtons(this, 'cosu-system-update-policy-window-select', ['window'])" disabled/> value="postpone"
<span class="helper" title="Incoming system update will be blocked for a maximum of 30 days"> onclick="slideDownPaneAgainstValueSetForRadioButtons(this, 'cosu-system-update-policy-window-select', ['window'])"
disabled/>
<span class="helper"
title="Incoming system update will be blocked for a maximum of 30 days">
Postpone Postpone
</span> </span>
</label> </label>
<label class="wr-input-control radio light"> <label class="wr-input-control radio light">
<input id="window-system-update-radio-btn" type="radio" name="cosu-system-update-type" <input id="window-system-update-radio-btn" type="radio" name="cosu-system-update-type"
class="form-control operationDataKeys" data-key="cosuSystemUpdatePolicyType" class="form-control operationDataKeys" data-key="cosuSystemUpdatePolicyType"
value="window" onclick="slideDownPaneAgainstValueSetForRadioButtons(this, 'cosu-system-update-policy-window-select', ['window'])" disabled/> value="window"
<span class="helper" title="Install system update automatically within a daily maintenance window, for a maximum of 30 days"> onclick="slideDownPaneAgainstValueSetForRadioButtons(this, 'cosu-system-update-policy-window-select', ['window'])"
disabled/>
<span class="helper"
title="Install system update automatically within a daily maintenance window, for a maximum of 30 days">
Window Window
</span> </span>
</label> </label>
@ -1390,7 +1475,8 @@
<div id="cosu-whitelisted-applications-heading" class="panel-heading" role="tab"> <div id="cosu-whitelisted-applications-heading" class="panel-heading" role="tab">
<h2 class="sub-title panel-title"> <h2 class="sub-title panel-title">
Whitelist Applications (COSU) Whitelist Applications (COSU)
<label id="cosu-whitelisted-applications-lbl" class="wr-input-control switch hidden" data-toggle="collapse" <label id="cosu-whitelisted-applications-lbl" class="wr-input-control switch hidden"
data-toggle="collapse"
data-target="#cosu-whitelisted-applications-body"> data-target="#cosu-whitelisted-applications-body">
<input type="checkbox"/> <input type="checkbox"/>
<span class="helper"></span> <span class="helper"></span>
@ -1398,7 +1484,8 @@
</label> </label>
<hr> <hr>
<div class="panel-title-description"> <div class="panel-title-description">
This configuration can be used to whitelist applications in lock task mode of an Android Device in COSU. This configuration can be used to whitelist applications in lock task mode of an Android
Device in COSU.
Once this configuration profile is installed on a device, corresponding users will not be Once this configuration profile is installed on a device, corresponding users will not be
able able
to modify these settings on their devices. to modify these settings on their devices.
@ -1408,17 +1495,20 @@
<div id="cosu-whitelisted-applications-body" class="panel-collapse panel-body collapse" role="tabpanel" <div id="cosu-whitelisted-applications-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="cosu-whitelisted-applications-body"> aria-labelledby="cosu-whitelisted-applications-body">
<div id="cosu-whitelisted-applications-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="cosu-whitelisted-applications-feature-error-msg" class="alert alert-danger hidden"
role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="cosu-whitelisted-applications"> <label class="wr-input-label" for="cosu-whitelisted-applications">
Whitelisted Applications to enter Lock Task Mode Whitelisted Applications to enter Lock Task Mode
<span class="helper" title="Configuration information specific to a given third-party VPN solution. This has to be input as key/value pairs."> <span class="helper"
title="Configuration information specific to a given third-party VPN solution. This has to be input as key/value pairs.">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
<br> <br>
<a href="#cosu-whitelisted-applications-grid" class="grid-input-add" data-click-event="add-form"> <a href="#cosu-whitelisted-applications-grid" class="grid-input-add"
data-click-event="add-form">
<span class="icon fw-stack"> <span class="icon fw-stack">
<i class="fw fw-add fw-stack-1x"></i> <i class="fw fw-add fw-stack-1x"></i>
<i class="fw fw-ring fw-stack-2x"></i> <i class="fw fw-ring fw-stack-2x"></i>
@ -1449,19 +1539,21 @@
</table> </table>
<table class="template hidden"> <table class="template hidden">
<tbody data-add-form="#cosu-whitelisted-applications-grid"> <tbody data-add-form="#cosu-whitelisted-applications-grid">
<tr data-add-form-element="clone"> <tr data-add-form-element="clone">
<td data-title="No:"> <td data-title="No:">
<span class="index"></span> <span class="index"></span>
</td> </td>
<td data-title="Application Name / Description"> <td data-title="Application Name / Description">
<input type="text" class="form-control grid-input-text" data-child-key="appName" <input type="text" class="form-control grid-input-text" data-child-key="appName"
maxlength="100" data-default="" placeholder="[ Application Name / Description ]" disabled/> maxlength="100" data-default=""
</td> placeholder="[ Application Name / Description ]" disabled/>
<td data-title="Package Name"> </td>
<input type="text" class="form-control grid-input-text" data-child-key="packageName" <td data-title="Package Name">
maxlength="100" data-default="" placeholder="[ Package Name ]" disabled/> <input type="text" class="form-control grid-input-text"
</td> data-child-key="packageName"
<td> maxlength="100" data-default="" placeholder="[ Package Name ]" disabled/>
</td>
<td>
<span class="list-group-item-actions hidden"> <span class="list-group-item-actions hidden">
<a href="#cosu-whitelisted-applications-grid" class="grid-input-remove" <a href="#cosu-whitelisted-applications-grid" class="grid-input-remove"
data-click-event="remove-form"> data-click-event="remove-form">
@ -1471,8 +1563,8 @@
</span> </span>
</a> </a>
</span> </span>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>

View File

@ -5,7 +5,8 @@
<i class="fw fw-key fw-stack-2x"></i> <i class="fw fw-key fw-stack-2x"></i>
</span> </span>
Passcode Policy Passcode Policy
<span id="passcode-policy-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span> <span id="passcode-policy-configured" class="has-configured status-icon hidden"><i
class="fw fw-ok"></i></span>
<span id="passcode-policy-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span> <span id="passcode-policy-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
<span id="passcode-policy-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span> <span id="passcode-policy-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>
</a> </a>
@ -23,9 +24,11 @@
<i class="fw fw-security fw-stack-2x"></i> <i class="fw fw-security fw-stack-2x"></i>
</span> </span>
Encryption Settings Encryption Settings
<span id="encrypt-storage-configured" class="has-configured status-icon hidden"><i class="fw fw-ok"></i></span> <span id="encrypt-storage-configured" class="has-configured status-icon hidden"><i
class="fw fw-ok"></i></span>
<span id="encrypt-storage-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span> <span id="encrypt-storage-ok" class="has-success status-icon hidden"><i class="fw fw-ok"></i></span>
<span id="encrypt-storage-error" class="encryption-error status-icon hidden"><i class="fw fw-error"></i></span> <span id="encrypt-storage-error" class="encryption-error status-icon hidden"><i
class="fw fw-error"></i></span>
</a> </a>
<a href="javascript:void(0)" onclick="showAdvanceOperation('wifi', this)"> <a href="javascript:void(0)" onclick="showAdvanceOperation('wifi', this)">
<span class="wr-hidden-operations-icon fw-stack"> <span class="wr-hidden-operations-icon fw-stack">
@ -37,46 +40,50 @@
<span id="wifi-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span> <span id="wifi-error" class="has-error status-icon hidden"><i class="fw fw-error"></i></span>
</a> </a>
<!--<a href="javascript:void(0)" onclick="showAdvanceOperation('install-apps', this)">--> <!--<a href="javascript:void(0)" onclick="showAdvanceOperation('install-apps', this)">-->
<!--<span class="wr-hidden-operations-icon fw-stack">--> <!--<span class="wr-hidden-operations-icon fw-stack">-->
<!--<i class="fw fw-application fw-stack-2x"></i>--> <!--<i class="fw fw-application fw-stack-2x"></i>-->
<!--</span>--> <!--</span>-->
<!--App Installations--> <!--App Installations-->
<!--</a>--> <!--</a>-->
<!--<a href="javascript:void(0)" onclick="showAdvanceOperation('blacklist-apps', this)">--> <!--<a href="javascript:void(0)" onclick="showAdvanceOperation('blacklist-apps', this)">-->
<!--<span class="wr-hidden-operations-icon fw-stack">--> <!--<span class="wr-hidden-operations-icon fw-stack">-->
<!--<i class="fw fw-block fw-stack-2x"></i>--> <!--<i class="fw fw-block fw-stack-2x"></i>-->
<!--</span>--> <!--</span>-->
<!--App Blacklisting--> <!--App Blacklisting-->
<!--</a>--> <!--</a>-->
<!--<a href="javascript:void(0)" onclick="showAdvanceOperation('web-clips', this)">--> <!--<a href="javascript:void(0)" onclick="showAdvanceOperation('web-clips', this)">-->
<!--<span class="wr-hidden-operations-icon fw-stack">--> <!--<span class="wr-hidden-operations-icon fw-stack">-->
<!--<i class="fw fw-website fw-stack-2x"></i>--> <!--<i class="fw fw-website fw-stack-2x"></i>-->
<!--</span>--> <!--</span>-->
<!--Web clips--> <!--Web clips-->
<!--</a>--> <!--</a>-->
</div> </div>
<div class="wr-hidden-operations-content col-lg-8"> <div class="wr-hidden-operations-content col-lg-8">
<!-- passcode-policy --> <!-- passcode-policy -->
<div class="wr-hidden-operation" data-operation="passcode-policy" style="display: block"> <div class="wr-hidden-operation" data-operation="passcode-policy" style="display: block">
<div class="panel panel-default operation-data" data-operation="passcode-policy" data-operation-code="PASSCODE_POLICY"> <div class="panel panel-default operation-data" data-operation="passcode-policy"
data-operation-code="PASSCODE_POLICY">
<div id="passcode-policy-heading" class="panel-heading" role="tab"> <div id="passcode-policy-heading" class="panel-heading" role="tab">
<h2 class="sub-title panel-title"> <h2 class="sub-title panel-title">
Passcode Policy Passcode Policy
<label id="passcode-policy-lbl" class="wr-input-control switch" data-toggle="collapse" data-target="#passcode-policy-body"> <label id="passcode-policy-lbl" class="wr-input-control switch" data-toggle="collapse"
<input type="checkbox" /> data-target="#passcode-policy-body">
<input type="checkbox"/>
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr> <hr>
<div class="panel-title-description"> <div class="panel-title-description">
This configuration can be used to set a passcode policy to an Android Device. This configuration can be used to set a passcode policy to an Android Device.
Once this configuration profile is installed on a device, corresponding users will not be able Once this configuration profile is installed on a device, corresponding users will not be
able
to modify these settings on their devices. to modify these settings on their devices.
</div> </div>
</h2> </h2>
</div> </div>
<div id="passcode-policy-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="passcode-policy-body"> <div id="passcode-policy-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="passcode-policy-body">
<div id="passcode-policy-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="passcode-policy-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
@ -84,9 +91,12 @@
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-control checkbox"> <label class="wr-input-control checkbox">
<input id="passcode-policy-allow-simple" type="checkbox" class="form-control operationDataKeys" data-key="passcodePolicyAllowSimple" checked="checked" /> <input id="passcode-policy-allow-simple" type="checkbox"
<span class="helper" title="Permit the use of repeating, ascending and descending character sequences"> class="form-control operationDataKeys" data-key="passcodePolicyAllowSimple"
&nbsp;&nbsp;&nbsp;Allow simple value checked="checked"/>
<span class="helper"
title="Permit the use of repeating, ascending and descending character sequences">
Allow simple value
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -94,9 +104,11 @@
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-control checkbox"> <label class="wr-input-control checkbox">
<input id="passcode-policy-require-alphanumeric" type="checkbox" class="form-control operationDataKeys" data-key="passcodePolicyRequireAlphanumeric" checked="checked" /> <input id="passcode-policy-require-alphanumeric" type="checkbox"
class="form-control operationDataKeys" data-key="passcodePolicyRequireAlphanumeric"
checked="checked"/>
<span class="helper" title="Require passcode to contain both letters and numbers"> <span class="helper" title="Require passcode to contain both letters and numbers">
&nbsp;&nbsp;&nbsp;Require alphanumeric value Require alphanumeric value
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -109,7 +121,8 @@
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
<select id="passcode-policy-min-length" class="form-control operationDataKeys" data-key="passcodePolicyMinLength" data-default="0"> <select id="passcode-policy-min-length" class="form-control operationDataKeys"
data-key="passcodePolicyMinLength" data-default="0">
<option value="" selected="selected"> <option value="" selected="selected">
None None
</option> </option>
@ -131,11 +144,13 @@
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="passcode-policy-min-complex-chars"> <label class="wr-input-label" for="passcode-policy-min-complex-chars">
Minimum number of complex characters Minimum number of complex characters
<span class="helper" title="Minimum number of complex or non-alphanumeric characters allowed in a passcode"> <span class="helper"
title="Minimum number of complex or non-alphanumeric characters allowed in a passcode">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
<select id="passcode-policy-min-complex-chars" class="form-control operationDataKeys" data-key="passcodePolicyMinComplexChars" data-default="0"> <select id="passcode-policy-min-complex-chars" class="form-control operationDataKeys"
data-key="passcodePolicyMinComplexChars" data-default="0">
<option value="" selected="selected"> <option value="" selected="selected">
None None
</option> </option>
@ -156,7 +171,9 @@
<br> <br>
( Should be in between 1-to-730 days or none ) ( Should be in between 1-to-730 days or none )
</label> </label>
<input id="passcode-policy-max-passcode-age-in-days" type="text" class="form-control operationDataKeys" data-key="passcodePolicyMaxPasscodeAgeInDays" maxlength="3"> <input id="passcode-policy-max-passcode-age-in-days" type="text"
class="form-control operationDataKeys" data-key="passcodePolicyMaxPasscodeAgeInDays"
maxlength="3">
</div> </div>
<div class="wr-input-control"> <div class="wr-input-control">
@ -168,17 +185,20 @@
<br> <br>
( Should be in between 1-to-50 passcodes or none ) ( Should be in between 1-to-50 passcodes or none )
</label> </label>
<input id="passcode-policy-passcode-history" type="text" class="form-control operationDataKeys" data-key="passcodePolicyPasscodeHistory" maxlength="2"> <input id="passcode-policy-passcode-history" type="text" class="form-control operationDataKeys"
data-key="passcodePolicyPasscodeHistory" maxlength="2">
</div> </div>
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="passcodePolicyMaxFailedAttempts"> <label class="wr-input-label" for="passcodePolicyMaxFailedAttempts">
Maximum number of failed attempts Maximum number of failed attempts
<span class="helper" title="Maximum number of passcode entry attempts allowed before all data on a device will be erased"> <span class="helper"
title="The maximum number of failed password entry attempts. If the correct password is not entered within the defined number of attempts, the data on the device will be erased">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
<select id="passcode-policy-max-failed-attempts" class="form-control operationDataKeys" data-key="passcodePolicyMaxFailedAttempts" data-default="0"> <select id="passcode-policy-max-failed-attempts" class="form-control operationDataKeys"
data-key="passcodePolicyMaxFailedAttempts" data-default="0">
<option value="" selected="selected"> <option value="" selected="selected">
None None
</option> </option>
@ -204,19 +224,22 @@
<h2 class="sub-title panel-title"> <h2 class="sub-title panel-title">
Restrictions on Camera Restrictions on Camera
<label class="wr-input-control switch" data-toggle="collapse" data-target="#camera-body"> <label class="wr-input-control switch" data-toggle="collapse" data-target="#camera-body">
<input type="checkbox" /> <input type="checkbox"/>
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr> <hr>
<div class="panel-title-description"> <div class="panel-title-description">
This configuration can be used to restrict the usage of camera on an Android device together with all the applications using the camera. This configuration can be used to restrict the usage of camera on an Android device together
Once this configuration profile is installed on a device, corresponding users will not be able with all the applications using the camera.
Once this configuration profile is installed on a device, corresponding users will not be
able
to modify these settings on their devices. to modify these settings on their devices.
</div> </div>
</h2> </h2>
</div> </div>
<div id="camera-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="camera-body"> <div id="camera-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="camera-body">
<div id="camera-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="camera-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
@ -225,9 +248,11 @@
<br> <br>
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-control checkbox"> <label class="wr-input-control checkbox">
<input id="camera-enabled" type="checkbox" class="operationDataKeys" data-key="cameraEnabled" checked="checked" /> <input id="camera-enabled" type="checkbox" class="operationDataKeys"
<span class="helper" title="Having this checked would enable Usage of phone camera in the device."> data-key="cameraEnabled" checked="checked"/>
&nbsp;&nbsp;&nbsp;Allow use of camera <span class="helper"
title="Having this checked would enable Usage of phone camera in the device.">
Allow use of camera
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -240,24 +265,29 @@
<!-- encrypt-storage --> <!-- encrypt-storage -->
<div class="wr-hidden-operation" data-operation="encrypt-storage"> <div class="wr-hidden-operation" data-operation="encrypt-storage">
<div class="panel panel-default operation-data" data-operation="encrypt-storage" data-operation-code="ENCRYPT_STORAGE"> <div class="panel panel-default operation-data" data-operation="encrypt-storage"
data-operation-code="ENCRYPT_STORAGE">
<div id="encrypt-storage-heading" class="panel-heading" role="tab"> <div id="encrypt-storage-heading" class="panel-heading" role="tab">
<h2 class="sub-title panel-title"> <h2 class="sub-title panel-title">
Encryption Settings Encryption Settings
<label class="wr-input-control switch" data-toggle="collapse" data-target="#encrypt-storage-body"> <label class="wr-input-control switch" data-toggle="collapse"
<input type="checkbox" /> data-target="#encrypt-storage-body">
<input type="checkbox"/>
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr> <hr>
<div class="panel-title-description"> <div class="panel-title-description">
This configuration can be used to encrypt data on an Android device, when the device is locked and This configuration can be used to encrypt data on an Android device, when the device is
make it readable when the passcode is entered. Once this configuration profile is installed on a device, locked and
make it readable when the passcode is entered. Once this configuration profile is installed
on a device,
corresponding users will not be able to modify these settings on their devices. corresponding users will not be able to modify these settings on their devices.
</div> </div>
</h2> </h2>
</div> </div>
<div id="encrypt-storage-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="encrypt-storage-body"> <div id="encrypt-storage-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="encrypt-storage-body">
<div id="encrypt-storage-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="encrypt-storage-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
@ -266,9 +296,11 @@
<br> <br>
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-control checkbox"> <label class="wr-input-control checkbox">
<input id="encrypt-storage-enabled" type="checkbox" class="operationDataKeys" data-key="encryptStorageEnabled" checked="checked" /> <input id="encrypt-storage-enabled" type="checkbox" class="operationDataKeys"
<span class="helper" title="Having this checked would enable Storage-encryption in the device"> data-key="encryptStorageEnabled" checked="checked"/>
&nbsp;&nbsp;&nbsp;Enable storage-encryption <span class="helper"
title="Having this checked would enable Storage-encryption in the device">
Enable storage-encryption
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -286,62 +318,66 @@
<h2 class="sub-title panel-title"> <h2 class="sub-title panel-title">
Wi-Fi Settings Wi-Fi Settings
<label class="wr-input-control switch" data-toggle="collapse" data-target="#wifi-body"> <label class="wr-input-control switch" data-toggle="collapse" data-target="#wifi-body">
<input type="checkbox" /> <input type="checkbox"/>
<span class="helper"></span> <span class="helper"></span>
<span class="text"></span> <span class="text"></span>
</label> </label>
<hr> <hr>
<div class="panel-title-description"> <div class="panel-title-description">
This configurations can be used to configure Wi-Fi access on an Android device. This configurations can be used to configure Wi-Fi access on an Android device.
Once this configuration profile is installed on a device, corresponding users will not be able Once this configuration profile is installed on a device, corresponding users will not be
able
to modify these settings on their devices. to modify these settings on their devices.
</div> </div>
</h2> </h2>
</div> </div>
<div id="wifi-body" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="wifi-body"> <div id="wifi-body" class="panel-collapse panel-body collapse" role="tabpanel"
aria-labelledby="wifi-body">
<!--<div class="cloneable">--> <!--<div class="cloneable">-->
<!--<a href="#" class="multi-view add enabled">--> <!--<a href="#" class="multi-view add enabled">-->
<!--<span class="icon fw-stack">--> <!--<span class="icon fw-stack">-->
<!--<i class="fw fw-add fw-stack-1x"></i>--> <!--<i class="fw fw-add fw-stack-1x"></i>-->
<!--<i class="fw fw-ring fw-stack-2x"></i>--> <!--<i class="fw fw-ring fw-stack-2x"></i>-->
<!--</span>--> <!--</span>-->
<!--</a>--> <!--</a>-->
<!--<a href="#" class="multi-view remove disabled">--> <!--<a href="#" class="multi-view remove disabled">-->
<!--<span class="icon fw-stack">--> <!--<span class="icon fw-stack">-->
<!--<i class="fw fw-minus fw-stack-1x"></i>--> <!--<i class="fw fw-minus fw-stack-1x"></i>-->
<!--<i class="fw fw-ring fw-stack-2x"></i>--> <!--<i class="fw fw-ring fw-stack-2x"></i>-->
<!--</span>--> <!--</span>-->
<!--</a>--> <!--</a>-->
<!--Wi-Fi Setting :--> <!--Wi-Fi Setting :-->
<!--<br>--> <!--<br>-->
<!--<br>--> <!--<br>-->
Please note that * sign represents required fields of data. Please note that * sign represents required fields of data.
<br> <br>
<br> <br>
<div id="wifi-feature-error-msg" class="alert alert-danger hidden" role="alert"> <div id="wifi-feature-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="wifi-ssid"> <label class="wr-input-label" for="wifi-ssid">
Service Set Identifier (SSID)* Service Set Identifier (SSID)*
<span class="helper" title="Identification of the wireless network to be configured."> <span class="helper" title="Identification of the wireless network to be configured.">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
<label id="wifiSsidValidationText" class="wr-input-label hidden"> <label id="wifiSsidValidationText" class="wr-input-label hidden">
Service Set Identifier should be 1-to-30 characters long Service Set Identifier should be 1-to-30 characters long
</label> </label>
<input id="wifi-ssid" type="text" class="form-control operationDataKeys" data-key="wifiSSID" maxlength="100" placeholder="[ Should be 1-to-30 characters long ]"/> <input id="wifi-ssid" type="text" class="form-control operationDataKeys" data-key="wifiSSID"
</div> maxlength="100" placeholder="[ Should be 1-to-30 characters long ]"/>
<div class="wr-input-control"> </div>
<label class="wr-input-label" for="wifi-password"> <div class="wr-input-control">
Password* <label class="wr-input-label" for="wifi-password">
<span class="helper" title="Password for the wireless network."> Password
<span class="helper required" title="Password for the wireless network.">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
<input id="wifi-password" type="password" class="form-control operationDataKeys" data-key="wifiPassword" maxlength="100" /> <input id="wifi-password" type="password" class="form-control operationDataKeys"
</div> data-key="wifiPassword" maxlength="100"/>
</div>
<!--</div>--> <!--</div>-->
</div> </div>
</div> </div>
@ -350,108 +386,108 @@
<!-- install-applications --> <!-- install-applications -->
<!--<div class="wr-hidden-operation" data-operation="install-apps">--> <!--<div class="wr-hidden-operation" data-operation="install-apps">-->
<!--<div class="panel panel-default operation-data" data-operation="INSTALL_APPLICATION">--> <!--<div class="panel panel-default operation-data" data-operation="INSTALL_APPLICATION">-->
<!--<div class="panel-heading" role="tab">--> <!--<div class="panel-heading" role="tab">-->
<!--<h2 class="sub-title panel-title">--> <!--<h2 class="sub-title panel-title">-->
<!--<br>--> <!--<br>-->
<!--&nbsp;&nbsp;&nbsp;App Installations--> <!-- App Installations-->
<!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#installApp">--> <!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#installApp">-->
<!--<input type="checkbox" />--> <!--<input type="checkbox" />-->
<!--<span class="helper"></span>--> <!--<span class="helper"></span>-->
<!--<span class="text"></span>--> <!--<span class="text"></span>-->
<!--</label>--> <!--</label>-->
<!--<br>--> <!--<br>-->
<!--<br>--> <!--<br>-->
<!--</h2>--> <!--</h2>-->
<!--</div>--> <!--</div>-->
<!--<div id="installApp" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="installApp">--> <!--<div id="installApp" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="installApp">-->
<!--<div id="install-app-feature-error-msg" class="alert alert-danger hidden" role="alert">--> <!--<div id="install-app-feature-error-msg" class="alert alert-danger hidden" role="alert">-->
<!--<i class="icon fw fw-error"></i><span></span>--> <!--<i class="icon fw fw-error"></i><span></span>-->
<!--</div>--> <!--</div>-->
<!--<label class="wr-input-label" title="Application Identifier">App Identifier<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>--> <!--<label class="wr-input-label" title="Application Identifier">App Identifier<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>-->
<!--<div class="wr-input-control">--> <!--<div class="wr-input-control">-->
<!--<input type="text" class="form-control operationDataKeys" id="package-name" data-key="packageName" placeholder="Enter App Identifier"/>--> <!--<input type="text" class="form-control operationDataKeys" id="package-name" data-key="packageName" placeholder="Enter App Identifier"/>-->
<!--</div>--> <!--</div>-->
<!--<div class="wr-input-control">--> <!--<div class="wr-input-control">-->
<!--<label class="wr-input-control dropdown">--> <!--<label class="wr-input-control dropdown">-->
<!--<span class="helper" title="App Type">App Type<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>--> <!--<span class="helper" title="App Type">App Type<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></span>-->
<!--<select class="form-control col-sm-8 operationDataKeys appTypesInput" id="type" data-key="type">--> <!--<select class="form-control col-sm-8 operationDataKeys appTypesInput" id="type" data-key="type">-->
<!--<option>Public</option>--> <!--<option>Public</option>-->
<!--<option>Enterprise</option>--> <!--<option>Enterprise</option>-->
<!--</select>--> <!--</select>-->
<!--</label>--> <!--</label>-->
<!--</div>--> <!--</div>-->
<!--<label class="wr-input-label" title="URL">URL<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>--> <!--<label class="wr-input-label" title="URL">URL<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>-->
<!--<div class="wr-input-control">--> <!--<div class="wr-input-control">-->
<!--<input type="text" class="form-control operationDataKeys" id="url" data-key="url" placeholder="Enter URL"/>--> <!--<input type="text" class="form-control operationDataKeys" id="url" data-key="url" placeholder="Enter URL"/>-->
<!--</div>--> <!--</div>-->
<!--</div>--> <!--</div>-->
<!--</div>--> <!--</div>-->
<!--</div>--> <!--</div>-->
<!-- /install-applications --> <!-- /install-applications -->
<!-- /uninstall-applications --> <!-- /uninstall-applications -->
<!--<div class="wr-hidden-operation" data-operation="uninstall-apps">--> <!--<div class="wr-hidden-operation" data-operation="uninstall-apps">-->
<!--<div class="panel panel-default operation-data" data-operation="UNINSTALL_APPLICATION">--> <!--<div class="panel panel-default operation-data" data-operation="UNINSTALL_APPLICATION">-->
<!--<div class="panel-heading" role="tab">--> <!--<div class="panel-heading" role="tab">-->
<!--<h2 class="sub-title panel-title">--> <!--<h2 class="sub-title panel-title">-->
<!--<br>--> <!--<br>-->
<!--&nbsp;&nbsp;&nbsp;App Uninstallations--> <!-- App Uninstallations-->
<!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#uninstallApp">--> <!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#uninstallApp">-->
<!--<input type="checkbox" />--> <!--<input type="checkbox" />-->
<!--<span class="helper"></span>--> <!--<span class="helper"></span>-->
<!--<span class="text"></span>--> <!--<span class="text"></span>-->
<!--</label>--> <!--</label>-->
<!--<br>--> <!--<br>-->
<!--<br>--> <!--<br>-->
<!--</h2>--> <!--</h2>-->
<!--</div>--> <!--</div>-->
<!--<div id="uninstallApp" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="uninstallApp">--> <!--<div id="uninstallApp" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="uninstallApp">-->
<!--<div id="uninstall-app-feature-error-msg" class="alert alert-danger hidden" role="alert">--> <!--<div id="uninstall-app-feature-error-msg" class="alert alert-danger hidden" role="alert">-->
<!--<i class="icon fw fw-error"></i><span></span>--> <!--<i class="icon fw fw-error"></i><span></span>-->
<!--</div>--> <!--</div>-->
<!--<label class="wr-input-label" title="Application Identifier">App Identifier<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>--> <!--<label class="wr-input-label" title="Application Identifier">App Identifier<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>-->
<!--<!--span>Identification of the wireless network to connect to</span--> <!--<!--span>Identification of the wireless network to connect to</span-->
<!--<div class="wr-input-control">--> <!--<div class="wr-input-control">-->
<!--<input type="text" class="form-control operationDataKeys" id="package-name" data-key="packageName" placeholder="Enter App Identifier"/>--> <!--<input type="text" class="form-control operationDataKeys" id="package-name" data-key="packageName" placeholder="Enter App Identifier"/>-->
<!--</div>--> <!--</div>-->
<!--</div>--> <!--</div>-->
<!--</div>--> <!--</div>-->
<!--</div>--> <!--</div>-->
<!-- /uninstall-applications --> <!-- /uninstall-applications -->
<!-- /web-clips --> <!-- /web-clips -->
<!--<div class="wr-hidden-operation" data-operation="web-clips">--> <!--<div class="wr-hidden-operation" data-operation="web-clips">-->
<!--<div class="panel panel-default operation-data" data-operation="WEBCLIP">--> <!--<div class="panel panel-default operation-data" data-operation="WEBCLIP">-->
<!--<div class="panel-heading" role="tab">--> <!--<div class="panel-heading" role="tab">-->
<!--<h2 class="sub-title panel-title">--> <!--<h2 class="sub-title panel-title">-->
<!--<br>--> <!--<br>-->
<!--&nbsp;&nbsp;&nbsp;Web clips--> <!-- Web clips-->
<!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#installWebClip">--> <!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#installWebClip">-->
<!--<input type="checkbox" />--> <!--<input type="checkbox" />-->
<!--<span class="helper"></span>--> <!--<span class="helper"></span>-->
<!--<span class="text"></span>--> <!--<span class="text"></span>-->
<!--</label>--> <!--</label>-->
<!--<br>--> <!--<br>-->
<!--<br>--> <!--<br>-->
<!--</h2>--> <!--</h2>-->
<!--</div>--> <!--</div>-->
<!--<div id="installWebClip" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="installWebClip">--> <!--<div id="installWebClip" class="panel-collapse panel-body collapse" role="tabpanel" aria-labelledby="installWebClip">-->
<!--<div id="install-webclip-feature-error-msg" class="alert alert-danger hidden" role="alert">--> <!--<div id="install-webclip-feature-error-msg" class="alert alert-danger hidden" role="alert">-->
<!--<i class="icon fw fw-error"></i><span></span>--> <!--<i class="icon fw fw-error"></i><span></span>-->
<!--</div>--> <!--</div>-->
<!--<label class="wr-input-label" title="Title of the web clip">Title<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>--> <!--<label class="wr-input-label" title="Title of the web clip">Title<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>-->
<!--<div class="wr-input-control">--> <!--<div class="wr-input-control">-->
<!--<input type="text" class="form-control operationDataKeys" id="title" data-key="title" placeholder="Enter Title"/>--> <!--<input type="text" class="form-control operationDataKeys" id="title" data-key="title" placeholder="Enter Title"/>-->
<!--</div>--> <!--</div>-->
<!--<label class="wr-input-label" title="URL">URL<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>--> <!--<label class="wr-input-label" title="URL">URL<span class="wr-help-tip glyphicon glyphicon-question-sign"></span></label>-->
<!--<div class="wr-input-control">--> <!--<div class="wr-input-control">-->
<!--<input type="text" class="form-control operationDataKeys" id="url" data-key="url" placeholder="Enter URL"/>--> <!--<input type="text" class="form-control operationDataKeys" id="url" data-key="url" placeholder="Enter URL"/>-->
<!--</div>--> <!--</div>-->
<!--</div>--> <!--</div>-->
<!--</div>--> <!--</div>-->
<!--</div>--> <!--</div>-->
<!-- /web-clips --> <!-- /web-clips -->
</div> </div>

View File

@ -96,7 +96,7 @@
checked="checked"/> checked="checked"/>
<span class="helper" <span class="helper"
title="Permit the use of repeating, ascending and descending character sequences"> title="Permit the use of repeating, ascending and descending character sequences">
&nbsp;&nbsp;&nbsp;Allow simple value Allow simple value
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -108,7 +108,7 @@
class="form-control operationDataKeys" data-key="passcodePolicyRequireAlphanumeric" class="form-control operationDataKeys" data-key="passcodePolicyRequireAlphanumeric"
checked="checked"/> checked="checked"/>
<span class="helper" title="Require passcode to contain both letters and numbers"> <span class="helper" title="Require passcode to contain both letters and numbers">
&nbsp;&nbsp;&nbsp;Require alphanumeric value Require alphanumeric value
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -258,7 +258,7 @@
data-key="cameraEnabled" checked="checked"/> data-key="cameraEnabled" checked="checked"/>
<span class="helper" <span class="helper"
title="Having this checked would enable Usage of phone camera in the device."> title="Having this checked would enable Usage of phone camera in the device.">
&nbsp;&nbsp;&nbsp;Allow use of camera Allow use of camera
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -306,7 +306,7 @@
data-key="encryptStorageEnabled" checked="checked"/> data-key="encryptStorageEnabled" checked="checked"/>
<span class="helper" <span class="helper"
title="Having this checked would enable Storage-encryption in the device"> title="Having this checked would enable Storage-encryption in the device">
&nbsp;&nbsp;&nbsp;Enable storage-encryption Enable storage-encryption
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
@ -391,7 +391,7 @@
<!--<div class="panel-heading" role="tab">--> <!--<div class="panel-heading" role="tab">-->
<!--<h2 class="sub-title panel-title">--> <!--<h2 class="sub-title panel-title">-->
<!--<br>--> <!--<br>-->
<!--&nbsp;&nbsp;&nbsp;App Installations--> <!-- App Installations-->
<!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#installApp">--> <!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#installApp">-->
<!--<input type="checkbox" />--> <!--<input type="checkbox" />-->
<!--<span class="helper"></span>--> <!--<span class="helper"></span>-->
@ -435,7 +435,7 @@
<!--<div class="panel-heading" role="tab">--> <!--<div class="panel-heading" role="tab">-->
<!--<h2 class="sub-title panel-title">--> <!--<h2 class="sub-title panel-title">-->
<!--<br>--> <!--<br>-->
<!--&nbsp;&nbsp;&nbsp;App Uninstallations--> <!-- App Uninstallations-->
<!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#uninstallApp">--> <!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#uninstallApp">-->
<!--<input type="checkbox" />--> <!--<input type="checkbox" />-->
<!--<span class="helper"></span>--> <!--<span class="helper"></span>-->
@ -465,7 +465,7 @@
<!--<div class="panel-heading" role="tab">--> <!--<div class="panel-heading" role="tab">-->
<!--<h2 class="sub-title panel-title">--> <!--<h2 class="sub-title panel-title">-->
<!--<br>--> <!--<br>-->
<!--&nbsp;&nbsp;&nbsp;Web clips--> <!-- Web clips-->
<!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#installWebClip">--> <!--<label class="wr-input-control switch" data-toggle="collapse" data-target="#installWebClip">-->
<!--<input type="checkbox" />--> <!--<input type="checkbox" />-->
<!--<span class="helper"></span>--> <!--<span class="helper"></span>-->

View File

@ -60,7 +60,7 @@
<hr> <hr>
<button class="wr-btn wizard-stepper" data-current="policy-message" <button class="wr-btn wizard-stepper" data-current="policy-message"
data-direct="{{@app.context}}/policies"> data-direct="{{@app.context}}/policies">
&nbsp;&nbsp;&nbsp;&nbsp;View policy list&nbsp;&nbsp;&nbsp;&nbsp; View policy list
</button> </button>
<a href="{{@app.context}}/policy/add" class="cu-btn-inner"> <a href="{{@app.context}}/policy/add" class="cu-btn-inner">
<span class="fw-stack"> <span class="fw-stack">
@ -170,13 +170,13 @@
<input id="user-roles-radio-btn" type="radio" <input id="user-roles-radio-btn" type="radio"
name="select-users-radio-btn" class="select-users-radio" name="select-users-radio-btn" class="select-users-radio"
checked/> checked/>
<span class="helper">&nbsp;Set user role(s)</span> <span class="helper"> Set user role(s)</span>
</label> </label>
<label class="wr-input-control radio light" rel="assetfilter"> <label class="wr-input-control radio light" rel="assetfilter">
<input id="users-radio-btn" type="radio" <input id="users-radio-btn" type="radio"
name="select-users-radio-btn" name="select-users-radio-btn"
class="select-users-radio"/> class="select-users-radio"/>
<span class="helper">&nbsp;Set user(s)</span> <span class="helper"> Set user(s)</span>
</label> </label>
</div> </div>
<div id="user-roles-select-field" class="select-users"> <div id="user-roles-select-field" class="select-users">
@ -223,12 +223,12 @@
<a href="javascript:void(0)" class="wr-btn wizard-stepper" <a href="javascript:void(0)" class="wr-btn wizard-stepper"
data-is-back-btn="true" data-current="policy-criteria" data-is-back-btn="true" data-current="policy-criteria"
data-next="policy-profile"> data-next="policy-profile">
&nbsp;&nbsp;&nbsp;&nbsp;Back&nbsp;&nbsp;&nbsp;&nbsp; Back
</a> </a>
<a href="javascript:void(0)" class="wr-btn wizard-stepper" <a href="javascript:void(0)" class="wr-btn wizard-stepper"
data-current="policy-criteria" data-next="policy-naming" data-current="policy-criteria" data-next="policy-naming"
data-validate="false"> data-validate="false">
&nbsp;&nbsp;&nbsp;&nbsp;Continue&nbsp;&nbsp;&nbsp;&nbsp; Continue
</a> </a>
</div> </div>
</div> </div>
@ -254,9 +254,9 @@
<div class="wr-advance-operations"> <div class="wr-advance-operations">
<div class="wr-advance-operations-init"> <div class="wr-advance-operations-init">
<br> <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<i class="fw fw-settings fw-spin fw-2x"></i> <i class="fw fw-settings fw-spin fw-2x"></i>
&nbsp;&nbsp;&nbsp;
Loading platform features . . . Loading platform features . . .
<br> <br>
<br> <br>
@ -266,12 +266,12 @@
<a href="javascript:window.history.back()" <a href="javascript:window.history.back()"
class="wr-btn wizard-stepper" data-is-back-btn="true" class="wr-btn wizard-stepper" data-is-back-btn="true"
data-current="policy-profile" data-next="policy-platform"> data-current="policy-profile" data-next="policy-platform">
&nbsp;&nbsp;&nbsp;&nbsp;Back&nbsp;&nbsp;&nbsp;&nbsp; Back
</a> </a>
<a href="javascript:void(0)" class="wr-btn wizard-stepper" <a href="javascript:void(0)" class="wr-btn wizard-stepper"
data-current="policy-profile" data-next="policy-criteria" data-current="policy-profile" data-next="policy-criteria"
data-validate="true"> data-validate="true">
&nbsp;&nbsp;&nbsp;&nbsp;Continue&nbsp;&nbsp;&nbsp;&nbsp; Continue
</a> </a>
</div> </div>
</div> </div>

View File

@ -86,7 +86,7 @@
<span id="notifications-icon" class="icon fw-stack hidden"> <span id="notifications-icon" class="icon fw-stack hidden">
<i class="fw fw-notification fw-stack-1x"></i> <i class="fw fw-notification fw-stack-1x"></i>
</span> </span>
<span id="notifications-spacer" class="hidden">&nbsp;</span> <span id="notifications-spacer" class="hidden"> </span>
<span class="text-capitalize">Notifications</span> <span class="text-capitalize">Notifications</span>
</a> </a>
</li> </li>
@ -105,7 +105,7 @@
<i class="fw fw-ring fw-stroke fw-stack-2x"></i> <i class="fw fw-ring fw-stroke fw-stack-2x"></i>
<i class="fw fw-notification fw-stack-1x"></i> <i class="fw fw-notification fw-stack-1x"></i>
</span> </span>
&nbsp;&nbsp;View All Notifications View All Notifications
</a> </a>
</div> </div>
</div> </div>

View File

@ -10,6 +10,7 @@
"adminService":"%https.ip%", "adminService":"%https.ip%",
"idPServer":"%https.ip%", "idPServer":"%https.ip%",
"callBackUrl":"%https.ip%/mdm-admin", "callBackUrl":"%https.ip%/mdm-admin",
"enableEval":true,
"oauthProvider": { "oauthProvider": {
"appRegistration": { "appRegistration": {
"appType": "webapp", "appType": "webapp",

View File

@ -52,6 +52,7 @@ under the License. --}}
</div> </div>
</div> </div>
</div> </div>
{{#if enableEval}}
<div class="row"> <div class="row">
<div class="col-md-4 wr-text"> <div class="col-md-4 wr-text">
<div class="wr-buttons text-center"> <div class="wr-buttons text-center">
@ -65,4 +66,5 @@ under the License. --}}
</div> </div>
</div> </div>
</div> </div>
{{/if}}
{{/zone}} {{/zone}}

View File

@ -33,5 +33,6 @@ function onRequest(context) {
} else { } else {
viewModel.companyName = companyProps.companyName; viewModel.companyName = companyProps.companyName;
} }
viewModel.enableEval = mdmProps.enableEval;
return viewModel; return viewModel;
} }

View File

@ -51,13 +51,13 @@ under the License. --}}
<div class="radio"> <div class="radio">
<label class="input-label"> <label class="input-label">
<input type="radio" name="ownership" value="BYOD" checked> <input type="radio" name="ownership" value="BYOD" checked>
&nbsp; BYOD (This is my own device) BYOD (This is my own device)
</label> </label>
</div> </div>
<div class="radio"> <div class="radio">
<label class="input-label"> <label class="input-label">
<input type="radio" name="ownership" value="COPE"> <input type="radio" name="ownership" value="COPE">
&nbsp; COPE (This is a corporate device) COPE (This is a corporate device)
</label> </label>
</div> </div>
</div> </div>

Some files were not shown because too many files have changed in this diff Show More