mirror of
https://github.com/the-djmaze/snappymail.git
synced 2024-09-20 07:35:55 +08:00
Synchronize localizations from Transifex
Update package.json dependencies Fix eslint errors webpack 2 -> webpack 3
This commit is contained in:
parent
36dbe0defd
commit
8da988fef2
1
.cmds
1
.cmds
|
@ -8,7 +8,6 @@ tx pull -a
|
|||
|
||||
# dependencies checker (checking only)
|
||||
yarn outdated
|
||||
npm-check --skip-unused --save-exact
|
||||
|
||||
# webpack
|
||||
webpack --color --watch
|
||||
|
|
11
.eslintrc.js
11
.eslintrc.js
|
@ -1,9 +1,6 @@
|
|||
|
||||
module.exports = {
|
||||
'extends': 'eslint:recommended',
|
||||
'ecmaFeatures': {
|
||||
'modules': true
|
||||
},
|
||||
"parser": "babel-eslint",
|
||||
'parserOptions': {
|
||||
'ecmaVersion': 6,
|
||||
|
@ -173,13 +170,9 @@ module.exports = {
|
|||
'id-blacklist': [2, 'x'],
|
||||
'id-length': [2, {'min': 1, 'max': 50}],
|
||||
'id-match': 2,
|
||||
'indent': [2, 'tab', {
|
||||
'indent': ['error', 'tab', {
|
||||
'SwitchCase': 1,
|
||||
'VariableDeclarator': {
|
||||
'var': 1,
|
||||
'let': 1,
|
||||
'const': 1
|
||||
}
|
||||
'VariableDeclarator': 1
|
||||
}],
|
||||
'jsx-quotes': 2,
|
||||
'key-spacing': 2,
|
||||
|
|
|
@ -1 +1 @@
|
|||
Rename this file to "MULTIPLY" to enable multiple domain installation
|
||||
Name this file as "MULTIPLY" to enable multiple domain installation.
|
42
_include.php
42
_include.php
|
@ -1,21 +1,21 @@
|
|||
<?php
|
||||
|
||||
// Rename this file to "include.php" to enable it.
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
function __get_custom_data_full_path()
|
||||
{
|
||||
return '';
|
||||
return '/var/external-rainloop-data-folder/'; // custom data folder path
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
function __get_additional_configuration_name()
|
||||
{
|
||||
return '';
|
||||
return defined('APP_SITE') && 0 < strlen(APP_SITE) ? APP_SITE.'.ini' : ''; // additional configuration file name
|
||||
}
|
||||
<?php
|
||||
|
||||
// Name this file as "include.php" to enable it.
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
function __get_custom_data_full_path()
|
||||
{
|
||||
return '';
|
||||
return '/var/external-rainloop-data-folder/'; // custom data folder path
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
function __get_additional_configuration_name()
|
||||
{
|
||||
return '';
|
||||
return defined('APP_SITE') && 0 < strlen(APP_SITE) ? APP_SITE.'.ini' : ''; // additional configuration file name
|
||||
}
|
||||
|
|
|
@ -91,15 +91,15 @@ class AbstractApp extends AbstractBoot
|
|||
}
|
||||
}, Magics.Time50ms));
|
||||
|
||||
// DEBUG
|
||||
// Events.sub({
|
||||
// 'window.resize': function() {
|
||||
// window.console.log('window.resize');
|
||||
// },
|
||||
// 'window.resize.real': function() {
|
||||
// window.console.log('window.resize.real');
|
||||
// }
|
||||
// });
|
||||
// DEBUG
|
||||
// Events.sub({
|
||||
// 'window.resize': function() {
|
||||
// window.console.log('window.resize');
|
||||
// },
|
||||
// 'window.resize.real': function() {
|
||||
// window.console.log('window.resize.real');
|
||||
// }
|
||||
// });
|
||||
|
||||
$doc.on('keydown', (event) => {
|
||||
if (event && event.ctrlKey)
|
||||
|
@ -172,7 +172,7 @@ class AbstractApp extends AbstractBoot
|
|||
else
|
||||
{
|
||||
this.iframe.attr('src', link);
|
||||
// window.document.location.href = link;
|
||||
// window.document.location.href = link;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -313,7 +313,7 @@ class AbstractApp extends AbstractBoot
|
|||
ko.components.register('Date', require('Component/Date').default);
|
||||
|
||||
ko.components.register('x-script', require('Component/Script').default);
|
||||
// ko.components.register('svg-icon', require('Component/SvgIcon').default);
|
||||
// ko.components.register('svg-icon', require('Component/SvgIcon').default);
|
||||
|
||||
if (Settings.appSettingsGet('materialDesign') && bAnimationSupported)
|
||||
{
|
||||
|
@ -322,8 +322,8 @@ class AbstractApp extends AbstractBoot
|
|||
}
|
||||
else
|
||||
{
|
||||
// ko.components.register('Checkbox', require('Component/Classic/Checkbox').default);
|
||||
// ko.components.register('CheckboxSimple', require('Component/Classic/Checkbox').default);
|
||||
// ko.components.register('Checkbox', require('Component/Classic/Checkbox').default);
|
||||
// ko.components.register('CheckboxSimple', require('Component/Classic/Checkbox').default);
|
||||
ko.components.register('Checkbox', require('Component/Checkbox').default);
|
||||
ko.components.register('CheckboxSimple', require('Component/Checkbox').default);
|
||||
}
|
||||
|
|
109
dev/App/User.js
109
dev/App/User.js
|
@ -192,31 +192,37 @@ class AppUser extends AbstractApp
|
|||
}
|
||||
|
||||
MessageStore.messageListLoading(true);
|
||||
Remote.messageList((sResult, oData, bCached) => {
|
||||
Remote.messageList(
|
||||
(sResult, oData, bCached) => {
|
||||
|
||||
if (StorageResultType.Success === sResult && oData && oData.Result)
|
||||
{
|
||||
MessageStore.messageListError('');
|
||||
MessageStore.messageListLoading(false);
|
||||
if (StorageResultType.Success === sResult && oData && oData.Result)
|
||||
{
|
||||
MessageStore.messageListError('');
|
||||
MessageStore.messageListLoading(false);
|
||||
|
||||
MessageStore.setMessageList(oData, bCached);
|
||||
}
|
||||
else if (StorageResultType.Unload === sResult)
|
||||
{
|
||||
MessageStore.messageListError('');
|
||||
MessageStore.messageListLoading(false);
|
||||
}
|
||||
else if (StorageResultType.Abort !== sResult)
|
||||
{
|
||||
MessageStore.messageList([]);
|
||||
MessageStore.messageListLoading(false);
|
||||
MessageStore.messageListError(oData && oData.ErrorCode ?
|
||||
getNotification(oData.ErrorCode) : i18n('NOTIFICATIONS/CANT_GET_MESSAGE_LIST')
|
||||
);
|
||||
}
|
||||
MessageStore.setMessageList(oData, bCached);
|
||||
}
|
||||
else if (StorageResultType.Unload === sResult)
|
||||
{
|
||||
MessageStore.messageListError('');
|
||||
MessageStore.messageListLoading(false);
|
||||
}
|
||||
else if (StorageResultType.Abort !== sResult)
|
||||
{
|
||||
MessageStore.messageList([]);
|
||||
MessageStore.messageListLoading(false);
|
||||
MessageStore.messageListError(oData && oData.ErrorCode ?
|
||||
getNotification(oData.ErrorCode) : i18n('NOTIFICATIONS/CANT_GET_MESSAGE_LIST')
|
||||
);
|
||||
}
|
||||
|
||||
}, FolderStore.currentFolderFullNameRaw(), iOffset, SettingsStore.messagesPerPage(),
|
||||
MessageStore.messageListSearch(), MessageStore.messageListThreadUid());
|
||||
},
|
||||
FolderStore.currentFolderFullNameRaw(),
|
||||
iOffset,
|
||||
SettingsStore.messagesPerPage(),
|
||||
MessageStore.messageListSearch(),
|
||||
MessageStore.messageListThreadUid()
|
||||
);
|
||||
}
|
||||
|
||||
recacheInboxMessageList() {
|
||||
|
@ -524,32 +530,32 @@ class AppUser extends AbstractApp
|
|||
|
||||
accountsCounts() {
|
||||
return false;
|
||||
// AccountStore.accounts.loading(true);
|
||||
//
|
||||
// Remote.accountsCounts((sResult, oData) => {
|
||||
//
|
||||
// AccountStore.accounts.loading(false);
|
||||
//
|
||||
// if (StorageResultType.Success === sResult && oData.Result && oData.Result['Counts'])
|
||||
// {
|
||||
// var
|
||||
// sEmail = AccountStore.email(),
|
||||
// aAcounts = AccountStore.accounts()
|
||||
// ;
|
||||
//
|
||||
// _.each(oData.Result['Counts'], (oItem) => {
|
||||
//
|
||||
// var oAccount = _.find(aAcounts, (oAccount) => {
|
||||
// return oAccount && oItem[0] === oAccount.email && sEmail !== oAccount.email;
|
||||
// });
|
||||
//
|
||||
// if (oAccount)
|
||||
// {
|
||||
// oAccount.count(pInt(oItem[1]));
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
// });
|
||||
// AccountStore.accounts.loading(true);
|
||||
//
|
||||
// Remote.accountsCounts((sResult, oData) => {
|
||||
//
|
||||
// AccountStore.accounts.loading(false);
|
||||
//
|
||||
// if (StorageResultType.Success === sResult && oData.Result && oData.Result['Counts'])
|
||||
// {
|
||||
// var
|
||||
// sEmail = AccountStore.email(),
|
||||
// aAcounts = AccountStore.accounts()
|
||||
// ;
|
||||
//
|
||||
// _.each(oData.Result['Counts'], (oItem) => {
|
||||
//
|
||||
// var oAccount = _.find(aAcounts, (oAccount) => {
|
||||
// return oAccount && oItem[0] === oAccount.email && sEmail !== oAccount.email;
|
||||
// });
|
||||
//
|
||||
// if (oAccount)
|
||||
// {
|
||||
// oAccount.count(pInt(oItem[1]));
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
// });
|
||||
}
|
||||
|
||||
accountsAndIdentities(bBoot) {
|
||||
|
@ -1299,7 +1305,7 @@ class AppUser extends AbstractApp
|
|||
{
|
||||
this.setWindowTitle(i18n('TITLES/LOADING'));
|
||||
|
||||
// require.ensure([], function() { // require code splitting
|
||||
// require.ensure([], function() { // require code splitting
|
||||
|
||||
this.foldersReload((value) => {
|
||||
|
||||
|
@ -1362,7 +1368,7 @@ class AppUser extends AbstractApp
|
|||
startScreens([
|
||||
MailBoxUserScreen,
|
||||
Settings.capa(Capa.Settings) ? SettingsUserScreen : null
|
||||
// false ? AboutUserScreen : null
|
||||
// false ? AboutUserScreen : null
|
||||
]);
|
||||
|
||||
if (allowGoogle || allowFacebook || allowTwitter)
|
||||
|
@ -1444,8 +1450,7 @@ class AppUser extends AbstractApp
|
|||
}
|
||||
});
|
||||
|
||||
// }); // require code splitting
|
||||
|
||||
// }); // require code splitting
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
|
||||
import window from 'window';
|
||||
import progressJs from 'progressJs';
|
||||
import Promise from 'Promise';
|
||||
|
||||
import {jassl} from 'Common/Jassl';
|
||||
import {getHash, setHash, clearHash} from 'Storage/RainLoop';
|
||||
|
@ -226,28 +225,30 @@ function runApp()
|
|||
p.setOptions({theme: 'rainloop'});
|
||||
p.start().set(5);
|
||||
|
||||
const
|
||||
libs = jassl(appData.StaticLibJsLink).then(() => {
|
||||
if (window.$)
|
||||
const libs = jassl(appData.StaticLibJsLink).then(() => {
|
||||
if (window.$)
|
||||
{
|
||||
window.$('#rl-check').remove();
|
||||
|
||||
if (appData.IncludeBackground)
|
||||
{
|
||||
window.$('#rl-check').remove();
|
||||
|
||||
if (appData.IncludeBackground)
|
||||
{
|
||||
window.$('#rl-bg').attr('style', 'background-image: none !important;')
|
||||
.backstretch(appData.IncludeBackground.replace('{{USER}}',
|
||||
(window.__rlah ? (window.__rlah() || '0') : '0')), {fade: 100, centeredX: true, centeredY: true})
|
||||
.removeAttr('style');
|
||||
}
|
||||
window.$('#rl-bg')
|
||||
.attr('style', 'background-image: none !important;')
|
||||
.backstretch(
|
||||
appData.IncludeBackground.replace('{{USER}}', (window.__rlah ? (window.__rlah() || '0') : '0')),
|
||||
{fade: 100, centeredX: true, centeredY: true}
|
||||
)
|
||||
.removeAttr('style');
|
||||
}
|
||||
}),
|
||||
common = Promise.all([
|
||||
// jassl('https://code.jquery.com/jquery-migrate-3.0.0.js'),
|
||||
jassl(appData.TemplatesLink),
|
||||
jassl(appData.LangLink)
|
||||
]);
|
||||
}
|
||||
});
|
||||
|
||||
Promise.all([libs, common])
|
||||
const common = window.Promise.all([
|
||||
jassl(appData.TemplatesLink),
|
||||
jassl(appData.LangLink)
|
||||
]);
|
||||
|
||||
window.Promise.all([libs, common])
|
||||
.then(() => {
|
||||
p.set(30);
|
||||
return jassl(useJsNextBundle ? appData.StaticAppJsNextLink : appData.StaticAppJsLink);
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
import window from 'window';
|
||||
import Promise from 'Promise';
|
||||
|
||||
// let rainloopCaches = window.caches && window.caches.open ? window.caches : null;
|
||||
|
||||
|
@ -11,7 +10,7 @@ import Promise from 'Promise';
|
|||
*/
|
||||
export function jassl(src, async = false) {
|
||||
|
||||
if (!Promise || !Promise.all)
|
||||
if (!window.Promise || !window.Promise.all)
|
||||
{
|
||||
throw new Error('Promises are not available your environment.');
|
||||
}
|
||||
|
@ -21,7 +20,7 @@ export function jassl(src, async = false) {
|
|||
throw new Error('src should not be empty.');
|
||||
}
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
return new window.Promise((resolve, reject) => {
|
||||
|
||||
const element = window.document.createElement('script');
|
||||
|
||||
|
|
|
@ -8,7 +8,6 @@ import {pInt, isUnd, isNull, has, microtime, inArray} from 'Common/Utils';
|
|||
import {$html, bAnimationSupported} from 'Common/Globals';
|
||||
import {reload as momentorReload} from 'Common/Momentor';
|
||||
import {langLink} from 'Common/Links';
|
||||
import Promise from 'Promise';
|
||||
|
||||
let I18N_DATA = window.rainloopI18N || {};
|
||||
|
||||
|
@ -304,7 +303,7 @@ export function reload(admin, language)
|
|||
|
||||
$html.addClass('rl-changing-language');
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
return new window.Promise((resolve, reject) => {
|
||||
$.ajax({
|
||||
url: langLink(language, admin),
|
||||
dataType: 'script',
|
||||
|
@ -319,7 +318,7 @@ export function reload(admin, language)
|
|||
$html
|
||||
.removeClass('rl-changing-language')
|
||||
.removeClass('rl-rtl rl-ltr')
|
||||
// .attr('dir', isRtl ? 'rtl' : 'ltr')
|
||||
// .attr('dir', isRtl ? 'rtl' : 'ltr')
|
||||
.addClass(isRtl ? 'rl-rtl' : 'rl-ltr');
|
||||
|
||||
resolve();
|
||||
|
|
|
@ -763,27 +763,29 @@ export function htmlToPlain(html)
|
|||
|
||||
text = '';
|
||||
|
||||
const
|
||||
convertBlockquote = (blockquoteText) => {
|
||||
blockquoteText = '> ' + trim(blockquoteText).replace(/\n/gm, '\n> ');
|
||||
return blockquoteText.replace(/(^|\n)([> ]+)/gm,
|
||||
(...args) => (args && 2 < args.length ? args[1] + trim(args[2].replace(/[\s]/g, '')) + ' ' : ''));
|
||||
},
|
||||
convertDivs = (...args) => {
|
||||
if (args && 1 < args.length)
|
||||
{
|
||||
let divText = trim(args[1]);
|
||||
if (0 < divText.length)
|
||||
{
|
||||
divText = divText.replace(/<div[^>]*>([\s\S\r\n]*)<\/div>/gmi, convertDivs);
|
||||
divText = '\n' + trim(divText) + '\n';
|
||||
}
|
||||
const convertBlockquote = (blockquoteText) => {
|
||||
blockquoteText = '> ' + trim(blockquoteText).replace(/\n/gm, '\n> ');
|
||||
return blockquoteText.replace(/(^|\n)([> ]+)/gm,
|
||||
(...args) => (args && 2 < args.length ? args[1] + trim(args[2].replace(/[\s]/g, '')) + ' ' : ''));
|
||||
};
|
||||
|
||||
return divText;
|
||||
const convertDivs = (...args) => {
|
||||
if (args && 1 < args.length)
|
||||
{
|
||||
let divText = trim(args[1]);
|
||||
if (0 < divText.length)
|
||||
{
|
||||
divText = divText.replace(/<div[^>]*>([\s\S\r\n]*)<\/div>/gmi, convertDivs);
|
||||
divText = '\n' + trim(divText) + '\n';
|
||||
}
|
||||
|
||||
return '';
|
||||
},
|
||||
return divText;
|
||||
}
|
||||
|
||||
return '';
|
||||
};
|
||||
|
||||
const
|
||||
convertPre = (...args) => (args && 1 < args.length ? args[1].toString().replace(/[\n]/gm, '<br />').replace(/[\r]/gm, '') : ''),
|
||||
fixAttibuteValue = (...args) => (args && 1 < args.length ? '' + args[1] + _.escape(args[2]) : ''),
|
||||
convertLinks = (...args) => (args && 1 < args.length ? trim(args[1]) : '');
|
||||
|
@ -935,7 +937,7 @@ export function plainToHtml(plain, findEmailAndLinksInText = false)
|
|||
plain = aText.join('\n');
|
||||
|
||||
plain = plain
|
||||
// .replace(/~~~\/blockquote~~~\n~~~blockquote~~~/g, '\n')
|
||||
// .replace(/~~~\/blockquote~~~\n~~~blockquote~~~/g, '\n')
|
||||
.replace(/&/g, '&')
|
||||
.replace(/>/g, '>').replace(/</g, '<')
|
||||
.replace(/~~~blockquote~~~[\s]*/g, '<blockquote>')
|
||||
|
@ -1037,7 +1039,7 @@ export function folderListOptionsBuilder(aSystem, aList, aDisabled, aHeaderLines
|
|||
for (iIndex = 0, iLen = aList.length; iIndex < iLen; iIndex++)
|
||||
{
|
||||
oItem = aList[iIndex];
|
||||
// if (oItem.subScribed() || !oItem.existen || bBuildUnvisible)
|
||||
// if (oItem.subScribed() || !oItem.existen || bBuildUnvisible)
|
||||
if ((oItem.subScribed() || !oItem.existen || bBuildUnvisible) && (oItem.selectable || oItem.hasSubScribedSubfolders()))
|
||||
{
|
||||
if (fVisibleCallback ? fVisibleCallback(oItem) : true)
|
||||
|
|
|
@ -23,9 +23,11 @@ class ScriptComponent extends AbstractComponent
|
|||
{
|
||||
params.element.text('');
|
||||
params.element.replaceWith(
|
||||
$(script).text(params.component.templateNodes[0] &&
|
||||
params.component.templateNodes[0].nodeValue ?
|
||||
params.component.templateNodes[0].nodeValue : ''));
|
||||
$(script).text(
|
||||
params.component.templateNodes[0] && params.component.templateNodes[0].nodeValue ?
|
||||
params.component.templateNodes[0].nodeValue : ''
|
||||
)
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
20
dev/External/ko.js
vendored
20
dev/External/ko.js
vendored
|
@ -73,8 +73,8 @@ ko.bindingHandlers.editor = {
|
|||
|
||||
fValue.subscribe(fUpdateEditorValue);
|
||||
|
||||
// ko.utils.domNodeDisposal.addDisposeCallback(element, () => {
|
||||
// });
|
||||
// ko.utils.domNodeDisposal.addDisposeCallback(element, () => {
|
||||
// });
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -318,8 +318,8 @@ ko.bindingHandlers.registrateBootstrapDropdown = {
|
|||
require('Common/Utils').detectDropdownVisibility();
|
||||
});
|
||||
|
||||
// ko.utils.domNodeDisposal.addDisposeCallback(element, () => {
|
||||
// });
|
||||
// ko.utils.domNodeDisposal.addDisposeCallback(element, () => {
|
||||
// });
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -897,12 +897,12 @@ ko.bindingHandlers.emailsTags = {
|
|||
focusCallback: fFocusCallback,
|
||||
inputDelimiters: [',', ';', '\n'],
|
||||
autoCompleteSource: fAutoCompleteSource,
|
||||
// elementHook: (el, item) => {
|
||||
// if (el && item)
|
||||
// {
|
||||
// el.addClass('pgp');
|
||||
// }
|
||||
// },
|
||||
// elementHook: (el, item) => {
|
||||
// if (el && item)
|
||||
// {
|
||||
// el.addClass('pgp');
|
||||
// }
|
||||
// },
|
||||
parseHook: (input) => _.map(input, (inputValue) => {
|
||||
const value = Utils.trim(inputValue);
|
||||
if ('' !== value)
|
||||
|
|
|
@ -63,21 +63,15 @@ export const staticFileType = _.memoize((ext, mimeType) => {
|
|||
break;
|
||||
case -1 < inArray(mimeTypeParts[1], [
|
||||
'zip', '7z', 'tar', 'rar', 'gzip', 'bzip', 'bzip2', 'x-zip', 'x-7z', 'x-rar', 'x-tar', 'x-gzip', 'x-bzip', 'x-bzip2', 'x-zip-compressed', 'x-7z-compressed', 'x-rar-compressed'
|
||||
]) || -1 < inArray(ext, [
|
||||
'zip', '7z', 'tar', 'rar', 'gzip', 'bzip', 'bzip2'
|
||||
]):
|
||||
]) || -1 < inArray(ext, ['zip', '7z', 'tar', 'rar', 'gzip', 'bzip', 'bzip2']):
|
||||
result = FileType.Archive;
|
||||
break;
|
||||
case -1 < inArray(mimeTypeParts[1], ['pdf', 'x-pdf']) || -1 < inArray(ext, [
|
||||
'pdf'
|
||||
]):
|
||||
case -1 < inArray(mimeTypeParts[1], ['pdf', 'x-pdf']) || -1 < inArray(ext, ['pdf']):
|
||||
result = FileType.Pdf;
|
||||
break;
|
||||
case -1 < inArray(mimeType, [
|
||||
'application/pgp-signature', 'application/pgp-keys'
|
||||
]) || -1 < inArray(ext, [
|
||||
'asc', 'pem', 'ppk'
|
||||
]):
|
||||
]) || -1 < inArray(ext, ['asc', 'pem', 'ppk']):
|
||||
result = FileType.Certificate;
|
||||
break;
|
||||
case -1 < inArray(mimeType, ['application/pkcs7-signature']) ||
|
||||
|
|
|
@ -223,35 +223,34 @@ class EmailModel
|
|||
return false;
|
||||
}
|
||||
|
||||
const
|
||||
substr = (str, start, len) => {
|
||||
str = pString(str);
|
||||
let end = str.length;
|
||||
const substr = (str, start, len) => {
|
||||
str = pString(str);
|
||||
let end = str.length;
|
||||
|
||||
if (0 > start)
|
||||
{
|
||||
start += end;
|
||||
}
|
||||
if (0 > start)
|
||||
{
|
||||
start += end;
|
||||
}
|
||||
|
||||
end = 'undefined' === typeof len ? end : (0 > len ? len + end : len + start);
|
||||
end = 'undefined' === typeof len ? end : (0 > len ? len + end : len + start);
|
||||
|
||||
return start >= str.length || 0 > start || start > end ? false : str.slice(start, end);
|
||||
},
|
||||
return start >= str.length || 0 > start || start > end ? false : str.slice(start, end);
|
||||
};
|
||||
|
||||
substrReplace = (str, replace, start, length) => {
|
||||
str = pString(str);
|
||||
if (0 > start)
|
||||
{
|
||||
start += str.length;
|
||||
}
|
||||
const substrReplace = (str, replace, start, length) => {
|
||||
str = pString(str);
|
||||
if (0 > start)
|
||||
{
|
||||
start += str.length;
|
||||
}
|
||||
|
||||
length = 'undefined' !== typeof length ? length : str.length;
|
||||
if (0 > length)
|
||||
{
|
||||
length = length + str.length - start;
|
||||
}
|
||||
return str.slice(0, start) + replace.substr(0, length) + replace.slice(length) + str.slice(start + length);
|
||||
};
|
||||
length = 'undefined' !== typeof length ? length : str.length;
|
||||
if (0 > length)
|
||||
{
|
||||
length = length + str.length - start;
|
||||
}
|
||||
return str.slice(0, start) + replace.substr(0, length) + replace.slice(length) + str.slice(start + length);
|
||||
};
|
||||
|
||||
let
|
||||
$sName = '',
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
import window from 'window';
|
||||
import $ from '$';
|
||||
import Promise from 'Promise';
|
||||
|
||||
import {ajax} from 'Common/Links';
|
||||
import {microtime, isUnd, isNormal, pString, pInt, inArray} from 'Common/Utils';
|
||||
|
@ -44,7 +44,7 @@ class AbstractAjaxPromises extends AbstractBasicPromises
|
|||
|
||||
ajaxRequest(action, isPost, timeOut, params, additionalGetString, fTrigger) {
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
return new window.Promise((resolve, reject) => {
|
||||
|
||||
const start = microtime();
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
import Promise from 'Promise';
|
||||
import window from 'window';
|
||||
import {isArray} from 'Common/Utils';
|
||||
|
||||
export class AbstractBasicPromises
|
||||
|
@ -12,11 +12,11 @@ export class AbstractBasicPromises
|
|||
}
|
||||
|
||||
fastResolve(mData) {
|
||||
return Promise.resolve(mData);
|
||||
return window.Promise.resolve(mData);
|
||||
}
|
||||
|
||||
fastReject(mData) {
|
||||
return Promise.reject(mData);
|
||||
return window.Promise.reject(mData);
|
||||
}
|
||||
|
||||
setTrigger(trigger, value) {
|
||||
|
|
|
@ -337,8 +337,7 @@ class RemoteUserAjax extends AbstractAjaxRemote
|
|||
UidNext: inboxUidNext,
|
||||
UseThreads: useThreads ? '1' : '0',
|
||||
ThreadUid: useThreads ? sThreadUid : ''
|
||||
}, '' === sSearch ? DEFAULT_AJAX_TIMEOUT : SEARCH_AJAX_TIMEOUT,
|
||||
'', bSilent ? [] : ['MessageList']);
|
||||
}, '' === sSearch ? DEFAULT_AJAX_TIMEOUT : SEARCH_AJAX_TIMEOUT, '', bSilent ? [] : ['MessageList']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -167,9 +167,10 @@ class AbstractSettingsScreen extends AbstractScreen
|
|||
|
||||
routes() {
|
||||
const
|
||||
DefaultViewModel = _.find(VIEW_MODELS.settings,
|
||||
(SettingsViewModel) => SettingsViewModel && SettingsViewModel.__rlSettingsData && SettingsViewModel.__rlSettingsData.IsDefault
|
||||
),
|
||||
DefaultViewModel = _.find(
|
||||
VIEW_MODELS.settings,
|
||||
(SettingsViewModel) => SettingsViewModel && SettingsViewModel.__rlSettingsData && SettingsViewModel.__rlSettingsData.IsDefault
|
||||
),
|
||||
defaultRoute = DefaultViewModel && DefaultViewModel.__rlSettingsData ? DefaultViewModel.__rlSettingsData.Route : 'general',
|
||||
rules = {
|
||||
subname: /^(.*)$/,
|
||||
|
|
|
@ -23,16 +23,16 @@ class AccountUserStore
|
|||
() => _.compact(_.map(this.accounts(), (item) => (item ? item.email : null))));
|
||||
|
||||
this.accountsUnreadCount = ko.computed(() => 0);
|
||||
// this.accountsUnreadCount = ko.computed(() => {
|
||||
// let result = 0;
|
||||
// _.each(this.accounts(), (item) => {
|
||||
// if (item)
|
||||
// {
|
||||
// result += item.count();
|
||||
// }
|
||||
// });
|
||||
// return result;
|
||||
// });
|
||||
// this.accountsUnreadCount = ko.computed(() => {
|
||||
// let result = 0;
|
||||
// _.each(this.accounts(), (item) => {
|
||||
// if (item)
|
||||
// {
|
||||
// result += item.count();
|
||||
// }
|
||||
// });
|
||||
// return result;
|
||||
// });
|
||||
}
|
||||
|
||||
populate() {
|
||||
|
|
|
@ -129,7 +129,8 @@ class FolderUserStore
|
|||
{
|
||||
folder.type(FolderType.User);
|
||||
}
|
||||
},
|
||||
};
|
||||
const
|
||||
fSetSystemFolderType = (type) => (value) => {
|
||||
const folder = getFolderFromCacheList(value);
|
||||
if (folder)
|
||||
|
|
|
@ -22,16 +22,16 @@ class TemplateUserStore
|
|||
this.templatesNames(_.compact(_.map(list, (item) => (item ? item.name : null))));
|
||||
});
|
||||
|
||||
// this.templatesNames.subscribe((aList) => {
|
||||
// if (this.templatesNames.skipFirst)
|
||||
// {
|
||||
// this.templatesNames.skipFirst = false;
|
||||
// }
|
||||
// else if (aList && 1 < aList.length)
|
||||
// {
|
||||
// Remote.templatesSortOrder(null, aList);
|
||||
// }
|
||||
// });
|
||||
// this.templatesNames.subscribe((aList) => {
|
||||
// if (this.templatesNames.skipFirst)
|
||||
// {
|
||||
// this.templatesNames.skipFirst = false;
|
||||
// }
|
||||
// else if (aList && 1 < aList.length)
|
||||
// {
|
||||
// Remote.templatesSortOrder(null, aList);
|
||||
// }
|
||||
// });
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -776,14 +776,14 @@ class ComposePopupView extends AbstractViewNext
|
|||
{
|
||||
if (!this.oEditor && this.composeEditorArea())
|
||||
{
|
||||
// _.delay(() => {
|
||||
// _.delay(() => {
|
||||
this.oEditor = new HtmlEditor(this.composeEditorArea(), null, () => {
|
||||
fOnInit(this.oEditor);
|
||||
this.resizerTrigger();
|
||||
}, (bHtml) => {
|
||||
this.isHtml(!!bHtml);
|
||||
});
|
||||
// }, 1000);
|
||||
// }, 1000);
|
||||
}
|
||||
else if (this.oEditor)
|
||||
{
|
||||
|
@ -996,9 +996,8 @@ class ComposePopupView extends AbstractViewNext
|
|||
oMessageOrArray = oMessageOrArray || null;
|
||||
if (oMessageOrArray && isNormal(oMessageOrArray))
|
||||
{
|
||||
message = isArray(oMessageOrArray) &&
|
||||
1 === oMessageOrArray.length ? oMessageOrArray[0] :
|
||||
(!isArray(oMessageOrArray) ? oMessageOrArray : null);
|
||||
message = isArray(oMessageOrArray) && 1 === oMessageOrArray.length ? oMessageOrArray[0] :
|
||||
(!isArray(oMessageOrArray) ? oMessageOrArray : null);
|
||||
}
|
||||
|
||||
this.oLastMessage = message;
|
||||
|
|
|
@ -216,7 +216,7 @@ class ContactsPopupView extends AbstractViewNext
|
|||
|
||||
this.viewHash = ko.computed(() => '' + _.map(this.viewProperties(), (oItem) => oItem.value()).join(''));
|
||||
|
||||
// this.saveCommandDebounce = _.debounce(_.bind(this.saveCommand, this), 1000);
|
||||
// this.saveCommandDebounce = _.debounce(_.bind(this.saveCommand, this), 1000);
|
||||
|
||||
this.viewHash.subscribe(() => {
|
||||
if (this.watchHash() && !this.viewReadOnly() && !this.watchDirty())
|
||||
|
|
|
@ -84,8 +84,8 @@ class FilterPopupView extends AbstractViewNext
|
|||
populateOptions() {
|
||||
this.actionTypeOptions([]);
|
||||
|
||||
// this.actionTypeOptions.push({'id': FiltersAction.None,
|
||||
// 'name': i18n('POPUPS_FILTER/SELECT_ACTION_NONE')});
|
||||
// this.actionTypeOptions.push({'id': FiltersAction.None,
|
||||
// 'name': i18n('POPUPS_FILTER/SELECT_ACTION_NONE')});
|
||||
|
||||
const modules = this.modules();
|
||||
if (modules)
|
||||
|
|
|
@ -48,23 +48,26 @@ class FolderSystemPopupView extends AbstractViewNext
|
|||
|
||||
const
|
||||
fSetSystemFolders = () => {
|
||||
Settings.settingsSet('SentFolder', FolderStore.sentFolder());
|
||||
Settings.settingsSet('DraftFolder', FolderStore.draftFolder());
|
||||
Settings.settingsSet('SpamFolder', FolderStore.spamFolder());
|
||||
Settings.settingsSet('TrashFolder', FolderStore.trashFolder());
|
||||
Settings.settingsSet('ArchiveFolder', FolderStore.archiveFolder());
|
||||
},
|
||||
fSaveSystemFolders = _.debounce(() => {
|
||||
fSetSystemFolders();
|
||||
Remote.saveSystemFolders(noop, {
|
||||
SentFolder: FolderStore.sentFolder(),
|
||||
DraftFolder: FolderStore.draftFolder(),
|
||||
SpamFolder: FolderStore.spamFolder(),
|
||||
TrashFolder: FolderStore.trashFolder(),
|
||||
ArchiveFolder: FolderStore.archiveFolder(),
|
||||
NullFolder: 'NullFolder'
|
||||
});
|
||||
}, Magics.Time1s),
|
||||
Settings.settingsSet('SentFolder', FolderStore.sentFolder());
|
||||
Settings.settingsSet('DraftFolder', FolderStore.draftFolder());
|
||||
Settings.settingsSet('SpamFolder', FolderStore.spamFolder());
|
||||
Settings.settingsSet('TrashFolder', FolderStore.trashFolder());
|
||||
Settings.settingsSet('ArchiveFolder', FolderStore.archiveFolder());
|
||||
},
|
||||
fSaveSystemFolders = _.debounce(
|
||||
() => {
|
||||
fSetSystemFolders();
|
||||
Remote.saveSystemFolders(noop, {
|
||||
SentFolder: FolderStore.sentFolder(),
|
||||
DraftFolder: FolderStore.draftFolder(),
|
||||
SpamFolder: FolderStore.spamFolder(),
|
||||
TrashFolder: FolderStore.trashFolder(),
|
||||
ArchiveFolder: FolderStore.archiveFolder(),
|
||||
NullFolder: 'NullFolder'
|
||||
});
|
||||
},
|
||||
Magics.Time1s
|
||||
),
|
||||
fCallback = () => {
|
||||
fSetSystemFolders();
|
||||
fSaveSystemFolders();
|
||||
|
|
|
@ -264,63 +264,68 @@ class LoginUserView extends AbstractViewNext
|
|||
const
|
||||
fLoginRequest = (sLoginPassword) => {
|
||||
|
||||
Remote.login((sResult, oData) => {
|
||||
Remote.login(
|
||||
(sResult, oData) => {
|
||||
|
||||
$win.trigger('rl.tooltips.diactivate');
|
||||
$win.trigger('rl.tooltips.activate');
|
||||
$win.trigger('rl.tooltips.diactivate');
|
||||
$win.trigger('rl.tooltips.activate');
|
||||
|
||||
if (StorageResultType.Success === sResult && oData && 'Login' === oData.Action)
|
||||
{
|
||||
if (oData.Result)
|
||||
if (StorageResultType.Success === sResult && oData && 'Login' === oData.Action)
|
||||
{
|
||||
if (oData.TwoFactorAuth)
|
||||
if (oData.Result)
|
||||
{
|
||||
this.additionalCode('');
|
||||
this.additionalCode.visibility(true);
|
||||
this.submitRequest(false);
|
||||
if (oData.TwoFactorAuth)
|
||||
{
|
||||
this.additionalCode('');
|
||||
this.additionalCode.visibility(true);
|
||||
this.submitRequest(false);
|
||||
|
||||
_.delay(() => this.additionalCode.focused(true), Magics.Time100ms);
|
||||
_.delay(() => this.additionalCode.focused(true), Magics.Time100ms);
|
||||
}
|
||||
else if (oData.Admin)
|
||||
{
|
||||
getApp().redirectToAdminPanel();
|
||||
}
|
||||
else
|
||||
{
|
||||
getApp().loginAndLogoutReload(false);
|
||||
}
|
||||
}
|
||||
else if (oData.Admin)
|
||||
else if (oData.ErrorCode)
|
||||
{
|
||||
getApp().redirectToAdminPanel();
|
||||
this.submitRequest(false);
|
||||
if (-1 < inArray(oData.ErrorCode, [Notification.InvalidInputArgument]))
|
||||
{
|
||||
oData.ErrorCode = Notification.AuthError;
|
||||
}
|
||||
|
||||
this.submitError(getNotificationFromResponse(oData));
|
||||
|
||||
if ('' === this.submitError())
|
||||
{
|
||||
this.submitError(getNotification(Notification.UnknownError));
|
||||
}
|
||||
else if (oData.ErrorMessageAdditional)
|
||||
{
|
||||
this.submitErrorAddidional(oData.ErrorMessageAdditional);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
getApp().loginAndLogoutReload(false);
|
||||
}
|
||||
}
|
||||
else if (oData.ErrorCode)
|
||||
{
|
||||
this.submitRequest(false);
|
||||
if (-1 < inArray(oData.ErrorCode, [Notification.InvalidInputArgument]))
|
||||
{
|
||||
oData.ErrorCode = Notification.AuthError;
|
||||
}
|
||||
|
||||
this.submitError(getNotificationFromResponse(oData));
|
||||
|
||||
if ('' === this.submitError())
|
||||
{
|
||||
this.submitError(getNotification(Notification.UnknownError));
|
||||
}
|
||||
else if (oData.ErrorMessageAdditional)
|
||||
{
|
||||
this.submitErrorAddidional(oData.ErrorMessageAdditional);
|
||||
this.submitRequest(false);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.submitRequest(false);
|
||||
this.submitError(getNotification(Notification.UnknownError));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.submitRequest(false);
|
||||
this.submitError(getNotification(Notification.UnknownError));
|
||||
}
|
||||
|
||||
}, this.email(), '', sLoginPassword, !!this.signMe(),
|
||||
},
|
||||
this.email(),
|
||||
'',
|
||||
sLoginPassword,
|
||||
!!this.signMe(),
|
||||
this.bSendLanguage ? this.language() : '',
|
||||
this.additionalCode.visibility() ? this.additionalCode() : '',
|
||||
this.additionalCode.visibility() ? !!this.additionalCodeSignMe() : false
|
||||
|
|
|
@ -68,20 +68,27 @@ class MessageViewMailBoxUserView extends AbstractViewNext
|
|||
let lastEmail = '';
|
||||
|
||||
const
|
||||
createCommandReplyHelper = (type) => createCommand(() => {
|
||||
this.lastReplyAction(type);
|
||||
this.replyOrforward(type);
|
||||
}, this.canBeRepliedOrForwarded),
|
||||
createCommandReplyHelper = (type) => createCommand(
|
||||
() => {
|
||||
this.lastReplyAction(type);
|
||||
this.replyOrforward(type);
|
||||
},
|
||||
this.canBeRepliedOrForwarded
|
||||
);
|
||||
|
||||
createCommandActionHelper = (folderType, useFolder) => createCommand(() => {
|
||||
const message = this.message();
|
||||
if (message && this.allowMessageListActions)
|
||||
{
|
||||
this.message(null);
|
||||
getApp().deleteMessagesFromFolder(
|
||||
folderType, message.folderFullNameRaw, [message.uid], useFolder);
|
||||
}
|
||||
}, this.messageVisibility);
|
||||
const
|
||||
createCommandActionHelper = (folderType, useFolder) => createCommand(
|
||||
() => {
|
||||
const message = this.message();
|
||||
if (message && this.allowMessageListActions)
|
||||
{
|
||||
this.message(null);
|
||||
getApp().deleteMessagesFromFolder(
|
||||
folderType, message.folderFullNameRaw, [message.uid], useFolder);
|
||||
}
|
||||
},
|
||||
this.messageVisibility
|
||||
);
|
||||
|
||||
this.oDom = null;
|
||||
this.oHeaderDom = null;
|
||||
|
@ -431,9 +438,9 @@ class MessageViewMailBoxUserView extends AbstractViewNext
|
|||
|
||||
const
|
||||
fFindDom = function(inputDom) {
|
||||
const children = inputDom ? inputDom.children() : null;
|
||||
return (children && 1 === children.length && children.is('table,div,center')) ? children : null;
|
||||
},
|
||||
const children = inputDom ? inputDom.children() : null;
|
||||
return (children && 1 === children.length && children.is('table,div,center')) ? children : null;
|
||||
},
|
||||
fFindColor = function(inputDom) {
|
||||
let color = '';
|
||||
if (inputDom)
|
||||
|
|
|
@ -53,6 +53,7 @@ var
|
|||
filter = require('gulp-filter'),
|
||||
expect = require('gulp-expect-file'),
|
||||
chmod = require('gulp-chmod'),
|
||||
size = require('gulp-size'),
|
||||
gutil = require('gulp-util');
|
||||
|
||||
cfg.community = !argv.pro;
|
||||
|
@ -385,6 +386,10 @@ gulp.task('js:admin', ['js:webpack'], function() {
|
|||
gulp.task('js:min', ['js:app', 'js:admin'], function() {
|
||||
return gulp.src(cfg.paths.staticJS + '*.js')
|
||||
.pipe(replace(/"rainloop\/v\/([^\/]+)\/static\/js\/"/g, '"rainloop/v/$1/static/js/min/"'))
|
||||
.pipe(size({
|
||||
showFiles: true,
|
||||
showTotal: false
|
||||
}))
|
||||
.pipe(rename({suffix: '.min'}))
|
||||
.pipe(uglify({
|
||||
mangle: true,
|
||||
|
@ -392,6 +397,10 @@ gulp.task('js:min', ['js:app', 'js:admin'], function() {
|
|||
ie8: false
|
||||
}))
|
||||
.pipe(eol('\n', true))
|
||||
.pipe(size({
|
||||
showFiles: true,
|
||||
showTotal: false
|
||||
}))
|
||||
.pipe(gulp.dest(cfg.paths.staticMinJS))
|
||||
.on('error', gutil.log);
|
||||
});
|
||||
|
|
25
package.json
25
package.json
|
@ -54,38 +54,39 @@
|
|||
"devDependencies": {
|
||||
"Progress.js": "github:usablica/progress.js#v0.1.0",
|
||||
"autolinker": "1.4.3",
|
||||
"babel-core": "6.24.1",
|
||||
"babel-core": "6.25.0",
|
||||
"babel-eslint": "7.2.3",
|
||||
"babel-loader": "7.0.0",
|
||||
"babel-loader": "7.1.0",
|
||||
"babel-plugin-transform-decorators-legacy": "1.3.4",
|
||||
"babel-plugin-transform-runtime": "6.23.0",
|
||||
"babel-preset-env": "1.5.1",
|
||||
"babel-preset-env": "1.5.2",
|
||||
"babel-preset-stage-0": "6.24.1",
|
||||
"babel-runtime": "6.23.0",
|
||||
"classnames": "2.2.5",
|
||||
"copy-webpack-plugin": "4.0.1",
|
||||
"es6-promise-polyfill": "1.2.0",
|
||||
"eslint": "3.19.0",
|
||||
"eslint-plugin-compat": "1.0.2",
|
||||
"eslint": "4.1.0",
|
||||
"eslint-plugin-compat": "1.0.4",
|
||||
"gulp": "3.9.1",
|
||||
"gulp-autoprefixer": "4.0.0",
|
||||
"gulp-cached": "1.1.1",
|
||||
"gulp-chmod": "2.0.0",
|
||||
"gulp-clean-css": "3.3.1",
|
||||
"gulp-clean-css": "3.4.2",
|
||||
"gulp-concat-util": "0.5.5",
|
||||
"gulp-eol": "0.1.2",
|
||||
"gulp-eslint": "3.0.1",
|
||||
"gulp-eslint": "4.0.0",
|
||||
"gulp-expect-file": "0.0.7",
|
||||
"gulp-filter": "5.0.0",
|
||||
"gulp-header": "1.8.8",
|
||||
"gulp-if": "2.0.2",
|
||||
"gulp-less": "3.3.0",
|
||||
"gulp-less": "3.3.2",
|
||||
"gulp-livereload": "3.8.1",
|
||||
"gulp-notify": "3.0.0",
|
||||
"gulp-plumber": "1.1.0",
|
||||
"gulp-rename": "1.2.2",
|
||||
"gulp-replace": "0.5.4",
|
||||
"gulp-replace": "0.6.1",
|
||||
"gulp-rimraf": "0.2.1",
|
||||
"gulp-size": "2.1.0",
|
||||
"gulp-stripbom": "1.0.4",
|
||||
"gulp-through": "0.4.0",
|
||||
"gulp-uglify": "3.0.0",
|
||||
|
@ -111,15 +112,15 @@
|
|||
"normalize.css": "7.0.0",
|
||||
"openpgp": "2.5.4",
|
||||
"opentip": "2.4.3",
|
||||
"pikaday": "1.5.1",
|
||||
"pikaday": "1.6.1",
|
||||
"raw-loader": "0.5.1",
|
||||
"rifraf": "2.0.3",
|
||||
"rimraf": "2.6.1",
|
||||
"run-sequence": "1.2.2",
|
||||
"simplestatemanager": "3.4.0",
|
||||
"style-loader": "0.18.0",
|
||||
"style-loader": "0.18.2",
|
||||
"underscore": "1.8.3",
|
||||
"webpack": "2.5.1",
|
||||
"webpack": "3.0.0",
|
||||
"webpack-notifier": "1.5.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@ sl_SI:
|
|||
LABEL_ALLOW_LANGUAGES_ON_SETTINGS: "Dovoli izbor jezika v nastavitvah"
|
||||
LABEL_ALLOW_THEMES_ON_SETTINGS: "Dovoli izbor teme v nastavitvah"
|
||||
LABEL_ALLOW_BACKGROUND_ON_SETTINGS: "Dovoli izbor ozadja v nastavitvah"
|
||||
LABEL_NEW_FOLDER_MOVE: "Novi gumb \"Premakni v mapo\""
|
||||
LABEL_SHOW_THUMBNAILS: "Pokaži predoglede (priloge)"
|
||||
LABEL_ALLOW_GRAVATAR: "Dovoli Gravatar"
|
||||
LEGEND_MAIN: "Glavno"
|
||||
|
|
|
@ -4,14 +4,14 @@ da_DK:
|
|||
LABEL_LOGIN: "Brugernavn"
|
||||
LABEL_PASSWORD: "Adgangskode"
|
||||
LABEL_SIGN_ME: "Husk mig"
|
||||
LABEL_VERIFICATION_CODE: "Verifcserings kode"
|
||||
LABEL_VERIFICATION_CODE: "Verifikationskode"
|
||||
LABEL_DONT_ASK_VERIFICATION_CODE: "Husk kode i 2 uger"
|
||||
BUTTON_SIGN_IN: "Log ind"
|
||||
TITLE_SIGN_IN_GOOGLE: "Log ind med Google"
|
||||
TITLE_SIGN_IN_FACEBOOK: "Log ind med Facenbook"
|
||||
TITLE_SIGN_IN_FACEBOOK: "Log ind med Facebook"
|
||||
TITLE_SIGN_IN_TWITTER: "Log ind med Twitter"
|
||||
LABEL_FORGOT_PASSWORD: "Glemt adgangskode"
|
||||
LABEL_REGISTRATION: "Registre"
|
||||
LABEL_REGISTRATION: "Registrering"
|
||||
TOP_TOOLBAR:
|
||||
BUTTON_ADD_ACCOUNT: "Tilføj konto"
|
||||
BUTTON_SETTINGS: "Indstillinger"
|
||||
|
@ -27,7 +27,7 @@ da_DK:
|
|||
LABEL_ADV_TO: "Til"
|
||||
LABEL_ADV_SUBJECT: "Emne"
|
||||
LABEL_ADV_TEXT: "Tekst"
|
||||
LABEL_ADV_HAS_ATTACHMENT: "Har vedhæfted fil"
|
||||
LABEL_ADV_HAS_ATTACHMENT: "Har vedhæftet fil"
|
||||
LABEL_ADV_HAS_ATTACHMENTS: "Har vedhæftede filer"
|
||||
LABEL_ADV_FLAGGED: "Markeret med flag"
|
||||
LABEL_ADV_UNSEEN: "Ulæst"
|
||||
|
@ -53,29 +53,29 @@ da_DK:
|
|||
FOLDER_LIST:
|
||||
BUTTON_COMPOSE: "Forfat"
|
||||
BUTTON_CONTACTS: "Kontakter"
|
||||
BUTTON_NEW_MESSAGE: "Ny meddelse"
|
||||
BUTTON_NEW_MESSAGE: "Ny meddelelse"
|
||||
INBOX_NAME: "Indbakke"
|
||||
SENT_NAME: "Sendte meddelser"
|
||||
SENT_NAME: "Sendte meddelelser"
|
||||
DRAFTS_NAME: "Kladder"
|
||||
SPAM_NAME: "Uønskede meddelser"
|
||||
TRASH_NAME: "Slettede meddelser"
|
||||
ARCHIVE_NAME: "Arkiverede meddelser"
|
||||
SPAM_NAME: "Uønskede meddelelser"
|
||||
TRASH_NAME: "Slettede meddelelser"
|
||||
ARCHIVE_NAME: "Arkiverede meddelelser"
|
||||
QUOTA:
|
||||
TITLE: "Forbrug"
|
||||
MESSAGE_LIST:
|
||||
BUTTON_RELOAD: "Genindlæs meddelser"
|
||||
BUTTON_RELOAD: "Genindlæs meddelelser"
|
||||
BUTTON_MOVE_TO: "Flyt til"
|
||||
BUTTON_DELETE: "Slet"
|
||||
BUTTON_ARCHIVE: "Arkiver"
|
||||
BUTTON_ARCHIVE: "Arkivér"
|
||||
BUTTON_SPAM: "Uønsket"
|
||||
BUTTON_NOT_SPAM: "Ikke uønsket"
|
||||
BUTTON_EMPTY_FOLDER: "Tøm mappe"
|
||||
BUTTON_MULTY_FORWARD: "Videresend som vedhæftning(er)"
|
||||
BUTTON_DELETE_WITHOUT_MOVE: "Slet permanent"
|
||||
BUTTON_MORE: "Mere"
|
||||
MENU_SET_SEEN: "Marker som læst"
|
||||
MENU_SET_ALL_SEEN: "Marker alle som læst"
|
||||
MENU_UNSET_SEEN: "Marker som ulæst"
|
||||
MENU_SET_SEEN: "Markér som læst"
|
||||
MENU_SET_ALL_SEEN: "Markér alle som læst"
|
||||
MENU_UNSET_SEEN: "Markér som ulæst"
|
||||
MENU_SET_FLAG: "Markér med flag"
|
||||
MENU_UNSET_FLAG: "Fjern flag"
|
||||
MENU_SELECT_ALL: "Alle"
|
||||
|
@ -85,10 +85,10 @@ da_DK:
|
|||
MENU_SELECT_SEEN: "Læst"
|
||||
MENU_SELECT_FLAGGED: "Markeret med flag"
|
||||
MENU_SELECT_UNFLAGGED: "Ikke markeret med flag"
|
||||
EMPTY_LIST: "Ingen meddelser."
|
||||
EMPTY_SEARCH_LIST: "Ikke meddelelser passede på søgningen."
|
||||
EMPTY_LIST: "Ingen meddelelser."
|
||||
EMPTY_SEARCH_LIST: "Ingen meddelelser passede på søgningen."
|
||||
SEARCH_RESULT_FOR: "Resultat for søgningen på \"%SEARCH%\""
|
||||
BACK_TO_MESSAGE_LIST: "Tilbage til meddelelses oversigt."
|
||||
BACK_TO_MESSAGE_LIST: "Tilbage til meddelelsesoversigt."
|
||||
LIST_LOADING: "Indlæser..."
|
||||
EMPTY_SUBJECT_TEXT: "(Intet emne)"
|
||||
PUT_MESSAGE_HERE: "Træk meddelelser her for visning i oversigten"
|
||||
|
@ -103,7 +103,7 @@ da_DK:
|
|||
BUTTON_CLOSE: "Luk"
|
||||
BUTTON_DELETE: "Slet"
|
||||
BUTTON_UNSUBSCRIBE: "Frameld liste"
|
||||
BUTTON_ARCHIVE: "Arkiver"
|
||||
BUTTON_ARCHIVE: "Arkivér"
|
||||
BUTTON_SPAM: "Uønsket"
|
||||
BUTTON_NOT_SPAM: "Ikke uønsket"
|
||||
BUTTON_MOVE_TO: "Flyt til"
|
||||
|
@ -114,16 +114,16 @@ da_DK:
|
|||
BUTTON_FORWARD_AS_ATTACHMENT: "Videresend som vedhæftning"
|
||||
BUTTON_EDIT_AS_NEW: "Rediger som ny"
|
||||
BUTTON_SHOW_IMAGES: "Vis eksterne billeder"
|
||||
BUTTON_NOTIFY_READ_RECEIPT: "Afsender har bedt om modtagelses kvittering."
|
||||
BUTTON_NOTIFY_READ_RECEIPT: "Afsender har bedt om modtagelseskvittering."
|
||||
BUTTON_IN_NEW_WINDOW: "Vis i separat vindue"
|
||||
BUTTON_THREAD_LIST: "Samtale oversigt"
|
||||
BUTTON_THREAD_LIST: "Samtaleoversigt"
|
||||
BUTTON_THREAD_PREV: "Forrige"
|
||||
BUTTON_THREAD_NEXT: "Næste"
|
||||
BUTTON_THREAD_MORE: "Flere meddelelser"
|
||||
MENU_HEADERS: "Hvis meddelelseoplysninger"
|
||||
MENU_HEADERS: "Vis meddelelseoplysninger"
|
||||
MENU_VIEW_ORIGINAL: "Vis kilder"
|
||||
MENU_DOWNLOAD_ORIGINAL: "Hent som .eml fil"
|
||||
MENU_FILTER_SIMILAR: "Find ligende meddelelser"
|
||||
MENU_FILTER_SIMILAR: "Find lignende meddelelser"
|
||||
MENU_PRINT: "Udskriv"
|
||||
EMPTY_SUBJECT_TEXT: "(Intet emne)"
|
||||
LABEL_SUBJECT: "Emne"
|
||||
|
@ -159,7 +159,7 @@ da_DK:
|
|||
Bemærk: "Dette bekræfter bare at meddelelsen er blevet op modtageren."
|
||||
Der er ingen garanti for at modtager har læst meddelelsen.
|
||||
SUGGESTIONS:
|
||||
SEARCHING_DESC: "Søger"
|
||||
SEARCHING_DESC: "Søger..."
|
||||
CONTACTS:
|
||||
LEGEND_CONTACTS: "Kontakter"
|
||||
SEARCH_INPUT_PLACEHOLDER: "Søg"
|
||||
|
@ -169,7 +169,7 @@ da_DK:
|
|||
BUTTON_IMPORT: "Importer kontakter (csv, vcf, vCard)"
|
||||
BUTTON_EXPORT_VCARD: "Eksporter kontakter (vcf, vCard)"
|
||||
BUTTON_EXPORT_CSV: "Eksporter kontakter (csv)"
|
||||
ERROR_IMPORT_FILE: "Importerrings fejl (forkert fil type)"
|
||||
ERROR_IMPORT_FILE: "Importfejl (forkert fil type)"
|
||||
LIST_LOADING: "Indlæser"
|
||||
EMPTY_LIST: "Ingen kontakter"
|
||||
EMPTY_SEARCH: "Ingen kontakter fundet"
|
||||
|
@ -181,16 +181,16 @@ da_DK:
|
|||
LABEL_WEB: "Hjemmeside"
|
||||
LABEL_BIRTHDAY: "Fødselsdag"
|
||||
LINK_ADD_EMAIL: "Tilføj e-mail adresse"
|
||||
LINK_ADD_PHONE: "Tilføj telefon nummer"
|
||||
LINK_ADD_PHONE: "Tilføj telefonnummer"
|
||||
LINK_BIRTHDAY: "Fødselsdag"
|
||||
PLACEHOLDER_ENTER_DISPLAY_NAME: "Indtast kaldenavn"
|
||||
PLACEHOLDER_ENTER_LAST_NAME: "Indtast efternavn"
|
||||
PLACEHOLDER_ENTER_FIRST_NAME: "Indtast fornavn(er)"
|
||||
PLACEHOLDER_ENTER_NICK_NAME: "Indtast kældenavn"
|
||||
PLACEHOLDER_ENTER_FIRST_NAME: "Indtast fornavn(e)"
|
||||
PLACEHOLDER_ENTER_NICK_NAME: "Indtast kaldenavn"
|
||||
LABEL_READ_ONLY: "Skrivebeskyttet"
|
||||
LABEL_SHARE: "Del"
|
||||
ADD_MENU_LABEL: "Tilføj"
|
||||
ADD_MENU_NICKNAME: "Kældenavn"
|
||||
ADD_MENU_NICKNAME: "Kaldenavn"
|
||||
ADD_MENU_NOTES: "Noter"
|
||||
ADD_MENU_EMAIL: "E-mail"
|
||||
ADD_MENU_PHONE: "Telefon"
|
||||
|
@ -234,9 +234,9 @@ da_DK:
|
|||
ATTACHMENTS_ERROR_DESC: "Advarsels! Ikke alle vedhæftninger er overført."
|
||||
ATTACHMENTS_UPLOAD_ERROR_DESC: "Overførsel af vedhæftninger igang."
|
||||
BUTTON_REQUEST_READ_RECEIPT: "Bed om kvittering for læsning"
|
||||
BUTTON_MARK_AS_IMPORTANT: "Marker som vigtig"
|
||||
BUTTON_MARK_AS_IMPORTANT: "Markér som vigtig"
|
||||
BUTTON_OPEN_PGP: "OpenPGP (kun plain tekst)"
|
||||
BUTTON_REQUEST_DSN: "Bed om kvittering om kvittering for modtagelse"
|
||||
BUTTON_REQUEST_DSN: "Bed om kvittering for modtagelse"
|
||||
POPUPS_WELCOME_PAGE:
|
||||
BUTTON_CLOSE: "Luk"
|
||||
POPUPS_ASK:
|
||||
|
@ -265,7 +265,7 @@ da_DK:
|
|||
LABEL_SIGNATURE_INSERT_BEFORE: "Indsæt signatur før citeret tekst"
|
||||
POPUPS_CREATE_FOLDER:
|
||||
TITLE_CREATE_FOLDER: "Opret ny mappe?"
|
||||
LABEL_NAME: "Mappe navn"
|
||||
LABEL_NAME: "Mappenavn"
|
||||
LABEL_PARENT: "Hovedmappe"
|
||||
BUTTON_CREATE: "Opret ny mappe"
|
||||
BUTTON_CANCEL: "Annuller"
|
||||
|
@ -282,7 +282,7 @@ da_DK:
|
|||
TITLE_CLEARING_PROCESS: "Tømmer mappe..."
|
||||
POPUPS_IMPORT_OPEN_PGP_KEY:
|
||||
TITLE_IMPORT_OPEN_PGP_KEY: "Importer OpenPGP nøgle"
|
||||
BUTTON_IMPORT_OPEN_PGP_KEY: "Importet"
|
||||
BUTTON_IMPORT_OPEN_PGP_KEY: "Importer"
|
||||
POPUPS_VIEW_OPEN_PGP_KEY:
|
||||
TITLE_VIEW_OPEN_PGP_KEY: "Vis OpenPGP nøgle"
|
||||
BUTTON_SELECT: "Vælg"
|
||||
|
@ -292,11 +292,11 @@ da_DK:
|
|||
LABEL_EMAIL: "E-mail"
|
||||
LABEL_NAME: "Navn"
|
||||
LABEL_PASSWORD: "Adgangskode"
|
||||
LABEL_KEY_BIT_LENGTH: "Nøgle længde"
|
||||
BUTTON_GENERATE_OPEN_PGP_KEYS: "Generer"
|
||||
LABEL_KEY_BIT_LENGTH: "Nøglelængde"
|
||||
BUTTON_GENERATE_OPEN_PGP_KEYS: "Generér"
|
||||
POPUPS_COMPOSE_OPEN_PGP:
|
||||
TITLE_COMPOSE_OPEN_PGP: "OpenPGP Signer/Krypter"
|
||||
LABEL_SIGN: "Signer"
|
||||
LABEL_SIGN: "Signér"
|
||||
LABEL_ENCRYPT: "Krypter"
|
||||
LABEL_PASSWORD: "Adgangskode"
|
||||
BUTTON_SIGN: "Signér"
|
||||
|
@ -306,9 +306,9 @@ da_DK:
|
|||
TITLE_MESSAGE_OPEN_PGP: "OpenPGP Dekrypter"
|
||||
LABEL_KEY: "Privat nøgle"
|
||||
LABEL_PASSWORD: "Adgangskode"
|
||||
BUTTON_DECRYPT: "Afkrypter"
|
||||
BUTTON_DECRYPT: "Dekrypter"
|
||||
POPUPS_TWO_FACTOR_TEST:
|
||||
TITLE_TEST_CODE: "2-trins verificeringstest"
|
||||
TITLE_TEST_CODE: "2-trins verifikationstest"
|
||||
LABEL_CODE: "Kode"
|
||||
BUTTON_TEST: "Test"
|
||||
POPUPS_FILTER:
|
||||
|
@ -323,44 +323,44 @@ da_DK:
|
|||
SELECT_ACTION_MOVE_TO: "Flyt til"
|
||||
SELECT_ACTION_FORWARD_TO: "Videresend til"
|
||||
SELECT_ACTION_REJECT: "Afvis"
|
||||
SELECT_ACTION_VACATION_MESSAGE: "Ferie meddelelse"
|
||||
SELECT_ACTION_DISCARD: "Kasser"
|
||||
SELECT_ACTION_VACATION_MESSAGE: "Feriemeddelelse"
|
||||
SELECT_ACTION_DISCARD: "Kassér"
|
||||
SELECT_FIELD_FROM: "Fra"
|
||||
SELECT_FIELD_RECIPIENTS: "Modtagere (Til eller CC)"
|
||||
SELECT_FIELD_SUBJECT: "Emne"
|
||||
SELECT_FIELD_HEADER: "Meddelsesoplysninger"
|
||||
SELECT_FIELD_HEADER: "Meddelelsesoplysninger"
|
||||
SELECT_FIELD_SIZE: "Størrelse"
|
||||
SELECT_TYPE_CONTAINS: "Indenholder"
|
||||
SELECT_TYPE_NOT_CONTAINS: "Indenholder ikke"
|
||||
SELECT_TYPE_MATCHES: "Svare til (* og ? kan bruges)"
|
||||
SELECT_TYPE_NOT_MATCHES: "Svare ikke til (* og ? kan bruges)"
|
||||
SELECT_TYPE_CONTAINS: "Indeholder"
|
||||
SELECT_TYPE_NOT_CONTAINS: "Indeholder ikke"
|
||||
SELECT_TYPE_MATCHES: "Svarer til (* og ? kan bruges)"
|
||||
SELECT_TYPE_NOT_MATCHES: "Svarer ikke til (* og ? kan bruges)"
|
||||
SELECT_TYPE_REGEXP: "Regexp"
|
||||
SELECT_TYPE_NOT_REGEXP: "Ikke Regexp"
|
||||
SELECT_TYPE_EQUAL_TO: "Lig med"
|
||||
SELECT_TYPE_NOT_EQUAL_TO: "Ikke lige med"
|
||||
SELECT_TYPE_OVER: "Over"
|
||||
SELECT_TYPE_UNDER: "Under"
|
||||
SELECT_MATCH_ANY: "Passer en af følgene regler"
|
||||
SELECT_MATCH_ALL: "Passer alle af følgende regler"
|
||||
MARK_AS_READ_LABEL: "Marker som læst"
|
||||
REPLY_INTERVAL_LABEL: "Svar interval (dage)"
|
||||
SELECT_MATCH_ANY: "Passer til en af følgende regler"
|
||||
SELECT_MATCH_ALL: "Passer til alle følgende regler"
|
||||
MARK_AS_READ_LABEL: "Markér som læst"
|
||||
REPLY_INTERVAL_LABEL: "Svarinterval (dage)"
|
||||
KEEP_LABEL: "Behold"
|
||||
STOP_LABEL: "Forsæt med at tjekker regler"
|
||||
STOP_LABEL: "Forsæt med at tjekke regler"
|
||||
EMAIL_LABEL: "E-mail"
|
||||
VACATION_SUBJECT_LABEL: "Emne (valgfri)"
|
||||
VACATION_MESSAGE_LABEL: "Meddelse"
|
||||
VACATION_RECIPIENTS_LABEL: "Modtagere (komma seperarede)"
|
||||
REJECT_MESSAGE_LABEL: "Afvis meddelse"
|
||||
ALL_INCOMING_MESSAGES_DESC: "Alle modtagede meddelser"
|
||||
VACATION_SUBJECT_LABEL: "Emne (valgfrit)"
|
||||
VACATION_MESSAGE_LABEL: "Meddelelse"
|
||||
VACATION_RECIPIENTS_LABEL: "Modtagere (kommaseparerede)"
|
||||
REJECT_MESSAGE_LABEL: "Afvis meddelelse"
|
||||
ALL_INCOMING_MESSAGES_DESC: "Alle modtagne meddelelser"
|
||||
POPUPS_SYSTEM_FOLDERS:
|
||||
TITLE_SYSTEM_FOLDERS: "Vælg system mapper"
|
||||
TITLE_SYSTEM_FOLDERS: "Vælg systemmapper"
|
||||
SELECT_CHOOSE_ONE: "Vælg en"
|
||||
SELECT_UNUSE_NAME: "Brug ikke"
|
||||
LABEL_SENT: "Sendte meddelser"
|
||||
LABEL_SENT: "Sendte meddelelser"
|
||||
LABEL_DRAFTS: "Kladder"
|
||||
LABEL_SPAM: "Uønskede meddelser"
|
||||
LABEL_TRASH: "Slettede meddelser"
|
||||
LABEL_ARCHIVE: "Arkiverede meddelser"
|
||||
LABEL_SPAM: "Uønskede meddelelser"
|
||||
LABEL_TRASH: "Slettede meddelelser"
|
||||
LABEL_ARCHIVE: "Arkiverede meddelelser"
|
||||
BUTTON_CANCEL: "Annuller"
|
||||
BUTTON_CLOSE: "Luk"
|
||||
NOTIFICATION_SENT: |
|
||||
|
@ -373,14 +373,14 @@ da_DK:
|
|||
Hvis du vil slette meddelelser permanent, vælg "Brug ikke".
|
||||
NOTIFICATION_ARCHIVE: "Du har ikke valgt en systemmappe til arkiverede meddelelser."
|
||||
POPUPS_TWO_FACTOR_CFG:
|
||||
LEGEND_TWO_FACTOR_AUTH: "2-trins verificering (TOTP)"
|
||||
LABEL_ENABLE_TWO_FACTOR: "Aktiver 2-trins verificering"
|
||||
LEGEND_TWO_FACTOR_AUTH: "2-trins verifikation (TOTP)"
|
||||
LABEL_ENABLE_TWO_FACTOR: "Aktivér 2-trins verifikation"
|
||||
LABEL_TWO_FACTOR_USER: "Bruger"
|
||||
LABEL_TWO_FACTOR_STATUS: "Status"
|
||||
LABEL_TWO_FACTOR_SECRET: "2-trins verificeringshemmelighed"
|
||||
LABEL_TWO_FACTOR_BACKUP_CODES: "Tag backup af 2-trins verificeringshemmeligheder"
|
||||
BUTTON_CREATE: "Opret en hemmelighed"
|
||||
BUTTON_ACTIVATE: "Aktiver"
|
||||
BUTTON_ACTIVATE: "Aktivér"
|
||||
BUTTON_CLEAR: "Slet"
|
||||
BUTTON_LOGOUT: "Log ud"
|
||||
BUTTON_DONE: "Færdig"
|
||||
|
@ -388,13 +388,12 @@ da_DK:
|
|||
LINK_TEST: "test"
|
||||
BUTTON_SHOW_SECRET: "Vis hemmelighed"
|
||||
BUTTON_HIDE_SECRET: "Skjul hemmelighed"
|
||||
TWO_FACTOR_REQUIRE_DESC: "Din konto kræver 2-trins verificering."
|
||||
TWO_FACTOR_REQUIRE_DESC: "Din konto kræver 2-trins verifikation."
|
||||
TWO_FACTOR_SECRET_CONFIGURED_DESC: "Konfigureret"
|
||||
TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC: "Ikke konfigureret"
|
||||
TWO_FACTOR_SECRET_DESC: >+
|
||||
TWO_FACTOR_SECRET_DESC: >
|
||||
Importer denne information til din Google Autentificering app (eller en anden
|
||||
TOTP klient) ved hjælp af QR koden herunder eller ved at indtaste koden manuelt.
|
||||
|
||||
TWO_FACTOR_BACKUP_CODES_DESC: >
|
||||
Hvis du ikke kan modtage koder ved hjælp af Google Autentificering appen (eller
|
||||
en anden TOTP klient), kan du bruge backup kode til at logge ind med. Når
|
||||
|
@ -412,15 +411,15 @@ da_DK:
|
|||
ERROR_NO_FILE_UPLOADED: "Ingen file oploadet"
|
||||
ERROR_MISSING_TEMP_FOLDER: "Midlertidig fil findes ikke"
|
||||
ERROR_ON_SAVING_FILE: "Ukendt upload fejl"
|
||||
ERROR_FILE_TYPE: "Forkert filtyppe"
|
||||
ERROR_FILE_TYPE: "Forkert filtype"
|
||||
ERROR_UNKNOWN: "Ukendt upload fejl"
|
||||
EDITOR:
|
||||
TEXT_SWITCHER_PLAINT_TEXT: "HTML <-> TEXT"
|
||||
TEXT_SWITCHER_RICH_FORMATTING: "Rig formatering"
|
||||
TEXT_SWITCHER_CONFIRM: "Formatring og billeder vil gå tabt. Forsæt?"
|
||||
TEXT_SWITCHER_CONFIRM: "Formatering og billeder vil gå tabt. Forsæt?"
|
||||
SETTINGS_LABELS:
|
||||
LABEL_PERSONAL_NAME: "Personlig"
|
||||
LABEL_GENERAL_NAME: "Generalt"
|
||||
LABEL_GENERAL_NAME: "Generelt"
|
||||
LABEL_CONTACTS_NAME: "Kontakter"
|
||||
LABEL_FOLDERS_NAME: "Mapper"
|
||||
LABEL_ACCOUNTS_NAME: "Kontoer"
|
||||
|
@ -444,7 +443,7 @@ da_DK:
|
|||
SUBNAME_MOVE_TO: "Flyt til \"%FOLDER%\""
|
||||
SUBNAME_FORWARD_TO: "Videresend til \"%EMAIL%\""
|
||||
SUBNAME_REJECT: "Afvis"
|
||||
SUBNAME_VACATION_MESSAGE: "Ferie meddelelse"
|
||||
SUBNAME_VACATION_MESSAGE: "Feriemeddelelse"
|
||||
SUBNAME_DISCARD: "Kasser"
|
||||
CAPABILITY_LABEL: "Evner"
|
||||
LOADING_PROCESS: "Opdater oversigten over filtre"
|
||||
|
@ -458,7 +457,7 @@ da_DK:
|
|||
LABEL_ADD_SIGNATURE_TO_ALL: "Tilføj din signatur til alle meddelelser"
|
||||
SETTINGS_SECURITY:
|
||||
LEGEND_SECURITY: "Sikkerhed"
|
||||
LABEL_CONFIGURE_TWO_FACTOR: "Op sæt 2-trins verificering"
|
||||
LABEL_CONFIGURE_TWO_FACTOR: "Opsæt 2-trins verifikation"
|
||||
LABEL_AUTOLOGOUT: "Automatisk log ud"
|
||||
AUTOLOGIN_NEVER_OPTION_NAME: "Aldrig"
|
||||
AUTOLOGIN_MINUTES_OPTION_NAME: "%MINUTES% minut(er)"
|
||||
|
@ -474,9 +473,9 @@ da_DK:
|
|||
LABEL_EDITOR: "Standard tekst program"
|
||||
LABEL_EDITOR_HTML: "Html"
|
||||
LABEL_EDITOR_PLAIN: "Plain"
|
||||
LABEL_EDITOR_HTML_FORCED: "Html (gennetvunget)"
|
||||
LABEL_EDITOR_HTML_FORCED: "Html (gennemtvunget)"
|
||||
LABEL_EDITOR_PLAIN_FORCED: "Plain (gennemtvunget)"
|
||||
LABEL_ANIMATION: "Grænseflade animation"
|
||||
LABEL_ANIMATION: "Grænsefladeanimation"
|
||||
LABEL_ANIMATION_FULL: "Fuld"
|
||||
LABEL_ANIMATION_NORMAL: "Normal"
|
||||
LABEL_ANIMATION_NONE: "Ingen"
|
||||
|
@ -484,7 +483,7 @@ da_DK:
|
|||
LABEL_USE_PREVIEW_PANE: "Brug preview panel"
|
||||
LABEL_USE_CHECKBOXES_IN_LIST: "Vis afkrydsningsfelt i oversigten"
|
||||
LABEL_USE_THREADS: "Brug samtaler"
|
||||
LABEL_REPLY_SAME_FOLDER: "Placer svar i samme mappe som original besked"
|
||||
LABEL_REPLY_SAME_FOLDER: "Placer svar i samme mappe som oprindelig meddelelse"
|
||||
LABEL_SHOW_IMAGES: "Vis altid eksterne billeder"
|
||||
LABEL_SHOW_ANIMATION: "Vis animationer"
|
||||
LABEL_MESSAGE_PER_PAGE: "Meddelelser per side"
|
||||
|
@ -496,14 +495,14 @@ da_DK:
|
|||
LEGEND_CONTACTS: "Kontakter"
|
||||
LABEL_CONTACTS_AUTOSAVE: "Tilføj automatisk modtager til adressebog"
|
||||
LEGEND_CONTACTS_SYNC: "Synkroniser (CardDAV)"
|
||||
LABEL_CONTACTS_SYNC_ENABLE: "Aktiver synkronisering"
|
||||
LABEL_CONTACTS_SYNC_ENABLE: "Aktivér synkronisering"
|
||||
LABEL_CONTACTS_SYNC_SERVER: "Server"
|
||||
LABEL_CONTACTS_SYNC_AB_URL: "Adressebogs URL"
|
||||
LABEL_CONTACTS_SYNC_USER: "Bruger"
|
||||
LABEL_CONTACTS_SYNC_PASSWORD: "Adgangskode"
|
||||
SETTINGS_THEMES:
|
||||
LEGEND_THEMES: "Temaer"
|
||||
LEGEND_THEMES_CUSTOM: "Brugerdefineret tema konfiguration"
|
||||
LEGEND_THEMES_CUSTOM: "Brugerdefineret temakonfiguration"
|
||||
LABEL_CUSTOM_TYPE: "Type"
|
||||
LABEL_CUSTOM_TYPE_LIGHT: "Lys"
|
||||
LABEL_CUSTOM_TYPE_DARK: "Mørk"
|
||||
|
@ -526,22 +525,22 @@ da_DK:
|
|||
BUTTON_TWITTER_DISCONNECT: "Afbryd forbindelse til Twitter"
|
||||
MAIN_TWITTER_DESC: "Ved aktivering af log ind via Twitter. Kan der logges ind ved hjælp af Twitter knappen på log ind skærmen."
|
||||
SETTINGS_FOLDERS:
|
||||
LEGEND_FOLDERS: "Mappe oversigt"
|
||||
LEGEND_FOLDERS: "Mappeoversigt"
|
||||
BUTTON_CREATE: "Opret ny mappe"
|
||||
BUTTON_SYSTEM: "System mapper"
|
||||
BUTTON_SYSTEM: "Systemmapper"
|
||||
BUTTON_DELETE: "Slet"
|
||||
BUTTON_SUBSCRIBE: "Abonnér"
|
||||
BUTTON_UNSUBSCRIBE: "Afmeld"
|
||||
LOADING_PROCESS: "Opdater mappe oversigt"
|
||||
LOADING_PROCESS: "Opdater mappeoversigt"
|
||||
CREATING_PROCESS: "Opretter mappe"
|
||||
DELETING_PROCESS: "Sletter mappe"
|
||||
RENAMING_PROCESS: "Omdøbber mappe"
|
||||
RENAMING_PROCESS: "Omdøber mappe"
|
||||
DELETING_ASK: "Er du sikker?"
|
||||
TO_MANY_FOLDERS_DESC_1: "For mange mapper!"
|
||||
TO_MANY_FOLDERS_DESC_2: "Kun nogle mapper vises for at undgå problemer"
|
||||
HELP_DELETE_FOLDER: "Slet mappe"
|
||||
HELP_SHOW_HIDE_FOLDER: "Vis/skjul mappe"
|
||||
HELP_CHECK_FOR_NEW_MESSAGES: "Marker/fjern markering for nye meddelelser"
|
||||
HELP_CHECK_FOR_NEW_MESSAGES: "Markér/fjern markering for nye meddelelser"
|
||||
SETTINGS_ACCOUNTS:
|
||||
LEGEND_ACCOUNTS: "Kontoer"
|
||||
LEGEND_IDENTITIES: "Identiteter"
|
||||
|
@ -549,7 +548,7 @@ da_DK:
|
|||
BUTTON_ADD_ACCOUNT: "Tilføj konto"
|
||||
BUTTON_ADD_IDENTITY: "Tilføj identitet?"
|
||||
BUTTON_DELETE: "Slet"
|
||||
LOADING_PROCESS: "Opdatere..."
|
||||
LOADING_PROCESS: "Opdaterer..."
|
||||
DELETING_ASK: "Er du sikker?"
|
||||
DEFAULT_IDENTITY_LABEL: "standard"
|
||||
SETTINGS_IDENTITIES:
|
||||
|
@ -562,7 +561,7 @@ da_DK:
|
|||
LABEL_ADD_SIGNATURE_TO_ALL: "Tilføj din signatur til alle meddelelser"
|
||||
BUTTON_ADD_IDENTITY: "Tilføj identitet"
|
||||
BUTTON_DELETE: "Slet"
|
||||
LOADING_PROCESS: "Opdatere identitets oversigt"
|
||||
LOADING_PROCESS: "Opdaterer identitetsoversigt"
|
||||
DELETING_ASK: "Er du sikker?"
|
||||
SETTINGS_CHANGE_PASSWORD:
|
||||
LEGEND_CHANGE_PASSWORD: "Skift adgangskode"
|
||||
|
@ -580,47 +579,47 @@ da_DK:
|
|||
DELETING_ASK: "Er du sikker?"
|
||||
GENERATE_ONLY_HTTPS: "Kun HTTPS"
|
||||
SHORTCUTS_HELP:
|
||||
LEGEND_SHORTCUTS_HELP: "Hjælp til tastetur genveje"
|
||||
LEGEND_SHORTCUTS_HELP: "Hjælp til tasteturgenveje"
|
||||
TAB_MAILBOX: "Postkasse"
|
||||
TAB_MESSAGE_LIST: "Meddelelses oversigt"
|
||||
TAB_MESSAGE_VIEW: "Meddelelses visning"
|
||||
TAB_MESSAGE_LIST: "Meddelelsesoversigt"
|
||||
TAB_MESSAGE_VIEW: "Meddelelsesvisning"
|
||||
TAB_COMPOSE: "Forfat"
|
||||
LABEL_OPEN_USER_DROPDOWN: "Åben bruger menu"
|
||||
LABEL_OPEN_USER_DROPDOWN: "Åben brugermenu"
|
||||
LABEL_REPLY: "Svar"
|
||||
LABEL_REPLY_ALL: "Svar alle"
|
||||
LABEL_FORWARD: "Videresend"
|
||||
LABEL_FORWARD_MULTIPLY: "Videresend som vedhæftning(er)"
|
||||
LABEL_HELP: "Hjælp"
|
||||
LABEL_CHECK_ALL: "Vælg alle meddelelser"
|
||||
LABEL_ARCHIVE: "Arkiver"
|
||||
LABEL_ARCHIVE: "Arkivér"
|
||||
LABEL_DELETE: "Slet"
|
||||
LABEL_OPEN_THREAD: "Åben valgte samtale"
|
||||
LABEL_MOVE: "Flyt"
|
||||
LABEL_READ: "Marker valgte meddelelser som læst"
|
||||
LABEL_UNREAD: "Marker valgte meddelelser som ulæst"
|
||||
LABEL_IMPORTANT: "Marker valgte meddelelser som vigtige"
|
||||
LABEL_READ: "Markér valgte meddelelser som læste"
|
||||
LABEL_UNREAD: "Markér valgte meddelelser som ulæste"
|
||||
LABEL_IMPORTANT: "Markér valgte meddelelser som vigtige"
|
||||
LABEL_SEARCH: "Søg"
|
||||
LABEL_CANCEL_SEARCH: "Annuller søgning"
|
||||
LABEL_FULLSCREEN_ENTER: "Fuld skærm (Preview panel layout)"
|
||||
LABEL_VIEW_MESSAGE_ENTER: "Vis meddelelser (Uden preview panel layout)"
|
||||
LABEL_SWITCH_TO_MESSAGE: "Fokuser på valgte meddelelser"
|
||||
LABEL_SWITCH_TO_FOLDER_LIST: "Fokuser på mappe oversigt"
|
||||
LABEL_SWITCH_TO_FOLDER_LIST: "Fokuser på mappeoversigt"
|
||||
LABEL_FULLSCREEN_TOGGLE: "Fuld skærm"
|
||||
LABEL_BLOCKQUOTES_TOGGLE: "Slå blokcitater til/fra i meddelelser"
|
||||
LABEL_THREAD_NEXT: "Næste besked i samtale"
|
||||
LABEL_THREAD_PREV: "Forrige besked i samtale"
|
||||
LABEL_PRINT: "Print"
|
||||
LABEL_PRINT: "Udskriv"
|
||||
LABEL_EXIT_FULLSCREEN: "Luk fuld skærm"
|
||||
LABEL_CLOSE_MESSAGE: "Luk meddelelses (Uden preview panel layout)"
|
||||
LABEL_SWITCH_TO_LIST: "Fokuser på meddelelses oversigt"
|
||||
LABEL_CLOSE_MESSAGE: "Luk meddelelse (Uden preview panel layout)"
|
||||
LABEL_SWITCH_TO_LIST: "Fokuser på meddelelsesoversigt"
|
||||
LABEL_OPEN_COMPOSE_POPUP: "Åben forfatter popup"
|
||||
LABEL_MINIMIZE_COMPOSE_POPUP: "Minimer forfatter popup"
|
||||
LABEL_OPEN_IDENTITIES_DROPDOWN: "Åben identitets menu"
|
||||
LABEL_OPEN_IDENTITIES_DROPDOWN: "Åben identitetsmenu"
|
||||
LABEL_SAVE_MESSAGE: "Gem meddelelse"
|
||||
LABEL_SEND_MESSAGE: "Send meddelelse"
|
||||
LABEL_CLOSE_COMPOSE: "Luk forfatter mode"
|
||||
PGP_NOTIFICATIONS:
|
||||
NO_PUBLIC_KEYS_FOUND: "Igen offentlige nøgler fundet"
|
||||
NO_PUBLIC_KEYS_FOUND: "Ingen offentlige nøgler fundet"
|
||||
NO_PUBLIC_KEYS_FOUND_FOR: "Ingen offentlige nøgler fundet tilhørende \"%EMAIL%\""
|
||||
NO_PRIVATE_KEY_FOUND: "Ingen privat nøgle fundet"
|
||||
NO_PRIVATE_KEY_FOUND_FOR: "Ingen privat nøgle fundet tilhørende \"%EMAIL%\""
|
||||
|
@ -630,7 +629,7 @@ da_DK:
|
|||
DECRYPTION_ERROR: "OpenPGP dekrypterings fejl"
|
||||
GOOD_SIGNATURE: "Accepteret signatur for %USER\""
|
||||
PGP_ERROR: "OpenPGP fejl: %ERROR%"
|
||||
SPECIFY_FROM_EMAIL: "Udfyld afsender adresse"
|
||||
SPECIFY_FROM_EMAIL: "Udfyld afsenderadresse"
|
||||
SPECIFY_AT_LEAST_ONE_RECIPIENT: "Angiv mindst en modtager"
|
||||
NOTIFICATIONS:
|
||||
INVALID_TOKEN: "Ugyldigt tegn"
|
||||
|
@ -649,15 +648,15 @@ da_DK:
|
|||
af e-mail og tilføj ID'et under konto indstillinger.
|
||||
DOMAIN_NOT_ALLOWED: "Domæne ikke tilladt"
|
||||
ACCOUNT_NOT_ALLOWED: "Konto ikke tilladt"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED: "2-faktor verificering påbudt."
|
||||
ACCOUNT_TWO_FACTOR_AUTH_ERROR: "2-faktor verifikations fejl"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED: "2-faktor verifikation påbudt."
|
||||
ACCOUNT_TWO_FACTOR_AUTH_ERROR: "2-faktor verifikationsfejl"
|
||||
COULD_NOT_SAVE_NEW_PASSWORD: "Kunne ikke gemme ny adgangskode"
|
||||
CURRENT_PASSWORD_INCORRECT: "Nuværende adgangskode forkert"
|
||||
NEW_PASSWORD_SHORT: "Adgangskoden for kort"
|
||||
NEW_PASSWORD_WEAK: "Adgangskoden for simpel"
|
||||
NEW_PASSWORD_FORBIDDENT: "Adgangskode indenholder forbudte tegn"
|
||||
NEW_PASSWORD_FORBIDDENT: "Adgangskode indeholder forbudte tegn"
|
||||
CONTACTS_SYNC_ERROR: "Fejl ved synkronisering af kontakter"
|
||||
CANT_GET_MESSAGE_LIST: "Kan ikke indlæse meddelelses oversigt "
|
||||
CANT_GET_MESSAGE_LIST: "Kan ikke indlæse meddelelsesoversigt "
|
||||
CANT_GET_MESSAGE: "Kan ikke indlæse meddelelse"
|
||||
CANT_DELETE_MESSAGE: "Kan ikke slette meddelelse"
|
||||
CANT_MOVE_MESSAGE: "Kan ikke flytte meddelelse"
|
||||
|
@ -678,24 +677,24 @@ da_DK:
|
|||
DOMAIN_ALREADY_EXISTS: "Domæne eksisterer allerede"
|
||||
CANT_INSTALL_PACKAGE: "Installation af pakke mislykkedes"
|
||||
CANT_DELETE_PACKAGE: "Fjernelse af pakke mislykkedes"
|
||||
INVALID_PLUGIN_PACKAGE: "Ugyldig tilføjelses pakke"
|
||||
UNSUPPORTED_PLUGIN_PACKAGE: "Tilføjelses pakke ikke understøttet"
|
||||
LICENSING_SERVER_IS_UNAVAILABLE: "Abonnomentsserver ikke tilgængelig"
|
||||
INVALID_PLUGIN_PACKAGE: "Ugyldig tilføjelsespakke"
|
||||
UNSUPPORTED_PLUGIN_PACKAGE: "Tilføjelsespakke ikke understøttet"
|
||||
LICENSING_SERVER_IS_UNAVAILABLE: "Abonnementsserver ikke tilgængelig"
|
||||
LICENSING_DOMAIN_EXPIRED: "Abonnement på domæne udløbet."
|
||||
LICENSING_DOMAIN_BANNED: "Abonnement på domæne forbudt."
|
||||
DEMO_SEND_MESSAGE_ERROR: "Denne konto kan af sikkerheds hensyn ikke sende e-mails til eksterne adresser!"
|
||||
DEMO_ACCOUNT_ERROR: "Denne konto kan af sikkerheds hensyn ikke udføre denne handling!"
|
||||
ACCOUNT_ALREADY_EXISTS: "Kontoen eksistere allerede"
|
||||
ACCOUNT_DOES_NOT_EXIST: "Kontoen eksiterer ikke"
|
||||
DEMO_SEND_MESSAGE_ERROR: "Denne konto kan af sikkerhedshensyn ikke sende e-mails til eksterne adresser!"
|
||||
DEMO_ACCOUNT_ERROR: "Denne konto kan af sikkerhedshensyn ikke udføre denne handling!"
|
||||
ACCOUNT_ALREADY_EXISTS: "Kontoen eksisterer allerede"
|
||||
ACCOUNT_DOES_NOT_EXIST: "Kontoen eksisterer ikke"
|
||||
MAIL_SERVER_ERROR: "Der skete en fejl under adgang til e-mail serveren"
|
||||
INVALID_INPUT_ARGUMENT: "Ugyldigt argument"
|
||||
UNKNOWN_ERROR: "Ukendt fejl"
|
||||
STATIC:
|
||||
BACK_LINK: "Genindlæs"
|
||||
DOMAIN_LIST_DESC: "Liste over domæner webmail er tilladt adgang til."
|
||||
PHP_EXSTENSIONS_ERROR_DESC: "Nødvendige PHP udvidelser er ikke tilgengænlige!"
|
||||
PHP_EXSTENSIONS_ERROR_DESC: "Nødvendige PHP udvidelser er ikke tilgængelige!"
|
||||
PHP_VERSION_ERROR_DESC: "PHP versionen (%VERSION%) er for gammel. Minimum 5.3.0 er nødvendig!"
|
||||
NO_SCRIPT_TITLE: "JavaScript er nødvendig for dette program."
|
||||
NO_SCRIPT_TITLE: "JavaScript er nødvendigt for dette program."
|
||||
NO_SCRIPT_DESC: |
|
||||
JavaScript er slået fra i din browser.
|
||||
Slå JavaScript til og prøv igen.
|
||||
|
@ -705,5 +704,5 @@ da_DK:
|
|||
Slå Cookies til og prøv igen.
|
||||
BAD_BROWSER_TITLE: "Din browser er forældet."
|
||||
BAD_BROWSER_DESC: |
|
||||
Enkle funktioner fungere ikke med denne browser.
|
||||
Enkelte funktioner fungerer ikke med denne browser.
|
||||
For at bruge alle funktioner, hent en af følgende:
|
||||
|
|
|
@ -102,6 +102,7 @@ sl_SI:
|
|||
BUTTON_BACK: "Nazaj"
|
||||
BUTTON_CLOSE: "Zapri"
|
||||
BUTTON_DELETE: "Izbriši"
|
||||
BUTTON_UNSUBSCRIBE: "Odjava s tega seznama"
|
||||
BUTTON_ARCHIVE: "Arhiviraj"
|
||||
BUTTON_SPAM: "Vsiljena pošta"
|
||||
BUTTON_NOT_SPAM: "Ni vsiljena pošta"
|
||||
|
@ -144,6 +145,7 @@ sl_SI:
|
|||
PRINT_LABEL_ATTACHMENTS: "Priloge"
|
||||
MESSAGE_LOADING: "Nalaganje"
|
||||
MESSAGE_VIEW_DESC: "Izberite sporočilo s seznama za ogled."
|
||||
MESSAGE_VIEW_MOVE_DESC: "Za izbor cilja kliknite na ime mape na levi strani."
|
||||
PGP_PASSWORD_INPUT_PLACEHOLDER: "Geslo"
|
||||
PGP_SIGNED_MESSAGE_DESC: "Sporočilo, podpisano z OpenPGP (kliknite za overovitev)"
|
||||
PGP_ENCRYPTED_MESSAGE_DESC: "Sporočilo, šifrirano z OpenPGP (kliknite za dešifriranje)"
|
||||
|
|
|
@ -22,7 +22,7 @@ module.exports = function(publicPath, pro) {
|
|||
publicPath: publicPath || 'rainloop/v/0.0.0/static/'
|
||||
},
|
||||
plugins: [
|
||||
new webpack.optimize.OccurrenceOrderPlugin(),
|
||||
new webpack.optimize.ModuleConcatenationPlugin(),
|
||||
new webpack.DefinePlugin({
|
||||
'RL_COMMUNITY': !pro,
|
||||
'process.env': {
|
||||
|
@ -86,7 +86,6 @@ module.exports = function(publicPath, pro) {
|
|||
'key': 'window.key',
|
||||
'_': 'window._',
|
||||
'qr': 'window.qr',
|
||||
'Promise': 'window.Promise',
|
||||
'$': 'window.jQuery'
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue