Use new translation argument passing
This commit is contained in:
@@ -89,7 +89,7 @@
|
||||
<div class="modal-content">
|
||||
<div class="modal-body">
|
||||
<p class="text-bold text-danger" ng-show="entryRemove.error">{{ entryRemove.error }}</p>
|
||||
<h4 ng-hide="entryRemove.error">{{ 'filemanager.removeDialog.reallyDelete' | tr:entryRemove.entry }}</h4>
|
||||
<h4 ng-hide="entryRemove.error">{{ 'filemanager.removeDialog.reallyDelete' | tr:{ fileName: entryRemove.entry.fileName } }}</h4>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">{{ 'main.dialog.no' | tr }}</button>
|
||||
@@ -152,7 +152,7 @@
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">{{ 'filemanager.renameDialog.title' | tr:renameEntry.entry }}</h4>
|
||||
<h4 class="modal-title">{{ 'filemanager.renameDialog.title' | tr:{ fileName: renameEntry.entry.fileName } }}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form role="form" name="renameEntryForm" ng-submit="renameEntry.submit()" autocomplete="off">
|
||||
@@ -177,7 +177,7 @@
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">{{ 'filemanager.chownDialog.title' | tr:chownEntry.entry }}</h4>
|
||||
<h4 class="modal-title">{{ 'filemanager.chownDialog.title' | tr:{ fileName: chownEntry.entry.fileName } }}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form role="form" name="chownEntryForm" ng-submit="chownEntry.submit()" autocomplete="off">
|
||||
@@ -206,7 +206,7 @@
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">{{ 'filemanager.uploadingDialog.title' | tr:uploadStatus }}</h4>
|
||||
<h4 class="modal-title">{{ 'filemanager.uploadingDialog.title' | tr:{ countDone: uploadStatus.countDone, count: uploadStatus.count } }}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div ng-show="uploadStatus.error">
|
||||
@@ -233,7 +233,7 @@
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">{{ 'filemanager.extractDialog.title' | tr:extractStatus }}</h4>
|
||||
<h4 class="modal-title">{{ 'filemanager.extractDialog.title' | tr:{ fileName: extractStatus.fileName } }}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div ng-show="extractStatus.error">
|
||||
@@ -338,7 +338,7 @@
|
||||
<td style="width: 40px" ng-click="open(entry)" ng-class="{ 'hand': !entry.isSymbolicLink }" class="text-center">
|
||||
<i class="fas fa-lg {{ entry.icon }}" ng-class="{ 'text-primary': entry.isDirectory }"></i>
|
||||
</td>
|
||||
<td ng-class="{ 'hand': !entry.isSymbolicLink }" class="elide-table-cell" ng-click="open(entry)">{{ entry.fileName }}<span ng-show="entry.isSymbolicLink" class="text-muted" style="margin-left: 20px;">{{ 'filemanager.list.symlink' | tr:entry }}</span></td>
|
||||
<td ng-class="{ 'hand': !entry.isSymbolicLink }" class="elide-table-cell" ng-click="open(entry)">{{ entry.fileName }}<span ng-show="entry.isSymbolicLink" class="text-muted" style="margin-left: 20px;">{{ 'filemanager.list.symlink' | tr:{ target: entry.target } }}</span></td>
|
||||
<td style="width: 80px" ng-class="{ 'hand': !entry.isSymbolicLink }" class="elide-table-cell" ng-click="open(entry)">{{ entry.size | prettyByteSize }}</td>
|
||||
<td style="width:100px" ng-class="{ 'hand': !entry.isSymbolicLink }" class="elide-table-cell" ng-click="open(entry)">{{ entry.uid | prettyOwner }}</td>
|
||||
<td style="width: 40px" class="text-right no-wrap" style="vertical-align: bottom">
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">{{ 'terminal.download.title' | tr:selected }}</h4>
|
||||
<h4 class="modal-title">{{ 'terminal.download.title' | tr:{ name: selected.name } }}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form name="downloadFileForm" ng-submit="downloadFile.submit()">
|
||||
@@ -98,7 +98,7 @@
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">{{ 'terminal.upload.title' | tr:selected }}</h4>
|
||||
<h4 class="modal-title">{{ 'terminal.upload.title' | tr:{ name: selected.name } }}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<span><b>{{ uploadProgress.current | prettyByteSize }}</b> (total {{ uploadProgress.total | prettyByteSize }})</span>
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
},
|
||||
"loginTokens": {
|
||||
"title": "Login Tokens",
|
||||
"description": "You have {{ webadminTokens.length }} active web token(s) and {{ cliTokens.length }} CLI token(s).",
|
||||
"description": "You have {{ webadminTokenCount}} active web token(s) and {{ cliTokenCount }} CLI token(s).",
|
||||
"logoutAll": "Logout From All"
|
||||
},
|
||||
"changeEmail": {
|
||||
@@ -151,7 +151,7 @@
|
||||
"contents": "Contents",
|
||||
"version": "Version",
|
||||
"noApps": "No apps",
|
||||
"appCount": "{{ contents.length }} apps",
|
||||
"appCount": "{{ appCount }} apps",
|
||||
"tooltipDownloadBackupConfig": "Download Backup Configuration",
|
||||
"cleanupBackups": "Cleanup Backups",
|
||||
"backupNow": "Backup now",
|
||||
@@ -168,7 +168,7 @@
|
||||
"date": "Date",
|
||||
"version": "Version",
|
||||
"format": "Format",
|
||||
"list": "References backups of {{ backup.contents.length }} apps"
|
||||
"list": "References backups of {{ appCount }} apps"
|
||||
},
|
||||
"backupFailed": {
|
||||
"title": "Unable to create backup"
|
||||
@@ -191,7 +191,7 @@
|
||||
"provider": "Storage provider",
|
||||
"noopNote": "This option breaks the backup and restore functionality of Cloudron and should only be used for testing. Please make sure the server is completely backed up using alternate means.",
|
||||
"mountPoint": "Mount point",
|
||||
"mountPointDescription": "The mount point has to be setup manually. See <a href=\"https://docs.cloudron.io/backups/#{{ provider }}\" target=\"_blank\">docs</a>.",
|
||||
"mountPointDescription": "The mount point has to be setup manually. See <a href=\"{{ providerDocsLink }}\" target=\"_blank\">docs</a>.",
|
||||
"localDirectory": "Local backup directory",
|
||||
"ext4Label": "Backup directory is an external EXT4 Disk",
|
||||
"hardlinksLabel": "Use hardlinks",
|
||||
@@ -244,7 +244,7 @@
|
||||
"config": "Config",
|
||||
"outbound": "Outbound only",
|
||||
"disabled": "Disabled",
|
||||
"stats": "{{ mailboxCount }} Mailbox(es) / Usage: {{ usage | prettyByteSize }}",
|
||||
"stats": "{{ mailboxCount }} Mailbox(es) / Usage: {{ usage }}",
|
||||
"testEmailTooltip": "Send Test Email"
|
||||
},
|
||||
"settings": {
|
||||
@@ -253,7 +253,7 @@
|
||||
"location": "Mail server location",
|
||||
"maxMailSize": "Maximum email size",
|
||||
"spamFilter": "Spam filtering",
|
||||
"spamFilterOverview": "{{ acl.blacklist.length }} address(es) blacklisted {{ customConfig ? '. Custom rules set.' : '.' }}",
|
||||
"spamFilterOverview": "{{ blacklistCount }} address(es) blacklisted.",
|
||||
"changeDomainProgress": "Changing Email domain:"
|
||||
},
|
||||
"eventlog": {
|
||||
@@ -287,7 +287,7 @@
|
||||
"location": "Location",
|
||||
"locationPlaceholder": "Leave empty to use bare domain",
|
||||
"linodeInfo": "Linode DNS average <a target=\"_blank\" href=\"{{ linodeDocsLink }}\">propagation time</a> is 30 minutes. Changing the location will take a while.",
|
||||
"manualInfo": "Add an A record manually for {{ (!subdomain ? '' : '.') + domain.domain }} to this Cloudron's public IP"
|
||||
"manualInfo": "Add an A record manually for {{ domain }} to this Cloudron's public IP"
|
||||
},
|
||||
"changeMailSizeDialog": {
|
||||
"title": "Change Maximum Email Size",
|
||||
@@ -304,7 +304,7 @@
|
||||
},
|
||||
"testMailDialog": {
|
||||
"title": "Send test email for {{ domain }}",
|
||||
"description": "This will send a test email from <b>no-reply@{{domain}}</b> to the address below.",
|
||||
"description": "This will send a test email from <b>no-reply@{{ domain }}</b> to the address below.",
|
||||
"mailTo": "Email to",
|
||||
"mailToPlaceholder": "Email address",
|
||||
"sendAction": "Send"
|
||||
@@ -324,7 +324,7 @@
|
||||
"firewall": {
|
||||
"title": "Firewall",
|
||||
"blockedIpRanges": "Blocked IPs & Ranges",
|
||||
"blocklist": "{{ currentBlocklistLength }} IP(s) blocked",
|
||||
"blocklist": "{{ blockCount }} IP(s) blocked",
|
||||
"configure": {
|
||||
"title": "Firewall Configuration",
|
||||
"description": "Matched addresses will be unable to connect to the server including the mail server, the dashboard and all apps. Be careful not to lock yourself out.",
|
||||
@@ -351,7 +351,7 @@
|
||||
"configureActionTooltip": "Configure",
|
||||
"restartActionTooltip": "Restart",
|
||||
"configure": {
|
||||
"title": "Configure {{ displayName }}",
|
||||
"title": "Configure {{ name }}",
|
||||
"memoryLimitDescription": "Cloudron allocates 50% of this value as RAM and 50% as swap.",
|
||||
"accessControl": "Access Control",
|
||||
"accessControlDescription": "Allowing non-admins to access SFTP will let them read application config files and secret keys. For some apps like WordPress, they can also log the password.",
|
||||
@@ -375,7 +375,7 @@
|
||||
},
|
||||
"timezone": {
|
||||
"title": "Time Zone",
|
||||
"description": "The current timezone setting is <b>{{ currentTimeZone.display }}</b>.\nThis setting is used for scheduling backup and update tasks."
|
||||
"description": "The current timezone setting is <b>{{ timeZone }}</b>.\nThis setting is used for scheduling backup and update tasks."
|
||||
},
|
||||
"updates": {
|
||||
"title": "Updates",
|
||||
@@ -527,7 +527,7 @@
|
||||
"namecheapInfo": "The server IP needs to be whitelisted for this API Key.",
|
||||
"linodeInfo": "Linode DNS average <a target=\"_blank\" href=\"{{ linodeDocsLink }}\">propagation time</a> is 30 minutes. Installing apps & and getting a Let's Encrypt certificate will take a while.",
|
||||
"manualInfo": "All DNS records have to be setup manually before each app installation.",
|
||||
"wildcardInfo": "Setup <i>A</i> records for <b>*.{{ newDomain || domain.domain }}</b> and <b>{{ newDomain || domain.domain }}</b> to this server's IP.",
|
||||
"wildcardInfo": "Setup <i>A</i> records for <b>*.{{ domain }}</b> and <b>{{ domain }}</b> to this server's IP.",
|
||||
"letsEncryptInfo": "Let's Encrypt requires your server to be reachable on port 80",
|
||||
"advancedAction": "Advanced settings...",
|
||||
"zoneName": "Zone Name (Optional)",
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
<div class="col-xs-9 text-right">{{ backupDetails.backup.format }}</div>
|
||||
</div>
|
||||
<br/>
|
||||
<p class="text-muted">{{ 'backups.backupDetails.list' | tr:backupDetails }}:</p>
|
||||
<p class="text-muted">{{ 'backups.backupDetails.list' | tr:{ appCount: backupDetails.backup.contents.length } }}:</p>
|
||||
<span ng-repeat="app in backupDetails.backup.contents | orderBy:['label','fqdn']">
|
||||
<a ng-href="/#/app/{{app.id}}/backups">{{ app.label || app.fqdn }}</a><span ng-hide="$last">,</span>
|
||||
</span>
|
||||
@@ -134,7 +134,7 @@
|
||||
<div class="form-group" ng-class="{ 'has-error': configureBackup.error.mountPoint || (configureBackupForm.mountPoint.$dirty && !configureBackup.mountPoint) }" ng-show="mountlike(configureBackup.provider)">
|
||||
<label class="control-label" for="inputConfigureMountPoint">{{ 'backups.configureBackupStorage.mountPoint' | tr }}</label>
|
||||
<input type="text" class="form-control" ng-model="configureBackup.mountPoint" id="inputConfigureMountPoint" name="mountPoint" ng-disabled="configureBackup.busy" placeholder="Folder where filesystem is mounted" ng-required="mountlike(configureBackup.provider)">
|
||||
<p ng-bind-html="'backups.configureBackupStorage.mountPointDescription' | tr:configureBackup"></p>
|
||||
<p ng-bind-html="'backups.configureBackupStorage.mountPointDescription' | tr:{ providerDocsLink: 'https://docs.cloudron.io/backups/#'+configureBackup.provider }"></p>
|
||||
</div>
|
||||
|
||||
<!-- Filesystem -->
|
||||
@@ -437,7 +437,7 @@
|
||||
<td ng-click="backupDetails.show(backup)" class="hand"><span uib-tooltip="{{ backup.creationTime | prettyLongDate }}">{{ backup.creationTime | prettyDate }}</span></td>
|
||||
<td ng-click="backupDetails.show(backup)" class="hand">
|
||||
<span ng-show="!backup.contents.length">{{ 'backups.listing.noApps' | tr }}</span>
|
||||
<span ng-show="backup.contents.length">{{ 'backups.listing.appCount' | tr:backups }}</span>
|
||||
<span ng-show="backup.contents.length">{{ 'backups.listing.appCount' | tr:{ appCount: backups.contents.length } }}</span>
|
||||
</td>
|
||||
<td class="text-right no-wrap" style="vertical-align: bottom">
|
||||
<button class="btn btn-xs btn-default" ng-click="downloadConfig(backup)" uib-tooltip="{{ 'backups.listing.tooltipDownloadBackupConfig' | tr }}"><i class="fas fa-file-alt"></i></button>
|
||||
@@ -469,7 +469,7 @@
|
||||
<div class="col-md-12 text-right">
|
||||
<button class="btn btn-default" ng-click="createBackup.cleanupBackups()" ng-show="!createBackup.busy" style="margin-right: 5px">{{ 'backups.listing.cleanupBackups' | tr }}</button>
|
||||
<button class="btn btn-outline btn-primary" ng-click="createBackup.startBackup()" ng-show="!createBackup.busy">{{ 'backups.listing.backupNow' | tr }}</button>
|
||||
<button class="btn btn-outline btn-danger" ng-click="createBackup.stopTask()" ng-show="createBackup.busy">{{ 'backups.listing.stopTask' | tr:createBackup }}</button>
|
||||
<button class="btn btn-outline btn-danger" ng-click="createBackup.stopTask()" ng-show="createBackup.busy">{{ 'backups.listing.stopTask' | tr:{ taskType: createBackup.taskType } }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title" ng-show="domainConfigure.adding">{{ 'domains.domainDialog.addTitle' | tr }}</h4>
|
||||
<h4 class="modal-title" ng-hide="domainConfigure.adding">{{ 'domains.domainDialog.editTitle' | tr:domainConfigure.domain }}</h4>
|
||||
<h4 class="modal-title" ng-hide="domainConfigure.adding">{{ 'domains.domainDialog.editTitle' | tr:{ domain: domainConfigure.domain.domain } }}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p ng-show="domainConfigure.adding" ng-bind-html="'domains.domainDialog.addDescription' | tr"></p>
|
||||
@@ -130,10 +130,10 @@
|
||||
</div>
|
||||
|
||||
<p class="small text-info text-bold" ng-show="domainConfigure.provider === 'namecheap'" ng-bind-html="'domains.domainDialog.namecheapInfo' | tr"></p>
|
||||
<p class="small text-info text-bold" ng-show="domainConfigure.provider === 'linode'" ng-bind-html="'domains.domainDialog.linodeInfo' | tr:translationLinks"></p>
|
||||
<p class="small text-info text-bold" ng-show="domainConfigure.provider === 'wildcard'" ng-bind-html="'domains.domainDialog.wildcardInfo' | tr:domainConfigure"></p>
|
||||
<p class="small text-info text-bold" ng-show="domainConfigure.provider === 'manual'" ng-bind-html="'domains.domainDialog.manualInfo' | tr:translationLinks"></p>
|
||||
<p class="small text-info text-bold" ng-show="needsPort80(domainConfigure.provider, domainConfigure.tlsConfig.provider)" ng-bind-html="'domains.domainDialog.letsEncryptInfo' | tr:translationLinks"></p>
|
||||
<p class="small text-info text-bold" ng-show="domainConfigure.provider === 'linode'" ng-bind-html="'domains.domainDialog.linodeInfo' | tr:{ linodeDocsLink: 'https://docs.cloudron.io/domains/#linode-dns' }"></p>
|
||||
<p class="small text-info text-bold" ng-show="domainConfigure.provider === 'wildcard'" ng-bind-html="'domains.domainDialog.wildcardInfo' | tr:{ domain: domainConfigure.adding ? domainConfigure.newDomain : domainConfigure.domain.domain } }"></p>
|
||||
<p class="small text-info text-bold" ng-show="domainConfigure.provider === 'manual'" ng-bind-html="'domains.domainDialog.manualInfo' | tr"></p>
|
||||
<p class="small text-info text-bold" ng-show="needsPort80(domainConfigure.provider, domainConfigure.tlsConfig.provider)" ng-bind-html="'domains.domainDialog.letsEncryptInfo' | tr"></p>
|
||||
|
||||
<a href="" ng-click="domainConfigure.advancedVisible = true" ng-hide="domainConfigure.advancedVisible">{{ 'domains.domainDialog.advancedAction' | tr }}</a>
|
||||
<div uib-collapse="!domainConfigure.advancedVisible">
|
||||
@@ -155,7 +155,7 @@
|
||||
|
||||
<div ng-show="domainConfigure.tlsConfig.provider === 'fallback'">
|
||||
<label class="control-label">{{ 'domains.domainDialog.fallbackCertCustomCert' | tr }}</label>
|
||||
<p ng-bind-html="'domains.domainDialog.fallbackCertCustomCertInfo' | tr:translationLinks"></p>
|
||||
<p ng-bind-html="'domains.domainDialog.fallbackCertCustomCertInfo' | tr:{ customCertLink: 'https://docs.cloudron.io/certificates/#custom-certificates' }"></p>
|
||||
</div>
|
||||
|
||||
<div class="form-group" ng-class="{ 'has-error': (!fallbackCert.cert.$dirty && fallbackCert.error) }">
|
||||
@@ -191,10 +191,10 @@
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">{{ 'domains.removeDialog.title' | tr:domainRemove.domain }}</h4>
|
||||
<h4 class="modal-title">{{ 'domains.removeDialog.title' | tr:{ domain: domainRemove.domain.domain } }}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p ng-bind-html="'domains.removeDialog.description' | tr:domainRemove.domain"></p>
|
||||
<p ng-bind-html="'domains.removeDialog.description' | tr:{ domain: domainRemove.domain.domin }"></p>
|
||||
<br/>
|
||||
<span class="has-error" ng-show="domainRemove.error">{{ domainRemove.error }}</span>
|
||||
</div>
|
||||
|
||||
@@ -32,8 +32,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="text-center text-warning text-bold" ng-show="mailLocation.domain.provider === 'linode'" ng-bind-html=" 'emails.changeDomainDialog.linodeInfo' | tr:translationLinks "></p>
|
||||
<p class="text-center text-warning text-bold" ng-show="mailLocation.domain.provider === 'manual'" ng-bind-html=" 'emails.changeDomainDialog.manualInfo' | tr:mailLocation "></p>
|
||||
<p class="text-center text-warning text-bold" ng-show="mailLocation.domain.provider === 'linode'" ng-bind-html="'emails.changeDomainDialog.linodeInfo' | tr:{ linodeDocsLink: 'https://docs.cloudron.io/domains/#linode-dns' }"></p>
|
||||
<p class="text-center text-warning text-bold" ng-show="mailLocation.domain.provider === 'manual'" ng-bind-html="'emails.changeDomainDialog.manualInfo' | tr:{ domain: mailLocation.domain.domain }"></p>
|
||||
|
||||
<input class="ng-hide" type="submit" ng-disabled="mailLocationForm.$invalid"/>
|
||||
</form>
|
||||
@@ -108,13 +108,13 @@
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">{{ 'emails.testMailDialog.title' | tr:testEmail.domain }}</h4>
|
||||
<h4 class="modal-title">{{ 'emails.testMailDialog.title' | tr:{ domain: testEmail.domain.domain } }}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form name="testEmailForm" role="form" novalidate ng-submit="testEmail.submit()" autocomplete="off">
|
||||
<fieldset>
|
||||
<p class="has-error text-center" ng-show="testEmail.error">{{ testEmail.error.generic }}</p>
|
||||
<p ng-bind-html=" 'emails.testMailDialog.description' | tr:testEmail.domain "></p>
|
||||
<p ng-bind-html="'emails.testMailDialog.description' | tr:{ domain: testEmail.domain.domain }"></p>
|
||||
<br/>
|
||||
<div class="form-group" ng-class="{ 'has-error': testEmail.error.key }">
|
||||
<label class="control-label" for="inputTestEmailKey">{{ 'emails.testMailDialog.mailTo' | tr }}</label>
|
||||
@@ -170,7 +170,7 @@
|
||||
</td>
|
||||
<td class="elide-table-cell no-padding">
|
||||
<a href="/#/email/{{ domain.domain }}" class="email-domain-list-item">
|
||||
<span ng-show="domain.inbound && domain.outbound">{{ 'emails.domains.stats' | tr:domain }}</span>
|
||||
<span ng-show="domain.inbound && domain.outbound">{{ 'emails.domains.stats' | tr:{ mailboxCount: domain.mailboxCount, usage: (domain.usage | prettyByteSize) } }}</span>
|
||||
<span ng-show="!domain.inbound && domain.outbound">{{ 'emails.domains.outbound' | tr }}</span>
|
||||
<span ng-show="!domain.inbound && !domain.outbound">{{ 'emails.domains.disabled' | tr }}</span>
|
||||
</a>
|
||||
@@ -214,7 +214,7 @@
|
||||
<span class="text-muted">{{ 'emails.settings.spamFilter' | tr }}</span>
|
||||
</div>
|
||||
<div class="col-xs-6 text-right">
|
||||
<span>{{ 'emails.settings.spamFilterOverview' | tr:spamConfig }} <a href="" ng-click="spamConfig.show()"><i class="fa fa-edit text-small"></i></a></span>
|
||||
<span>{{ 'emails.settings.spamFilterOverview' | tr:{ blacklistCount: spamConfig.acl.blacklist.length } }} <a href="" ng-click="spamConfig.show()"><i class="fa fa-edit text-small"></i></a></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -10,10 +10,6 @@ angular.module('Application').controller('EmailsController', ['$scope', '$locati
|
||||
$scope.user = Client.getUserInfo();
|
||||
$scope.domains = [];
|
||||
|
||||
$scope.translationLinks = {
|
||||
linodeDocsLink: 'https://docs.cloudron.io/domains/#linode-dns'
|
||||
};
|
||||
|
||||
$scope.pageItemCount = [
|
||||
{ name: $translate.instant('main.pagination.perPageSelector', { n: 20 }), value: 20 },
|
||||
{ name: $translate.instant('main.pagination.perPageSelector', { n: 50 }), value: 50 },
|
||||
|
||||
@@ -134,7 +134,7 @@
|
||||
<span class="text-muted">{{ 'network.firewall.blockedIpRanges' | tr }}</span>
|
||||
</div>
|
||||
<div class="col-xs-6 text-right">
|
||||
<span>{{ 'network.firewall.blocklist' | tr:blocklist }} <a href="" ng-click="blocklist.show()"><i class="fa fa-edit text-small"></i></a></span>
|
||||
<span>{{ 'network.firewall.blocklist' | tr:{ blockCount: blocklist.currentBlocklistLength } }} <a href="" ng-click="blocklist.show()"><i class="fa fa-edit text-small"></i></a></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input type="radio" name="useGravatar" ng-model="avatarChange.useGravatar" value="true_string">
|
||||
<span ng-bind-html=" 'profile.changeAvatar.useGravatar' | tr:translationData "></span>
|
||||
<span ng-bind-html="'profile.changeAvatar.useGravatar' | tr:{ gravatarLink: 'https://gravatar.com/' }"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="radio">
|
||||
@@ -175,7 +175,7 @@
|
||||
<h2><i class="fa fa-circle-notch fa-spin"></i></h2>
|
||||
</div>
|
||||
<div class="modal-body" ng-show="twoFactorAuthentication.secret">
|
||||
<p ng-bind-html="'profile.enable2FA.authenticatorAppDescription' | tr:translationData"></p>
|
||||
<p ng-bind-html="'profile.enable2FA.authenticatorAppDescription' | tr:{ googleAuthenticatorPlayStoreLink: 'https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2', googleAuthenticatorITunesLink: 'https://itunes.apple.com/us/app/google-authenticator/id388497605', freeOTPPlayStoreLink: 'https://play.google.com/store/apps/details?id=org.fedorahosted.freeotp', freeOTPITunesLink: 'https://itunes.apple.com/us/app/freeotp-authenticator/id872559395' }"></p>
|
||||
<center>
|
||||
<img ng-src="{{ twoFactorAuthentication.qrcode }}"/>
|
||||
<p>{{ twoFactorAuthentication.secret }}</p>
|
||||
@@ -426,7 +426,7 @@
|
||||
<div class="grid-item-top">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<p ng-bind-html="'profile.apiTokens.description' | tr:translationData"></p>
|
||||
<p ng-bind-html="'profile.apiTokens.description' | tr:{ apiDocsLink: 'https://docs.cloudron.io/api.html' }"></p>
|
||||
<table class="table table-hover" style="margin: 0;">
|
||||
<thead>
|
||||
<tr>
|
||||
@@ -467,7 +467,7 @@
|
||||
<div class="grid-item-top">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<p>{{ 'profile.loginTokens.description' | tr:tokens }}</p>
|
||||
<p>{{ 'profile.loginTokens.description' | tr:{ webadminTokenCount: tokens.webadminTokens.length, cliTokenCount: cliTokens.length }}</p>
|
||||
<button class="btn btn-outline btn-danger pull-right" ng-click="tokens.revokeAllWebAndCliTokens()" ng-disabled="tokens.busy"><i class="fa fa-circle-notch fa-spin" ng-show="tokens.busy"></i> {{ 'profile.loginTokens.logoutAll' | tr }}</button>
|
||||
<br/>
|
||||
</div>
|
||||
|
||||
@@ -9,15 +9,6 @@ angular.module('Application').controller('ProfileController', ['$scope', '$trans
|
||||
$scope.config = Client.getConfig();
|
||||
$scope.apps = Client.getInstalledApps();
|
||||
|
||||
$scope.translationData = {
|
||||
gravatarLink: 'https://gravatar.com/',
|
||||
apiDocsLink: 'https://docs.cloudron.io/api.html',
|
||||
googleAuthenticatorPlayStoreLink: 'https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2',
|
||||
googleAuthenticatorITunesLink: 'https://itunes.apple.com/us/app/google-authenticator/id388497605',
|
||||
freeOTPPlayStoreLink: 'https://play.google.com/store/apps/details?id=org.fedorahosted.freeotp',
|
||||
freeOTPITunesLink: 'https://itunes.apple.com/us/app/freeotp-authenticator/id872559395',
|
||||
};
|
||||
|
||||
$scope.language;
|
||||
$scope.languages = [
|
||||
{ label: 'English', key: 'en' },
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">{{ 'services.configure.title' | tr:serviceConfigure.service }}</h4>
|
||||
<h4 class="modal-title">{{ 'services.configure.title' | tr:{ name: serviceConfigure.service.displayName } }}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form name="serviceConfigureForm" role="form" novalidate ng-submit="serviceConfigure.submit()" autocomplete="off">
|
||||
|
||||
@@ -203,7 +203,7 @@
|
||||
<div class="card" style="margin-bottom: 15px;">
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<p ng-bind-html=" 'settings.timezone.description' | tr:timeZone "></p>
|
||||
<p ng-bind-html=" 'settings.timezone.description' | tr:{ timeZone: currentTimeZone.display } "></p>
|
||||
<p class="text-danger" ng-show="timeZone.error"><br/>{{ timeZone.error }}</p>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
@@ -278,7 +278,7 @@
|
||||
<div class="card" style="margin-bottom: 15px;">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<span ng-bind-html=" 'settings.privateDockerRegistry.description' | tr:translationLinks "></span>
|
||||
<span ng-bind-html="'settings.privateDockerRegistry.description' | tr:{ customAppsLink: 'https://docs.cloudron.io/custom-apps/tutorial/' }"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -14,10 +14,6 @@ angular.module('Application').controller('SettingsController', ['$scope', '$loca
|
||||
$scope.subscription = null;
|
||||
$scope.subscriptionBusy = true;
|
||||
|
||||
$scope.translationLinks = {
|
||||
customAppsLink: 'https://docs.cloudron.io/custom-apps/tutorial/'
|
||||
};
|
||||
|
||||
// values correspond to cron days
|
||||
$scope.cronDays = [
|
||||
{ name: 'Sunday', value: 0 },
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<div class="grid-item-top">
|
||||
<div class="row" ng-hide="config.features.support">
|
||||
<p class="text-bold">{{ 'support.ticket.subscriptionRequired' | tr }}</p>
|
||||
<p ng-bind-html=" 'support.ticket.subscriptionRequiredDescription' | tr:translationLinks "></p>
|
||||
<p ng-bind-html=" 'support.ticket.subscriptionRequiredDescription' | tr:{ supportViewLink: 'https://docs.cloudron.io/apps/?support_view', forumLink: 'https://forum.cloudron.io/' } "></p>
|
||||
</div>
|
||||
<div class="row" ng-show="config.features.support">
|
||||
<div class="col-lg-12">
|
||||
@@ -41,7 +41,7 @@
|
||||
<textarea class="form-control" name="description" rows="3" placeholder="{{ 'support.ticket.reportPlaceholder' | tr }}" ng-model="feedback.description" ng-minlength="1" required></textarea>
|
||||
</div>
|
||||
<div class="form-group" ng-class="{ 'has-error': (feedbackForm.email.$dirty && feedbackForm.email.$invalid) }">
|
||||
<label>{{ 'support.ticket.email' | tr }}</label> <small>{{ 'support.ticket.emailInfo' | tr:subscription }}</small>
|
||||
<label>{{ 'support.ticket.email' | tr }}</label> <small>{{ 'support.ticket.emailInfo' | tr:{ email: subscription.email } }}</small>
|
||||
<input type="text" class="form-control" name="email" placeholder="{{ 'support.ticket.emailPlaceholder' | tr }}" ng-model="feedback.altEmail" ng-maxlength="512" ng-minlength="1" ng-required="feedback.type === 'email_error'">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
|
||||
@@ -11,11 +11,6 @@ angular.module('Application').controller('SupportController', ['$scope', '$locat
|
||||
$scope.apps = Client.getInstalledApps();
|
||||
$scope.supportConfig = null;
|
||||
|
||||
$scope.translationLinks = {
|
||||
supportViewLink: 'https://docs.cloudron.io/apps/?support_view',
|
||||
forumLink: 'https://forum.cloudron.io/'
|
||||
};
|
||||
|
||||
$scope.feedback = {
|
||||
error: null,
|
||||
result: null,
|
||||
|
||||
@@ -26,12 +26,12 @@
|
||||
<div ng-show="!disks.busy" class="ng-hide">
|
||||
<div class="row" ng-repeat="disk in disks.disks" style="margin-bottom: 20px;">
|
||||
<div class="col-md-12">
|
||||
<h3><span ng-bind-html="'system.diskUsage.mountedAt' | tr:disk"></span> <span class="pull-right small" ng-bind-html="'system.diskUsage.usageInfo' | tr:disk"></span></h3>
|
||||
<h3><span ng-bind-html="'system.diskUsage.mountedAt' | tr:{ filesystem: disk.filesystem, mountpoint: disk.mountpoint }"></span> <span class="pull-right small" ng-bind-html="'system.diskUsage.usageInfo' | tr:{ filesystem: disk.filesystem, mountpoint: disk.mountpoint }"></span></h3>
|
||||
<div class="progress">
|
||||
<div class="progress-bar" ng-repeat="content in disk.contains" style="width: {{ content.usage / disk.size * 100 }}%; background-color: {{ content.color }};" uib-tooltip="{{ content.label + ' ' + (content.usage | prettyDiskSize) }}"></div>
|
||||
</div>
|
||||
<br/>
|
||||
<p>{{ 'system.diskUsage.diskContent' | tr:disk }}:</p>
|
||||
<p>{{ 'system.diskUsage.diskContent' | tr:{ filesystem: disk.filesystem, mountpoint: disk.mountpoint } }}:</p>
|
||||
<ul>
|
||||
<li ng-repeat="content in disk.contains">
|
||||
<span ng-hide="content.app">{{ content.label }} <span class="color-indicator" style="background-color: {{ content.color }};"> </span> <small class="text-muted">{{ content.usage | prettyDiskSize }}</small></span>
|
||||
|
||||
Reference in New Issue
Block a user