Contacts: Make js a tad DRYer. Added URL property.

This commit is contained in:
Thomas Tanghus 2012-06-06 15:28:39 +02:00
parent ed950e3ba2
commit 5c17338ac7
4 changed files with 34 additions and 42 deletions

View File

@ -33,7 +33,7 @@ $vcard = OC_Contacts_App::getContactVCard($id);
if(!is_array($value)){ if(!is_array($value)){
$value = trim($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.')))); OCP\JSON::error(array('data' => array('message' => OC_Contacts_App::$l10n->t('Cannot add empty property.'))));
exit(); exit();
} }

View File

@ -98,15 +98,6 @@ if(!$value) {
} else { } else {
/* setting value */ /* setting value */
switch($element) { 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': case 'CATEGORIES':
debug('Setting string:'.$name.' '.$value); debug('Setting string:'.$name.' '.$value);
$vcard->children[$line]->setValue($value); $vcard->children[$line]->setValue($value);
@ -128,6 +119,10 @@ if(!$value) {
} }
} }
break; break;
default:
debug('Setting string:'.$name.' '.$value);
$vcard->setString($name, $value);
break;
} }
// Do checksum and be happy // Do checksum and be happy
$checksum = md5($vcard->children[$line]->serialize()); $checksum = md5($vcard->children[$line]->serialize());

View File

