This commit is contained in:
the-djmaze 2022-11-17 21:04:04 +01:00
parent 7e1b85d023
commit ecf53b1285
40 changed files with 161 additions and 111 deletions

View file

@ -11,11 +11,11 @@ import { leftPanelDisabled, moveAction,
addShortcut, registerShortcut, formFieldFocused
} from 'Common/Globals';
import { computedPaginatorHelper, showMessageComposer, populateMessageBody } from 'Common/UtilsUser';
import { computedPaginatorHelper, showMessageComposer, populateMessageBody, download } from 'Common/UtilsUser';
import { FileInfo } from 'Common/File';
import { isFullscreen, toggleFullscreen } from 'Common/Fullscreen';
import { mailBox } from 'Common/Links';
import { mailBox, attachmentDownload } from 'Common/Links';
import { Selector } from 'Common/Selector';
import { i18n } from 'Common/Translator';
@ -258,6 +258,7 @@ export class MailMessageList extends AbstractViewRight {
).throttle(50));
decorateKoCommands(this, {
downloadCommand: canBeMovedHelper,
forwardCommand: canBeMovedHelper,
deleteWithoutMoveCommand: canBeMovedHelper,
deleteCommand: canBeMovedHelper,
@ -290,6 +291,34 @@ export class MailMessageList extends AbstractViewRight {
]);
}
downloadCommand() {
let hashes = [];
MessagelistUserStore.forEach(message => {
if (message.checked()) {
message.attachments.forEach(attachment => {
if (!attachment.isLinked() && attachment.download) {
hashes.push(attachment.download);
}
});
}
});
if (hashes.length) {
Remote.post('AttachmentsActions', null, {
Do: 'Zip',
Hashes: hashes
})
.then(result => {
let hash = result?.Result?.FileHash;
if (hash) {
download(attachmentDownload(hash), hash+'.zip');
} else {
alert('Download failed');
}
})
.catch(() => alert('Download failed'));
}
}
deleteWithoutMoveCommand() {
SettingsCapa('DangerousActions')
&& moveMessagesToFolderType(FolderType.Trash, true);

View file

@ -73,142 +73,123 @@ trait User
*/
public function DoAttachmentsActions() : array
{
if (!$this->GetCapa(Capa::ATTACHMENTS_ACTIONS))
{
$sAction = $this->GetActionParam('Do', '');
$aHashes = $this->GetActionParam('Hashes', null);
$oFilesProvider = $this->FilesProvider();
if (empty($sAction) || !$this->GetCapa(Capa::ATTACHMENTS_ACTIONS) || !$oFilesProvider || !$oFilesProvider->IsActive()) {
return $this->FalseResponse(__FUNCTION__);
}
$oAccount = $this->initMailClientConnection();
$sAction = $this->GetActionParam('Do', '');
$aHashes = $this->GetActionParam('Hashes', null);
$mResult = false;
$bError = false;
$aData = false;
$aData = [];
$mUIDs = [];
if (\is_array($aHashes) && \count($aHashes))
{
$aData = array();
foreach ($aHashes as $sZipHash)
{
if (\is_array($aHashes) && \count($aHashes)) {
foreach ($aHashes as $sZipHash) {
$aResult = $this->getMimeFileByHash($oAccount, $sZipHash);
if (!empty($aResult['FileHash']))
{
$aData[] = $aResult;
}
else
{
if (empty($aResult['FileHash'])) {
$bError = true;
break;
}
$aData[] = $aResult;
$mUIDs[$aResult['Uid']] = $aResult['Uid'];
}
}
$mUIDs = 1 < \count($mUIDs);
$oFilesProvider = $this->FilesProvider();
if (!empty($sAction) && !$bError && \is_array($aData) && \count($aData) &&
$oFilesProvider && $oFilesProvider->IsActive())
if ($bError || !\count($aData)) {
return $this->FalseResponse(__FUNCTION__);
}
$mResult = false;
switch (\strtolower($sAction))
{
$bError = false;
switch (\strtolower($sAction))
{
case 'zip':
case 'zip':
$sZipHash = \MailSo\Base\Utils::Sha1Rand();
$sZipFileName = $oFilesProvider->GenerateLocalFullFileName($oAccount, $sZipHash);
if (!empty($sZipFileName)) {
if (\class_exists('ZipArchive')) {
$oZip = new \ZipArchive();
$oZip->open($sZipFileName, \ZIPARCHIVE::CREATE | \ZIPARCHIVE::OVERWRITE);
$oZip->setArchiveComment('SnappyMail/'.APP_VERSION);
foreach ($aData as $aItem) {
$sFileName = (string) (isset($aItem['FileName']) ? $aItem['FileName'] : 'file.dat');
$sFileHash = (string) (isset($aItem['FileHash']) ? $aItem['FileHash'] : '');
if (!empty($sFileHash)) {
$sFullFileNameHash = $oFilesProvider->GetFileName($oAccount, $sFileHash);
if (!$oZip->addFile($sFullFileNameHash, $sFileName)) {
$bError = true;
}
}
}
if (!$bError) {
$bError = !$oZip->close();
} else {
$oZip->close();
}
/*
} else {
@\unlink($sZipFileName);
$oZip = new \SnappyMail\Stream\ZIP($sZipFileName);
// $oZip->setArchiveComment('SnappyMail/'.APP_VERSION);
foreach ($aData as $aItem) {
$sFileName = (string) (isset($aItem['FileName']) ? $aItem['FileName'] : 'file.dat');
$sFileHash = (string) (isset($aItem['FileHash']) ? $aItem['FileHash'] : '');
if (!empty($sFileHash)) {
$sFullFileNameHash = $oFilesProvider->GetFileName($oAccount, $sFileHash);
if (!$oZip->addFile($sFullFileNameHash, $sFileName)) {
$bError = true;
}
}
}
$oZip->close();
*/
} else {
@\unlink($sZipFileName);
$oZip = new \PharData($sZipFileName . '.zip', 0, null, \Phar::ZIP);
$oZip->compressFiles(\Phar::GZ);
foreach ($aData as $aItem) {
$sFileName = (isset($aItem['FileName']) ? (string) $aItem['FileName'] : 'file.dat');
$sFileHash = (isset($aItem['FileHash']) ? (string) $aItem['FileHash'] : '');
if ($sFileHash) {
$sFullFileNameHash = $oFilesProvider->GetFileName($oAccount, $sFileHash);
$oZip->addFile($sFullFileNameHash, $sFileName);
}
}
$oZip->compressFiles(\Phar::GZ);
unset($oZip);
\rename($sZipFileName . '.zip', $sZipFileName);
}
$sZipHash = \MailSo\Base\Utils::Sha1Rand();
$sZipFileName = $oFilesProvider->GenerateLocalFullFileName($oAccount, $sZipHash);
if (!empty($sZipFileName)) {
if (\class_exists('ZipArchive')) {
$oZip = new \ZipArchive();
$oZip->open($sZipFileName, \ZIPARCHIVE::CREATE | \ZIPARCHIVE::OVERWRITE);
$oZip->setArchiveComment('SnappyMail/'.APP_VERSION);
foreach ($aData as $aItem) {
$sFileHash = (isset($aItem['FileHash']) ? (string) $aItem['FileHash'] : '');
if ($sFileHash) {
$oFilesProvider->Clear($oAccount, $sFileHash);
$sFullFileNameHash = $oFilesProvider->GetFileName($oAccount, $aItem['FileHash']);
$sFileName = ($mUIDs ? "{$aItem['Uid']}/" : '') . ($aItem['FileName'] ?: 'file.dat');
if (!$oZip->addFile($sFullFileNameHash, $sFileName)) {
$bError = true;
}
}
if (!$bError) {
$mResult = array(
'FileHash' => Utils::EncodeKeyValuesQ(array(
'Account' => $oAccount ? $oAccount->Hash() : '',
'FileName' => 'attachments.zip',
'MimeType' => 'application/zip',
'FileHash' => $sZipHash
))
if ($bError) {
$oZip->close();
} else {
$bError = !$oZip->close();
}
/*
} else {
@\unlink($sZipFileName);
$oZip = new \SnappyMail\Stream\ZIP($sZipFileName);
// $oZip->setArchiveComment('SnappyMail/'.APP_VERSION);
foreach ($aData as $aItem) {
$sFileName = (string) (isset($aItem['FileName']) ? $aItem['FileName'] : 'file.dat');
$sFileHash = (string) (isset($aItem['FileHash']) ? $aItem['FileHash'] : '');
if (!empty($sFileHash)) {
$sFullFileNameHash = $oFilesProvider->GetFileName($oAccount, $sFileHash);
if (!$oZip->addFile($sFullFileNameHash, $sFileName)) {
$bError = true;
}
}
}
$oZip->close();
*/
} else {
@\unlink($sZipFileName);
$oZip = new \PharData($sZipFileName . '.zip', 0, null, \Phar::ZIP);
$oZip->compressFiles(\Phar::GZ);
foreach ($aData as $aItem) {
$oZip->addFile(
$oFilesProvider->GetFileName($oAccount, $aItem['FileHash']),
($mUIDs ? "{$aItem['Uid']}/" : '') . ($aItem['FileName'] ?: 'file.dat')
);
}
$oZip->compressFiles(\Phar::GZ);
unset($oZip);
\rename($sZipFileName . '.zip', $sZipFileName);
}
break;
default:
$data = new \SnappyMail\AttachmentsAction;
$data->action = $sAction;
$data->items = $aData;
$data->filesProvider = $oFilesProvider;
$data->account = $oAccount;
$this->Plugins()->RunHook('json.attachments', array($data));
$mResult = $data->result;
break;
}
}
else
{
$bError = true;
foreach ($aData as $aItem) {
$oFilesProvider->Clear($oAccount, $aItem['FileHash']);
}
if (!$bError) {
$mResult = array(
'FileHash' => Utils::EncodeKeyValuesQ(array(
'Account' => $oAccount ? $oAccount->Hash() : '',
'FileName' => 'attachments.zip',
'MimeType' => 'application/zip',
'FileHash' => $sZipHash
))
);
}
}
break;
default:
$data = new \SnappyMail\AttachmentsAction;
$data->action = $sAction;
$data->items = $aData;
$data->filesProvider = $oFilesProvider;
$data->account = $oAccount;
$this->Plugins()->RunHook('json.attachments', array($data));
$mResult = $data->result;
break;
}
$this->requestSleep();
// $this->requestSleep();
return $this->DefaultResponse(__FUNCTION__, $bError ? false : $mResult);
}

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "مقروء",
"MENU_SELECT_FLAGGED": "محدد كـ مهم",
"MENU_SELECT_UNFLAGGED": "إزالة الأهمية",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "إفراغ القائمة",
"EMPTY_SEARCH_LIST": "ليست هناك أية رسائل تطابق بحثك.",
"SEARCH_RESULT_FOR": "نتيجة البحث لـ \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Прочетени",
"MENU_SELECT_FLAGGED": "Маркирани с флаг",
"MENU_SELECT_UNFLAGGED": "С премахнат флаг",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Празен списък.",
"EMPTY_SEARCH_LIST": "Няма съобщения, които да отговарят на търсенето.",
"SEARCH_RESULT_FOR": "Резултати от търсенето за \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Přečtené",
"MENU_SELECT_FLAGGED": "Označené",
"MENU_SELECT_UNFLAGGED": "Neoznačené",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Seznam je prázdný",
"EMPTY_SEARCH_LIST": "Vašemu vyhledávání neodpovídají žádné zprávy.",
"SEARCH_RESULT_FOR": "Výsledky vyhledávání pro \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Læst",
"MENU_SELECT_FLAGGED": "Markeret med flag",
"MENU_SELECT_UNFLAGGED": "Ikke markeret med flag",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Ingen meddelelser.",
"EMPTY_SEARCH_LIST": "Ingen meddelelser passede på søgningen.",
"SEARCH_RESULT_FOR": "Resultat for søgningen på \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Gelesen",
"MENU_SELECT_FLAGGED": "Markiert",
"MENU_SELECT_UNFLAGGED": "Nicht markiert",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Liste ist leer.",
"EMPTY_SEARCH_LIST": "Keine Treffer für Ihre Suche.",
"SEARCH_RESULT_FOR": "Suchergebnisse für \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Διαβασμένο",
"MENU_SELECT_FLAGGED": "Σημαδεμένο",
"MENU_SELECT_UNFLAGGED": "Μη σημαδεμένο",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Άδεια λίστα.",
"EMPTY_SEARCH_LIST": "Δεν υπάρχουν μηνύματα που να ταιριάζουν στην αναζήτηση.",
"SEARCH_RESULT_FOR": "Αποτελέσματα αναζήτησης για \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Read",
"MENU_SELECT_FLAGGED": "Flagged",
"MENU_SELECT_UNFLAGGED": "Unflagged",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Empty list.",
"EMPTY_SEARCH_LIST": "No messages matched your search.",
"SEARCH_RESULT_FOR": "Search results for \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Read",
"MENU_SELECT_FLAGGED": "Flagged",
"MENU_SELECT_UNFLAGGED": "Unflagged",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Empty list.",
"EMPTY_SEARCH_LIST": "No messages matched your search.",
"SEARCH_RESULT_FOR": "Search results for \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Leído",
"MENU_SELECT_FLAGGED": "Destacado",
"MENU_SELECT_UNFLAGGED": "No Destacado",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "No hay mensajes.",
"EMPTY_SEARCH_LIST": "La búsqueda no ha producido resultados.",
"SEARCH_RESULT_FOR": "Resultados de búsqueda para \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Loetud",
"MENU_SELECT_FLAGGED": "Lipuga märgitud",
"MENU_SELECT_UNFLAGGED": "Lipuga märkimata",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Tühi nimekiri",
"EMPTY_SEARCH_LIST": "Otsingule ei vastanud ühtegi kirja",
"SEARCH_RESULT_FOR": "Vasted otsingule \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "خوانده",
"MENU_SELECT_FLAGGED": "پرچم‌دار کردن",
"MENU_SELECT_UNFLAGGED": "پرچم‌دار نشده",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "فهرست خالی",
"EMPTY_SEARCH_LIST": "پیامی مطابق جستجوی شما پیدا نشد",
"SEARCH_RESULT_FOR": "نتایج جستجو مطابق \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Luetut",
"MENU_SELECT_FLAGGED": "Merkityt",
"MENU_SELECT_UNFLAGGED": "Merkkaamattomat",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Tyhjä lista",
"EMPTY_SEARCH_LIST": "Yhtään viestiä ei löytynyt ehdoillasi.",
"SEARCH_RESULT_FOR": "Hakutulokset haulle \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Lu",
"MENU_SELECT_FLAGGED": "Signalés",
"MENU_SELECT_UNFLAGGED": "Non signalés",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Liste vide.",
"EMPTY_SEARCH_LIST": "Aucun message ne correspond à votre recherche.",
"SEARCH_RESULT_FOR": "Résultats de recherche pour \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Olvasott",
"MENU_SELECT_FLAGGED": "Megjelölt",
"MENU_SELECT_UNFLAGGED": "Jelöletlen",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Lista üres.",
"EMPTY_SEARCH_LIST": "Nincs a keresésnek megfelelő levél.",
"SEARCH_RESULT_FOR": "Keresési eredmények ehhez: \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Dibaca",
"MENU_SELECT_FLAGGED": "Ditandai",
"MENU_SELECT_UNFLAGGED": "Jangan tandai",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Daftar kosong",
"EMPTY_SEARCH_LIST": "Tidak ada pesan yang sesuai dengan pencarian",
"SEARCH_RESULT_FOR": "Hasil pencarian untuk \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Lesið",
"MENU_SELECT_FLAGGED": "Flaggað",
"MENU_SELECT_UNFLAGGED": "Afflaggað",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Tómur listi.",
"EMPTY_SEARCH_LIST": "Engin skilaboð stemmdu við leitina þína.",
"SEARCH_RESULT_FOR": "Leitarniðurstöður fyrir \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Letti",
"MENU_SELECT_FLAGGED": "Preferiti",
"MENU_SELECT_UNFLAGGED": "Non preferiti",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Lista vuota",
"EMPTY_SEARCH_LIST": "Nessun messaggio corrisponde alla tua ricerca",
"SEARCH_RESULT_FOR": "Risultati di ricerca per \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "既読",
"MENU_SELECT_FLAGGED": "フラグ付き",
"MENU_SELECT_UNFLAGGED": "フラグなし",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "メッセージはありません",
"EMPTY_SEARCH_LIST": "検索条件に一致するメールは見つかりませんでした。高度な検索を試してみてください。",
"SEARCH_RESULT_FOR": "\"%SEARCH%\"の検索結果",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "읽음",
"MENU_SELECT_FLAGGED": "중요",
"MENU_SELECT_UNFLAGGED": "일반",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "목록이 비어있습니다.",
"EMPTY_SEARCH_LIST": "검색 조건에 맞는 결과가 없습니다..",
"SEARCH_RESULT_FOR": "\"%SEARCH%\"에 대한 검색 결과",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Skaityta",
"MENU_SELECT_FLAGGED": "Pažymėta",
"MENU_SELECT_UNFLAGGED": "Nepažymėta",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Tuščias sąrašas.",
"EMPTY_SEARCH_LIST": "Nėra pranešimų, atitinkančių jūsų paiešką.",
"SEARCH_RESULT_FOR": "Ieškoti \"%SEARCH%\" rezultatuose",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Izlasīts",
"MENU_SELECT_FLAGGED": "Atzīmētie",
"MENU_SELECT_UNFLAGGED": "Noņemtās atzīmes",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Tukšs saraksts.",
"EMPTY_SEARCH_LIST": "Neviens ziņojums neatbilda jūsu meklētajiem kritērijiem.",
"SEARCH_RESULT_FOR": "Meklēšanas rezultāti: \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Lest",
"MENU_SELECT_FLAGGED": "Stjernemerket",
"MENU_SELECT_UNFLAGGED": "Ikke stjernemerket",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Tom liste",
"EMPTY_SEARCH_LIST": "Søket ga ingen treff.",
"SEARCH_RESULT_FOR": "Søketreff for «%SEARCH%»",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Gelezen",
"MENU_SELECT_FLAGGED": "Met Vlag",
"MENU_SELECT_UNFLAGGED": "Zonder Vlag",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Geen berichten",
"EMPTY_SEARCH_LIST": "Geen items gevonden",
"SEARCH_RESULT_FOR": "Zoekresultaten voor \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Przeczytane",
"MENU_SELECT_FLAGGED": "Oznaczone jako ważne",
"MENU_SELECT_UNFLAGGED": "Oznaczone jako nieważne",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Brak wiadomości.",
"EMPTY_SEARCH_LIST": "Brak wiadomości spełniających kryteria wyszukiwania.",
"SEARCH_RESULT_FOR": "Wyniki wyszukiwania dla \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Lidas",
"MENU_SELECT_FLAGGED": "Sinalizadas",
"MENU_SELECT_UNFLAGGED": "Não Sinalizadas",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Lista Vazia.",
"EMPTY_SEARCH_LIST": "Nenhuma mensagem corresponde a sua pesquisa.",
"SEARCH_RESULT_FOR": "Resultados de pesquisa para \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Lida",
"MENU_SELECT_FLAGGED": "Sinalizada",
"MENU_SELECT_UNFLAGGED": "Não sinalizada",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Lista vazia.",
"EMPTY_SEARCH_LIST": "Nenhuma mensagem corresponde à sua pesquisa.",
"SEARCH_RESULT_FOR": "Resultados de pesquisa para \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Lida",
"MENU_SELECT_FLAGGED": "Sinalizada",
"MENU_SELECT_UNFLAGGED": "Não sinalizada",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Lista vazia.",
"EMPTY_SEARCH_LIST": "Nenhuma mensagem corresponde à sua pesquisa.",
"SEARCH_RESULT_FOR": "Resultados de pesquisa para \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Citit",
"MENU_SELECT_FLAGGED": "Important",
"MENU_SELECT_UNFLAGGED": "Neimportant",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Nimic aici, deocamdată",
"EMPTY_SEARCH_LIST": "Nu am găsit nimic.",
"SEARCH_RESULT_FOR": "Rezultat căutare \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Прочитанные",
"MENU_SELECT_FLAGGED": "Помеченные",
"MENU_SELECT_UNFLAGGED": "Без пометок",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "В папке нет писем.",
"EMPTY_SEARCH_LIST": "Письма не найдены.",
"SEARCH_RESULT_FOR": "Результат поиска \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Prečítané",
"MENU_SELECT_FLAGGED": "Označené",
"MENU_SELECT_UNFLAGGED": "Neoznačené",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Zoznam je prázdny.",
"EMPTY_SEARCH_LIST": "Vášmu vyhľadávaniu nezodpovedajú žiadne správy.",
"SEARCH_RESULT_FOR": "Výsledky vyhľadávania pre \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Prebrana",
"MENU_SELECT_FLAGGED": "Z zvezdico",
"MENU_SELECT_UNFLAGGED": "Brez zvezdice",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Prazen seznam.",
"EMPTY_SEARCH_LIST": "Brez ujemanj.",
"SEARCH_RESULT_FOR": "Ujemanja za \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Läst",
"MENU_SELECT_FLAGGED": "Flaggad",
"MENU_SELECT_UNFLAGGED": "Avflaggad",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Tom lista",
"EMPTY_SEARCH_LIST": "Inga meddelanden matchar din sökning.",
"SEARCH_RESULT_FOR": "Sök resultat för \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Oku",
"MENU_SELECT_FLAGGED": "İşaretlenmiş",
"MENU_SELECT_UNFLAGGED": "İşaretlenmemiş",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Herhangi Bir Sonuç Bulunamadı.",
"EMPTY_SEARCH_LIST": "Arama sonuçlarına uyan herhangi bir mesaj bulunamadı.",
"SEARCH_RESULT_FOR": "\"%SEARCH%\" için arama sonuçları",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Прочитані",
"MENU_SELECT_FLAGGED": "Відмічені",
"MENU_SELECT_UNFLAGGED": "Без поміток",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "В папці немає листів.",
"EMPTY_SEARCH_LIST": "Листи не знайдено.",
"SEARCH_RESULT_FOR": "Результат пошуку \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "Đã đọc",
"MENU_SELECT_FLAGGED": "Được đánh dấu sao",
"MENU_SELECT_UNFLAGGED": "Không được đánh dấu sao",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "Danh sách trống.",
"EMPTY_SEARCH_LIST": "Không tìm thấy thư trùng khớp.",
"SEARCH_RESULT_FOR": "Kết quả tìm kiếm cho \"%SEARCH%\"",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "已读",
"MENU_SELECT_FLAGGED": "已加星标",
"MENU_SELECT_UNFLAGGED": "未加星标",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "空列表。",
"EMPTY_SEARCH_LIST": "未找到您搜索的消息。",
"SEARCH_RESULT_FOR": "搜索 \"%SEARCH%\" 的结果",

View file

@ -98,6 +98,7 @@
"MENU_SELECT_SEEN": "已讀",
"MENU_SELECT_FLAGGED": "已加星標",
"MENU_SELECT_UNFLAGGED": "未加星標",
"DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments",
"EMPTY_LIST": "空列表。",
"EMPTY_SEARCH_LIST": "未找到您想要的。",
"SEARCH_RESULT_FOR": "搜索 \"%SEARCH%\" 的結果",

View file

@ -43,6 +43,9 @@
<li class="dividerbar" role="presentation" data-bind="command: forwardCommand">
<a href="#" tabindex="-1" data-icon="↞" data-i18n="MESSAGE_LIST/BUTTON_MULTY_FORWARD"></a>
</li>
<li role="presentation" data-bind="command: downloadCommand">
<a href="#" tabindex="-1" data-icon="" data-i18n="MESSAGE_LIST/DOWNLOAD_ALL_ATTACHMENTS"></a>
</li>
<li class="dividerbar" role="presentation" data-bind="command: moveCommand">
<a href="#" tabindex="-1" data-icon="📁" data-i18n="GLOBAL/MOVE_TO"></a>
</li>