diff options
Diffstat (limited to 'www')
| -rw-r--r-- | www/js/DataModel.js | 2 | ||||
| -rw-r--r-- | www/js/LogCtrl.js | 154 | ||||
| -rw-r--r-- | www/lang/locale-en.json | 1 | ||||
| -rw-r--r-- | www/templates/log.html | 2 |
4 files changed, 38 insertions, 121 deletions
diff --git a/www/js/DataModel.js b/www/js/DataModel.js index 17e2a688..cb33411d 100644 --- a/www/js/DataModel.js +++ b/www/js/DataModel.js @@ -20,7 +20,7 @@ angular.module('zmApp.controllers') DO NOT TOUCH zmAppVersion It is changed by sync_version.sh */ - var zmAppVersion = "1.3.028"; + var zmAppVersion = "1.3.029"; var isBackground = false; var justResumed = false; var timeSinceResumed = -1; diff --git a/www/js/LogCtrl.js b/www/js/LogCtrl.js index 38cd3464..599c63d1 100644 --- a/www/js/LogCtrl.js +++ b/www/js/LogCtrl.js @@ -2,7 +2,7 @@ /* jslint browser: true*/ /* global saveAs, cordova,StatusBar,angular,console,moment */ -angular.module('zmApp.controllers').controller('zmApp.LogCtrl', ['$scope', '$rootScope', 'zm', '$ionicModal', 'NVRDataModel', '$ionicSideMenuDelegate', '$fileLogger', '$cordovaEmailComposer', '$ionicPopup', '$timeout', '$ionicHistory', '$state', '$interval', '$ionicLoading', '$translate', '$http', function ($scope, $rootScope, zm, $ionicModal, NVRDataModel, $ionicSideMenuDelegate, $fileLogger, $cordovaEmailComposer, $ionicPopup, $timeout, $ionicHistory, $state, $interval, $ionicLoading, $translate, $http) { +angular.module('zmApp.controllers').controller('zmApp.LogCtrl', ['$scope', '$rootScope', 'zm', '$ionicModal', 'NVRDataModel', '$ionicSideMenuDelegate', '$fileLogger', '$cordovaEmailComposer', '$ionicPopup', '$timeout', '$ionicHistory', '$state', '$interval', '$ionicLoading', '$translate', '$http', 'SecuredPopups', function ($scope, $rootScope, zm, $ionicModal, NVRDataModel, $ionicSideMenuDelegate, $fileLogger, $cordovaEmailComposer, $ionicPopup, $timeout, $ionicHistory, $state, $interval, $ionicLoading, $translate, $http, SecuredPopups) { $scope.openMenu = function () { $ionicSideMenuDelegate.toggleLeft(); }; @@ -11,20 +11,7 @@ angular.module('zmApp.controllers').controller('zmApp.LogCtrl', ['$scope', '$roo // Controller main //--------------------------------------------------------------- - var intervalLogUpdateHandle; - document.addEventListener("pause", onPause, false); - document.addEventListener("resume", onResume, false); - - function onPause() { - NVRDataModel.debug("LogCtrl: pause called, killing log timer"); - // $interval.cancel(intervalLogUpdateHandle); - } - - function onResume() { - // NVRDataModel.debug("LogCtrl: resume called, starting log timer"); - loadLogs(); - } @@ -78,33 +65,44 @@ angular.module('zmApp.controllers').controller('zmApp.LogCtrl', ['$scope', '$roo } }; - //-------------------------------------------------------------------------- - // Make sure user knows information masking is best effort - //-------------------------------------------------------------------------- - - $scope.sendEmail = function (logstring) { - logstring = logstring.substring(0, 20000); - $ionicPopup.confirm({ - title: $translate.instant('kSensitiveTitle'), - template: $rootScope.appName + ' ' + $translate.instant('kSensitiveBody'), - okText: $translate.instant('kButtonOk'), - cancelText: $translate.instant('kButtonCancel'), - }) - .then(function (res) { - if (res) { - - logstring = "zmNinja version:" + $scope.zmAppVersion + - " (" + $rootScope.platformOS + ")\n" + - "ZoneMinder version:" + NVRDataModel.getCurrentServerVersion() + "\n" + - logstring; - sendEmailReally(logstring); - } + + // desktop download + $scope.downloadLogs = function () { + var body = "zmNinja version:" + $scope.zmAppVersion + + " (" + $rootScope.platformOS + ")\n" + + "ZoneMinder version:" + NVRDataModel.getCurrentServerVersion(); + + body = $translate.instant('kSensitiveBody') + '\n\n\n' + body; + var fname = $rootScope.appName + "-logs-" + + moment().format('MMM-DD-YY_HH-mm-ss') + ".txt"; + + $fileLogger.checkFile() + .then(function (d) { + + body = body + window.localStorage[d.name]; + var file = new Blob([body], { + type: 'text/plain' + }); + var url = URL.createObjectURL(file); + + $rootScope.zmPopup = SecuredPopups.show('alert', { + title: $translate.instant('kNote'), + template: $translate.instant('kTapDownloadLogs') + "<br/><br/><center><a href='" + url + "' class='button button-assertive icon ion-android-download' download='" + fname + "'>" + " " + $translate.instant('kDownload') + "</a></center>", + okText: $translate.instant('kDismiss'), + okType: 'button-stable' + }, + function (e) { + NVRDataModel.debug("Error getting log file:" + JSON.stringify(e)); + } + + ); }); - }; - // picks up applogs on the FS and sends an email with it + }; + + // mobile - picks up applogs on the FS and sends an email with it $scope.attachLogs = function () { var body = "zmNinja version:" + $scope.zmAppVersion + @@ -144,90 +142,8 @@ angular.module('zmApp.controllers').controller('zmApp.LogCtrl', ['$scope', '$roo }; - //-------------------------------------------------------------------------- - // Convenience function to send logs via email - //-------------------------------------------------------------------------- - function sendEmailReally(logstring) { - - //console.log ("LOGSTRING:"+logstring); - if (window.cordova) { - - // do my best to replace sensitive information - var loginData = NVRDataModel.getLogin(); - - // We don't need this anymore as log and debug now strip passwords - /*if (loginData.password !="") - { - var re1 = new RegExp(loginData.password, "g"); - logstring = logstring.replace(re1, "<deleted>"); - }*/ - // keep the protocol, helps to debug - var urlNoProtocol = loginData.url.replace(/.*?:\/\//, ""); - if (urlNoProtocol != "") { - var re2 = new RegExp(urlNoProtocol, "g"); - - logstring = logstring.replace(re2, "<server>"); - } - urlNoProtocol = loginData.streamingurl.replace(/.*?:\/\//, ""); - if (urlNoProtocol != "") { - var re3 = new RegExp(urlNoProtocol, "g"); - logstring = logstring.replace(re3, "<server>"); - } - - urlNoProtocol = loginData.eventServer.replace(/.*?:\/\//, ""); - if (urlNoProtocol != "") { - var re4 = new RegExp(urlNoProtocol, "g"); - logstring = logstring.replace(re4, "<server>"); - } - - //console.log ("NEW LOGSTRING:"+logstring); - /* window.plugins.emailComposer.showEmailComposerWithCallback(callback, $rootScope.appName + ' logs', logstring, [zm.authoremail]);*/ - - - cordova.plugins.email.isAvailable( - function (isAvailable) { - - if (isAvailable) { - // body encapsulation requires br :^ - // see https://github.com/katzer/cordova-plugin-email-composer/issues/150 - logstring = logstring.split('\n').join('<br/>'); - cordova.plugins.email.open({ - to: zm.authoremail, - subject: $rootScope.appName + ' logs', - body: logstring - }); - } else { - // kEmailNotConfigured - $rootScope.zmPopup = SecuredPopups.show('alert', { - title: $translate.instant('kError'), - template: $translate.instant('kEmailNotConfigured'), - okText: $translate.instant('kButtonOk'), - cancelText: $translate.instant('kButtonCancel'), - }); - } - - }); - } else { - // console.log("Using default email client to send data"); - - var fname = $rootScope.appName + "-logs-" + - moment().format('MMM-DD-YY_HH-mm-ss') + ".txt"; - - var blob = new Blob([logstring], { - type: "text/plain;charset=utf-8" - }); - saveAs(blob, fname); - } - - } - - function callback() { - // console.log ("EMAIL SENT"); - NVRDataModel.debug("Email sent callback called"); - } - function loadZMlogs() { var ld = NVRDataModel.getLogin(); var lapi = ld.apiurl + "/logs.json?sort=TimeKey&direction=desc&page=" + $scope.zmPage; diff --git a/www/lang/locale-en.json b/www/lang/locale-en.json index fa97e5c5..100329b0 100644 --- a/www/lang/locale-en.json +++ b/www/lang/locale-en.json @@ -77,6 +77,7 @@ "kDismiss" : "Dismiss", "kDone" :"done", "kDownload" :"Download", + "kTapDownloadLogs" : "Tap the button to download logs", "kDownloadVideoImage" : "Tap the button below to download. If you are downloading a video, there is no progress indication, so please monitor file size", "kEmailNotConfigured" :"Email not configured", "kEnable24hr" :"enable 24hr time format", diff --git a/www/templates/log.html b/www/templates/log.html index c67cab4c..99de95d3 100644 --- a/www/templates/log.html +++ b/www/templates/log.html @@ -19,7 +19,7 @@ <a class="button button-icon icon ion-email" ng-href="" ng-click="attachLogs()"> </a> </div> <div ng-if="$root.platformOS=='desktop'"> - <a class="button button-icon icon ion-android-download" ng-href="" ng-click="sendEmail(log.logString)"> </a> + <a class="button button-icon icon ion-android-download" ng-href="" ng-click="downloadLogs()"> </a> </div> </ion-nav-buttons> <ion-content delegate-handle="none" overflow-scroll="false" mouse-wheel-scroll> |
