(feat) ability to set folders as drafts/trash/sent

This commit is contained in:
Ludovic Marcotte
2015-07-24 14:40:07 -04:00
parent cbbb3dd9d4
commit c365d646a2
3 changed files with 45 additions and 15 deletions
+18 -7
View File
@@ -256,9 +256,9 @@
ng-dblclick="app.editFolder(folder)"
ui-sref="mail.account.mailbox({accountId: account.id, mailboxId: (folder.path | encodeUri)})"
ui-sref-active="sg-active">
<md-icon ng-class="'sg-child-level-' + folder.level">{{app.iconForFolder(folder)}}</md-icon>
<md-icon ng-class="'sg-child-level-' + folder.level">{{app.metadataForFolder(folder).icon}}</md-icon>
<p class="sg-item-name"
ng-show="app.editMode != folder.path">{{folder.name}}</p>
ng-show="app.editMode != folder.path">{{app.metadataForFolder(folder).name}}</p>
<md-input-container class="md-flex md-tile-content"
ng-show="app.editMode == folder.path">
<input class="folder-name" type="text"
@@ -275,7 +275,7 @@
<md-icon label:aria-label="Options"
ng-click="$mdOpenMenu()"
md-menu-origin="md-menu-origin">more_vert</md-icon>
<md-menu-content width="2">
<md-menu-content width="3">
<md-menu-item>
<md-button type="button" ng-click="app.markFolderRead(folder)">
<var:string label:value="Mark Folder Read"/>
@@ -306,11 +306,22 @@
<var:string label:value="Export"/>
</md-button>
</md-menu-item>
<!-- <md-menu-item>
<md-button type="button" ng-click="TODO">
<var:string label:value="Use This Folder For"/>
<md-menu-divider ng-show="folder.type == 'folder'"><!-- divider --></md-menu-divider>
<md-menu-item ng-show="folder.type == 'folder'">
<md-button type="button" ng-click="app.setFolderAs(folder, 'Drafts')">
<var:string label:value="Set as Drafts"/>
</md-button>
</md-menu-item> -->
</md-menu-item>
<md-menu-item ng-show="folder.type == 'folder'">
<md-button type="button" ng-click="app.setFolderAs(folder, 'Sent')">
<var:string label:value="Set as Sent"/>
</md-button>
</md-menu-item>
<md-menu-item ng-show="folder.type == 'folder'">
<md-button type="button" ng-click="app.setFolderAs(folder, 'Trash')">
<var:string label:value="Set as Trash"/>
</md-button>
</md-menu-item>
<md-menu-divider ng-show="folder.type != 'additional'"><!-- divider --></md-menu-divider>
<md-menu-item ng-show="folder.type != 'additional'">
<md-button type="button" ng-click="app.share(folder)">
@@ -377,6 +377,16 @@
return Mailbox.$$resource.post(this.id, 'expunge');
};
/**
* @function $setFolderAs
* @memberof Mailbox.prototype
* @desc Set a folder as Drafts/Sent/Trash
* @returns a promise of the HTTP operation
*/
Mailbox.prototype.$setFolderAs = function(type) {
return Mailbox.$$resource.post(this.id, 'setAs' + type + 'Folder');
};
/**
* @function $emptyTrash
* @memberof Mailbox.prototype
@@ -26,7 +26,8 @@
vm.confirmDelete = confirmDelete;
vm.markFolderRead = markFolderRead;
vm.share = share;
vm.iconForFolder = iconForFolder;
vm.metadataForFolder = metadataForFolder;
vm.setFolderAs = setFolderAs;
if ($state.current.name == 'mail' && vm.accounts.length > 0 && vm.accounts[0].$mailboxes.length > 0) {
// Redirect to first mailbox of first account if no mailbox is selected
@@ -276,22 +277,30 @@
}
} // share
function iconForFolder(folder) {
function metadataForFolder(folder) {
if (folder.type == 'inbox')
return 'inbox';
return {name: folder.name, icon:'inbox'};
else if (folder.type == 'draft')
return 'drafts';
return {name: l('DraftsFolderName'), icon: 'drafts'};
else if (folder.type == 'sent')
return 'send';
return {name: l('SentFolderName'), icon: 'send'};
else if (folder.type == 'trash')
return 'delete';
return {name: l('TrashFolderName'), icon: 'delete'};
else if (folder.type == 'additional')
return 'folder_shared';
return {name: folder.name, icon: 'folder_shared'};
//if ($rootScope.currentFolder == folder)
// return 'folder_open';
return 'folder';
return {name: folder.name, icon: 'folder'};
}
function setFolderAs(folder, type) {
folder.$setFolderAs(type).then(function() {
folder.$account.$getMailboxes({reload: true});
}, function(error) {
Dialog.alert(l('Warning'), error);
});
}
}