This commit is contained in:
the-djmaze 2022-10-12 23:08:28 +02:00
parent 063ed7d844
commit dc241ded1b
12 changed files with 18 additions and 16 deletions

View file

@ -298,5 +298,5 @@ dev_email = ""
dev_password = "" dev_password = ""
[version] [version]
current = "2.18.5" current = "2.18.6"
saved = "Fri, 30 Sep 2022 12:34:56 +0000" saved = "Fri, 30 Sep 2022 12:34:56 +0000"

View file

@ -28,7 +28,7 @@ $keys = [
'version' 'version'
]; ];
foreach (glob(ROOT_DIR . '/plugins/*', GLOB_NOSORT | GLOB_ONLYDIR) as $dir) { foreach (glob(ROOT_DIR . '/plugins/*', GLOB_NOSORT | GLOB_ONLYDIR) as $dir) {
if (is_file("{$dir}/index.php")) { if (is_file("{$dir}/index.php") && !strpos($dir, '.bak')) {
require "{$dir}/index.php"; require "{$dir}/index.php";
$name = basename($dir); $name = basename($dir);
$class = new ReflectionClass(str_replace('-', '', $name) . 'Plugin'); $class = new ReflectionClass(str_replace('-', '', $name) . 'Plugin');
@ -50,7 +50,7 @@ foreach (glob(ROOT_DIR . '/plugins/*', GLOB_NOSORT | GLOB_ONLYDIR) as $dir) {
@unlink($tgz_destination); @unlink($tgz_destination);
@unlink("{$tar_destination}.gz"); @unlink("{$tar_destination}.gz");
$tar = new PharData($tar_destination); $tar = new PharData($tar_destination);
$tar->buildFromDirectory('./plugins/', '/' . \preg_quote("./plugins/{$name}/", '/') . '/'); $tar->buildFromDirectory('./plugins/', '/' . \preg_quote("./plugins/{$name}/", '/') . '((?!\.bak).)*$/');
$tar->compress(Phar::GZ); $tar->compress(Phar::GZ);
unlink($tar_destination); unlink($tar_destination);
rename("{$tar_destination}.gz", $tgz_destination); rename("{$tar_destination}.gz", $tgz_destination);
@ -58,7 +58,7 @@ foreach (glob(ROOT_DIR . '/plugins/*', GLOB_NOSORT | GLOB_ONLYDIR) as $dir) {
$phar_destination = PLUGINS_DEST_DIR . "/{$name}.phar"; $phar_destination = PLUGINS_DEST_DIR . "/{$name}.phar";
@unlink($phar_destination); @unlink($phar_destination);
$tar = new Phar($phar_destination); $tar = new Phar($phar_destination);
$tar->buildFromDirectory("./plugins/{$name}/"); $tar->buildFromDirectory("./plugins/{$name}/", '/^((?!\.bak).)*$/');
$tar->compress(Phar::GZ); $tar->compress(Phar::GZ);
unlink($phar_destination); unlink($phar_destination);
rename("{$phar_destination}.gz", $phar_destination); rename("{$phar_destination}.gz", $phar_destination);
@ -86,4 +86,3 @@ $manifest = str_replace('}]', "}\n]", $manifest);
$manifest = str_replace('","', "\",\n\t\t\"", $manifest); $manifest = str_replace('","', "\",\n\t\t\"", $manifest);
$manifest = str_replace('\/', '/', $manifest); $manifest = str_replace('\/', '/', $manifest);
file_put_contents(PLUGINS_DEST_DIR . "/packages.json", $manifest); file_put_contents(PLUGINS_DEST_DIR . "/packages.json", $manifest);
exit;

View file

@ -4,7 +4,7 @@ import { koComputable } from 'External/ko';
import { Layout } from 'Common/EnumsUser'; import { Layout } from 'Common/EnumsUser';
import { pInt } from 'Common/Utils'; import { pInt } from 'Common/Utils';
import { addObservablesTo } from 'External/ko'; import { addObservablesTo } from 'External/ko';
import { $htmlCL, SettingsGet, fireEvent } from 'Common/Globals'; import { $htmlCL, SettingsGet, SettingsCapa, fireEvent } from 'Common/Globals';
import { ThemeStore } from 'Stores/Theme'; import { ThemeStore } from 'Stores/Theme';
export const SettingsUserStore = new class { export const SettingsUserStore = new class {
@ -57,7 +57,7 @@ export const SettingsUserStore = new class {
let iAutoLogoutTimer; let iAutoLogoutTimer;
self.delayLogout = (() => { self.delayLogout = (() => {
clearTimeout(iAutoLogoutTimer); clearTimeout(iAutoLogoutTimer);
if (0 < self.autoLogout() && !SettingsGet('AccountSignMe')) { if (0 < self.autoLogout() && !SettingsGet('AccountSignMe') && SettingsCapa('AutoLogout')) {
iAutoLogoutTimer = setTimeout( iAutoLogoutTimer = setTimeout(
rl.app.logout, rl.app.logout,
self.autoLogout() * 60000 self.autoLogout() * 60000

View file

@ -345,6 +345,9 @@ html.rl-no-preview-pane {
background: #e8e8e8; background: #e8e8e8;
border-bottom: 1px solid #ddd; border-bottom: 1px solid #ddd;
} }
.attachmentsControls > * {
margin-right: 0.5em
}
.sm-bq-switcher > summary { .sm-bq-switcher > summary {
border: 1px solid #999; border: 1px solid #999;

View file

@ -460,7 +460,7 @@ export class MailMessageView extends AbstractViewRight {
} }
downloadAsZip() { downloadAsZip() {
const hashes = (currentMessage() ? currentMessage().attachments : []) const hashes = (currentMessage()?.attachments || [])
.map(item => item?.checked() /*&& !item?.isLinked()*/ ? item.download : '') .map(item => item?.checked() /*&& !item?.isLinked()*/ ? item.download : '')
.filter(v => v); .filter(v => v);
if (hashes.length) { if (hashes.length) {

View file

@ -1,4 +1,4 @@
This app packages SnappyMail <upstream>2.18.5</upstream>. This app packages SnappyMail <upstream>2.18.6</upstream>.
SnappyMail is a simple, modern, lightweight & fast web-based email client. SnappyMail is a simple, modern, lightweight & fast web-based email client.

View file

@ -4,7 +4,7 @@ RUN mkdir -p /app/code
WORKDIR /app/code WORKDIR /app/code
# If you change the extraction below, be sure to test on scaleway # If you change the extraction below, be sure to test on scaleway
VERSION=2.18.5 VERSION=2.18.6
RUN wget https://github.com/the-djmaze/snappymail/releases/download/v${VERSION}/snappymail-${VERSION}.zip -O /tmp/snappymail.zip && \ RUN wget https://github.com/the-djmaze/snappymail/releases/download/v${VERSION}/snappymail-${VERSION}.zip -O /tmp/snappymail.zip && \
unzip /tmp/snappymail.zip -d /app/code && \ unzip /tmp/snappymail.zip -d /app/code && \
rm /tmp/snappymail.zip && \ rm /tmp/snappymail.zip && \

View file

@ -3,7 +3,7 @@
<id>snappymail</id> <id>snappymail</id>
<name>SnappyMail</name> <name>SnappyMail</name>
<summary>SnappyMail Webmail</summary> <summary>SnappyMail Webmail</summary>
<version>2.18.5</version> <version>2.18.6</version>
<licence>agpl</licence> <licence>agpl</licence>
<author>SnappyMail, RainLoop Team, Nextgen-Networks, Tab Fitts, Nathan Kinkade, Pierre-Alain Bandinelli</author> <author>SnappyMail, RainLoop Team, Nextgen-Networks, Tab Fitts, Nathan Kinkade, Pierre-Alain Bandinelli</author>
<description>Simple, modern and fast web-based email client. After enabling in Nextcloud, go to Nextcloud admin panel, "Additionnal settings" and you will see a "SnappyMail webmail" section. There, click on the link to go to the SnappyMail admin panel.</description> <description>Simple, modern and fast web-based email client. After enabling in Nextcloud, go to Nextcloud admin panel, "Additionnal settings" and you will see a "SnappyMail webmail" section. There, click on the link to go to the SnappyMail admin panel.</description>

View file

@ -20,7 +20,7 @@ return "SnappyMail Webmail is a browser-based multilingual IMAP client with an a
# script_snappymail_versions() # script_snappymail_versions()
sub script_snappymail_versions sub script_snappymail_versions
{ {
return ( "2.18.5" ); return ( "2.18.6" );
} }
sub script_snappymail_version_desc sub script_snappymail_version_desc

View file

@ -3,7 +3,7 @@
"title": "SnappyMail", "title": "SnappyMail",
"description": "Simple, modern & fast web-based email client", "description": "Simple, modern & fast web-based email client",
"private": true, "private": true,
"version": "2.18.5", "version": "2.18.6",
"homepage": "https://snappymail.eu", "homepage": "https://snappymail.eu",
"author": { "author": {
"name": "DJ Maze", "name": "DJ Maze",

View file

@ -109,7 +109,7 @@ class ServiceActions
{ {
throw new Exceptions\ClientException(Notifications::InvalidToken, null, 'CSRF failed'); throw new Exceptions\ClientException(Notifications::InvalidToken, null, 'CSRF failed');
} }
else if (!empty($sAction)) if (!empty($sAction))
{ {
if ($this->oActions instanceof ActionsAdmin && 0 === \stripos($sAction, 'Admin') && !\in_array($sAction, ['AdminLogin', 'AdminLogout'])) { if ($this->oActions instanceof ActionsAdmin && 0 === \stripos($sAction, 'Admin') && !\in_array($sAction, ['AdminLogin', 'AdminLogout'])) {
$this->oActions->IsAdminLoggined(); $this->oActions->IsAdminLoggined();

View file

@ -1883,12 +1883,12 @@ var openpgp = (function (exports) {
}, },
/** /**
* Remove trailing spaces and tabs from each line * Remove trailing spaces, carriage returns and tabs from each line
*/ */
removeTrailingSpaces(text) { removeTrailingSpaces(text) {
return text.split('\n').map(line => { return text.split('\n').map(line => {
let i = line.length - 1; let i = line.length - 1;
for (; i >= 0 && (line[i] === ' ' || line[i] === '\t'); i--); for (; i >= 0 && (line[i] === ' ' || line[i] === '\t' || line[i] === '\r'); i--);
return line.substr(0, i + 1); return line.substr(0, i + 1);
}).join('\n'); }).join('\n');
}, },