[Bedework-commit] carddav r204 - in trunk/clients/javascript/bwAddrbookClient: . config/lang resources

svnadmin at bedework.org svnadmin at bedework.org
Sat Nov 20 09:53:19 EST 2010


Author: johnsa
Date: 2010-11-20 09:53:19 -0500 (Sat, 20 Nov 2010)
New Revision: 204

Modified:
   trunk/clients/javascript/bwAddrbookClient/config/lang/en_US.js
   trunk/clients/javascript/bwAddrbookClient/index.html
   trunk/clients/javascript/bwAddrbookClient/resources/addressbook.js
Log:
javascript client: allow for multiple telephone numbers

Modified: trunk/clients/javascript/bwAddrbookClient/config/lang/en_US.js
===================================================================
--- trunk/clients/javascript/bwAddrbookClient/config/lang/en_US.js	2010-11-20 06:08:22 UTC (rev 203)
+++ trunk/clients/javascript/bwAddrbookClient/config/lang/en_US.js	2010-11-20 14:53:19 UTC (rev 204)
@@ -59,6 +59,15 @@
 var bwAbDispAddGroup = "Add Group";
 var bwAbDispUpdateGroup = "Update Group";
 
+// dynamic form values
+var bwAbDispFormWork = "work";
+var bwAbDispFormHome = "home";
+var bwAbDispFormVoice = "voice";
+var bwAbDispFormMobile = "mobile";
+var bwAbDispFormFax = "fax";
+var bwAbDispFormText = "text";
+var bwAbDispFormPager = "pager";
+
 // error and status messages
 var bwAbDispBookType = "Book type";
 var bwAbDispUnsupported = "unsupported";

Modified: trunk/clients/javascript/bwAddrbookClient/index.html
===================================================================
--- trunk/clients/javascript/bwAddrbookClient/index.html	2010-11-20 06:08:22 UTC (rev 203)
+++ trunk/clients/javascript/bwAddrbookClient/index.html	2010-11-20 14:53:19 UTC (rev 204)
@@ -189,20 +189,24 @@
                 </div>
                 <div class="bwAppend" id="bwAppendEmail"></div>
                 
-                <label class="bwField" for="PHONE-01">Phone:</label>
-                <div class="bwValue">
-                  <select id="PHONETYPE-01">
-                    <option value="work">work</option>
-                    <option value="home">home</option>
-                  </select>
-                  <select id="TELTYPE-01">
-                    <option value="voice">voice</option>
-                    <option value="cell">mobile</option>
-                    <option value="fax">fax</option>
-                    <option value="text">text</option>
-                    <option value="pager">pager</option>
-                  </select>
-                  <input type="text" size="30" value="" id="PHONE-01"/>
+                <div id="bwContactPhoneHolder">
+                  <div class="phoneFields" id="phoneFields-0">
+                    <label class="bwField" for="PHONE-0">Phone:</label>
+                    <div class="bwValue">
+                      <select id="PHONETYPE-0">
+                        <option value="work">work</option>
+                        <option value="home">home</option>
+                      </select>
+                      <select id="TELTYPE-0">
+                        <option value="voice">voice</option>
+                        <option value="cell">mobile</option>
+                        <option value="fax">fax</option>
+                        <option value="text">text</option>
+                        <option value="pager">pager</option>
+                      </select>
+                      <input type="text" size="30" value="" id="PHONE-0"/>
+                    </div>
+                  </div>
                 </div>
                 <div class="bwAppend" id="bwAppendPhone"></div>
                                 

Modified: trunk/clients/javascript/bwAddrbookClient/resources/addressbook.js
===================================================================
--- trunk/clients/javascript/bwAddrbookClient/resources/addressbook.js	2010-11-20 06:08:22 UTC (rev 203)
+++ trunk/clients/javascript/bwAddrbookClient/resources/addressbook.js	2010-11-20 14:53:19 UTC (rev 204)
@@ -405,7 +405,9 @@
     $(".emailFields").each(function(index) {
       vcData += "EMAIL;TYPE=" + $("#EMAILTYPE-" + index).val() + ":" + $("#EMAIL-" + index).val() + "\n";
     });
-    vcData += "TEL;TYPE=" + $("#PHONETYPE-01").val() + ":" + $("#PHONE-01").val() + "\n";  
+    $(".phoneFields").each(function(index) {
+      vcData += "TEL;TYPE=" + $("#PHONETYPE-" + index).val() + ":" + $("#PHONE-" + index).val() + "\n";
+    });
     vcData += "ADR;TYPE=" + $("#ADDRTYPE-01").val() + ":" + $("#POBOX-01").val() + ";" + $("#EXTADDR-01").val() + ";" + $("#STREET-01").val() + ";" + $("#CITY-01").val() + ";" +  $("#STATE-01").val() + ";" + $("#POSTAL-01").val() + ";" + $("#COUNTRY-01").val() + "\n";
     //vcData += "GEO:TYPE=" + $("#ADDRTYPE-01").val() + ":geo:" + $("#GEO-01").val() + "\n";;
     vcData += "URL:" + $("#WEBPAGE").val() + "\n";
