From f25e1a5648e03f9fde143f28127200428ec5d3b0 Mon Sep 17 00:00:00 2001 From: Florent Bruneau Date: Sun, 9 Sep 2007 14:49:57 +0200 Subject: [PATCH] The skill page Signed-off-by: Florent Bruneau --- modules/profile.php | 21 +++ modules/profile/assign_skill.inc.php | 39 ----- modules/profile/get_skill.inc.php | 94 ------------ modules/profile/page.inc.php | 1 + modules/profile/skills.inc.php | 112 ++++++++++++++ modules/profile/update_skill.inc.php | 24 --- modules/profile/verif_skill.inc.php | 24 --- templates/profile/skill.skill.tpl | 39 +++++ templates/profile/skill.tpl | 278 +++++++++++++---------------------- 9 files changed, 273 insertions(+), 359 deletions(-) delete mode 100644 modules/profile/assign_skill.inc.php delete mode 100644 modules/profile/get_skill.inc.php create mode 100644 modules/profile/skills.inc.php delete mode 100644 modules/profile/update_skill.inc.php delete mode 100644 modules/profile/verif_skill.inc.php create mode 100644 templates/profile/skill.skill.tpl diff --git a/modules/profile.php b/modules/profile.php index 40ef129..abf5de5 100644 --- a/modules/profile.php +++ b/modules/profile.php @@ -37,6 +37,7 @@ class ProfileModule extends PLModule 'profile/ajax/medal' => $this->make_hook('ajax_medal', AUTH_COOKIE, 'user', NO_AUTH), 'profile/ajax/job' => $this->make_hook('ajax_job', AUTH_COOKIE, 'user', NO_AUTH), 'profile/ajax/secteur' => $this->make_hook('ajax_secteur', AUTH_COOKIE, 'user', NO_AUTH), + 'profile/ajax/skill' => $this->make_hook('ajax_skill', AUTH_COOKIE, 'user', NO_AUTH), 'profile/medal' => $this->make_hook('medal', AUTH_PUBLIC), 'profile/orange' => $this->make_hook('p_orange', AUTH_MDP), 'profile/usage' => $this->make_hook('p_usage', AUTH_MDP), @@ -398,6 +399,26 @@ class ProfileModule extends PLModule $page->assign('sel', $ssect); } + function handler_ajax_skill(&$page, $cat, $id) + { + $page->changeTpl('profile/skill.skill.tpl', NO_SKIN); + $page->assign('ajaxskill', true); + $page->assign('cat', $cat); + $page->assign('id', $id); + if ($cat == 'competences') { + $page->assign('levels', array('initié' => 'initié', + 'bonne connaissance' => 'bonne connaissance', + 'expert' => 'expert')); + } else { + $page->assign('levels', array(1 => 'connaissance basique', + 2 => 'maîtrise des bases', + 3 => 'maîtrise limitée', + 4 => 'maîtrise générale', + 5 => 'bonne maîtrise', + 6 => 'maîtrise complète')); + } + } + function handler_p_orange(&$page) { $page->changeTpl('profile/orange.tpl'); diff --git a/modules/profile/assign_skill.inc.php b/modules/profile/assign_skill.inc.php deleted file mode 100644 index 9f2adc1..0000000 --- a/modules/profile/assign_skill.inc.php +++ /dev/null @@ -1,39 +0,0 @@ -assign('nb_lg_max', $nb_lg_max); -$page->assign('nb_cpro_max', $nb_cpro_max); -$page->assign('nb_lg', $nb_lg); -$page->assign_by_ref('langue_id', $langue_id); -$page->assign_by_ref('langue_name', $langue_name); -$page->assign_by_ref('langue_level', $langue_level); -$page->assign('nb_cpro', $nb_cpro); -$page->assign_by_ref('cpro_id', $cpro_id); -$page->assign_by_ref('cpro_name', $cpro_name); -$page->assign_by_ref('cpro_level', $cpro_level); -$page->assign_by_ref('langues_levels',$langues_levels); -$page->assign_by_ref('langues_def',$langues_def); -$page->assign_by_ref('comppros_levels',$comppros_levels); -$page->assign_by_ref('comppros_def',$comppros_def); -$page->assign_by_ref('comppros_title',$comppros_title); - -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: -?> diff --git a/modules/profile/get_skill.inc.php b/modules/profile/get_skill.inc.php deleted file mode 100644 index d5a2ee1..0000000 --- a/modules/profile/get_skill.inc.php +++ /dev/null @@ -1,94 +0,0 @@ -total(); - -for ($i = 1; $i <= $nb_lg; $i++) { - list($langue_id[$i], $langue_name[$i], $langue_level[$i]) = $res->next(); -} - -$res = XDB::iterRow("SELECT cd.id, cd.text_fr, ci.level FROM competences_ins AS ci, competences_def AS cd " - ."WHERE (ci.cid=cd.id AND ci.uid={?}) LIMIT $nb_cpro_max", S::v('uid', -1)); - -$nb_cpro = $res->total(); - -for ($i = 1; $i <= $nb_cpro; $i++) { - list($cpro_id[$i], $cpro_name[$i], $cpro_level[$i]) = $res->next(); -} -//Definitions des tables de correspondances id => nom - -$langues_levels = Array( - 1 => "1", - 2 => "2", - 3 => "3", - 4 => "4", - 5 => "5", - 6 => "6" -); - -$res = XDB::iterRow("SELECT id, langue_fr FROM langues_def"); - -while(list($tmp_lid, $tmp_lg_fr) = $res->next()){ - $langues_def[$tmp_lid] = $tmp_lg_fr; -} - -$comppros_levels = Array( - 'initié' => 'initié', - 'bonne connaissance' => 'bonne connaissance', - 'expert' => 'expert' -); - -$res = XDB::iterRow("SELECT id, text_fr, FIND_IN_SET('titre',flags) FROM competences_def"); - -while(list($tmp_id, $tmp_text_fr, $tmp_title) = $res->next()){ - $comppros_def[$tmp_id] = $tmp_text_fr; - $comppros_title[$tmp_id] = $tmp_title; -} - -// 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 143dd9d..f07ef04 100644 --- a/modules/profile/page.inc.php +++ b/modules/profile/page.inc.php @@ -288,6 +288,7 @@ require_once dirname(__FILE__) . '/addresses.inc.php'; 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'; // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: ?> diff --git a/modules/profile/skills.inc.php b/modules/profile/skills.inc.php new file mode 100644 index 0000000..a922fc0 --- /dev/null +++ b/modules/profile/skills.inc.php @@ -0,0 +1,112 @@ +table = $table; + $this->skill_field = $skill; + $this->text_field = $text; + } + + public function value(ProfilePage &$page, $field, $value, &$success) + { + if (is_null($value)) { + $value = array(); + $res = XDB::iterRow("SELECT s.id, s.{$this->text_field}, i.level + FROM {$this->table}_def AS s + INNER JOIN {$this->table}_ins AS i ON(s.id = i.{$this->skill_field}) + WHERE i.uid = {?}", + S::i('uid')); + while (list($sid, $text, $level) = $res->next()) { + $value[$sid] = array('text' => $text, 'level' => $level); + } + } + if (!is_array($value)) { + $value = array(); + } else { + foreach ($value as $id=>&$skill) { + if (!isset($skill['text']) || empty($skill['text'])) { + $res = XDB::query("SELECT {$this->text_field} + FROM {$this->table}_def + WHERE id = {?}", $id); + $skill['text'] = $res->fetchOneCell(); + } + } + } + ksort($value); + $success = true; + return $value; + } + + public function save(ProfilePage &$page, $field, $value) + { + XDB::execute("DELETE FROM {$this->table}_ins + WHERE uid = {?}", + S::i('uid')); + if (!count($value)) { + return; + } + foreach ($value as $id=>&$skill) { + XDB::execute("INSERT INTO {$this->table}_ins (uid, {$this->skill_field}, level) + VALUES ({?}, {?}, {?})", + S::i('uid'), $id, $skill['level']); + } + } +} + +class ProfileSkills extends ProfilePage +{ + protected $pg_template = 'profile/skill.tpl'; + + public function __construct(PlWizard &$wiz) + { + parent::__construct($wiz); + $this->settings['competences'] = new ProfileSkill('competences', 'cid', 'text_fr'); + $this->settings['langues'] = new ProfileSkill('langues', 'lid', 'langue_fr'); + } + + public function prepare(PlatalPage &$page) + { + parent::prepare($page); + $page->assign('comp_list', XDB::iterator("SELECT id, text_fr, FIND_IN_SET('titre',flags) AS title + FROM competences_def")); + $page->assign('comp_level', array('initié' => 'initié', + 'bonne connaissance' => 'bonne connaissance', + 'expert' => 'expert')); + $page->assign('lang_list', XDB::iterator("SELECT id, langue_fr + FROM langues_def")); + $page->assign('lang_level', array(1 => 'connaissance basique', + 2 => 'maîtrise des bases', + 3 => 'maîtrise limitée', + 4 => 'maîtrise générale', + 5 => 'bonne maîtrise', + 6 => 'maîtrise complète')); + } +} + +// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: +?> diff --git a/modules/profile/update_skill.inc.php b/modules/profile/update_skill.inc.php deleted file mode 100644 index 90ddbd4..0000000 --- a/modules/profile/update_skill.inc.php +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/modules/profile/verif_skill.inc.php b/modules/profile/verif_skill.inc.php deleted file mode 100644 index 90ddbd4..0000000 --- a/modules/profile/verif_skill.inc.php +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/templates/profile/skill.skill.tpl b/templates/profile/skill.skill.tpl new file mode 100644 index 0000000..5579bc6 --- /dev/null +++ b/templates/profile/skill.skill.tpl @@ -0,0 +1,39 @@ +{**************************************************************************} +{* *} +{* Copyright (C) 2003-2007 Polytechnique.org *} +{* http://opensource.polytechnique.org/ *} +{* *} +{* This program is free software; you can redistribute it and/or modify *} +{* it under the terms of the GNU General Public License as published by *} +{* the Free Software Foundation; either version 2 of the License, or *} +{* (at your option) any later version. *} +{* *} +{* This program is distributed in the hope that it will be useful, *} +{* but WITHOUT ANY WARRANTY; without even the implied warranty of *} +{* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *} +{* GNU General Public License for more details. *} +{* *} +{* You should have received a copy of the GNU General Public License *} +{* along with this program; if not, write to the Free Software *} +{* Foundation, Inc., *} +{* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *} +{* *} +{**************************************************************************} + +{if $ajaxskill} + +{/if} +
+
+ {$skill.text} + +
+ + {icon name=cross title="Supprimer"} +
+ +{* 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 8619657..4bdba40 100644 --- a/templates/profile/skill.tpl +++ b/templates/profile/skill.tpl @@ -21,194 +21,116 @@ {**************************************************************************} + {/literal} +//]]> -
- - - - - - - - - - - - - {foreach from=$cpro_name key=i item=name} - - - - - - {/foreach} - {if $nb_cpro < $nb_cpro_max} - - - + + + + +
- Compétences professionnelles - - - -
- - - - - -
- - - privé -
-
- Domaine - - Niveau - -   -
- {$name} - -   {$cpro_level.$i} - - retirer -
- - - + + + + + - - - {/if} -
+ Compétences professionnelles +
+
+ + privé +
+
+ Domaine : + -
- ajouter -
- + + +
+ {foreach from=$competences item=competence key=id} + {include file="profile/skill.skill.tpl" cat='competences' skill=$competence id=$id levels=$comp_level} + {/foreach} +
-
- - - - - - - - - - - - - {foreach from=$langue_name item=name key=i} - - - - - - {/foreach} - {if $nb_lg < $nb_lg_max} - - - + + + + +
- Compétences linguistiques - - - -
- - - - - -
- - - privé -
-
- Langue - - Niveau - - Quel niveau ? -
- {$name} - -   {if $langue_level.$i == 0}-{else}{$langue_level.$i}{/if} - - retirer -
- - - + + + + + - - - {/if} -
Compétences linguistiques
+
+ + privé +
+
+ Domaine : + -
- ajouter -
- + + +
+ {foreach from=$langues item=langue key=id} + {include file="profile/skill.skill.tpl" cat='langues' skill=$langue id=$id levels=$lang_level} + {/foreach} +
{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *} -- 2.1.4