From 23b2a97adf5e700313fd7a53d350584613d16635 Mon Sep 17 00:00:00 2001 From: Cristian Fasanando Date: Tue, 26 Jan 2010 11:46:05 -0500 Subject: [PATCH] added thematic advance inside course description tool, making mvc model - partial CT#577 --- main/course_description/add.php | 77 ++++ .../course_description_controller.php | 233 ++++++++++ main/course_description/edit.php | 98 +++++ main/course_description/index.php | 407 +++-------------- main/course_description/layout.php | 29 ++ main/course_description/listing.php | 90 ++++ main/inc/lib/add_course.lib.inc.php | 9 +- main/inc/lib/app_view.php | 89 ++++ main/inc/lib/course_description.lib.php | 410 ++++++++++++++++++ 9 files changed, 1096 insertions(+), 346 deletions(-) create mode 100755 main/course_description/add.php create mode 100755 main/course_description/course_description_controller.php create mode 100755 main/course_description/edit.php create mode 100755 main/course_description/layout.php create mode 100755 main/course_description/listing.php create mode 100755 main/inc/lib/app_view.php create mode 100755 main/inc/lib/course_description.lib.php diff --git a/main/course_description/add.php b/main/course_description/add.php new file mode 100755 index 0000000000..c286c57bdb --- /dev/null +++ b/main/course_description/add.php @@ -0,0 +1,77 @@ + +*/ + +api_protect_course_script(true); + +// display categories +$categories = array (); +foreach ($default_description_titles as $id => $title) { + $categories[$id] = $title; +} +$categories[ADD_BLOCK] = get_lang('NewBloc'); + +$i=1; +echo '
'; +ksort($categories); +foreach ($categories as $id => $title) { + if ($i==ADD_BLOCK) { + echo ''.Display::return_icon($default_description_icon[$id], $title, array('height'=>'22')).' '.$title.''; + break; + } else { + echo ''.Display::return_icon($default_description_icon[$id], $title, array('height'=>'22')).' '.$title.'  '; + $i++; + } +} +echo '
'; + +// error messages +if (isset($error) && intval($error) == 1) { + Display::display_error_message(get_lang('FormHasErrorsPleaseComplete'),false); +} + +// default header title form +$header = ''; +$description_type = intval($description_type); +if ($description_type >= ADD_BLOCK) { + $header = $default_description_titles[ADD_BLOCK]; +} + +$token = Security::get_token(); +// display form +$form = new FormValidator('course_description','POST','index.php?action=add&'.api_get_cidreq(),'','style="width: 100%;"'); +$form->addElement('header', '', $header); +$form->addElement('hidden', 'description_type',$description_type); +$form->addElement('hidden', 'sec_token',$token); +$form->add_textfield('title', get_lang('Title'), true, array('size'=>'width: 350px;')); +$form->applyFilter('title','html_filter'); + +if (api_get_setting('wcag_anysurfer_public_pages')=='true') { + WCAG_rendering::prepare_admin_form($description_content, $form); +} else { + $form->add_html_editor('contentDescription', get_lang('Content'), true, false, array('ToolbarSet' => 'TrainingDescription', 'Width' => '100%', 'Height' => '200')); +} +$form->addElement('style_submit_button', null, get_lang('Save'), 'class="save"'); + +// display default questions +if (isset ($question[$description_type])) { + $message = ''.get_lang('QuestionPlan').'
'; + $message .= $question[$description_type]; + Display::display_normal_message($message, false); +} + +if (api_get_setting('wcag_anysurfer_public_pages')=='true') { + echo (WCAG_Rendering::editor_header()); +} + +$form->display(); + +if (api_get_setting('wcag_anysurfer_public_pages')=='true') { + echo (WCAG_Rendering::editor_footer()); +} +?> \ No newline at end of file diff --git a/main/course_description/course_description_controller.php b/main/course_description/course_description_controller.php new file mode 100755 index 0000000000..38d9ab47cb --- /dev/null +++ b/main/course_description/course_description_controller.php @@ -0,0 +1,233 @@ + + */ + +class CourseDescriptionController { // extends Controller { + + private $toolname; + private $view; + + /** + * Constructor + */ + public function __construct() { + $this->toolname = 'course_description'; + $this->view = new View($this->toolname); + } + + /** + * It's used for listing course description, + * render to listing view + * @param boolan true for listing history (optional) + * @param array message for showing by action['edit','add','destroy'] (optional) + */ + public function listing($history=false,$messages=array()) { + $course_description = new CourseDescription(); + $session_id = api_get_session_id(); + $course_description->set_session_id($session_id); + $data = array(); + + if ($history) { + $course_description_data = $course_description->get_description_history(THEMATIC_ADVANCE); + $data['history'] = true; + } else { + $course_description_data = $course_description->get_description_data(); + } + + $data['descriptions'] = $course_description_data['descriptions']; + $data['default_description_titles'] = $course_description->get_default_description_title(); + $data['default_description_title_editable'] = $course_description->get_default_description_title_editable(); + $data['default_description_icon'] = $course_description->get_default_description_icon(); + $data['messages'] = $messages; + + // render to the view + $this->view->set_data($data); + $this->view->set_layout('layout'); + $this->view->set_template('listing'); + $this->view->render(); + } + + /** + * It's used for editing a course description, + * render to listing or edit view + * @param int description type + */ + public function edit($description_type) { + $course_description = new CourseDescription(); + $session_id = api_get_session_id(); + $course_description->set_session_id($session_id); + $data = array(); + if (strtoupper($_SERVER['REQUEST_METHOD']) == "POST") { + if (!empty($_POST['title']) && !empty($_POST['contentDescription'])) { + + $check = Security::check_token(); + if ($check) { + $title = $_POST['title']; + if (api_get_setting('wcag_anysurfer_public_pages')=='true') { + $content = WCAG_Rendering::prepareXHTML(); + } else { + $content = $_POST['contentDescription']; + } + $description_type = $_POST['description_type']; + $progress = $_POST['progress']; + $course_description->set_description_type($description_type); + $course_description->set_title($title); + $course_description->set_content($content); + $course_description->set_progress($progress); + if ($description_type >= ADD_BLOCK) { + $affected_rows = $course_description->update(); + } else { + $thematic_advance = $course_description->get_data_by_description_type($description_type); + if (!empty($thematic_advance)) { + if ($description_type == THEMATIC_ADVANCE) { + // if is thematic advance type save in history + $course_description->set_title($thematic_advance['description_title']); + $course_description->set_content($thematic_advance['description_content']); + $course_description->insert_stats($description_type); + } + $course_description->set_title($title); + $course_description->set_content($content); + $affected_rows = $course_description->update(); + } else { + $affected_rows = $course_description->insert(); + } + } + Security::clear_token(); + } + + if ($affected_rows) { + $message['edit'] = true; + } + $this->listing(false,$message); + + } else { + $data['error'] = 1; + $data['default_description_titles'] = $course_description->get_default_description_title(); + $data['default_description_title_editable'] = $course_description->get_default_description_title_editable(); + $data['default_description_icon'] = $course_description->get_default_description_icon(); + $data['question'] = $course_description->get_default_question(); + $data['information'] = $course_description->get_default_information(); + $data['description_title'] = $_POST['title']; + $data['description_content'] = $_POST['contentDescription']; + $data['description_type'] = $_POST['description_type']; + $data['progress'] = $_POST['progress']; + $data['descriptions'] = $course_description->get_data_by_description_type($_POST['description_type']); + // render to the view + $this->view->set_data($data); + $this->view->set_layout('layout'); + $this->view->set_template('edit'); + $this->view->render(); + } + } else { + if (!empty($description_type)) { + $course_description_data = $course_description->get_data_by_description_type($description_type); + $data['default_description_titles'] = $course_description->get_default_description_title(); + $data['default_description_title_editable'] = $course_description->get_default_description_title_editable(); + $data['default_description_icon'] = $course_description->get_default_description_icon(); + $data['question'] = $course_description->get_default_question(); + $data['information'] = $course_description->get_default_information(); + $data['description_title'] = $course_description_data['description_title']; + $data['description_content'] = $course_description_data['description_content']; + $data['description_type'] = $description_type; + $data['progress'] = $course_description_data['progress']; + $data['descriptions'] = $course_description->get_data_by_description_type($description_type); + } + // render to the view + $this->view->set_data($data); + $this->view->set_layout('layout'); + $this->view->set_template('edit'); + $this->view->render(); + } + } + + /** + * It's used for adding a course description, + * render to listing or add view + */ + public function add() { + $course_description = new CourseDescription(); + $session_id = api_get_session_id(); + $course_description->set_session_id($session_id); + + $data = array(); + if (strtoupper($_SERVER['REQUEST_METHOD']) == "POST") { + if (!empty($_POST['title']) && !empty($_POST['contentDescription'])) { + + $check = Security::check_token(); + if ($check) { + $title = $_POST['title']; + if (api_get_setting('wcag_anysurfer_public_pages')=='true') { + $content = WCAG_Rendering::prepareXHTML(); + } else { + $content = $_POST['contentDescription']; + } + $description_type = $_POST['description_type']; + if ($description_type >= ADD_BLOCK) { + $course_description->set_description_type($description_type); + $course_description->set_title($title); + $course_description->set_content($content); + $affected_rows = $course_description->insert(); + } + Security::clear_token(); + } + if ($affected_rows) { + $message['add'] = true; + } + $this->listing(false,$message); + } else { + $data['error'] = 1; + $data['default_description_titles'] = $course_description->get_default_description_title(); + $data['default_description_title_editable'] = $course_description->get_default_description_title_editable(); + $data['default_description_icon'] = $course_description->get_default_description_icon(); + $data['question'] = $course_description->get_default_question(); + $data['information'] = $course_description->get_default_information(); + $data['description_title'] = $_POST['title']; + $data['description_content'] = $_POST['contentDescription']; + $data['description_type'] = $_POST['description_type']; + $this->view->set_data($data); + $this->view->set_layout('layout'); + $this->view->set_template('add'); + $this->view->render(); + } + } else { + $data['default_description_titles'] = $course_description->get_default_description_title(); + $data['default_description_title_editable'] = $course_description->get_default_description_title_editable(); + $data['default_description_icon'] = $course_description->get_default_description_icon(); + $data['question'] = $course_description->get_default_question(); + $data['information'] = $course_description->get_default_information(); + $data['description_type'] = $course_description->get_max_description_type(); + // render to the view + $this->view->set_data($data); + $this->view->set_layout('layout'); + $this->view->set_template('add'); + $this->view->render(); + } + } + + /** + * It's used for destroy a course description, + * render to listing view + * @param int description type + */ + public function destroy($description_type) { + $course_description = new CourseDescription(); + $session_id = api_get_session_id(); + $course_description->set_session_id($session_id); + if (!empty($description_type)) { + $course_description->set_description_type($description_type); + $affected_rows = $course_description->delete(); + } + if ($affected_rows) { + $message['destroy'] = true; + } + $this->listing(false,$message); + } + +} +?> \ No newline at end of file diff --git a/main/course_description/edit.php b/main/course_description/edit.php new file mode 100755 index 0000000000..ed211c71f2 --- /dev/null +++ b/main/course_description/edit.php @@ -0,0 +1,98 @@ + +*/ + +api_protect_course_script(true); + +$token = Security::get_token(); + +// display categories +$categories = array (); +foreach ($default_description_titles as $id => $title) { + $categories[$id] = $title; +} +$categories[ADD_BLOCK] = get_lang('NewBloc'); + +$i=1; +echo '
'; +ksort($categories); +foreach ($categories as $id => $title) { + if ($i==ADD_BLOCK) { + echo ''.Display::return_icon($default_description_icon[$id], $title, array('height'=>'22')).' '.$title.''; + break; + } else { + echo ''.Display::return_icon($default_description_icon[$id], $title, array('height'=>'22')).' '.$title.'  '; + $i++; + } +} +echo '
'; + +// error messages +if (isset($error) && intval($error) == 1) { + Display::display_error_message(get_lang('FormHasErrorsPleaseComplete'),false); +} + +// default header title form +$description_type = intval($description_type); +$header = $default_description_titles[$description_type]; +if ($description_type >= ADD_BLOCK) { + $header = $default_description_titles[ADD_BLOCK]; +} + +// display form +$form = new FormValidator('course_description','POST','index.php?action=edit&description_type='.$description_type.'&'.api_get_cidreq(),'','style="width: 100%;"'); +if ($description_type == THEMATIC_ADVANCE) { + $form->addElement('html','
+ '); +} else { + $form->addElement('header','',$header); +} +$form->addElement('hidden', 'description_type',$description_type); +$form->addElement('hidden', 'sec_token',$token); +$form->add_textfield('title', get_lang('Title'), true, array('size'=>'50')); +$form->applyFilter('title','html_filter'); + +if (api_get_setting('wcag_anysurfer_public_pages')=='true') { + WCAG_rendering::prepare_admin_form($description_content, $form); +} else { + $form->add_html_editor('contentDescription', get_lang('Content'), true, false, array('ToolbarSet' => 'TrainingDescription', 'Width' => '100%', 'Height' => '200')); +} + +if ($description_type == THEMATIC_ADVANCE) { + $options_select = array(0,10=>10,20=>20,30=>30,40=>40,50=>50,60=>60,70=>70,80=>80,90=>90,100=>100); + $form->addElement ('select', 'progress',get_lang('Progress'),$options_select); + $default['progress'] = intval($progress); +} + +$form->addElement('style_submit_button', null, get_lang('Save'), 'class="save"'); +// Set some default values +$default['title'] = Security::remove_XSS($description_title); +$default['contentDescription'] = Security::remove_XSS($description_content,STUDENT); +$default['description_type'] = $description_type; + +$form->setDefaults($default); + +//*********************************** +if (isset ($question[$description_type])) { + $message = ''.get_lang('QuestionPlan').'
'; + $message .= $question[$description_type]; + Display::display_normal_message($message, false); +} + + +if (api_get_setting('wcag_anysurfer_public_pages')=='true') { + echo (WCAG_Rendering::editor_header()); +} + +$form->display(); +if (api_get_setting('wcag_anysurfer_public_pages')=='true') { + echo (WCAG_Rendering::editor_footer()); +} + +?> \ No newline at end of file diff --git a/main/course_description/index.php b/main/course_description/index.php index 61919a7f05..7dd94d660c 100755 --- a/main/course_description/index.php +++ b/main/course_description/index.php @@ -1,47 +1,48 @@ - */ -/* -============================================================================== - INIT SECTION -============================================================================== -*/ // name of the language file that needs to be included $language_file = array ('course_description', 'pedaSuggest', 'accessibility'); -include '../inc/global.inc.php'; -$this_section = SECTION_COURSES; -$session_id = api_get_session_id(); +// including files +require_once '../inc/global.inc.php'; -include api_get_path(LIBRARY_PATH).'formvalidator/FormValidator.class.php'; +require_once api_get_path(LIBRARY_PATH).'course_description.lib.php'; +require_once api_get_path(LIBRARY_PATH).'app_view.php'; +require_once api_get_path(LIBRARY_PATH).'app_controller.php'; +require_once 'course_description_controller.php'; +require_once api_get_path(LIBRARY_PATH).'formvalidator/FormValidator.class.php'; +require_once api_get_path(LIBRARY_PATH).'WCAG/WCAG_rendering.php'; -include_once api_get_path(LIBRARY_PATH).'WCAG/WCAG_rendering.php'; -/* ------------------------------------------------------------ - Header ------------------------------------------------------------ -*/ +// defining constants +define('ADD_BLOCK', 9); +define('THEMATIC_ADVANCE', 8); -$interbreadcrumb[] = array ("url" => "index.php", "name" => get_lang('CourseProgram')); +// current section +$this_section = SECTION_COURSES; + +api_protect_course_script(true); + +// get actions +$actions = array('listing', 'add', 'edit', 'delete', 'history'); +$action = 'listing'; +if (isset($_GET['action']) && in_array($_GET['action'],$actions)) { + $action = $_GET['action']; +} -$description_type = isset ($_REQUEST['description_type']) ? Security::remove_XSS($_REQUEST['description_type']) : null; -$description_id = isset ($_REQUEST['description_id']) ? Security::remove_XSS($_REQUEST['description_id']) : null; -$action = isset($_GET['action'])?Security::remove_XSS($_GET['action']):''; -$edit = isset($_POST['edit'])?Security::remove_XSS($_POST['edit']):''; -$add = isset($_POST['add'])?Security::remove_XSS($_POST['add']):''; +$description_type = ''; +if (isset($_GET['description_type'])) { + $description_type = intval($_GET['description_type']); +} +// interbreadcrumb +$interbreadcrumb[] = array ("url" => "index.php", "name" => get_lang('CourseProgram')); if(intval($description_type) == 1) $interbreadcrumb[] = array ("url" => "#", "name" => get_lang('GeneralDescription')); if(intval($description_type) == 2) $interbreadcrumb[] = array ("url" => "#", "name" => get_lang('Objectives')); if(intval($description_type) == 3) $interbreadcrumb[] = array ("url" => "#", "name" => get_lang('Topics')); @@ -49,316 +50,36 @@ if(intval($description_type) == 4) $interbreadcrumb[] = array ("url" => "#", "na if(intval($description_type) == 5) $interbreadcrumb[] = array ("url" => "#", "name" => get_lang('CourseMaterial')); if(intval($description_type) == 6) $interbreadcrumb[] = array ("url" => "#", "name" => get_lang('HumanAndTechnicalResources')); if(intval($description_type) == 7) $interbreadcrumb[] = array ("url" => "#", "name" => get_lang('Assessment')); -if(intval($description_type) >= 8) $interbreadcrumb[] = array ("url" => "#", "name" => get_lang('NewBloc')); - -api_protect_course_script(true); -$nameTools = get_lang('CourseProgram'); -Display :: display_header(''); -//api_display_tool_title($nameTools); - - - -/* ------------------------------------------------------------ - Constants and variables ------------------------------------------------------------ -*/ -$nameTools = get_lang(TOOL_COURSE_DESCRIPTION); - - -/* ------------------------------------------------------------ - Introduction section ------------------------------------------------------------ -*/ -Display::display_introduction_section(TOOL_COURSE_DESCRIPTION); - - -$tbl_course_description = Database::get_course_table(TABLE_COURSE_DESCRIPTION); -$show_description_list = true; -$show_peda_suggest = true; -define('ADD_BLOCK', 8); -// Default descriptions -$default_description_titles = array(); -$default_description_titles[1]= get_lang('GeneralDescription'); -$default_description_titles[2]= get_lang('Objectives'); -$default_description_titles[3]= get_lang('Topics'); -$default_description_titles[4]= get_lang('Methodology'); -$default_description_titles[5]= get_lang('CourseMaterial'); -$default_description_titles[6]= get_lang('HumanAndTechnicalResources'); -$default_description_titles[7]= get_lang('Assessment'); -$default_description_titles[8]= get_lang('Other'); -$default_description_icon = array(); -$default_description_icon[1]= 'edu_miscellaneous.gif'; -$default_description_icon[2]= 'spire.gif'; -$default_description_icon[3]= 'kcmdf_big.gif'; -$default_description_icon[4]= 'misc.gif'; -$default_description_icon[5]= 'laptop.gif'; -$default_description_icon[6]= 'personal.gif'; -$default_description_icon[7]= 'korganizer.gif'; -$default_description_icon[8]= 'ktip.gif'; -$question = array(); -$question[1]= get_lang('GeneralDescriptionQuestions'); -$question[2]= get_lang('ObjectivesQuestions'); -$question[3]= get_lang('TopicsQuestions'); -$question[4]= get_lang('MethodologyQuestions'); -$question[5]= get_lang('CourseMaterialQuestions'); -$question[6]= get_lang('HumanAndTechnicalResourcesQuestions'); -$question[7]= get_lang('AssessmentQuestions'); -$information = array(); -$information[1]= get_lang('GeneralDescriptionInformation'); -$information[2]= get_lang('ObjectivesInformation'); -$information[3]= get_lang('TopicsInformation'); -$information[4]= get_lang('MethodologyInformation'); -$information[5]= get_lang('CourseMaterialInformation'); -$information[6]= get_lang('HumanAndTechnicalResourcesInformation'); -$information[7]= get_lang('AssessmentInformation'); -$default_description_title_editable = array(); -$default_description_title_editable[1] = true; -$default_description_title_editable[2] = true; -$default_description_title_editable[3] = true; -$default_description_title_editable[4] = true; -$default_description_title_editable[5] = true; -$default_description_title_editable[6] = true; -$default_description_title_editable[7] = true; - -/* ------------------------------------------------------------ - Tracking ------------------------------------------------------------ -*/ -event_access_tool(TOOL_COURSE_DESCRIPTION); - -/* -============================================================================== - MAIN CODE -============================================================================== -*/ - -$condition_session = api_get_session_condition($session_id, false); -$current_session_id = api_get_session_id(); - - -$sql = "SELECT description_type,title FROM $tbl_course_description $condition_session ORDER BY description_type "; - -$result = Database::query($sql, __FILE__, __LINE__); -while ($row = Database::fetch_array($result)) { - $default_description_titles[$row['description_type']] = $row['title']; -} - -$actions = array('add','delete','edit'); - -if ((api_is_allowed_to_edit(null,true) && !is_null($description_type)) || in_array($action,$actions)) { - - $description_id = intval($description_id); - $description_type = intval($description_type); - - // Delete a description block - if ($action == 'delete') { - $sql = "DELETE FROM $tbl_course_description WHERE id='".$description_id."'"; - Database::query($sql, __FILE__, __LINE__); - //update item_property (delete) - api_item_property_update(api_get_course_info(), TOOL_COURSE_DESCRIPTION, Database::escape_string($description_id), 'delete', api_get_user_id()); - Display :: display_confirmation_message(get_lang('CourseDescriptionDeleted')); - } - // Add or edit a description block - else { - - if (!empty($description_type)) { - $sql = "SELECT * FROM $tbl_course_description WHERE description_type='$description_type' AND session_id='$current_session_id'"; - $result = Database::query($sql, __FILE__, __LINE__); - if ($description = Database::fetch_array($result)) { - $default_description_titles[$description_type] = $description['title']; - $description_content = $description['content']; - - } else { - $current_title = $default_description_titles[$description_type]; - } - - } else { - $sql = "SELECT MAX(description_type) as MAX FROM $tbl_course_description $condition_session"; - $result = Database::query($sql, __FILE__, __LINE__); - $max= Database::fetch_array($result); - $description_type = $max['MAX']+1; - if ($description_type < ADD_BLOCK) { - $description_type=8; - } - } - //Se borro: echo '