mirror of
https://github.com/the-djmaze/snappymail.git
synced 2024-09-20 07:35:55 +08:00
Slightly modified patch code of #1657
This commit is contained in:
parent
95436347e5
commit
50e30dbb6e
|
@ -112,7 +112,7 @@ export class AppUser extends AbstractApp {
|
|||
case FolderType.Trash:
|
||||
oMoveFolder = getFolderFromCacheList(FolderUserStore.trashFolder());
|
||||
nSetSystemFoldersNotification = iFolderType;
|
||||
bDelete = bDelete || UNUSED_OPTION_VALUE === FolderUserStore.trashFolder()
|
||||
bDelete = bDelete/* || UNUSED_OPTION_VALUE === FolderUserStore.trashFolder()*/
|
||||
|| sFromFolderFullName === FolderUserStore.spamFolder()
|
||||
|| sFromFolderFullName === FolderUserStore.trashFolder();
|
||||
break;
|
||||
|
|
|
@ -71,7 +71,9 @@ MessageSetAction = {
|
|||
SetSeen: 0,
|
||||
UnsetSeen: 1,
|
||||
SetFlag: 2,
|
||||
UnsetFlag: 3
|
||||
UnsetFlag: 3,
|
||||
SetDeleted: 4,
|
||||
UnsetDeleted: 5
|
||||
},
|
||||
|
||||
/**
|
||||
|
|
|
@ -206,6 +206,7 @@ export class MessageModel extends AbstractModel {
|
|||
|
||||
isUnseen: () => !this.flags().includes('\\seen'),
|
||||
isFlagged: () => this.flags().includes('\\flagged'),
|
||||
isDeleted: () => this.flags().includes('\\deleted'),
|
||||
// isJunk: () => this.flags().includes('$junk') && !this.flags().includes('$nonjunk'),
|
||||
// isPhishing: () => this.flags().includes('$phishing'),
|
||||
|
||||
|
@ -363,7 +364,7 @@ export class MessageModel extends AbstractModel {
|
|||
lineAsCss(flags=1) {
|
||||
let classes = [];
|
||||
forEachObjectEntry({
|
||||
deleted: this.deleted(),
|
||||
deleted: this.deleted() || this.isDeleted(),
|
||||
selected: this.selected(),
|
||||
checked: this.checked(),
|
||||
unseen: this.isUnseen(),
|
||||
|
|
|
@ -36,6 +36,7 @@ import { baseCollator } from 'Common/Translator';
|
|||
|
||||
const
|
||||
isChecked = item => item.checked(),
|
||||
isDeleted = item => item.isDeleted(),
|
||||
replaceHash = hash => {
|
||||
rl.route.off();
|
||||
hasher.replaceHash(hash);
|
||||
|
@ -142,6 +143,14 @@ MessagelistUserStore.hasCheckedOrSelected = koComputable(() =>
|
|||
| !!MessagelistUserStore.find(isChecked)
|
||||
).extend({ rateLimit: 50 });
|
||||
|
||||
MessagelistUserStore.hasCheckedOrSelectedAndDeleted = koComputable(
|
||||
() => !!MessagelistUserStore.listCheckedOrSelected().find(isDeleted)
|
||||
).extend({ rateLimit: 50 });
|
||||
|
||||
MessagelistUserStore.hasCheckedOrSelectedAndUndeleted = koComputable(
|
||||
() => !!MessagelistUserStore.listCheckedOrSelected().find(item => !item?.isDeleted())
|
||||
).extend({ rateLimit: 50 });
|
||||
|
||||
MessagelistUserStore.notifyNewMessages = (folder, newMessages) => {
|
||||
if (getFolderInboxName() === folder && arrayLength(newMessages)) {
|
||||
|
||||
|
@ -370,6 +379,14 @@ MessagelistUserStore.setAction = (sFolderFullName, iSetAction, messages) => {
|
|||
messages.forEach(oMessage =>
|
||||
oMessage.isFlagged() && rootUids.push(oMessage.uid) && oMessage.flags.remove('\\flagged')
|
||||
);
|
||||
} else if (iSetAction == MessageSetAction.SetDeleted) {
|
||||
messages.forEach(oMessage =>
|
||||
!oMessage.isDeleted() && rootUids.push(oMessage.uid) && oMessage.flags.push('\\deleted')
|
||||
);
|
||||
} else if (iSetAction == MessageSetAction.UnsetDeleted) {
|
||||
messages.forEach(oMessage =>
|
||||
oMessage.isDeleted() && rootUids.push(oMessage.uid) && oMessage.flags.remove('\\deleted')
|
||||
);
|
||||
}
|
||||
rootUids = rootUids.validUnique();
|
||||
length = rootUids.length;
|
||||
|
@ -399,6 +416,15 @@ MessagelistUserStore.setAction = (sFolderFullName, iSetAction, messages) => {
|
|||
setAction: iSetAction == MessageSetAction.SetFlag ? 1 : 0
|
||||
});
|
||||
break;
|
||||
|
||||
case MessageSetAction.SetDeleted:
|
||||
case MessageSetAction.UnsetDeleted:
|
||||
Remote.request('MessageSetDeleted', null, {
|
||||
folder: sFolderFullName,
|
||||
uids: rootUids.join(','),
|
||||
setAction: iSetAction == MessageSetAction.SetDeleted ? 1 : 0
|
||||
});
|
||||
break;
|
||||
// no default
|
||||
}
|
||||
}
|
||||
|
|
|
@ -33,6 +33,10 @@ input:-webkit-autofill:active {
|
|||
transition: color 9999s ease-out, background-color 9999s ease-out;
|
||||
}
|
||||
|
||||
[data-icon].rotate::before {
|
||||
transform: rotate(-180deg);
|
||||
}
|
||||
|
||||
/*
|
||||
@media (pointer: coarse), (hover: none) {
|
||||
[title] {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import ko from 'ko';
|
||||
import { addObservablesTo, addComputablesTo } from 'External/ko';
|
||||
|
||||
import { UNUSED_OPTION_VALUE } from 'Common/Consts';
|
||||
import { ScopeFolderList, ScopeMessageList, ScopeMessageView } from 'Common/Enums';
|
||||
import { ComposeType, FolderType, MessageSetAction } from 'Common/EnumsUser';
|
||||
import { doc,
|
||||
|
@ -326,7 +327,8 @@ export class MailMessageList extends AbstractViewRight {
|
|||
downloadZipCommand: canBeMovedHelper,
|
||||
forwardCommand: canBeMovedHelper,
|
||||
deleteWithoutMoveCommand: canBeMovedHelper,
|
||||
deleteCommand: canBeMovedHelper,
|
||||
deleteCommand: () => MessagelistUserStore.hasCheckedOrSelectedAndUndeleted(),
|
||||
undeleteCommand: () => MessagelistUserStore.hasCheckedOrSelectedAndDeleted(),
|
||||
archiveCommand: canBeMovedHelper,
|
||||
spamCommand: canBeMovedHelper,
|
||||
notSpamCommand: canBeMovedHelper,
|
||||
|
@ -400,8 +402,27 @@ export class MailMessageList extends AbstractViewRight {
|
|||
&& moveMessagesToFolderType(FolderType.Trash, true);
|
||||
}
|
||||
|
||||
// User setting hideDeleted || immediatelyMoveToTrash ??
|
||||
deleteCommand() {
|
||||
moveMessagesToFolderType(FolderType.Trash);
|
||||
// moveMessagesToFolderType(FolderType.Trash);
|
||||
if (UNUSED_OPTION_VALUE === FolderUserStore.trashFolder() || '' === FolderUserStore.trashFolder()) {
|
||||
listAction(
|
||||
FolderUserStore.currentFolderFullName(),
|
||||
MessageSetAction.SetDeleted,
|
||||
MessagelistUserStore.listCheckedOrSelected()
|
||||
);
|
||||
} else {
|
||||
moveMessagesToFolderType(FolderType.Trash);
|
||||
}
|
||||
}
|
||||
|
||||
// User setting !hideDeleted && !immediatelyMoveToTrash ??
|
||||
undeleteCommand() {
|
||||
listAction(
|
||||
FolderUserStore.currentFolderFullName(),
|
||||
MessageSetAction.UnsetDeleted,
|
||||
MessagelistUserStore.listCheckedOrSelected()
|
||||
);
|
||||
}
|
||||
|
||||
archiveCommand() {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import ko from 'ko';
|
||||
import { addObservablesTo, addComputablesTo, addSubscribablesTo } from 'External/ko';
|
||||
|
||||
import { UNUSED_OPTION_VALUE } from 'Common/Consts';
|
||||
import { ScopeFolderList, ScopeMessageList, ScopeMessageView } from 'Common/Enums';
|
||||
|
||||
import {
|
||||
|
@ -99,6 +100,20 @@ export class MailMessageView extends AbstractViewRight {
|
|||
currentMessage(null);
|
||||
rl.app.moveMessagesToFolderType(folderType, message.folder, new Set([message.uid]), bDelete);
|
||||
}
|
||||
}, this.messageVisible),
|
||||
createCommandSetHelper = action =>
|
||||
createCommand(() => setAction(action), this.messageVisible),
|
||||
createCommandDeleteHelper = () =>
|
||||
createCommand(() => {
|
||||
if (UNUSED_OPTION_VALUE === FolderUserStore.trashFolder() || '' === FolderUserStore.trashFolder()) {
|
||||
setAction(MessageSetAction.SetDeleted);
|
||||
} else {
|
||||
const message = currentMessage();
|
||||
if (message) {
|
||||
currentMessage(null);
|
||||
rl.app.moveMessagesToFolderType(FolderType.Trash, message.folder, new Set([message.uid]));
|
||||
}
|
||||
}
|
||||
}, this.messageVisible);
|
||||
|
||||
this.msgDefaultAction = SettingsUserStore.msgDefaultAction;
|
||||
|
@ -197,6 +212,8 @@ export class MailMessageView extends AbstractViewRight {
|
|||
|
||||
pgpSupported: () => currentMessage() && PgpUserStore.isSupported(),
|
||||
|
||||
canBeUndeleted: () => currentMessage()?.isDeleted(),
|
||||
|
||||
messageListOrViewLoading:
|
||||
() => MessagelistUserStore.isLoading() | MessageUserStore.loading()
|
||||
});
|
||||
|
@ -231,7 +248,11 @@ export class MailMessageView extends AbstractViewRight {
|
|||
this.forwardAsAttachmentCommand = createCommandReplyHelper(ComposeType.ForwardAsAttachment);
|
||||
this.editAsNewCommand = createCommandReplyHelper(ComposeType.EditAsNew);
|
||||
|
||||
this.deleteCommand = createCommandActionHelper(FolderType.Trash);
|
||||
// this.deleteCommand = createCommandActionHelper(FolderType.Trash);
|
||||
// User setting hideDeleted || immediatelyMoveToTrash ??
|
||||
this.deleteCommand = createCommandDeleteHelper();
|
||||
// User setting !hideDeleted && !immediatelyMoveToTrash ??
|
||||
this.undeleteCommand = createCommandSetHelper(MessageSetAction.UnsetDeleted);
|
||||
this.deleteWithoutMoveCommand = createCommandActionHelper(FolderType.Trash, true);
|
||||
this.archiveCommand = createCommandActionHelper(FolderType.Archive);
|
||||
this.spamCommand = createCommandActionHelper(FolderType.Junk);
|
||||
|
|
|
@ -449,6 +449,11 @@ trait Messages
|
|||
return $this->messageSetFlag(MessageFlag::FLAGGED, true);
|
||||
}
|
||||
|
||||
public function DoMessageSetDeleted() : array
|
||||
{
|
||||
return $this->messageSetFlag(MessageFlag::DELETED, true);
|
||||
}
|
||||
|
||||
public function DoMessageSetKeyword() : array
|
||||
{
|
||||
return $this->messageSetFlag($this->GetActionParam('keyword', ''), true);
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "أغلق (Esc)",
|
||||
"CONTACTS": "جهات الإتصال",
|
||||
"DELETE": "حذف",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "إنتهاء",
|
||||
"EMAIL": "إيميل",
|
||||
"FROM": "من",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Закрыць (Esc)",
|
||||
"CONTACTS": "Кантакты",
|
||||
"DELETE": "Выдаліць",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Завяршыць",
|
||||
"EMAIL": "Пошта",
|
||||
"FROM": "Ад",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Затваряне (Esc)",
|
||||
"CONTACTS": "Контакти",
|
||||
"DELETE": "Изтрий",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Готово",
|
||||
"EMAIL": "Акаунт",
|
||||
"FROM": "От",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Zavřít (Esc)",
|
||||
"CONTACTS": "Adresář",
|
||||
"DELETE": "Odstranit",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Dokončit",
|
||||
"EMAIL": "Email",
|
||||
"FROM": "Odesílatel",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Luk (Esc)",
|
||||
"CONTACTS": "Kontakter",
|
||||
"DELETE": "Slet",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Færdig",
|
||||
"EMAIL": "E-mail",
|
||||
"FROM": "Fra",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Schließen",
|
||||
"CONTACTS": "Kontakte",
|
||||
"DELETE": "Löschen",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Erledigt",
|
||||
"EMAIL": "E-Mail",
|
||||
"FROM": "Von",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Κλείσιμο (Esc)",
|
||||
"CONTACTS": "Επαφές",
|
||||
"DELETE": "Διαγραφή",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Έγινε",
|
||||
"EMAIL": "Διεύθυνση ηλεκτρονικού ταχυδρομείου",
|
||||
"FROM": "Από",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Close",
|
||||
"CONTACTS": "Contacts",
|
||||
"DELETE": "Delete",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Done",
|
||||
"EMAIL": "Email",
|
||||
"FROM": "From",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Cerrar",
|
||||
"CONTACTS": "Contactos",
|
||||
"DELETE": "Eliminar",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Hecho",
|
||||
"EMAIL": "Email",
|
||||
"FROM": "De",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Sulge (Esc)",
|
||||
"CONTACTS": "Kontaktid",
|
||||
"DELETE": "Kustuta",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Valmis",
|
||||
"EMAIL": "E-post",
|
||||
"FROM": "Saatja",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Itxi",
|
||||
"CONTACTS": "Kontaktuak",
|
||||
"DELETE": "Ezabatu",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Eginda",
|
||||
"EMAIL": "Email",
|
||||
"FROM": "Nork",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "بستن (Esc)",
|
||||
"CONTACTS": "تماسها",
|
||||
"DELETE": "حذف",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "انجام شد",
|
||||
"EMAIL": "پست الکترونیک",
|
||||
"FROM": "از",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Sulje (Esc)",
|
||||
"CONTACTS": "Yhteystiedot",
|
||||
"DELETE": "Poista",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Valmis",
|
||||
"EMAIL": "Sähköpostisi",
|
||||
"FROM": "Lähettäjä",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Fermer",
|
||||
"CONTACTS": "Contacts",
|
||||
"DELETE": "Supprimer",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Fait",
|
||||
"EMAIL": "Courriel",
|
||||
"FROM": "De",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Bezárás (Esc)",
|
||||
"CONTACTS": "Névjegyek",
|
||||
"DELETE": "Törlés",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Kész",
|
||||
"EMAIL": "E-mail",
|
||||
"FROM": "Feladó",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Tutup (esc)",
|
||||
"CONTACTS": "Kontak",
|
||||
"DELETE": "Hapus",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Selesai",
|
||||
"EMAIL": "Email",
|
||||
"FROM": "Dari",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Loka (Esc)",
|
||||
"CONTACTS": "Tengiliðir",
|
||||
"DELETE": "Eyða",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Lokið",
|
||||
"EMAIL": "Tölvupóstfang",
|
||||
"FROM": "Frá",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Chiudi (Esc)",
|
||||
"CONTACTS": "Contatti",
|
||||
"DELETE": "Elimina",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Fatto",
|
||||
"EMAIL": "Email",
|
||||
"FROM": "Da",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "閉じる(Esc)",
|
||||
"CONTACTS": "連絡先",
|
||||
"DELETE": "削除",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "完了",
|
||||
"EMAIL": "メールアドレス",
|
||||
"FROM": "差出人",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "닫기 (Esc)",
|
||||
"CONTACTS": "연락처",
|
||||
"DELETE": "삭제",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "완료",
|
||||
"EMAIL": "이메일",
|
||||
"FROM": "보내는 사람",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Uždaryti (Esc)",
|
||||
"CONTACTS": "Kontaktai",
|
||||
"DELETE": "Naikinti",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Atlikta",
|
||||
"EMAIL": "E-paštas",
|
||||
"FROM": "Nuo",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Aizvērt (Esc)",
|
||||
"CONTACTS": "Kontakti",
|
||||
"DELETE": "Dzēst",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Done",
|
||||
"EMAIL": "E-pasts",
|
||||
"FROM": "No",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Lukk (Esc)",
|
||||
"CONTACTS": "Kontakter",
|
||||
"DELETE": "Slett",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Ferdig",
|
||||
"EMAIL": "E-postadresse",
|
||||
"FROM": "Fra",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Sluiten",
|
||||
"CONTACTS": "Contactpersonen",
|
||||
"DELETE": "Verwijder",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Klaar",
|
||||
"EMAIL": "E-mailadres",
|
||||
"FROM": "Van",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Zamknij (Esc)",
|
||||
"CONTACTS": "Kontakty",
|
||||
"DELETE": "Usuń",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Gotowe",
|
||||
"EMAIL": "Adres e-mail",
|
||||
"FROM": "Od",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Fechar (Esc)",
|
||||
"CONTACTS": "Contatos",
|
||||
"DELETE": "Excluir",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Concluir",
|
||||
"EMAIL": "E-mail",
|
||||
"FROM": "De",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Fechar",
|
||||
"CONTACTS": "Contactos",
|
||||
"DELETE": "Eliminar",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Terminado",
|
||||
"EMAIL": "Email",
|
||||
"FROM": "De",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Închide (Esc)",
|
||||
"CONTACTS": "Contacte",
|
||||
"DELETE": "Șterge",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Done",
|
||||
"EMAIL": "Email",
|
||||
"FROM": "De la",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Закрыть (Esc)",
|
||||
"CONTACTS": "Контакты",
|
||||
"DELETE": "Удалить",
|
||||
"UNDELETE": "Восстановить",
|
||||
"DONE": "Завершить",
|
||||
"EMAIL": "Почта",
|
||||
"FROM": "От",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Zatvoriť (Esc)",
|
||||
"CONTACTS": "Adresár",
|
||||
"DELETE": "Odstrániť",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Done",
|
||||
"EMAIL": "Email",
|
||||
"FROM": "Odosielateľ",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Zapri (Esc)",
|
||||
"CONTACTS": "Stiki",
|
||||
"DELETE": "Izbriši",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Končaj",
|
||||
"EMAIL": "E-pošta",
|
||||
"FROM": "Od",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Stäng (Esc)",
|
||||
"CONTACTS": "Kontakter",
|
||||
"DELETE": "Ta bort",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Klar",
|
||||
"EMAIL": "E-post",
|
||||
"FROM": "Från",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Kapat (Esc)",
|
||||
"CONTACTS": "Kişi Listesi",
|
||||
"DELETE": "Sil",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Done",
|
||||
"EMAIL": "E-Posta",
|
||||
"FROM": "Kimden",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Закрити (Esc)",
|
||||
"CONTACTS": "Контакти",
|
||||
"DELETE": "Видалити",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Зроблено",
|
||||
"EMAIL": "Пошта",
|
||||
"FROM": "Від",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "Đóng",
|
||||
"CONTACTS": "Danh bạ",
|
||||
"DELETE": "Xóa",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "Đã xong",
|
||||
"EMAIL": "Email",
|
||||
"FROM": "Đến từ",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "關閉",
|
||||
"CONTACTS": "連絡人",
|
||||
"DELETE": "刪除",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "完成",
|
||||
"EMAIL": "電子郵件",
|
||||
"FROM": "寄件者",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
"CLOSE": "关闭",
|
||||
"CONTACTS": "联系人",
|
||||
"DELETE": "删除",
|
||||
"UNDELETE": "Undelete",
|
||||
"DONE": "完成",
|
||||
"EMAIL": "邮箱",
|
||||
"FROM": "发件人",
|
||||
|
|
|
@ -17,6 +17,9 @@
|
|||
<i class="icon-check-mark-circle-two"></i>
|
||||
</a>
|
||||
<a class="btn fontastic" data-bind="command: deleteCommand" data-i18n="[title]GLOBAL/DELETE">🗑</a>
|
||||
<!--
|
||||
<a class="btn fontastic" data-bind="command: undeleteCommand" data-i18n="[title]GLOBAL/UNDELETE" style="transform:rotate(-180deg)">🗑</a>
|
||||
-->
|
||||
</div>
|
||||
<div class="btn-group dropdown" data-bind="registerBootstrapDropdown: true">
|
||||
<a id="more-list-dropdown-id" class="btn dropdown-toggle fontastic" href="#" tabindex="-1" data-i18n="[title]GLOBAL/MORE">☰</a>
|
||||
|
@ -63,6 +66,9 @@
|
|||
<li role="presentation" data-bind="command: deleteCommand">
|
||||
<a href="#" tabindex="-1" data-icon="🗑" data-i18n="GLOBAL/DELETE"></a>
|
||||
</li>
|
||||
<li role="presentation" data-bind="command: undeleteCommand">
|
||||
<a href="#" tabindex="-1" data-icon="🗑" data-i18n="GLOBAL/UNDELETE" class="rotate"></a>
|
||||
</li>
|
||||
<li role="presentation" data-bind="visible: allowDangerousActions, command: deleteWithoutMoveCommand">
|
||||
<a href="#" tabindex="-1" data-icon="🗑" data-i18n="MESSAGE_LIST/BUTTON_DELETE_WITHOUT_MOVE"></a>
|
||||
</li>
|
||||
|
|
|
@ -11,7 +11,8 @@
|
|||
<a class="btn" data-bind="visible: isSpamFolder, command: notSpamCommand" data-i18n="[title]GLOBAL/NOT_SPAM">
|
||||
<i class="icon-check-mark-circle-two"></i>
|
||||
</a>
|
||||
<a class="btn fontastic" data-bind="command: deleteCommand" data-i18n="[title]GLOBAL/DELETE">🗑</a>
|
||||
<a class="btn fontastic" data-bind="visible: !canBeUndeleted(), command: deleteCommand" data-i18n="[title]GLOBAL/DELETE">🗑</a>
|
||||
<a class="btn fontastic" data-bind="visible: canBeUndeleted, command: undeleteCommand" data-i18n="[title]GLOBAL/UNDELETE" style="transform:rotate(-180deg)">🗑</a>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<a class="btn btn-thin buttonUp fontastic" data-bind="command: goUpCommand">❮</a>
|
||||
|
@ -82,9 +83,12 @@
|
|||
<li role="presentation">
|
||||
<a href="#" tabindex="-1" data-bind="command: copyCommand" data-icon="" data-i18n="GLOBAL/COPY_TO"></a>
|
||||
</li>
|
||||
<li role="presentation">
|
||||
<li role="presentation" data-bind="visible: !canBeUndeleted()">
|
||||
<a href="#" tabindex="-1" data-bind="command: deleteCommand" data-icon="🗑" data-i18n="GLOBAL/DELETE"></a>
|
||||
</li>
|
||||
<li role="presentation" data-bind="visible: canBeUndeleted">
|
||||
<a href="#" tabindex="-1" data-bind="command: undeleteCommand" data-icon="🗑" data-i18n="GLOBAL/UNDELETE" class="rotate"></a>
|
||||
</li>
|
||||
<li role="presentation">
|
||||
<a href="#" tabindex="-1" data-bind="command: deleteWithoutMoveCommand" data-icon="🗑" data-i18n="MESSAGE_LIST/BUTTON_DELETE_WITHOUT_MOVE"></a>
|
||||
</li>
|
||||
|
|
Loading…
Reference in a new issue