diff --git a/apps/contacts/ajax/addphoto.php b/apps/contacts/ajax/addphoto.php deleted file mode 100644 index 03d5e6b3ce..0000000000 --- a/apps/contacts/ajax/addphoto.php +++ /dev/null @@ -1,59 +0,0 @@ -. - * - */ - -// Init owncloud -require_once('../../../lib/base.php'); - -$id = $_POST['id']; -$l10n = new OC_L10N('contacts'); - -// Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('You need to log in!')))); - exit(); -} - -$card = OC_Contacts_Addressbook::findCard( $id ); -if( $card === false ){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Can not find Contact!')))); - exit(); -} - -$addressbook = OC_Contacts_Addressbook::findAddressbook( $card['addressbookid'] ); -if( $addressbook === false || $addressbook['userid'] != OC_USER::getUser()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('This is not your contact!')))); - exit(); -} - -$vcard = Sabre_VObject_Reader::read($card['carddata']); -$mimetype = $_FILES['photo']['type'] ? $_FILES['photo']['type'] : 'image/jpeg'; -$photobase = base64_encode(file_get_contents($_FILES['photo']['tmp_name'])); -$photo = new Sabre_VObject_Property( 'PHOTO', $photobase ); -$photo->parameters[] = new Sabre_VObject_Parameter('TYPE',$mimetype); -$photo->parameters[] = new Sabre_VObject_Parameter('ENCODING','b'); -$vcard->add($photo); - -$line = count($vcard->children) - 1; -$checksum = md5($vcard->children[$line]->serialize()); - -OC_Contacts_Addressbook::editCard($id,$vcard->serialize()); -echo json_encode( array( 'status' => 'success', 'data' => array( 'id' => $id, 'line' => $line, 'checksum' => $checksum ))); diff --git a/apps/contacts/ajax/deletebook.php b/apps/contacts/ajax/deletebook.php index ba36c494cd..8506284cc0 100644 --- a/apps/contacts/ajax/deletebook.php +++ b/apps/contacts/ajax/deletebook.php @@ -33,7 +33,6 @@ if( !OC_User::isLoggedIn()){ exit(); } - $addressbook = OC_Contacts_Addressbook::findAddressbook( $id ); if( $addressbook === false || $addressbook['userid'] != OC_USER::getUser()){ echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('This is not your contact!')))); diff --git a/apps/contacts/ajax/deleteproperty.php b/apps/contacts/ajax/deleteproperty.php index 9f8b5dbbaf..d141cc00b8 100644 --- a/apps/contacts/ajax/deleteproperty.php +++ b/apps/contacts/ajax/deleteproperty.php @@ -24,7 +24,6 @@ require_once('../../../lib/base.php'); $id = $_GET['id']; -$line = $_GET['line']; $checksum = $_GET['checksum']; @@ -50,8 +49,13 @@ if( $addressbook === false || $addressbook['userid'] != OC_USER::getUser()){ } $vcard = Sabre_VObject_Reader::read($card['carddata']); - -if(md5($vcard->children[$line]->serialize()) != $checksum ){ +$line = null; +for($i=0;$ichildren);$i++){ + if(md5($vcard->children[$i]->serialize()) == $checksum ){ + $line = $i; + } +} +if(is_null($line)){ echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Information about vCard is incorrect. Please reload page!')))); exit(); } diff --git a/apps/contacts/ajax/setphoto.php b/apps/contacts/ajax/setphoto.php deleted file mode 100644 index c29b532602..0000000000 --- a/apps/contacts/ajax/setphoto.php +++ /dev/null @@ -1,77 +0,0 @@ -. - * - */ - -// Init owncloud -require_once('../../../lib/base.php'); - -$id = $_POST['id']; -$line = $_POST['line']; -$checksum = $_POST['checksum']; -$l10n = new OC_L10N('contacts'); - -// Check if we are a user -if( !OC_User::isLoggedIn()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('You need to log in!')))); - exit(); -} - -$card = OC_Contacts_Addressbook::findCard( $id ); -if( $card === false ){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Can not find Contact!')))); - exit(); -} - -$addressbook = OC_Contacts_Addressbook::findAddressbook( $card['addressbookid'] ); -if( $addressbook === false || $addressbook['userid'] != OC_USER::getUser()){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('This is not your contact!')))); - exit(); -} - -$vcard = Sabre_VObject_Reader::read($card['carddata']); -$mimetype = $_FILES['photo']['type'] ? $_FILES['photo']['type'] : 'image/jpeg'; -$photobase = base64_encode(file_get_contents($_FILES['photo']['tmp_name'])); - -if(md5($vcard->children[$line]->serialize()) != $checksum){ - echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Information about vCard is incorrect. Please reload page!')))); - exit(); -} - -// replace photo -$vcard->children[$line]->setValue($photobase); -$encoding = $type = false; -foreach($vcard->children[$line]->parameters as &$parameter){ - if($parameter->name == 'TYPE'){ - $parameter->value = $mimetype; - $type = true; - } - elseif($parameter->name == 'ENCODING'){ - $parameter->value = 'b'; - $encoding = true; - } -} unset($parameter); -if(!$encoding) $vcard->children[$line]->parameters[] = new Sabre_VObject_Parameter('ENCODING','b'); -if(!$type) $vcard->children[$line]->parameters[] = new Sabre_VObject_Parameter('TYPE',$mimetype); - -$checksum = md5($vcard->children[$line]->serialize()); - -OC_Contacts_Addressbook::editCard($id,$vcard->serialize()); -echo json_encode( array( 'status' => 'success', 'data' => array( 'id' => $id, 'line' => $line, 'checksum' => $checksum ))); diff --git a/apps/contacts/ajax/setproperty.php b/apps/contacts/ajax/setproperty.php index 6f33c68631..08d8892254 100644 --- a/apps/contacts/ajax/setproperty.php +++ b/apps/contacts/ajax/setproperty.php @@ -24,7 +24,6 @@ require_once('../../../lib/base.php'); $id = $_POST['id']; -$line = $_POST['line']; $checksum = $_POST['checksum']; $l10n = new OC_L10N('contacts'); @@ -47,8 +46,13 @@ if( $addressbook === false || $addressbook['userid'] != OC_USER::getUser()){ } $vcard = Sabre_VObject_Reader::read($card['carddata']); - -if(md5($vcard->children[$line]->serialize()) != $checksum){ +$line = null; +for($i=0;$ichildren);$i++){ + if(md5($vcard->children[$i]->serialize()) == $checksum ){ + $line = $i; + } +} +if(is_null($line)){ echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Information about vCard is incorrect. Please reload page!')))); exit(); } diff --git a/apps/contacts/ajax/showsetproperty.php b/apps/contacts/ajax/showsetproperty.php index 75c3ff88f5..a00043384f 100644 --- a/apps/contacts/ajax/showsetproperty.php +++ b/apps/contacts/ajax/showsetproperty.php @@ -24,7 +24,6 @@ require_once('../../../lib/base.php'); $id = $_GET['id']; -$line = $_GET['line']; $checksum = $_GET['checksum']; $l10n = new OC_L10N('contacts'); @@ -47,7 +46,13 @@ if( $addressbook === false || $addressbook['userid'] != OC_USER::getUser()){ } $vcard = Sabre_VObject_Reader::read($card['carddata']); -if(md5($vcard->children[$line]->serialize()) != $checksum){ +$line = null; +for($i=0;$ichildren);$i++){ + if(md5($vcard->children[$i]->serialize()) == $checksum ){ + $line = $i; + } +} +if(is_null($line)){ echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Information about vCard is incorrect. Please reload page!')))); exit(); } @@ -56,7 +61,7 @@ if(md5($vcard->children[$line]->serialize()) != $checksum){ $tmpl = new OC_Template('contacts','part.setpropertyform'); $tmpl->assign('id',$id); $tmpl->assign('checksum',$checksum); -$tmpl->assign('property',OC_Contacts_Addressbook::structureProperty($vcard->children[$line],$line)); +$tmpl->assign('property',OC_Contacts_Addressbook::structureProperty($vcard->children[$line])); $page = $tmpl->fetchPage(); echo json_encode( array( 'status' => 'success', 'data' => array( 'page' => $page ))); diff --git a/apps/contacts/js/interface.js b/apps/contacts/js/interface.js index 0aae7d15d4..bab71eec42 100644 --- a/apps/contacts/js/interface.js +++ b/apps/contacts/js/interface.js @@ -5,10 +5,10 @@ $(document).ready(function(){ });*/ $('#contacts_contacts li').live('click',function(){ - var id = $(this).attr('x-id'); + var id = $(this).data('id'); $.getJSON('ajax/getdetails.php',{'id':id},function(jsondata){ if(jsondata.status == 'success'){ - $('#contacts_details').attr('x-id',jsondata.data.id); + $('#contacts_details').data('id',jsondata.data.id); $('#contacts_details').html(jsondata.data.page); } else{ @@ -19,11 +19,11 @@ $(document).ready(function(){ }); $('#contacts_deletecard').live('click',function(){ - var id = $('#contacts_details').attr('x-id'); + var id = $('#contacts_details').data('id'); $.getJSON('ajax/deletecard.php',{'id':id},function(jsondata){ if(jsondata.status == 'success'){ - $('#contacts_contacts [x-id="'+jsondata.data.id+'"]').remove(); - $('#contacts_details').attr('x-id',''); + $('#contacts_contacts [data-id="'+jsondata.data.id+'"]').remove(); + $('#contacts_details').data('id',''); $('#contacts_details').html(''); } else{ @@ -34,7 +34,7 @@ $(document).ready(function(){ }); $('#contacts_addproperty').live('click',function(){ - var id = $('#contacts_details').attr('x-id'); + var id = $('#contacts_details').data('id'); $.getJSON('ajax/showaddproperty.php',{'id':id},function(jsondata){ if(jsondata.status == 'success'){ $('#contacts_details').append(jsondata.data.page); @@ -57,9 +57,6 @@ $(document).ready(function(){ else if($(this).val() == 'TEL'){ $('#contacts_phonepart').clone().insertBefore($('#contacts_addpropertyform input[type="submit"]')); } - else if($(this).val() == 'NOTE'){ - $('#contacts_fieldpart').clone().insertBefore($('#contacts_addpropertyform input[type="submit"]')); - } else{ $('#contacts_generic').clone().insertBefore($('#contacts_addpropertyform input[type="submit"]')); } @@ -68,8 +65,9 @@ $(document).ready(function(){ $('#contacts_addpropertyform input[type="submit"]').live('click',function(){ $.post('ajax/addproperty.php',$('#contacts_addpropertyform').serialize(),function(jsondata){ if(jsondata.status == 'success'){ - $('#contacts_details').append(jsondata.data.page); + $('#contacts_cardoptions').before(jsondata.data.page); $('#contacts_addpropertyform').remove(); + $('#contacts_addcontactsparts').remove(); } else{ alert(jsondata.data.message); @@ -81,7 +79,7 @@ $(document).ready(function(){ $('#contacts_newcontact').click(function(){ $.getJSON('ajax/showaddcard.php',{},function(jsondata){ if(jsondata.status == 'success'){ - $('#contacts_details').attr('x-id',''); + $('#contacts_details').data('id',''); $('#contacts_details').html(jsondata.data.page); } else{ @@ -94,7 +92,7 @@ $(document).ready(function(){ $('#contacts_addcardform input[type="submit"]').live('click',function(){ $.post('ajax/addcard.php',$('#contacts_addcardform').serialize(),function(jsondata){ if(jsondata.status == 'success'){ - $('#contacts_details').attr('x-id',jsondata.data.id); + $('#contacts_details').data('id',jsondata.data.id); $('#contacts_details').html(jsondata.data.page); } else{ @@ -104,13 +102,12 @@ $(document).ready(function(){ return false; }); - $('.contacts_property [x-use="edit"]').live('click',function(){ - var id = $('#contacts_details').attr('x-id'); - var checksum = $(this).parent().parent().attr('x-checksum'); - var line = $(this).parent().parent().attr('x-line'); - $.getJSON('ajax/showsetproperty.php',{'id': id, 'checksum': checksum, 'line': line },function(jsondata){ + $('.contacts_property [data-use="edit"]').live('click',function(){ + var id = $('#contacts_details').data('id'); + var checksum = $(this).parent().parent().data('checksum'); + $.getJSON('ajax/showsetproperty.php',{'id': id, 'checksum': checksum },function(jsondata){ if(jsondata.status == 'success'){ - $('.contacts_property[x-line="'+line+'"][x-checksum="'+checksum+'"] .contacts_propertyvalue').html(jsondata.data.page); + $('.contacts_property[data-checksum="'+checksum+'"] .contacts_propertyvalue').html(jsondata.data.page); } else{ alert(jsondata.data.message); @@ -122,7 +119,7 @@ $(document).ready(function(){ $('#contacts_setpropertyform input[type="submit"]').live('click',function(){ $.post('ajax/setproperty.php',$('#contacts_setpropertyform').serialize(),function(jsondata){ if(jsondata.status == 'success'){ - $('.contacts_property[x-line="'+jsondata.data.line+'"][x-checksum="'+jsondata.data.oldchecksum+'"]').replaceWith(jsondata.data.page); + $('.contacts_property[data-checksum="'+jsondata.data.oldchecksum+'"]').replaceWith(jsondata.data.page); } else{ alert(jsondata.data.message); @@ -131,13 +128,12 @@ $(document).ready(function(){ return false; }); - $('.contacts_property [x-use="delete"]').live('click',function(){ - var id = $('#contacts_details').attr('x-id'); - var checksum = $(this).parent().parent().attr('x-checksum'); - var line = $(this).parent().parent().attr('x-line'); - $.getJSON('ajax/deleteproperty.php',{'id': id, 'checksum': checksum, 'line': line },function(jsondata){ + $('.contacts_property [data-use="delete"]').live('click',function(){ + var id = $('#contacts_details').data('id'); + var checksum = $(this).parent().parent().data('checksum'); + $.getJSON('ajax/deleteproperty.php',{'id': id, 'checksum': checksum },function(jsondata){ if(jsondata.status == 'success'){ - $('.contacts_property[x-line="'+line+'"][x-checksum="'+checksum+'"]').remove(); + $('.contacts_property[data-checksum="'+checksum+'"]').remove(); } else{ alert(jsondata.data.message); diff --git a/apps/contacts/lib/addressbook.php b/apps/contacts/lib/addressbook.php index cb7b0b4671..8b91cdbd6f 100644 --- a/apps/contacts/lib/addressbook.php +++ b/apps/contacts/lib/addressbook.php @@ -291,32 +291,35 @@ class OC_Contacts_Addressbook{ public static function structureContact($object){ $details = array(); - $line = 0; foreach($object->children as $property){ - $temp = self::structureProperty($property,$line); + $temp = self::structureProperty($property); if(array_key_exists($property->name,$details)){ $details[$property->name][] = $temp; } else{ $details[$property->name] = array($temp); } - $line++; } return $details; } - public static function structureProperty($property,$line=null){ + public static function structureProperty($property){ $value = $property->value; - if($property->name == 'ADR'){ + $value = htmlspecialchars($value); + if($property->name == 'ADR' || $property->name == 'N'){ $value = self::unescapeSemicolons($value); } $temp = array( 'name' => $property->name, 'value' => $value, - 'line' => $line, 'parameters' => array(), 'checksum' => md5($property->serialize())); foreach($property->parameters as $parameter){ + // Faulty entries by kaddressbook + if($parameter->name == 'TYPE' && $parameter->value == 'PREF'){ + $parameter->name = 'PREF'; + $parameter->value = '1'; + } $temp['parameters'][$parameter->name] = $parameter->value; } return $temp; diff --git a/apps/contacts/templates/index.php b/apps/contacts/templates/index.php index e6dd45739b..6a29c7bd68 100644 --- a/apps/contacts/templates/index.php +++ b/apps/contacts/templates/index.php @@ -22,6 +22,6 @@ OC_Util::addStyle('contacts','styles'); t('Add Contact'); ?> -
+
inc("part.details"); ?>
diff --git a/apps/contacts/templates/part.addpropertyform.php b/apps/contacts/templates/part.addpropertyform.php index ff9090b76d..32affde952 100644 --- a/apps/contacts/templates/part.addpropertyform.php +++ b/apps/contacts/templates/part.addpropertyform.php @@ -1,7 +1,6 @@
- - + + t('PO Box'); ?> t('Extended Address'); ?> @@ -28,15 +27,17 @@
-
- -
diff --git a/apps/contacts/templates/part.contacts.php b/apps/contacts/templates/part.contacts.php index fa6d4790cf..6664a3671a 100644 --- a/apps/contacts/templates/part.contacts.php +++ b/apps/contacts/templates/part.contacts.php @@ -1,3 +1,3 @@ -
  • +
  • diff --git a/apps/contacts/templates/part.details.php b/apps/contacts/templates/part.details.php index 4aca8dbc79..0d738b5a0a 100644 --- a/apps/contacts/templates/part.details.php +++ b/apps/contacts/templates/part.details.php @@ -17,6 +17,7 @@ - - - +
    + + +
    diff --git a/apps/contacts/templates/part.property.php b/apps/contacts/templates/part.property.php index 1a4266b3a2..1611e54b65 100644 --- a/apps/contacts/templates/part.property.php +++ b/apps/contacts/templates/part.property.php @@ -1,40 +1,48 @@ -
    +
    t('Name'); ?>
    - +
    t('Birthday'); ?>
    l('date',new DateTime($_['property']['value'])); ?> - - +
    t('Organisation'); ?>
    - - + +
    t('Email'); ?>
    - - + +
    -
    t('Telefon'); ?>
    +
    t('Telephone'); ?>
    - - + + (t('tel_'.strtolower($_['property']['parameters']['TYPE'])); ?>) + + +
    -
    t('Address'); ?>
    +
    + t('Address'); ?> + +
    + (t('adr_'.strtolower($_['property']['parameters']['TYPE'])); ?>) + +
    t('PO Box'); ?>
    t('Extended Address'); ?>
    @@ -43,8 +51,8 @@ t('Region'); ?>
    t('Postal Code'); ?>
    t('Country'); ?> - - + +
    diff --git a/apps/contacts/templates/part.setpropertyform.php b/apps/contacts/templates/part.setpropertyform.php index cd774ee659..d8127bb08b 100644 --- a/apps/contacts/templates/part.setpropertyform.php +++ b/apps/contacts/templates/part.setpropertyform.php @@ -1,6 +1,5 @@ - t('PO Box'); ?> @@ -12,8 +11,6 @@ t('Country'); ?> - -