Merge remote branch 'origin/xorg/maint' into xorg/1.0.2/master
[platal.git] / templates / search / referent.tpl
index 0da1170..ab57b71 100644 (file)
@@ -42,48 +42,79 @@ var baseurl = platal_baseurl + "referent/";
 {literal}
 var Ajax2 = new AjaxEngine();
 
-function setSector(sector)
+/** Hides or display tree of all job terms */
+function toggleJobTermsTree()
 {
-    if (sector == '') {
-        document.getElementById('scat').style.display = 'none';
-        document.getElementById('country').style.display = 'none';
-        document.getElementById('keywords').style.display = 'none';
-        document.getElementById('search_referent').disabled = 'disabled';
-    } else {
-        Ajax.update_html('ssect_chg', baseurl + 'ssect/' + sector);
-        Ajax2.update_html('country_chg', baseurl + 'country/' + sector);
-        document.getElementById('scat').style.display = '';
-        document.getElementById('country').style.display = '';
-        document.getElementById('keywords').style.display = '';
-        document.getElementById('search_referent').disabled = '';
+  $('#mentoring_terms').closest('tr').toggle();
+  return false;
+}
+
+/** Function called by autocomplete when a term is selected */
+function selectJobTerm(li)
+{
+    if (li.extra[1] < 0) {
+        return;
     }
+    chooseJobTermInTree(null,li.extra[1],li.selectValue);
 }
 
-function setSSectors()
+/** Prepares display for a jobterm in select's dropdown
+ * @param row the returned row from ajax : text, nb, id
+ */
+function displayJobTerm(row)
 {
-    var sect  = document.getElementById('sect_field').value;
-    var ssect = document.getElementById('ssect_field').value;
-    Ajax2.update_html('country_chg', baseurl + 'country/' + sect + '/' + ssect);
+  if (row[1] < 0) {
+    return '<em>... précise ta recherche ... <\/em>';
+  }
+  return row[0]+' ('+row[1]+' camarade'+((row[1] > 1)?'s':'')+')';
 }
 
-function toggleJobTermsTree()
+/** Function called by job terms tree when an item is clicked */
+function chooseJobTermInTree(treeid, jtid, full_name)
 {
-  $('#mentoring_terms').closest('tr').toggle();
-  return false;
+  $('#jobtermText').val(full_name);
+  $('#mentoring_terms').closest('tr').hide();
+  updateJobTerm(jtid, $('#country_chg select').val());
+}
+
+/** Changes job term and proposes the different countries linked */
+function updateJobTerm(jtid, country)
+{
+  $('#jobterm').val(jtid);
+  $('#country_chg').closest('tr').show();
+  $('#keywords').show();
+  $('#country_chg').load(platal_baseurl + 'search/referent/countries/' + jtid, function(response, status, xhr) {
+    if (country) {
+      if (status != "error") {
+        $('#country_chg select').val(country);
+      }
+    }
+  });
+}
+
+/** Function called when validating form */
+function validateSearchForm(f)
+{
+  if (!f.jobterm.value) {
+    alert('Il faut choisir un mot clef avant de lancer la recherche.');
+    $('#jobtermText').val('').focus();
+    return false;
+  }
+  return true;
 }
 
 {/literal}
 //]]></script>
 
-<form action="{$smarty.server.REQUEST_URI}" method="get">
-  <table cellpadding="0" cellspacing="0" summary="Formulaire de recherche de referents" class="bicol">
+<form action="{$smarty.server.REQUEST_URI}" method="get" onsubmit="return validateSearchForm(this)">
+  <table cellpadding="0" cellspacing="0" summary="Formulaire de recherche de référents" class="bicol">
     <tr class="impair">
       <td class="titre">
         Mot-clef&nbsp;:
       </td>
       <td>
-        <input type="text" name="jobterm_text" id="term_search" size="32"/>
-        <input type="hidden" name="jobterm" />
+        <input type="text" name="jobtermText" id="jobtermText" size="32" value="{$smarty.request.jobtermText}"/>
+        <input type="hidden" name="jobterm" id="jobterm" value="{$smarty.request.jobterm}"/>
         <a id="jobTermsTreeToggle" href="#">{icon name=table title="Tous les mots-clefs"}</a>
       </td>
     </tr>
@@ -92,24 +123,44 @@ function toggleJobTermsTree()
         <div id="mentoring_terms"></div>
       </td>
     </tr>
+    <tr class="pair" style="display:none">
+      <td class="titre">
+        Pays bien connus du référent&nbsp;:
+      </td>
+      <td id="country_chg">
+      </td>
+    </tr>
+    <tr class="impair" style="display:none" id="keywords">
+      <td class="titre">
+        Expertise (recherche texte)&nbsp;:
+      </td>
+      <td>
+        <input type="text" value="{$smarty.request.expertise}" size="30" name="expertise" />
+      </td>
+    </tr>
   </table>
   <div class="center" style="margin-top: 1em;">
-    <input id="search_referent" type="submit" value="Chercher" name="Chercher" />
+    <input id="search_referent" type="submit" value="Chercher" />
   </div>
 </form>
 
 <script type="text/javascript">
 {literal}
 $(function() {
-  createJobTermsTree('#mentoring_terms', 'profile/ajax/tree/jobterms/mentors', 'mentor', 'searchForJobTerm');
-  $("#term_search").autocomplete(baseurl + "autocomplete",
+  createJobTermsTree('#mentoring_terms', 'profile/ajax/tree/jobterms/mentors', 'mentor', 'chooseJobTermInTree');
+  $("#jobtermText").autocomplete(baseurl + "autocomplete",
   {
     "selectOnly":1,
-    "matchSubset":0,
-    "width":$("#term_search").width()
+    "width":$("#jobtermText").width()*2,
+    "onItemSelect" : selectJobTerm,
+    "formatItem" : displayJobTerm,
+    "matchSubset" : false
   });
   $('#jobTermsTreeToggle').click(toggleJobTermsTree);
-});
 {/literal}
+  {if $smarty.request.jobterm}
+  updateJobTerm("{$smarty.request.jobterm}", "{$smarty.request.country}");
+  {/if}
+{rdelim});
 </script>
 {* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}