(fix) XSRF supprot for all contact operations
parent
d4fc1775b2
commit
5f2a862bc8
|
@ -69,7 +69,8 @@
|
||||||
content = [NSMutableString string];
|
content = [NSMutableString string];
|
||||||
request = [context request];
|
request = [context request];
|
||||||
sourceFolder = [self clientObject];
|
sourceFolder = [self clientObject];
|
||||||
contactsId = [request formValuesForKey: @"uid"];
|
contactsId = [[[[context request] contentAsString] objectFromJSONString] objectForKey: @"uids"];
|
||||||
|
|
||||||
if (!contactsId)
|
if (!contactsId)
|
||||||
contactsId = [sourceFolder toOneRelationshipKeys];
|
contactsId = [sourceFolder toOneRelationshipKeys];
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
className="UIxPageFrame"
|
className="UIxPageFrame"
|
||||||
title="title"
|
title="title"
|
||||||
const:userDefaultsKeys="SOGoContactsCategories"
|
const:userDefaultsKeys="SOGoContactsCategories"
|
||||||
const:jsFiles="vendor/ckeditor/ckeditor.js, vendor/ckeditor/ck.js, Common.js, Preferences.services.js, Mailer.services.js, Contacts.js, Contacts.services.js, vendor/angular-file-upload.min.js">
|
const:jsFiles="vendor/ckeditor/ckeditor.js, vendor/ckeditor/ck.js, Common.js, Preferences.services.js, Mailer.services.js, Contacts.js, Contacts.services.js, vendor/angular-file-upload.min.js, vendor/FileSaver.min.js">
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var contactFolders = <var:string value="contactFolders" const:escapeHTML="NO" />;
|
var contactFolders = <var:string value="contactFolders" const:escapeHTML="NO" />;
|
||||||
</script>
|
</script>
|
||||||
|
@ -96,7 +96,7 @@
|
||||||
</md-button>
|
</md-button>
|
||||||
</md-menu-item>
|
</md-menu-item>
|
||||||
<md-menu-item>
|
<md-menu-item>
|
||||||
<md-button type="button" ng-click="app.exportCards()">
|
<md-button type="button" ng-click="folder.exportCards(false)">
|
||||||
<var:string label:value="Export"/>
|
<var:string label:value="Export"/>
|
||||||
</md-button>
|
</md-button>
|
||||||
</md-menu-item>
|
</md-menu-item>
|
||||||
|
@ -353,7 +353,7 @@
|
||||||
</md-button>
|
</md-button>
|
||||||
</md-menu-item>
|
</md-menu-item>
|
||||||
<md-menu-item ng-hide="addressbook.selectedFolder.isRemote">
|
<md-menu-item ng-hide="addressbook.selectedFolder.isRemote">
|
||||||
<md-button ng-click="addressbook.saveSelectedCards()">
|
<md-button ng-click="addressbook.selectedFolder.exportCards(true)">
|
||||||
<var:string label:value="Export"/>
|
<var:string label:value="Export"/>
|
||||||
</md-button>
|
</md-button>
|
||||||
</md-menu-item>
|
</md-menu-item>
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
<md-menu-content>
|
<md-menu-content>
|
||||||
<md-menu-item>
|
<md-menu-item>
|
||||||
<md-button label:aria-label="Export"
|
<md-button label:aria-label="Export"
|
||||||
ng-click="editor.exportCard()">
|
ng-click="editor.card.export()">
|
||||||
<var:string label:value="Export"/>
|
<var:string label:value="Export"/>
|
||||||
</md-button>
|
</md-button>
|
||||||
</md-menu-item>
|
</md-menu-item>
|
||||||
|
|
|
@ -632,6 +632,23 @@
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @function $exportCards
|
||||||
|
* @memberof AddressBook.prototype
|
||||||
|
* @desc Export the selected/all cards
|
||||||
|
* @returns a promise of the HTTP operation
|
||||||
|
*/
|
||||||
|
AddressBook.prototype.exportCards = function(selectedOnly) {
|
||||||
|
var selectedUIDs;
|
||||||
|
|
||||||
|
if (selectedOnly) {
|
||||||
|
var selectedCards = _.filter(this.$cards, function(card) { return card.selected; });
|
||||||
|
selectedUIDs = _.map(selectedCards, 'id');
|
||||||
|
}
|
||||||
|
|
||||||
|
return AddressBook.$$resource.download(this.id, 'export', (angular.isDefined(selectedUIDs) ? {uids: selectedUIDs} : null), {type: 'application/octet-stream'});
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @function $unwrap
|
* @function $unwrap
|
||||||
* @memberof AddressBook.prototype
|
* @memberof AddressBook.prototype
|
||||||
|
|
|
@ -20,7 +20,6 @@
|
||||||
vm.notSelectedComponent = notSelectedComponent;
|
vm.notSelectedComponent = notSelectedComponent;
|
||||||
vm.unselectCards = unselectCards;
|
vm.unselectCards = unselectCards;
|
||||||
vm.confirmDeleteSelectedCards = confirmDeleteSelectedCards;
|
vm.confirmDeleteSelectedCards = confirmDeleteSelectedCards;
|
||||||
vm.saveSelectedCards = saveSelectedCards;
|
|
||||||
vm.copySelectedCards = copySelectedCards;
|
vm.copySelectedCards = copySelectedCards;
|
||||||
vm.selectAll = selectAll;
|
vm.selectAll = selectAll;
|
||||||
vm.sort = sort;
|
vm.sort = sort;
|
||||||
|
@ -103,12 +102,6 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function saveSelectedCards() {
|
|
||||||
var selectedCards = _.filter(vm.selectedFolder.$cards, function(card) { return card.selected; });
|
|
||||||
var selectedUIDs = _.map(selectedCards, 'id');
|
|
||||||
$window.location.href = ApplicationBaseURL + '/' + vm.selectedFolder.id + '/export?uid=' + selectedUIDs.join('&uid=');
|
|
||||||
}
|
|
||||||
|
|
||||||
function copySelectedCards(folder) {
|
function copySelectedCards(folder) {
|
||||||
var selectedCards = _.filter(vm.selectedFolder.$cards, function(card) { return card.selected; });
|
var selectedCards = _.filter(vm.selectedFolder.$cards, function(card) { return card.selected; });
|
||||||
vm.selectedFolder.$copyCards(selectedCards, folder).then(function() {
|
vm.selectedFolder.$copyCards(selectedCards, folder).then(function() {
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
vm.save = save;
|
vm.save = save;
|
||||||
vm.confirmDelete = confirmDelete;
|
vm.confirmDelete = confirmDelete;
|
||||||
vm.importCards = importCards;
|
vm.importCards = importCards;
|
||||||
vm.exportCards = exportCards;
|
|
||||||
vm.showLinks = showLinks;
|
vm.showLinks = showLinks;
|
||||||
vm.showProperties = showProperties;
|
vm.showProperties = showProperties;
|
||||||
vm.share = share;
|
vm.share = share;
|
||||||
|
@ -203,10 +202,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function exportCards() {
|
|
||||||
$window.location.href = ApplicationBaseURL + '/' + vm.service.selectedFolder.id + '/exportFolder';
|
|
||||||
}
|
|
||||||
|
|
||||||
function showLinks(addressbook) {
|
function showLinks(addressbook) {
|
||||||
$mdDialog.show({
|
$mdDialog.show({
|
||||||
parent: angular.element(document.body),
|
parent: angular.element(document.body),
|
||||||
|
|
|
@ -202,6 +202,20 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @function export
|
||||||
|
* @memberof Card.prototype
|
||||||
|
* @desc Download the current card
|
||||||
|
* @returns a promise of the HTTP operation
|
||||||
|
*/
|
||||||
|
Card.prototype.export = function() {
|
||||||
|
var selectedIDs;
|
||||||
|
|
||||||
|
selectedIDs = [ this.id ];
|
||||||
|
|
||||||
|
return Card.$$resource.download(this.pid, 'export', {uids: selectedIDs}, {type: 'application/octet-stream'});
|
||||||
|
};
|
||||||
|
|
||||||
Card.prototype.$fullname = function() {
|
Card.prototype.$fullname = function() {
|
||||||
var fn = this.c_cn || '', names;
|
var fn = this.c_cn || '', names;
|
||||||
if (fn.length === 0) {
|
if (fn.length === 0) {
|
||||||
|
|
|
@ -34,7 +34,6 @@
|
||||||
vm.reset = reset;
|
vm.reset = reset;
|
||||||
vm.cancel = cancel;
|
vm.cancel = cancel;
|
||||||
vm.confirmDelete = confirmDelete;
|
vm.confirmDelete = confirmDelete;
|
||||||
vm.exportCard = exportCard;
|
|
||||||
vm.toggleRawSource = toggleRawSource;
|
vm.toggleRawSource = toggleRawSource;
|
||||||
vm.showRawSource = false;
|
vm.showRawSource = false;
|
||||||
|
|
||||||
|
@ -133,10 +132,6 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function exportCard() {
|
|
||||||
$window.location.href = ApplicationBaseURL + '/' + vm.currentFolder.id + '/export?uid=' + vm.card.id;
|
|
||||||
}
|
|
||||||
|
|
||||||
function toggleRawSource($event) {
|
function toggleRawSource($event) {
|
||||||
if (!vm.showRawSource && !vm.rawSource) {
|
if (!vm.showRawSource && !vm.rawSource) {
|
||||||
Card.$$resource.post(vm.currentFolder.id + '/' + vm.card.id, "raw").then(function(data) {
|
Card.$$resource.post(vm.currentFolder.id + '/' + vm.card.id, "raw").then(function(data) {
|
||||||
|
|
Loading…
Reference in New Issue