Skip to content

Commit

Permalink
Resolve #864
Browse files Browse the repository at this point in the history
  • Loading branch information
the-djmaze committed Jan 19, 2023
1 parent dba125a commit 79510eb
Show file tree
Hide file tree
Showing 10 changed files with 24 additions and 26 deletions.
17 changes: 10 additions & 7 deletions dev/Common/Links.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { pInt } from 'Common/Utils';
import { Settings } from 'Common/Globals';
import { doc, Settings } from 'Common/Globals';

const
BASE = doc.location.pathname.replace(/\/+$/,'') + '/',
HASH_PREFIX = '#/',
SERVER_PREFIX = './?',

adminPath = () => rl.adminArea() && !Settings.app('adminHostUse'),

prefix = () => SERVER_PREFIX + (adminPath() ? Settings.app('adminPath') : '');
prefix = () => BASE + '?' + (adminPath() ? Settings.app('adminPath') : '');

export const
SUB_QUERY_PREFIX = '&q[]=',
Expand All @@ -21,7 +21,7 @@ export const
/**
* @returns {string}
*/
logoutLink = () => adminPath() ? prefix() : './',
logoutLink = () => adminPath() ? prefix() : BASE,

/**
* @param {string} type
Expand All @@ -30,7 +30,7 @@ export const
* @returns {string}
*/
serverRequestRaw = (type, hash) =>
SERVER_PREFIX + '/Raw/' + SUB_QUERY_PREFIX + '/'
BASE + '?/Raw/' + SUB_QUERY_PREFIX + '/'
+ '0/' // Settings.get('AccountHash') ?
+ (type
? type + '/' + (hash ? SUB_QUERY_PREFIX + '/' + hash : '')
Expand All @@ -45,7 +45,7 @@ export const
serverRequestRaw('Download', download, customSpecSuffix),

proxy = url =>
SERVER_PREFIX + '/ProxyExternal/'
BASE + '?/ProxyExternal/'
+ btoa(url.replace(/ /g, '%20')).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, ''),
// + b64EncodeJSONSafe(url.replace(/ /g, '%20')),

Expand All @@ -55,13 +55,16 @@ export const
*/
serverRequest = type => prefix() + '/' + type + '/' + SUB_QUERY_PREFIX + '/0/',

// Is '?/Css/0/Admin' needed?
cssLink = theme => BASE + '?/Css/0/User/-/' + encodeURI(theme) + '/-/' + Date.now() + '/Hash/-/Json/',

/**
* @param {string} lang
* @param {boolean} isAdmin
* @returns {string}
*/
langLink = (lang, isAdmin) =>
SERVER_PREFIX + '/Lang/0/' + (isAdmin ? 'Admin' : 'App')
BASE + '?/Lang/0/' + (isAdmin ? 'Admin' : 'App')
+ '/' + encodeURI(lang)
+ '/' + Settings.app('version') + '/',

Expand Down
4 changes: 2 additions & 2 deletions dev/Stores/Theme.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import ko from 'ko';
import { $htmlCL, elementById, leftPanelDisabled, Settings, SettingsGet } from 'Common/Globals';
import { isArray, arrayLength } from 'Common/Utils';
import { serverRequestRaw } from 'Common/Links';
import { cssLink, serverRequestRaw } from 'Common/Links';
import { SaveSettingStatus } from 'Common/Enums';

