1
0
mirror of https://github.com/owncloudarchive/contacts.git synced 2024-12-01 13:24:10 +01:00

use ocdialog

fix a bug in the contact.save() methid that was readonly for no reason
This commit is contained in:
babelouest 2014-04-07 19:40:21 -04:00
parent ec89124db1
commit e354d0fae3
5 changed files with 99 additions and 103 deletions

View File

@ -60,7 +60,7 @@
<ldap_core>
<object_class name="top" />
<object_class name="inetOrgPerson" />
<unassigned_vcard_property ldap_name="telexnumber" />
<unassigned_vcard_property ldap_name="businessCategory" />
<ldap_id name="cn" />
<not_null name="sn">
<action_switch name="givenname"/>

View File

@ -69,23 +69,35 @@ OC.Contacts = OC.Contacts || {};
});
});
$('#add-address-book-element').on('click keypress', function() {
$("#addressbooks-ui")
.dialog({
title:"Add new Addressbook",
close: function() { $(this).hide(); },
modal: false,
width: 'auto',
var $rightContent = $('#app-content');
$rightContent.append('<div id="addressbook-ui-dialog"></div>');
var frmDlg = $('#addressbooks-ui').clone().octemplate();
var divDlg = $('#addressbook-ui-dialog');
divDlg.html(frmDlg).ocdialog({
modal: true,
closeOnEscape: true,
title: t('contacts', 'Add new Addressbook'),
height: 'auto',
position: ['top', 100],
buttons: {
Ok: function() {
OC.Contacts.addressBookDialog.addressbookUiOk();
width: 'auto',
buttons: [
{
text: t('contacts', 'Ok'),
click: function() {
OC.Contacts.addressBookDialog.addressbookUiOk(divDlg);
},
defaultButton: true
},
Cancel: function() {
OC.Contacts.addressBookDialog.addressbookUiCancel();
{
text: t('contacts', 'Cancel'),
click: function() {
OC.Contacts.addressBookDialog.addressbookUiClose(divDlg);
}
}
],
close: function(/*event, ui*/) {
OC.Contacts.addressBookDialog.addressbookUiClose(divDlg);
},
open: function() {
open: function(/*event, ui*/) {
OC.Contacts.addressBookDialog.openAddressbookUi();
}
});
@ -97,24 +109,37 @@ OC.Contacts = OC.Contacts || {};
if(response.data) {
var addressbook = response.data;
console.log('addressbook', addressbook);
$('#addressbooks-ui')
.dialog({
title:'Edit Addressbook',
close: function() { $(this).hide() },
modal: false,
width: 'auto',
height: 'auto',
position: ['top', 100],
buttons: {
Ok: function() {
OC.Contacts.addressBookDialog.addressbookUiEditOk();
self.setDisplayName($('#addressbooks-ui-name').val());
var $rightContent = $('#app-content');
$rightContent.append('<div id="addressbook-ui-dialog"></div>');
var frmDlg = $('#addressbooks-ui').clone().octemplate();
var divDlg = $('#addressbook-ui-dialog');
divDlg.html(frmDlg).ocdialog({
modal: true,
closeOnEscape: true,
title: t('contacts', 'Edit Addressbook'),
height: 'auto', width: 'auto',
buttons: [
{
text: t('contacts', 'Ok'),
click: function() {
OC.Contacts.addressBookDialog.addressbookUiEditOk(divDlg);
self.setDisplayName($('#addressbooks-ui-name').val());
},
defaultButton: true
},
Cancel: function() {
OC.Contacts.addressBookDialog.addressbookUiCancel();
{
text: t('contacts', 'Cancel'),
click: function() {
OC.Contacts.addressBookDialog.addressbookUiClose(divDlg);
}
}
],
close: function(/*event, ui*/) {
OC.Contacts.addressBookDialog.addressbookUiClose(divDlg);
},
open: OC.Contacts.addressBookDialog.editAddressbookUI(addressbook)
open: function(/*event, ui*/) {
OC.Contacts.addressBookDialog.editAddressbookUI(addressbook);
}
});
}
} else {

View File

@ -24,9 +24,12 @@ OC.Contacts = OC.Contacts || {};
$.when(storage.getConnectors($('#addressbooks-ui-backend').val()))
.then(function(response) {
$('#addressbooks-ui-ldapvcardconnector').empty();
var $option = null;
for (var id in response.data) {
var $option = $('<option value="' + response.data[id].id + '">' + response.data[id].name + '</option>');
$('#addressbooks-ui-ldapvcardconnector').append($option);
if (response.data[id] != null) {
$option = $('<option value="' + response.data[id].id + '">' + response.data[id].name + '</option>');
$('#addressbooks-ui-ldapvcardconnector').append($option);
}
}
$option = $('<option value="">' + 'Custom connector' + '</option>');
$('#addressbooks-ui-ldapvcardconnector').append($option);
@ -38,7 +41,7 @@ OC.Contacts = OC.Contacts || {};
});
});
this.addressbookUiInit();
}
};
AddressBookDialog.prototype.editAddressbookUI = function(addressbook) {
var storage = OC.Contacts.storage;
@ -84,8 +87,9 @@ OC.Contacts = OC.Contacts || {};
console.log('addressbook.ldapconnectorid', addressbook.ldapconnectorid);
for (var id in response.data) {
console.log('response.data[id][\'id\']', response.data[id].id);
var $option = null;
if (response.data[id].id === addressbook.ldapconnectorid) {
var $option = $('<option value="' + response.data[id].id + '">' + response.data[id].name + '</option>').attr('selected','selected');
$option = $('<option value="' + response.data[id].id + '">' + response.data[id].name + '</option>').attr('selected','selected');
custom = false;
} else {
$option = $('<option value="' + response.data[id].id + '">' + response.data[id].name + '</option>');
@ -143,9 +147,9 @@ OC.Contacts = OC.Contacts || {};
});
}
this.addressbookUiInit();
}
};
AddressBookDialog.prototype.addressbookUiOk = function() {
AddressBookDialog.prototype.addressbookUiOk = function(divDlg) {
var defer = $.Deferred();
var storage = OC.Contacts.storage;
var addressbook = OC.Contacts.addressBooks;
@ -175,14 +179,15 @@ OC.Contacts = OC.Contacts || {};
}
defer.reject(response);
} else {
console.log('response.data', response.data);
var book = addressbook.insertAddressBook(response.data);
$(document).trigger('status.addressbook.added');
if(typeof cb === 'function') {
cb({error:false, addressbook: book});
}
defer.resolve({error:false, addressbook: book});
$('#addressbooks-ui').dialog('close');
}
OC.Contacts.addressBookDialog.addressbookUiClose(divDlg);
})
.fail(function(jqxhr, textStatus, error) {
$(this).removeClass('loading');
@ -193,10 +198,11 @@ OC.Contacts = OC.Contacts || {};
cb({error:true, message:error});
}
defer.reject({error:true, message:error});
OC.Contacts.addressBookDialog.addressbookUiClose(divDlg);
});
}
};
AddressBookDialog.prototype.addressbookUiEditOk = function() {
AddressBookDialog.prototype.addressbookUiEditOk = function(divDlg) {
var storage = OC.Contacts.storage;
var defer = $.Deferred();
@ -225,9 +231,8 @@ OC.Contacts = OC.Contacts || {};
cb({error:true, message:error});
}
defer.reject(response);
} else {
$("#addressbooks-ui").dialog('close');
}
OC.Contacts.addressBookDialog.addressbookUiClose(divDlg);
})
.fail(function(jqxhr, textStatus, error) {
$(this).removeClass('loading');
@ -239,11 +244,12 @@ OC.Contacts = OC.Contacts || {};
}
defer.reject({error:true, message:error});
});
}
};
AddressBookDialog.prototype.addressbookUiCancel = function() {
$('#addressbooks-ui').dialog('close');
}
AddressBookDialog.prototype.addressbookUiClose = function(divDlg) {
divDlg.ocdialog().ocdialog('close');
divDlg.ocdialog().ocdialog('destroy').remove();
};
AddressBookDialog.prototype.addressbookUiInit = function() {
@ -315,12 +321,12 @@ OC.Contacts = OC.Contacts || {};
$('#addressbooks-ui-ldapvcardconnector-value-p').show();
$('#addressbooks-ui-ldapvcardconnector-value').text('');
$('#addressbooks-ui-ldapvcardconnector-copyfrom-p').show();
$.when(this.storage.getConnectors($('#addressbooks-ui-backend').val()))
$.when(OC.Contacts.storage.getConnectors($('#addressbooks-ui-backend').val()))
.then(function(response) {
$('#addressbooks-ui-ldapvcardconnector-copyfrom').empty();
var $option = $('<option value="">' + 'Select connector' + '</option>').attr('selected','selected');
$('#addressbooks-ui-ldapvcardconnector-copyfrom').append($option);
for (id in response.data) {
for (var id in response.data) {
var $option = $('<option value="' + response.data[id].id + '">' + response.data[id].name + '</option>');
$('#addressbooks-ui-ldapvcardconnector-copyfrom').append($option);
}
@ -332,9 +338,9 @@ OC.Contacts = OC.Contacts || {};
});
$('#addressbooks-ui-ldapvcardconnector-copyfrom').change(function() {
if ($('#addressbooks-ui-ldapvcardconnector-copyfrom').val() != '') {
$.when(this.storage.getConnectors($('#addressbooks-ui-backend').val()))
$.when(OC.Contacts.storage.getConnectors($('#addressbooks-ui-backend').val()))
.then(function(response) {
for (id in response.data) {
for (var id in response.data) {
if ($('#addressbooks-ui-ldapvcardconnector-copyfrom').val() == response.data[id].id) {
console.log(response.data[id].id);
$('#addressbooks-ui-ldapvcardconnector-value').text(response.data[id].xml);
@ -350,6 +356,6 @@ OC.Contacts = OC.Contacts || {};
});
}
});
}
};
})(window, jQuery, OC);

View File

@ -38,10 +38,15 @@ class Ldap extends AbstractBackend {
* @var string
*/
public $name='ldap';
static private $preparedQueries = array();
private $ldapConnection = null;
private $connector = null;
/**
* The cached address books.
* @var array[]
*/
public $addressBooks;
/**
* @brief validates and sets the ldap parameters
* @param $ldapParams array containing the parameters
@ -252,9 +257,8 @@ class Ldap extends AbstractBackend {
*/
public function getAddressBooksForUser(array $options = array()) {
$addressbookidList = $this->getAddressbookList();
$this->addressbooks = array();
foreach($addressbookidList as $addressbookid) {
error_log(__METHOD__." am i here ? ".$addressbookid);
//error_log(__METHOD__." am i here ? ".$addressbookid);
$this->addressbooks[] = self::getAddressBook($addressbookid);
}
return $this->addressbooks;
@ -273,16 +277,6 @@ class Ldap extends AbstractBackend {
* @return array $properties
*/
public function getAddressBook($addressbookid, array $options = array()) {
$backtrace = debug_backtrace();
$trace=array();
foreach ($backtrace as $elt) {
foreach ($elt as $key => $line) {
if ($key == "file" || $key == "line") {
$trace[] = $line;
}
}
}
//error_log(__METHOD__." ".print_r($trace,1));
//\OC_Log::write('contacts', __METHOD__.' id: '
// . $addressbookid, \OC_Log::DEBUG);
if($this->addressbooks && isset($this->addressbooks[$addressbookid])) {
@ -293,6 +287,7 @@ class Ldap extends AbstractBackend {
$preferences = self::getPreferences($addressbookid);
if (count($preferences) > 0) {
$preferences['id'] = (string)$addressbookid;
$preferences['backend'] = $this->name;
$preferences['owner'] = $this->userid;
$preferences['permissions'] = \OCP\PERMISSION_ALL;
$preferences['lastmodified'] = self::lastModifiedAddressBook($addressbookid);
@ -596,7 +591,7 @@ class Ldap extends AbstractBackend {
$URI = (string)$vcard->{'X-LDAP-DN'};
}
return array('id' => $UID,
'permissions' => \OCP\PERMISSION_READ,
'permissions' => \OCP\PERMISSION_ALL,
'displayname' => $FN,
'carddata' => $vcard->serialize(),
'uri' => $URI,
@ -611,16 +606,6 @@ class Ldap extends AbstractBackend {
* @return string|bool The identifier for the new contact or false on error.
*/
public function createContact($addressbookid, $contact, array $options = array()) {
$backtrace = debug_backtrace();
$trace=array();
foreach ($backtrace as $elt) {
foreach ($elt as $key => $line) {
if ($key == "file" || $key == "line") {
$trace[] = $line;
}
}
}
//error_log("stay added ".print_r($trace,1));
$uri = isset($options['uri']) ? $options['uri'] : null;
@ -741,16 +726,6 @@ class Ldap extends AbstractBackend {
* @return bool
*/
public function deleteContact($addressbookid, $id, array $options = array()) {
$backtrace = debug_backtrace();
$trace=array();
foreach ($backtrace as $elt) {
foreach ($elt as $key => $line) {
if ($key == "file" || $key == "line") {
$trace[] = $line;
}
}
}
//error_log("stay dead ".print_r($trace, 1));
self::setLdapParams($addressbookid);
self::ldapCreateAndBindConnection();
$card=null;
@ -790,23 +765,12 @@ class Ldap extends AbstractBackend {
}
}
// Please remove this
public function debug_string_backtrace() {
ob_start();
debug_print_backtrace();
$trace = ob_get_contents();
ob_end_clean();
// Remove first item from backtrace as it's this function which
// is redundant.
$trace = preg_replace ('/^#0\s+' . __FUNCTION__ . "[^\n]*\n/", '', $trace, 1);
// Renumber backtrace items.
$trace = preg_replace ('/^#(\d+)/me', '\'#\' . ($1 - 1)', $trace);
return $trace;
}
/**
* @brief sets the list of ldap addressbooks in the preferences
* with the list given in parameter
* @param the new list
* @returns result|false
*/
protected function setAddressbookList(array $addressbookList) {
$key = $this->name . "_list";
$data = json_encode($addressbookList);
@ -816,11 +780,14 @@ class Ldap extends AbstractBackend {
: false;
}
/**
* @brief gets the list of ldap addressbooks in the preferences
* returns array()
*/
protected function getAddressbookList() {
$key = $this->name . "_list";
$data = \OCP\Config::getUserValue($this->userid, 'contacts', $key, false);
error_log($key." - ".$this->userid);
return $data ? json_decode($data) : array();
}
}

View File

@ -90,7 +90,6 @@ class ContactController extends Controller {
$addressBook = $this->app->getAddressBook($params['backend'], $params['addressBookId']);
$contact = $addressBook->getChild($params['contactId']);
error_log($params['contactId']." found ? ".$contact->serialize());
if (!$contact) {
return $response
@ -147,7 +146,6 @@ class ContactController extends Controller {
}
if (!$contact->save()) {
error_log("not good");
return $response->bailOut(App::$l10n->t('Error saving contact to backend'));
}