Removed more non-community (aka Prem/Premium/License) code

This commit is contained in:
djmaze 2020-08-24 20:56:14 +02:00
parent d5665463fe
commit e3e5929b21
35 changed files with 140 additions and 792 deletions

View file

@ -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",

View file

@ -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

View file

@ -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();

View file

@ -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 &&

View file

@ -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 {?}
*/ */

View file

@ -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();

View file

@ -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

View file

@ -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();
}
} }
} }

View file

@ -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() {

View file

@ -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);

View file

@ -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'));
} }
} }

View file

@ -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();

View file

@ -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' !==

View file

@ -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 };

View file

@ -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';
} }
/** /**

View file

@ -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(

View file

@ -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..."

View file

@ -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..."

View file

@ -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..."

View file

@ -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..."

View file

@ -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..."

View file

@ -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..."

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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>
&nbsp;&nbsp; &nbsp;&nbsp;
RainLoop RainLoop
<span data-bind="visible: capa && !community">(<span data-i18n="TOP_PANEL/LABEL_PREMIUM"></span>)</span>
&mdash; &mdash;
<span data-i18n="TOP_PANEL/LABEL_ADMIN_PANEL"></span> <span data-i18n="TOP_PANEL/LABEL_ADMIN_PANEL"></span>
&nbsp;&nbsp;
<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">

View file

@ -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>
&nbsp;&nbsp;
<span data-bind="text: errorDesc"></span>
</div>
<div data-bind="visible: 'available' === statusType()">
<i class="icon-bolt" style="color: red"></i>
&nbsp;&nbsp;
<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>
&nbsp;&nbsp;
<b data-i18n="HINTS/WARNING"></b>
&nbsp;&nbsp;
<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>
&nbsp;&nbsp;
<span data-i18n="TAB_ABOUT/BUTTON_DOWNLOAD"></span>
</a>
&nbsp;&nbsp;&nbsp;
<a class="btn" href="http://www.rainloop.net/changelog/" target="_blank">
<i class="icon-file-text"></i>
&nbsp;&nbsp;
<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>
&nbsp;&nbsp;
<span data-i18n="TAB_ABOUT/HINT_IS_UP_TO_DATE"></span>
</div>
<div data-bind="visible: 'updating' === statusType()">
<i class="icon-spinner animated"></i>
&nbsp;&nbsp;
<span data-i18n="TAB_ABOUT/LABEL_UPDATING"></span>
</div>
<div data-bind="visible: 'checking' === statusType()">
<i class="icon-spinner animated"></i>
&nbsp;&nbsp;
<span data-i18n="TAB_ABOUT/LABEL_CHECKING"></span>
</div>
</h5>
</div> </div>
</div> </div>
</div> </div>

View file

@ -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,187 +53,129 @@
<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"> <div data-bind="component: {
<div data-bind="component: { name: 'Input',
name: 'Input', params: {
params: { value: loginLogo,
value: loginLogo, trigger: loginLogo.trigger,
trigger: loginLogo.trigger, placeholder: 'https://',
placeholder: 'https://', size: 5
size: 5, }
enable: capa }"></div>
} </div>
}"></div> </div>
</div> <div class="control-group">
</div> <label class="control-label" data-i18n="TAB_BRANDING/LABEL_LOGIN_DESCRIPTION"></label>
<div class="control-group"> <div class="controls">
<label class="control-label" data-i18n="TAB_BRANDING/LABEL_LOGIN_DESCRIPTION"></label> <div data-bind="component: {
<div class="controls"> name: 'Input',
<div data-bind="component: { params: {
name: 'Input', value: loginDescription,
params: { trigger: loginDescription.trigger,
value: loginDescription, size: 5
trigger: loginDescription.trigger, }
size: 5, }"></div>
enable: capa </div>
} </div>
}"></div> <div class="control-group">
</div> <label class="control-label" data-i18n="TAB_BRANDING/LABEL_LOGIN_BACKGROUND"></label>
</div> <div class="controls">
<div class="control-group"> <div data-bind="component: {
<label class="control-label" data-i18n="TAB_BRANDING/LABEL_LOGIN_BACKGROUND"></label> name: 'Input',
<div class="controls"> params: {
<div data-bind="component: { value: loginBackground,
name: 'Input', trigger: loginBackground.trigger,
params: { placeholder: 'https://',
value: loginBackground, size: 5
trigger: loginBackground.trigger, }
placeholder: 'https://', }"></div>
size: 5, </div>
enable: capa </div>
} <div class="control-group">
}"></div> <label class="control-label" data-i18n="TAB_BRANDING/LABEL_LOGIN_CUSTOM_CSS"></label>
</div> <div class="controls">
</div> <div class="custom-css-wrapper" data-bind="component: {
<div class="control-group"> name: 'TextArea',
<label class="control-label" data-i18n="TAB_BRANDING/LABEL_LOGIN_CUSTOM_CSS"></label> params: {
<div class="controls"> value: loginCss,
<div class="custom-css-wrapper" data-bind="component: { trigger: loginCss.trigger,
name: 'TextArea', width: 495,
params: { rows: 7
value: loginCss, }
trigger: loginCss.trigger, }"></div>
width: 495, </div>
enable: capa, </div>
rows: 7 </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"> <div data-bind="component: {
<div data-bind="component: { name: 'Input',
name: 'Input', params: {
params: { value: userLogo,
value: userLogo, trigger: userLogo.trigger,
trigger: userLogo.trigger, placeholder: 'https://',
placeholder: 'https://', size: 5
size: 5, }
enable: capa }"></div>
} </div>
}"></div> </div>
</div> <div class="control-group">
</div> <label class="control-label" data-i18n="TAB_BRANDING/LABEL_USER_LOGO_TITLE"></label>
<div class="control-group"> <div class="controls">
<label class="control-label" data-i18n="TAB_BRANDING/LABEL_USER_LOGO_TITLE"></label> <div data-bind="component: {
<div class="controls"> name: 'Input',
<div data-bind="component: { params: {
name: 'Input', value: userLogoTitle,
params: { trigger: userLogoTitle.trigger,
value: userLogoTitle, size: 5
trigger: userLogoTitle.trigger, }
size: 5, }"></div>
enable: capa </div>
} </div>
}"></div> <div class="control-group">
</div> <label class="control-label" data-i18n="TAB_BRANDING/LABEL_USER_LOGO_MESSAGE"></label>
</div> <div class="controls">
<div class="control-group"> <div data-bind="component: {
<label class="control-label" data-i18n="TAB_BRANDING/LABEL_USER_LOGO_MESSAGE"></label> name: 'Input',
<div class="controls"> params: {
<div data-bind="component: { value: userLogoMessage,
name: 'Input', trigger: userLogoMessage.trigger,
params: { placeholder: 'https://',
value: userLogoMessage, size: 5
trigger: userLogoMessage.trigger, }
placeholder: 'https://', }"></div>
size: 5, </div>
enable: capa </div>
} <div class="control-group">
}"></div> <label class="control-label" data-i18n="TAB_BRANDING/LABEL_USER_CUSTOM_CSS"></label>
</div> <div class="controls">
</div> <div class="custom-css-wrapper" data-bind="component: {
<div class="control-group"> name: 'TextArea',
<label class="control-label" data-i18n="TAB_BRANDING/LABEL_USER_CUSTOM_CSS"></label> params: {
<div class="controls"> value: userCss,
<div class="custom-css-wrapper" data-bind="component: { trigger: userCss.trigger,
name: 'TextArea', width: 495,
params: { rows: 7
value: userCss, }
trigger: userCss.trigger, }"></div>
width: 495, </div>
enable: capa, </div>
rows: 7 </div>
}
}"></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>
</div> </div>
-->
<div class="row" data-bind="visible: !capa() && !community"> </div>
<div class="alert span8" style="margin-top: 10px;" data-i18n="[html]TAB_BRANDING/HTML_ALERT_PREMIUM"></div>
</div>
</div>

View file

@ -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>
&nbsp;&nbsp;
<span class="i18n" data-i18n="POPUPS_WELCOME_PAGE/BUTTON_CLOSE"></span>
</button>
</div>
</div>
</div>

View file

@ -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

View file

@ -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')