const NATIONALITIES = 'nationalities';
const COUNTRIES = 'countries';
const ADMINAREAS = 'adminareas';
+ const SUBADMINAREAS = 'subadminareas';
const LOCALITIES = 'localities';
const COMPANIES = 'companies';
}
// }}}
+// {{{ class DE_SubAdminAreas
+class DE_SubAdminAreas extends DE_WithSuboption
+{
+ protected $idfield = 'geoloc_subadministrativeareas.id';
+ protected $optfield = 'geoloc_subadministrativeareas.administrativearea';
+ protected $valfield = 'geoloc_subadministrativeareas.name';
+ protected $from = 'geoloc_subadministrativeareas';
+
+ protected $ac_join = 'INNER JOIN profile_addresses ON (profile_addresses.subadministrativeAreaId = geoloc_subadministrativeareas.id)';
+ protected $ac_unique = 'profile_addresses.pid';
+}
+// }}}
+
// {{{ class DE_Localities
class DE_Localities extends DirEnumeration
{
new UFBF_Town('city', 'Ville / Code Postal'),
new UFBF_Country('countryTxt', 'country', 'Pays'),
- new UFBF_AdminArea('region', 'Région'),
+ new UFBF_AdminArea('administrativearea', 'Région'),
+ new UFBF_SubAdminArea('subadministrativearea', 'Département'),
new UFBF_JobCompany('entreprise', 'Entreprise'),
new UFBF_JobDescription('jobdescription', 'Fonction'),
}
// }}}
+// {{{ class UFBF_SubAdminArea
+class UFBF_SubAdminArea extends UFBF_Index
+{
+ protected $direnum = DirEnum::SUBADMINAREAS;
+ protected $onlycurrentfield;
+
+ public function __construct($envfield, $formtext = '', $onlycurrentfield = 'only_current')
+ {
+ parent::__construct($envfield, $formtext);
+ $this->onlycurrentfield = $onlycurrentfield;
+ }
+
+
+ protected function buildUFC(UserFilterBuilder &$ufb)
+ {
+ if ($ufb->isOn($this->onlycurrentfield)) {
+ $flags = UFC_Address::FLAG_CURRENT;
+ } else {
+ $flags = UFC_Address::FLAG_ANY;
+ }
+
+ return new UFC_AddressField($this->val, UFC_AddressField::FIELD_SUBADMAREA, UFC_Address::TYPE_ANY, $flags);
+ }
+}
+// }}}
+
// {{{ class UFBF_JobCompany
class UFBF_JobCompany extends UFBF_Text
{
case 'nationalite':
$ids = DirEnum::getOptionsIter(DirEnum::NATIONALITIES);
break;
- case 'region':
+ 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);
};
}
- // when changing country, open up region choice
+ // when changing country, open up administrativearea 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}');
+ $("[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}');
- $("tr#region_ln").show();
+ $("tr#administrativearea_list").show();
} else {
- $("select[name='region']").attr('value', '');
+ $("select[name='administrativearea']").attr('value', '');
- $("tr#region_ln").hide();
+ $("tr#administrativearea_list").hide();
}
});
} else {
$(".autocomplete[name='countryTxt']").removeClass('hidden_valid');
- $("select[name='region']").attr('value', '');
+ $("select[name='administrativearea']").attr('value', '');
+ $("select[name='subadministrativearea']").attr('value', '');
- $("tr#region_ln").hide();
+ $("tr#administrativearea_list").hide();
+ $("tr#subadministrativearea_list").hide();
+ }
+ }
+
+ // 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();
}
}
if (nameRealField == name)
return null;
- // if changing country, might want to open region choice
+ // if changing country, might want to open administrativearea choice
if (nameRealField == 'country')
return function(i) {
if (i.extra[0] < 0) {
$(".autocomplete[name='countryTxt']").change(function() { changeCountry(''); });
changeCountry({/literal}'{$smarty.request.country}'{literal});
+ changeAdministrativeArea({/literal}'{$smarty.request.administrativearea}'{literal});
$(".autocomplete[name='schoolTxt']").change(function() { changeSchool(''); });
<a href="country" class="autocompleteToSelect">{icon name="table" title="Tous les pays"}</a>
</td>
</tr>
- <tr id="region_ln">
- <td>Région ou département</td>
+ <tr id="administrativearea_list">
+ <td>Région, province, état…</td>
+ <td>
+ <input name="administrativearea" type="hidden" size="32" value="{$smarty.request.administrativearea}" />
+ </td>
+ </tr>
+ <tr id="subadministrativearea_list">
+ <td>Département, comté…</td>
<td>
- <input name="region" type="hidden" size="32" value="{$smarty.request.region}"/>
+ <input name="subadministrativearea" type="hidden" size="32" value="{$smarty.request.subadministrativearea}" />
</td>
</tr>
<tr>