let __themeTimer = 0;
Expand Down Expand Up @@ -41,7 +41,7 @@ export const
clearTimer = () => {
__themeTimer = setTimeout(() => themeTrigger(SaveSettingStatus.Idle), 1000);
},
url = themeStyle.dataset.href.replace(/(Admin|User)\/-\/[^/]+\//, '$1/-/' + value + '/') + 'Json/';
url = cssLink(value);

clearTimeout(__themeTimer);

Expand Down
8 changes: 4 additions & 4 deletions dev/boot.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
(doc => {

const
query = path => doc.location.pathname.replace(/\/+$/,'') + '/?/' + path,
qUri = path => doc.location.pathname.replace(/\/+$/,'') + '/?/' + path,
eId = id => doc.getElementById('rl-'+id),
app = eId('app'),
admin = app && '1' == app.dataset.admin,
layout = doc.cookie.match(/(^|;) ?rllayout=([^;]+)/) || '',
redirect = path => doc.location.replace(query(path)),
redirect = path => doc.location.replace(qUri(path)),

showError = msg => {
let div = eId('loading-error');
Expand Down Expand Up @@ -68,7 +68,7 @@ window.rl = {
cb = () => rl.app.bootstart();
loadScript(url)
.then(() => loadScript(url.replace('/libs.', `/${admin?'admin':'app'}.`)))
.then(() => appData.PluginsLink ? loadScript(appData.PluginsLink) : Promise.resolve())
.then(() => appData.PluginsLink ? loadScript(qUri(appData.PluginsLink)) : Promise.resolve())
.then(() => rl.app
? cb()
: doc.addEventListener('readystatechange', () => 'complete' == doc.readyState && cb())
Expand All @@ -87,7 +87,7 @@ window.rl = {
loadScript: loadScript
};

loadScript(query(`${admin ? 'Admin' : ''}AppData/0/${Math.random().toString().slice(2)}/`))
loadScript(qUri(`${admin ? 'Admin' : ''}AppData/0/${Math.random().toString().slice(2)}/`))
.catch(e => showError(e));

})(document);
4 changes: 4 additions & 0 deletions integrations/nextcloud/snappymail/css/embed.css
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ This stylesheet is used when SnappyMail runs in embed mode.
min-height: 100%;
}

#content #rl-app #rl-left, #content #rl-app #rl-right {
position: absolute;
}

.squire-wysiwyg {
min-width: 100%;
min-height: 100%;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,6 @@ public function index()
'BaseAppBootScriptNonce' => $sNonce,
'BaseLanguage' => $oActions->compileLanguage($sLanguage, $bAdmin),
'BaseAppBootCss' => \file_get_contents(APP_VERSION_ROOT_PATH.'static/css/boot'.$sAppCssMin.'.css'),
'BaseAppThemeCssLink' => $oActions->ThemeLink($bAdmin),
'BaseAppThemeCss' => \preg_replace(
'/\\s*([:;{},]+)\\s*/s',
'$1',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<style id="app-boot-css"><?php echo $_['BaseAppBootCss']; ?></style>
<style id="app-theme-style" data-href="<?php echo $_['BaseAppThemeCssLink']; ?>"><?php echo $_['BaseAppThemeCss']; ?></style>
<style id="app-theme-style"><?php echo $_['BaseAppThemeCss']; ?></style>
<div id="rl-app" data-admin="<?php echo $_['Admin']; ?>" spellcheck="false">
<div id="rl-loading">
<div id="rl-loading-desc"><?php echo $_['LoadingDescriptionEsc']; ?></div>
Expand Down
4 changes: 1 addition & 3 deletions snappymail/v/0.0.0/app/libraries/RainLoop/Actions.php
Original file line number Diff line number Diff line change
Expand Up @@ -869,15 +869,13 @@ public function AppData(bool $bAdmin): array
$aResult['System']['themes'] = $this->GetThemes();
}

$sStaticCache = $this->StaticCache();

$aResult['Theme'] = $this->GetTheme($bAdmin);

$aResult['Language'] = $this->ValidateLanguage($sLanguage, '', false);
$aResult['UserLanguage'] = $this->ValidateLanguage($UserLanguageRaw, '', false, true);

$aResult['PluginsLink'] = $this->oPlugins->HaveJs($bAdmin)
? './?/Plugins/0/' . ($bAdmin ? 'Admin' : 'User') . '/' . $sStaticCache . '/'
? 'Plugins/0/' . ($bAdmin ? 'Admin' : 'User') . '/' . $this->StaticCache() . '/'
: '';

$bAppJsDebug = $this->oConfig->Get('debug', 'javascript', false)
Expand Down
5 changes: 0 additions & 5 deletions snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Themes.php
Original file line number Diff line number Diff line change
Expand Up @@ -82,11 +82,6 @@ public function GetThemes(): array
return $aCache;
}

public function ThemeLink(bool $bAdmin): string
{
return './?/Css/0/' . ($bAdmin ? 'Admin' : 'User') . '/-/' . $this->GetTheme($bAdmin) . '/-/' . $this->StaticCache() . '/Hash/-/';
}

public function ValidateTheme(string $sTheme): string
{
return \in_array($sTheme, $this->GetThemes()) ? $sTheme : $this->Config()->Get('themes', 'default', 'Default');
Expand Down
1 change: 0 additions & 1 deletion snappymail/v/0.0.0/app/libraries/RainLoop/Service.php
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,6 @@ private static function RunResult() : bool
'{{BaseAppFaviconPngLinkTag}}' => $sFaviconPngLink ? '<link type="image/png" rel="shortcut icon" href="'.$sFaviconPngLink.'">' : '',
'{{BaseAppFaviconTouchLinkTag}}' => $sAppleTouchLink ? '<link type="image/png" rel="apple-touch-icon" href="'.$sAppleTouchLink.'">' : '',
'{{BaseAppMainCssLink}}' => Utils::WebStaticPath('css/'.($bAdmin ? 'admin' : 'app').$sAppCssMin.'.css'),
'{{BaseAppThemeCssLink}}' => $oActions->ThemeLink($bAdmin),
'{{BaseAppManifestLink}}' => Utils::WebStaticPath('manifest.json'),
'{{BaseFavIconSvg}}' => $sFaviconUrl ? '' : Utils::WebStaticPath('favicon.svg'),
'{{LoadingDescriptionEsc}}' => \htmlspecialchars($oConfig->Get('webmail', 'loading_description', 'SnappyMail'), ENT_QUOTES|ENT_IGNORE, 'UTF-8'),
Expand Down
4 changes: 2 additions & 2 deletions snappymail/v/0.0.0/app/templates/Index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

<head>
<noscript>
<meta http-equiv="refresh" content="0; URL=./?/NoScript">
<meta http-equiv="refresh" content="0; URL=?/NoScript">
</noscript>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
Expand All @@ -16,7 +16,7 @@
<link type="text/css" rel="stylesheet" href="{{BaseAppMainCssLink}}">
<link rel="manifest" href="{{BaseAppManifestLink}}">
<link rel="icon" href="{{BaseFavIconSvg}}" type="image/svg+xml">
<style id="app-theme-style" data-href="{{BaseAppThemeCssLink}}">{{BaseAppThemeCss}}</style>
<style id="app-theme-style">{{BaseAppThemeCss}}</style>
{{BaseAppFaviconPngLinkTag}}
{{BaseAppFaviconTouchLinkTag}}
</head>
Expand Down

0 comments on commit 79510eb

Please sign in to comment.