Adds the possibility to fill in multiple nationalities.
authorStéphane Jacob <jacou@melix.net>
Sun, 20 Jul 2008 23:13:34 +0000 (01:13 +0200)
committerStéphane Jacob <jacou@melix.net>
Tue, 22 Jul 2008 07:25:29 +0000 (09:25 +0200)
htdocs/javascript/profile.js
modules/profile/general.inc.php
plugins/function.select_nat.php
templates/profile/general.tpl
upgrade/fusionax-0.0.1/05_nationalities.sql [new file with mode: 0644]

index d625bfb..dafdeae 100644 (file)
@@ -110,6 +110,24 @@ function removeSearchName(i)
   }
 }
 
+function delNationality(i)
+{
+    $('#nationalite' + i).hide().find('select').val('');
+}
+
+function addNationality()
+{
+    var i = 0;
+    if ($('#nationalite2').find('select').val() == "") {
+        i = 2;
+    } else if ($('#nationalite3').find('select').val() == "") {
+        i = 3;
+    }
+    if ((i == 2) || (i == 3)) {
+        $('#nationalite' + i).show();
+    }
+}
+
 function addNetworking()
 {
     var i = 0;
index 8eb098e..aa0fe1c 100644 (file)
@@ -236,6 +236,8 @@ class ProfileGeneral extends ProfilePage
                                   = new ProfilePub();
         $this->settings['freetext']
                                   = $this->settings['nationalite']
+                                  = $this->settings['nationalite2']
+                                  = $this->settings['nationalite3']
                                   = $this->settings['nick']
                                   = $this->settings['yourself']
                                   = $this->settings['display_name']
@@ -255,13 +257,15 @@ class ProfileGeneral extends ProfilePage
                                   = new ProfileAppli();
         $this->watched= array('nom' => true, 'freetext' => true, 'tels' => true,
                               'networking' => true, 'appli1' => true, 'appli2' => true,
-                              'nationalite' => true, 'nick' => true);
+                              'nationalite' => true, 'nationalite2' => true,
+                              'nationalite3' => true, 'nick' => true);
     }
 
     protected function _fetchData()
     {
         // Checkout all data...
-        $res = XDB::query("SELECT  u.promo, u.promo_sortie, u.nom_usage, u.nationalite, u.naissance,
+        $res = XDB::query("SELECT  u.promo, u.promo_sortie, u.nom_usage, u.nationalite,
+                                   u.nationalite2, u.nationalite3, u.naissance,
                                    t.display_tel as mobile, t.pub as mobile_pub,
                                    d.email_directory as email_directory,
                                    q.profile_freetext as freetext, q.profile_freetext_pub as freetext_pub,
@@ -321,12 +325,26 @@ class ProfileGeneral extends ProfilePage
 
     protected function _saveData()
     {
-        if ($this->changed['nationalite'] || $this->changed['nom'] || $this->changed['prenom']
-            || $this->changed['naissance']) {
+        if ($this->changed['nationalite'] || $this->changed['nationalite2'] || $this->changed['nationalite3']
+            || $this->changed['nom'] || $this->changed['prenom'] || $this->changed['naissance']) {
+            if ($this->values['nationalite3'] == "") {
+                $this->values['nationalite3'] = NULL;
+            }
+            if ($this->values['nationalite2'] == "") {
+                $this->values['nationalite2'] = $this->values['nationalite3'];
+                $this->values['nationalite3'] = NULL;
+            }
+            if ($this->values['nationalite'] == "") {
+                $this->values['nationalite']  = $this->values['nationalite2'];
+                $this->values['nationalite2'] = $this->values['nationalite3'];
+                $this->values['nationalite3'] = NULL;
+            }
+
            XDB::execute("UPDATE  auth_user_md5
-                            SET  nationalite = {?}, nom={?}, prenom={?}, naissance={?}
+                            SET  nationalite = {?}, nationalite2 = {?}, nationalite3 = {?}, nom={?}, prenom={?}, naissance={?}
                           WHERE  user_id = {?}",
-                         $this->values['nationalite'], $this->values['nom'], $this->values['prenom'],
+                         $this->values['nationalite'], $this->values['nationalite2'], $this->values['nationalite3'],
+                         $this->values['nom'], $this->values['prenom'],
                          preg_replace('@(\d{2})/(\d{2})/(\d{4})@', '\3-\2-\1', $this->values['naissance']),
                          S::v('uid'));
         }
index bc0401c..60a9a8e 100644 (file)
@@ -20,7 +20,7 @@
  ***************************************************************************/
 
 
-function select_nat($valeur,$pad=false) {
+function select_nat($valeur, $pad=false) {
     $sql = "SELECT a2 AS id,IF(nat='',pays,nat) AS text FROM geoloc_pays ORDER BY text";
     $res = XDB::iterRow($sql);
     $sel = ' selected="selected"';
@@ -28,19 +28,22 @@ function select_nat($valeur,$pad=false) {
     // on ajoute une entree vide si $pad est vrai
     $html = "";
     if ($pad) {
-       $html.= '<option value="0"'.($valeur==0?$sel:"")."></option>\n";
+             $html .= sprintf("<option value=\"\"%s></option>\n", ($valeur ? $sel : ""));
     }
-    while (list($my_id,$my_text) = $res->next()) {
-       $html .= sprintf("<option value=\"%s\" %s>%s</option>\n",$my_id,($valeur==$my_id?$sel:""),$my_text);
+    while (list($my_id, $my_text) = $res->next()) {
+        $html .= sprintf("<option value=\"%s\"%s>%s</option>\n", $my_id, ($valeur==$my_id ? $sel : ""), $my_text);
     }
+
     return $html;
 }
 
 function smarty_function_select_nat($params, &$smarty) {
-    if(empty($params['pad']) || !($params['pad']))
-       $pad = false;
-    else
-       $pad = true;
+    if (empty($params['pad']) || !($params['pad'])) {
+             $pad = false;
+    } else {
+             $pad = true;
+    }
+
     return select_nat($params['valeur'], $pad);
 }
 
index b85bb41..f9ac3d6 100644 (file)
     </td>
     <td>
       <select name="nationalite">
-        {select_nat valeur=$nationalite}
+        {select_nat valeur=$nationalite pad=1}
       </select>
+      <a href="javascript:addNationality();">{icon name=add title="Ajouter une nationalité"}</a>
+    </td>
+  </tr>
+  <tr id="nationalite2" {if !$nationalite2}style="display: none"{/if}>
+    <td></td>
+    <td>
+      <select name="nationalite2">
+        {select_nat valeur=$nationalite2 pad=1}
+      </select>
+      <a href="javascript:delNationality('2');">{icon name=cross title="Supprimer cette nationalité"}</a>
+    </td>
+  </tr>
+  <tr id="nationalite3" {if !$nationalite3}style="display: none"{/if}>
+    <td></td>
+    <td>
+      <select name="nationalite3">
+        {select_nat valeur=$nationalite3 pad=1}
+      </select>
+      <a href="javascript:delNationality('3');">{icon name=cross title="Supprimer cette nationalité"}</a>
     </td>
   </tr>
   <tr class="pair">
diff --git a/upgrade/fusionax-0.0.1/05_nationalities.sql b/upgrade/fusionax-0.0.1/05_nationalities.sql
new file mode 100644 (file)
index 0000000..48fe5fd
--- /dev/null
@@ -0,0 +1,11 @@
+ALTER TABLE auth_user_md5 ADD COLUMN nationalite2 CHAR(2) DEFAULT NULL,
+                          ADD COLUMN nationalite3 CHAR(2) DEFAULT NULL,
+                          ADD KEY nationalite2 (nationalite2),
+                          ADD KEY nationalite3 (nationalite3),
+                          MODIFY nationalite CHAR(2) DEFAULT NULL;
+
+UPDATE auth_user_md5 SET nationalite=NULL WHERE nationalite="00" OR nationalite='';
+
+DELETE FROM geoloc_pays WHERE a2="00";
+
+# vim:set syntax=mysql: