From ac63afbd95b87475f9f6bf4eae76540cb70d05fb Mon Sep 17 00:00:00 2001
From: Thomas Tanghus <thomas@tanghus.net>
Date: Mon, 9 Jan 2012 22:05:28 +0100
Subject: [PATCH] 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 c890be8582..7b56767bab 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 b9f75bdf71..187c8941dc 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('<li data-id="'+jsondata.data.id+'" class="active"><a href="index.php?id='+jsondata.data.id+'">'+jsondata.data.name+'</a></li>');
+				var item = '<li data-id="'+jsondata.data.id+'" class="active"><a href="index.php?id='+jsondata.data.id+'"  style="background: url(thumbnail.php?id='+jsondata.data.id+') no-repeat scroll 0% 0% transparent;">'+jsondata.data.name+'</a></li>';
+				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 afad0b7f64..1482c06368 100644
--- a/apps/contacts/templates/part.details.php
+++ b/apps/contacts/templates/part.details.php
@@ -86,3 +86,8 @@
 		</li>
 	</ul>
 <?php endif; ?>
+<script language="Javascript">
+/* Re-tipsify ;-)*/
+	$('.action').tipsy();
+	$('.button').tipsy();
+</script>
-- 
GitLab