Remove call-time pass-by-reference code which produces fatal error with PHP>=5.4
[platal.git] / templates / search / referent.tpl
index 0da1170..2af1412 100644 (file)
@@ -1,6 +1,6 @@
 {**************************************************************************}
 {*                                                                        *}
-{*  Copyright (C) 2003-2010 Polytechnique.org                             *}
+{*  Copyright (C) 2003-2013 Polytechnique.org                             *}
 {*  http://opensource.polytechnique.org/                                  *}
 {*                                                                        *}
 {*  This program is free software; you can redistribute it and/or modify  *}
 Actuellement, {$mentors_number} mentors et référents se sont déclarés sur {#globals.core.sitename#}.
 </p>
 
-{javascript name=ajax}
 {javascript name=jquery.jstree}
 {javascript name=jobtermstree}
 <script type="text/javascript">//<![CDATA[
 
-var baseurl = platal_baseurl + "referent/";
+var baseurl = $.plURL("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(id, value)
+{
+    if (value < 0) {
+        return;
     }
+    chooseJobTermInTree(null, id, value);
 }
 
-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($.plURL('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 +121,47 @@ 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",
-  {
-    "selectOnly":1,
-    "matchSubset":0,
-    "width":$("#term_search").width()
+  createJobTermsTree('#mentoring_terms', 'profile/ajax/tree/jobterms/mentors', 'mentor', 'chooseJobTermInTree');
+  $('#jobtermText').autocomplete({
+      source: $.plURL(baseurl + 'autocomplete'),
+      select: function(event, ui) {
+          selectJobTerm(ui.item.id, ui.item.value);
+      },
+      change: function(event, ui) {
+          if (ui.item != null && ui.item.field != null) {
+              $(this).val(ui.item.field);
+          }
+      }
   });
   $('#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: *}