mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
Removed more non-community (aka Prem/Premium/License) code
This commit is contained in:
parent
d5665463fe
commit
e3e5929b21
35 changed files with 140 additions and 792 deletions
|
|
@ -14,8 +14,6 @@ module.exports = {
|
||||||
},
|
},
|
||||||
globals: {
|
globals: {
|
||||||
// RainLoop
|
// RainLoop
|
||||||
'RL_COMMUNITY': true,
|
|
||||||
'RL_ES6': true,
|
|
||||||
'__rlah_set': "readonly",
|
'__rlah_set': "readonly",
|
||||||
'__rlah_clear': "readonly",
|
'__rlah_clear': "readonly",
|
||||||
'__rlah_data': "readonly",
|
'__rlah_data': "readonly",
|
||||||
|
|
|
||||||
21
README.md
21
README.md
|
|
@ -77,32 +77,33 @@ Things might work in Edge 18, Firefox 50-62 and Chrome 54-68 due to one polyfill
|
||||||
* Replaced ifvisible.js with simple drop-in replacement
|
* Replaced ifvisible.js with simple drop-in replacement
|
||||||
* Replaced momentToNode with proper HTML5 <time>
|
* Replaced momentToNode with proper HTML5 <time>
|
||||||
* Replaced resize listeners with ResizeObserver
|
* Replaced resize listeners with ResizeObserver
|
||||||
|
* Removed non-community (aka Prem/Premium/License) code
|
||||||
|
|
||||||
|js/* |1.14.0 |native |
|
|js/* |1.14.0 |native |
|
||||||
|----------- |--------: |--------: |
|
|----------- |--------: |--------: |
|
||||||
|admin.js |2.130.942 |1.038.620 |
|
|admin.js |2.130.942 |1.007.370 |
|
||||||
|app.js |4.184.455 |2.685.732 |
|
|app.js |4.184.455 |2.676.306 |
|
||||||
|boot.js | 671.522 | 43.856 |
|
|boot.js | 671.522 | 43.856 |
|
||||||
|libs.js | 647.614 | 316.969 |
|
|libs.js | 647.614 | 316.969 |
|
||||||
|polyfills.js | 325.834 | 0 |
|
|polyfills.js | 325.834 | 0 |
|
||||||
|TOTAL |7.960.367 |4.085.177 |
|
|TOTAL |7.960.367 |4.044.501 |
|
||||||
|
|
||||||
|js/min/* |1.14.0 |native |gzip 1.14 |gzip |brotli |
|
|js/min/* |1.14.0 |native |gzip 1.14 |gzip |brotli |
|
||||||
|--------------- |--------: |--------: |--------: |--------: |--------: |
|
|--------------- |--------: |--------: |--------: |--------: |--------: |
|
||||||
|admin.min.js | 252.147 | 142.134 | 73.657 | 40.994 | 34.975 |
|
|admin.min.js | 252.147 | 138.101 | 73.657 | 40.104 | 34.210 |
|
||||||
|app.min.js | 511.202 | 361.315 |140.462 | 95.185 | 76.480 |
|
|app.min.js | 511.202 | 360.198 |140.462 | 95.043 | 76.240 |
|
||||||
|boot.min.js | 66.007 | 5.575 | 22.567 | 2.341 | 2.001 |
|
|boot.min.js | 66.007 | 5.575 | 22.567 | 2.340 | 2.000 |
|
||||||
|libs.min.js | 572.545 | 300.691 |176.720 | 92.925 | 82.046 |
|
|libs.min.js | 572.545 | 300.691 |176.720 | 92.925 | 82.046 |
|
||||||
|polyfills.min.js | 32.452 | 0 | 11.312 | 0 | 0 |
|
|polyfills.min.js | 32.452 | 0 | 11.312 | 0 | 0 |
|
||||||
|TOTAL |1.434.353 | 809.715 |424.718 |231.445 |195.502 |
|
|TOTAL |1.434.353 | 804.565 |424.718 |230.412 |194.496 |
|
||||||
|
|
||||||
624.638 bytes (193.273 gzip) is not much, but it feels faster.
|
629.788 bytes (194.306 gzip) is not much, but it feels faster.
|
||||||
|
|
||||||
|
|
||||||
|css/* |1.14.0 |native |
|
|css/* |1.14.0 |native |
|
||||||
|-------------- |--------: |--------: |
|
|-------------- |--------: |--------: |
|
||||||
|app.css | 340.334 | 266.586 |
|
|app.css | 340.334 | 266.769 |
|
||||||
|app.min.css | 274.791 | 211.427 |
|
|app.min.css | 274.791 | 211.601 |
|
||||||
|
|
||||||
|
|
||||||
### PHP73 branch
|
### PHP73 branch
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,6 @@ import CapaStore from 'Stores/Admin/Capa';
|
||||||
import DomainStore from 'Stores/Admin/Domain';
|
import DomainStore from 'Stores/Admin/Domain';
|
||||||
import PluginStore from 'Stores/Admin/Plugin';
|
import PluginStore from 'Stores/Admin/Plugin';
|
||||||
import PackageStore from 'Stores/Admin/Package';
|
import PackageStore from 'Stores/Admin/Package';
|
||||||
import CoreStore from 'Stores/Admin/Core';
|
|
||||||
import Remote from 'Remote/Admin/Ajax';
|
import Remote from 'Remote/Admin/Ajax';
|
||||||
|
|
||||||
import { SettingsAdminScreen } from 'Screen/Admin/Settings';
|
import { SettingsAdminScreen } from 'Screen/Admin/Settings';
|
||||||
|
|
@ -96,52 +95,6 @@ class AdminApp extends AbstractApp {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
updateCoreData() {
|
|
||||||
CoreStore.coreUpdating(true);
|
|
||||||
Remote.updateCoreData((result, data) => {
|
|
||||||
CoreStore.coreUpdating(false);
|
|
||||||
CoreStore.coreVersion('');
|
|
||||||
CoreStore.coreRemoteVersion('');
|
|
||||||
CoreStore.coreRemoteRelease('');
|
|
||||||
CoreStore.coreVersionCompare(-2);
|
|
||||||
if (StorageResultType.Success === result && data && data.Result) {
|
|
||||||
CoreStore.coreReal(true);
|
|
||||||
location.reload();
|
|
||||||
} else {
|
|
||||||
CoreStore.coreReal(false);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
reloadCoreData() {
|
|
||||||
CoreStore.coreChecking(true);
|
|
||||||
CoreStore.coreReal(true);
|
|
||||||
Remote.coreData((result, data) => {
|
|
||||||
CoreStore.coreChecking(false);
|
|
||||||
if (StorageResultType.Success === result && data && data.Result) {
|
|
||||||
CoreStore.coreReal(!!data.Result.Real);
|
|
||||||
CoreStore.coreChannel(data.Result.Channel || 'stable');
|
|
||||||
CoreStore.coreType(data.Result.Type || 'stable');
|
|
||||||
CoreStore.coreUpdatable(!!data.Result.Updatable);
|
|
||||||
CoreStore.coreAccess(!!data.Result.Access);
|
|
||||||
CoreStore.coreWarning(!!data.Result.Warning);
|
|
||||||
CoreStore.coreVersion(data.Result.Version || '');
|
|
||||||
CoreStore.coreRemoteVersion(data.Result.RemoteVersion || '');
|
|
||||||
CoreStore.coreRemoteRelease(data.Result.RemoteRelease || '');
|
|
||||||
CoreStore.coreVersionCompare(parseInt(data.Result.VersionCompare, 10) || 0);
|
|
||||||
} else {
|
|
||||||
CoreStore.coreReal(false);
|
|
||||||
CoreStore.coreChannel('stable');
|
|
||||||
CoreStore.coreType('stable');
|
|
||||||
CoreStore.coreWarning(false);
|
|
||||||
CoreStore.coreVersion('');
|
|
||||||
CoreStore.coreRemoteVersion('');
|
|
||||||
CoreStore.coreRemoteRelease('');
|
|
||||||
CoreStore.coreVersionCompare(-2);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
bootend(bootendCallback = null) {
|
bootend(bootendCallback = null) {
|
||||||
if (window.progressJs) {
|
if (window.progressJs) {
|
||||||
progressJs.end();
|
progressJs.end();
|
||||||
|
|
|
||||||
|
|
@ -912,10 +912,6 @@ class AppUser extends AbstractApp {
|
||||||
showScreenPopup(require('View/Popup/TwoFactorConfiguration'), [true]);
|
showScreenPopup(require('View/Popup/TwoFactorConfiguration'), [true]);
|
||||||
}
|
}
|
||||||
|
|
||||||
bootstartWelcomePopup(url) {
|
|
||||||
showScreenPopup(require('View/Popup/WelcomePage'), [url]);
|
|
||||||
}
|
|
||||||
|
|
||||||
bootstartLoginScreen() {
|
bootstartLoginScreen() {
|
||||||
$htmlCL.remove('rl-user-auth');
|
$htmlCL.remove('rl-user-auth');
|
||||||
$htmlCL.add('rl-user-no-auth');
|
$htmlCL.add('rl-user-no-auth');
|
||||||
|
|
@ -1046,10 +1042,6 @@ class AppUser extends AbstractApp {
|
||||||
|
|
||||||
addEventListener('rl.auto-logout', () => this.logout());
|
addEventListener('rl.auto-logout', () => this.logout());
|
||||||
|
|
||||||
if (Settings.settingsGet('WelcomePageUrl')) {
|
|
||||||
setTimeout(() => this.bootstartWelcomePopup(Settings.settingsGet('WelcomePageUrl')), 1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (
|
if (
|
||||||
!!Settings.settingsGet('AccountSignMe') &&
|
!!Settings.settingsGet('AccountSignMe') &&
|
||||||
navigator.registerProtocolHandler &&
|
navigator.registerProtocolHandler &&
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,6 @@ import { KeyState } from 'Common/Enums';
|
||||||
export const $html = jQuery('html');
|
export const $html = jQuery('html');
|
||||||
export const $htmlCL = document.documentElement.classList;
|
export const $htmlCL = document.documentElement.classList;
|
||||||
|
|
||||||
/**
|
|
||||||
* @type {boolean}
|
|
||||||
*/
|
|
||||||
export const community = RL_COMMUNITY;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {?}
|
* @type {?}
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -51,10 +51,6 @@ class UserAjaxUserPromises extends AbstractAjaxPromises {
|
||||||
'Hashes': aHashes
|
'Hashes': aHashes
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
welcomeClose() {
|
|
||||||
return this.postRequest('WelcomeClose');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default new UserAjaxUserPromises();
|
export default new UserAjaxUserPromises();
|
||||||
|
|
|
||||||
|
|
@ -71,20 +71,6 @@ class RemoteAdminAjax extends AbstractAjaxRemote {
|
||||||
this.defaultRequest(fCallback, 'AdminPackagesList');
|
this.defaultRequest(fCallback, 'AdminPackagesList');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param {?Function} fCallback
|
|
||||||
*/
|
|
||||||
coreData(fCallback) {
|
|
||||||
this.defaultRequest(fCallback, 'AdminCoreData');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param {?Function} fCallback
|
|
||||||
*/
|
|
||||||
updateCoreData(fCallback) {
|
|
||||||
this.defaultRequest(fCallback, 'AdminUpdateCoreData', {}, 90000);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {?Function} fCallback
|
* @param {?Function} fCallback
|
||||||
* @param {Object} oPackage
|
* @param {Object} oPackage
|
||||||
|
|
|
||||||
|
|
@ -1,73 +1,11 @@
|
||||||
import ko from 'ko';
|
import ko from 'ko';
|
||||||
|
|
||||||
import { i18n, trigger as translatorTrigger } from 'Common/Translator';
|
import { appSettingsGet } from 'Storage/Settings';
|
||||||
import { appSettingsGet, settingsGet } from 'Storage/Settings';
|
|
||||||
|
|
||||||
import AppStore from 'Stores/Admin/App';
|
|
||||||
import CoreStore from 'Stores/Admin/Core';
|
|
||||||
|
|
||||||
import { getApp } from 'Helper/Apps/Admin';
|
|
||||||
|
|
||||||
class AboutAdminSettings {
|
class AboutAdminSettings {
|
||||||
constructor() {
|
constructor() {
|
||||||
this.version = ko.observable(appSettingsGet('version'));
|
this.version = ko.observable(appSettingsGet('version'));
|
||||||
this.access = ko.observable(!!settingsGet('CoreAccess'));
|
this.coreType = ko.observable('djmaze');
|
||||||
this.errorDesc = ko.observable('');
|
|
||||||
|
|
||||||
this.coreReal = CoreStore.coreReal;
|
|
||||||
this.coreChannel = CoreStore.coreChannel;
|
|
||||||
this.coreType = CoreStore.coreType;
|
|
||||||
this.coreUpdatable = CoreStore.coreUpdatable;
|
|
||||||
this.coreAccess = CoreStore.coreAccess;
|
|
||||||
this.coreChecking = CoreStore.coreChecking;
|
|
||||||
this.coreUpdating = CoreStore.coreUpdating;
|
|
||||||
this.coreWarning = CoreStore.coreWarning;
|
|
||||||
this.coreVersion = CoreStore.coreVersion;
|
|
||||||
this.coreRemoteVersion = CoreStore.coreRemoteVersion;
|
|
||||||
this.coreRemoteRelease = CoreStore.coreRemoteRelease;
|
|
||||||
this.coreVersionCompare = CoreStore.coreVersionCompare;
|
|
||||||
|
|
||||||
this.community = RL_COMMUNITY || AppStore.community();
|
|
||||||
|
|
||||||
this.coreRemoteVersionHtmlDesc = ko.computed(() => {
|
|
||||||
translatorTrigger();
|
|
||||||
return i18n('TAB_ABOUT/HTML_NEW_VERSION', { 'VERSION': this.coreRemoteVersion() });
|
|
||||||
});
|
|
||||||
|
|
||||||
this.statusType = ko.computed(() => {
|
|
||||||
let type = '';
|
|
||||||
const versionToCompare = this.coreVersionCompare(),
|
|
||||||
isChecking = this.coreChecking(),
|
|
||||||
isUpdating = this.coreUpdating(),
|
|
||||||
isReal = this.coreReal();
|
|
||||||
|
|
||||||
if (isChecking) {
|
|
||||||
type = 'checking';
|
|
||||||
} else if (isUpdating) {
|
|
||||||
type = 'updating';
|
|
||||||
} else if (isReal && 0 === versionToCompare) {
|
|
||||||
type = 'up-to-date';
|
|
||||||
} else if (isReal && -1 === versionToCompare) {
|
|
||||||
type = 'available';
|
|
||||||
} else if (!isReal) {
|
|
||||||
type = 'error';
|
|
||||||
this.errorDesc('Cannot access the repository at the moment.');
|
|
||||||
}
|
|
||||||
|
|
||||||
return type;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
onBuild() {
|
|
||||||
if (this.access() && !this.community) {
|
|
||||||
getApp().reloadCoreData();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
updateCoreData() {
|
|
||||||
if (!this.coreUpdating() && !this.community) {
|
|
||||||
getApp().updateCoreData();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,13 @@
|
||||||
import ko from 'ko';
|
import ko from 'ko';
|
||||||
|
|
||||||
import { settingsSaveHelperSimpleFunction } from 'Common/Utils';
|
import { settingsSaveHelperSimpleFunction } from 'Common/Utils';
|
||||||
import { i18n, trigger as translatorTrigger } from 'Common/Translator';
|
|
||||||
|
|
||||||
import Remote from 'Remote/Admin/Ajax';
|
import Remote from 'Remote/Admin/Ajax';
|
||||||
import AppStore from 'Stores/Admin/App';
|
|
||||||
|
|
||||||
import { settingsGet } from 'Storage/Settings';
|
import { settingsGet } from 'Storage/Settings';
|
||||||
|
|
||||||
class BrandingAdminSettings {
|
class BrandingAdminSettings {
|
||||||
constructor() {
|
constructor() {
|
||||||
this.capa = AppStore.prem;
|
|
||||||
|
|
||||||
this.title = ko.observable(settingsGet('Title')).idleTrigger();
|
this.title = ko.observable(settingsGet('Title')).idleTrigger();
|
||||||
this.loadingDesc = ko.observable(settingsGet('LoadingDescription')).idleTrigger();
|
this.loadingDesc = ko.observable(settingsGet('LoadingDescription')).idleTrigger();
|
||||||
this.faviconUrl = ko.observable(settingsGet('FaviconUrl')).idleTrigger();
|
this.faviconUrl = ko.observable(settingsGet('FaviconUrl')).idleTrigger();
|
||||||
|
|
@ -24,18 +20,6 @@ class BrandingAdminSettings {
|
||||||
this.loginDescription = ko.observable(settingsGet('LoginDescription')).idleTrigger();
|
this.loginDescription = ko.observable(settingsGet('LoginDescription')).idleTrigger();
|
||||||
this.loginCss = ko.observable(settingsGet('LoginCss')).idleTrigger();
|
this.loginCss = ko.observable(settingsGet('LoginCss')).idleTrigger();
|
||||||
this.userCss = ko.observable(settingsGet('UserCss')).idleTrigger();
|
this.userCss = ko.observable(settingsGet('UserCss')).idleTrigger();
|
||||||
this.welcomePageUrl = ko.observable(settingsGet('WelcomePageUrl')).idleTrigger();
|
|
||||||
this.welcomePageDisplay = ko.observable(settingsGet('WelcomePageDisplay')).idleTrigger();
|
|
||||||
this.welcomePageDisplay.options = ko.computed(() => {
|
|
||||||
translatorTrigger();
|
|
||||||
return [
|
|
||||||
{ optValue: 'none', optText: i18n('TAB_BRANDING/OPTION_WELCOME_PAGE_DISPLAY_NONE') },
|
|
||||||
{ optValue: 'once', optText: i18n('TAB_BRANDING/OPTION_WELCOME_PAGE_DISPLAY_ONCE') },
|
|
||||||
{ optValue: 'always', optText: i18n('TAB_BRANDING/OPTION_WELCOME_PAGE_DISPLAY_ALWAYS') }
|
|
||||||
];
|
|
||||||
});
|
|
||||||
|
|
||||||
this.community = RL_COMMUNITY || AppStore.community();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
onBuild() {
|
onBuild() {
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@ import { getNotification } from 'Common/Translator';
|
||||||
import { settingsGet } from 'Storage/Settings';
|
import { settingsGet } from 'Storage/Settings';
|
||||||
import { showScreenPopup } from 'Knoin/Knoin';
|
import { showScreenPopup } from 'Knoin/Knoin';
|
||||||
|
|
||||||
import AppStore from 'Stores/Admin/App';
|
|
||||||
import PluginStore from 'Stores/Admin/Plugin';
|
import PluginStore from 'Stores/Admin/Plugin';
|
||||||
|
|
||||||
import Remote from 'Remote/Admin/Ajax';
|
import Remote from 'Remote/Admin/Ajax';
|
||||||
|
|
@ -20,8 +19,6 @@ class PluginsAdminSettings {
|
||||||
this.plugins = PluginStore.plugins;
|
this.plugins = PluginStore.plugins;
|
||||||
this.pluginsError = PluginStore.plugins.error;
|
this.pluginsError = PluginStore.plugins.error;
|
||||||
|
|
||||||
this.community = RL_COMMUNITY || AppStore.community();
|
|
||||||
|
|
||||||
this.visibility = ko.computed(() => (PluginStore.plugins.loading() ? 'visible' : 'hidden'));
|
this.visibility = ko.computed(() => (PluginStore.plugins.loading() ? 'visible' : 'hidden'));
|
||||||
|
|
||||||
this.onPluginLoadRequest = this.onPluginLoadRequest.bind(this);
|
this.onPluginLoadRequest = this.onPluginLoadRequest.bind(this);
|
||||||
|
|
|
||||||
|
|
@ -6,18 +6,12 @@ class AbstractAppStore {
|
||||||
this.allowLanguagesOnSettings = ko.observable(true);
|
this.allowLanguagesOnSettings = ko.observable(true);
|
||||||
this.allowLanguagesOnLogin = ko.observable(true);
|
this.allowLanguagesOnLogin = ko.observable(true);
|
||||||
this.newMoveToFolder = ko.observable(true);
|
this.newMoveToFolder = ko.observable(true);
|
||||||
|
|
||||||
this.prem = ko.observable(false);
|
|
||||||
this.community = ko.observable(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
populate() {
|
populate() {
|
||||||
this.allowLanguagesOnLogin(!!Settings.settingsGet('AllowLanguagesOnLogin'));
|
this.allowLanguagesOnLogin(!!Settings.settingsGet('AllowLanguagesOnLogin'));
|
||||||
this.allowLanguagesOnSettings(!!Settings.settingsGet('AllowLanguagesOnSettings'));
|
this.allowLanguagesOnSettings(!!Settings.settingsGet('AllowLanguagesOnSettings'));
|
||||||
this.newMoveToFolder(!!Settings.settingsGet('NewMoveToFolder'));
|
this.newMoveToFolder(!!Settings.settingsGet('NewMoveToFolder'));
|
||||||
|
|
||||||
this.prem(!!Settings.settingsGet('PremType'));
|
|
||||||
this.community(!!Settings.settingsGet('Community'));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
import ko from 'ko';
|
|
||||||
|
|
||||||
class CoreAdminStore {
|
|
||||||
constructor() {
|
|
||||||
this.coreReal = ko.observable(true);
|
|
||||||
this.coreChannel = ko.observable('stable');
|
|
||||||
this.coreType = ko.observable('stable');
|
|
||||||
this.coreUpdatable = ko.observable(true);
|
|
||||||
this.coreAccess = ko.observable(true);
|
|
||||||
this.coreWarning = ko.observable(false);
|
|
||||||
this.coreChecking = ko.observable(false).extend({ throttle: 100 });
|
|
||||||
this.coreUpdating = ko.observable(false).extend({ throttle: 100 });
|
|
||||||
this.coreVersion = ko.observable('');
|
|
||||||
this.coreRemoteVersion = ko.observable('');
|
|
||||||
this.coreRemoteRelease = ko.observable('');
|
|
||||||
this.coreVersionCompare = ko.observable(-2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default new CoreAdminStore();
|
|
||||||
|
|
@ -22,12 +22,8 @@ class PaneSettingsAdminView extends AbstractViewNext {
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
this.adminDomain = ko.observable(Settings.settingsGet('AdminDomain'));
|
|
||||||
this.version = ko.observable(Settings.appSettingsGet('version'));
|
this.version = ko.observable(Settings.appSettingsGet('version'));
|
||||||
|
|
||||||
this.capa = !!Settings.settingsGet('PremType');
|
|
||||||
this.community = RL_COMMUNITY;
|
|
||||||
|
|
||||||
this.adminManLoading = ko.computed(
|
this.adminManLoading = ko.computed(
|
||||||
() =>
|
() =>
|
||||||
'000' !==
|
'000' !==
|
||||||
|
|
|
||||||
|
|
@ -1,38 +0,0 @@
|
||||||
import ko from 'ko';
|
|
||||||
|
|
||||||
import Promises from 'Promises/User/Ajax';
|
|
||||||
|
|
||||||
import { popup } from 'Knoin/Knoin';
|
|
||||||
import { AbstractViewNext } from 'Knoin/AbstractViewNext';
|
|
||||||
|
|
||||||
@popup({
|
|
||||||
name: 'View/Popup/WelcomePage',
|
|
||||||
templateID: 'PopupsWelcomePage'
|
|
||||||
})
|
|
||||||
class WelcomePagePopupView extends AbstractViewNext {
|
|
||||||
constructor() {
|
|
||||||
super();
|
|
||||||
|
|
||||||
this.welcomePageURL = ko.observable('');
|
|
||||||
}
|
|
||||||
|
|
||||||
clearPopup() {
|
|
||||||
this.welcomePageURL('');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param {string} sUrl
|
|
||||||
* @returns {void}
|
|
||||||
*/
|
|
||||||
onShow(sUrl) {
|
|
||||||
this.clearPopup();
|
|
||||||
|
|
||||||
this.welcomePageURL(sUrl);
|
|
||||||
}
|
|
||||||
|
|
||||||
onHide() {
|
|
||||||
Promises.welcomeClose();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export { WelcomePagePopupView, WelcomePagePopupView as default };
|
|
||||||
|
|
@ -1202,7 +1202,6 @@ class Actions
|
||||||
'themes' => $this->GetThemes($bMobile, false),
|
'themes' => $this->GetThemes($bMobile, false),
|
||||||
'languages' => $this->GetLanguages(false),
|
'languages' => $this->GetLanguages(false),
|
||||||
'languagesAdmin' => $this->GetLanguages(true),
|
'languagesAdmin' => $this->GetLanguages(true),
|
||||||
'appVersionType' => 'community',
|
|
||||||
'attachmentsActions' => $aAttachmentsActions
|
'attachmentsActions' => $aAttachmentsActions
|
||||||
), $bAdmin ? array(
|
), $bAdmin ? array(
|
||||||
'adminHostUse' => '' !== $oConfig->Get('security', 'admin_panel_host', ''),
|
'adminHostUse' => '' !== $oConfig->Get('security', 'admin_panel_host', ''),
|
||||||
|
|
@ -1247,8 +1246,6 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack
|
||||||
'UserLogoTitle' => '',
|
'UserLogoTitle' => '',
|
||||||
'UserLogoMessage' => '',
|
'UserLogoMessage' => '',
|
||||||
'UserCss' => '',
|
'UserCss' => '',
|
||||||
'WelcomePageUrl' => '',
|
|
||||||
'WelcomePageDisplay' => 'none',
|
|
||||||
'IncludeCss' => '',
|
'IncludeCss' => '',
|
||||||
'IncludeBackground' => '',
|
'IncludeBackground' => '',
|
||||||
'LoginDefaultDomain' => $oConfig->Get('login', 'default_domain', ''),
|
'LoginDefaultDomain' => $oConfig->Get('login', 'default_domain', ''),
|
||||||
|
|
@ -1259,15 +1256,11 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack
|
||||||
'SieveAllowFileintoInbox' => (bool) $oConfig->Get('labs', 'sieve_allow_fileinto_inbox', false),
|
'SieveAllowFileintoInbox' => (bool) $oConfig->Get('labs', 'sieve_allow_fileinto_inbox', false),
|
||||||
'ContactsIsAllowed' => false,
|
'ContactsIsAllowed' => false,
|
||||||
'RequireTwoFactor' => false,
|
'RequireTwoFactor' => false,
|
||||||
'Community' => true,
|
|
||||||
'PremType' => false,
|
|
||||||
'Admin' => array(),
|
'Admin' => array(),
|
||||||
'Capa' => array(),
|
'Capa' => array(),
|
||||||
'Plugins' => array(),
|
'Plugins' => array(),
|
||||||
'System' => $this->AppDataSystem($bAdmin, $bMobile, $bMobileDevice)
|
'System' => $this->AppDataSystem($bAdmin, $bMobile, $bMobileDevice)
|
||||||
/*
|
/*
|
||||||
'Community' => false,
|
|
||||||
'PremType' => true,
|
|
||||||
'LoginLogo' => $oConfig->Get('branding', 'login_logo', ''),
|
'LoginLogo' => $oConfig->Get('branding', 'login_logo', ''),
|
||||||
'LoginBackground' => $oConfig->Get('branding', 'login_background', ''),
|
'LoginBackground' => $oConfig->Get('branding', 'login_background', ''),
|
||||||
'LoginCss' => $oConfig->Get('branding', 'login_css', ''),
|
'LoginCss' => $oConfig->Get('branding', 'login_css', ''),
|
||||||
|
|
@ -1277,8 +1270,6 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack
|
||||||
'UserLogoMessage' => $oConfig->Get('branding', 'user_logo_message', ''),
|
'UserLogoMessage' => $oConfig->Get('branding', 'user_logo_message', ''),
|
||||||
'UserIframeMessage' => $oConfig->Get('branding', 'user_iframe_message', ''),
|
'UserIframeMessage' => $oConfig->Get('branding', 'user_iframe_message', ''),
|
||||||
'UserCss' => $oConfig->Get('branding', 'user_css', ''),
|
'UserCss' => $oConfig->Get('branding', 'user_css', ''),
|
||||||
'WelcomePageUrl' => $oConfig->Get('branding', 'welcome_page_url', ''),
|
|
||||||
'WelcomePageDisplay' => \strtolower($oConfig->Get('branding', 'welcome_page_display', 'none')),
|
|
||||||
*/
|
*/
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -1346,26 +1337,6 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$oSettings = $this->SettingsProvider()->Load($oAccount);
|
|
||||||
|
|
||||||
if (!$oAccount->IsAdditionalAccount() && !empty($aResult['WelcomePageUrl']) &&
|
|
||||||
('once' === $aResult['WelcomePageDisplay'] || 'always' === $aResult['WelcomePageDisplay']))
|
|
||||||
{
|
|
||||||
if ('once' === $aResult['WelcomePageDisplay'])
|
|
||||||
{
|
|
||||||
if ($aResult['WelcomePageUrl'] === $oSettings->GetConf('LastWelcomePage', ''))
|
|
||||||
{
|
|
||||||
$aResult['WelcomePageUrl'] = '';
|
|
||||||
$aResult['WelcomePageDisplay'] = '';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$aResult['WelcomePageUrl'] = '';
|
|
||||||
$aResult['WelcomePageDisplay'] = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($aResult['StartupUrl']))
|
if (!empty($aResult['StartupUrl']))
|
||||||
{
|
{
|
||||||
$aResult['StartupUrl'] = $this->compileLogParams($aResult['StartupUrl'], $oAccount, true);
|
$aResult['StartupUrl'] = $this->compileLogParams($aResult['StartupUrl'], $oAccount, true);
|
||||||
|
|
@ -1384,9 +1355,6 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack
|
||||||
$aResult['DevEmail'] = $oConfig->Get('labs', 'dev_email', '');
|
$aResult['DevEmail'] = $oConfig->Get('labs', 'dev_email', '');
|
||||||
$aResult['DevPassword'] = $oConfig->Get('labs', 'dev_password', '');
|
$aResult['DevPassword'] = $oConfig->Get('labs', 'dev_password', '');
|
||||||
|
|
||||||
$aResult['WelcomePageUrl'] = '';
|
|
||||||
$aResult['WelcomePageDisplay'] = '';
|
|
||||||
|
|
||||||
$aResult['StartupUrl'] = '';
|
$aResult['StartupUrl'] = '';
|
||||||
|
|
||||||
if (empty($aResult['AdditionalLoginError']))
|
if (empty($aResult['AdditionalLoginError']))
|
||||||
|
|
@ -1437,11 +1405,7 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack
|
||||||
$aResult['ContactsPdoUser'] = (string) $oConfig->Get('contacts', 'pdo_user', '');
|
$aResult['ContactsPdoUser'] = (string) $oConfig->Get('contacts', 'pdo_user', '');
|
||||||
$aResult['ContactsPdoPassword'] = (string) APP_DUMMY;
|
$aResult['ContactsPdoPassword'] = (string) APP_DUMMY;
|
||||||
|
|
||||||
$aResult['SubscriptionEnabled'] = (bool) \MailSo\Base\Utils::ValidateDomain($aResult['AdminDomain'], true);
|
|
||||||
// || \MailSo\Base\Utils::ValidateIP($aResult['AdminDomain']);
|
|
||||||
|
|
||||||
$aResult['WeakPassword'] = (bool) $oConfig->ValidatePassword('12345');
|
$aResult['WeakPassword'] = (bool) $oConfig->ValidatePassword('12345');
|
||||||
$aResult['CoreAccess'] = (bool) $this->rainLoopCoreAccess();
|
|
||||||
|
|
||||||
$aResult['PhpUploadSizes'] = array(
|
$aResult['PhpUploadSizes'] = array(
|
||||||
'upload_max_filesize' => \ini_get('upload_max_filesize'),
|
'upload_max_filesize' => \ini_get('upload_max_filesize'),
|
||||||
|
|
@ -3130,8 +3094,7 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack
|
||||||
|
|
||||||
if ($this && $this->HasOneOfActionParams(array(
|
if ($this && $this->HasOneOfActionParams(array(
|
||||||
'LoginLogo', 'LoginBackground', 'LoginDescription', 'LoginCss',
|
'LoginLogo', 'LoginBackground', 'LoginDescription', 'LoginCss',
|
||||||
'UserLogo', 'UserLogoTitle', 'UserLogoMessage', 'UserIframeMessage', 'UserCss',
|
'UserLogo', 'UserLogoTitle', 'UserLogoMessage', 'UserIframeMessage', 'UserCss'
|
||||||
'WelcomePageUrl', 'WelcomePageDisplay'
|
|
||||||
)))
|
)))
|
||||||
{
|
{
|
||||||
$this->setConfigFromParams($oConfig, 'LoginLogo', 'branding', 'login_logo', 'string');
|
$this->setConfigFromParams($oConfig, 'LoginLogo', 'branding', 'login_logo', 'string');
|
||||||
|
|
@ -3144,9 +3107,6 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack
|
||||||
$this->setConfigFromParams($oConfig, 'UserLogoMessage', 'branding', 'user_logo_message', 'string');
|
$this->setConfigFromParams($oConfig, 'UserLogoMessage', 'branding', 'user_logo_message', 'string');
|
||||||
$this->setConfigFromParams($oConfig, 'UserIframeMessage', 'branding', 'user_iframe_message', 'string');
|
$this->setConfigFromParams($oConfig, 'UserIframeMessage', 'branding', 'user_iframe_message', 'string');
|
||||||
$this->setConfigFromParams($oConfig, 'UserCss', 'branding', 'user_css', 'string');
|
$this->setConfigFromParams($oConfig, 'UserCss', 'branding', 'user_css', 'string');
|
||||||
|
|
||||||
$this->setConfigFromParams($oConfig, 'WelcomePageUrl', 'branding', 'welcome_page_url', 'string');
|
|
||||||
$this->setConfigFromParams($oConfig, 'WelcomePageDisplay', 'branding', 'welcome_page_display', 'string');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->DefaultResponse(__FUNCTION__, $oConfig->Save());
|
return $this->DefaultResponse(__FUNCTION__, $oConfig->Save());
|
||||||
|
|
@ -3481,14 +3441,6 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function rainLoopCoreAccess() : bool
|
|
||||||
{
|
|
||||||
$sCoreAccess = \strtolower(\preg_replace('/[\s,;]+/', ' ',
|
|
||||||
$this->Config()->Get('security', 'core_install_access_domain', '')));
|
|
||||||
|
|
||||||
return '' === $sCoreAccess || '*' === $sCoreAccess || APP_SITE === $sCoreAccess;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getRepositoryDataByUrl(string $sRepo, bool &$bReal = false) : array
|
private function getRepositoryDataByUrl(string $sRepo, bool &$bReal = false) : array
|
||||||
{
|
{
|
||||||
$bReal = false;
|
$bReal = false;
|
||||||
|
|
@ -3587,56 +3539,6 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack
|
||||||
return $sChannel;
|
return $sChannel;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getCoreData(bool &$bReal) : ?array
|
|
||||||
{
|
|
||||||
$bReal = false;
|
|
||||||
|
|
||||||
$sChannel = $this->getCoreChannel();
|
|
||||||
|
|
||||||
$sRepo = \str_replace('{{channel}}', $sChannel, APP_REPO_CORE_FILE);
|
|
||||||
|
|
||||||
$oHttp = \MailSo\Base\Http::SingletonInstance();
|
|
||||||
|
|
||||||
$sCacheKey = KeyPathHelper::RepositoryCacheCore($sRepo);
|
|
||||||
$sRep = $this->Cacher()->Get($sCacheKey);
|
|
||||||
if ('' !== $sRep)
|
|
||||||
{
|
|
||||||
$iRepTime = $this->Cacher()->GetTimer($sCacheKey);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ('' === $sRep || 0 === $iRepTime || \time() - 3600 > $iRepTime)
|
|
||||||
{
|
|
||||||
$iCode = 0;
|
|
||||||
$sContentType = '';
|
|
||||||
|
|
||||||
$sRep = '' !== $sRepo ? $oHttp->GetUrlAsString($sRepo, 'RainLoop', $sContentType, $iCode, $this->Logger(), 10,
|
|
||||||
$this->Config()->Get('labs', 'curl_proxy', ''), $this->Config()->Get('labs', 'curl_proxy_auth', '')) : false;
|
|
||||||
|
|
||||||
if (false !== $sRep)
|
|
||||||
{
|
|
||||||
$aRep = \json_decode($sRep, true, 10);
|
|
||||||
$bReal = \is_array($aRep) && 0 < \count($aRep) && isset($aRep['id']) && 'rainloop' === $aRep['id'];
|
|
||||||
|
|
||||||
if ($bReal)
|
|
||||||
{
|
|
||||||
$this->Cacher()->Set($sCacheKey, $sRep);
|
|
||||||
$this->Cacher()->SetTimer($sCacheKey);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$this->Logger()->Write('Cannot read remote repository file: '.$sRepo, \MailSo\Log\Enumerations\Type::ERROR, 'INSTALLER');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ('' !== $sRep)
|
|
||||||
{
|
|
||||||
$aRep = \json_decode($sRep, true, 10);
|
|
||||||
$bReal = \is_array($aRep) && 0 < \count($aRep) && isset($aRep['id']) && 'rainloop' === $aRep['id'];
|
|
||||||
}
|
|
||||||
|
|
||||||
return $bReal ? $aRep : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getRepositoryData(bool &$bReal, bool &$bRainLoopUpdatable) : array
|
private function getRepositoryData(bool &$bReal, bool &$bRainLoopUpdatable) : array
|
||||||
{
|
{
|
||||||
$bRainLoopUpdatable = $this->rainLoopUpdatable();
|
$bRainLoopUpdatable = $this->rainLoopUpdatable();
|
||||||
|
|
@ -3713,59 +3615,6 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function DoAdminCoreData() : array
|
|
||||||
{
|
|
||||||
$this->IsAdminLoggined();
|
|
||||||
|
|
||||||
$bReal = false;
|
|
||||||
$aData = array();
|
|
||||||
|
|
||||||
$bRainLoopUpdatable = $this->rainLoopUpdatable();
|
|
||||||
$bRainLoopAccess = $this->rainLoopCoreAccess();
|
|
||||||
|
|
||||||
if ($bRainLoopAccess)
|
|
||||||
{
|
|
||||||
$aData = $this->getCoreData($bReal);
|
|
||||||
}
|
|
||||||
|
|
||||||
$sVersion = empty($aData['version']) ? '' : $aData['version'];
|
|
||||||
$sType = empty($aData['channel']) ? 'stable' : $aData['channel'];
|
|
||||||
|
|
||||||
$sWarnings = empty($aData['warnings']) ? '' : $aData['warnings'];
|
|
||||||
$aWarnings = $sWarnings ? explode('|', $sWarnings) : array();
|
|
||||||
|
|
||||||
$sCurrentVersion = APP_VERSION;
|
|
||||||
|
|
||||||
$bShowWarning = false;
|
|
||||||
if ($sCurrentVersion !== APP_DEV_VERSION)
|
|
||||||
{
|
|
||||||
foreach ($aWarnings as $sWarningVersion)
|
|
||||||
{
|
|
||||||
$sWarningVersion = \trim($sWarningVersion);
|
|
||||||
|
|
||||||
if (\version_compare($sCurrentVersion, $sWarningVersion, '<') &&
|
|
||||||
\version_compare($sVersion, $sWarningVersion, '>='))
|
|
||||||
{
|
|
||||||
$bShowWarning = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->DefaultResponse(__FUNCTION__, array(
|
|
||||||
'Real' => $bReal,
|
|
||||||
'Access' => $bRainLoopAccess,
|
|
||||||
'Updatable' => $bRainLoopUpdatable,
|
|
||||||
'Warning' => $bShowWarning,
|
|
||||||
'Channel' => $this->getCoreChannel(),
|
|
||||||
'Type' => $sType,
|
|
||||||
'Version' => $sCurrentVersion,
|
|
||||||
'RemoteVersion' => $sVersion,
|
|
||||||
'RemoteRelease' => empty($aData['release']) ? '' : $aData['release'],
|
|
||||||
'VersionCompare' => \version_compare($sCurrentVersion, $sVersion)
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function DoAdminPackageDelete() : array
|
public function DoAdminPackageDelete() : array
|
||||||
{
|
{
|
||||||
$this->IsAdminLoggined();
|
$this->IsAdminLoggined();
|
||||||
|
|
@ -4168,22 +4017,6 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack
|
||||||
return $this->DefaultResponse(__FUNCTION__, 'Pong');
|
return $this->DefaultResponse(__FUNCTION__, 'Pong');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function DoWelcomeClose() : array
|
|
||||||
{
|
|
||||||
$oAccount = $this->getAccountFromToken();
|
|
||||||
if ($oAccount && !$oAccount->IsAdditionalAccount())
|
|
||||||
{
|
|
||||||
$oSettings = $this->SettingsProvider()->Load($oAccount);
|
|
||||||
$oSettings->SetConf('LastWelcomePage',
|
|
||||||
$this->Config()->Get('branding', 'welcome_page_url', ''));
|
|
||||||
|
|
||||||
return $this->DefaultResponse(__FUNCTION__,
|
|
||||||
$this->SettingsProvider()->Save($oAccount, $oSettings));
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->FalseResponse(__FUNCTION__);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function DoVersion() : array
|
public function DoVersion() : array
|
||||||
{
|
{
|
||||||
return $this->DefaultResponse(__FUNCTION__,
|
return $this->DefaultResponse(__FUNCTION__,
|
||||||
|
|
@ -8122,8 +7955,7 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack
|
||||||
|
|
||||||
public function StaticPath(string $sPath) : string
|
public function StaticPath(string $sPath) : string
|
||||||
{
|
{
|
||||||
$sResult = Utils::WebStaticPath().$sPath;
|
return Utils::WebStaticPath().$sPath;
|
||||||
return $sResult.(false === \strpos($sResult, '?') ? '?' : '&').'community';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -147,10 +147,7 @@ class Application extends \RainLoop\Config\AbstractConfig
|
||||||
'user_logo' => array(''),
|
'user_logo' => array(''),
|
||||||
'user_logo_title' => array(''),
|
'user_logo_title' => array(''),
|
||||||
'user_logo_message' => array(''),
|
'user_logo_message' => array(''),
|
||||||
'user_iframe_message' => array(''),
|
'user_iframe_message' => array('')
|
||||||
|
|
||||||
'welcome_page_url' => array(''),
|
|
||||||
'welcome_page_display' => array('none')
|
|
||||||
),
|
),
|
||||||
|
|
||||||
'contacts' => array(
|
'contacts' => array(
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@ en:
|
||||||
LABEL_PASSWORD: "Password"
|
LABEL_PASSWORD: "Password"
|
||||||
BUTTON_LOGIN: "Log into the admin panel"
|
BUTTON_LOGIN: "Log into the admin panel"
|
||||||
TOP_PANEL:
|
TOP_PANEL:
|
||||||
LABEL_PREMIUM: "Premium"
|
|
||||||
LABEL_ADMIN_PANEL: "Admin Panel"
|
LABEL_ADMIN_PANEL: "Admin Panel"
|
||||||
TABS_LABELS:
|
TABS_LABELS:
|
||||||
LABEL_GENERAL_NAME: "General"
|
LABEL_GENERAL_NAME: "General"
|
||||||
|
|
@ -64,14 +63,6 @@ en:
|
||||||
LABEL_USER_LOGO_TITLE: "Logo Title"
|
LABEL_USER_LOGO_TITLE: "Logo Title"
|
||||||
LABEL_USER_LOGO_MESSAGE: "Logo (Message View)"
|
LABEL_USER_LOGO_MESSAGE: "Logo (Message View)"
|
||||||
LABEL_USER_CUSTOM_CSS: "Custom CSS"
|
LABEL_USER_CUSTOM_CSS: "Custom CSS"
|
||||||
LEGEND_WELCOME_PAGE: "Welcome page"
|
|
||||||
LABEL_WELCOME_PAGE_TITLE: "Title"
|
|
||||||
LABEL_WELCOME_PAGE_URL: "URL"
|
|
||||||
LABEL_WELCOME_PAGE_DISPLAY: "Display"
|
|
||||||
OPTION_WELCOME_PAGE_DISPLAY_NONE: "None"
|
|
||||||
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "Once"
|
|
||||||
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Always"
|
|
||||||
HTML_ALERT_PREMIUM: "This functionality is available for <strong><a href=\"#/licensing\">Premium</a></strong> subscribers."
|
|
||||||
TAB_CONTACTS:
|
TAB_CONTACTS:
|
||||||
LEGEND_CONTACTS: "Contacts"
|
LEGEND_CONTACTS: "Contacts"
|
||||||
LEGEND_STORAGE: "Storage (PDO)"
|
LEGEND_STORAGE: "Storage (PDO)"
|
||||||
|
|
@ -167,14 +158,6 @@ en:
|
||||||
LEGEND_ABOUT: "About"
|
LEGEND_ABOUT: "About"
|
||||||
LABEL_TAG_HINT: "Simple, modern & fast web-based email client"
|
LABEL_TAG_HINT: "Simple, modern & fast web-based email client"
|
||||||
LABEL_ALL_RIGHTS_RESERVED: "All Rights Reserved."
|
LABEL_ALL_RIGHTS_RESERVED: "All Rights Reserved."
|
||||||
HINT_READ_CHANGE_LOG: "Please read the change log before updating."
|
|
||||||
HINT_IS_UP_TO_DATE: "RainLoop is up to date."
|
|
||||||
HTML_NEW_VERSION: "New <b>%VERSION%</b> version is available."
|
|
||||||
LABEL_UPDATING: "Updating"
|
|
||||||
LABEL_CHECKING: "Checking for updates"
|
|
||||||
BUTTON_UPDATE: "Update"
|
|
||||||
BUTTON_DOWNLOAD: "Download"
|
|
||||||
BUTTON_CHANGELOG: "Changelog"
|
|
||||||
POPUPS_ACTIVATE:
|
POPUPS_ACTIVATE:
|
||||||
TITLE_ACTIVATE: "Activate Subscription Key?"
|
TITLE_ACTIVATE: "Activate Subscription Key?"
|
||||||
TITLE_ACTIVATION: "Activation..."
|
TITLE_ACTIVATION: "Activation..."
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@ de_DE:
|
||||||
LABEL_PASSWORD: "Passwort"
|
LABEL_PASSWORD: "Passwort"
|
||||||
BUTTON_LOGIN: "Im Adminpanel anmelden"
|
BUTTON_LOGIN: "Im Adminpanel anmelden"
|
||||||
TOP_PANEL:
|
TOP_PANEL:
|
||||||
LABEL_PREMIUM: "Premium"
|
|
||||||
LABEL_ADMIN_PANEL: "Adminpanel"
|
LABEL_ADMIN_PANEL: "Adminpanel"
|
||||||
TABS_LABELS:
|
TABS_LABELS:
|
||||||
LABEL_GENERAL_NAME: "Allgemein"
|
LABEL_GENERAL_NAME: "Allgemein"
|
||||||
|
|
@ -62,14 +61,6 @@ de_DE:
|
||||||
LABEL_USER_LOGO_TITLE: "Logo Titel"
|
LABEL_USER_LOGO_TITLE: "Logo Titel"
|
||||||
LABEL_USER_LOGO_MESSAGE: "Logo (Nachrichten-Ansicht)"
|
LABEL_USER_LOGO_MESSAGE: "Logo (Nachrichten-Ansicht)"
|
||||||
LABEL_USER_CUSTOM_CSS: "Benutzerdefiniertes CSS"
|
LABEL_USER_CUSTOM_CSS: "Benutzerdefiniertes CSS"
|
||||||
LEGEND_WELCOME_PAGE: "Willkommensseite"
|
|
||||||
LABEL_WELCOME_PAGE_TITLE: "Titel"
|
|
||||||
LABEL_WELCOME_PAGE_URL: "URL"
|
|
||||||
LABEL_WELCOME_PAGE_DISPLAY: "Anzeigen"
|
|
||||||
OPTION_WELCOME_PAGE_DISPLAY_NONE: "Nie"
|
|
||||||
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "Einmal"
|
|
||||||
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Immer"
|
|
||||||
HTML_ALERT_PREMIUM: "Diese Funktionalität ist für <strong><a href=\"#/licensing\">Premium</a></strong>-Abonnenten verfügbar."
|
|
||||||
TAB_CONTACTS:
|
TAB_CONTACTS:
|
||||||
LEGEND_CONTACTS: "Kontakte"
|
LEGEND_CONTACTS: "Kontakte"
|
||||||
LEGEND_STORAGE: "Speicher (PDO)"
|
LEGEND_STORAGE: "Speicher (PDO)"
|
||||||
|
|
@ -164,14 +155,6 @@ de_DE:
|
||||||
LEGEND_ABOUT: "Über"
|
LEGEND_ABOUT: "Über"
|
||||||
LABEL_TAG_HINT: "Einfacher, moderner und schneller webbasierter E-Mail-Client"
|
LABEL_TAG_HINT: "Einfacher, moderner und schneller webbasierter E-Mail-Client"
|
||||||
LABEL_ALL_RIGHTS_RESERVED: "Alle Rechte vorbehalten."
|
LABEL_ALL_RIGHTS_RESERVED: "Alle Rechte vorbehalten."
|
||||||
HINT_READ_CHANGE_LOG: "Bitte Lesen Sie das Änderungsprotokoll vor dem Update."
|
|
||||||
HINT_IS_UP_TO_DATE: "RainLoop ist auf dem neusten Stand."
|
|
||||||
HTML_NEW_VERSION: "Neue Version <b>%VERSION%</b> verfügbar."
|
|
||||||
LABEL_UPDATING: "Aktualisiere"
|
|
||||||
LABEL_CHECKING: "Prüfe auf Aktualisierungen"
|
|
||||||
BUTTON_UPDATE: "Aktualisieren"
|
|
||||||
BUTTON_DOWNLOAD: "Herunterladen"
|
|
||||||
BUTTON_CHANGELOG: "Änderungsprotokoll"
|
|
||||||
POPUPS_ACTIVATE:
|
POPUPS_ACTIVATE:
|
||||||
TITLE_ACTIVATE: "Subscription-Schlüssel aktivieren?"
|
TITLE_ACTIVATE: "Subscription-Schlüssel aktivieren?"
|
||||||
TITLE_ACTIVATION: "Aktiviere..."
|
TITLE_ACTIVATION: "Aktiviere..."
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@ en_US:
|
||||||
LABEL_PASSWORD: "Password"
|
LABEL_PASSWORD: "Password"
|
||||||
BUTTON_LOGIN: "Log into the admin panel"
|
BUTTON_LOGIN: "Log into the admin panel"
|
||||||
TOP_PANEL:
|
TOP_PANEL:
|
||||||
LABEL_PREMIUM: "Premium"
|
|
||||||
LABEL_ADMIN_PANEL: "Admin Panel"
|
LABEL_ADMIN_PANEL: "Admin Panel"
|
||||||
TABS_LABELS:
|
TABS_LABELS:
|
||||||
LABEL_GENERAL_NAME: "General"
|
LABEL_GENERAL_NAME: "General"
|
||||||
|
|
@ -62,14 +61,6 @@ en_US:
|
||||||
LABEL_USER_LOGO_TITLE: "Logo Title"
|
LABEL_USER_LOGO_TITLE: "Logo Title"
|
||||||
LABEL_USER_LOGO_MESSAGE: "Logo (Message View)"
|
LABEL_USER_LOGO_MESSAGE: "Logo (Message View)"
|
||||||
LABEL_USER_CUSTOM_CSS: "Custom CSS"
|
LABEL_USER_CUSTOM_CSS: "Custom CSS"
|
||||||
LEGEND_WELCOME_PAGE: "Welcome page"
|
|
||||||
LABEL_WELCOME_PAGE_TITLE: "Title"
|
|
||||||
LABEL_WELCOME_PAGE_URL: "URL"
|
|
||||||
LABEL_WELCOME_PAGE_DISPLAY: "Display"
|
|
||||||
OPTION_WELCOME_PAGE_DISPLAY_NONE: "None"
|
|
||||||
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "Once"
|
|
||||||
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Always"
|
|
||||||
HTML_ALERT_PREMIUM: "This functionality is available for <strong><a href=\"#/licensing\">Premium</a></strong> subscribers."
|
|
||||||
TAB_CONTACTS:
|
TAB_CONTACTS:
|
||||||
LEGEND_CONTACTS: "Contacts"
|
LEGEND_CONTACTS: "Contacts"
|
||||||
LEGEND_STORAGE: "Storage (PDO)"
|
LEGEND_STORAGE: "Storage (PDO)"
|
||||||
|
|
@ -164,14 +155,6 @@ en_US:
|
||||||
LEGEND_ABOUT: "About"
|
LEGEND_ABOUT: "About"
|
||||||
LABEL_TAG_HINT: "Simple, modern & fast web-based email client"
|
LABEL_TAG_HINT: "Simple, modern & fast web-based email client"
|
||||||
LABEL_ALL_RIGHTS_RESERVED: "All Rights Reserved."
|
LABEL_ALL_RIGHTS_RESERVED: "All Rights Reserved."
|
||||||
HINT_READ_CHANGE_LOG: "Please read the change log before updating."
|
|
||||||
HINT_IS_UP_TO_DATE: "RainLoop is up to date."
|
|
||||||
HTML_NEW_VERSION: "New <b>%VERSION%</b> version is available."
|
|
||||||
LABEL_UPDATING: "Updating"
|
|
||||||
LABEL_CHECKING: "Checking for updates"
|
|
||||||
BUTTON_UPDATE: "Update"
|
|
||||||
BUTTON_DOWNLOAD: "Download"
|
|
||||||
BUTTON_CHANGELOG: "Changelog"
|
|
||||||
POPUPS_ACTIVATE:
|
POPUPS_ACTIVATE:
|
||||||
TITLE_ACTIVATE: "Activate Subscription Key?"
|
TITLE_ACTIVATE: "Activate Subscription Key?"
|
||||||
TITLE_ACTIVATION: "Activation..."
|
TITLE_ACTIVATION: "Activation..."
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@ es_ES:
|
||||||
LABEL_PASSWORD: "Contraseña"
|
LABEL_PASSWORD: "Contraseña"
|
||||||
BUTTON_LOGIN: "Ingresar al panel de control"
|
BUTTON_LOGIN: "Ingresar al panel de control"
|
||||||
TOP_PANEL:
|
TOP_PANEL:
|
||||||
LABEL_PREMIUM: "Premium"
|
|
||||||
LABEL_ADMIN_PANEL: "Panel de Control"
|
LABEL_ADMIN_PANEL: "Panel de Control"
|
||||||
TABS_LABELS:
|
TABS_LABELS:
|
||||||
LABEL_GENERAL_NAME: "General"
|
LABEL_GENERAL_NAME: "General"
|
||||||
|
|
@ -63,14 +62,6 @@ es_ES:
|
||||||
LABEL_USER_LOGO_TITLE: "Título del Logo"
|
LABEL_USER_LOGO_TITLE: "Título del Logo"
|
||||||
LABEL_USER_LOGO_MESSAGE: "Logo (Vista desde mensaje)"
|
LABEL_USER_LOGO_MESSAGE: "Logo (Vista desde mensaje)"
|
||||||
LABEL_USER_CUSTOM_CSS: "CSS Personalizado"
|
LABEL_USER_CUSTOM_CSS: "CSS Personalizado"
|
||||||
LEGEND_WELCOME_PAGE: "Pantalla de bienvenida"
|
|
||||||
LABEL_WELCOME_PAGE_TITLE: "Título"
|
|
||||||
LABEL_WELCOME_PAGE_URL: "URL"
|
|
||||||
LABEL_WELCOME_PAGE_DISPLAY: "Mostrar"
|
|
||||||
OPTION_WELCOME_PAGE_DISPLAY_NONE: "Ninguno"
|
|
||||||
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "Una vez"
|
|
||||||
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Siempre"
|
|
||||||
HTML_ALERT_PREMIUM: "Esta función se encuentra disponible para <strong><a href=\"#/licensing\">Usuarios Premium</a></strong>."
|
|
||||||
TAB_CONTACTS:
|
TAB_CONTACTS:
|
||||||
LEGEND_CONTACTS: "Contactos"
|
LEGEND_CONTACTS: "Contactos"
|
||||||
LEGEND_STORAGE: "Almacenamiento (PDO)"
|
LEGEND_STORAGE: "Almacenamiento (PDO)"
|
||||||
|
|
@ -165,14 +156,6 @@ es_ES:
|
||||||
LEGEND_ABOUT: "Acerca"
|
LEGEND_ABOUT: "Acerca"
|
||||||
LABEL_TAG_HINT: "Moderno, simple y rápido cliente web de correo electrónico"
|
LABEL_TAG_HINT: "Moderno, simple y rápido cliente web de correo electrónico"
|
||||||
LABEL_ALL_RIGHTS_RESERVED: "Todos los Derechos Reservados."
|
LABEL_ALL_RIGHTS_RESERVED: "Todos los Derechos Reservados."
|
||||||
HINT_READ_CHANGE_LOG: "Revisa la lista de cambios antes de actualizar."
|
|
||||||
HINT_IS_UP_TO_DATE: "RainLoop está actualizado."
|
|
||||||
HTML_NEW_VERSION: "Nueva versión ( <b>%VERSION%</b> ) está disponible."
|
|
||||||
LABEL_UPDATING: "Actualizando"
|
|
||||||
LABEL_CHECKING: "Buscando actualizaciones"
|
|
||||||
BUTTON_UPDATE: "Actualizar"
|
|
||||||
BUTTON_DOWNLOAD: "Descargar"
|
|
||||||
BUTTON_CHANGELOG: "Lista de Cambios"
|
|
||||||
POPUPS_ACTIVATE:
|
POPUPS_ACTIVATE:
|
||||||
TITLE_ACTIVATE: "¿Activar la clave de suscripción?"
|
TITLE_ACTIVATE: "¿Activar la clave de suscripción?"
|
||||||
TITLE_ACTIVATION: "Activando..."
|
TITLE_ACTIVATION: "Activando..."
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@ fr_FR:
|
||||||
LABEL_PASSWORD: "Mot de passe"
|
LABEL_PASSWORD: "Mot de passe"
|
||||||
BUTTON_LOGIN: "Se connecter au panneau d'administration"
|
BUTTON_LOGIN: "Se connecter au panneau d'administration"
|
||||||
TOP_PANEL:
|
TOP_PANEL:
|
||||||
LABEL_PREMIUM: "Premium"
|
|
||||||
LABEL_ADMIN_PANEL: "Panneau d'Administration"
|
LABEL_ADMIN_PANEL: "Panneau d'Administration"
|
||||||
TABS_LABELS:
|
TABS_LABELS:
|
||||||
LABEL_GENERAL_NAME: "Général"
|
LABEL_GENERAL_NAME: "Général"
|
||||||
|
|
@ -63,14 +62,6 @@ fr_FR:
|
||||||
LABEL_USER_LOGO_TITLE: "Titre du logo"
|
LABEL_USER_LOGO_TITLE: "Titre du logo"
|
||||||
LABEL_USER_LOGO_MESSAGE: "Logo (vue message)"
|
LABEL_USER_LOGO_MESSAGE: "Logo (vue message)"
|
||||||
LABEL_USER_CUSTOM_CSS: "CSS personnalisés"
|
LABEL_USER_CUSTOM_CSS: "CSS personnalisés"
|
||||||
LEGEND_WELCOME_PAGE: "Page d'accueil"
|
|
||||||
LABEL_WELCOME_PAGE_TITLE: "Titre"
|
|
||||||
LABEL_WELCOME_PAGE_URL: "URL"
|
|
||||||
LABEL_WELCOME_PAGE_DISPLAY: "Affichage"
|
|
||||||
OPTION_WELCOME_PAGE_DISPLAY_NONE: "Aucun"
|
|
||||||
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "Une seule fois"
|
|
||||||
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Toujours"
|
|
||||||
HTML_ALERT_PREMIUM: "Cette fonctionnalité est réservé aux utilisateurs <strong><a href=\"#/licensing\">Premium</a></strong>."
|
|
||||||
TAB_CONTACTS:
|
TAB_CONTACTS:
|
||||||
LEGEND_CONTACTS: "Contacts"
|
LEGEND_CONTACTS: "Contacts"
|
||||||
LEGEND_STORAGE: "Stockage (PDO)"
|
LEGEND_STORAGE: "Stockage (PDO)"
|
||||||
|
|
@ -165,14 +156,6 @@ fr_FR:
|
||||||
LEGEND_ABOUT: "A propos"
|
LEGEND_ABOUT: "A propos"
|
||||||
LABEL_TAG_HINT: "Un client webmail simple, moderne et rapide "
|
LABEL_TAG_HINT: "Un client webmail simple, moderne et rapide "
|
||||||
LABEL_ALL_RIGHTS_RESERVED: "Tous droits réservés."
|
LABEL_ALL_RIGHTS_RESERVED: "Tous droits réservés."
|
||||||
HINT_READ_CHANGE_LOG: "Veuillez lire le journal des modifications avant de faire la mise à jour."
|
|
||||||
HINT_IS_UP_TO_DATE: "Rainloop est à jour."
|
|
||||||
HTML_NEW_VERSION: "Une nouvelle version <b>%VERSION%</b> est disponible."
|
|
||||||
LABEL_UPDATING: "Mise à jour"
|
|
||||||
LABEL_CHECKING: "Vérification des mises à jour"
|
|
||||||
BUTTON_UPDATE: "Mettre à jour"
|
|
||||||
BUTTON_DOWNLOAD: "Télécharger"
|
|
||||||
BUTTON_CHANGELOG: "Journal des modifications"
|
|
||||||
POPUPS_ACTIVATE:
|
POPUPS_ACTIVATE:
|
||||||
TITLE_ACTIVATE: "Activer une clé de souscription ?"
|
TITLE_ACTIVATE: "Activer une clé de souscription ?"
|
||||||
TITLE_ACTIVATION: "Activation..."
|
TITLE_ACTIVATION: "Activation..."
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@ nl_NL:
|
||||||
LABEL_PASSWORD: "Wachtwoord"
|
LABEL_PASSWORD: "Wachtwoord"
|
||||||
BUTTON_LOGIN: "Aanmelden in het beheer paneel"
|
BUTTON_LOGIN: "Aanmelden in het beheer paneel"
|
||||||
TOP_PANEL:
|
TOP_PANEL:
|
||||||
LABEL_PREMIUM: "Premium"
|
|
||||||
LABEL_ADMIN_PANEL: "Beheer paneel"
|
LABEL_ADMIN_PANEL: "Beheer paneel"
|
||||||
TABS_LABELS:
|
TABS_LABELS:
|
||||||
LABEL_GENERAL_NAME: "Algemeen"
|
LABEL_GENERAL_NAME: "Algemeen"
|
||||||
|
|
@ -62,14 +61,6 @@ nl_NL:
|
||||||
LABEL_USER_LOGO_TITLE: "Logo titel"
|
LABEL_USER_LOGO_TITLE: "Logo titel"
|
||||||
LABEL_USER_LOGO_MESSAGE: "Logo (berichtweergave)"
|
LABEL_USER_LOGO_MESSAGE: "Logo (berichtweergave)"
|
||||||
LABEL_USER_CUSTOM_CSS: "Aangepaste CSS"
|
LABEL_USER_CUSTOM_CSS: "Aangepaste CSS"
|
||||||
LEGEND_WELCOME_PAGE: "Welkom pagina"
|
|
||||||
LABEL_WELCOME_PAGE_TITLE: "Titel"
|
|
||||||
LABEL_WELCOME_PAGE_URL: "URL"
|
|
||||||
LABEL_WELCOME_PAGE_DISPLAY: "Weergave"
|
|
||||||
OPTION_WELCOME_PAGE_DISPLAY_NONE: "Nooit"
|
|
||||||
OPTION_WELCOME_PAGE_DISPLAY_ONCE: "Eenmalig"
|
|
||||||
OPTION_WELCOME_PAGE_DISPLAY_ALWAYS: "Altijd"
|
|
||||||
HTML_ALERT_PREMIUM: "Deze functionaliteit is alleen beschikbaar voor <strong><a href=\"#/licensing\">Premium</a></strong> abonnees.\n"
|
|
||||||
TAB_CONTACTS:
|
TAB_CONTACTS:
|
||||||
LEGEND_CONTACTS: "Contactpersonen"
|
LEGEND_CONTACTS: "Contactpersonen"
|
||||||
LEGEND_STORAGE: "Opslag (PDO)"
|
LEGEND_STORAGE: "Opslag (PDO)"
|
||||||
|
|
@ -163,14 +154,6 @@ nl_NL:
|
||||||
LEGEND_ABOUT: "Over"
|
LEGEND_ABOUT: "Over"
|
||||||
LABEL_TAG_HINT: "Simpel, modern en snelle web-based e-mail client"
|
LABEL_TAG_HINT: "Simpel, modern en snelle web-based e-mail client"
|
||||||
LABEL_ALL_RIGHTS_RESERVED: "Alle rechten gereserveerd."
|
LABEL_ALL_RIGHTS_RESERVED: "Alle rechten gereserveerd."
|
||||||
HINT_READ_CHANGE_LOG: "Lees a.u.b. het veranderingen logboek alvorens te updaten."
|
|
||||||
HINT_IS_UP_TO_DATE: "De laatste versie van RainLoop is geïnstalleerd."
|
|
||||||
HTML_NEW_VERSION: "Een nieuwe versie <b>%VERSION%</b> is beschikbaar."
|
|
||||||
LABEL_UPDATING: "Bezig met updaten"
|
|
||||||
LABEL_CHECKING: "Controleren op updates"
|
|
||||||
BUTTON_UPDATE: "Bijwerken"
|
|
||||||
BUTTON_DOWNLOAD: "Download"
|
|
||||||
BUTTON_CHANGELOG: "Veranderingen logboek"
|
|
||||||
POPUPS_ACTIVATE:
|
POPUPS_ACTIVATE:
|
||||||
TITLE_ACTIVATE: "Activatie code activeren?"
|
TITLE_ACTIVATE: "Activatie code activeren?"
|
||||||
TITLE_ACTIVATION: "Activeren..."
|
TITLE_ACTIVATION: "Activeren..."
|
||||||
|
|
|
||||||
|
|
@ -240,8 +240,6 @@ en:
|
||||||
BUTTON_MARK_AS_IMPORTANT: "Mark as important"
|
BUTTON_MARK_AS_IMPORTANT: "Mark as important"
|
||||||
BUTTON_OPEN_PGP: "OpenPGP (Plain Text Only)"
|
BUTTON_OPEN_PGP: "OpenPGP (Plain Text Only)"
|
||||||
BUTTON_REQUEST_DSN: "Request a delivery receipt"
|
BUTTON_REQUEST_DSN: "Request a delivery receipt"
|
||||||
POPUPS_WELCOME_PAGE:
|
|
||||||
BUTTON_CLOSE: "Close"
|
|
||||||
POPUPS_ASK:
|
POPUPS_ASK:
|
||||||
BUTTON_YES: "Yes"
|
BUTTON_YES: "Yes"
|
||||||
BUTTON_NO: "No"
|
BUTTON_NO: "No"
|
||||||
|
|
|
||||||
|
|
@ -238,8 +238,6 @@ de_DE:
|
||||||
BUTTON_MARK_AS_IMPORTANT: "Als Wichtig markieren"
|
BUTTON_MARK_AS_IMPORTANT: "Als Wichtig markieren"
|
||||||
BUTTON_OPEN_PGP: "OpenPGP (nur bei unformatiertem Text)"
|
BUTTON_OPEN_PGP: "OpenPGP (nur bei unformatiertem Text)"
|
||||||
BUTTON_REQUEST_DSN: "Übermittlungsstatus anfordern"
|
BUTTON_REQUEST_DSN: "Übermittlungsstatus anfordern"
|
||||||
POPUPS_WELCOME_PAGE:
|
|
||||||
BUTTON_CLOSE: "Schließen"
|
|
||||||
POPUPS_ASK:
|
POPUPS_ASK:
|
||||||
BUTTON_YES: "Ja"
|
BUTTON_YES: "Ja"
|
||||||
BUTTON_NO: "Nein"
|
BUTTON_NO: "Nein"
|
||||||
|
|
|
||||||
|
|
@ -239,8 +239,6 @@ en_GB:
|
||||||
BUTTON_MARK_AS_IMPORTANT: "Mark as important"
|
BUTTON_MARK_AS_IMPORTANT: "Mark as important"
|
||||||
BUTTON_OPEN_PGP: "OpenPGP (Plain Text Only)"
|
BUTTON_OPEN_PGP: "OpenPGP (Plain Text Only)"
|
||||||
BUTTON_REQUEST_DSN: "Request a delivery receipt"
|
BUTTON_REQUEST_DSN: "Request a delivery receipt"
|
||||||
POPUPS_WELCOME_PAGE:
|
|
||||||
BUTTON_CLOSE: "Close"
|
|
||||||
POPUPS_ASK:
|
POPUPS_ASK:
|
||||||
BUTTON_YES: "Yes"
|
BUTTON_YES: "Yes"
|
||||||
BUTTON_NO: "No"
|
BUTTON_NO: "No"
|
||||||
|
|
|
||||||
|
|
@ -239,8 +239,6 @@ en_US:
|
||||||
BUTTON_MARK_AS_IMPORTANT: "Mark as important"
|
BUTTON_MARK_AS_IMPORTANT: "Mark as important"
|
||||||
BUTTON_OPEN_PGP: "OpenPGP (Plain Text Only)"
|
BUTTON_OPEN_PGP: "OpenPGP (Plain Text Only)"
|
||||||
BUTTON_REQUEST_DSN: "Request a delivery receipt"
|
BUTTON_REQUEST_DSN: "Request a delivery receipt"
|
||||||
POPUPS_WELCOME_PAGE:
|
|
||||||
BUTTON_CLOSE: "Close"
|
|
||||||
POPUPS_ASK:
|
POPUPS_ASK:
|
||||||
BUTTON_YES: "Yes"
|
BUTTON_YES: "Yes"
|
||||||
BUTTON_NO: "No"
|
BUTTON_NO: "No"
|
||||||
|
|
|
||||||
|
|
@ -238,8 +238,6 @@ es_ES:
|
||||||
BUTTON_MARK_AS_IMPORTANT: "Marcar como importante"
|
BUTTON_MARK_AS_IMPORTANT: "Marcar como importante"
|
||||||
BUTTON_OPEN_PGP: "OpenPGP (solo texto plano)"
|
BUTTON_OPEN_PGP: "OpenPGP (solo texto plano)"
|
||||||
BUTTON_REQUEST_DSN: "Solicitar una confirmación de entrega"
|
BUTTON_REQUEST_DSN: "Solicitar una confirmación de entrega"
|
||||||
POPUPS_WELCOME_PAGE:
|
|
||||||
BUTTON_CLOSE: "Cerrar"
|
|
||||||
POPUPS_ASK:
|
POPUPS_ASK:
|
||||||
BUTTON_YES: "Sí"
|
BUTTON_YES: "Sí"
|
||||||
BUTTON_NO: "No"
|
BUTTON_NO: "No"
|
||||||
|
|
|
||||||
|
|
@ -239,8 +239,6 @@ fr_FR:
|
||||||
BUTTON_MARK_AS_IMPORTANT: "Marquer comme important"
|
BUTTON_MARK_AS_IMPORTANT: "Marquer comme important"
|
||||||
BUTTON_OPEN_PGP: "OpenPGP (Texte non formaté uniquement)"
|
BUTTON_OPEN_PGP: "OpenPGP (Texte non formaté uniquement)"
|
||||||
BUTTON_REQUEST_DSN: "Demander un accusé de réception"
|
BUTTON_REQUEST_DSN: "Demander un accusé de réception"
|
||||||
POPUPS_WELCOME_PAGE:
|
|
||||||
BUTTON_CLOSE: "Fermer"
|
|
||||||
POPUPS_ASK:
|
POPUPS_ASK:
|
||||||
BUTTON_YES: "Oui"
|
BUTTON_YES: "Oui"
|
||||||
BUTTON_NO: "Non"
|
BUTTON_NO: "Non"
|
||||||
|
|
|
||||||
|
|
@ -238,8 +238,6 @@ nl_NL:
|
||||||
BUTTON_MARK_AS_IMPORTANT: "Markeer als belangrijk"
|
BUTTON_MARK_AS_IMPORTANT: "Markeer als belangrijk"
|
||||||
BUTTON_OPEN_PGP: "OpenPGP (allen bij Platte Tekst)"
|
BUTTON_OPEN_PGP: "OpenPGP (allen bij Platte Tekst)"
|
||||||
BUTTON_REQUEST_DSN: "Ontvangstbevestiging vragen"
|
BUTTON_REQUEST_DSN: "Ontvangstbevestiging vragen"
|
||||||
POPUPS_WELCOME_PAGE:
|
|
||||||
BUTTON_CLOSE: "Close"
|
|
||||||
POPUPS_ASK:
|
POPUPS_ASK:
|
||||||
BUTTON_YES: "Ja"
|
BUTTON_YES: "Ja"
|
||||||
BUTTON_NO: "Nee"
|
BUTTON_NO: "Nee"
|
||||||
|
|
|
||||||
|
|
@ -5,11 +5,8 @@
|
||||||
<i class="icon-spinner animated" style="margin-top: 2px" data-bind="style: {'visibility': adminManLoadingVisibility }"></i>
|
<i class="icon-spinner animated" style="margin-top: 2px" data-bind="style: {'visibility': adminManLoadingVisibility }"></i>
|
||||||
|
|
||||||
RainLoop
|
RainLoop
|
||||||
<span data-bind="visible: capa && !community">(<span data-i18n="TOP_PANEL/LABEL_PREMIUM"></span>)</span>
|
|
||||||
—
|
—
|
||||||
<span data-i18n="TOP_PANEL/LABEL_ADMIN_PANEL"></span>
|
<span data-i18n="TOP_PANEL/LABEL_ADMIN_PANEL"></span>
|
||||||
|
|
||||||
<span data-bind="visible: !community">(<span data-bind="text: adminDomain"></span>)</span>
|
|
||||||
</h4>
|
</h4>
|
||||||
<div class="btn-group pull-right">
|
<div class="btn-group pull-right">
|
||||||
<a class="btn single btn-narrow" data-bind="click: logoutClick">
|
<a class="btn single btn-narrow" data-bind="click: logoutClick">
|
||||||
|
|
|
||||||
|
|
@ -19,60 +19,6 @@
|
||||||
</span>
|
</span>
|
||||||
</h4>
|
</h4>
|
||||||
<h4 style="color: #aaa; font-weight: normal;" data-i18n="TAB_ABOUT/LABEL_TAG_HINT"></h4>
|
<h4 style="color: #aaa; font-weight: normal;" data-i18n="TAB_ABOUT/LABEL_TAG_HINT"></h4>
|
||||||
<h5 style="font-weight: normal; margin-top: 40px;" data-bind="visible: !community">
|
|
||||||
<div data-bind="visible: 'error' === statusType()">
|
|
||||||
<i class="icon-warning" style="color: red"></i>
|
|
||||||
|
|
||||||
<span data-bind="text: errorDesc"></span>
|
|
||||||
</div>
|
|
||||||
<div data-bind="visible: 'available' === statusType()">
|
|
||||||
<i class="icon-bolt" style="color: red"></i>
|
|
||||||
|
|
||||||
<span data-bind="html: coreRemoteVersionHtmlDesc"></span>
|
|
||||||
<span data-bind="visible: '' !== coreRemoteRelease()">
|
|
||||||
(<span data-bind="text: coreRemoteRelease"></span>)
|
|
||||||
</span>
|
|
||||||
<br />
|
|
||||||
<span data-bind="if: coreWarning">
|
|
||||||
<br />
|
|
||||||
<i class="icon-warning" style="color: red"></i>
|
|
||||||
|
|
||||||
<b data-i18n="HINTS/WARNING"></b>
|
|
||||||
|
|
||||||
<span data-i18n="TAB_ABOUT/HINT_READ_CHANGE_LOG"></span>
|
|
||||||
<br />
|
|
||||||
</span>
|
|
||||||
<br />
|
|
||||||
<span data-bind="visible: coreAccess()">
|
|
||||||
<a class="btn" href="http://www.rainloop.net/downloads/" target="_blank">
|
|
||||||
<i class="icon-download"></i>
|
|
||||||
|
|
||||||
<span data-i18n="TAB_ABOUT/BUTTON_DOWNLOAD"></span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a class="btn" href="http://www.rainloop.net/changelog/" target="_blank">
|
|
||||||
<i class="icon-file-text"></i>
|
|
||||||
|
|
||||||
<span data-i18n="TAB_ABOUT/BUTTON_CHANGELOG"></span>
|
|
||||||
</a>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div data-bind="visible: 'up-to-date' === statusType()">
|
|
||||||
<i class="icon-ok" style="color: green"></i>
|
|
||||||
|
|
||||||
<span data-i18n="TAB_ABOUT/HINT_IS_UP_TO_DATE"></span>
|
|
||||||
</div>
|
|
||||||
<div data-bind="visible: 'updating' === statusType()">
|
|
||||||
<i class="icon-spinner animated"></i>
|
|
||||||
|
|
||||||
<span data-i18n="TAB_ABOUT/LABEL_UPDATING"></span>…
|
|
||||||
</div>
|
|
||||||
<div data-bind="visible: 'checking' === statusType()">
|
|
||||||
<i class="icon-spinner animated"></i>
|
|
||||||
|
|
||||||
<span data-i18n="TAB_ABOUT/LABEL_CHECKING"></span>…
|
|
||||||
</div>
|
|
||||||
</h5>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -42,8 +42,9 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<!--
|
||||||
<br />
|
<br />
|
||||||
<ul class="nav nav-tabs" data-bind="visible: !community">
|
<ul class="nav nav-tabs">
|
||||||
<li class="active">
|
<li class="active">
|
||||||
<a class="i18n" data-i18n="TAB_BRANDING/LEGEND_LOGIN"
|
<a class="i18n" data-i18n="TAB_BRANDING/LEGEND_LOGIN"
|
||||||
href="#branding-login-section-id" data-toggle="tab"></a>
|
href="#branding-login-section-id" data-toggle="tab"></a>
|
||||||
|
|
@ -52,17 +53,12 @@
|
||||||
<a class="i18n" data-i18n="TAB_BRANDING/LEGEND_USER"
|
<a class="i18n" data-i18n="TAB_BRANDING/LEGEND_USER"
|
||||||
href="#branding-user-section-id" data-toggle="tab"></a>
|
href="#branding-user-section-id" data-toggle="tab"></a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
|
||||||
<a class="i18n" data-i18n="TAB_BRANDING/LEGEND_WELCOME_PAGE"
|
|
||||||
href="#branding-welcome-page-section-id" data-toggle="tab"></a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
<br />
|
<br />
|
||||||
<div class="row" data-bind="visible: !community">
|
<div class="row">
|
||||||
<div class="tab-content span12">
|
<div class="tab-content span12">
|
||||||
<div class="tab-pane active" id="branding-login-section-id">
|
<div class="tab-pane active" id="branding-login-section-id">
|
||||||
|
<div class="form-horizontal">
|
||||||
<div class="form-horizontal" data-bind="css: {'disabled-form': !capa()}">
|
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<label class="control-label" data-i18n="TAB_BRANDING/LABEL_LOGIN_LOGO"></label>
|
<label class="control-label" data-i18n="TAB_BRANDING/LABEL_LOGIN_LOGO"></label>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
|
|
@ -72,8 +68,7 @@
|
||||||
value: loginLogo,
|
value: loginLogo,
|
||||||
trigger: loginLogo.trigger,
|
trigger: loginLogo.trigger,
|
||||||
placeholder: 'https://',
|
placeholder: 'https://',
|
||||||
size: 5,
|
size: 5
|
||||||
enable: capa
|
|
||||||
}
|
}
|
||||||
}"></div>
|
}"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -86,8 +81,7 @@
|
||||||
params: {
|
params: {
|
||||||
value: loginDescription,
|
value: loginDescription,
|
||||||
trigger: loginDescription.trigger,
|
trigger: loginDescription.trigger,
|
||||||
size: 5,
|
size: 5
|
||||||
enable: capa
|
|
||||||
}
|
}
|
||||||
}"></div>
|
}"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -101,8 +95,7 @@
|
||||||
value: loginBackground,
|
value: loginBackground,
|
||||||
trigger: loginBackground.trigger,
|
trigger: loginBackground.trigger,
|
||||||
placeholder: 'https://',
|
placeholder: 'https://',
|
||||||
size: 5,
|
size: 5
|
||||||
enable: capa
|
|
||||||
}
|
}
|
||||||
}"></div>
|
}"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -116,18 +109,15 @@
|
||||||
value: loginCss,
|
value: loginCss,
|
||||||
trigger: loginCss.trigger,
|
trigger: loginCss.trigger,
|
||||||
width: 495,
|
width: 495,
|
||||||
enable: capa,
|
|
||||||
rows: 7
|
rows: 7
|
||||||
}
|
}
|
||||||
}"></div>
|
}"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="tab-pane" id="branding-user-section-id">
|
<div class="tab-pane" id="branding-user-section-id">
|
||||||
|
<div class="form-horizontal">
|
||||||
<div class="form-horizontal" data-bind="css: {'disabled-form': !capa()}">
|
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<label class="control-label" data-i18n="TAB_BRANDING/LABEL_USER_LOGO"></label>
|
<label class="control-label" data-i18n="TAB_BRANDING/LABEL_USER_LOGO"></label>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
|
|
@ -137,8 +127,7 @@
|
||||||
value: userLogo,
|
value: userLogo,
|
||||||
trigger: userLogo.trigger,
|
trigger: userLogo.trigger,
|
||||||
placeholder: 'https://',
|
placeholder: 'https://',
|
||||||
size: 5,
|
size: 5
|
||||||
enable: capa
|
|
||||||
}
|
}
|
||||||
}"></div>
|
}"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -151,8 +140,7 @@
|
||||||
params: {
|
params: {
|
||||||
value: userLogoTitle,
|
value: userLogoTitle,
|
||||||
trigger: userLogoTitle.trigger,
|
trigger: userLogoTitle.trigger,
|
||||||
size: 5,
|
size: 5
|
||||||
enable: capa
|
|
||||||
}
|
}
|
||||||
}"></div>
|
}"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -166,8 +154,7 @@
|
||||||
value: userLogoMessage,
|
value: userLogoMessage,
|
||||||
trigger: userLogoMessage.trigger,
|
trigger: userLogoMessage.trigger,
|
||||||
placeholder: 'https://',
|
placeholder: 'https://',
|
||||||
size: 5,
|
size: 5
|
||||||
enable: capa
|
|
||||||
}
|
}
|
||||||
}"></div>
|
}"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -181,58 +168,14 @@
|
||||||
value: userCss,
|
value: userCss,
|
||||||
trigger: userCss.trigger,
|
trigger: userCss.trigger,
|
||||||
width: 495,
|
width: 495,
|
||||||
enable: capa,
|
|
||||||
rows: 7
|
rows: 7
|
||||||
}
|
}
|
||||||
}"></div>
|
}"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="tab-pane" id="branding-welcome-page-section-id">
|
</div>
|
||||||
|
-->
|
||||||
<div class="form-horizontal" data-bind="css: {'disabled-form': !capa()}">
|
|
||||||
<div class="control-group">
|
|
||||||
<label class="control-label" data-i18n="TAB_BRANDING/LABEL_WELCOME_PAGE_URL"></label>
|
|
||||||
<div class="controls">
|
|
||||||
<div data-bind="component: {
|
|
||||||
name: 'Input',
|
|
||||||
params: {
|
|
||||||
value: welcomePageUrl,
|
|
||||||
trigger: welcomePageUrl.trigger,
|
|
||||||
placeholder: 'https://',
|
|
||||||
size: 5,
|
|
||||||
enable: capa
|
|
||||||
}
|
|
||||||
}"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="control-group">
|
|
||||||
<label class="control-label" data-i18n="TAB_BRANDING/LABEL_WELCOME_PAGE_DISPLAY"></label>
|
|
||||||
<div class="controls">
|
|
||||||
<div data-bind="component: {
|
|
||||||
name: 'Select',
|
|
||||||
params: {
|
|
||||||
options: welcomePageDisplay.options,
|
|
||||||
value: welcomePageDisplay,
|
|
||||||
trigger: welcomePageDisplay.trigger,
|
|
||||||
optionsText: 'optText',
|
|
||||||
optionsValue: 'optValue',
|
|
||||||
size: 2,
|
|
||||||
enable: capa
|
|
||||||
}
|
|
||||||
}"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row" data-bind="visible: !capa() && !community">
|
|
||||||
<div class="alert span8" style="margin-top: 10px;" data-i18n="[html]TAB_BRANDING/HTML_ALERT_PREMIUM"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
<div class="popups">
|
|
||||||
<div class="modal hide b-welcom-page-content g-ui-user-select-none"
|
|
||||||
data-bind="modal: modalVisibility" style="width: 600px">
|
|
||||||
|
|
||||||
<div class="modal-body" style="height: 450px; padding: 0">
|
|
||||||
<div data-bind="if: welcomePageURL" style="height: 100%; width: 100%; margin: 0; padding: 0; position: relative">
|
|
||||||
<iframe src="javascript:1;" tabindex="-1" frameborder="0"
|
|
||||||
style="border: none; width: 100%; height: 100%; position: absolute; top: 0px; left: 0px; right: 0px; bottom: 0px;"
|
|
||||||
data-bind="attr: {'src': welcomePageURL}"></iframe>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="modal-footer">
|
|
||||||
<button class="btn" autofocus="" data-bind="command: cancelCommand">
|
|
||||||
<i class="icon-remove"></i>
|
|
||||||
|
|
||||||
<span class="i18n" data-i18n="POPUPS_WELCOME_PAGE/BUTTON_CLOSE"></span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
10
release.php
10
release.php
|
|
@ -21,14 +21,14 @@ if ($return_var) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($gzip = trim(`which gzip`)) {
|
if ($gzip = trim(`which gzip`)) {
|
||||||
// passthru("{$gzip} -k --best -r ".escapeshellarg(__DIR__ . '/rainloop/v/0.0.0/static/js/*'), $return_var);
|
// passthru("{$gzip} -k --best -r ".escapeshellarg(__DIR__ . '/rainloop/v/0.0.0/static/js/*.js'), $return_var);
|
||||||
// passthru("{$gzip} -k --best -r ".escapeshellarg(__DIR__ . '/rainloop/v/0.0.0/static/css/*'), $return_var);
|
// passthru("{$gzip} -k --best -r ".escapeshellarg(__DIR__ . '/rainloop/v/0.0.0/static/css/*.css'), $return_var);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($brotli = trim(`which brotli`)) {
|
if ($brotli = trim(`which brotli`)) {
|
||||||
// passthru("{$brotli} -k --best ".escapeshellarg(__DIR__ . '/rainloop/v/0.0.0/static/js/*'), $return_var);
|
// passthru("{$brotli} -k --best ".escapeshellarg(__DIR__ . '/rainloop/v/0.0.0/static/js/*.js'), $return_var);
|
||||||
// passthru("{$brotli} -k --best ".escapeshellarg(__DIR__ . '/rainloop/v/0.0.0/static/js/min/*'), $return_var);
|
// passthru("{$brotli} -k --best ".escapeshellarg(__DIR__ . '/rainloop/v/0.0.0/static/js/min/*.js'), $return_var);
|
||||||
// passthru("{$brotli} -k --best ".escapeshellarg(__DIR__ . '/rainloop/v/0.0.0/static/css/*'), $return_var);
|
// passthru("{$brotli} -k --best ".escapeshellarg(__DIR__ . '/rainloop/v/0.0.0/static/css/*.css'), $return_var);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Temporary rename folder to speed up PharData
|
// Temporary rename folder to speed up PharData
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,6 @@ module.exports = function(publicPath, pro, mode) {
|
||||||
plugins: [
|
plugins: [
|
||||||
// new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
|
// new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
|
||||||
new webpack.DefinePlugin({
|
new webpack.DefinePlugin({
|
||||||
'RL_COMMUNITY': !pro,
|
|
||||||
'process.env.NODE_ENV': JSON.stringify('production'),
|
'process.env.NODE_ENV': JSON.stringify('production'),
|
||||||
'process.env': {
|
'process.env': {
|
||||||
NODE_ENV: JSON.stringify('production')
|
NODE_ENV: JSON.stringify('production')
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue