From 5741d7f95ce13ba78b7228441f804a0333e845ec Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Mon, 10 Aug 2015 09:48:47 -0400 Subject: [PATCH] (feat) can now copy selected cards --- UI/Common/UIxFolderActions.m | 18 ++++++++++-------- .../ContactsUI/UIxContactFoldersView.wox | 18 ++++++++++++++++++ .../js/Contacts/AddressBook.service.js | 11 +++++++++++ .../js/Contacts/AddressBookController.js | 10 ++++++++++ 4 files changed, 49 insertions(+), 8 deletions(-) diff --git a/UI/Common/UIxFolderActions.m b/UI/Common/UIxFolderActions.m index ed206cb8b3..c41a342e11 100644 --- a/UI/Common/UIxFolderActions.m +++ b/UI/Common/UIxFolderActions.m @@ -408,16 +408,17 @@ - (NSException*) _moveContacts: (NSArray*) contactsId - (id ) copyAction { - WORequest *request; id response; NSString *destinationFolderId; NSArray *contactsId; + NSDictionary *data; NSException *ex; - request = [context request]; + data = [[[context request] contentAsString] objectFromJSONString]; + contactsId = [data objectForKey: @"uids"]; + destinationFolderId = [data objectForKey: @"folder"]; - if ((destinationFolderId = [request formValueForKey: @"folder"]) && - (contactsId = [request formValuesForKey: @"uid"])) + if (destinationFolderId && [contactsId count]) ex = [self _moveContacts: contactsId toFolder: destinationFolderId andKeepCopy: YES]; @@ -436,16 +437,17 @@ - (NSException*) _moveContacts: (NSArray*) contactsId - (id ) moveAction { - WORequest *request; id response; NSString *destinationFolderId; + NSDictionary *data; NSArray *contactsId; NSException *ex; - request = [context request]; + data = [[[context request] contentAsString] objectFromJSONString]; + contactsId = [data objectForKey: @"uids"]; + destinationFolderId = [data objectForKey: @"folder"]; - if ((destinationFolderId = [request formValueForKey: @"folder"]) - && (contactsId = [request formValuesForKey: @"uid"])) + if (destinationFolderId && [contactsId count]) ex = [self _moveContacts: contactsId toFolder: destinationFolderId andKeepCopy: NO]; diff --git a/UI/Templates/ContactsUI/UIxContactFoldersView.wox b/UI/Templates/ContactsUI/UIxContactFoldersView.wox index 815464881f..3f06eba5cf 100644 --- a/UI/Templates/ContactsUI/UIxContactFoldersView.wox +++ b/UI/Templates/ContactsUI/UIxContactFoldersView.wox @@ -343,6 +343,24 @@ delete + + + + content_copy + + + + AddressBooks + + + + + {{folder.name}} + + + + more_vert diff --git a/UI/WebServerResources/js/Contacts/AddressBook.service.js b/UI/WebServerResources/js/Contacts/AddressBook.service.js index 6c5b302e89..c51ab9e7f0 100644 --- a/UI/WebServerResources/js/Contacts/AddressBook.service.js +++ b/UI/WebServerResources/js/Contacts/AddressBook.service.js @@ -454,6 +454,17 @@ }); }; + /** + * @function $copyCards + * @memberof AddressBook.prototype + * @desc Copy multiple cards from addressbook to an other one. + * @return a promise of the HTTP operation + */ + AddressBook.prototype.$copyCards = function(cards, folder) { + var uids = _.map(cards, function(card) { return card.id; }); + return AddressBook.$$resource.post(this.id, 'copy', {uids: uids, folder: folder}); + }; + /** * @function $save * @memberof AddressBook.prototype diff --git a/UI/WebServerResources/js/Contacts/AddressBookController.js b/UI/WebServerResources/js/Contacts/AddressBookController.js index e19603b5ac..f92bc9a223 100644 --- a/UI/WebServerResources/js/Contacts/AddressBookController.js +++ b/UI/WebServerResources/js/Contacts/AddressBookController.js @@ -19,6 +19,7 @@ vm.unselectCards = unselectCards; vm.confirmDeleteSelectedCards = confirmDeleteSelectedCards; vm.saveSelectedCards = saveSelectedCards; + vm.copySelectedCards = copySelectedCards; vm.selectAll = selectAll; vm.sort = sort; vm.sortedBy = sortedBy; @@ -94,6 +95,15 @@ window.location.href = ApplicationBaseURL + '/' + vm.selectedFolder.id + '/export?uid=' + selectedUIDs.join('&uid='); } + function copySelectedCards(folder) { + var selectedCards = _.filter(vm.selectedFolder.cards, function(card) { return card.selected; }); + vm.selectedFolder.$copyCards(selectedCards, folder).then(function() { + // TODO: refresh target addressbook? + }, function(error) { + Dialog.alert(l('Error'), error); + }); + } + function selectAll() { _.each(vm.selectedFolder.cards, function(card) { card.selected = true;