@ -110,10 +110,21 @@ Contacts={
obj.tipsy('hide'); obj.tipsy('hide');
Contacts.UI.Card.deleteProperty(obj, 'single'); 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').click( function() { deleteItem($(this)) });
$('#identityprops a.delete').keydown( 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').click( function() { $(this).tipsy('hide');OCCategories.edit(); } );
$('#categories_value a.edit').keydown( 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({ $('#fn_select').combobox({
'id': 'fn', 'id': 'fn',
'name': 'value', 'name': 'value',
@ -427,7 +438,7 @@ Contacts={
} }
}, },
loadSingleProperties:function() { loadSingleProperties:function() {
var props = ['BDAY', 'NICKNAME', 'ORG', 'CATEGORIES']; var props = ['BDAY', 'NICKNAME', 'ORG', 'URL', 'CATEGORIES'];
// Clear all elements // Clear all elements
$('#ident .propertycontainer').each(function(){ $('#ident .propertycontainer').each(function(){
if(props.indexOf($(this).data('element')) > -1) { if(props.indexOf($(this).data('element')) > -1) {
@ -438,40 +449,22 @@ Contacts={
} }
}); });
for(var prop in props) { for(var prop in props) {
if(this.data[props[prop]] != undefined) { var propname = props[prop];
$('#contacts_propertymenu_dropdown a[data-type="'+props[prop]+'"]').parent().hide(); if(this.data[propname] != undefined) {
var property = this.data[props[prop]][0]; $('#contacts_propertymenu_dropdown a[data-type="'+propname+'"]').parent().hide();
var property = this.data[propname][0];
var value = property['value'], checksum = property['checksum']; var value = property['value'], checksum = property['checksum'];
switch(props[prop]) {
case 'BDAY': if(propname == 'BDAY') {
var val = $.datepicker.parseDate('yy-mm-dd', value.substring(0, 10)); var val = $.datepicker.parseDate('yy-mm-dd', value.substring(0, 10));
value = $.datepicker.formatDate('dd-mm-yy', val); 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;
} }
$('#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 { } 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); Contacts.UI.Card.editAddress('new', true);
break; break;
case 'NICKNAME': case 'NICKNAME':
case 'URL':
case 'ORG': case 'ORG':
case 'BDAY': case 'BDAY':
case 'CATEGORIES': case 'CATEGORIES':

View File

@ -34,6 +34,8 @@ $id = isset($_['id']) ? $_['id'] : '';
<dd class="propertycontainer hidden" id="org_value" data-element="ORG"><input id="org" required="required" name="value[ORG]" type="text" class="contacts_property big" name="value" value="" placeholder="<?php echo $l->t('Organization'); ?>" /><a role="button" class="action delete" title="<?php echo $l->t('Delete'); ?>"></a></dd> <dd class="propertycontainer hidden" id="org_value" data-element="ORG"><input id="org" required="required" name="value[ORG]" type="text" class="contacts_property big" name="value" value="" placeholder="<?php echo $l->t('Organization'); ?>" /><a role="button" class="action delete" title="<?php echo $l->t('Delete'); ?>"></a></dd>
<dt class="hidden" id="nickname_label" data-element="NICKNAME"><label for="nickname"><?php echo $l->t('Nickname'); ?></label></dt> <dt class="hidden" id="nickname_label" data-element="NICKNAME"><label for="nickname"><?php echo $l->t('Nickname'); ?></label></dt>
<dd class="propertycontainer hidden" id="nickname_value" data-element="NICKNAME"><input id="nickname" required="required" name="value[NICKNAME]" type="text" class="contacts_property big" name="value" value="" placeholder="<?php echo $l->t('Enter nickname'); ?>" /><a role="button" class="action delete" title="<?php echo $l->t('Delete'); ?>"></a></dd> <dd class="propertycontainer hidden" id="nickname_value" data-element="NICKNAME"><input id="nickname" required="required" name="value[NICKNAME]" type="text" class="contacts_property big" name="value" value="" placeholder="<?php echo $l->t('Enter nickname'); ?>" /><a role="button" class="action delete" title="<?php echo $l->t('Delete'); ?>"></a></dd>
<dt class="hidden" id="url_label" data-element="URL"><label for="nickname"><?php echo $l->t('Web site'); ?></label></dt>
<dd class="propertycontainer hidden" id="url_value" data-element="URL"><input id="url" required="required" name="value[URL]" type="text" class="contacts_property big" name="value" value="" placeholder="<?php echo $l->t('http://www.somesite.com'); ?>" /><a role="button" class="action globe" title="<?php echo $l->t('Go to web site'); ?>"><a role="button" class="action delete" title="<?php echo $l->t('Delete'); ?>"></a></dd>
<dt class="hidden" id="bday_label" data-element="BDAY"><label for="bday"><?php echo $l->t('Birthday'); ?></label></dt> <dt class="hidden" id="bday_label" data-element="BDAY"><label for="bday"><?php echo $l->t('Birthday'); ?></label></dt>
<dd class="propertycontainer hidden" id="bday_value" data-element="BDAY"><input id="bday" required="required" name="value" type="text" class="contacts_property big" value="" placeholder="<?php echo $l->t('dd-mm-yyyy'); ?>" /><a role="button" class="action delete" title="<?php echo $l->t('Delete'); ?>"></a></dd> <dd class="propertycontainer hidden" id="bday_value" data-element="BDAY"><input id="bday" required="required" name="value" type="text" class="contacts_property big" value="" placeholder="<?php echo $l->t('dd-mm-yyyy'); ?>" /><a role="button" class="action delete" title="<?php echo $l->t('Delete'); ?>"></a></dd>
<dt class="hidden" id="categories_label" data-element="CATEGORIES"><label for="categories"><?php echo $l->t('Groups'); ?></label></dt> <dt class="hidden" id="categories_label" data-element="CATEGORIES"><label for="categories"><?php echo $l->t('Groups'); ?></label></dt>
@ -108,6 +110,7 @@ $id = isset($_['id']) ? $_['id'] : '';
<li><a role="menuitem" data-type="EMAIL"><?php echo $l->t('Email'); ?></a></li> <li><a role="menuitem" data-type="EMAIL"><?php echo $l->t('Email'); ?></a></li>
<li><a role="menuitem" data-type="ADR"><?php echo $l->t('Address'); ?></a></li> <li><a role="menuitem" data-type="ADR"><?php echo $l->t('Address'); ?></a></li>
<li><a role="menuitem" data-type="NOTE"><?php echo $l->t('Note'); ?></a></li> <li><a role="menuitem" data-type="NOTE"><?php echo $l->t('Note'); ?></a></li>
<li><a role="menuitem" data-type="URL"><?php echo $l->t('Web site'); ?></a></li>
<li><a role="menuitem" data-type="CATEGORIES"><?php echo $l->t('Groups'); ?></a></li> <li><a role="menuitem" data-type="CATEGORIES"><?php echo $l->t('Groups'); ?></a></li>
</ul> </ul>
</div> </div>