mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
Added: allow setting the supported THREAD algorithm
This commit is contained in:
parent
015dcbdc41
commit
57fbdf8795
48 changed files with 341 additions and 264 deletions
|
|
@ -15,6 +15,7 @@ import { showScreenPopup } from 'Knoin/Knoin';
|
|||
|
||||
import { AppUserStore } from 'Stores/User/App';
|
||||
import { LanguageStore } from 'Stores/Language';
|
||||
import { FolderUserStore } from 'Stores/User/Folder';
|
||||
import { SettingsUserStore } from 'Stores/User/Settings';
|
||||
import { IdentityUserStore } from 'Stores/User/Identity';
|
||||
import { NotificationUserStore } from 'Stores/User/Notification';
|
||||
|
|
@ -32,14 +33,6 @@ export class UserSettingsGeneral extends AbstractViewSettings {
|
|||
this.language = LanguageStore.language;
|
||||
this.languages = LanguageStore.languages;
|
||||
this.hourCycle = LanguageStore.hourCycle;
|
||||
/*
|
||||
// 'THREAD=REFS', 'THREAD=REFERENCES', 'THREAD=ORDEREDSUBJECT'
|
||||
this.threadModes = ko.observableArray();
|
||||
AppUserStore.capabilities.forEach(capa =>
|
||||
capa.startsWith('THREAD=') && this.threadModes.push(capa.slice(7))
|
||||
);
|
||||
this.threadModes.sort((a, b) => a.length - b.length);
|
||||
*/
|
||||
|
||||
this.soundNotification = SMAudio.notifications;
|
||||
this.notificationSound = ko.observable(SettingsGet('NotificationSound'));
|
||||
|
|
@ -49,8 +42,15 @@ export class UserSettingsGeneral extends AbstractViewSettings {
|
|||
this.isDesktopNotificationAllowed = NotificationUserStore.allowed;
|
||||
|
||||
this.threadsAllowed = AppUserStore.threadsAllowed;
|
||||
// 'THREAD=REFS', 'THREAD=REFERENCES', 'THREAD=ORDEREDSUBJECT'
|
||||
this.threadAlgorithms = ko.observableArray();
|
||||
FolderUserStore.capabilities.forEach(capa =>
|
||||
capa.startsWith('THREAD=') && this.threadAlgorithms.push(capa.slice(7))
|
||||
);
|
||||
this.threadAlgorithms.sort((a, b) => a.length - b.length);
|
||||
this.threadAlgorithm = SettingsUserStore.threadAlgorithm;
|
||||
|
||||
['useThreads',
|
||||
['useThreads', 'threadAlgorithm',
|
||||
// These use addSetting()
|
||||
'layout', 'messageReadDelay', 'messagesPerPage', 'checkMailInterval',
|
||||
'editorDefaultType', 'editorWysiwyg', 'msgDefaultAction', 'maxBlockquotesLevel',
|
||||
|
|
@ -154,6 +154,11 @@ export class UserSettingsGeneral extends AbstractViewSettings {
|
|||
Remote.saveSetting('UseThreads', value);
|
||||
},
|
||||
|
||||
threadAlgorithm: value => {
|
||||
MessagelistUserStore([]);
|
||||
Remote.saveSetting('threadAlgorithm', value);
|
||||
},
|
||||
|
||||
checkMailInterval: () => {
|
||||
setRefreshFoldersInterval(SettingsUserStore.checkMailInterval());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -313,6 +313,7 @@ MessagelistUserStore.reload = (bDropPagePosition = false, bDropCurrentFolderCach
|
|||
|
||||
if (AppUserStore.threadsAllowed() && SettingsUserStore.useThreads()) {
|
||||
params.useThreads = 1;
|
||||
params.threadAlgorithm = SettingsUserStore.threadAlgorithm();
|
||||
params.threadUid = MessagelistUserStore.threadUid();
|
||||
} else {
|
||||
params.threadUid = 0;
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ export const SettingsUserStore = new class {
|
|||
showNextMessage: 0,
|
||||
allowDraftAutosave: 1,
|
||||
useThreads: 0,
|
||||
threadAlgorithm: '',
|
||||
replySameFolder: 0,
|
||||
hideUnsubscribed: 0,
|
||||
hideDeleted: 1,
|
||||
|
|
@ -99,7 +100,8 @@ export const SettingsUserStore = new class {
|
|||
'listGrouped',
|
||||
'showNextMessage',
|
||||
'AllowDraftAutosave',
|
||||
'UseThreads',
|
||||
'useThreads',
|
||||
'threadAlgorithm',
|
||||
'ReplySameFolder',
|
||||
'HideUnsubscribed',
|
||||
'HideDeleted',
|
||||
|
|
|
|||
|
|
@ -502,11 +502,16 @@ trait Messages
|
|||
* @throws \MailSo\Net\Exceptions\*
|
||||
* @throws \MailSo\Imap\Exceptions\*
|
||||
*/
|
||||
public function MessageThread(string $sSearchCriterias, bool $bReturnUid = true) : iterable
|
||||
public function MessageThread(string $sSearchCriterias, string $sAlgorithm = '', $bReturnUid = true) : iterable
|
||||
{
|
||||
$oThread = new \MailSo\Imap\Requests\THREAD($this);
|
||||
$oThread->sCriterias = $sSearchCriterias ?: 'ALL';
|
||||
$oThread->bUid = $bReturnUid;
|
||||
try {
|
||||
$sAlgorithm && $oThread->setAlgorithm($sAlgorithm);
|
||||
} catch (\Throwable $e) {
|
||||
// ignore
|
||||
}
|
||||
yield from $oThread->SendRequestIterateResponse();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -420,7 +420,7 @@ class MailClient
|
|||
* @throws \MailSo\Net\Exceptions\*
|
||||
* @throws \MailSo\Imap\Exceptions\*
|
||||
*/
|
||||
protected function ThreadsMap(MessageCollection $oMessageCollection, ?\MailSo\Cache\CacheClient $oCacher, bool $bBackground = false) : array
|
||||
protected function ThreadsMap(string $sAlgorithm, MessageCollection $oMessageCollection, ?\MailSo\Cache\CacheClient $oCacher, bool $bBackground = false) : array
|
||||
{
|
||||
$oFolderInfo = $oMessageCollection->FolderInfo;
|
||||
$sFolderName = $oFolderInfo->FullName;
|
||||
|
|
@ -445,8 +445,8 @@ class MailClient
|
|||
*/
|
||||
$sSerializedHashKey = null;
|
||||
if ($oCacher && $oCacher->IsInited()) {
|
||||
$sSerializedHashKey = "ThreadsMap/{$sSearch}/{$oFolderInfo->etag}";
|
||||
// $sSerializedHashKey = "ThreadsMap/{$sSearch}/{$iThreadLimit}/{$oFolderInfo->etag}";
|
||||
$sSerializedHashKey = "ThreadsMap/{$sAlgorithm}/{$sSearch}/{$oFolderInfo->etag}";
|
||||
// $sSerializedHashKey = "ThreadsMap/{$sAlgorithm}/{$sSearch}/{$iThreadLimit}/{$oFolderInfo->etag}";
|
||||
|
||||
$sSerializedUids = $oCacher->Get($sSerializedHashKey);
|
||||
if (!empty($sSerializedUids)) {
|
||||
|
|
@ -463,7 +463,7 @@ class MailClient
|
|||
$this->logWrite('Set ThreadsMap() as background task ("'.$sFolderName.'" / '.$sSearch.')');
|
||||
\SnappyMail\Shutdown::add(function($oMailClient, $oFolderInfo, $oCacher) {
|
||||
$oFolderInfo->MESSAGES = 0;
|
||||
$oMailClient->ThreadsMap($oMessageCollection, $oCacher, true);
|
||||
$oMailClient->ThreadsMap($sAlgorithm, $oMessageCollection, $oCacher, true);
|
||||
}, [$this, $oFolderInfo, $oCacher]);
|
||||
return [];
|
||||
}
|
||||
|
|
@ -475,7 +475,7 @@ class MailClient
|
|||
$aResult = array();
|
||||
try
|
||||
{
|
||||
foreach ($this->oImapClient->MessageThread($sSearch) as $mItem) {
|
||||
foreach ($this->oImapClient->MessageThread($sSearch, $sAlgorithm) as $mItem) {
|
||||
// Flatten to single level
|
||||
$aMap = [];
|
||||
\array_walk_recursive($mItem, function($a) use (&$aMap) { $aMap[] = $a; });
|
||||
|
|
@ -534,6 +534,18 @@ class MailClient
|
|||
$aUids = \array_merge($aUids, $aThreadUIDs);
|
||||
}
|
||||
}
|
||||
/*
|
||||
// Idea to use one SORT for all threads instead of per thread
|
||||
$aSortUids = \array_reduce($aAllThreads, 'array_merge', []);
|
||||
$oParams->oSequenceSet = new \MailSo\Imap\SequenceSet($aSortUids);
|
||||
$aSortUids = $this->GetUids($oParams, $oFolderInfo);
|
||||
foreach ($aAllThreads as $aThreadUIDs) {
|
||||
$aThreadUIDs = \array_intersect($aSortUids, $aThreadUIDs);
|
||||
// Remove the most recent UID
|
||||
\array_pop($aThreadUIDs);
|
||||
$aUids = \array_merge($aUids, $aThreadUIDs);
|
||||
}
|
||||
*/
|
||||
} else {
|
||||
// Not the best solution to remove the most recent UID,
|
||||
// as older messages could have a higher UID
|
||||
|
|
@ -783,7 +795,7 @@ class MailClient
|
|||
\SnappyMail\Shutdown::add(function($oMailClient, $oAllParams, $oInfo, $oMessageCollection) {
|
||||
$oMailClient->GetUids($oAllParams, $oInfo);
|
||||
if ($oAllParams->bUseThreads) {
|
||||
$oMailClient->ThreadsMap($oMessageCollection, $oAllParams->oCacher, true);
|
||||
$oMailClient->ThreadsMap($oAllParams->sThreadAlgorithm, $oMessageCollection, $oAllParams->oCacher, true);
|
||||
}
|
||||
}, [$this, $oAllParams, $oInfo, $oMessageCollection]);
|
||||
}
|
||||
|
|
@ -825,7 +837,7 @@ class MailClient
|
|||
}
|
||||
|
||||
if ($oParams->bUseThreads) {
|
||||
$aAllThreads = $this->ThreadsMap($oMessageCollection, $oParams->oCacher);
|
||||
$aAllThreads = $this->ThreadsMap($oParams->sThreadAlgorithm, $oMessageCollection, $oParams->oCacher);
|
||||
// $iThreadLimit = $this->oImapClient->Settings->thread_limit;
|
||||
if ($oParams->iThreadUid) {
|
||||
// Only show the selected thread messages
|
||||
|
|
|
|||
|
|
@ -16,7 +16,8 @@ class MessageListParams
|
|||
public string
|
||||
$sFolderName,
|
||||
$sSearch = '',
|
||||
$sSort = '';
|
||||
$sSort = '',
|
||||
$sThreadAlgorithm = '';
|
||||
|
||||
public ?\MailSo\Cache\CacheClient
|
||||
$oCacher = null;
|
||||
|
|
@ -64,6 +65,7 @@ class MessageListParams
|
|||
$this->bSearchFuzzy ? '1' : '0',
|
||||
$this->bUseSort ? $this->sSort : '0',
|
||||
$this->bUseThreads ? $this->iThreadUid : '',
|
||||
$this->bUseThreads ? $this->sThreadAlgorithm : '',
|
||||
// $this->oSequenceSet ? $this->oSequenceSet : '',
|
||||
$this->iPrevUidNext
|
||||
]));
|
||||
|
|
|
|||
|
|
@ -205,7 +205,8 @@ trait Accounts
|
|||
'mainEmail' => \RainLoop\Api::Actions()->getMainAccountFromToken()->Email(),
|
||||
'contactsAllowed' => $this->AddressBookProvider($oAccount)->IsActive(),
|
||||
'HideUnsubscribed' => false,
|
||||
'UseThreads' => (bool) $oConfig->Get('defaults', 'mail_use_threads', false),
|
||||
'useThreads' => (bool) $oConfig->Get('defaults', 'mail_use_threads', false),
|
||||
'threadAlgorithm' => '',
|
||||
'ReplySameFolder' => (bool) $oConfig->Get('defaults', 'mail_reply_same_folder', false),
|
||||
'HideDeleted' => true,
|
||||
'ShowUnreadCount' => false,
|
||||
|
|
@ -220,7 +221,8 @@ trait Accounts
|
|||
$aResult['TrashFolder'] = (string) $oSettingsLocal->GetConf('TrashFolder', '');
|
||||
$aResult['ArchiveFolder'] = (string) $oSettingsLocal->GetConf('ArchiveFolder', '');
|
||||
$aResult['HideUnsubscribed'] = (bool) $oSettingsLocal->GetConf('HideUnsubscribed', $aResult['HideUnsubscribed']);
|
||||
$aResult['UseThreads'] = (bool) $oSettingsLocal->GetConf('UseThreads', $aResult['UseThreads']);
|
||||
$aResult['useThreads'] = (bool) $oSettingsLocal->GetConf('UseThreads', $aResult['useThreads']);
|
||||
$aResult['threadAlgorithm'] = (string) $oSettingsLocal->GetConf('threadAlgorithm', $aResult['threadAlgorithm']);
|
||||
$aResult['ReplySameFolder'] = (bool) $oSettingsLocal->GetConf('ReplySameFolder', $aResult['ReplySameFolder']);
|
||||
$aResult['HideDeleted'] = (bool)$oSettingsLocal->GetConf('HideDeleted', $aResult['HideDeleted']);
|
||||
$aResult['ShowUnreadCount'] = (bool)$oSettingsLocal->GetConf('ShowUnreadCount', $aResult['ShowUnreadCount']);
|
||||
|
|
|
|||
|
|
@ -36,9 +36,14 @@ trait Messages
|
|||
$oParams->iPrevUidNext = $aValues['uidNext'];
|
||||
}
|
||||
$oParams->bUseThreads = !empty($aValues['useThreads']);
|
||||
if ($oParams->bUseThreads && isset($aValues['threadUid'])) {
|
||||
if ($oParams->bUseThreads) {
|
||||
if (isset($aValues['threadUid'])) {
|
||||
$oParams->iThreadUid = $aValues['threadUid'];
|
||||
}
|
||||
if (isset($aValues['threadAlgorithm'])) {
|
||||
$oParams->sThreadAlgorithm = $aValues['threadAlgorithm'];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// POST
|
||||
$oParams->sFolderName = $this->GetActionParam('folder', '');
|
||||
|
|
@ -50,6 +55,7 @@ trait Messages
|
|||
$oParams->bUseThreads = !empty($this->GetActionParam('useThreads', '0'));
|
||||
if ($oParams->bUseThreads) {
|
||||
$oParams->iThreadUid = $this->GetActionParam('threadUid', '');
|
||||
$oParams->sThreadAlgorithm = $this->GetActionParam('threadAlgorithm', '');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -212,6 +212,7 @@ trait User
|
|||
$this->setSettingsFromParams($oSettings, 'Resizer5Height', 'int');
|
||||
|
||||
$this->setSettingsFromParams($oSettingsLocal, 'UseThreads', 'bool');
|
||||
$this->setSettingsFromParams($oSettingsLocal, 'threadAlgorithm', 'string');
|
||||
$this->setSettingsFromParams($oSettingsLocal, 'ReplySameFolder', 'bool');
|
||||
$this->setSettingsFromParams($oSettingsLocal, 'HideUnsubscribed', 'bool');
|
||||
$this->setSettingsFromParams($oSettingsLocal, 'HideDeleted', 'bool');
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "إخفاء الرسائل المحددة للحذف",
|
||||
"USE_CHECKBOXES_IN_LIST": "عرض مربعات التحديد في القائمة",
|
||||
"USE_THREADS": "إستخدام المواضيع",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "ضع الردود في مجلد الرسالة التي يتم الرد عليها",
|
||||
"PREFER_HTML": "Prefer HTML to plain text",
|
||||
"PREFER_HTML_INFO": "Messages sometimes come in both formats. This option controls whether you want the HTML part or the plain text part to be displayed.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Схаваць паведамленні, азначаныя для выдалення",
|
||||
"USE_CHECKBOXES_IN_LIST": "Паказваць сцяжкі ў спісах",
|
||||
"USE_THREADS": "Згортваць лісты ў перапісках",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Змяшчаць адказы ў той жа каталог, дзе знаходзіцца арыгінал",
|
||||
"PREFER_HTML": "Аддаваць перавагу HTML замест звычайнага тэксту",
|
||||
"PREFER_HTML_INFO": "Паведамленні часамі прыходзяць у абодвух фарматах. Гэты параметр вызначае, ці вы хочаце каб адлюстроўвалася HTML-частка ці звычайны тэкст.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Скриване на съобщенията, маркирани за изтриване",
|
||||
"USE_CHECKBOXES_IN_LIST": "Показавай отметките в списъка",
|
||||
"USE_THREADS": "Използвай групиране на съобщенията",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Постави отговорите с папката на отговаряното съобщение",
|
||||
"PREFER_HTML": "Prefer HTML to plain text",
|
||||
"PREFER_HTML_INFO": "Messages sometimes come in both formats. This option controls whether you want the HTML part or the plain text part to be displayed.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Skrýt zprávy označené ke smazání",
|
||||
"USE_CHECKBOXES_IN_LIST": "Zobrazení zaškrtávacích políček v seznamu",
|
||||
"USE_THREADS": "Zobrazit jako konverzace",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Ukládat odpovědi do složky se zprávou, které se týkají",
|
||||
"PREFER_HTML": "Prefer HTML to plain text",
|
||||
"PREFER_HTML_INFO": "Messages sometimes come in both formats. This option controls whether you want the HTML part or the plain text part to be displayed.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Skjul beskeder, der er markeret til sletning",
|
||||
"USE_CHECKBOXES_IN_LIST": "Vis afkrydsningsfelt i oversigten",
|
||||
"USE_THREADS": "Brug samtaler",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Placer svar i samme mappe som oprindelig meddelelse",
|
||||
"PREFER_HTML": "Prefer HTML to plain text",
|
||||
"PREFER_HTML_INFO": "Messages sometimes come in both formats. This option controls whether you want the HTML part or the plain text part to be displayed.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Zum Löschen markierte Nachrichten ausblenden",
|
||||
"USE_CHECKBOXES_IN_LIST": "Kontrollkästchen in der Liste anzeigen",
|
||||
"USE_THREADS": "Als Unterhaltungen anzeigen",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Antworten im gleichen Ordner wie die Nachricht, auf die geantwortet wurde, abspeichern",
|
||||
"PREFER_HTML": "HTML gegenüber Klartext bevorzugen",
|
||||
"PREFER_HTML_INFO": "Nachrichten können manchmal in beiden Formaten empfangen werden. Diese Option setzt, ob die Nachricht standardmäßig in HTML oder als Klartext angezeigt wird.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Απόκρυψη μηνυμάτων που έχουν επισημανθεί για διαγραφή",
|
||||
"USE_CHECKBOXES_IN_LIST": "Εμφάνιση των κουτιών επιλογής σε λίστα",
|
||||
"USE_THREADS": "Χρήση νημάτων",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Τοποθέτηση απαντήσεων στο φάκελο που ανήκει το μήνυμα που απαντάται",
|
||||
"PREFER_HTML": "Prefer HTML to plain text",
|
||||
"PREFER_HTML_INFO": "Messages sometimes come in both formats. This option controls whether you want the HTML part or the plain text part to be displayed.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Hide messages marked for deletion",
|
||||
"USE_CHECKBOXES_IN_LIST": "Display checkboxes in list",
|
||||
"USE_THREADS": "Use threads",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Place replies in the folder of the message being replied to",
|
||||
"PREFER_HTML": "Prefer HTML to plain text",
|
||||
"PREFER_HTML_INFO": "Messages sometimes come in both formats. This option controls whether you want the HTML part or the plain text part to be displayed.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Ocultar mensajes marcados para borrar",
|
||||
"USE_CHECKBOXES_IN_LIST": "Mostrar casillas de verificación en la lista",
|
||||
"USE_THREADS": "Usar hilos de conversación",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Coloque las respuestas en la carpeta del mensaje que esta respondiendo.",
|
||||
"PREFER_HTML": "Prefer HTML to plain text",
|
||||
"PREFER_HTML_INFO": "Messages sometimes come in both formats. This option controls whether you want the HTML part or the plain text part to be displayed.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Peida kustutamiseks märgitud kirjad",
|
||||
"USE_CHECKBOXES_IN_LIST": "Kuva nimekirjas valikukastikesi",
|
||||
"USE_THREADS": "Kasuta vestluse lõimesid",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Pane vastused samasse kausta, kus asub vastatud kiri",
|
||||
"PREFER_HTML": "Prefer HTML to plain text",
|
||||
"PREFER_HTML_INFO": "Messages sometimes come in both formats. This option controls whether you want the HTML part or the plain text part to be displayed.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Ezkutatu ezabatzeko markatutako mezuak",
|
||||
"USE_CHECKBOXES_IN_LIST": "Bistaratu kontrol laukiak zerrendan",
|
||||
"USE_THREADS": "Erabili hariak",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Kokatu erantzunak erantzundako mezuaren karpeta berean",
|
||||
"PREFER_HTML": "Lehenetsi HTMLa testu arruntari",
|
||||
"PREFER_HTML_INFO": "Mezuak batzuetan bi formatuetan datoz. Aukera honekin HTML edo testu arrunt partea erakustea aukera dezakezu.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "پنهان کردن پیام های علامت گذاری شده برای حذف",
|
||||
"USE_CHECKBOXES_IN_LIST": "نمایش چکباکس در لیست",
|
||||
"USE_THREADS": "استفاده از حالت موضوعی",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": " جوابها را در پوشهای که پیامها در آن جواب داده شده است قراردهید",
|
||||
"PREFER_HTML": "Prefer HTML to plain text",
|
||||
"PREFER_HTML_INFO": "Messages sometimes come in both formats. This option controls whether you want the HTML part or the plain text part to be displayed.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Piilota poistettavaksi merkityt viestit",
|
||||
"USE_CHECKBOXES_IN_LIST": "Näytä valintaruudut listassa",
|
||||
"USE_THREADS": "Käytä keskustelunäkymää",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Siirrä vastaukset samaan kansioon vastattavien kanssa",
|
||||
"PREFER_HTML": "Prefer HTML to plain text",
|
||||
"PREFER_HTML_INFO": "Messages sometimes come in both formats. This option controls whether you want the HTML part or the plain text part to be displayed.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Masquer les messages marqués pour suppression",
|
||||
"USE_CHECKBOXES_IN_LIST": "Afficher des cases à cocher dans la liste",
|
||||
"USE_THREADS": "Regrouper en conversations",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Placer les réponses dans le dossier du message",
|
||||
"PREFER_HTML": "Préférer le HTML au texte brut",
|
||||
"PREFER_HTML_INFO": "Les messages arrivent parfois dans les deux formats. Cette option contrôle si vous voulez que la partie HTML ou la partie texte brut soit affichée.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "A törlésre megjelölt üzenetek elrejtése",
|
||||
"USE_CHECKBOXES_IN_LIST": "Jelölőnégyzetek megjelenítése a listában",
|
||||
"USE_THREADS": "Szálak használata",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Válaszüzenetek elhelyezése az eredeti üzenet mappájában",
|
||||
"PREFER_HTML": "Prefer HTML to plain text",
|
||||
"PREFER_HTML_INFO": "Messages sometimes come in both formats. This option controls whether you want the HTML part or the plain text part to be displayed.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Sembunyikan pesan yang ditandai untuk dihapus",
|
||||
"USE_CHECKBOXES_IN_LIST": "Tampilkan centang dalam daftar",
|
||||
"USE_THREADS": "Gunakan tread",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Tempatkan pesan balasan di folder pesan yang dibalas",
|
||||
"PREFER_HTML": "Prefer HTML to plain text",
|
||||
"PREFER_HTML_INFO": "Messages sometimes come in both formats. This option controls whether you want the HTML part or the plain text part to be displayed.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Fela skilaboð merkt til eyðingar",
|
||||
"USE_CHECKBOXES_IN_LIST": "Sýna valkassa í listanum",
|
||||
"USE_THREADS": "Nota þræði",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Setja svör í möppu skilaboðanna sem er verið að svara",
|
||||
"PREFER_HTML": "Prefer HTML to plain text",
|
||||
"PREFER_HTML_INFO": "Messages sometimes come in both formats. This option controls whether you want the HTML part or the plain text part to be displayed.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Nascondi i messaggi contrassegnati per l'eliminazione",
|
||||
"USE_CHECKBOXES_IN_LIST": "Mostra le caselle di spunta nella lista",
|
||||
"USE_THREADS": "Usa le conversazioni",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Posiziona le risposte nella cartella del messaggio a cui si è risposto",
|
||||
"PREFER_HTML": "Usa HTML predefinito anziché formato testo",
|
||||
"PREFER_HTML_INFO": "Il messaggio a volte contiene entrambi i formati. Questa opzione agisce sulla visualizzazione del messaggio in HTML o della versione in formato testo.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "削除のマークが付いたメッセージを非表示にする",
|
||||
"USE_CHECKBOXES_IN_LIST": "リストにチェックボックスを表示",
|
||||
"USE_THREADS": "スレッドを使う",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "返信したメッセージのフォルダに送信メールを置く",
|
||||
"PREFER_HTML": "プレーンテキストよりHTMLを優先する",
|
||||
"PREFER_HTML_INFO": "メッセージがHTMLとプレーンテキストの両方の形式を含むことがあります。このオプションはそのような場合にどちらの形式を表示するかを制御します。",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "삭제 표시된 메시지 숨기기",
|
||||
"USE_CHECKBOXES_IN_LIST": "목록에서 확인상자 표시",
|
||||
"USE_THREADS": "대화형 목록 사용",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "회신 메시지를 원본과 동일한 폴더 위치에 저장",
|
||||
"PREFER_HTML": "Prefer HTML to plain text",
|
||||
"PREFER_HTML_INFO": "Messages sometimes come in both formats. This option controls whether you want the HTML part or the plain text part to be displayed.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Slėpti pranešimus, pažymėtus ištrinti",
|
||||
"USE_CHECKBOXES_IN_LIST": "Rodyti žymėjimo langelius sąraše",
|
||||
"USE_THREADS": "Naudoti gijas",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Atsakymus dėti į katalogą, kuriame yra pradinė žinutė",
|
||||
"PREFER_HTML": "Prefer HTML to plain text",
|
||||
"PREFER_HTML_INFO": "Messages sometimes come in both formats. This option controls whether you want the HTML part or the plain text part to be displayed.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Slēpt ziņojumus, kas atzīmēti dzēšanai",
|
||||
"USE_CHECKBOXES_IN_LIST": "Rādīt checkboxes sarakstā",
|
||||
"USE_THREADS": "Lietot saraksti",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Atbildes ziņojumus ielikt mapē kurā atrodas vēstule uz kuru tiek atbildēts.",
|
||||
"PREFER_HTML": "Prefer HTML to plain text",
|
||||
"PREFER_HTML_INFO": "Messages sometimes come in both formats. This option controls whether you want the HTML part or the plain text part to be displayed.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Skjul meldinger som er merket for sletting",
|
||||
"USE_CHECKBOXES_IN_LIST": "Vis avkrysningsbokser i liste",
|
||||
"USE_THREADS": "Bruk tråder",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Legg svar i samme mappe som opprinnelig melding",
|
||||
"PREFER_HTML": "Foretrekk HTML fremfor",
|
||||
"PREFER_HTML_INFO": "Meldinger kan ankomme i både HTML og ren tekst. Dette valget styrer hvilken av dem du vil se.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Berichten verbergen die zijn gemarkeerd voor verwijdering",
|
||||
"USE_CHECKBOXES_IN_LIST": "Toon selectievakjes in de lijst",
|
||||
"USE_THREADS": "Toon berichten in boomweergave",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Plaats antwoorden in de map van het originele bericht",
|
||||
"PREFER_HTML": "Geef de voorkeur aan HTML boven platte tekst",
|
||||
"PREFER_HTML_INFO": "Berichten komen soms in beide formaten. Deze optie bepaalt of u het HTML-gedeelte of het platte tekstgedeelte wilt weergeven.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Ukryj wiadomości oznaczone do usunięcia",
|
||||
"USE_CHECKBOXES_IN_LIST": "Pokazuj pola zaznaczenia na listach",
|
||||
"USE_THREADS": "Używaj wątków",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Umieść odpowiedzi w folderach, z których pochodzą wiadomości",
|
||||
"PREFER_HTML": "Preferuj HTML względem zwykłego tekstu",
|
||||
"PREFER_HTML_INFO": "Wiadomości często przesyłane są w obu formatach. Ta opcja określa, czy ma być wyświetlana część HTML, czy zwykły tekst.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Ocultar mensagens marcadas para exclusão",
|
||||
"USE_CHECKBOXES_IN_LIST": "Exibir caixas de seleção na lista",
|
||||
"USE_THREADS": "Agrupar mensagens por conversa",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Colocar resposta na mesma pasta da mensagem respondida",
|
||||
"PREFER_HTML": "Prefer HTML to plain text",
|
||||
"PREFER_HTML_INFO": "Messages sometimes come in both formats. This option controls whether you want the HTML part or the plain text part to be displayed.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Ocultar mensagens marcadas para eliminação",
|
||||
"USE_CHECKBOXES_IN_LIST": "Apresentar caixas de seleção na lista",
|
||||
"USE_THREADS": "Usar tópicos de conversa",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Colocar respostas na pasta das mensagens a que responde",
|
||||
"PREFER_HTML": "Preferir HTML em vez de texto simples",
|
||||
"PREFER_HTML_INFO": "Por vezes as mensagens são recebidas em ambos os formatos. Esta opção determina se prefere apresentar o conteúdo em HTML ou em texto simples.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Ascunde mesajele marcate pentru ștergere",
|
||||
"USE_CHECKBOXES_IN_LIST": "Afișează listele checkbox",
|
||||
"USE_THREADS": "Minimizează scrisorile",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Răspunsurile în același folder cu originalul",
|
||||
"PREFER_HTML": "Prefer HTML to plain text",
|
||||
"PREFER_HTML_INFO": "Messages sometimes come in both formats. This option controls whether you want the HTML part or the plain text part to be displayed.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Скрыть сообщения, помеченные для удаления",
|
||||
"USE_CHECKBOXES_IN_LIST": "Показывать чекбоксы в списках",
|
||||
"USE_THREADS": "Сворачивать письма в переписках",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Помещать ответы в ту же папку, где находится оригинал",
|
||||
"PREFER_HTML": "Предпочитать HTML обычному тексту",
|
||||
"PREFER_HTML_INFO": "Сообщения иногда приходят в обоих форматах. Этот параметр определяет, хотите ли вы, чтобы отображалась HTML-часть или обычный текст.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Skryť správy označené na odstránenie",
|
||||
"USE_CHECKBOXES_IN_LIST": "Zobrazenie zaštkrtávacích políčok v zozname",
|
||||
"USE_THREADS": "Zobraziť ako konverzácie",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Umiestňovať odpovede do priečinka so správou ktorej sa týkajú",
|
||||
"PREFER_HTML": "Prefer HTML to plain text",
|
||||
"PREFER_HTML_INFO": "Messages sometimes come in both formats. This option controls whether you want the HTML part or the plain text part to be displayed.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Skrij sporočila, označena za brisanje",
|
||||
"USE_CHECKBOXES_IN_LIST": "Na seznamu pokaži kvadratke za izbor",
|
||||
"USE_THREADS": "Uporabi niti",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Shrani odgovore v mapo sporočila, na katerega se odgovarja",
|
||||
"PREFER_HTML": "Prefer HTML to plain text",
|
||||
"PREFER_HTML_INFO": "Messages sometimes come in both formats. This option controls whether you want the HTML part or the plain text part to be displayed.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Dölj meddelanden som är markerade för radering",
|
||||
"USE_CHECKBOXES_IN_LIST": "Visa kryssrutor i listan",
|
||||
"USE_THREADS": "Använd trådar",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Placera svar i samma mapp som mottagna meddelandet",
|
||||
"PREFER_HTML": "Prefer HTML to plain text",
|
||||
"PREFER_HTML_INFO": "Messages sometimes come in both formats. This option controls whether you want the HTML part or the plain text part to be displayed.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Silinmek üzere işaretlenen mesajları gizle",
|
||||
"USE_CHECKBOXES_IN_LIST": "Listede ekran onay kutularını göster",
|
||||
"USE_THREADS": "Konuları kullanın",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Klasördeki cevapları mesajlarda göster",
|
||||
"PREFER_HTML": "Prefer HTML to plain text",
|
||||
"PREFER_HTML_INFO": "Messages sometimes come in both formats. This option controls whether you want the HTML part or the plain text part to be displayed.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Приховати повідомлення, позначені для видалення",
|
||||
"USE_CHECKBOXES_IN_LIST": "Показувати чекбокси у списках",
|
||||
"USE_THREADS": "Згортати листи у листуваннях",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Поміщати відповіді в ту ж теку, де знаходиться оригінал",
|
||||
"PREFER_HTML": "Prefer HTML to plain text",
|
||||
"PREFER_HTML_INFO": "Messages sometimes come in both formats. This option controls whether you want the HTML part or the plain text part to be displayed.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "Ẩn các tin nhắn được đánh dấu để xóa",
|
||||
"USE_CHECKBOXES_IN_LIST": "Hiển thị ô đánh dấu dưới dạng danh sách",
|
||||
"USE_THREADS": "Nối thư qua lại cùng một tiêu đề thành một chuỗi hội thoại",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "Đặt thư phản hồi gửi đi vào chung thư mục của bức thư nhận được",
|
||||
"PREFER_HTML": "Nghiêng về lựa chọn HTML hơn dạng chữ viết thường",
|
||||
"PREFER_HTML_INFO": "Đôi lúc thư nhận được sẽ ở cả hai dạng. Lựa chọn này cho phép bạn chỉnh phần HTML hay phần chữ viết thường trong thư bạn muốn hiển thị lên.",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "隱藏標示為已刪除的郵件",
|
||||
"USE_CHECKBOXES_IN_LIST": "在清單中顯示核取方塊",
|
||||
"USE_THREADS": "使用對話",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "放置回覆的郵件在其所在資料夾",
|
||||
"PREFER_HTML": "偏好 HTML",
|
||||
"PREFER_HTML_INFO": "部分郵件會有兩種格式。此選項旨在設定郵件應優先顯示 HTML 格式,或純文字格式。",
|
||||
|
|
|
|||
|
|
@ -455,6 +455,7 @@
|
|||
"HIDE_DELETED_MESSAGES": "隐藏标记为删除的消息",
|
||||
"USE_CHECKBOXES_IN_LIST": "列表中显示多选框",
|
||||
"USE_THREADS": "使用对话",
|
||||
"THREAD_ALGORITHM": "Threads algorithm",
|
||||
"REPLY_SAME_FOLDER": "将回复的邮件置于被回复的邮件所在的文件夹",
|
||||
"PREFER_HTML": "相比纯文本优先使用 HTML",
|
||||
"PREFER_HTML_INFO": "消息有时以两种格式传送。该选项控制您希望显示 HTML 部分还是纯文本部分。",
|
||||
|
|
|
|||
|
|
@ -104,6 +104,10 @@
|
|||
}"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="visible: useThreads">
|
||||
<label data-i18n="SETTINGS_GENERAL/THREAD_ALGORITHM"></label>
|
||||
<select data-bind="options: threadAlgorithms, value: threadAlgorithm"></select>
|
||||
</div>
|
||||
|
||||
<div class="legend" data-i18n="SHORTCUTS_HELP/TAB_COMPOSE"></div>
|
||||
<div class="control-group">
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue