From 5c17338ac7e59889dec6fbddd511c1271176bcad Mon Sep 17 00:00:00 2001 From: Thomas Tanghus Date: Wed, 6 Jun 2012 15:28:39 +0200 Subject: [PATCH] Contacts: Make js a tad DRYer. Added URL property. --- apps/contacts/ajax/addproperty.php | 2 +- apps/contacts/ajax/saveproperty.php | 13 ++---- apps/contacts/js/contacts.js | 58 +++++++++++------------- apps/contacts/templates/part.contact.php | 3 ++ 4 files changed, 34 insertions(+), 42 deletions(-) diff --git a/apps/contacts/ajax/addproperty.php b/apps/contacts/ajax/addproperty.php index 4668c0d3a65..2f932d752a7 100644 --- a/apps/contacts/ajax/addproperty.php +++ b/apps/contacts/ajax/addproperty.php @@ -33,7 +33,7 @@ $vcard = OC_Contacts_App::getContactVCard($id); if(!is_array($value)){ $value = trim($value); - if(!$value && in_array($name, array('TEL', 'EMAIL', 'ORG', 'BDAY', 'NICKNAME', 'NOTE'))) { + if(!$value && in_array($name, array('TEL', 'EMAIL', 'ORG', 'BDAY', 'URL', 'NICKNAME', 'NOTE'))) { OCP\JSON::error(array('data' => array('message' => OC_Contacts_App::$l10n->t('Cannot add empty property.')))); exit(); } diff --git a/apps/contacts/ajax/saveproperty.php b/apps/contacts/ajax/saveproperty.php index 8409ffe47f2..d8400734710 100644 --- a/apps/contacts/ajax/saveproperty.php +++ b/apps/contacts/ajax/saveproperty.php @@ -98,15 +98,6 @@ if(!$value) { } else { /* setting value */ switch($element) { - case 'BDAY': - case 'FN': - case 'N': - case 'ORG': - case 'NOTE': - case 'NICKNAME': - debug('Setting string:'.$name.' '.$value); - $vcard->setString($name, $value); - break; case 'CATEGORIES': debug('Setting string:'.$name.' '.$value); $vcard->children[$line]->setValue($value); @@ -128,6 +119,10 @@ if(!$value) { } } break; + default: + debug('Setting string:'.$name.' '.$value); + $vcard->setString($name, $value); + break; } // Do checksum and be happy $checksum = md5($vcard->children[$line]->serialize()); diff --git a/apps/contacts/js/contacts.js b/apps/contacts/js/contacts.js index 458c9ab8fc4..e15dc0278f6 100644 --- a/apps/contacts/js/contacts.js +++ b/apps/contacts/js/contacts.js @@ -110,10 +110,21 @@ Contacts={ obj.tipsy('hide'); Contacts.UI.Card.deleteProperty(obj, 'single'); } + + var goToUrl = function(obj) { + var url = Contacts.UI.propertyContainerFor(obj).find('#url').val(); + if(url != '') { + var newWindow = window.open(url,'_blank'); + newWindow.focus(); + } + } + $('#identityprops a.delete').click( function() { deleteItem($(this)) }); $('#identityprops a.delete').keydown( function() { deleteItem($(this)) }); $('#categories_value a.edit').click( function() { $(this).tipsy('hide');OCCategories.edit(); } ); $('#categories_value a.edit').keydown( function() { $(this).tipsy('hide');OCCategories.edit(); } ); + $('#url_value a.globe').click( function() { $(this).tipsy('hide');goToUrl($(this)); } ); + $('#url_value a.globe').keydown( function() { $(this).tipsy('hide');goToUrl($(this)); } ); $('#fn_select').combobox({ 'id': 'fn', 'name': 'value', @@ -427,7 +438,7 @@ Contacts={ } }, loadSingleProperties:function() { - var props = ['BDAY', 'NICKNAME', 'ORG', 'CATEGORIES']; + var props = ['BDAY', 'NICKNAME', 'ORG', 'URL', 'CATEGORIES']; // Clear all elements $('#ident .propertycontainer').each(function(){ if(props.indexOf($(this).data('element')) > -1) { @@ -438,40 +449,22 @@ Contacts={ } }); for(var prop in props) { - if(this.data[props[prop]] != undefined) { - $('#contacts_propertymenu_dropdown a[data-type="'+props[prop]+'"]').parent().hide(); - var property = this.data[props[prop]][0]; + var propname = props[prop]; + if(this.data[propname] != undefined) { + $('#contacts_propertymenu_dropdown a[data-type="'+propname+'"]').parent().hide(); + var property = this.data[propname][0]; var value = property['value'], checksum = property['checksum']; - switch(props[prop]) { - case 'BDAY': - var val = $.datepicker.parseDate('yy-mm-dd', value.substring(0, 10)); - value = $.datepicker.formatDate('dd-mm-yy', val); - $('#contact_identity').find('#bday').val(value); - $('#contact_identity').find('#bday_value').data('checksum', checksum); - $('#contact_identity').find('#bday_label').show(); - $('#contact_identity').find('#bday_value').show(); - break; - case 'NICKNAME': - $('#contact_identity').find('#nickname').val(value); - $('#contact_identity').find('#nickname_value').data('checksum', checksum); - $('#contact_identity').find('#nickname_label').show(); - $('#contact_identity').find('#nickname_value').show(); - break; - case 'ORG': - $('#contact_identity').find('#org').val(value); - $('#contact_identity').find('#org_value').data('checksum', checksum); - $('#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; + + if(propname == 'BDAY') { + var val = $.datepicker.parseDate('yy-mm-dd', value.substring(0, 10)); + value = $.datepicker.formatDate('dd-mm-yy', val); } + $('#contact_identity').find('#'+propname.toLowerCase()).val(value); + $('#contact_identity').find('#'+propname.toLowerCase()+'_value').data('checksum', checksum); + $('#contact_identity').find('#'+propname.toLowerCase()+'_label').show(); + $('#contact_identity').find('#'+propname.toLowerCase()+'_value').show(); } else { - $('#contacts_propertymenu_dropdown a[data-type="'+props[prop]+'"]').parent().show(); + $('#contacts_propertymenu_dropdown a[data-type="'+propname+'"]').parent().show(); } } }, @@ -700,6 +693,7 @@ Contacts={ Contacts.UI.Card.editAddress('new', true); break; case 'NICKNAME': + case 'URL': case 'ORG': case 'BDAY': case 'CATEGORIES': diff --git a/apps/contacts/templates/part.contact.php b/apps/contacts/templates/part.contact.php index 74522be37c4..fee5be08004 100644 --- a/apps/contacts/templates/part.contact.php +++ b/apps/contacts/templates/part.contact.php @@ -34,6 +34,8 @@ $id = isset($_['id']) ? $_['id'] : ''; + + @@ -108,6 +110,7 @@ $id = isset($_['id']) ? $_['id'] : '';
  • t('Email'); ?>
  • t('Address'); ?>
  • t('Note'); ?>
  • +
  • t('Web site'); ?>
  • t('Groups'); ?>
  • -- 2.39.5