]> source.dussan.org Git - nextcloud-server.git/commitdiff
Fixed Phone types not being saved correctly when adding them.
authorThomas Tanghus <thomas@tanghus.net>
Mon, 9 Jan 2012 00:17:04 +0000 (01:17 +0100)
committerThomas Tanghus <thomas@tanghus.net>
Mon, 9 Jan 2012 19:38:06 +0000 (20:38 +0100)
apps/contacts/ajax/addproperty.php
apps/contacts/templates/part.property.php
apps/contacts/templates/part.setpropertyform.php

index 98877805b46b818e84c267ce85a7da0d80377a89..0122cf019c7fb151d648bd37fb077283b22cc40d 100644 (file)
@@ -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();
 
index d930a9ca99db894ffee133aaa364cb621218637a..e401039750075cd357f8299c7093013a1383d46c 100644 (file)
                        <?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; ?>)
index 8635d7db1ce5dc4438b51384e4f7135cbe25c647..3e0b8d49b528a83fca9c4852dd1250d302398879 100644 (file)
@@ -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>