diff --git a/src/translation/en.json b/src/translation/en.json
index fef97e09b..f8135be8a 100644
--- a/src/translation/en.json
+++ b/src/translation/en.json
@@ -1453,7 +1453,12 @@
"title": "Really stop app {{ app }}?"
},
"eventlogTabTitle": "Event Log",
- "sftpInfoAction": "SFTP Access"
+ "sftpInfoAction": "SFTP Access",
+ "cronTabTitle": "Cron",
+ "cron": {
+ "title": "Crontab",
+ "saveAction": "Save"
+ }
},
"login": {
"loginTo": "Login to",
diff --git a/src/views/app.html b/src/views/app.html
index 8648f7fe8..2337b9a7f 100644
--- a/src/views/app.html
+++ b/src/views/app.html
@@ -562,6 +562,7 @@
{{ 'app.graphsTabTitle' | tr }}
{{ 'app.securityTabTitle' | tr }}
{{ 'app.emailTabTitle' | tr }}
+ {{ 'app.cronTabTitle' | tr }}
{{ 'app.eventlogTabTitle' | tr }}
{{ 'app.updatesTabTitle' | tr }}
{{ 'app.backupsTabTitle' | tr }}
@@ -1009,6 +1010,30 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/app.js b/src/views/app.js
index 18a19a308..07f1b8525 100644
--- a/src/views/app.js
+++ b/src/views/app.js
@@ -899,6 +899,38 @@ angular.module('Application').controller('AppController', ['$scope', '$location'
}
};
+ $scope.cron = {
+ busy: false,
+ error: {},
+
+ crontab: '',
+
+ show: function () {
+ $scope.cronForm.$setPristine();
+ $scope.cron.error = {};
+ $scope.cron.crontab = $scope.app.crontab;
+ },
+
+ submit: function () {
+ $scope.cron.error = {};
+ $scope.cron.busy = true;
+
+ Client.configureApp($scope.app.id, 'cron', { crontab: $scope.cron.crontab }, function (error) {
+ if (error && error.statusCode === 400) {
+ $scope.cron.busy = false;
+ $scope.cron.error.crontab = error.message;
+ $scope.cronForm.$setPristine();
+ return;
+ }
+ if (error) return Client.error(error);
+
+ $scope.cronForm.$setPristine();
+
+ $timeout(function () { $scope.cron.busy = false; }, 1000);
+ });
+ }
+ };
+
$scope.security = {
busy: false,
error: {},