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: {
|
||||
// RainLoop
|
||||
'RL_COMMUNITY': true,
|
||||
'RL_ES6': true,
|
||||
'__rlah_set': "readonly",
|
||||
'__rlah_clear': "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 momentToNode with proper HTML5 <time>
|
||||
* Replaced resize listeners with ResizeObserver
|
||||
* Removed non-community (aka Prem/Premium/License) code
|
||||
|
||||
|js/* |1.14.0 |native |
|
||||
|----------- |--------: |--------: |
|
||||
|admin.js |2.130.942 |1.038.620 |
|
||||
|app.js |4.184.455 |2.685.732 |
|
||||
|admin.js |2.130.942 |1.007.370 |
|
||||
|app.js |4.184.455 |2.676.306 |
|
||||
|boot.js | 671.522 | 43.856 |
|
||||
|libs.js | 647.614 | 316.969 |
|
||||
|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 |
|
||||
|--------------- |--------: |--------: |--------: |--------: |--------: |
|
||||
|admin.min.js | 252.147 | 142.134 | 73.657 | 40.994 | 34.975 |
|
||||
|app.min.js | 511.202 | 361.315 |140.462 | 95.185 | 76.480 |
|
||||
|boot.min.js | 66.007 | 5.575 | 22.567 | 2.341 | 2.001 |
|
||||
|admin.min.js | 252.147 | 138.101 | 73.657 | 40.104 | 34.210 |
|
||||
|app.min.js | 511.202 | 360.198 |140.462 | 95.043 | 76.240 |
|
||||
|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 |
|
||||
|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 |
|
||||
|-------------- |--------: |--------: |
|
||||
|app.css | 340.334 | 266.586 |
|
||||
|app.min.css | 274.791 | 211.427 |
|
||||
|app.css | 340.334 | 266.769 |
|
||||
|app.min.css | 274.791 | 211.601 |
|
||||
|
||||
|
||||
### PHP73 branch
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@ import CapaStore from 'Stores/Admin/Capa';
|
|||
import DomainStore from 'Stores/Admin/Domain';
|
||||
import PluginStore from 'Stores/Admin/Plugin';
|
||||
import PackageStore from 'Stores/Admin/Package';
|
||||
import CoreStore from 'Stores/Admin/Core';
|
||||
import Remote from 'Remote/Admin/Ajax';
|
||||
|
||||
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) {
|
||||
if (window.progressJs) {
|
||||
progressJs.end();
|
||||
|
|
|
|||
|
|
@ -912,10 +912,6 @@ class AppUser extends AbstractApp {
|
|||
showScreenPopup(require('View/Popup/TwoFactorConfiguration'), [true]);
|
||||
}
|
||||
|
||||
bootstartWelcomePopup(url) {
|
||||
showScreenPopup(require('View/Popup/WelcomePage'), [url]);
|
||||
}
|
||||
|
||||
bootstartLoginScreen() {
|
||||
$htmlCL.remove('rl-user-auth');
|
||||
$htmlCL.add('rl-user-no-auth');
|
||||
|
|
@ -1046,10 +1042,6 @@ class AppUser extends AbstractApp {
|
|||
|
||||
addEventListener('rl.auto-logout', () => this.logout());
|
||||
|
||||
if (Settings.settingsGet('WelcomePageUrl')) {
|
||||
setTimeout(() => this.bootstartWelcomePopup(Settings.settingsGet('WelcomePageUrl')), 1000);
|
||||
}
|
||||
|
||||
if (
|
||||
!!Settings.settingsGet('AccountSignMe') &&
|
||||
navigator.registerProtocolHandler &&
|
||||
|
|
|
|||
|
|
@ -4,11 +4,6 @@ import { KeyState } from 'Common/Enums';
|
|||
export const $html = jQuery('html');
|
||||
export const $htmlCL = document.documentElement.classList;
|
||||
|
||||
/**
|
||||
* @type {boolean}
|
||||
*/
|
||||
export const community = RL_COMMUNITY;
|
||||
|
||||
/**
|
||||
* @type {?}
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -51,10 +51,6 @@ class UserAjaxUserPromises extends AbstractAjaxPromises {
|
|||
'Hashes': aHashes
|
||||
});
|
||||
}
|
||||
|
||||
welcomeClose() {
|
||||
return this.postRequest('WelcomeClose');
|
||||
}
|
||||
}
|
||||
|
||||
export default new UserAjaxUserPromises();
|
||||
|
|
|
|||
|
|
@ -71,20 +71,6 @@ class RemoteAdminAjax extends AbstractAjaxRemote {
|
|||
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 {Object} oPackage
|
||||
|
|
|
|||
|
|
@ -1,73 +1,11 @@
|
|||
import ko from 'ko';
|
||||
|
||||
import { i18n, trigger as translatorTrigger } from 'Common/Translator';
|
||||
import { appSettingsGet, settingsGet } from 'Storage/Settings';
|
||||
|
||||
import AppStore from 'Stores/Admin/App';
|
||||
import CoreStore from 'Stores/Admin/Core';
|
||||
|
||||
import { getApp } from 'Helper/Apps/Admin';
|
||||
import { appSettingsGet } from 'Storage/Settings';
|
||||
|
||||
class AboutAdminSettings {
|
||||
constructor() {
|
||||
this.version = ko.observable(appSettingsGet('version'));
|
||||
this.access = ko.observable(!!settingsGet('CoreAccess'));
|
||||
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();
|
||||
}
|
||||
this.coreType = ko.observable('djmaze');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,17 +1,13 @@
|
|||
import ko from 'ko';
|
||||
|
||||
import { settingsSaveHelperSimpleFunction } from 'Common/Utils';
|
||||
import { i18n, trigger as translatorTrigger } from 'Common/Translator';
|
||||
|
||||
import Remote from 'Remote/Admin/Ajax';
|
||||
import AppStore from 'Stores/Admin/App';
|
||||
|
||||
import { settingsGet } from 'Storage/Settings';
|
||||
|
||||
class BrandingAdminSettings {
|
||||
constructor() {
|
||||
this.capa = AppStore.prem;
|
||||
|
||||
this.title = ko.observable(settingsGet('Title')).idleTrigger();
|
||||
this.loadingDesc = ko.observable(settingsGet('LoadingDescription')).idleTrigger();
|
||||
this.faviconUrl = ko.observable(settingsGet('FaviconUrl')).idleTrigger();
|
||||
|
|
@ -24,18 +20,6 @@ class BrandingAdminSettings {
|
|||
this.loginDescription = ko.observable(settingsGet('LoginDescription')).idleTrigger();
|
||||
this.loginCss = ko.observable(settingsGet('LoginCss')).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() {
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ import { getNotification } from 'Common/Translator';
|
|||
import { settingsGet } from 'Storage/Settings';
|
||||
import { showScreenPopup } from 'Knoin/Knoin';
|
||||
|
||||
import AppStore from 'Stores/Admin/App';
|
||||
import PluginStore from 'Stores/Admin/Plugin';
|
||||
|
||||
import Remote from 'Remote/Admin/Ajax';
|
||||
|
|
@ -20,8 +19,6 @@ class PluginsAdminSettings {
|
|||
this.plugins = PluginStore.plugins;
|
||||
this.pluginsError = PluginStore.plugins.error;
|
||||
|
||||
this.community = RL_COMMUNITY || AppStore.community();
|
||||
|
||||
this.visibility = ko.computed(() => (PluginStore.plugins.loading() ? 'visible' : 'hidden'));
|
||||
|
||||
this.onPluginLoadRequest = this.onPluginLoadRequest.bind(this);
|
||||
|
|
|
|||
|
|
@ -6,18 +6,12 @@ class AbstractAppStore {
|
|||
this.allowLanguagesOnSettings = ko.observable(true);
|
||||
this.allowLanguagesOnLogin = ko.observable(true);
|
||||
this.newMoveToFolder = ko.observable(true);
|
||||
|
||||
this.prem = ko.observable(false);
|
||||
this.community = ko.observable(true);
|
||||
}
|
||||
|
||||
populate() {
|
||||
this.allowLanguagesOnLogin(!!Settings.settingsGet('AllowLanguagesOnLogin'));
|
||||
this.allowLanguagesOnSettings(!!Settings.settingsGet('AllowLanguagesOnSettings'));
|
||||
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() {
|
||||
super();
|
||||
|
||||
this.adminDomain = ko.observable(Settings.settingsGet('AdminDomain'));
|
||||
this.version = ko.observable(Settings.appSettingsGet('version'));
|
||||
|
||||
this.capa = !!Settings.settingsGet('PremType');
|
||||
this.community = RL_COMMUNITY;
|
||||
|
||||
this.adminManLoading = ko.computed(
|
||||
() =>
|
||||
'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),
|
||||
'languages' => $this->GetLanguages(false),
|
||||
'languagesAdmin' => $this->GetLanguages(true),
|
||||
'appVersionType' => 'community',
|
||||
'attachmentsActions' => $aAttachmentsActions
|
||||
), $bAdmin ? array(
|
||||
'adminHostUse' => '' !== $oConfig->Get('security', 'admin_panel_host', ''),
|
||||
|
|
@ -1247,8 +1246,6 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack
|
|||
'UserLogoTitle' => '',
|
||||
'UserLogoMessage' => '',
|
||||
'UserCss' => '',
|
||||
'WelcomePageUrl' => '',
|
||||
'WelcomePageDisplay' => 'none',
|
||||
'IncludeCss' => '',
|
||||
'IncludeBackground' => '',
|
||||
'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),
|
||||
'ContactsIsAllowed' => false,
|
||||
'RequireTwoFactor' => false,
|
||||
'Community' => true,
|
||||
'PremType' => false,
|
||||
'Admin' => array(),
|
||||
'Capa' => array(),
|
||||
'Plugins' => array(),
|
||||
'System' => $this->AppDataSystem($bAdmin, $bMobile, $bMobileDevice)
|
||||
/*
|
||||
'Community' => false,
|
||||
'PremType' => true,
|
||||
'LoginLogo' => $oConfig->Get('branding', 'login_logo', ''),
|
||||
'LoginBackground' => $oConfig->Get('branding', 'login_background', ''),
|
||||
'LoginCss' => $oConfig->Get('branding', 'login_css', ''),
|
||||
|
|
@ -1277,8 +1270,6 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack
|
|||
'UserLogoMessage' => $oConfig->Get('branding', 'user_logo_message', ''),
|
||||
'UserIframeMessage' => $oConfig->Get('branding', 'user_iframe_message', ''),
|
||||
'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']))
|
||||
{
|
||||
$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['DevPassword'] = $oConfig->Get('labs', 'dev_password', '');
|
||||
|
||||
$aResult['WelcomePageUrl'] = '';
|
||||
$aResult['WelcomePageDisplay'] = '';
|
||||
|
||||
$aResult['StartupUrl'] = '';
|
||||
|
||||
if (empty($aResult['AdditionalLoginError']))
|
||||
|
|
@ -1437,11 +1405,7 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack
|
|||
$aResult['ContactsPdoUser'] = (string) $oConfig->Get('contacts', 'pdo_user', '');
|
||||
$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['CoreAccess'] = (bool) $this->rainLoopCoreAccess();
|
||||
|
||||
$aResult['PhpUploadSizes'] = array(
|
||||
'upload_max_filesize' => \ini_get('upload_max_filesize'),
|
||||
|
|
@ -3130,8 +3094,7 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack
|
|||
|
||||
if ($this && $this->HasOneOfActionParams(array(
|
||||
'LoginLogo', 'LoginBackground', 'LoginDescription', 'LoginCss',
|
||||
'UserLogo', 'UserLogoTitle', 'UserLogoMessage', 'UserIframeMessage', 'UserCss',
|
||||
'WelcomePageUrl', 'WelcomePageDisplay'
|
||||
'UserLogo', 'UserLogoTitle', 'UserLogoMessage', 'UserIframeMessage', 'UserCss'
|
||||
)))
|
||||
{
|
||||
$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, 'UserIframeMessage', 'branding', 'user_iframe_message', '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());
|
||||
|
|
@ -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
|
||||
{
|
||||
$bReal = false;
|
||||
|
|
@ -3587,56 +3539,6 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack
|
|||
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
|
||||
{
|
||||
$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
|
||||
{
|
||||
$this->IsAdminLoggined();
|
||||
|
|
@ -4168,22 +4017,6 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack
|
|||
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
|
||||
{
|
||||
return $this->DefaultResponse(__FUNCTION__,
|
||||
|
|
@ -8122,8 +7955,7 @@ NewThemeLink IncludeCss LoadingDescriptionEsc TemplatesLink LangLink IncludeBack
|
|||
|
||||
public function StaticPath(string $sPath) : string
|
||||
{
|
||||
$sResult = Utils::WebStaticPath().$sPath;
|
||||
return $sResult.(false === \strpos($sResult, '?') ? '?' : '&').'community';
|
||||
return Utils::WebStaticPath().$sPath;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -147,10 +147,7 @@ class Application extends \RainLoop\Config\AbstractConfig
|
|||
'user_logo' => array(''),
|
||||
'user_logo_title' => array(''),
|
||||
'user_logo_message' => array(''),
|
||||
'user_iframe_message' => array(''),
|
||||
|
||||
'welcome_page_url' => array(''),
|
||||
'welcome_page_display' => array('none')
|
||||
'user_iframe_message' => array('')
|
||||
),
|
||||
|
||||
'contacts' => array(
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ en:
|
|||
LABEL_PASSWORD: "Password"
|
||||
BUTTON_LOGIN: "Log into the admin panel"
|
||||
TOP_PANEL:
|
||||
LABEL_PREMIUM: "Premium"
|
||||
LABEL_ADMIN_PANEL: "Admin Panel"
|
||||
TABS_LABELS:
|
||||
LABEL_GENERAL_NAME: "General"
|
||||
|
|
@ -64,14 +63,6 @@ en:
|
|||
LABEL_USER_LOGO_TITLE: "Logo Title"
|
||||
LABEL_USER_LOGO_MESSAGE: "Logo (Message View)"
|
||||
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:
|
||||
LEGEND_CONTACTS: "Contacts"
|
||||
LEGEND_STORAGE: "Storage (PDO)"
|
||||
|
|
@ -167,14 +158,6 @@ en:
|
|||
LEGEND_ABOUT: "About"
|
||||
LABEL_TAG_HINT: "Simple, modern & fast web-based email client"
|
||||
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:
|
||||
TITLE_ACTIVATE: "Activate Subscription Key?"
|
||||
TITLE_ACTIVATION: "Activation..."
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ de_DE:
|
|||
LABEL_PASSWORD: "Passwort"
|
||||
BUTTON_LOGIN: "Im Adminpanel anmelden"
|
||||
TOP_PANEL:
|
||||
LABEL_PREMIUM: "Premium"
|
||||
LABEL_ADMIN_PANEL: "Adminpanel"
|
||||
TABS_LABELS:
|
||||
LABEL_GENERAL_NAME: "Allgemein"
|
||||
|
|
@ -62,14 +61,6 @@ de_DE:
|
|||
LABEL_USER_LOGO_TITLE: "Logo Titel"
|
||||
LABEL_USER_LOGO_MESSAGE: "Logo (Nachrichten-Ansicht)"
|
||||
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:
|
||||
LEGEND_CONTACTS: "Kontakte"
|
||||
LEGEND_STORAGE: "Speicher (PDO)"
|
||||
|
|
@ -164,14 +155,6 @@ de_DE:
|
|||
LEGEND_ABOUT: "Über"
|
||||
LABEL_TAG_HINT: "Einfacher, moderner und schneller webbasierter E-Mail-Client"
|
||||
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:
|
||||
TITLE_ACTIVATE: "Subscription-Schlüssel aktivieren?"
|
||||
TITLE_ACTIVATION: "Aktiviere..."
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ en_US:
|
|||
LABEL_PASSWORD: "Password"
|
||||
BUTTON_LOGIN: "Log into the admin panel"
|
||||
TOP_PANEL:
|
||||
LABEL_PREMIUM: "Premium"
|
||||
LABEL_ADMIN_PANEL: "Admin Panel"
|
||||
TABS_LABELS:
|
||||
LABEL_GENERAL_NAME: "General"
|
||||
|
|
@ -62,14 +61,6 @@ en_US:
|
|||
LABEL_USER_LOGO_TITLE: "Logo Title"
|
||||
LABEL_USER_LOGO_MESSAGE: "Logo (Message View)"
|
||||
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:
|
||||
LEGEND_CONTACTS: "Contacts"
|
||||
LEGEND_STORAGE: "Storage (PDO)"
|
||||
|
|
@ -164,14 +155,6 @@ en_US:
|
|||
LEGEND_ABOUT: "About"
|
||||
LABEL_TAG_HINT: "Simple, modern & fast web-based email client"
|
||||
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:
|
||||
TITLE_ACTIVATE: "Activate Subscription Key?"
|
||||
TITLE_ACTIVATION: "Activation..."
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ es_ES:
|
|||
LABEL_PASSWORD: "Contraseña"
|
||||
BUTTON_LOGIN: "Ingresar al panel de control"
|
||||
TOP_PANEL:
|
||||
LABEL_PREMIUM: "Premium"
|
||||
LABEL_ADMIN_PANEL: "Panel de Control"
|
||||
TABS_LABELS:
|
||||
LABEL_GENERAL_NAME: "General"
|
||||
|
|
@ -63,14 +62,6 @@ es_ES:
|
|||
LABEL_USER_LOGO_TITLE: "Título del Logo"
|
||||
LABEL_USER_LOGO_MESSAGE: "Logo (Vista desde mensaje)"
|
||||
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:
|
||||
LEGEND_CONTACTS: "Contactos"
|
||||
LEGEND_STORAGE: "Almacenamiento (PDO)"
|
||||
|
|
@ -165,14 +156,6 @@ es_ES:
|
|||
LEGEND_ABOUT: "Acerca"
|
||||
LABEL_TAG_HINT: "Moderno, simple y rápido cliente web de correo electrónico"
|
||||
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:
|
||||
TITLE_ACTIVATE: "¿Activar la clave de suscripción?"
|
||||
TITLE_ACTIVATION: "Activando..."
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ fr_FR:
|
|||
LABEL_PASSWORD: "Mot de passe"
|
||||
BUTTON_LOGIN: "Se connecter au panneau d'administration"
|
||||
TOP_PANEL:
|
||||
LABEL_PREMIUM: "Premium"
|
||||
LABEL_ADMIN_PANEL: "Panneau d'Administration"
|
||||
TABS_LABELS:
|
||||
LABEL_GENERAL_NAME: "Général"
|
||||
|
|
@ -63,14 +62,6 @@ fr_FR:
|
|||
LABEL_USER_LOGO_TITLE: "Titre du logo"
|
||||
LABEL_USER_LOGO_MESSAGE: "Logo (vue message)"
|
||||
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:
|
||||
LEGEND_CONTACTS: "Contacts"
|
||||
LEGEND_STORAGE: "Stockage (PDO)"
|
||||
|
|
@ -165,14 +156,6 @@ fr_FR:
|
|||
LEGEND_ABOUT: "A propos"
|
||||
LABEL_TAG_HINT: "Un client webmail simple, moderne et rapide "
|
||||
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:
|
||||
TITLE_ACTIVATE: "Activer une clé de souscription ?"
|
||||
TITLE_ACTIVATION: "Activation..."
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ nl_NL:
|
|||
LABEL_PASSWORD: "Wachtwoord"
|
||||
BUTTON_LOGIN: "Aanmelden in het beheer paneel"
|
||||
TOP_PANEL:
|
||||
LABEL_PREMIUM: "Premium"
|
||||
LABEL_ADMIN_PANEL: "Beheer paneel"
|
||||
TABS_LABELS:
|
||||
LABEL_GENERAL_NAME: "Algemeen"
|
||||
|
|
@ -62,14 +61,6 @@ nl_NL:
|
|||
LABEL_USER_LOGO_TITLE: "Logo titel"
|
||||
LABEL_USER_LOGO_MESSAGE: "Logo (berichtweergave)"
|
||||
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:
|
||||
LEGEND_CONTACTS: "Contactpersonen"
|
||||
LEGEND_STORAGE: "Opslag (PDO)"
|
||||
|
|
@ -163,14 +154,6 @@ nl_NL:
|
|||
LEGEND_ABOUT: "Over"
|
||||
LABEL_TAG_HINT: "Simpel, modern en snelle web-based e-mail client"
|
||||
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:
|
||||
TITLE_ACTIVATE: "Activatie code activeren?"
|
||||
TITLE_ACTIVATION: "Activeren..."
|
||||
|
|
|
|||
|
|
@ -240,8 +240,6 @@ en:
|
|||
BUTTON_MARK_AS_IMPORTANT: "Mark as important"
|
||||
BUTTON_OPEN_PGP: "OpenPGP (Plain Text Only)"
|
||||
BUTTON_REQUEST_DSN: "Request a delivery receipt"
|
||||
POPUPS_WELCOME_PAGE:
|
||||
BUTTON_CLOSE: "Close"
|
||||
POPUPS_ASK:
|
||||
BUTTON_YES: "Yes"
|
||||
BUTTON_NO: "No"
|
||||
|
|
|
|||
|
|
@ -238,8 +238,6 @@ de_DE:
|
|||
BUTTON_MARK_AS_IMPORTANT: "Als Wichtig markieren"
|
||||
BUTTON_OPEN_PGP: "OpenPGP (nur bei unformatiertem Text)"
|
||||
BUTTON_REQUEST_DSN: "Übermittlungsstatus anfordern"
|
||||
POPUPS_WELCOME_PAGE:
|
||||
BUTTON_CLOSE: "Schließen"
|
||||
POPUPS_ASK:
|
||||
BUTTON_YES: "Ja"
|
||||
BUTTON_NO: "Nein"
|
||||
|
|
|
|||
|
|
@ -239,8 +239,6 @@ en_GB:
|
|||
BUTTON_MARK_AS_IMPORTANT: "Mark as important"
|
||||
BUTTON_OPEN_PGP: "OpenPGP (Plain Text Only)"
|
||||
BUTTON_REQUEST_DSN: "Request a delivery receipt"
|
||||
POPUPS_WELCOME_PAGE:
|
||||
BUTTON_CLOSE: "Close"
|
||||
POPUPS_ASK:
|
||||
BUTTON_YES: "Yes"
|
||||
BUTTON_NO: "No"
|
||||
|
|
|
|||
|
|
@ -239,8 +239,6 @@ en_US:
|
|||
BUTTON_MARK_AS_IMPORTANT: "Mark as important"
|
||||
BUTTON_OPEN_PGP: "OpenPGP (Plain Text Only)"
|
||||
BUTTON_REQUEST_DSN: "Request a delivery receipt"
|
||||
POPUPS_WELCOME_PAGE:
|
||||
BUTTON_CLOSE: "Close"
|
||||
POPUPS_ASK:
|
||||
BUTTON_YES: "Yes"
|
||||
BUTTON_NO: "No"
|
||||
|
|
|
|||
|
|
@ -238,8 +238,6 @@ es_ES:
|
|||
BUTTON_MARK_AS_IMPORTANT: "Marcar como importante"
|
||||
BUTTON_OPEN_PGP: "OpenPGP (solo texto plano)"
|
||||
BUTTON_REQUEST_DSN: "Solicitar una confirmación de entrega"
|
||||
POPUPS_WELCOME_PAGE:
|
||||
BUTTON_CLOSE: "Cerrar"
|
||||
POPUPS_ASK:
|
||||
BUTTON_YES: "Sí"
|
||||
BUTTON_NO: "No"
|
||||
|
|
|
|||
|
|
@ -239,8 +239,6 @@ fr_FR:
|
|||
BUTTON_MARK_AS_IMPORTANT: "Marquer comme important"
|
||||
BUTTON_OPEN_PGP: "OpenPGP (Texte non formaté uniquement)"
|
||||
BUTTON_REQUEST_DSN: "Demander un accusé de réception"
|
||||
POPUPS_WELCOME_PAGE:
|
||||
BUTTON_CLOSE: "Fermer"
|
||||
POPUPS_ASK:
|
||||
BUTTON_YES: "Oui"
|
||||
BUTTON_NO: "Non"
|
||||
|
|
|
|||
|
|
@ -238,8 +238,6 @@ nl_NL:
|
|||
BUTTON_MARK_AS_IMPORTANT: "Markeer als belangrijk"
|
||||
BUTTON_OPEN_PGP: "OpenPGP (allen bij Platte Tekst)"
|
||||
BUTTON_REQUEST_DSN: "Ontvangstbevestiging vragen"
|
||||
POPUPS_WELCOME_PAGE:
|
||||
BUTTON_CLOSE: "Close"
|
||||
POPUPS_ASK:
|
||||
BUTTON_YES: "Ja"
|
||||
BUTTON_NO: "Nee"
|
||||
|
|
|
|||
|
|
@ -5,11 +5,8 @@
|
|||
<i class="icon-spinner animated" style="margin-top: 2px" data-bind="style: {'visibility': adminManLoadingVisibility }"></i>
|
||||
|
||||
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-bind="visible: !community">(<span data-bind="text: adminDomain"></span>)</span>
|
||||
</h4>
|
||||
<div class="btn-group pull-right">
|
||||
<a class="btn single btn-narrow" data-bind="click: logoutClick">
|
||||
|
|
|
|||
|
|
@ -19,60 +19,6 @@
|
|||
</span>
|
||||
</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>
|
||||
|
|
|
|||
|
|
@ -42,8 +42,9 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--
|
||||
<br />
|
||||
<ul class="nav nav-tabs" data-bind="visible: !community">
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active">
|
||||
<a class="i18n" data-i18n="TAB_BRANDING/LEGEND_LOGIN"
|
||||
href="#branding-login-section-id" data-toggle="tab"></a>
|
||||
|
|
@ -52,17 +53,12 @@
|
|||
<a class="i18n" data-i18n="TAB_BRANDING/LEGEND_USER"
|
||||
href="#branding-user-section-id" data-toggle="tab"></a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="i18n" data-i18n="TAB_BRANDING/LEGEND_WELCOME_PAGE"
|
||||
href="#branding-welcome-page-section-id" data-toggle="tab"></a>
|
||||
</li>
|
||||
</ul>
|
||||
<br />
|
||||
<div class="row" data-bind="visible: !community">
|
||||
<div class="row">
|
||||
<div class="tab-content span12">
|
||||
<div class="tab-pane active" id="branding-login-section-id">
|
||||
|
||||
<div class="form-horizontal" data-bind="css: {'disabled-form': !capa()}">
|
||||
<div class="form-horizontal">
|
||||
<div class="control-group">
|
||||
<label class="control-label" data-i18n="TAB_BRANDING/LABEL_LOGIN_LOGO"></label>
|
||||
<div class="controls">
|
||||
|
|
@ -72,8 +68,7 @@
|
|||
value: loginLogo,
|
||||
trigger: loginLogo.trigger,
|
||||
placeholder: 'https://',
|
||||
size: 5,
|
||||
enable: capa
|
||||
size: 5
|
||||
}
|
||||
}"></div>
|
||||
</div>
|
||||
|
|
@ -86,8 +81,7 @@
|
|||
params: {
|
||||
value: loginDescription,
|
||||
trigger: loginDescription.trigger,
|
||||
size: 5,
|
||||
enable: capa
|
||||
size: 5
|
||||
}
|
||||
}"></div>
|
||||
</div>
|
||||
|
|
@ -101,8 +95,7 @@
|
|||
value: loginBackground,
|
||||
trigger: loginBackground.trigger,
|
||||
placeholder: 'https://',
|
||||
size: 5,
|
||||
enable: capa
|
||||
size: 5
|
||||
}
|
||||
}"></div>
|
||||
</div>
|
||||
|
|
@ -116,18 +109,15 @@
|
|||
value: loginCss,
|
||||
trigger: loginCss.trigger,
|
||||
width: 495,
|
||||
enable: capa,
|
||||
rows: 7
|
||||
}
|
||||
}"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-pane" id="branding-user-section-id">
|
||||
|
||||
<div class="form-horizontal" data-bind="css: {'disabled-form': !capa()}">
|
||||
<div class="form-horizontal">
|
||||
<div class="control-group">
|
||||
<label class="control-label" data-i18n="TAB_BRANDING/LABEL_USER_LOGO"></label>
|
||||
<div class="controls">
|
||||
|
|
@ -137,8 +127,7 @@
|
|||
value: userLogo,
|
||||
trigger: userLogo.trigger,
|
||||
placeholder: 'https://',
|
||||
size: 5,
|
||||
enable: capa
|
||||
size: 5
|
||||
}
|
||||
}"></div>
|
||||
</div>
|
||||
|
|
@ -151,8 +140,7 @@
|
|||
params: {
|
||||
value: userLogoTitle,
|
||||
trigger: userLogoTitle.trigger,
|
||||
size: 5,
|
||||
enable: capa
|
||||
size: 5
|
||||
}
|
||||
}"></div>
|
||||
</div>
|
||||
|
|
@ -166,8 +154,7 @@
|
|||
value: userLogoMessage,
|
||||
trigger: userLogoMessage.trigger,
|
||||
placeholder: 'https://',
|
||||
size: 5,
|
||||
enable: capa
|
||||
size: 5
|
||||
}
|
||||
}"></div>
|
||||
</div>
|
||||
|
|
@ -181,58 +168,14 @@
|
|||
value: userCss,
|
||||
trigger: userCss.trigger,
|
||||
width: 495,
|
||||
enable: capa,
|
||||
rows: 7
|
||||
}
|
||||
}"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="tab-pane" id="branding-welcome-page-section-id">
|
||||
|
||||
<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>
|
||||
</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`)) {
|
||||
// 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/css/*'), $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/*.css'), $return_var);
|
||||
}
|
||||
|
||||
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/min/*'), $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/js/*.js'), $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/*.css'), $return_var);
|
||||
}
|
||||
|
||||
// Temporary rename folder to speed up PharData
|
||||
|
|
|
|||
|
|
@ -68,7 +68,6 @@ module.exports = function(publicPath, pro, mode) {
|
|||
plugins: [
|
||||
// new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
|
||||
new webpack.DefinePlugin({
|
||||
'RL_COMMUNITY': !pro,
|
||||
'process.env.NODE_ENV': JSON.stringify('production'),
|
||||
'process.env': {
|
||||
NODE_ENV: JSON.stringify('production')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue