'advanced_search.php' => $this->make_hook('redir_advanced', AUTH_PUBLIC),
'search/autocomplete' => $this->make_hook('autocomplete', AUTH_COOKIE, 'directory_ax', NO_AUTH),
'search/list' => $this->make_hook('list', AUTH_COOKIE, 'directory_ax', NO_AUTH),
+ 'search/list/count' => $this->make_hook('list_count', AUTH_COOKIE, 'directory_ax', NO_AUTH),
'jobs' => $this->make_hook('referent', AUTH_COOKIE),
'emploi' => $this->make_hook('referent', AUTH_COOKIE),
'referent/search' => $this->make_hook('referent', AUTH_COOKIE),
'groupexTxt' => DirEnum::GROUPESX,
'sectionTxt' => DirEnum::SECTIONS,
'networking_typeTxt' => DirEnum::NETWORKS,
- 'city' => DirEnum::LOCALITIES,
+ 'localityTxt' => DirEnum::LOCALITIES,
'countryTxt' => DirEnum::COUNTRIES,
'entreprise' => DirEnum::COMPANIES,
'jobtermTxt' => DirEnum::JOBTERMS,
break;
case 'country':
$ids = DirEnum::getOptionsIter(DirEnum::COUNTRIES);
- $page->assign('onchange', 'changeCountry(this.value)');
+ $page->assign('onchange', 'changeAddressComponents(\'' . $type . '\', this.value)');
+ break;
+ case 'administrative_area_level_1':
+ case 'administrative_area_level_2':
+ case 'administrative_area_level_3':
+ case 'locality':
+ $page->assign('onchange', 'changeAddressComponents(\'' . $type . '\', this.value)');
+ case 'sublocality':
+ $ids = XDB::iterator("SELECT pace1.id, pace1.long_name AS field
+ FROM profile_addresses_components_enum AS pace1
+ INNER JOIN profile_addresses_components AS pac1 ON (pac1.component_id = pace1.id)
+ INNER JOIN profile_addresses_components AS pac2 ON (pac1.pid = pac2.pid AND pac1.jobid = pac2.jobid AND pac1.id = pac2.id
+ AND pac1.groupid = pac2.groupid AND pac1.type = pac2.type)
+ INNER JOIN profile_addresses_components_enum AS pace2 ON (pac2.component_id = pace2.id AND FIND_IN_SET({?}, pace2.types))
+ WHERE pace2.id = {?} AND FIND_IN_SET({?}, pace1.types)
+ GROUP BY pace1.long_name",
+ Env::v('previous'), Env::v('value'), $type);
break;
case 'diploma':
if (Env::has('school') && Env::i('school') != 0) {
case 'nationalite':
$ids = DirEnum::getOptionsIter(DirEnum::NATIONALITIES);
break;
- case 'administrativearea':
- if (Env::has('country')) {
- $ids = DirEnum::getOptionsIter(DirEnum::ADMINAREAS, Env::v('country'));
- } else {
- $ids = DirEnum::getOptionsIter(DirEnum::ADMINAREAS);
- }
- $page->assign('onchange', 'changeAdministrativeArea(this.value)');
- break;
- case 'subadministrativearea':
- if (Env::has('administrativearea')) {
- $ids = DirEnum::getOptionsIter(DirEnum::SUBADMINAREAS, Env::v('administrativearea'));
- } else {
- $ids = DirEnum::getOptionsIter(DirEnum::SUBADMINAREAS);
- }
- break;
case 'school':
$ids = DirEnum::getOptionsIter(DirEnum::EDUSCHOOLS);
$page->assign('onchange', 'changeSchool(this.value)');
};
}
- // when changing country, open up administrativearea choice
- function changeCountry(a2) {
- $(".autocompleteTarget[name='country']").attr('value',a2);
+ function setAddress(i, j, values)
+ {
+ var types = new Array('country', 'administrative_area_level_1', 'administrative_area_level_2', 'administrative_area_level_3', 'locality', 'sublocality');
+ var prev_type = types[i];
+ var next_type = types[j];
+ var next_list = next_type + '_list';
+
+ if (j == 3) {
+ $('tr#locality_text').hide()
+ $("select[name='localityTxt']").attr('value', '');
+ }
+
+ $("[name='" + next_type + "']").parent().load(baseurl + 'list/' + next_type, { previous:prev_type, value:values[i] }, function() {
+ if ($("select[name='" + next_type + "']").children("option").size() > 1) {
+ $("tr#" + next_list).show();
+ $("select[name='" + next_type + "']").attr('value', values[j]);
+ if (j < 6) {
+ setAddress(j, j + 1, values);
+ }
+ } else {
+ $("tr#" + next_list).hide();
+ $("select[name='" + next_type + "']").attr('value', '');
+ if (j < 6) {
+ setAddress(i, j + 1, values);
+ }
+ }
+ });
- if (a2) {
- $(".autocomplete[name='countryTxt']").addClass('hidden_valid');
+ }
- $("[name='administrativearea']").parent().load(baseurl + 'list/administrativearea/', { country:a2 }, function() {
- if ($("select[name='administrativearea']").children("option").size() > 1) {
- $("select[name='administrativearea']").attr('value', '{/literal}{$smarty.request.administrativearea}{literal}');
+ function displayNextAddressComponent(i, j, value)
+ {
+ var types = new Array('country', 'administrative_area_level_1', 'administrative_area_level_2', 'administrative_area_level_3', 'locality', 'sublocality');
+ var prev_type = types[i];
+ var next_type = types[j];
+ var next_list = next_type + '_list';
- $("tr#administrativearea_list").show();
- } else {
- $("select[name='administrativearea']").attr('value', '');
+ if (j == 3) {
+ $('tr#locality_text').hide()
+ $("select[name='localityTxt']").attr('value', '');
+ }
- $("tr#administrativearea_list").hide();
- }
- });
- } else {
- $(".autocomplete[name='countryTxt']").removeClass('hidden_valid');
+ $("[name='" + next_type + "']").parent().load(baseurl + 'list/' + next_type, { previous:prev_type, value:value }, function() {
+ $("select[name='" + next_type + "']").attr('value', '');
+ if ($("select[name='" + next_type + "']").children("option").size() > 1) {
+ $("tr#" + next_list).show();
+ } else {
+ $("tr#" + next_list).hide();
+ if (j < 6) {
+ displayNextAddressComponent(i, j + 1, value);
+ }
+ }
+ });
+ }
- $("select[name='administrativearea']").attr('value', '');
- $("select[name='subadministrativearea']").attr('value', '');
+ function changeAddressComponents(type, value)
+ {
+ var types = new Array('country', 'administrative_area_level_1', 'administrative_area_level_2', 'administrative_area_level_3', 'locality', 'sublocality');
+ var i = 0, j = 0;
- $("tr#administrativearea_list").hide();
- $("tr#subadministrativearea_list").hide();
+ while (types[i] != type && i < 6) {
+ ++i;
}
- }
- // when changing administrativearea, open up subadministrativearea choice
- function changeAdministrativeArea(id) {
- if (id) {
- $("[name='subadministrativearea']").parent().load(baseurl + 'list/subadministrativearea/', { administrativearea:id }, function() {
- if ($("select[name='subadministrativearea']").children("option").size() > 1) {
- $("select[name='subadministrativearea']").attr('value', '{/literal}{$smarty.request.subadministrativearea}{literal}');
- $("tr#subadministrativearea_list").show();
- } else {
- $("select[name='subadministrativearea']").attr('value', '');
- $("tr#subadministrativearea_list").hide();
- }
- });
- } else {
- $("select[name='subadministrativearea']").attr('value', '');
- $("tr#subadministrativearea_list").hide();
+ j = i + 1;
+ while (j < 6) {
+ $("select[name='" + types[j] + "']").attr('value', '');
+ $("tr#" + types[j] + "_list").hide();
+ ++j;
+ }
+
+ if (value != '' && i < 5) {
+ $("select[name='" + type + "']").attr('value', value);
+ displayNextAddressComponent(i, i + 1, value);
}
}
if (nameRealField == name)
return null;
- // if changing country, might want to open administrativearea choice
- if (nameRealField == 'country')
+ // When changing country or locality, open next address component.
+ if (nameRealField == 'country' || nameRealField == 'locality') {
return function(i) {
+ nameRealField = name.replace(/Txt$/, '');
if (i.extra[0] < 0) {
- cancel_autocomplete('countryTxt', 'country');
+ cancel_autocomplete(name, nameRealField);
i.extra[1] = '';
}
- changeCountry(i.extra[1]);
+ $("[name='" + nameRealField + "']").parent().load(baseurl + 'list/' + nameRealField, function() {
+ $("select[name='" + nameRealField + "']").attr('value', i.extra[1]);
+ });
+ changeAddressComponents(nameRealField, i.extra[1]);
}
+ }
if (nameRealField == 'school')
return function(i) {
$(".autocomplete").change(function() { $(this).removeClass('hidden_valid'); });
- $(".autocomplete[name='countryTxt']").change(function() { changeCountry(''); });
-
- changeCountry({/literal}'{$smarty.request.country}'{literal});
- changeAdministrativeArea({/literal}'{$smarty.request.administrativearea}'{literal});
+ if ({/literal}'{$smarty.request.country}'{literal} != '') {
+ $("[name='country']").parent().load(baseurl + 'list/country', function() {
+ $("select[name='country']").attr('value', {/literal}'{$smarty.request.country}'{literal});
+ });
+ setAddress(0, 1, new Array({/literal}'{$smarty.request.country}'{literal},
+ {/literal}'{$smarty.request.administrative_area_level_1}'{literal},
+ {/literal}'{$smarty.request.administrative_area_level_2}'{literal},
+ {/literal}'{$smarty.request.administrative_area_level_3}'{literal},
+ {/literal}'{$smarty.request.locality}'{literal},
+ {/literal}'{$smarty.request.sublocality}'{literal})
+ );
+ } else {
+ var types = new Array('administrative_area_level_1', 'administrative_area_level_2', 'administrative_area_level_3', 'locality', 'sublocality');
+ for (var i = 0; i < 5; ++i) {
+ $("tr#" + types[i] + '_list').hide();
+ }
+ }
$(".autocomplete[name='schoolTxt']").change(function() { changeSchool(''); });
});
$("#only_referent").change(function() { changeOnlyReferent(); });
- changeOnlyReferent();
});
/** Regexps to wipe out from search queries */
<th colspan="2">Géographie</th>
</tr>
<tr>
- <td>Ville</td>
- <td><input type="text" class="autocomplete" name="locality" size="32" value="{$smarty.request.locality}" /></td>
- </tr>
- <tr>
<td>Pays</td>
<td>
<input name="countryTxt" type="text" class="autocomplete" style="display:none" size="32"
<a href="country" class="autocompleteToSelect">{icon name="table" title="Tous les pays"}</a>
</td>
</tr>
+ <tr id="administrative_area_level_1_list">
+ <td>Région, province, état…</td>
+ <td>
+ <input name="administrative_area_level_1" type="hidden" size="32" value="{$smarty.request.administrative_area_level_1}" />
+ </td>
+ </tr>
+ <tr id="administrative_area_level_2_list">
+ <td>Département, comté…</td>
+ <td>
+ <input name="administrative_area_level_2" type="hidden" size="32" value="{$smarty.request.administrative_area_level_2}" />
+ </td>
+ </tr>
+ <tr id="administrative_area_level_3_list">
+ <td>Canton…</td>
+ <td>
+ <input name="administrative_area_level_3" type="hidden" size="32" value="{$smarty.request.administrative_area_level_3}" />
+ </td>
+ </tr>
+ <tr id="locality_text">
+ <td>Ville</td>
+ <td><input type="text" class="autocomplete" name="localityTxt" size="32" value="{$smarty.request.locality}" /></td>
+ </tr>
+ <tr id="locality_list">
+ <td>Ville</td>
+ <td>
+ <input name="locality" type="hidden" size="32" value="{$smarty.request.locality}" />
+ </td>
+ </tr>
+ <tr id="sublocality_list">
+ <td>Arrondissement, quartier…</td>
+ <td>
+ <input name="sublocality" type="hidden" size="32" value="{$smarty.request.sublocality}" />
+ </td>
+ </tr>
<tr>
<td colspan="2">
<label for="only_current">