summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Tanghus <thomas@tanghus.net>2012-01-10 17:53:29 +0100
committerThomas Tanghus <thomas@tanghus.net>2012-01-10 17:53:29 +0100
commitd23c9362d8ccb9b7e3a14bb0aea5daef25fee65c (patch)
tree669f6db320afd1338fadca3b7f09a6149bcdd7a6
parent125731cab092a724c52b60621a6ff42a5d0d8fdb (diff)
parente316cddf650379b5b6cde600dd058d33169ddbb1 (diff)
downloadnextcloud-server-d23c9362d8ccb9b7e3a14bb0aea5daef25fee65c.tar.gz
nextcloud-server-d23c9362d8ccb9b7e3a14bb0aea5daef25fee65c.zip
Merge branch 'tanghus_contacts'
-rw-r--r--apps/contacts/ajax/addcard.php17
-rw-r--r--apps/contacts/ajax/addproperty.php2
-rw-r--r--apps/contacts/css/styles.css2
-rw-r--r--apps/contacts/js/interface.js103
-rw-r--r--apps/contacts/lib/vcard.php3
-rw-r--r--apps/contacts/templates/index.php3
-rw-r--r--apps/contacts/templates/part.details.php5
-rw-r--r--apps/contacts/thumbnail.php5
8 files changed, 95 insertions, 45 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/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..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 <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
*/
@@ -31,6 +28,20 @@ Contacts={
$('#carddav_url').show();
$('#carddav_url_close').show();
},
+ messageBox:function(title, msg) {
+ var $dialog = $('<div></div>')
+ .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;
@@ -236,7 +244,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'){
@@ -245,27 +256,42 @@ $(document).ready(function(){
.find('select').chosen();
}
else{
- alert(jsondata.data.message);
+ Contacts.UI.messageBox('Error', jsondata.data.message);
+ //alert(jsondata.data.message);
}
});
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);
+ Contacts.UI.messageBox('Error', jsondata.data.message);
+ //alert(jsondata.data.message);
}
}, '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');
@@ -275,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;
@@ -287,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;
@@ -301,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;
@@ -338,4 +367,8 @@ $(document).ready(function(){
// element has gone out of viewport
}
});
+
+ $('.action').tipsy();
+ $('.button').tipsy();
+ //Contacts.UI.messageBox('Hello','Sailor');
});
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;
}
/**
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');
</div>
<!-- Dialogs -->
<div id="dialog_holder"></div>
-<div id="parsingfail_dialog" title="Parsing Fail">
- <?php echo $l->t("There was a fail, while parsing the file."); ?>
-</div>
<!-- End of Dialogs -->
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 @@
</li>
</ul>
<?php endif; ?>
+<script language="Javascript">
+/* Re-tipsify ;-)*/
+ $('.action').tipsy();
+ $('.button').tipsy();
+</script>
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();
}