Drag'n'Drop contacts between addressbook. Still needs some css magic.
This commit is contained in:
parent
51d33768b8
commit
052bd8efbb
|
@ -0,0 +1,41 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Victor Dubiniuk
|
||||
* Copyright (c) 2012 Victor Dubiniuk <victor.dubiniuk@gmail.com>
|
||||
* Copyright (c) 2012 Thomas Tanghus <thomas@tanghus.net>
|
||||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later.
|
||||
* See the COPYING-README file.
|
||||
*/
|
||||
|
||||
OCP\JSON::checkLoggedIn();
|
||||
OCP\JSON::checkAppEnabled('contacts');
|
||||
OCP\JSON::callCheck();
|
||||
|
||||
$ids = $_POST['ids'];
|
||||
$aid = intval($_POST['aid']);
|
||||
OC_Contacts_App::getAddressbook($aid);
|
||||
|
||||
if(!is_array($ids)) {
|
||||
$ids = array($ids,);
|
||||
}
|
||||
$goodids = array();
|
||||
foreach ($ids as $id){
|
||||
try {
|
||||
$card = OC_Contacts_App::getContactObject( intval($id) );
|
||||
if($card) {
|
||||
$goodids[] = $id;
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
OCP\Util::writeLog('contacts', 'Error moving contact "'.$id.'" to addressbook "'.$aid.'"'.$e->getMessage(), OCP\Util::ERROR);
|
||||
}
|
||||
}
|
||||
try {
|
||||
OC_Contacts_VCard::moveToAddressBook($aid, $ids);
|
||||
} catch (Exception $e) {
|
||||
$msg = $e->getMessage();
|
||||
OCP\Util::writeLog('contacts', 'Error moving contacts "'.implode(',', $ids).'" to addressbook "'.$aid.'"'.$msg, OCP\Util::ERROR);
|
||||
OC_JSON::error(array('data' => array('message' => $msg,)));
|
||||
}
|
||||
|
||||
OC_JSON::success(array('data' => array('ids' => $goodids,)));
|
|
@ -1505,6 +1505,36 @@ Contacts={
|
|||
}
|
||||
},
|
||||
Contacts:{
|
||||
drop:function(event, ui) {
|
||||
var dragitem = ui.draggable, droptarget = $(this);
|
||||
//console.log('Drop ' + dragitem.data('id') +' on: ' + droptarget.data('id'));
|
||||
if(dragitem.data('bookid') == droptarget.data('id')) {
|
||||
return false;
|
||||
}
|
||||
var droplist = (droptarget.is('ul'))?droptarget:droptarget.next();
|
||||
$.post(OC.filePath('contacts', 'ajax', 'movetoaddressbook.php'), { ids: dragitem.data('id'), aid: $(this).data('id') },
|
||||
function(jsondata){
|
||||
if(jsondata.status == 'success'){
|
||||
// Do some inserting/removing/sorting magic
|
||||
var name = $(dragitem).find('a').html();
|
||||
var added = false;
|
||||
$(droplist).children().each(function(){
|
||||
if ($(this).text().toLowerCase() > name.toLowerCase()) {
|
||||
$(this).before(dragitem.detach()); //.fadeIn('slow');
|
||||
added = true;
|
||||
return false;
|
||||
}
|
||||
});
|
||||
if(!added) {
|
||||
$(droplist).append(dragitem.detach());
|
||||
}
|
||||
dragitem.data('bookid', droptarget.data('id'));
|
||||
Contacts.UI.Contacts.scrollTo(dragitem.data('id'));
|
||||
} else {
|
||||
OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error'));
|
||||
}
|
||||
});
|
||||
},
|
||||
// Reload the contacts list.
|
||||
update:function(id){
|
||||
$.getJSON(OC.filePath('contacts', 'ajax', 'contacts.php'),{},function(jsondata){
|
||||
|
@ -1522,6 +1552,12 @@ Contacts={
|
|||
setTimeout(Contacts.UI.Contacts.lazyupdate, 500);*/
|
||||
});
|
||||
Contacts.UI.Card.update(id);
|
||||
$('#contacts h3,#contacts ul').droppable({ drop: Contacts.UI.Contacts.drop});
|
||||
$('#contacts li').draggable({
|
||||
axis: 'y', containment: '#contacts',
|
||||
scroll: true, scrollSensitivity: 100,
|
||||
opacity: 0.7, helper: 'clone'
|
||||
});
|
||||
}
|
||||
else{
|
||||
OC.dialogs.alert(jsondata.data.message, t('contacts', 'Error'));
|
||||
|
|
Loading…
Reference in New Issue