Skip to content

Commit

Permalink
(feat) can now copy selected cards
Browse files Browse the repository at this point in the history
  • Loading branch information
extrafu committed Aug 10, 2015
1 parent e13f7a2 commit 5741d7f
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 8 deletions.
18 changes: 10 additions & 8 deletions UI/Common/UIxFolderActions.m
Expand Up @@ -408,16 +408,17 @@ - (NSException*) _moveContacts: (NSArray*) contactsId

- (id <WOActionResults>) copyAction
{
WORequest *request;
id <WOActionResults> 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];
Expand All @@ -436,16 +437,17 @@ - (NSException*) _moveContacts: (NSArray*) contactsId

- (id <WOActionResults>) moveAction
{
WORequest *request;
id <WOActionResults> 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];
Expand Down
18 changes: 18 additions & 0 deletions UI/Templates/ContactsUI/UIxContactFoldersView.wox
Expand Up @@ -343,6 +343,24 @@
<md-button class="sg-icon-button" ng-click="addressbook.confirmDeleteSelectedCards()">
<md-icon>delete</md-icon>
</md-button>
<md-menu>
<md-button class="sg-icon-button" label:aria-label="Copy contacts" ng-click="$mdOpenMenu()">
<md-tooltip md-direction="left"><var:string label:value="Copy To"/></md-tooltip>
<md-icon>content_copy</md-icon>
</md-button>
<md-menu-content width="4">
<md-menu-item>
<md-button class="md-primary" ng-disabled="true">AddressBooks</md-button>
</md-menu-item>
<md-menu-divider><!-- divider --></md-menu-divider>
<md-menu-item ng-repeat="folder in app.service.$addressbooks track by folder.id"
ng-hide="addressbook.selectedFolder.id == folder.id">
<md-button ng-click="addressbook.copySelectedCards(folder.id)">
<span ng-class="'sg-child-level-' + folder.level">{{folder.name}}</span>
</md-button>
</md-menu-item>
</md-menu-content>
</md-menu>
<md-menu>
<md-button class="sg-icon-button" label:aria-label="More messages options" ng-click="$mdOpenMenu()">
<md-icon>more_vert</md-icon>
Expand Down
11 changes: 11 additions & 0 deletions UI/WebServerResources/js/Contacts/AddressBook.service.js
Expand Up @@ -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
Expand Down
10 changes: 10 additions & 0 deletions UI/WebServerResources/js/Contacts/AddressBookController.js
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 5741d7f

Please sign in to comment.