diff options
author | Thomas Tanghus <thomas@tanghus.net> | 2012-03-08 02:55:48 +0100 |
---|---|---|
committer | Thomas Tanghus <thomas@tanghus.net> | 2012-03-08 02:55:48 +0100 |
commit | a33a62bf601e4dc91a42d1d0d983d7fa2e40dacb (patch) | |
tree | 09f7ea083936c8ce3e73908e54929b1d151de3f3 /apps | |
parent | ae7aab2d6e727f9daf683056001a982aad242c93 (diff) | |
parent | 340320625e8da301e4c03752143db6d4837ca545 (diff) | |
download | nextcloud-server-a33a62bf601e4dc91a42d1d0d983d7fa2e40dacb.tar.gz nextcloud-server-a33a62bf601e4dc91a42d1d0d983d7fa2e40dacb.zip |
Merge branch 'vcategories' of gitorious.org:owncloud/owncloud into vcategories
Conflicts:
apps/contacts/lib/vcard.php
apps/contacts/templates/part.contact.php
Diffstat (limited to 'apps')
-rw-r--r-- | apps/contacts/ajax/saveproperty.php | 8 | ||||
-rw-r--r-- | apps/contacts/index.php | 2 | ||||
-rw-r--r-- | apps/contacts/js/contacts.js | 16 | ||||
-rw-r--r-- | apps/contacts/js/jquery.multi-autocomplete.js | 47 | ||||
-rw-r--r-- | apps/contacts/lib/app.php | 4 | ||||
-rw-r--r-- | apps/contacts/lib/vcard.php | 2 | ||||
-rw-r--r-- | apps/contacts/templates/index.php | 1 | ||||
-rw-r--r-- | apps/contacts/templates/part.contact.php | 7 |
8 files changed, 74 insertions, 13 deletions
diff --git a/apps/contacts/ajax/saveproperty.php b/apps/contacts/ajax/saveproperty.php index 3a50d18e6a6..0769791ea36 100644 --- a/apps/contacts/ajax/saveproperty.php +++ b/apps/contacts/ajax/saveproperty.php @@ -128,14 +128,8 @@ switch($element) { $checksum = md5($vcard->children[$line]->serialize()); debug('New checksum: '.$checksum); -<<<<<<< HEAD -if(!OC_Contacts_VCard::edit($id,$vcard->serialize())) { - bailOut(OC_Contacts_App::$l10n->t('Error updating contact property.')); -======= if(!OC_Contacts_VCard::edit($id,$vcard)) { - OC_JSON::error(array('data' => array('message' => OC_Contacts_App::$l10n->t('Error updating contact property.')))); - OC_Log::write('contacts','ajax/setproperty.php: Error updating contact property: '.$value, OC_Log::ERROR); ->>>>>>> d8cfe77ba5348d29a9e2b046e2c7efc1dd4758cb + bailOut(OC_Contacts_App::$l10n->t('Error updating contact property.')); exit(); } diff --git a/apps/contacts/index.php b/apps/contacts/index.php index a7817d35e58..48b2b8b4f01 100644 --- a/apps/contacts/index.php +++ b/apps/contacts/index.php @@ -49,6 +49,7 @@ OC_Util::addScript('contacts','contacts'); OC_Util::addScript('contacts','jquery.combobox'); OC_Util::addScript('contacts','jquery.inview'); OC_Util::addScript('contacts','jquery.Jcrop'); +OC_Util::addScript('contacts','jquery.multi-autocomplete'); OC_Util::addStyle('','jquery.multiselect'); //OC_Util::addStyle('contacts','styles'); OC_Util::addStyle('contacts','jquery.combobox'); @@ -59,6 +60,7 @@ $tmpl = new OC_Template( "contacts", "index", "user" ); $tmpl->assign('uploadMaxFilesize', $maxUploadFilesize); $tmpl->assign('uploadMaxHumanFilesize', OC_Helper::humanFileSize($maxUploadFilesize)); $tmpl->assign('property_types',$property_types); +$tmpl->assign('categories',OC_Contacts_App::getCategories()); $tmpl->assign('phone_types',$phone_types); $tmpl->assign('categories',$categories); $tmpl->assign('addressbooks', $addressbooks); diff --git a/apps/contacts/js/contacts.js b/apps/contacts/js/contacts.js index 483d2a228d1..5f6129ca654 100644 --- a/apps/contacts/js/contacts.js +++ b/apps/contacts/js/contacts.js @@ -252,12 +252,12 @@ Contacts={ $('#bday').datepicker({ dateFormat : 'dd-mm-yy' }); - $('#categories_value').find('select').multiselect({ + /*$('#categories_value').find('select').multiselect({ noneSelectedText: t('contacts', 'Select categories'), header: false, selectedList: 6, classes: 'categories' - }); + });*/ // Style phone types $('#phonelist').find('select.contacts_property').multiselect({ noneSelectedText: t('contacts', 'Select type'), @@ -299,6 +299,7 @@ Contacts={ click: function() { $(this).dialog('close'); } } ] ); + $('#categories').multiple_autocomplete({source: categories}); Contacts.UI.loadListHandlers(); }, Card:{ @@ -439,7 +440,7 @@ Contacts={ $('#rightcontent').data('id',this.id); console.log('loaded: ' + this.data.FN[0]['value']); this.populateNameFields(); - this.loadCategories(); + //this.loadCategories(); this.loadPhoto(); this.loadMails(); this.loadPhones(); @@ -457,7 +458,7 @@ Contacts={ } }, loadSingleProperties:function() { - var props = ['BDAY', 'NICKNAME', 'ORG']; + var props = ['BDAY', 'NICKNAME', 'ORG', 'CATEGORIES']; // Clear all elements $('#ident .propertycontainer').each(function(){ if(props.indexOf($(this).data('element')) > -1) { @@ -493,6 +494,12 @@ Contacts={ $('#contact_identity').find('#org_label').show(); $('#contact_identity').find('#org_value').show(); break; + case 'CATEGORIES': + $('#contact_identity').find('#categories').val(value); + $('#contact_identity').find('#categories_value').data('checksum', checksum); + $('#contact_identity').find('#categories_label').show(); + $('#contact_identity').find('#categories_value').show(); + break; } } else { $('#contacts_propertymenu a[data-type="'+props[prop]+'"]').parent().show(); @@ -740,6 +747,7 @@ Contacts={ case 'NICKNAME': case 'ORG': case 'BDAY': + case 'CATEGORIES': $('dl dt[data-element="'+type+'"],dd[data-element="'+type+'"]').show(); $('#contacts_propertymenu a[data-type="'+type+'"]').parent().hide(); break; diff --git a/apps/contacts/js/jquery.multi-autocomplete.js b/apps/contacts/js/jquery.multi-autocomplete.js new file mode 100644 index 00000000000..4be8d901c96 --- /dev/null +++ b/apps/contacts/js/jquery.multi-autocomplete.js @@ -0,0 +1,47 @@ +/** + * Inspired by http://jqueryui.com/demos/autocomplete/#multiple + */ + +(function( $ ) { + $.widget('ui.multiple_autocomplete', { + _create: function() { + function split( val ) { + return val.split( /,\s*/ ); + } + function extractLast( term ) { + return split( term ).pop(); + } + //console.log('_create: ' + this.options['id']); + var self = this; + this.element.bind( "keydown", function( event ) { + if ( event.keyCode === $.ui.keyCode.TAB && + $( this ).data( "autocomplete" ).menu.active ) { + event.preventDefault(); + } + }) + .autocomplete({ + minLength: 0, + source: function( request, response ) { + // delegate back to autocomplete, but extract the last term + response( $.ui.autocomplete.filter( + self.options.source, extractLast( request.term ) ) ); + }, + focus: function() { + // prevent value inserted on focus + return false; + }, + select: function( event, ui ) { + var terms = split( this.value ); + // remove the current input + terms.pop(); + // add the selected item + terms.push( ui.item.value ); + // add placeholder to get the comma-and-space at the end + terms.push( "" ); + this.value = terms.join( ", " ); + return false; + } + }); + }, + }); +})( jQuery ); diff --git a/apps/contacts/lib/app.php b/apps/contacts/lib/app.php index 1fa441475d2..cc33c733007 100644 --- a/apps/contacts/lib/app.php +++ b/apps/contacts/lib/app.php @@ -155,6 +155,10 @@ class OC_Contacts_App { } } + public static function getCategories() { + return self::$categories->categories(); + } + public static function setLastModifiedHeader($contact) { $rev = $contact->getAsString('REV'); if ($rev) { diff --git a/apps/contacts/lib/vcard.php b/apps/contacts/lib/vcard.php index 50370370898..a7e1817d7c8 100644 --- a/apps/contacts/lib/vcard.php +++ b/apps/contacts/lib/vcard.php @@ -306,6 +306,8 @@ class OC_Contacts_VCard{ return false; } + OC_Contacts_App::$categories->loadFromVObject($card); + $fn = $card->getAsString('FN'); if (empty($fn)) { $fn = null; diff --git a/apps/contacts/templates/index.php b/apps/contacts/templates/index.php index e81597f23d6..efd797e25cb 100644 --- a/apps/contacts/templates/index.php +++ b/apps/contacts/templates/index.php @@ -1,5 +1,6 @@ <script type='text/javascript'> var totalurl = '<?php echo OC_Helper::linkToAbsolute('contacts', 'carddav.php'); ?>/addressbooks'; + var categories = <?php echo json_encode($_['categories']); ?>; </script> <div id="controls"> <form> diff --git a/apps/contacts/templates/part.contact.php b/apps/contacts/templates/part.contact.php index 59bb6c2cc29..115458470ba 100644 --- a/apps/contacts/templates/part.contact.php +++ b/apps/contacts/templates/part.contact.php @@ -14,6 +14,7 @@ $id = isset($_['id']) ? $_['id'] : ''; <li><a data-type="EMAIL"><?php echo $l->t('Email'); ?></a></li> <li><a data-type="ADR"><?php echo $l->t('Address'); ?></a></li> <li><a data-type="NOTE"><?php echo $l->t('Note'); ?></a></li> + <li><a data-type="CATEGORIES"><?php echo $l->t('Categories'); ?></a></li> </ul> </div> <img onclick="Contacts.UI.Card.export();" class="svg action" id="contacts_downloadcard" src="<?php echo image_path('', 'actions/download.svg'); ?>" title="<?php echo $l->t('Download contact');?>" /> @@ -54,13 +55,15 @@ $id = isset($_['id']) ? $_['id'] : ''; <dd style="display:none;" class="propertycontainer" id="nickname_value" data-element="NICKNAME"><input id="nickname" required="required" name="value[NICKNAME]" type="text" class="contacts_property" style="width:16em;" name="value" value="" placeholder="<?php echo $l->t('Enter nickname'); ?>" /><a class="delete" onclick="$(this).tipsy('hide');Contacts.UI.Card.deleteProperty(this, 'single');" title="<?php echo $l->t('Delete'); ?>"></a></dd> <dt style="display:none;" id="bday_label" data-element="BDAY"><label for="bday"><?php echo $l->t('Birthday'); ?></label></dt> <dd style="display:none;" class="propertycontainer" id="bday_value" data-element="BDAY"><input id="bday" required="required" name="value" type="text" class="contacts_property" value="" placeholder="<?php echo $l->t('dd-mm-yyyy'); ?>" /><a class="delete" onclick="$(this).tipsy('hide');Contacts.UI.Card.deleteProperty(this, 'single');" title="<?php echo $l->t('Delete'); ?>"></a></dd> - <dt id="categories_label" data-element="CATEGORIES"><label for="categories"><?php echo $l->t('Categories'); ?></label></dt> + <!-- dt id="categories_label" data-element="CATEGORIES"><label for="categories"><?php echo $l->t('Categories'); ?></label></dt> <dd class="propertycontainer" id="categories_value" data-element="CATEGORIES"> <select class="contacts_property" multiple="multiple" id="categories" name="value[]"> <?php echo html_select_options($_['categories'], array(), array('combine'=>true)) ?> </select> <a class="action edit" onclick="$(this).tipsy('hide');Categories.edit();" title="<?php echo $l->t('Edit categories'); ?>"></a> - </dd> + </dd --> + <dt style="display:none;" id="categories_label" data-element="CATEGORIES"><label for="categories"><?php echo $l->t('Categories'); ?></label></dt> + <dd style="display:none;" class="propertycontainer" id="categories_value" data-element="CATEGORIES"><input id="categories" required="required" name="value[CATEGORIES]" type="text" class="contacts_property" style="width:16em;" name="value" value="" placeholder="<?php echo $l->t('Categories'); ?>" /><a class="delete" onclick="$(this).tipsy('hide');Contacts.UI.Card.deleteProperty(this, 'single');" title="<?php echo $l->t('Delete'); ?>"></a><a class="action edit" onclick="$(this).tipsy('hide');Categories.edit();" title="<?php echo $l->t('Edit categories'); ?>"></a></dd> </dl> </fieldset> <fieldset id="note" class="formfloat propertycontainer" style="display:none;" data-element="NOTE"> |