From 6457b5e4040d5110ec52d42afa9ea9ee2f4cff78 Mon Sep 17 00:00:00 2001 From: Florent Bruneau Date: Sun, 9 Sep 2007 19:11:06 +0200 Subject: [PATCH] Mentor page Signed-off-by: Florent Bruneau --- include/geoloc.inc.php | 20 - modules/profile/assign_mentor.inc.php | 34 -- modules/profile/get_mentor.inc.php | 103 ----- modules/profile/mentor.inc.php | 160 ++++++++ modules/profile/page.inc.php | 1 + .../function.geoloc_country.php | 11 +- .../function.geoloc_region.php | 15 +- templates/profile/deco.tpl | 2 +- templates/profile/jobs.job.tpl | 2 +- templates/profile/mentor.tpl | 428 ++++++++++----------- templates/profile/skill.tpl | 1 + 11 files changed, 386 insertions(+), 391 deletions(-) delete mode 100644 modules/profile/assign_mentor.inc.php delete mode 100644 modules/profile/get_mentor.inc.php create mode 100644 modules/profile/mentor.inc.php rename modules/profile/update_mentor.inc.php => plugins/function.geoloc_country.php (87%) rename modules/profile/verif_mentor.inc.php => plugins/function.geoloc_region.php (80%) diff --git a/include/geoloc.inc.php b/include/geoloc.inc.php index a1939b8..89ecd45 100644 --- a/include/geoloc.inc.php +++ b/include/geoloc.inc.php @@ -42,17 +42,6 @@ function geoloc_country($current, $avail_only = false) return $html; } -function _geoloc_country_smarty($params) -{ - echo "miqjfmeij"; - if(!isset($params['country'])) { - return; - } - return geoloc_country($params['country'], @$params['available']); -} - -$GLOBALS['page']->register_function('geoloc_country', '_geoloc_country_smarty'); - /** donne la liste deroulante des regions pour un pays * @param $pays le pays dont on veut afficher les regions * @param $current la region actuellement selectionnee @@ -79,15 +68,6 @@ function geoloc_region($country, $current, $avail_only = false) } return $html; } - -function _geoloc_region_smarty($params, &$smarty) -{ - if(!isset($params['country']) || !isset($params['region'])) { - return; - } - return geoloc_region($params['country'], $params['region'], @$params['available']); -} -$GLOBALS['page']->register_function('geoloc_region', '_geoloc_region_smarty'); // }}} // {{{ get_address_infos($txt) diff --git a/modules/profile/assign_mentor.inc.php b/modules/profile/assign_mentor.inc.php deleted file mode 100644 index 728a8d3..0000000 --- a/modules/profile/assign_mentor.inc.php +++ /dev/null @@ -1,34 +0,0 @@ -assign('mentor_secteur_id_new', $mentor_secteur_id_new); -$page->assign('can_add_pays', $nb_mentor_pays < $max_mentor_pays); -$page->assign('can_add_secteurs', $nb_mentor_secteurs < $max_mentor_secteurs); -$page->assign('mentor_expertise', $mentor_expertise); -$page->assign('mentor_pid', $mentor_pid); -$page->assign('mentor_pays', $mentor_pays); -$page->assign('mentor_sid', $mentor_sid); -$page->assign('mentor_secteur', $mentor_secteur); -$page->assign('mentor_ssid', $mentor_ssid); -$page->assign('mentor_ss_secteur', $mentor_ss_secteur); - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/profile/get_mentor.inc.php b/modules/profile/get_mentor.inc.php deleted file mode 100644 index 53d18a6..0000000 --- a/modules/profile/get_mentor.inc.php +++ /dev/null @@ -1,103 +0,0 @@ -fetchOneCell(); -$mentor_expertise_bd = $mentor_expertise; - -//suppression eventuelle d'un pays -if(Post::v('mentor_pays_op', '') == 'retirer') { - if(Post::has('mentor_pays_id')) { - $id_supprimee = Post::v('mentor_pays_id', '00'); - XDB::execute("DELETE FROM mentor_pays WHERE uid = {?} AND pid = {?} LIMIT 1", S::v('uid', -1), $id_supprimee); - } -} - -//recuperation des pays -$res = XDB::iterRow("SELECT m.pid, p.pays - FROM mentor_pays AS m - LEFT JOIN geoloc_pays AS p ON(m.pid = p.a2) WHERE m.uid = {?} LIMIT {?}", S::v('uid', -1), $max_mentor_pays); -$nb_mentor_pays = $res->total(); -$mentor_pid = $mentor_pays = Array(); -for($i = 1; $i <= $nb_mentor_pays ; $i++) list($mentor_pid[$i], $mentor_pays[$i]) = $res->next(); - -//ajout eventuel d'un pays -if((Post::v('mentor_pays_op', '') == 'ajouter') && ($nb_mentor_pays < $max_mentor_pays)) { - if(Post::v('mentor_pays_id', '00') != '00') { - $id_ajoutee = Post::v('mentor_pays_id', '00'); - XDB::execute("INSERT INTO mentor_pays(uid, pid) VALUES({?}, {?})", S::v('uid', -1), $id_ajoutee); - $nb_mentor_pays++; - $mentor_pid[$nb_mentor_pays] = $id_ajoutee; - $mentor_pays[$nb_mentor_pays] = Post::v('mentor_pays_name', ''); - } -} - - - -//suppression d'un secteur / ss-secteur -if(Post::v('mentor_secteur_op', '') == 'retirer') { - if(Post::has('mentor_secteur_id')) { - $id_supprimee = Post::v('mentor_secteur_id', ''); - XDB::execute("DELETE FROM mentor_secteurs WHERE uid = {?} AND secteur = {?} LIMIT 1", S::v('uid', -1), $id_supprimee); - } -} - -//recuperation des secteurs -$res = XDB::iterRow("SELECT m.secteur, s.label, m.ss_secteur, ss.label - FROM mentor_secteurs AS m - LEFT JOIN emploi_secteur AS s ON(m.secteur = s.id) - LEFT JOIN emploi_ss_secteur AS ss ON(s.id = ss.secteur AND m.ss_secteur = ss.id) - WHERE m.uid = {?} - LIMIT {?}", S::v('uid', -1), $max_mentor_pays); -$nb_mentor_secteurs = $res->total(); -$mentor_sid = $mentor_secteur = $mentor_ssid = $mentor_ss_secteur = Array(); -for($i = 1; $i <= $nb_mentor_secteurs ; $i++) - list($mentor_sid[$i], $mentor_secteur[$i], $mentor_ssid[$i], $mentor_ss_secteur[$i]) = $res->next(); - -//ajout d'un secteur -$mentor_secteur_id_new = ''; -if((Post::v('mentor_secteur_op', '')== 'ajouter') && ($nb_mentor_secteurs < $max_mentor_secteurs)) { - if(Post::v('mentor_secteur_id', '') != '') - { - $sid_ajoutee = Post::v('mentor_secteur_id', ''); - if(Post::has('mentor_ss_secteur_id')) - $ssid_ajoutee = Post::v('mentor_ss_secteur_id', ''); - XDB::execute("INSERT INTO mentor_secteurs (uid, secteur, ss_secteur) - VALUES({?}, {?}, {?})", S::v('uid', -1), $sid_ajoutee, ($ssid_ajoutee == '')?null:$ssid_ajoutee); - $nb_mentor_secteurs++; - $mentor_sid[$nb_mentor_secteurs] = $sid_ajoutee; - $mentor_secteur[$nb_mentor_secteurs] = Post::v('mentor_secteur_name', ''); - $mentor_ssid[$nb_mentor_secteurs] = $ssid_ajoutee; - $mentor_ss_secteur[$nb_mentor_secteurs] = Post::v('mentor_ss_secteur_name', ''); - } -} elseif(Post::has('mentor_secteur_id_new')){ - $mentor_secteur_id_new = Post::v('mentor_secteur_id_new', ''); -} -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/profile/mentor.inc.php b/modules/profile/mentor.inc.php new file mode 100644 index 0000000..5928acd --- /dev/null +++ b/modules/profile/mentor.inc.php @@ -0,0 +1,160 @@ +next()) { + if (!isset($value[$s])) { + $value[$s] = array($ss => $ssname); + } else { + $value[$s][$ss] = $ssname; + } + } + } else if (!is_array($value)) { + $value = array(); + } else if (count($value) > 10) { + global $page; + $page->trig("Le nombre de secteurs d'expertise est limité à 10"); + $success = false; + } + ksort($value); + foreach ($value as &$sss) { + ksort($sss); + } + return $value; + } + + public function save(ProfilePage &$page, $field, $value) + { + + XDB::execute("DELETE FROM mentor_secteurs + WHERE uid = {?}", + S::i('uid')); + if (!count($value)) { + return; + } + foreach ($value as $id=>&$sect) { + foreach ($sect as $sid=>&$name) { + XDB::execute("INSERT INTO mentor_secteurs (uid, secteur, ss_secteur) + VALUES ({?}, {?}, {?})", + S::i('uid'), $id, $sid); + } + } + } +} + +class ProfileCountry implements ProfileSetting +{ + public function value(ProfilePage &$page, $field, $value, &$success) + { + $success = true; + if (is_null($value)) { + $value = array(); + $res = XDB::iterRow("SELECT m.pid, p.pays + FROM mentor_pays AS m + INNER JOIN geoloc_pays AS p ON(m.pid = p.a2) + WHERE m.uid = {?}", + S::i('uid')); + while (list($id, $name) = $res->next()) { + $value[$id] = $name; + } + } else if (!is_array($value)) { + $value = array(); + } else if (count($value) > 10) { + global $page; + $page->trig("Le nombre de secteurs d'expertise est limité à 10"); + $success = false; + } + ksort($value); + return $value; + } + + public function save(ProfilePage &$page, $field, $value) + { + XDB::execute("DELETE FROM mentor_pays + WHERE uid = {?}", + S::i('uid')); + foreach ($value as $id=>&$name) { + XDB::execute("INSERT INTO mentor_pays (uid, pid) + VALUES ({?}, {?})", + S::i('uid'), $id); + } + } +} + + +class ProfileMentor extends ProfilePage +{ + protected $pg_template = 'profile/mentor.tpl'; + + public function __construct(PlWizard &$wiz) + { + parent::__construct($wiz); + $this->settings['expertise'] = null; + $this->settings['secteurs'] = new ProfileSecteurs(); + $this->settings['countries'] = new ProfileCountry(); + } + + protected function fetchData() + { + if (count($this->orig) > 0) { + $this->values = $this->orig; + return; + } + $res = XDB::query("SELECT expertise + FROM mentor + WHERE uid = {?}", + S::i('uid')); + $this->value['expertise'] = $res->fetchOneCell(); + parent::fetchData(); + } + + protected function saveData() + { + parent::saveData(); + if ($this->changed['expertise']) { + XDB::execute("REPLACE INTO mentor (uid, expertise) + VALUES ({?}, {?})", + S::i('uid'), $this->values['expertise']); + } + } + + public function prepare(PlatalPage &$page) + { + parent::prepare($page); + $page->assign('secteurs_sel', XDB::iterator("SELECT id, label + FROM emploi_secteur")); + } +} + +// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: +?> diff --git a/modules/profile/page.inc.php b/modules/profile/page.inc.php index f07ef04..e06e247 100644 --- a/modules/profile/page.inc.php +++ b/modules/profile/page.inc.php @@ -289,6 +289,7 @@ require_once dirname(__FILE__) . '/groups.inc.php'; require_once dirname(__FILE__) . '/decos.inc.php'; require_once dirname(__FILE__) . '/jobs.inc.php'; require_once dirname(__FILE__) . '/skills.inc.php'; +require_once dirname(__FILE__) . '/mentor.inc.php'; // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: ?> diff --git a/modules/profile/update_mentor.inc.php b/plugins/function.geoloc_country.php similarity index 87% rename from modules/profile/update_mentor.inc.php rename to plugins/function.geoloc_country.php index a3e6df0..fee2b21 100644 --- a/modules/profile/update_mentor.inc.php +++ b/plugins/function.geoloc_country.php @@ -19,12 +19,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * ***************************************************************************/ -//mise a jour d'expertise si nécessaire - -if($mentor_expertise != $mentor_expertise_bd) { - XDB::execute("REPLACE INTO mentor(uid, expertise) VALUES({?}, {?})", S::v('uid', -1), $mentor_expertise); +function smarty_function_geoloc_country($params, &$smarty) { + require_once 'geoloc.inc.php'; + if(!isset($params['country'])) { + return; + } + return geoloc_country($params['country'], @$params['available']); } - // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: ?> diff --git a/modules/profile/verif_mentor.inc.php b/plugins/function.geoloc_region.php similarity index 80% rename from modules/profile/verif_mentor.inc.php rename to plugins/function.geoloc_region.php index b1707f3..e7a3a69 100644 --- a/modules/profile/verif_mentor.inc.php +++ b/plugins/function.geoloc_region.php @@ -19,15 +19,12 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * ***************************************************************************/ - -//au cas ou le submit du formulaire vient d'un changement du nouveau secteur -if(Post::has('mentor_expertise')){ - $mentor_expertise = Post::v('mentor_expertise'); - if(!empty($mentor_expertise)){ - if (strlen(strtok($mentor_expertise,"<>{}~§`|%$^")) < strlen($mentor_expertise)){//TODO: affiner la liste - $page->trig("L'expertise contient un caractère interdit."); - } - } +function smarty_function_geoloc_region($params, &$smarty) { + require_once 'geoloc.inc.php'; + if(!isset($params['country']) || !isset($params['region'])) { + return; + } + return geoloc_region($params['country'], $params['region'], @$params['available']); } // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: diff --git a/templates/profile/deco.tpl b/templates/profile/deco.tpl index 79d0433..b4eb62b 100644 --- a/templates/profile/deco.tpl +++ b/templates/profile/deco.tpl @@ -95,7 +95,7 @@ function remove(id) {/foreach} {/if}{/foreach} {/foreach} - +//]]> diff --git a/templates/profile/jobs.job.tpl b/templates/profile/jobs.job.tpl index ce1e07d..bcda539 100644 --- a/templates/profile/jobs.job.tpl +++ b/templates/profile/jobs.job.tpl @@ -86,7 +86,7 @@ -
Fonction occupée + - - - - - - - - - - - - {foreach from=$mentor_pays item=pays key=i} - - - - - - {/foreach} - {if $can_add_pays} - - - - - - {/if} -
- Pays dont tu connais bien la culture professionnelle - - - -
- - - - - -
- - - privé -
-
- Pays - - - -   -
- {$pays} - -    - - retirer -
- - - - ajouter -
- + + + + + + + + + + + + + +
+ Pays dont tu connais bien la culture professionnelle +
+ + privé +
+
Pays
+ + +
+ {foreach from=$countries item=country key=i} + + {/foreach} +
-
- - - - - - - - - - - - - {foreach from=$mentor_secteur item=secteur key=i} - - - - - - {/foreach} - {if $can_add_secteurs} - - - - - - {/if} -
- Secteurs d'activité dans lesquels tu as beaucoup exercé - - - - - -
- - - - - -
- - - privé -
-
- Secteur - - Sous-Secteur - -   -
- {$secteur} - - {$mentor_ss_secteur.$i} - - retirer -
- - - - - ajouter -
-
+ + + + + + + + + + + + + + + + +
+ Secteurs d'activité dans lesquels tu as beaucoup exercé +
+ + privé +
+
Secteur
+ +
+
Sous-secteur
+ +
+ {if $secteurs|@count} + {foreach from=$secteurs item=secteur key=s} + {foreach from=$secteur item=ss_sect key=ss} + + {/foreach} + {/foreach} + {/if} +
-
- - - - - - - - - - - - - -
- Expérience et expertises que tu acceptes de faire partager -
- - - - - -
- - - privé -
-
- Dans cette case il te faut indiquer en quelques mots ce qui t'a - amené à acquérir l'expérience indiquée, et dans quelle mesure tu - veux bien que ceux de nos camarades qui seraient intéressés par un - contact avec toi, en prennent l'initiative. Il est obligatoire de - remplir cette dernière case pour apparaître dans la base de données - des "Mentors". -
-
- -
-
+ + + + + + + + + + + + + +
+ Expérience et expertises que tu acceptes de faire partager +
+ + privé +
+ Dans cette case il te faut indiquer en quelques mots ce qui t'a + amené à acquérir l'expérience indiquée, et dans quelle mesure tu + veux bien que ceux de nos camarades qui seraient intéressés par un + contact avec toi, en prennent l'initiative. Il est obligatoire de + remplir cette dernière case pour apparaître dans la base de données + des "Mentors". +
+ +
{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} diff --git a/templates/profile/skill.tpl b/templates/profile/skill.tpl index 4bdba40..aea9c70 100644 --- a/templates/profile/skill.tpl +++ b/templates/profile/skill.tpl @@ -80,6 +80,7 @@ function remove(cat, id) {if $comp.title} {if $ingroup}{/if} + {assign var=ingroup value=true} {/if} {/iterate} -- 2.1.4