summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--www/index.html2
-rw-r--r--www/js/WizardCtrl.js195
-rw-r--r--www/templates/wizard.html35
3 files changed, 217 insertions, 15 deletions
diff --git a/www/index.html b/www/index.html
index 6e3564ca..e23f40a0 100644
--- a/www/index.html
+++ b/www/index.html
@@ -241,7 +241,7 @@
<ion-item nav-clear menu-close href="#/wizard">
<span class=" item-icon-left">
- <i class="icon ion-help"></i>
+ <i class="icon ion-wand"></i>
</span> wizard
</ion-item>
diff --git a/www/js/WizardCtrl.js b/www/js/WizardCtrl.js
index d1bd9da9..8fe01e33 100644
--- a/www/js/WizardCtrl.js
+++ b/www/js/WizardCtrl.js
@@ -2,26 +2,183 @@
/* jslint browser: true*/
/* global cordova,StatusBar,angular,console, Masonry, URI */
-angular.module('zmApp.controllers').controller('zmApp.WizardCtrl', ['$scope', '$rootScope', '$ionicModal', 'ZMDataModel','$ionicSideMenuDelegate', '$ionicHistory', '$state', '$ionicPopup', 'SecuredPopups',function ($scope, $rootScope, $ionicModal, ZMDataModel,$ionicSideMenuDelegate, $ionicHistory, $state, $ionicPopup, SecuredPopups) {
+angular.module('zmApp.controllers').controller('zmApp.WizardCtrl', ['$scope', '$rootScope', '$ionicModal', 'ZMDataModel','$ionicSideMenuDelegate', '$ionicHistory', '$state', '$ionicPopup', 'SecuredPopups', '$http','$q','zm',function ($scope, $rootScope, $ionicModal, ZMDataModel,$ionicSideMenuDelegate, $ionicHistory, $state, $ionicPopup, SecuredPopups, $http, $q,zm) {
$scope.openMenu = function () {
$ionicSideMenuDelegate.toggleLeft();
};
+
+
+ function login (u,zmu,zmp)
+ {
+ var d = $q.defer();
+
+ $http({
+ method: 'POST',
+ //withCredentials: true,
+ url: u,
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ 'Accept': 'application/json',
+ },
+ transformRequest: function (obj) {
+ var str = [];
+ for (var p in obj)
+ str.push(encodeURIComponent(p) + "=" +
+ encodeURIComponent(obj[p]));
+ var params = str.join("&");
+ return params;
+ },
+ data: {
+ username: zmu,
+ password: zmp,
+ action: "login",
+ view: "console"
+ }
+ })
+ .success (function (data, status,headers){
+ console.log ("LOOKING FOR " + zm.loginScreenString);
+ //console.log ("DATA RECEIVED " + JSON.stringify(data));
+ if (data.indexOf(zm.loginScreenString) == -1)
+ {
+ d.resolve(true);
+ return d.promise;
+ }
+ else
+ {
+ console.log ("************ERROR");
+ d.reject(false);
+ return d.promise;
+ }
+ });
+
+ return d.promise;
+
+ }
+ function logout(u)
+ {
+ var d = $q.defer();
+
+ $http({
+ method: 'POST',
+ url: u,
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ 'Accept': 'application/json',
+ },
+ transformRequest: function (obj) {
+ var str = [];
+ for (var p in obj)
+ str.push(encodeURIComponent(p) + "=" +
+ encodeURIComponent(obj[p]));
+ var params = str.join("&");
+ return params;
+ },
+
+ data: {
+ action: "logout",
+ view: "login"
+ }
+ })
+ .finally (function (ans) {
+ return d.resolve(true);
+
+ });
+
+
+ return d.promise;
+
+ }
+
+ $scope.exitValidate = function()
+ {
+ $rootScope.authSession = 'undefined';
+ $rootScope.zmCookie = '';
+
+ $scope.portalValidText = "";
+ $scope.apiValidateText = "";
+ $scope.streamingValidateText = "";
+ $scope.wizard.fqportal = "";
+
+ var d = $q.defer();
+
+ var c = URI.parse ($scope.wizard.portalurl);
+
+ var b ="";
+ if ($scope.wizard.useauth && $scope.wizard.usebasicauth)
+ {
+ b = $scope.wizard.basicuser+":"+$scope.wizard.basicpassword+"@";
+ console.log ("B="+b);
+ }
+ var u = c.scheme+"://"+b+c.host;
+ if (c.port) u+= ":"+c.port;
+ if (c.path) u+= c.path;
+
+
+ if (u.slice(-1) == '/') {
+ u = u.slice(0, -1);
+
+ }
+
+ $scope.fqportal = u;
+
+ u = u+'/index.php';
+ ZMDataModel.zmLog ("Wizard: login url is " + u);
+
+ // now lets login
+
+ var zmu = "x";
+ var zmp = "x";
+ if ($scope.wizard.usezmauth)
+ {
+ zmu = $scope.wizard.zmuser;
+ zmp = $scope.wizard.zmpassword;
+ }
+
+ // logout first for the adventurers amongst us who must
+ // use it even after logging in
+ ZMDataModel.zmLog ("zmWizard: logging out");
+ logout(u)
+ .then ( function (ans)
+ {
+ // login now
+ ZMDataModel.zmLog ("zmWizard: logging in with "+u+" "+zmu+":"+zmp);
+ login(u,zmu,zmp)
+ .then ( function (success){
+ ZMDataModel.zmLog ("zmWizard: login succeeded");
+ $scope.wizard.portalValidText = "Portal login was successful";
+ $scope.wizard.portalColor = "#16a085";
+ return d.resolve(true);
+ },
+ function (error) {
+ ZMDataModel.zmLog ("zmWizard: login failed");
+ $scope.wizard.portalValidText = "Portal login was unsuccessful";
+ $scope.wizard.portalColor = "#e74c3c";
+ return d.resolve(false);
+
+ });
+
+
+ });//finally
+ return d.promise;
+ };
//--------------------------------------------------------------------------
// tags a protocol
//--------------------------------------------------------------------------
- function addhttp(url) {
+ function checkscheme(url) {
if ((!/^(f|ht)tps?:\/\//i.test(url)) && (url != "")) {
- url = "http://" + url;
+ return false;
}
- return url;
+ else
+ return true;
}
+
//--------------------------------------------------------------------------
// exit validator for auth wizard
//--------------------------------------------------------------------------
@@ -92,8 +249,19 @@ $scope.openMenu = function () {
return false;
}
+ if ( !checkscheme($scope.wizard.portalurl))
+ {
+ $rootScope.zmPopup = SecuredPopups.show('show',{
+ title: 'Whoops!',
+ template: 'Please specify http:// or https:// in the url',
+ buttons: [{text: 'Ok'}]
+
+ });
+ return false;
+ }
+
$scope.wizard.portalurl = $scope.wizard.portalurl.toLowerCase().trim();
- $scope.wizard.portalurl = addhttp($scope.wizard.portalurl);
+
ZMDataModel.zmLog ("Wizard: stripped url:"+$scope.wizard.portalurl);
var c = URI.parse ($scope.wizard.portalurl);
@@ -121,7 +289,7 @@ $scope.openMenu = function () {
$scope.wizard.portalurl = c.scheme+"://";
if (c.host) $scope.wizard.portalurl += c.host;
- if (c.port) $scope.wizard.portalurl += ":"+c.host;
+ if (c.port) $scope.wizard.portalurl += ":"+c.port;
if (c.path) $scope.wizard.portalurl += c.path;
ZMDataModel.zmLog ("Wizard: normalized url:"+$scope.wizard.portalurl);
return true;
@@ -170,7 +338,20 @@ $scope.openMenu = function () {
basicuser : "",
basicpassword : "",
zmuser : "",
- zmpassword : ""
+ zmpassword : "",
+ ///////////////////////
+ loginURL: "",
+ apiURL: "",
+ streamingURL: "",
+ fqportal:"",
+ portalValidText:"",
+ portalColor:"",
+ apiValidText:"",
+ apiColor:"",
+ streamingValidText:"",
+ streamingColor:"",
+
+
};
});
diff --git a/www/templates/wizard.html b/www/templates/wizard.html
index 5b491d8c..564854ae 100644
--- a/www/templates/wizard.html
+++ b/www/templates/wizard.html
@@ -11,7 +11,7 @@
<!-- portal url -->
<wz-step wz-title="1" canexit="exitPortal">
- <h4>Welcome to zmWizard</h4>
+ <h4><i class="icon ion-wizard"></i> Welcome to zmWizard</h4>
<p>Configuring ZoneMinder can be a pain. Lets see if zmWizard can help. In the next few screens, I will ask you some simple questions and do my best to guess the settings for you.</p>
<h4>What is your Zoneminder portal url?</h4>
@@ -28,7 +28,9 @@
<img src="img/portalurl.png" width="30%">
</div>
- <br/><input type="button" wz-next value="Next" />
+ <br/>
+ <button class="button icon icon-right ion-chevron-right" wz-next>Next</button>
+
</wz-step>
@@ -70,20 +72,39 @@
</div>
<br/>
- <input type="button" wz-previous value="Prev" />
- <input type="button" wz-next value="Next" />
+ <button class="button icon icon-left ion-chevron-left" wz-previous>Prev</button>
+ <button class="button icon icon-right ion-chevron-right" wz-next>Next</button>
</wz-step>
<!-- validate url with auth -->
- <wz-step wz-title="3">
+ <wz-step wz-title="3" canexit="exitValidate">
<h4>Lets try and validate your inputs</h4>
- <p>I am now going to try and log into the portal using:
+ <p>I am now going to try and log into the ZM portal
+ <br/>
+ <span style="color:{{wizard.portalColor}};">{{wizard.portalValidText}}</span>
+ <span style="color:{{wizard.apiColor}};">{{wizard.apiValidateText}}</span>
+ <span style="color:{{wizard.streamingColor}};">{{wizard.streamingValidateText}}</span>
+
+ </p>
+ <button class="button icon icon-left ion-chevron-left" wz-previous>Prev</button>
+ <button class="button icon icon-right ion-chevron-right" wz-next>Next</button>
+ </wz-step>
+
+ <wz-step wz-title="4" >
+ <h4>Sone</h4>
+ <p>I am now going to try and log into the ZM portal
<br/>Portal: {{wizard.portalurl}}
+ {{wizard.portalValidText}}
+ {{wizard.apiValidateText}}
+ {{wizard.streamingValidateText}}
</p>
- <input type="button" wz-next value="Finish now" />
+ <button class="button icon icon-left ion-chevron-left" wz-previous>Prev</button>
+ <button class="button icon icon-right ion-chevron-right" wz-next>Validate</button>
</wz-step>
+
+
</wizard>
</ion-content>