mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-08-25 18:19:22 +03:00
Merge branch 'master' into sieve-gui
# Conflicts: # dev/Sieve/Parser.js
This commit is contained in:
commit
05bc9a60b1
6 changed files with 30 additions and 10 deletions
|
|
@ -52,6 +52,8 @@ http {
|
||||||
|
|
||||||
server {
|
server {
|
||||||
listen 8888;
|
listen 8888;
|
||||||
|
listen [::]:8888;
|
||||||
|
#listen [::]:8888 ipv6only=off;
|
||||||
root /snappymail;
|
root /snappymail;
|
||||||
index index.php;
|
index index.php;
|
||||||
charset utf-8;
|
charset utf-8;
|
||||||
|
|
|
||||||
|
|
@ -45,8 +45,16 @@ export class GrammarString /*extends String*/
|
||||||
/**
|
/**
|
||||||
* abstract
|
* abstract
|
||||||
*/
|
*/
|
||||||
export class GrammarComment extends GrammarString
|
export /*abstract*/ class GrammarComment extends GrammarString
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
constructor()
|
||||||
|
{
|
||||||
|
if (this.constructor == GrammarComment) {
|
||||||
|
throw Error("Abstract class can't be instantiated.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ import {
|
||||||
import {
|
import {
|
||||||
GrammarBracketComment,
|
GrammarBracketComment,
|
||||||
GrammarCommand,
|
GrammarCommand,
|
||||||
|
GrammarComment,
|
||||||
GrammarHashComment,
|
GrammarHashComment,
|
||||||
GrammarMultiLine,
|
GrammarMultiLine,
|
||||||
GrammarNumber,
|
GrammarNumber,
|
||||||
|
|
@ -28,7 +29,7 @@ import {
|
||||||
} from 'Sieve/Grammar';
|
} from 'Sieve/Grammar';
|
||||||
|
|
||||||
import { availableCommands } from 'Sieve/Commands';
|
import { availableCommands } from 'Sieve/Commands';
|
||||||
import { ConditionalCommand, RequireCommand } from 'Sieve/Commands/Controls';
|
import { ConditionalCommand, IfCommand, RequireCommand } from 'Sieve/Commands/Controls';
|
||||||
import { NotTest } from 'Sieve/Commands/Tests';
|
import { NotTest } from 'Sieve/Commands/Tests';
|
||||||
|
|
||||||
const
|
const
|
||||||
|
|
@ -156,7 +157,17 @@ export const parseScript = (script, name = 'script.sieve') => {
|
||||||
let new_command;
|
let new_command;
|
||||||
if (Commands[value]) {
|
if (Commands[value]) {
|
||||||
if ('elsif' === value || 'else' === value) {
|
if ('elsif' === value || 'else' === value) {
|
||||||
// (prev_command instanceof ConditionalCommand) || error('Not after IF condition');
|
let valid = false, cmd = (command ? command?.commands : tree), i = cmd?.length;
|
||||||
|
while (i) {
|
||||||
|
cmd[--i];
|
||||||
|
if (cmd[i] instanceof IfCommand) {
|
||||||
|
valid = true;
|
||||||
|
break;
|
||||||
|
} else if (typeof cmd[i] !== 'string' && !(cmd[i] instanceof GrammarComment)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
valid || error('Not after IF/ELSIF condition');
|
||||||
}
|
}
|
||||||
if ('allof' === value || 'anyof' === value) {
|
if ('allof' === value || 'anyof' === value) {
|
||||||
// (command instanceof ConditionalCommand || command instanceof NotTest) || error('Test-list not in conditional');
|
// (command instanceof ConditionalCommand || command instanceof NotTest) || error('Test-list not in conditional');
|
||||||
|
|
@ -266,7 +277,6 @@ export const parseScript = (script, name = 'script.sieve') => {
|
||||||
break;
|
break;
|
||||||
case T_BLOCK_END:
|
case T_BLOCK_END:
|
||||||
(command instanceof ConditionalCommand) || error(TokenError[type]);
|
(command instanceof ConditionalCommand) || error(TokenError[type]);
|
||||||
// prev_command = command;
|
|
||||||
command = levels.up();
|
command = levels.up();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -219,9 +219,9 @@
|
||||||
"DISPLAY_NAME": "Nom à afficher",
|
"DISPLAY_NAME": "Nom à afficher",
|
||||||
"LAST_NAME": "Nom",
|
"LAST_NAME": "Nom",
|
||||||
"FIRST_NAME": "Prénom",
|
"FIRST_NAME": "Prénom",
|
||||||
"MIDDLE_NAME": "Middle name",
|
"MIDDLE_NAME": "Deuxième Prénom",
|
||||||
"NAME_PREFIX": "Name prefix",
|
"NAME_PREFIX": "Civilité",
|
||||||
"NAME_SUFFIX": "Name suffix",
|
"NAME_SUFFIX": "Suffix",
|
||||||
"NICK_NAME": "Pseudonyme",
|
"NICK_NAME": "Pseudonyme",
|
||||||
"LABEL_READ_ONLY": "Lecture seule",
|
"LABEL_READ_ONLY": "Lecture seule",
|
||||||
"ADD_MENU_LABEL": "Ajouter",
|
"ADD_MENU_LABEL": "Ajouter",
|
||||||
|
|
|
||||||
|
|
@ -502,8 +502,8 @@
|
||||||
"IMAGES_OPTION_ALWAYS": "Zawsze pokazuj",
|
"IMAGES_OPTION_ALWAYS": "Zawsze pokazuj",
|
||||||
"IMAGES_WHITELIST": "Biała lista obrazów",
|
"IMAGES_WHITELIST": "Biała lista obrazów",
|
||||||
"MESSAGE_POPUP_WINDOW": "Pokaż w nowym oknie zamiast w nowej karcie",
|
"MESSAGE_POPUP_WINDOW": "Pokaż w nowym oknie zamiast w nowej karcie",
|
||||||
"MAILTO": "Register as 'mailto:' links handler",
|
"MAILTO": "Zarejestruj obsługę linków 'mailto:' jako domyślnego klienta poczty",
|
||||||
"HTML_TO_MD": "Convert HTML to Markdown instead of plain text"
|
"HTML_TO_MD": "Konwertuj HTML na Markdown zamiast zwykłego tekstu"
|
||||||
},
|
},
|
||||||
"SETTINGS_CONTACTS": {
|
"SETTINGS_CONTACTS": {
|
||||||
"LABEL_CONTACTS_AUTOSAVE": "Automatycznie dodawaj odbiorców do książki adresowej",
|
"LABEL_CONTACTS_AUTOSAVE": "Automatycznie dodawaj odbiorców do książki adresowej",
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
<div class="control-group" data-bind="css: {'error': nameError}, hidden: exists">
|
<div class="control-group" data-bind="css: {'error': nameError}, hidden: exists">
|
||||||
<input type="text" class="span5"
|
<input type="text" class="span5"
|
||||||
data-bind="value: name, hasfocus: !exists()"
|
data-bind="value: name"
|
||||||
autocorrect="off" autocapitalize="off"
|
autocorrect="off" autocapitalize="off"
|
||||||
data-i18n="[placeholder]GLOBAL/NAME">
|
data-i18n="[placeholder]GLOBAL/NAME">
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue