From ac63afbd95b87475f9f6bf4eae76540cb70d05fb Mon Sep 17 00:00:00 2001 From: Thomas Tanghus Date: Mon, 9 Jan 2012 22:05:28 +0100 Subject: Insert new contacts alphabetically correct in the list. Added some tipsys to the editor. --- apps/contacts/css/styles.css | 2 +- apps/contacts/js/interface.js | 27 +++++++++++++++++++++++---- apps/contacts/templates/part.details.php | 5 +++++ 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/apps/contacts/css/styles.css b/apps/contacts/css/styles.css index c890be85824..7b56767bab0 100644 --- a/apps/contacts/css/styles.css +++ b/apps/contacts/css/styles.css @@ -4,7 +4,7 @@ #contacts_details_name { font-weight:bold;font-size:1.1em;margin-left:25%;} #contacts_details_photo { margin:.5em 0em .5em 25%; } -#contacts_deletecard {position:absolute;top:15px;right:0;} +#contacts_deletecard {position:absolute;top:15px;right:15px;} #contacts_details_list { list-style:none; } #contacts_details_list li { overflow:visible; } #contacts_details_list li p.contacts_property_name { width:25%; float:left;text-align:right;padding-right:0.3em;color:#666; } diff --git a/apps/contacts/js/interface.js b/apps/contacts/js/interface.js index b9f75bdf71a..187c8941dcf 100644 --- a/apps/contacts/js/interface.js +++ b/apps/contacts/js/interface.js @@ -236,7 +236,10 @@ $(document).ready(function(){ Contacts.UI.Addressbooks.overview(); return false; }); - + + /** + * Open blank form to add new contact. + */ $('#contacts_newcontact').click(function(){ $.getJSON('ajax/showaddcard.php',{},function(jsondata){ if(jsondata.status == 'success'){ @@ -250,14 +253,28 @@ $(document).ready(function(){ }); return false; }); - + + /** + * Add and insert a new contact into the list. + */ $('#contacts_addcardform input[type="submit"]').live('click',function(){ $.post('ajax/addcard.php',$('#contacts_addcardform').serialize(),function(jsondata){ if(jsondata.status == 'success'){ $('#rightcontent').data('id',jsondata.data.id); $('#rightcontent').html(jsondata.data.page); $('#leftcontent .active').removeClass('active'); - $('#leftcontent ul').append('
  • '+jsondata.data.name+'
  • '); + var item = '
  • '+jsondata.data.name+'
  • '; + var added = false; + $('#leftcontent ul li').each(function(){ + if ($(this).text().toLowerCase() > jsondata.data.name.toLowerCase()) { + $(this).before(item).fadeIn('fast'); + added = true; + return false; + } + }); + if(!added) { + $('#leftcontent ul').append(item); + } } else{ alert(jsondata.data.message); @@ -265,7 +282,6 @@ $(document).ready(function(){ }, 'json'); return false; }); - $('.contacts_property [data-use="edit"]').live('click',function(){ var id = $('#rightcontent').data('id'); var checksum = $(this).parents('.contacts_property').first().data('checksum'); @@ -338,4 +354,7 @@ $(document).ready(function(){ // element has gone out of viewport } }); + + $('.action').tipsy(); + $('.button').tipsy(); }); diff --git a/apps/contacts/templates/part.details.php b/apps/contacts/templates/part.details.php index afad0b7f64c..1482c063685 100644 --- a/apps/contacts/templates/part.details.php +++ b/apps/contacts/templates/part.details.php @@ -86,3 +86,8 @@ + -- cgit v1.2.3 From aadb81a32ac521058cb4bafe052f39f24ac9dc8e Mon Sep 17 00:00:00 2001 From: Thomas Tanghus Date: Mon, 9 Jan 2012 23:14:11 +0100 Subject: OC_DB::insertid was being called too late to get the correct result. --- apps/contacts/lib/vcard.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/contacts/lib/vcard.php b/apps/contacts/lib/vcard.php index beb291b481e..6a248ff59e4 100644 --- a/apps/contacts/lib/vcard.php +++ b/apps/contacts/lib/vcard.php @@ -130,10 +130,11 @@ class OC_Contacts_VCard{ $stmt = OC_DB::prepare( 'INSERT INTO *PREFIX*contacts_cards (addressbookid,fullname,carddata,uri,lastmodified) VALUES(?,?,?,?,?)' ); $result = $stmt->execute(array($id,$fn,$data,$uri,time())); + $newid = OC_DB::insertid('*PREFIX*contacts_cards'); OC_Contacts_Addressbook::touch($id); - return OC_DB::insertid('*PREFIX*contacts_cards'); + return $newid; } /** -- cgit v1.2.3 From 60653c05440121a149a2709d719060cf77c2c58d Mon Sep 17 00:00:00 2001 From: Thomas Tanghus Date: Mon, 9 Jan 2012 23:16:07 +0100 Subject: Return standard thumbnail even if contact couldn't be found as it could be because it was just added, --- apps/contacts/thumbnail.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/apps/contacts/thumbnail.php b/apps/contacts/thumbnail.php index 622718d65c6..e49098ce820 100644 --- a/apps/contacts/thumbnail.php +++ b/apps/contacts/thumbnail.php @@ -46,8 +46,8 @@ $l10n = new OC_L10N('contacts'); $card = OC_Contacts_VCard::find( $id ); if( $card === false ){ - OC_Log::write('contacts','thumbnail.php. Contact could not be found.',OC_Log::ERROR); - //echo $l10n->t('Contact could not be found.'); + OC_Log::write('contacts','thumbnail.php. Contact could not be found: '.$id,OC_Log::ERROR); + getStandardImage(); exit(); } @@ -55,7 +55,6 @@ if( $card === false ){ $addressbook = OC_Contacts_Addressbook::find( $card['addressbookid'] ); if( $addressbook === false || $addressbook['userid'] != OC_USER::getUser()){ 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(); } -- cgit v1.2.3 From e316cddf650379b5b6cde600dd058d33169ddbb1 Mon Sep 17 00:00:00 2001 From: Thomas Tanghus Date: Tue, 10 Jan 2012 14:59:31 +0100 Subject: More fixes on saving TYPE parameters. Use jQuery Dialog for error messages instead of alert() --- apps/contacts/ajax/addcard.php | 17 ++++++++- apps/contacts/ajax/addproperty.php | 2 + apps/contacts/js/interface.js | 76 ++++++++++++++++++++++---------------- apps/contacts/templates/index.php | 3 -- 4 files changed, 62 insertions(+), 36 deletions(-) diff --git a/apps/contacts/ajax/addcard.php b/apps/contacts/ajax/addcard.php index 9d782246a0a..54e4faa6ed9 100644 --- a/apps/contacts/ajax/addcard.php +++ b/apps/contacts/ajax/addcard.php @@ -54,11 +54,24 @@ foreach( $add as $propname){ $value = $values[$propname]; if( isset( $parameters[$propname] ) && count( $parameters[$propname] )){ $prop_parameters = $parameters[$propname]; - } else{ $prop_parameters = array(); } - $vcard->addProperty($propname, $value, $prop_parameters); + $vcard->addProperty($propname, $value); //, $prop_parameters); + $line = count($vcard->children) - 1; + foreach ($prop_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); + } + } + } else { + $vcard->children[$line]->parameters[] = new Sabre_VObject_Parameter($key,$element); + } + } } $id = OC_Contacts_VCard::add($aid,$vcard->serialize()); diff --git a/apps/contacts/ajax/addproperty.php b/apps/contacts/ajax/addproperty.php index 0122cf019c7..0f76add3c9b 100644 --- a/apps/contacts/ajax/addproperty.php +++ b/apps/contacts/ajax/addproperty.php @@ -48,6 +48,8 @@ foreach ($parameters as $key=>$element) { $vcard->children[$line]->parameters[] = new Sabre_VObject_Parameter($key,$e); } } + } else { + $vcard->children[$line]->parameters[] = new Sabre_VObject_Parameter($key,$element); } } diff --git a/apps/contacts/js/interface.js b/apps/contacts/js/interface.js index 187c8941dcf..4a27073c156 100644 --- a/apps/contacts/js/interface.js +++ b/apps/contacts/js/interface.js @@ -18,9 +18,6 @@ * You should have received a copy of the GNU Affero General Public * License along with this library. If not, see . * - * 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 */ @@ -31,6 +28,20 @@ Contacts={ $('#carddav_url').show(); $('#carddav_url_close').show(); }, + messageBox:function(title, msg) { + var $dialog = $('
    ') + .html(msg) + .dialog({ + autoOpen: true, + title: title,buttons: [ + { + text: "Ok", + click: function() { $(this).dialog("close"); } + } + ] + } + ); + }, Addressbooks:{ overview:function(){ if($('#chooseaddressbook_dialog').dialog('isOpen') == true){ @@ -85,7 +96,8 @@ Contacts={ Contacts.UI.Contacts.update(); Contacts.UI.Addressbooks.overview(); } else { - alert('Error: ' + data.message); + Contacts.UI.messageBox('Error', data.message); + //alert('Error: ' + data.message); } }); } @@ -114,37 +126,29 @@ Contacts={ } }, Contacts:{ + /** + * Reload the contacts list. + */ update:function(){ $.getJSON('ajax/contacts.php',{},function(jsondata){ if(jsondata.status == 'success'){ $('#contacts').html(jsondata.data.page); } else{ - alert(jsondata.data.message); + Contacts.UI.messageBox('Error',jsondata.data.message); + //alert(jsondata.data.message); } }); - /* - var contactlist = $('#contacts'); - var contacts = contactlist.children('li').get(); - //alert(contacts); - contacts.sort(function(a, b) { - var compA = $(a).text().toUpperCase(); - var compB = $(b).text().toUpperCase(); - return (compA < compB) ? -1 : (compA > compB) ? 1 : 0; - }) - $.each(contacts, function(idx, itm) { contactlist.append(itm); }); - */ - setTimeout(Contacts.UI.Contacts.lazyupdate(), 500); + setTimeout(Contacts.UI.Contacts.lazyupdate, 500); }, + /** + * Add thumbnails to the contact list as they become visible in the viewport. + */ lazyupdate:function(){ - //alert('lazyupdate'); $('#contacts li').live('inview', function(){ if (!$(this).find('a').attr('style')) { - //alert($(this).data('id') + ' has background: ' + $(this).attr('style')); $(this).find('a').css('background','url(thumbnail.php?id='+$(this).data('id')+') no-repeat'); - }/* else { - alert($(this).data('id') + ' has style ' + $(this).attr('style').match('url')); - }*/ + } }); } } @@ -168,7 +172,8 @@ $(document).ready(function(){ $('#leftcontent li[data-id="'+jsondata.data.id+'"]').addClass('active'); } else{ - alert(jsondata.data.message); + Contacts.UI.messageBox('Error', jsondata.data.message); + //alert(jsondata.data.message); } }); return false; @@ -183,7 +188,8 @@ $(document).ready(function(){ $('#rightcontent').empty(); } else{ - alert(jsondata.data.message); + Contacts.UI.messageBox('Error', jsondata.data.message); + //alert(jsondata.data.message); } }); return false; @@ -197,7 +203,8 @@ $(document).ready(function(){ $('#contacts_addproperty').hide(); } else{ - alert(jsondata.data.message); + Contacts.UI.messageBox('Error', jsondata.data.message); + //alert(jsondata.data.message); } }); return false; @@ -226,7 +233,8 @@ $(document).ready(function(){ $('#contacts_addpropertyform').before(jsondata.data.page); } else{ - alert(jsondata.data.message); + Contacts.UI.messageBox('Error', jsondata.data.message); + //alert(jsondata.data.message); } }, 'json'); return false; @@ -248,7 +256,8 @@ $(document).ready(function(){ .find('select').chosen(); } else{ - alert(jsondata.data.message); + Contacts.UI.messageBox('Error', jsondata.data.message); + //alert(jsondata.data.message); } }); return false; @@ -277,7 +286,8 @@ $(document).ready(function(){ } } else{ - alert(jsondata.data.message); + Contacts.UI.messageBox('Error', jsondata.data.message); + //alert(jsondata.data.message); } }, 'json'); return false; @@ -291,7 +301,8 @@ $(document).ready(function(){ .find('select').chosen(); } else{ - alert(jsondata.data.message); + Contacts.UI.messageBox('Error', jsondata.data.message); + //alert(jsondata.data.message); } }); return false; @@ -303,7 +314,8 @@ $(document).ready(function(){ $('.contacts_property[data-checksum="'+jsondata.data.oldchecksum+'"]').replaceWith(jsondata.data.page); } else{ - alert(jsondata.data.message); + Contacts.UI.messageBox('Error', jsondata.data.message); + //alert(jsondata.data.message); } },'json'); return false; @@ -317,7 +329,8 @@ $(document).ready(function(){ $('.contacts_property[data-checksum="'+checksum+'"]').remove(); } else{ - alert(jsondata.data.message); + Contacts.UI.messageBox('Error', jsondata.data.message); + //alert(jsondata.data.message); } }); return false; @@ -357,4 +370,5 @@ $(document).ready(function(){ $('.action').tipsy(); $('.button').tipsy(); + //Contacts.UI.messageBox('Hello','Sailor'); }); diff --git a/apps/contacts/templates/index.php b/apps/contacts/templates/index.php index 90143f25fa6..24484231af4 100644 --- a/apps/contacts/templates/index.php +++ b/apps/contacts/templates/index.php @@ -31,7 +31,4 @@ OC_Util::addStyle('contacts','formtastic');
    -
    - t("There was a fail, while parsing the file."); ?> -
    -- cgit v1.2.3