Group animator notifiction edition.
[platal.git] / templates / search / adv.form.tpl
index a71dd30..0a425a1 100644 (file)
@@ -1,6 +1,6 @@
 {**************************************************************************}
 {*                                                                        *}
-{*  Copyright (C) 2003-2010 Polytechnique.org                             *}
+{*  Copyright (C) 2003-2011 Polytechnique.org                             *}
 {*  http://opensource.polytechnique.org/                                  *}
 {*                                                                        *}
 {*  This program is free software; you can redistribute it and/or modify  *}
 
 <h1>Recherche dans l'annuaire</h1>
 
-{javascript name=jquery.form}
+{if hasPerm('edit_directory,admin') && t($suggestAddresses)}
+<p class="center"><strong>Voulez-vous télécharger le <a href="{$globals->baseurl}/search/adv/addresses{$plset_args}">tableau des adresses postales</a> pour la recette précédente&nbsp;?</strong></p>
+{/if}
 
-<script type="text/javascript">// <!--
-  var baseurl = platal_baseurl + "search/";
-  {literal}
-  String.prototype.htmlEntities = function () {
-    return this.replace(/&/g,'&amp;').replace(new RegExp('<','g'),'&lt;').replace(/>/g,'&gt;');
-  };
-  // display an autocomplete row : blabla (nb of found matches)
-  function make_format_autocomplete(block) {
-    return function(row) {
-        regexp = new RegExp('(' + RegExp.escape(block.value) + ')', 'i');
+<script type="text/javascript">//<![CDATA[
+  {literal}$(function() { load_advanced_search({{/literal}{foreach from=$smarty.request key=key item=item}"{$key}":"{$item}",{/foreach}{literal}}); });{/literal}
+//]]></script>
 
-        name = row[0].htmlEntities().replace(regexp, '<strong>$1<\/strong>');
-
-        if (row[1] === "-1") {
-          return '&hellip;';
-        }
-
-        if (row[1] === "-2") {
-          return '<em>aucun camarade trouvé pour '+row[0].htmlEntities()+'<\/em>';
-        }
-
-        camarades = (row[1] > 1) ? "camarades" : "camarade";
-
-        return name + '<em>&nbsp;&nbsp;-&nbsp;&nbsp;' + row[1].htmlEntities() + '&nbsp;' + camarades + '<\/em>';
-      };
-  }
-
-  // when changing country, open up region choice
-  function changeCountry(a2) {
-    $(".autocompleteTarget[name='country']").attr('value',a2);
-
-    if (a2) {
-      $(".autocomplete[name='countryTxt']").addClass('hidden_valid');
-
-      $("[name='region']").parent().load(baseurl + 'list/region/', { country:a2 }, function() {
-          if ($("select[name='region']").children("option").size() > 1) {
-            $("select[name='region']").attr('value', '{/literal}{$smarty.request.region}{literal}');
-
-            $("tr#region_ln").show();
-          } else {
-            $("select[name='region']").attr('value', '');
-
-            $("tr#region_ln").hide();
-          }
-        });
-    } else {
-      $(".autocomplete[name='countryTxt']").removeClass('hidden_valid');
-
-      $("select[name='region']").attr('value', '');
-
-      $("tr#region_ln").hide();
-    }
-  }
-
-  // when changing school, open diploma choice
-  function changeSchool(schoolId) {
-    $(".autocompleteTarget[name='school']").attr('value',schoolId);
-
-    if (schoolId) {
-      $(".autocomplete[name='schoolTxt']").addClass('hidden_valid');
-    } else {
-      $(".autocomplete[name='schoolTxt']").removeClass('hidden_valid');
-    }
-
-    $("[name='diploma']").parent().load(baseurl + 'list/diploma/', { school:schoolId }, function() {
-        $("select[name='diploma']").attr('value', '{/literal}{$smarty.request.diploma}{literal}');
-      });
-  }
-
-  // when choosing a job term in tree, hide tree and set job term field
-  function searchForJobTerm(treeid, jtid, full_name) {
-    $(".term_tree").remove();
-    $("input[name='jobtermTxt']").val(full_name).addClass("hidden_valid").show();
-    $("input[name='jobterm']").val(jtid);
-  }
-
-  function cancel_autocomplete(field, realfield) {
-    $(".autocomplete[name='"+field+"']").removeClass('hidden_valid').val('').focus();
-    if (typeof(realfield) != "undefined") {
-      $(".autocompleteTarget[name='"+realfield+"']").val('');
-    }
-    return;
-  }
-
-  // when choosing autocomplete from list, must validate
-  function select_autocomplete(name) {
-      nameRealField = name.replace(/Txt$/, '');
-
-      // nothing to do if field is not a text field for a list
-      if (nameRealField == name)
-        return null;
-
-      // if changing country, might want to open region choice
-      if (nameRealField == 'country')
-        return function(i) {
-            if (i.extra[0] < 0) {
-              cancel_autocomplete('countryTxt', 'country');
-              i.extra[1] = '';
-            }
-            changeCountry(i.extra[1]);
-          }
-
-      if (nameRealField == 'school')
-        return function(i) {
-            if (i.extra[0] < 0) {
-              cancel_autocomplete('schoolTxt', 'school');
-              i.extra[1] = '';
-            }
-            changeSchool(i.extra[1]);
-          }
-
-      // change field in list and display text field as valid
-      return function(i) {
-        nameRealField = this.field.replace(/Txt$/, '');
-
-        if (i.extra[0] < 0) {
-          cancel_autocomplete(this.field, nameRealField);
-          return;
-        }
-
-        $(".autocompleteTarget[name='"+nameRealField+"']").attr('value',i.extra[1]);
-
-        $(".autocomplete[name='"+this.field+"']").addClass('hidden_valid');
-      }
-    }
-
-  $(document).ready(function() {
-      $(".autocompleteTarget").hide();
-      $(".autocomplete").show().each(function() {
-        targeted = $("../.autocompleteTarget",this)[0];
-
-        if (targeted && targeted.value) {
-          me = $(this);
-
-          $.get(baseurl + 'list/'+ targeted.name +'/'+targeted.value, {},function(textValue) {
-            me.attr('value', textValue);
-            me.addClass('hidden_valid');
-          });
-        }
-
-        $(this).autocomplete(baseurl + "autocomplete/"+this.name,{
-          selectOnly:1,
-          formatItem:make_format_autocomplete(this),
-          field:this.name,
-          onItemSelect:select_autocomplete(this.name),
-          matchSubset:0,
-          width:$(this).width()});
-        });
-
-      $(".autocomplete").change(function() { $(this).removeClass('hidden_valid'); });
-
-      $(".autocomplete[name='countryTxt']").change(function() { changeCountry(''); });
-
-      changeCountry({/literal}'{$smarty.request.country}'{literal});
-
-      $(".autocomplete[name='schoolTxt']").change(function() { changeSchool(''); });
-
-      changeSchool({/literal}'{$smarty.request.school}'{literal});
-
-      $(".autocompleteToSelect").each(function() {
-          var fieldName = $(this).attr('href');
-
-          $(this).attr('href', baseurl + 'list/'+fieldName).click(function() {
-              var oldval = $("input.autocompleteTarget[name='"+fieldName+"']")[0].value;
-
-              $(".autocompleteTarget[name='"+fieldName+"']").parent().load(baseurl + 'list/'+fieldName,{},
-                function(selectBox) {
-                  $(".autocompleteTarget[name='"+fieldName+"']").remove();
-                  $(".autocomplete[name='"+fieldName+"Txt']").remove();
-                  $("select[name='"+fieldName+"']").attr('value', oldval);
-                });
-
-              return false;
-            });
-        }).parent().find('.autocomplete').change(function() {
-          // If we change the value in the type="text" field, then the value in the 'integer id' field must not be used,
-          // to ensure that, we unset it
-          $(this).parent().find('.autocompleteTarget').val('');
-        });
-    });
-/** Regexps to wipe out from search queries */
-var default_form_values = [ /&woman=0(&|$)/, /&subscriber=0(&|$)/, /&alive=0(&|$)/, /&egal[12]=[^&]*&promo[12]=(&|$)/g, /&[^&=]+=(&|$)/g ];
-/** Uses javascript to clean form from all empty fields */
-function cleanForm(f) {
-  var query = $(f).formSerialize();
-  var old_query;
-  for (var i in default_form_values) {
-    var reg = default_form_values[i];
-    if (typeof(reg) != "undefined") {
-      do {
-        old_query = query;
-        query = query.replace(reg, '$1');
-      } while (old_query != query);
-    }
-  }
-  query = query.replace(/^&*(.*)&*$/, '$1');
-  if (query == "rechercher=Chercher") {
-    alert("Aucun critère n'a été spécifié");
-    return false;
-  }
-  document.location = f.action + '?' + query;
-  return false;
-}
--->
-{/literal}</script>
 <p class="center">[<a href="search">Revenir à la recherche simple</a>]</p>
-<form id="recherche" action="search/adv" method="get" onsubmit="return cleanForm(this)">
+<form id="recherche" action="search/adv" method="get" onsubmit="return cleanForm(this, 'search/adv')">
   <table class="bicol" cellpadding="3" summary="Recherche">
     <tr>
       <th colspan="2">
@@ -243,24 +44,18 @@ function cleanForm(f) {
         <input type="hidden" name="rechercher" value="Chercher"/>
         <input type="submit" style="display:none"/>
         <input type="text" name="name" size="32" value="{$smarty.request.name}" />
+        <select name="name_type">
+          <option value="" {if $smarty.request.name_type eq ''}selected="selected"{/if}>&nbsp;-&nbsp;</option>
+          <option value="lastname" {if $smarty.request.name_type eq 'lastname'}selected="selected"{/if}>nom</option>
+          <option value="firstname" {if $smarty.request.name_type eq 'firstname'}selected="selected"{/if}>prénom</option>
+          <option value="nickname" {if $smarty.request.name_type eq 'nickname'}selected="selected"{/if}>surnom</option>
+        </select>
       </td>
     </tr>
     <tr>
       <td>Promotion</td>
       <td>
-        <select name="egal1">
-          <option value="=" {if $smarty.request.egal1 eq "="}selected="selected"{/if}>&nbsp;=&nbsp;</option>
-          <option value="&gt;=" {if $smarty.request.egal1 eq "&gt;="}selected="selected"{/if}>&nbsp;&gt;=&nbsp;</option>
-          <option value="&lt;=" {if $smarty.request.egal1 eq "&lt;="}selected="selected"{/if}>&nbsp;&lt;=&nbsp;</option>
-        </select>
-        <input type="text" name="promo1" size="4" maxlength="4" value="{$smarty.request.promo1}" />
-        &nbsp;et&nbsp;
-        <select name="egal2">
-          <option value="=" {if $smarty.request.egal2 eq "="}selected="selected"{/if}>&nbsp;=&nbsp;</option>
-          <option value="&gt;=" {if $smarty.request.egal2 eq "&gt;="}selected="selected"{/if}>&nbsp;&gt;=&nbsp;</option>
-          <option value="&lt;=" {if $smarty.request.egal2 neq "&gt;=" && $smarty.request.egal2 neq "="}selected="selected"{/if}>&nbsp;&lt;=&nbsp;</option>
-        </select>
-        <input type="text" name="promo2" size="4" maxlength="4" value="{$smarty.request.promo2}" />
+        {include file="include/select_promo.tpl" promo_data=$smarty.request egal1="egal1" egal2="egal2" promo1="promo1" promo2="promo2" edu_type="edu_type"}
       </td>
     </tr>
     <tr>
@@ -300,6 +95,27 @@ function cleanForm(f) {
       </td>
     </tr>
     <tr>
+      <td>A une redirection active</td>
+      <td>
+        <table>
+          <tr>
+            <td style="width:100px">
+              <input type="radio" name="has_email_redirect" value="0" {if !$smarty.request.has_email_redirect}checked="checked"{/if}
+                id="has_email_redirect0" /><label for="has_email_redirect0">indifférent</label>
+            </td>
+            <td style="width:100px">
+              <input type="radio" name="has_email_redirect" value="1" {if $smarty.request.has_email_redirect eq 1}checked="checked"{/if}
+                id="has_email_redirect1" /><label for="has_email_redirect1">oui</label>
+            </td>
+            <td style="width:100px">
+              <input type="radio" name="has_email_redirect" value="2" {if $smarty.request.has_email_redirect eq 2}checked="checked"{/if}
+                id="has_email_redirect2" /><label for="has_email_redirect2">non</label>
+            </td>
+          </tr>
+        </table>
+      </td>
+    </tr>
+    <tr>
       <td>En vie</td>
       <td>
         <table>
@@ -327,29 +143,25 @@ function cleanForm(f) {
       <th colspan="2">Géographie</th>
     </tr>
     <tr>
-      <td>Ville ou code postal</td>
-      <td><input type="text" class="autocomplete" name="city" size="32" value="{$smarty.request.city}" /></td>
-    </tr>
-    <tr>
-      <td>Pays</td>
-      <td>
-        <input name="countryTxt" type="text" class="autocomplete" style="display:none" size="32"
-               value="{$smarty.request.countryTxt}"/>
-        <input name="country" class="autocompleteTarget" type="hidden" value="{$smarty.request.country}"/>
-        <a href="country" class="autocompleteToSelect">{icon name="table" title="Tous les pays"}</a>
-      </td>
+      <td colspan="2" class="center"><small>Seuls les lieux où résident des camarades sont proposés ci-dessous.</small></td>
     </tr>
-    <tr id="region_ln">
-      <td>Région ou département</td>
-      <td>
-        <input name="region" type="hidden" size="32" value="{$smarty.request.region}"/>
-      </td>
+    {include file="search/adv.form.autocomplete_select.tpl" description="Pays" name="country"
+      value_text=$smarty.request.country_text value=$smarty.request.country title="Tous les pays"}
+    {include file="search/adv.form.address_component.tpl" description="Région, province, état…" name="administrative_area_level_1"
+      value=$smarty.request.administrative_area_level_1}
+    {include file="search/adv.form.address_component.tpl" description="Département, comté…" name="administrative_area_level_2"
+      value=$smarty.request.administrative_area_level_2}
+    <tr id="locality_text">
+      <td>Ville</td>
+      <td><input type="text" class="autocomplete" name="locality_text" size="32" value="{$smarty.request.locality_text}" /></td>
     </tr>
+    {include file="search/adv.form.address_component.tpl" description="Ville" name="locality" value=$smarty.request.locality}
+    {include file="search/adv.form.address_component.tpl" description="Code postal" name="postal_code" value=$smarty.request.postal_code}
     <tr>
       <td colspan="2">
         <label for="only_current">
           <input name="only_current" id="only_current" type="checkbox"{if $smarty.request.only_current} checked="checked"{/if}/>
-          Chercher uniquement les adresses où les camarades sont actuellement.
+          Chercher uniquement les adresses actuelles.
         </label>
       </td>
     </tr>
@@ -362,21 +174,16 @@ function cleanForm(f) {
     </tr>
     <tr>
       <td>Description</td>
-      <td><input type="text" class="autocomplete" name="description" size="32" value="{$smarty.request.description}" /></td>
-    </tr>
-    <tr>
-      <td>Mots-clefs</td>
-      <td>
-        <input name="jobtermTxt" type="text" class="autocomplete{if $smarty.request.jobterm} hidden_valid{/if}" style="display:none" size="32"
-               value="{$smarty.request.jobtermTxt}"/>
-        <input name="jobterm" class="autocompleteTarget" type="hidden" value="{$smarty.request.jobterm}"/>
-        <a href="jobterm" class="autocompleteToSelect">{icon name="table" title="Tous les mots-clefs"}</a>
-      </td>
+      <td><input type="text" class="autocomplete" name="jobdescription" size="32" value="{$smarty.request.jobdescription}" /></td>
     </tr>
+    {include file="search/adv.form.autocomplete_select.tpl" description="Mots-clefs" name="jobterm"
+      value_text=$smarty.request.jobterm_text value=$smarty.request.jobterm title="Tous les mots-clefs"}
+    {if hasPerm('directory_private')}
     <tr>
       <td>CV contient</td>
       <td><input type="text" name="cv" size="32" value="{$smarty.request.cv}" /></td>
     </tr>
+    {/if}
     <tr>
       <td colspan="2">
         <input type='checkbox' name='only_referent' {if $smarty.request.only_referent}checked='checked'{/if} id="only_referent"/>
@@ -386,55 +193,54 @@ function cleanForm(f) {
     <tr>
       <th colspan="2">Divers</th>
     </tr>
+    {include file="search/adv.form.autocomplete_select.tpl" description="Nationalité" name="nationalite"
+      value_text=$smarty.request.nationalite_text value=$smarty.request.nationalite title="Toutes les nationalités"}
+    {if hasPerm('directory_private')}
+    {include file="search/adv.form.autocomplete_select.tpl" description="Binet" name="binet"
+      value_text=$smarty.request.binet_text value=$smarty.request.binet title="Tous les binets"}
+    {/if}
+    {include file="search/adv.form.autocomplete_select.tpl" description="Groupe X" name="groupex"
+      value_text=$smarty.request.groupex_text value=$smarty.request.groupex title="Tous les groupes X"}
+    {if hasPerm('directory_private')}
+    {include file="search/adv.form.autocomplete_select.tpl" description="Section" name="section"
+      value_text=$smarty.request.section_text value=$smarty.request.section title="Toutes les sections"}
+    {/if}
+    {include file="search/adv.form.autocomplete_select.tpl" description="Formation" name="school"
+      value_text=$smarty.request.school_text value=$smarty.request.school title="Toutes les formations"}
     <tr>
-      <td>Nationalité</td>
-      <td>
-        <input name="nationaliteTxt" type="text" class="autocomplete" style="display:none" size="32"
-               value="{$smarty.request.nationaliteTxt}"/>
-        <input name="nationalite" class="autocompleteTarget" type="hidden" value="{$smarty.request.nationalite}"/>
-        <a href="nationalite" class="autocompleteToSelect">{icon name="table" title="Toutes les nationalités"}</a>
-      </td>
-    </tr>
-    <tr>
-      <td>Binet</td>
-      <td>
-        <input name="binetTxt" type="text" class="autocomplete" style="display:none" size="32"
-               value="{$smarty.request.binetTxt}"/>
-        <input name="binet" class="autocompleteTarget" type="hidden" value="{$smarty.request.binet}"/>
-        <a href="binet" class="autocompleteToSelect">{icon name="table" title="Tous les binets"}</a>
-      </td>
-    </tr>
-    <tr>
-      <td>Groupe X</td>
+      <td>Diplôme</td>
       <td>
-        <input name="groupexTxt" type="text" class="autocomplete" style="display:none" size="32"
-               value="{$smarty.request.groupexTxt}"/>
-        <input name="groupex" class="autocompleteTarget" type="hidden" value="{$smarty.request.groupex}"/>
-        <a href="groupex" class="autocompleteToSelect">{icon name="table" title="Tous les groupes X"}</a>
+        <input name="diploma" size="32" value="{$smarty.request.diploma}"/>
       </td>
     </tr>
     <tr>
-      <td>Section</td>
+      <td>Corps d'origine</td>
       <td>
-        <input name="sectionTxt" type="text" class="autocomplete" style="display:none" size="32"
-               value="{$smarty.request.sectionTxt}"/>
-        <input name="section" class="autocompleteTarget" type="hidden" value="{$smarty.request.section}"/>
-        <a href="section" class="autocompleteToSelect">{icon name="table" title="Toutes les sections"}</a>
+        <select name="origin_corps">
+        {foreach from=$origin_corps_list key=id item=corps}
+          <option value="{$id}" {if $smarty.request.origin_corps eq $id}selected="selected"{/if}>{$corps}</option>
+        {/foreach}
+        </select>
       </td>
     </tr>
     <tr>
-      <td>Formation</td>
+      <td>Corps actuel</td>
       <td>
-        <input name="schoolTxt" type="text" class="autocomplete" style="display:none" size="32"
-               value="{$smarty.request.schoolTxt}"/>
-        <input name="school" class="autocompleteTarget" type="hidden" value="{$smarty.request.school}"/>
-        <a href="school" class="autocompleteToSelect">{icon name="table" title="Toutes les formations"}</a>
+        <select name="current_corps">
+        {foreach from=$current_corps_list key=id item=corps}
+          <option value="{$id}" {if $smarty.request.current_corps eq $id}selected="selected"{/if}>{$corps}</option>
+        {/foreach}
+        </select>
       </td>
     </tr>
     <tr>
-      <td>Diplôme</td>
+      <td>Grade</td>
       <td>
-        <input name="diploma" size="32" value="{$smarty.request.diploma}"/>
+        <select name="corps_rank">
+        {foreach from=$corps_rank_list key=id item=corps}
+          <option value="{$id}" {if $smarty.request.corps_rank eq $id}selected="selected"{/if}>{$corps}</option>
+        {/foreach}
+        </select>
       </td>
     </tr>
     <tr>
@@ -456,15 +262,27 @@ function cleanForm(f) {
               <input type="text" name="networking_address" size="32" value="{$smarty.request.networking_address}" />
             </td>
             <td>
-              <input type="text" name="networking_typeTxt" class="autocomplete" size="10" value="{$smarty.request.networking_typeTxt}" />
-              <input name="networking_type" class="autocompleteTarget" type="hidden" value="{$smarty.request.networking_type}"/>
-              <a href="networking_type" class="autocompleteToSelect">{icon name="table" title="Tous les types d'adresse"}</a>
+              <select name="networking_type">
+              {foreach from=$networking_types key=id item=network}
+                <option value="{$id}" {if $smarty.request.networking_type eq $id}selected="selected"{/if}>{$network}</option>
+              {/foreach}
+              </select>
             </td>
           </tr>
         </table>
       </td>
     </tr>
-        {if $smarty.session.auth ge AUTH_COOKIE}
+    {if hasPerm('admin,edit_directory')}
+    <tr>
+      <td>Matricule AX</td>
+      <td>
+        <textarea name="schoolid_ax" rows="10" cols="12">{$smarty.request.schoolid_ax}</textarea>
+        <br />
+        <i>Entrer une liste de matricules AX (un par ligne)</i>
+      </td>
+    </tr>
+    {/if}
+    {if $smarty.session.auth ge AUTH_COOKIE}
     <tr>
       <td colspan="2">
           <input type='checkbox' name='order' value='date_mod' {if $smarty.request.order eq "date_mod"}checked='checked'{/if} id="order"/>
@@ -477,7 +295,14 @@ function cleanForm(f) {
            <label for="exact">Faire une recherche exacte.</label>
       </td>
     </tr>
-        {/if}
+    {/if}
+    {if hasPerm('admin,edit_directory')}
+    <tr>
+      <td colspan="2">
+           <label><input type="checkbox" id="addresses_dump" onclick="addressesDump();" />Tableau des adresses postales.</label>
+      </td>
+    </tr>
+    {/if}
     <tr><td colspan="2"></td></tr>
     <tr>
       <td colspan="2" style="text-align: center">
@@ -486,8 +311,5 @@ function cleanForm(f) {
     </tr>
   </table>
 </form>
-<p>
-  <small><strong>N.B.&nbsp;:</strong> le caractère joker * peut remplacer une ou plusieurs lettres dans les recherches.</small>
-</p>
 
 {* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}