@@ -438,7 +440,9 @@
     $(".emailFields").each(function(index) {
       vcData += "EMAIL;TYPE=" + $("#EMAILTYPE-" + index).val() + ":" + $("#EMAIL-" + index).val() + "\n";
     });
-    vcData += "TEL;TYPE=" + $("#PHONETYPE-01").val() + ":" + $("#PHONE-01").val() + "\n";  
+    $(".phoneFields").each(function(index) {
+      vcData += "TEL;TYPE=" + $("#PHONETYPE-" + index).val() + ":" + $("#PHONE-" + index).val() + "\n";
+    });
     vcData += "ADR;TYPE=" + $("#ADDRTYPE-01").val() + ":" + $("#POBOX-01").val() + ";" + $("#EXTADDR-01").val() + ";" + $("#STREET-01").val() + ";" + $("#CITY-01").val() + ";" +  $("#STATE-01").val() + ";" + $("#POSTAL-01").val() + ";" + $("#COUNTRY-01").val() + "\n";
     //vcData += "GEO:TYPE=" + $("#ADDRTYPE-01").val() + ":geo:" + $("#GEO-01").val() + "\n";;
     vcData += "URL:" + $("#WEBPAGE").val() + "\n";
@@ -555,19 +559,6 @@
         xhrobj.setRequestHeader("Accept", "text/vcard");
       },
       success: function(responseData) {
-        /*var vcardText = "";
-        // extract the vcards
-        $(responseData).find("response").each(function() {
-          var href = $(this).find("href").text();
-          $(this).find("propstat").each(function() {
-            $(this).find("prop").each(function() {
-              var etag = $(this).find("getetag").text();
-              $(this).find("[nodeName=C:address-data]").each(function() {
-                vcardText += $(this).text();
-              });
-            });
-          });
-        });*/
         showMessage(bwAbDispExportTitle,bwAbDispExported,true);
         /*var exportWindow = window.open();
         exportWindow.document.write(String(responseData));
@@ -942,18 +933,20 @@
     if(curCard.NICKNAME != undefined && curCard.NICKNAME[0].value != "") {
       details += '<tr><td class="field">' + bwAbDispDetailsNickname + '</td><td>' + curCard.NICKNAME[0].value.stripTags() + '</td></tr>';
     }
-    // telephone number(s)
-    if (curCard.TEL != undefined) {
-      for (var i=0; i < curCard.TEL.length; i++) {
-        details += '<tr class="newGrouping"><td class="field">' + bwAbDispDetailsPhone.stripTags() + '</td><td>' + curCard.TEL[i].values.number.stripTags() + '</td></tr>';
-      }
-    }
     // email address(es)
     if(curCard.EMAIL != undefined) { 
       for (var i=0; i < curCard.EMAIL.length; i++) {
         details += '<tr><td class="field">' + bwAbDispDetailsEmail + '</td><td><a href="mailto:' + $ESAPI.encoder().encodeForHTML(curCard.EMAIL[i].value) + '">' + $ESAPI.encoder().encodeForHTML(curCard.EMAIL[i].value) + '</a></td></tr>';
       }
     }
+    // telephone number(s)
+    if (curCard.TEL != undefined) {
+      for (var i=0; i < curCard.TEL.length; i++) {
+        details += '<tr><td class="field">' + bwAbDispDetailsPhone.stripTags() + '</td>';
+        details += '<td>' + curCard.TEL[i].values.number.stripTags();
+        details += '</td></tr>';
+      }
+    }
     // url
     if (curCard.URL != undefined && curCard.URL[0].value != "") {
       details += '<tr><td class="field">' + bwAbDispDetailsUrl + '</td><td><a href="' + curCard.URL[0].value.stripTags() + '">' + curCard.URL[0].value.stripTags() + '</a></td></tr>';
@@ -1445,19 +1438,21 @@
     // extract the number from the id and increment it
     var i = Number(lastEmailId.substring(lastEmailId.indexOf("-")+1))+1;
     // build the new fields with the new index (i)
-    var newEmailFields = '<div class="emailFields" id="emailFields-' + i + '">'
-    newEmailFields += '<label class="bwField"  for="EMAIL-' + i + '">';
-    newEmailFields += 'Email:</label><div class="bwValue"><select id="EMAILTYPE-' + i + '">';
-    newEmailFields += '<option value="work">work</option><option value="home">home</option>';
-    newEmailFields += '</select> <input type="text" size="40" value="" id="EMAIL-' + i + '"/></div></div>';
+    var newEmailFields = buildEmailFields(i);
     // append the result to the dom
     $("#bwContactEmailHolder").append(newEmailFields);
   });
   
   // add a new phone field to the add contact form
   $("#bwAppendPhone").click(function() {
-    showMessage(bwAbDispUnimplementedTitle,bwAbDispUnimplemented,true);
-    return false;
+    // get the id of the last phone group
+    var lastEmailId = $(".phoneFields:last").attr("id");
+    // extract the number from the id and increment it
+    var i = Number(lastEmailId.substring(lastEmailId.indexOf("-")+1))+1;
+    // build the new fields with the new index (i)
+    var newPhoneFields = buildPhoneFields(i);
+    // append the result to the dom
+    $("#bwContactPhoneHolder").append(newPhoneFields);
   });
   
 });
@@ -1505,10 +1500,7 @@
       if (curCard.EMAIL != undefined) {
         for (var i=0; i < curCard.EMAIL.length; i++) {
           if (i > 0) {
-            var newEmailFields = '<div class="emailFields" id="emailFields-' + i + '"><label class="bwField"  for="EMAIL-' + i + '">';
-            newEmailFields += 'Email:</label><div class="bwValue"><select id="EMAILTYPE-' + i + '">';
-            newEmailFields += '<option value="work">work</option><option value="home">home</option>';
-            newEmailFields += '</select> <input type="text" size="40" value="" id="EMAIL-' + i + '"/></div></div>';
+            var newEmailFields = buildEmailFields(i);
             $("#bwContactEmailHolder").append(newEmailFields);
           }
           if (curCard.EMAIL[i].params['parameter-value'] != undefined) {
@@ -1518,10 +1510,16 @@
         }
       }
       if (curCard.TEL != undefined) {
-        if (curCard.TEL[0].params['parameter-value'] != undefined) {
-          $("#PHONETYPE-01").val(curCard.TEL[0].params['parameter-value'].stripTags()); // this won't do
+        for (var i=0; i < curCard.TEL.length; i++) {
+          if (i > 0) {
+            var newPhoneFields = buildPhoneFields(i); 
+            $("#bwContactPhoneHolder").append(newPhoneFields);
+          }
+          if (curCard.TEL[i].params['parameter-value'] != undefined) {
+            $("#PHONETYPE-" + i).val(curCard.TEL[i].params['parameter-value'].stripTags()); // this won't do
+          }
+          $("#PHONE-" + i).val(curCard.TEL[i].values.number.stripTags());
         }
-        $("#PHONE-01").val(curCard.TEL[0].values.number.stripTags());
       }
       if (curCard.ADR != undefined) {
         if (curCard.ADR[0].params['parameter-value'] != undefined) {
@@ -1542,6 +1540,35 @@
   };
 };
 
+function buildEmailFields(i) {
+  var emailFields = '<div class="emailFields" id="emailFields-' + i + '"><label class="bwField"  for="EMAIL-' + i + '">';
+  emailFields += 'Email:</label><div class="bwValue"><select id="EMAILTYPE-' + i + '">';
+  emailFields += '<option value="work">' + bwAbDispFormWork + '</option><option value="home">' + bwAbDispFormHome + '</option>';
+  emailFields += '</select> <input type="text" size="40" value="" id="EMAIL-' + i + '"/></div></div>';
+  return emailFields;
+};
+
+function buildPhoneFields(i) {
+  var phoneFields = '<div class="phoneFields" id="phoneFields-' + i + '">';
+  phoneFields += '<label class="bwField" for="PHONE-' + i + '">Phone:</label>';
+  phoneFields += '<div class="bwValue">';
+  phoneFields += '  <select id="PHONETYPE-' + i + '">';
+  phoneFields += '    <option value="work">' + bwAbDispFormWork + '</option>';
+  phoneFields += '    <option value="home">' + bwAbDispFormHome + '</option>';
+  phoneFields += '  </select>';
+  phoneFields += '  <select id="TELTYPE-' + i + '">';
+  phoneFields += '    <option value="voice">' + bwAbDispFormVoice + '</option>';
+  phoneFields += '    <option value="cell">' + bwAbDispFormMobile + '</option>';
+  phoneFields += '    <option value="fax">' + bwAbDispFormFax + '</option>';
+  phoneFields += '    <option value="text">' + bwAbDispFormText + '</option>';
+  phoneFields += '    <option value="pager">' + bwAbDispFormPager + '</option>';
+  phoneFields += '  </select>';
+  phoneFields += '  <input type="text" size="30" value="" id="PHONE-' + i + '"/>';
+  phoneFields += '</div>';
+  phoneFields += '</div>';
+  return phoneFields;
+};
+
 // return the revision date
 function getRevDate() {
   //build the revision date
@@ -1604,7 +1631,19 @@
   $(formId + " textarea").each(function(index){
     $(this).val("");
   });
-}
+  if (formId == "#contactForm") {
+    $(formId + " .emailFields").each(function(index){
+      if (index > 0) {
+        $(this).delete(); 
+      }
+    });
+    $(formId + " .phoneFields").each(function(index){
+      if (index > 0) {
+        $(this).delete(); 
+      }
+    });
+  }
+};
 
 function showError(err) {
   var $dialog = $('<div></div>')



More information about the Bedework-commit mailing list