2015-07-20 00:09:47 -07:00
<!-- Modal change avatar -->
< div class = "modal fade" id = "avatarChangeModal" tabindex = "-1" role = "dialog" >
< div class = "modal-dialog" >
< div class = "modal-content" >
< div class = "modal-header" >
< h4 class = "modal-title" > Change your Cloudron Avatar< / h4 >
< / div >
< div class = "modal-body settings-avatar-selector" >
2016-01-20 16:55:41 +01:00
< img id = "previewAvatar" width = "128" height = "128" ng-src = "{{avatarChange.avatar.data || avatarChange.avatar.url || client.avatar}}" / >
2015-07-20 00:09:47 -07:00
< input type = "file" id = "avatarFileInput" style = "display: none" accept = "image/png" / >
< br / >
< br / >
< div class = "grid" >
2016-10-13 17:10:30 +02:00
< div class = "item" ng-repeat = "avatar in avatarChange.availableAvatars" style = "background-image: url('{{avatar.data || avatar.url}}');" ng-click = "avatarChange.setPreviewAvatar(avatar)" > < / div >
2016-10-09 16:54:44 -07:00
< div class = "item add" ng-click = "avatarChange.showCustomAvatarSelector()" > < / div >
2015-07-20 00:09:47 -07:00
< / div >
< / div >
< div class = "modal-footer" >
< button type = "button" class = "btn btn-default" data-dismiss = "modal" > Cancel< / button >
2017-01-29 02:01:01 -08:00
< button type = "button" class = "btn btn-success" ng-click = "avatarChange.doChangeAvatar()" ng-disabled = "avatarChange.busy" > < i class = "fa fa-circle-o-notch fa-spin" ng-show = "avatarChange.busy" > < / i > Change< / button >
2015-07-20 00:09:47 -07:00
< / div >
< / div >
< / div >
< / div >
2016-07-28 12:56:17 +02:00
<!-- Modal change cloudron name -->
< div class = "modal fade" id = "cloudronNameChangeModal" tabindex = "-1" role = "dialog" >
< div class = "modal-dialog" >
< div class = "modal-content" >
< div class = "modal-header" >
< h4 class = "modal-title" > Change Cloudron Name< / h4 >
< / div >
< div class = "modal-body" >
< form name = "cloudronNameChangeForm" role = "form" novalidate ng-submit = "cloudronNameChange.submit()" autocomplete = "off" >
< div class = "form-group" ng-class = "{ 'has-error': (cloudronNameChangeForm.name.$dirty && cloudronNameChangeForm.name.$invalid) }" >
< label class = "control-label" > Name< / label >
< div class = "control-label" ng-show = "(!cloudronNameChangeForm.name.$dirty && cloudronNameChange.error.name) || (cloudronNameChangeForm.name.$dirty && cloudronNameChangeForm.name.$invalid)" >
< small ng-show = "cloudronNameChangeForm.name.$error.required" > A name is required< / small >
< small ng-show = "cloudronNameChangeForm.name.$error.maxlength" > The name is too long< / small >
< small ng-show = "!cloudronNameChangeForm.name.$dirty && cloudronNameChange.error.name" > {{ cloudronNameChange.error.name }}< / small >
< / div >
< input type = "text" class = "form-control" ng-model = "cloudronNameChange.name" name = "name" id = "inputCloudronName" ng-maxlength = "30" required autofocus >
< / div >
< input class = "ng-hide" type = "submit" ng-disabled = "cloudronNameChangeForm.$invalid" / >
< / form >
< / div >
< div class = "modal-footer" >
< button type = "button" class = "btn btn-default" data-dismiss = "modal" > Cancel< / button >
2017-01-29 02:01:01 -08:00
< button type = "button" class = "btn btn-success" ng-click = "cloudronNameChange.submit()" ng-disabled = "cloudronNameChangeForm.$invalid || cloudronNameChange.busy" > < i class = "fa fa-circle-o-notch fa-spin" ng-show = "cloudronNameChange.busy" > < / i > Change< / button >
2016-07-28 12:56:17 +02:00
< / div >
< / div >
< / div >
< / div >
2016-12-12 11:57:55 +01:00
<!-- Modal enable email -->
< div class = "modal fade" id = "enableEmailModal" tabindex = "-1" role = "dialog" >
< div class = "modal-dialog" >
< div class = "modal-content" >
< div class = "modal-header" >
< h4 class = "modal-title" > Cloudron Email Server< / h4 >
< / div >
< div class = "modal-body" ng-show = "dnsConfig.provider === 'noop'" >
2016-12-14 15:18:49 +01:00
No DNS provider is setup. Required DNS records will be displayed and have to be manually setup.< br / >
2016-12-12 12:03:54 +01:00
< br / >
2017-01-30 14:24:08 -08:00
Contact us for help on how to configure DNS manually by < a href = "mailto:support@cloudron.io" > Email< / a > or < a href = "https://chat.cloudron.io" target = "_blank" > Chat< / a >
2016-12-12 11:57:55 +01:00
< / div >
< div class = "modal-body" ng-show = "dnsConfig.provider !== 'noop'" >
The Cloudron will setup Email related DNS records automatically.
2017-01-30 14:24:08 -08:00
If this domain is already configured to handle email with some other provider, it will < b > overwrite< / b > those records.
2016-12-12 11:57:55 +01:00
Disabling Cloudron Email later will < b > not< / b > put the old records back.
2017-01-29 02:50:26 -08:00
< br / >
< br / >
2016-12-12 11:57:55 +01:00
< / div >
< div class = "modal-footer" >
< button type = "button" class = "btn btn-default" data-dismiss = "modal" > Cancel< / button >
2017-01-29 02:50:26 -08:00
< button type = "button" class = "btn btn-success" ng-click = "email.enable()" > I understand, enable< / button >
2016-12-12 11:57:55 +01:00
< / div >
< / div >
< / div >
< / div >
2017-01-19 17:04:20 +01:00
<!-- Modal backup failed -->
< div class = "modal fade" id = "createBackupFailedModal" tabindex = "-1" role = "dialog" >
2015-07-20 00:09:47 -07:00
< div class = "modal-dialog" >
< div class = "modal-content" >
< div class = "modal-header" >
2017-01-19 17:04:20 +01:00
< h4 class = "modal-title" > Unable to create backup< / h4 >
2015-07-20 00:09:47 -07:00
< / div >
< div class = "modal-body" >
2017-01-19 17:04:20 +01:00
{{ createBackup.errorMessage }}
2015-07-20 00:09:47 -07:00
< / div >
< div class = "modal-footer" >
2017-01-29 01:40:33 -08:00
< button type = "button" class = "btn btn-success" data-dismiss = "modal" > OK< / button >
2015-07-20 00:09:47 -07:00
< / div >
< / div >
< / div >
< / div >
2016-06-28 13:45:50 -05:00
<!-- Modal plan change -->
2016-06-28 14:02:45 -05:00
< div class = "modal fade" id = "planChangeModal" tabindex = "-1" role = "dialog" >
2016-06-28 13:45:50 -05:00
< div class = "modal-dialog" >
< div class = "modal-content" >
< div class = "modal-header" >
< button type = "button" class = "close" data-dismiss = "modal" > × < / button >
< h4 class = "modal-title" > Cloudron Change Plan< / h4 >
< / div >
< div class = "modal-body" >
2016-06-30 10:27:29 -05:00
This will change your plan from < b > {{ currentPlan.name }}< / b > to < b > {{ planChange.requestedPlan.name }}< / b > .
2016-06-28 13:45:50 -05:00
< br / >
< br / >
Your apps and data will be migrated to the new Cloudron and will take around 15 minutes.
2016-06-28 14:02:45 -05:00
< br / >
2016-06-28 14:36:19 -05:00
< br / >
< br / >
2016-10-09 16:54:44 -07:00
< form name = "planChangeForm" role = "form" novalidate ng-submit = "planChange.doChangePlan(planChangeForm)" autocomplete = "off" >
2016-06-28 14:02:45 -05:00
< fieldset >
2016-06-29 21:29:28 +02:00
< input type = "password" style = "display: none;" >
2016-06-28 14:02:45 -05:00
< div class = "form-group" ng-class = "{ 'has-error': (!planChangeForm.password.$dirty && planChange.error.password) || (planChangeForm.password.$dirty && planChangeForm.password.$invalid) }" >
< label class = "control-label" for = "inputDeveloperModeChangePassword" > Give your password to verify that you are performing that action< / label >
< div class = "control-label" ng-show = "(!planChangeForm.password.$dirty && planChange.error.password) || (planChangeForm.password.$dirty && planChangeForm.password.$invalid)" >
< small ng-show = " planChangeForm.password.$dirty && planChangeForm.password.$invalid" > A password is required< / small >
< small ng-show = "!planChangeForm.password.$dirty && planChange.error.password" > Wrong password< / small >
< / div >
2016-06-28 14:36:19 -05:00
< input type = "password" class = "form-control" ng-model = "planChange.password" id = "inputPlanChangePassword" name = "password" required autofocus >
2016-06-28 14:02:45 -05:00
< / div >
< input class = "ng-hide" type = "submit" ng-disabled = "planChangeForm.$invalid" / >
< / fieldset >
< / form >
2016-06-28 13:45:50 -05:00
< / div >
< div class = "modal-footer" >
< button type = "button" class = "btn btn-default" data-dismiss = "modal" > Cancel< / button >
2017-01-29 02:01:01 -08:00
< button type = "button" class = "btn btn-success" ng-click = "planChange.doChangePlan()" ng-disabled = "planChange.busy" > < i class = "fa fa-circle-o-notch fa-spin" ng-show = "planChange.busy" > < / i > Confirm< / button >
2016-06-28 13:45:50 -05:00
< / div >
< / div >
< / div >
< / div >
2016-10-09 16:55:29 -07:00
<!-- modal backup config -->
< div class = "modal fade" id = "configureBackupModal" tabindex = "-1" role = "dialog" >
< div class = "modal-dialog" >
< div class = "modal-content" >
< div class = "modal-header" >
2017-01-17 15:23:52 +01:00
< h4 class = "modal-title" > Configure Backup Storage< / h4 >
2016-10-09 16:55:29 -07:00
< / div >
< div class = "modal-body" >
2017-01-29 02:50:26 -08:00
< p > Only Amazon S3 or API compatible services are supported. < sup > < a ng-href = "{{ config.webServerOrigin }}/references/selfhosting.html#backups" class = "help" target = "_blank" > < i class = "fa fa-question-circle" > < / i > < / a > < / sup > < / p >
2016-10-09 16:55:29 -07:00
< form name = "configureBackupForm" role = "form" novalidate ng-submit = "configureBackup.submit()" autocomplete = "off" >
< fieldset >
2016-10-11 14:07:36 +02:00
< p class = "has-error text-center" ng-show = "configureBackup.error" > {{ configureBackup.error.generic }}< / p >
2016-10-09 16:55:29 -07:00
2016-10-11 11:21:06 +02:00
<!-- S3 -->
2016-10-11 14:07:36 +02:00
< div class = "form-group" ng-class = "{ 'has-error': configureBackup.error.bucket }" >
2016-10-11 10:54:33 +02:00
< label class = "control-label" for = "inputConfigureBackupBucket" > Bucket name< / label >
< input type = "text" class = "form-control" ng-model = "configureBackup.bucket" id = "inputConfigureBackupBucket" name = "bucket" ng-disabled = "configureBackup.busy" required autofocus >
2016-10-09 16:55:29 -07:00
< / div >
2016-10-11 14:07:36 +02:00
< div class = "form-group" ng-class = "{ 'has-error': configureBackup.error.prefix }" >
2016-10-11 10:54:33 +02:00
< label class = "control-label" for = "inputConfigureBackupPrefix" > Prefix< / label >
2017-01-29 12:11:45 -08:00
< input type = "text" class = "form-control" ng-model = "configureBackup.prefix" id = "inputConfigureBackupPrefix" name = "prefix" ng-disabled = "configureBackup.busy" placeholder = "Prefix for backup file names" required >
2016-10-09 16:55:29 -07:00
< / div >
2016-10-28 16:47:46 +02:00
< div class = "form-group" ng-class = "{ 'has-error': configureBackup.error.region }" >
2017-01-29 02:50:26 -08:00
< label class = "control-label" for = "inputConfigureBackupRegion" > Region< / label >
2016-10-28 16:47:46 +02:00
< select class = "form-control" name = "region" id = "inputConfigureBackupRegion" ng-model = "configureBackup.region" ng-options = "a.value as a.name for a in s3Regions" ng-disabled = "configureBackup.busy" required > < / select >
2016-10-11 14:20:31 +02:00
< / div >
2016-10-11 14:07:36 +02:00
< div class = "form-group" ng-class = "{ 'has-error': configureBackup.error.accessKeyId }" >
2017-01-29 02:50:26 -08:00
< label class = "control-label" for = "inputConfigureBackupAccessKeyId" > Access key id< / label >
2016-10-11 10:54:33 +02:00
< input type = "text" class = "form-control" ng-model = "configureBackup.accessKeyId" id = "inputConfigureBackupAccessKeyId" name = "accessKeyId" ng-disabled = "configureBackup.busy" required >
2016-10-09 16:55:29 -07:00
< / div >
2016-10-11 11:21:06 +02:00
2016-10-11 14:07:36 +02:00
< div class = "form-group" ng-class = "{ 'has-error': configureBackup.error.secretAccessKey }" >
2017-01-29 02:50:26 -08:00
< label class = "control-label" for = "inputConfigureBackupSecretAccessKey" > Secret access key< / label >
2016-10-11 10:54:33 +02:00
< input type = "text" class = "form-control" ng-model = "configureBackup.secretAccessKey" id = "inputConfigureBackupSecretAccessKey" name = "secretAccessKey" ng-disabled = "configureBackup.busy" required >
2016-10-09 16:55:29 -07:00
< / div >
2016-12-19 14:09:57 -08:00
< div class = "form-group" ng-class = "{ 'has-error': configureBackup.error.endpoint }" >
< label class = "control-label" for = "inputConfigureBackupEndpoint" > Endpoint (optional)< / label >
2017-01-29 02:50:26 -08:00
< input type = "text" class = "form-control" ng-model = "configureBackup.endpoint" id = "inputConfigureBackupEndpoint" name = "endpoint" ng-disabled = "configureBackup.busy" placeholder = "URL of S3 compatible storage (Minio, Swift). Leave empty when using Amazon S3." >
2016-12-19 14:09:57 -08:00
< / div >
2016-12-19 12:41:35 -08:00
< div class = "form-group" ng-class = "{ 'has-error': configureBackup.error.key }" >
2017-01-29 02:50:26 -08:00
< label class = "control-label" for = "inputConfigureBackupKey" > Encryption key (optional)< / label >
2017-01-29 12:11:45 -08:00
< input type = "text" class = "form-control" ng-model = "configureBackup.key" id = "inputConfigureBackupKey" name = "prefix" ng-disabled = "configureBackup.busy" placeholder = "Encryption key for backups" >
2016-12-19 12:41:35 -08:00
< / div >
2016-10-09 16:55:29 -07:00
< input class = "ng-hide" type = "submit" ng-disabled = "configureBackupForm.$invalid" / >
< / fieldset >
< / form >
< / div >
< div class = "modal-footer " >
< button type = "button" class = "btn btn-default" data-dismiss = "modal" > Cancel< / button >
2016-10-11 11:18:12 +02:00
< button type = "submit" class = "btn btn-outline btn-success pull-right" ng-click = "configureBackup.submit()" ng-disabled = "configureBackupForm.$invalid || configureBackup.busy" >
2017-01-29 02:01:01 -08:00
< i class = "fa fa-circle-o-notch fa-spin" ng-show = "configureBackup.busy" > < / i > < span > Save< / span >
2016-10-09 16:55:29 -07:00
< / button >
< / div >
< / div >
< / div >
< / div >
2015-08-12 13:48:55 +02:00
< br / >
2016-06-07 10:10:58 +02:00
< div class = "section-header" >
2015-08-12 13:48:55 +02:00
< div class = "text-left" >
< h1 > Settings< / h1 >
< / div >
< / div >
2016-07-26 17:05:54 +02:00
< div class = "section-header" >
2015-11-04 16:41:33 -08:00
< div class = "text-left" >
< h3 > About< / h3 >
< / div >
< / div >
2016-07-26 17:05:54 +02:00
< div class = "card" style = "margin-bottom: 15px;" >
2015-11-04 16:41:33 -08:00
< div class = "row" >
< div class = "col-xs-4" style = "min-width: 150px;" >
2016-10-09 16:54:44 -07:00
< div class = "settings-avatar" ng-click = "avatarChange.showChangeAvatar()" style = "background-image: url('{{ client.avatar }}');" >
2015-11-04 16:41:33 -08:00
< div class = "overlay" > < / div >
< / div >
< / div >
< div class = "col-xs-8" >
< table width = "100%" >
2016-07-28 12:56:17 +02:00
< tr >
< td class = "text-muted" style = "vertical-align: top;" > Name< / td >
< td class = "text-right" style = "vertical-align: top; white-space: nowrap;" > {{ config.cloudronName }} < a href = "" ng-click = "cloudronNameChange.show()" > < i class = "fa fa-pencil text-small" > < / i > < / a > < / td >
< / tr >
2016-08-01 13:22:35 +02:00
< tr ng-show = "appstoreConfig.profile" >
2017-01-29 02:50:26 -08:00
< td class = "text-muted" style = "vertical-align: top;" > App store account< / td >
2016-08-01 13:22:35 +02:00
< td class = "text-right" style = "vertical-align: top; white-space: nowrap;" > {{ appstoreConfig.profile.email }}< / td >
< / tr >
2016-07-26 17:07:07 +02:00
< tr ng-show = "config.provider === 'caas'" >
2015-11-04 16:41:33 -08:00
< td class = "text-muted" style = "vertical-align: top;" > Model< / td >
< td class = "text-right" style = "vertical-align: top; white-space: nowrap;" > {{ config.size }} - {{ config.region }}< / td >
< / tr >
< tr >
< td class = "text-muted" style = "vertical-align: top;" > Version< / td >
< td class = "text-right" style = "vertical-align: top; white-space: nowrap;" > {{ config.version }}< / td >
< / tr >
2016-09-22 14:19:02 +02:00
< tr >
< td class = "text-muted" style = "vertical-align: top;" > Provider< / td >
< td class = "text-right" style = "vertical-align: top; white-space: nowrap;" > {{ config.provider }}< / td >
< / tr >
2015-11-04 16:41:33 -08:00
< / table >
< / div >
< / div >
< / div >
2016-07-26 17:05:54 +02:00
< div class = "section-header" ng-show = "config.provider === 'caas'" >
2016-06-28 13:45:50 -05:00
< div class = "text-left" >
< h3 > Plans< / h3 >
< / div >
< / div >
2016-07-26 17:05:54 +02:00
< div class = "card" style = "margin-bottom: 15px;" ng-show = "config.provider === 'caas'" >
2016-09-22 14:01:47 +02:00
< div class = "row" >
< div class = "col-xs-12 text-right" >
< a href = "{{ config.webServerOrigin }}/console.html#/userprofile" target = "_blank" > Change payment method< / a >
< / div >
< / div >
2016-06-28 13:45:50 -05:00
< div class = "row" >
2016-06-29 15:27:19 -05:00
< div class = "col-xs-10 plans" style = "margin-left: 20px" >
2016-06-30 12:03:36 -05:00
< div ng-repeat = "plan in availablePlans" >
< label >
< input type = "radio" ng-model = "planChange.requestedPlan" ng-value = "plan" >
2016-06-28 14:36:19 -05:00
{{ plan.name }} ({{ plan.slug | uppercase }}) - {{ plan.price/100 }}{{ currency }}/month
2016-06-30 10:27:29 -05:00
< span ng-show = "currentPlan.name === plan.name" style = "font-weight: bold" > (current plan)
2016-06-28 13:45:50 -05:00
< / span >
< / label >
< / div >
< / div >
< / div >
< div class = "row" >
2016-06-28 14:51:47 -05:00
< div class = "col-xs-12" >
2016-10-09 16:54:44 -07:00
< button class = "btn btn-primary pull-right" ng-disabled = "planChange.requestedPlan.name === currentPlan.name" ng-click = "planChange.showChangePlan()" > Change Plan< / button >
2016-06-28 14:51:47 -05:00
< / div >
2016-06-28 13:45:50 -05:00
< / div >
< / div >
2016-08-30 22:12:07 -07:00
< div class = "section-header" >
< div class = "text-left" >
< h3 > Email< / h3 >
< / div >
< / div >
< div class = "card" style = "margin-bottom: 15px;" >
< div class = "row" >
< div class = "col-md-12" >
2017-01-29 02:50:26 -08:00
Cloudron has a built-in email server that allows users to send and receive email for your domain.
The < a href = "https://cloudron.io/references/usermanual.html#email" target = "_blank" > User manual< / a > has information on how to setup email clients.
< br / >
< br / >
2017-01-29 12:11:45 -08:00
Apps can send email regardless of this setting. Enable this option to allow apps to receive emails.
2016-09-29 12:46:40 -07:00
< / div >
2016-08-30 22:12:07 -07:00
< / div >
2016-08-31 07:35:10 -07:00
< br / >
2016-08-30 22:12:07 -07:00
< div class = "row" >
2017-02-02 13:58:13 -08:00
< div class = "col-md-12" ng-show = "(dnsConfig.provider === 'noop' || dnsConfig.provider === 'manual')" >
2017-02-01 23:02:49 -08:00
Set the following DNS records to guarantee email functionality.
2016-08-30 22:12:07 -07:00
2016-12-09 09:19:23 +01:00
< div ng-repeat = "record in expectedDnsRecordsTypes" >
2017-02-02 13:58:13 -08:00
< div class = "row" ng-if = "mailConfig.enabled || (record.name !== 'DMARC' && record.name !== 'MX')" >
2016-12-09 09:19:23 +01:00
< div class = "col-xs-12" >
2016-12-14 15:41:19 +01:00
< h4 class = "text-muted" >
{{ record.name }} record < i ng-class = "expectedDnsRecords[record.value].status ? 'fa fa-check-circle text-success' : 'fa fa-exclamation-triangle text-danger'" aria-hidden = "true" > < / i >
< button class = "btn btn-xs btn-default" ng-click = "email.refresh()" ng-disabled = "email.refreshBusy" ng-show = "!expectedDnsRecords[record.value].status" > < i class = "fa fa-refresh" ng-class = "{ 'fa-pulse': email.refreshBusy }" > < / i > < / button >
< / h4 >
2016-12-09 09:19:23 +01:00
< a href = "" data-toggle = "collapse" data-parent = "#accordion" data-target = "#collapse_dns_{{ record.value }}" > Advanced< / a >
< div id = "collapse_dns_{{ record.value }}" class = "panel-collapse collapse" >
< div class = "panel-body" >
2017-02-01 23:02:49 -08:00
< p > Domain: < b ng-click-select > < tt > {{ expectedDnsRecords[record.value].domain }}< / tt > < / b > < / p >
2016-12-09 09:19:23 +01:00
< p > Record type: < b ng-click-select > < tt > {{ expectedDnsRecords[record.value].type }}< / tt > < / b > < / p >
< p style = "overflow: auto; white-space: nowrap;" > Expected value: < b ng-click-select > < tt > {{ expectedDnsRecords[record.value].expected }}< / tt > < / b > < / p >
< p style = "overflow: auto; white-space: nowrap;" > Current value: < b ng-click-select > < tt > {{ expectedDnsRecords[record.value].value ? expectedDnsRecords[record.value].value : '[not set]' }}< / tt > < / b > < / p >
< / div >
< / div >
< / div >
< / div >
< / div >
2016-08-30 22:12:07 -07:00
< / div >
< / div >
2016-12-14 15:18:49 +01:00
< br / >
< div class = "row" >
< div class = "col-md-12" ng-show = "dnsConfig.provider !== 'caas'" >
< button ng-class = "mailConfig.enabled ? 'btn btn-danger pull-right' : 'btn btn-primary pull-right'" ng-click = "email.toggle()" ng-enabled = "mailConfig" > {{ mailConfig.enabled ? "Disable Email" : "Enable Email" }}< / button >
< / div >
< / div >
2016-08-30 22:12:07 -07:00
< / div >
2016-07-26 17:05:54 +02:00
< div class = "section-header" >
2015-07-20 00:09:47 -07:00
< div class = "text-left" >
< h3 > Backups< / h3 >
< / div >
< / div >
2016-07-26 17:05:54 +02:00
< div class = "card" style = "margin-bottom: 15px;" >
2016-09-22 16:10:03 +02:00
< div class = "row" ng-show = "backupConfig.provider !== 'caas' || config.isDev" >
< div class = "col-xs-6" >
< span class = "text-muted" > Provider< / span >
< / div >
< div class = "col-xs-6 text-right" >
2016-10-14 09:34:55 -07:00
< span > {{ backupConfig.provider === 'caas' ? 'cloudron.io' : backupConfig.provider }}< / span >
2016-09-22 16:10:03 +02:00
< / div >
< / div >
< div class = "row" ng-show = "backupConfig.provider !== 'caas' || config.isDev" >
< div class = "col-xs-6" >
< span class = "text-muted" > Location< / span >
< / div >
< div class = "col-xs-6 text-right" >
2016-09-22 16:14:26 +02:00
< span ng-show = "backupConfig.provider === 'filesystem'" > {{ backupConfig.backupFolder }}< / span >
2016-10-11 14:14:24 +02:00
< span ng-show = "backupConfig.provider === 's3'" > {{ backupConfig.region + ' ' + backupConfig.bucket + '/' + backupConfig.prefix }}< / span >
2016-09-22 16:10:03 +02:00
< / div >
< / div >
< br / >
2015-07-20 00:09:47 -07:00
< div class = "row" >
< div class = "col-xs-6" >
2017-01-29 02:50:26 -08:00
< span class = "text-muted" > Last backup< / span >
2015-07-20 00:09:47 -07:00
< / div >
< div class = "col-xs-6 text-right" >
< span ng-show = "lastBackup" > {{ lastBackup.creationTime | prettyDate }}< / span >
2016-07-20 14:31:59 +02:00
< span ng-hide = "lastBackup" > No backups have been made yet< / span >
2015-07-20 00:09:47 -07:00
< / div >
< / div >
2016-09-22 16:10:03 +02:00
2016-09-22 16:10:28 +02:00
< div class = "row" ng-show = "backupConfig.provider !== 'caas' || config.isDev" >
2015-07-20 00:09:47 -07:00
< br / >
2017-01-19 17:30:01 +01:00
< div class = "col-md-12" >
2015-07-20 00:09:47 -07:00
< div ng-show = "createBackup.busy" class = "progress progress-striped active animateMe" >
2017-01-29 12:11:45 -08:00
< div class = "progress-bar progress-bar-success" role = "progressbar" style = "width: {{ createBackup.percent }}%" > < / div >
2015-07-20 00:09:47 -07:00
< / div >
2017-01-19 17:30:01 +01:00
< br / >
2015-07-20 00:09:47 -07:00
< / div >
2017-01-19 17:30:01 +01:00
< / div >
< div class = "row" ng-show = "backupConfig.provider !== 'caas' || config.isDev" >
< div class = "col-md-6" >
< p ng-show = "createBackup.busy" > {{ createBackup.message }}< / p >
< / div >
< div class = "col-md-6 text-right" >
2016-10-09 16:55:29 -07:00
< button class = "btn btn-outline btn-primary pull-right" ng-click = "configureBackup.show()" ng-disabled = "createBackup.busy" > Configure< / button >
2017-01-19 17:04:20 +01:00
< button class = "btn btn-outline btn-primary" ng-click = "createBackup.doCreateBackup()" ng-disabled = "createBackup.busy" style = "margin-right: 10px" > Backup now< / button >
2015-07-20 00:09:47 -07:00
< / div >
< / div >
< / div >
2017-01-26 21:30:54 -08:00
< div class = "section-header" >
< div class = "text-left" >
< h3 > Updates< / h3 >
< / div >
< / div >
< div class = "card" style = "margin-bottom: 15px;" >
< div class = "row" >
< div class = "col-md-12" >
2017-01-29 12:11:45 -08:00
< p > Configure the update schedule for the platform and the apps< / p >
2017-01-29 02:50:26 -08:00
< p class = "text-danger" ng-show = "autoUpdate.error" > < br / > {{ autoUpdate.error }}< / p >
2017-01-26 21:30:54 -08:00
< / div >
< / div >
< div class = "row" >
< div class = "col-md-12" >
< div class = "radio" >
< label >
< input type = "radio" name = "scheduleRadio" ng-model = "autoUpdate.pattern" value = "00 00 1,3,5,23 * * *" >
Every night
< / label >
< / div >
< div class = "radio" >
< label >
< input type = "radio" name = "scheduleRadio" ng-model = "autoUpdate.pattern" value = "00 00 1,3,5,23 * * 6" >
Saturday night
< / label >
< / div >
< div class = "radio" >
< label >
< input type = "radio" name = "scheduleRadio" ng-model = "autoUpdate.pattern" value = "never" >
2017-01-29 12:11:45 -08:00
Update manually
2017-01-26 21:30:54 -08:00
< / label >
< / div >
< / div >
< / div >
< div class = "row" >
< div class = "col-md-12" >
2017-01-28 14:49:07 -08:00
< p class = "text-success pull-right text-bold" ng-show = "autoUpdate.success && autoUpdate.pattern === autoUpdate.currentPattern" > Saved< / p >
< button class = "btn btn-outline btn-primary pull-right" ng-hide = "autoUpdate.success && autoUpdate.pattern === autoUpdate.currentPattern" ng-click = "autoUpdate.submit()" ng-disabled = "autoUpdate.busy || autoUpdate.pattern === autoUpdate.currentPattern" > < i class = "fa fa-circle-o-notch fa-spin" ng-show = "autoUpdate.busy" > < / i > Save< / button >
2017-01-26 21:30:54 -08:00
< / div >
< / div >
< / div >
2016-06-07 15:58:53 +02:00
<!-- Offset the footer -->
< br / > < br / >