]> source.dussan.org Git - nextcloud-server.git/commitdiff
Contacts: support multiple phone type parameter
authorBart Visscher <bartv@thisnet.nl>
Wed, 23 Nov 2011 20:06:51 +0000 (21:06 +0100)
committerBart Visscher <bartv@thisnet.nl>
Wed, 23 Nov 2011 20:07:32 +0000 (21:07 +0100)
apps/contacts/ajax/setproperty.php
apps/contacts/css/formtastic.css
apps/contacts/css/styles.css
apps/contacts/js/interface.js
apps/contacts/lib/vcard.php
apps/contacts/templates/part.addcardform.php
apps/contacts/templates/part.property.php
apps/contacts/templates/part.setpropertyform.php

index 9164f86913dd1d0dd9286729f1284c41b052bb10..c9102c4a2ee23c43e12e70b2586dc03148120d8d 100644 (file)
@@ -70,6 +70,9 @@ $vcard->children[$line]->setValue($value);
 
 // Add parameters
 $postparameters = isset($_POST['parameters'])?$_POST['parameters']:array();
+if ($vcard->children[$line]->name == 'TEL' && !array_key_exists('TYPE', $postparameters)){
+       $postparameters['TYPE']='';
+}
 for($i=0;$i<count($vcard->children[$line]->parameters);$i++){
        $name = $vcard->children[$line]->parameters[$i]->name;
        if(array_key_exists($name,$postparameters)){
@@ -77,7 +80,14 @@ for($i=0;$i<count($vcard->children[$line]->parameters);$i++){
                        unset($vcard->children[$line]->parameters[$i]);
                }
                else{
-                       $vcard->children[$line]->parameters[$i]->value = $postparameters[$name];
+                       unset($vcard->children[$line][$name]);
+                       $values = $postparameters[$name];
+                       if (!is_array($values)){
+                               $values = array($values);
+                       }
+                       foreach($values as $value){
+                               $vcard->children[$line]->add($name, $value);
+                       }
                }
                unset($postparameters[$name]);
        }
index 629c220732b9e93284c704c675cb0735c00642d2..fede92b61ca3509e8459502d22e88d053777e3de 100644 (file)
@@ -94,16 +94,14 @@ This stylesheet forms part of the Formtastic Rails Plugin
 /* INPUTS
 --------------------------------------------------------------------------------------------------*/
 .formtastic .inputs {
-  overflow:hidden; /* clear containing floats */
-}
-
-.formtastic .input {
-  overflow:hidden; /* clear containing floats */
   padding:0.5em 0; /* padding and negative margin juggling is for Firefox */
   margin-top:-0.5em;
   margin-bottom:1em;
 }
 
+.formtastic .input {
+}
+
 
 /* LEFT ALIGNED LABELS
 --------------------------------------------------------------------------------------------------*/
index ad64c777ee734c90f72ab3307bd97cc30a4730e6..e226c48ae549d4fe620be1d1a51de8919ea60e68 100644 (file)
@@ -3,16 +3,21 @@
 
 #contacts_deletecard {position:absolute;top:15px;right:0;}
 #contacts_details_list { list-style:none; }
-#contacts_details_list li { overflow:hidden; }
 #contacts_details_list li p.contacts_property_name { width:25%; float:left;text-align:right;padding-right:0.3em;color:#666; }
-#contacts_details_list li p.contacts_property_data, #contacts_details_list li ul.contacts_property_data { width:72%; overflow:hidden; }
+#contacts_details_list li p.contacts_property_data, #contacts_details_list li ul.contacts_property_data { width:72%;float:left; }
 #contacts_addproperty_button, #contacts_setproperty_button { margin-left:25%; }
 
-.contacts_property_data ul, .contacts_property_data ol { list-style:none; }
+.contacts_property_data ul, ol.contacts_property_data { list-style:none; }
 .contacts_property_data li { overflow: hidden; }
 .contacts_property_data li label { width:20%; float:left; text-align:right;padding-right:0.3em; }
+.contacts_property_data input { float:left; }
 .contacts_property_data li input { width:70%;overflow:hidden; }
 
+.chzn-container { margin:3px 0 0; }
+.chzn-container .chzn-choices { border-radius: 0.5em; }
+.chzn-container.chzn-container-active .chzn-choices { border-bottom-left-radius: 0;border-bottom-right-radius: 0; }
+.chzn-container .chzn-drop { border-bottom-left-radius: 0.5em;border-bottom-right-radius: 0.5em; }
+
 /* Form setup ----------------------------------------------------------------*/
 /* .forme {} */
 /* .forme ul, .forme ol { list-style:none; } */
index 1cc3a5dfd634ab25e2be76395ae85f11dfbd9dd3..24b512e532b385e41989c0f25848cce38f22681f 100644 (file)
@@ -82,7 +82,8 @@ $(document).ready(function(){
                $.getJSON('ajax/showaddcard.php',{},function(jsondata){
                        if(jsondata.status == 'success'){
                                $('#rightcontent').data('id','');
-                               $('#rightcontent').html(jsondata.data.page);
+                               $('#rightcontent').html(jsondata.data.page)
+                                       .find('select').chosen();
                        }
                        else{
                                alert(jsondata.data.message);
@@ -111,7 +112,8 @@ $(document).ready(function(){
                var checksum = $(this).parents('li').first().data('checksum');
                $.getJSON('ajax/showsetproperty.php',{'id': id, 'checksum': checksum },function(jsondata){
                        if(jsondata.status == 'success'){
-                               $('.contacts_property[data-checksum="'+checksum+'"]').html(jsondata.data.page);
+                               $('.contacts_property[data-checksum="'+checksum+'"]').html(jsondata.data.page)
+                                       .find('select').chosen();
                        }
                        else{
                                alert(jsondata.data.message);
@@ -148,10 +150,12 @@ $(document).ready(function(){
 
 
        $('.contacts_property').live('mouseenter',function(){
-               $(this).find('span').show();
+               $(this).find('span[data-use]').show();
        });
 
        $('.contacts_property').live('mouseleave',function(){
-               $(this).find('span').hide();
+               $(this).find('span[data-use]').hide();
        });
+
+       $('#contacts_addcardform select').chosen();
 });
index 56602f25c0a2aa8c243f5435dc15ed1994082fe1..4865fae7642538171f90cbcb3debbffeeb2f7da6 100644 (file)
@@ -296,7 +296,13 @@ class OC_Contacts_VCard{
                $property = new Sabre_VObject_Property( $name, $value );
                $parameternames = array_keys($parameters);
                foreach($parameternames as $i){
-                       $property->parameters[] = new Sabre_VObject_Parameter($i,$parameters[$i]);
+                       $values = $parameters[$i];
+                       if (!is_array($values)){
+                               $values = array($values);
+                       }
+                       foreach($values as $value){
+                               $property->add($i, $value);
+                       }
                }
 
                $vcard->add($property);
@@ -352,7 +358,17 @@ class OC_Contacts_VCard{
                                $parameter->name = 'PREF';
                                $parameter->value = '1';
                        }
-                       $temp['parameters'][$parameter->name] = $parameter->value;
+                       if ($property->name == 'TEL' && $parameter->name == 'TYPE'){
+                               if (isset($temp['parameters'][$parameter->name])){
+                                       $temp['parameters'][$parameter->name][] = $parameter->value;
+                               }
+                               else{
+                                       $temp['parameters'][$parameter->name] = array($parameter->value);
+                               }
+                       }
+                       else{
+                               $temp['parameters'][$parameter->name] = $parameter->value;
+                       }
                }
                return $temp;
        }
index 037e3629bb9d23a00ec26a59b2a652e0975d51e6..627053547addae94f6262759cdeae91c152d09fc 100644 (file)
@@ -43,7 +43,7 @@
                                                </li>
                                                <li class="fragment">
                                                        <label for="tel_type"><?php echo $l->t('Type'); ?></label>
-                                                       <select id="TEL" name="parameters[TEL][TYPE]" size="1">
+                                                       <select id="TEL" name="parameters[TEL][TYPE][]" multiple="multiple">
                                                                <?php echo html_select_options($_['phone_types'], 'CELL') ?>
                                                        </select>
                                                </li>
index dbd125dc959d1241707a5335706c220f45e16e3f..afef43112606df4ce833ccdcfc422ed3388b0b8d 100644 (file)
                <p class="contacts_property_name"><?php echo $l->t('Phone'); ?></p>
                <p class="contacts_property_data">
                        <?php echo $_['property']['value']; ?>
-                       <?php if(isset($_['property']['parameters']['TYPE'])): ?>
+                       <?php if(isset($_['property']['parameters']['TYPE']) && !empty($_['property']['parameters']['TYPE'])): ?>
 <?php
-       $type = $_['property']['parameters']['TYPE'];
-       if (isset($_['phone_types'][strtoupper($type)])){
-               $label=$_['phone_types'][strtoupper($type)];
-       }
-       else{
-               $label=$l->t(ucwords(strtolower($type)));
-       }
+       $types = array();
+       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; ?>)
                        <?php endif; ?>
index 9340ce7c7132f5e448f44fc66a51bf341c599384..bd18d86b47e5a8b694cfc8ff44cb7dc12d18e089 100644 (file)
@@ -42,9 +42,9 @@
                        </ol>
                <?php elseif($_['property']['name']=='TEL'): ?>
                        <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" name="parameters[TYPE]" size="1">
-                                       <?php echo html_select_options($_['phone_types'], strtoupper($_['property']['parameters']['TYPE'])) ?>
+                       <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">
+                                       <?php echo html_select_options($_['phone_types'], ($_['property']['parameters']['TYPE'])) ?>
                                </select></p>
                <?php elseif($_['property']['name']=='EMAIL'): ?>
                        <p class="contacts_property_name"><label for="email"><?php echo $l->t('Email'); ?></label></p>