diff options
author | Thomas Tanghus <thomas@tanghus.net> | 2012-01-09 20:41:16 +0100 |
---|---|---|
committer | Thomas Tanghus <thomas@tanghus.net> | 2012-01-09 20:41:16 +0100 |
commit | 5817bd10bad89cf6dab07adeffac3239dc54d459 (patch) | |
tree | 325d95e17347c2ff61e0a7298c7948408cbbce0e | |
parent | 5f04b41ea6085ee8ab9cfc58ecfc4dd5290a57d6 (diff) | |
parent | 978a08ab1c5e425210e8128e6d8efa432d593571 (diff) | |
download | nextcloud-server-5817bd10bad89cf6dab07adeffac3239dc54d459.tar.gz nextcloud-server-5817bd10bad89cf6dab07adeffac3239dc54d459.zip |
Merge branch 'tanghus_contacts'
-rw-r--r-- | apps/contacts/ajax/addcard.php | 1 | ||||
-rw-r--r-- | apps/contacts/ajax/addproperty.php | 20 | ||||
-rw-r--r-- | apps/contacts/ajax/contacts.php | 15 | ||||
-rw-r--r-- | apps/contacts/index.php | 28 | ||||
-rw-r--r-- | apps/contacts/js/interface.js | 26 | ||||
-rw-r--r-- | apps/contacts/templates/part.property.php | 5 | ||||
-rw-r--r-- | apps/contacts/templates/part.setpropertyform.php | 2 | ||||
-rw-r--r-- | apps/contacts/thumbnail.php | 104 |
8 files changed, 88 insertions, 113 deletions
diff --git a/apps/contacts/ajax/addcard.php b/apps/contacts/ajax/addcard.php index 54c455e515f..9d782246a0a 100644 --- a/apps/contacts/ajax/addcard.php +++ b/apps/contacts/ajax/addcard.php @@ -61,6 +61,5 @@ foreach( $add as $propname){ $vcard->addProperty($propname, $value, $prop_parameters); } $id = OC_Contacts_VCard::add($aid,$vcard->serialize()); -OC_Log::write('contacts','ajax/addcard.php - adding id: '.$id,OC_Log::DEBUG); OC_Contacts_App::renderDetails($id, $vcard); diff --git a/apps/contacts/ajax/addproperty.php b/apps/contacts/ajax/addproperty.php index 98877805b46..0122cf019c7 100644 --- a/apps/contacts/ajax/addproperty.php +++ b/apps/contacts/ajax/addproperty.php @@ -34,13 +34,31 @@ $name = $_POST['name']; $value = $_POST['value']; $parameters = isset($_POST['parameters'])?$_POST['parameters']:array(); -$property = $vcard->addProperty($name, $value, $parameters); +$property = $vcard->addProperty($name, $value); //, $parameters); $line = count($vcard->children) - 1; +// Apparently Sabre_VObject_Parameter doesn't do well with multiple values or I don't know how to do it. Tanghus. +foreach ($parameters as $key=>$element) { + if(is_array($element) && strtoupper($key) == 'TYPE') { + // FIXME: Maybe this doesn't only apply for TYPE? + // And it probably shouldn't be done here anyways :-/ + foreach($element as $e){ + if($e != '' && !is_null($e)){ + $vcard->children[$line]->parameters[] = new Sabre_VObject_Parameter($key,$e); + } + } + } +} + OC_Contacts_VCard::edit($id,$vcard->serialize()); +$adr_types = OC_Contacts_App::getTypesOfProperty('ADR'); +$phone_types = OC_Contacts_App::getTypesOfProperty('TEL'); + $tmpl = new OC_Template('contacts','part.property'); +$tmpl->assign('adr_types',$adr_types); +$tmpl->assign('phone_types',$phone_types); $tmpl->assign('property',OC_Contacts_VCard::structureProperty($property,$line)); $page = $tmpl->fetchPage(); diff --git a/apps/contacts/ajax/contacts.php b/apps/contacts/ajax/contacts.php index 54ad3e4c103..cf86764105f 100644 --- a/apps/contacts/ajax/contacts.php +++ b/apps/contacts/ajax/contacts.php @@ -12,21 +12,6 @@ OC_JSON::checkAppEnabled('contacts'); $ids = OC_Contacts_Addressbook::activeIds(OC_User::getUser()); $contacts = OC_Contacts_VCard::all($ids); -//OC_Log::write('contacts','contacts.php: '.count($contacts).' contacts.',OC_Log::DEBUG); -/* -$addressbooks = OC_Contacts_Addressbook::active(OC_User::getUser()); -$contacts = array(); -foreach( $addressbooks as $addressbook ){ - $addressbookcontacts = OC_Contacts_VCard::all($addressbook['id']); - foreach( $addressbookcontacts as $contact ){ - if(is_null($contact['fullname'])){ - continue; - } - $contacts[] = $contact; - } -} -usort($contacts,'contacts_namesort'); -*/ $tmpl = new OC_TEMPLATE("contacts", "part.contacts"); $tmpl->assign('contacts', $contacts); $page = $tmpl->fetchPage(); diff --git a/apps/contacts/index.php b/apps/contacts/index.php index 5ab6f293ab4..0b705e71b5d 100644 --- a/apps/contacts/index.php +++ b/apps/contacts/index.php @@ -42,31 +42,21 @@ OC_App::setActiveNavigationEntry( 'contacts_index' ); // Load a specific user? $id = isset( $_GET['id'] ) ? $_GET['id'] : null; -/* -// sort addressbooks (use contactsort) -usort($addressbooks,'contacts_namesort'); - -$contacts = array(); -foreach( $addressbooks as $addressbook ){ - $addressbookcontacts = OC_Contacts_VCard::all($addressbook['id']); - foreach( $addressbookcontacts as $contact ){ - if(is_null($contact['fullname'])){ - continue; - } - $contacts[] = $contact; - } -} - -usort($contacts,'contacts_namesort'); -*/ $details = array(); // FIXME: This cannot work..? -if( !is_null($id)/* || count($contacts)*/){ - if(is_null($id)) $id = $contacts[0]['id']; +if(is_null($id) && count($contacts) > 0) { + $id = $contacts[0]['id']; +} +if(!is_null($id)) { $vcard = OC_Contacts_App::getContactVCard($id); $details = OC_Contacts_VCard::structureContact($vcard); } +// if( !is_null($id)/* || count($contacts)*/){ +// if(is_null($id)) $id = $contacts[0]['id']; +// $vcard = OC_Contacts_App::getContactVCard($id); +// $details = OC_Contacts_VCard::structureContact($vcard); +// } // Include Style and Script OC_Util::addScript('contacts','interface'); diff --git a/apps/contacts/js/interface.js b/apps/contacts/js/interface.js index 35639ef6cc7..b9f75bdf71a 100644 --- a/apps/contacts/js/interface.js +++ b/apps/contacts/js/interface.js @@ -1,3 +1,29 @@ +/** + * ownCloud - Addressbook + * + * @author Jakob Sack + * @copyright 2011 Jakob Sack mail@jakobsack.de + * @copyright 2011-2012 Thomas Tanghus <thomas@tanghus.net> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * License as published by the Free Software Foundation; either + * version 3 of the License, or any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + * + * TODO: + * If you add a contact, its thumbnail doesnt show in the list. But when you add another one it shows up, but not for the second contact added. + * Place a new contact in correct alphabetic order + */ + + Contacts={ UI:{ showCardDAVUrl:function(username, bookname){ diff --git a/apps/contacts/templates/part.property.php b/apps/contacts/templates/part.property.php index d930a9ca99d..e4010397500 100644 --- a/apps/contacts/templates/part.property.php +++ b/apps/contacts/templates/part.property.php @@ -25,15 +25,14 @@ <?php echo $_['property']['value']; ?> <?php if(isset($_['property']['parameters']['TYPE']) && !empty($_['property']['parameters']['TYPE'])): ?> <?php - $types = array(); - foreach($_['property']['parameters']['TYPE'] as $type): + foreach($_['property']['parameters']['TYPE'] as $type) { if (isset($_['phone_types'][strtoupper($type)])){ $types[]=$_['phone_types'][strtoupper($type)]; } else{ $types[]=$l->t(ucwords(strtolower($type))); } - endforeach; + } $label = join(' ', $types); ?> (<?php echo $label; ?>) diff --git a/apps/contacts/templates/part.setpropertyform.php b/apps/contacts/templates/part.setpropertyform.php index 8635d7db1ce..3e0b8d49b52 100644 --- a/apps/contacts/templates/part.setpropertyform.php +++ b/apps/contacts/templates/part.setpropertyform.php @@ -45,7 +45,7 @@ <p class="contacts_property_name"><label for="tel"><?php echo $l->t('Phone'); ?></label></p> <p class="contacts_property_data"><input id="tel" type="phone" name="value" value="<?php echo $_['property']['value'] ?>"> <select id="tel_type<?php echo $_['property']['checksum'] ?>" name="parameters[TYPE][]" multiple="multiple" data-placeholder="<?php echo $l->t('Type') ?>"> - <?php echo html_select_options($_['phone_types'], isset($_['property']['parameters']['TYPE'])?$_['property']['parameters']['TYPE']:'') ?> + <?php echo html_select_options($_['phone_types'], isset($_['property']['parameters']['TYPE'])?$_['property']['parameters']['TYPE']:array()) ?> </select></p> <?php elseif($_['property']['name']=='EMAIL'): ?> <p class="contacts_property_name"><label for="email"><?php echo $l->t('Email'); ?></label></p> diff --git a/apps/contacts/thumbnail.php b/apps/contacts/thumbnail.php index bf0a6e96a5d..622718d65c6 100644 --- a/apps/contacts/thumbnail.php +++ b/apps/contacts/thumbnail.php @@ -2,8 +2,8 @@ /** * ownCloud - Addressbook * - * @author Jakob Sack - * @copyright 2011 Jakob Sack mail@jakobsack.de + * @author Thomas Tanghus + * @copyright 2011-2012 Thomas Tanghus <thomas@tanghus.net> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE @@ -26,7 +26,7 @@ OC_Util::checkLoggedIn(); OC_Util::checkAppEnabled('contacts'); if(!function_exists('imagecreatefromjpeg')) { - OC_Log::write('contacts','GD module not installed',OC_Log::ERROR); + OC_Log::write('contacts','thumbnail.php. GD module not installed',OC_Log::DEBUG); header('Content-Type: image/png'); // TODO: Check if it works to read the file and echo the content. return 'img/person.png'; @@ -46,13 +46,16 @@ $l10n = new OC_L10N('contacts'); $card = OC_Contacts_VCard::find( $id ); if( $card === false ){ - echo $l10n->t('Contact could not be found.'); + OC_Log::write('contacts','thumbnail.php. Contact could not be found.',OC_Log::ERROR); + //echo $l10n->t('Contact could not be found.'); exit(); } +// FIXME: Is this check necessary? It just takes up CPU time. $addressbook = OC_Contacts_Addressbook::find( $card['addressbookid'] ); if( $addressbook === false || $addressbook['userid'] != OC_USER::getUser()){ - echo $l10n->t('This is not your contact.'); // This is a weird error, why would it come up? (Better feedback for users?) + OC_Log::write('contacts','thumbnail.php. Wrong contact/addressbook - WTF?',OC_Log::ERROR); + //echo $l10n->t('This is not your contact.'); // This is a weird error, why would it come up? (Better feedback for users?) exit(); } @@ -60,17 +63,14 @@ $content = OC_VObject::parse($card['carddata']); // invalid vcard if( is_null($content)){ - echo $l10n->t('This card is not RFC compatible.'); + OC_Log::write('contacts','thumbnail.php. The VCard for ID '.$id.' is not RFC compatible',OC_Log::ERROR); + getStandardImage(); exit(); } -// define the width and height for the thumbnail -// note that theese dimmensions are considered the maximum dimmension and are not fixed, -// because we have to keep the image ratio intact or it will be deformed -$thumbnail_width = 23; -$thumbnail_height = 23; +$thumbnail_size = 23; -// Photo :-) +// Finf the photo from VCard. foreach($content->children as $child){ if($child->name == 'PHOTO'){ foreach($child->parameters as $parameter){ @@ -78,73 +78,31 @@ foreach($content->children as $child){ $mime = $parameter->value; } } - $data = base64_decode($child->value); - $src_img = imagecreatefromstring($data); - if ($src_img !== false) { - //gets the dimmensions of the image - $width_orig=imageSX($src_img); - $height_orig=imageSY($src_img); - $ratio_orig = $width_orig/$height_orig; - - if ($thumbnail_width/$thumbnail_height > $ratio_orig) { - $new_height = $thumbnail_width/$ratio_orig; - $new_width = $thumbnail_width; - } else { - $new_width = $thumbnail_height*$ratio_orig; - $new_height = $thumbnail_height; - } - - $x_mid = $new_width/2; //horizontal middle - $y_mid = $new_height/2; //vertical middle - - $process = imagecreatetruecolor(round($new_width), round($new_height)); - if ($process == false) { - getStandardImage(); - //echo 'Error creating process image: '.$new_width.'x'.$new_height; - OC_Log::write('contacts','Error creating process image for '.$id.' '.$new_width.'x'.$new_height,OC_Log::ERROR); - imagedestroy($process); - imagedestroy($src_img); - exit(); - } - - imagecopyresampled($process, $src_img, 0, 0, 0, 0, $new_width, $new_height, $width_orig, $height_orig); - if ($process == false) { - getStandardImage(); - //echo 'Error resampling process image: '.$new_width.'x'.$new_height; - OC_Log::write('contacts','Error resampling process image for '.$id.' '.$new_width.'x'.$new_height,OC_Log::ERROR); - imagedestroy($process); - imagedestroy($src_img); - exit(); - } - $thumb = imagecreatetruecolor($thumbnail_width, $thumbnail_height); - if ($process == false) { + $image = new OC_Image(); + if($image->loadFromBase64($child->value)) { + if($image->centerCrop()) { + if($image->resize($thumbnail_size)) { + if(!$image()) { + OC_Log::write('contacts','thumbnail.php. Couldn\'t display thumbnail for ID '.$id,OC_Log::ERROR); + getStandardImage(); + exit(); + } + } else { + OC_Log::write('contacts','thumbnail.php. Couldn\'t resize thumbnail for ID '.$id,OC_Log::ERROR); + getStandardImage(); + exit(); + } + }else{ + OC_Log::write('contacts','thumbnail.php. Couldn\'t crop thumbnail for ID '.$id,OC_Log::ERROR); getStandardImage(); - //echo 'Error creating thumb image: '.$thumbnail_width.'x'.$thumbnail_height; - OC_Log::write('contacts','Error creating thumb image for '.$id.' '.$thumbnail_width.'x'.$thumbnail_height,OC_Log::ERROR); - imagedestroy($process); - imagedestroy($src_img); exit(); } - imagecopyresampled($thumb, $process, 0, 0, ($x_mid-($thumbnail_width/2)), ($y_mid-($thumbnail_height/2)), $thumbnail_width, $thumbnail_height, $thumbnail_width, $thumbnail_height); - if ($thumb !== false) { - header('Content-Type: image/png'); - imagepng($thumb); - } else { - getStandardImage(); - OC_Log::write('contacts','Error resampling thumb image for '.$id.' '.$thumbnail_width.'x'.$thumbnail_height,OC_Log::ERROR); - //echo 'An error occurred resampling thumb.'; - } - imagedestroy($thumb); - imagedestroy($process); - imagedestroy($src_img); - } - else { + } else { + OC_Log::write('contacts','thumbnail.php. Couldn\'t load image string for ID '.$id,OC_Log::ERROR); getStandardImage(); + exit(); } exit(); } } getStandardImage(); - -// Not found :-( -//echo $l10n->t('This card does not contain a photo.'); |