diff --git a/main/inc/lib/display.lib.php b/main/inc/lib/display.lib.php index 22cd6be807..cc67c011be 100755 --- a/main/inc/lib/display.lib.php +++ b/main/inc/lib/display.lib.php @@ -12,32 +12,13 @@ * * @package chamilo.library */ -/* -all public functions are stored inside the Display class - - CLASS Display - - public functions inside - ---------------- - Display::display_localised_html_file($full_file_name) - Display::display_table_header() - Display::display_complex_table_header($properties, $column_header) - Display::display_table_row($bgcolor, $table_row, $is_alternating=true) - Display::display_table_footer() - Display::display_normal_message($message) - Display::display_error_message($message) - Display::encrypted_mailto_link($email, $clickable_text, $style_class='') - Display::get_platform_home_link_html($name = '') -*/ - /** * Display class * contains several public functions dealing with the display of * table data, messages, help topics, ... * -* @version 1.0.4 -* @package dokeos.library +* @package chamilo.library */ class Display { @@ -45,169 +26,158 @@ class Display { } /** - * Displays the tool introduction of a tool. - * - * @author Patrick Cool , Ghent University - * @param string $tool These are the constants that are used for indicating the tools. - * @param array $editor_config Optional configuration settings for the online editor. - * @return $tool return a string array list with the "define" in main_api.lib - * @return html code for adding an introduction - */ - public static function display_introduction_section ($tool, $editor_config = null) { + * Displays the tool introduction of a tool. + * + * @author Patrick Cool , Ghent University + * @param string $tool These are the constants that are used for indicating the tools. + * @param array $editor_config Optional configuration settings for the online editor. + * @return $tool return a string array list with the "define" in main_api.lib + * @return html code for adding an introduction + */ + public static function display_introduction_section($tool, $editor_config = null) { $is_allowed_to_edit = api_is_allowed_to_edit(); $moduleId = $tool; - if (api_get_setting('enable_tool_introduction') == 'true' || $tool==TOOL_COURSE_HOMEPAGE) - { - include (api_get_path(INCLUDE_PATH)."introductionSection.inc.php"); + if (api_get_setting('enable_tool_introduction') == 'true' || $tool == TOOL_COURSE_HOMEPAGE) { + require api_get_path(INCLUDE_PATH).'introductionSection.inc.php'; } } /** - * Displays a localised html file - * tries to show the file "$full_file_name"."_".$language_interface.".html" - * and if this does not exist, shows the file "$full_file_name".".html" - * warning this public function defines a global - * @param $full_file_name, the (path) name of the file, without .html - * @return return a string with the path - */ - public static function display_localised_html_file ($full_file_name) { + * Displays a localised html file + * tries to show the file "$full_file_name"."_".$language_interface.".html" + * and if this does not exist, shows the file "$full_file_name".".html" + * warning this public function defines a global + * @param $full_file_name, the (path) name of the file, without .html + * @return return a string with the path + */ + public static function display_localised_html_file($full_file_name) { global $language_interface; - $localised_file_name = $full_file_name."_".$language_interface.".html"; - $default_file_name = $full_file_name.".html"; - if (file_exists($localised_file_name)) - { - include ($localised_file_name); - } - else - { - include ($default_file_name); //default + $localised_file_name = $full_file_name.'_'.$language_interface.'.html'; + $default_file_name = $full_file_name.'.html'; + if (file_exists($localised_file_name)) { + include $localised_file_name; + } else { + include ($default_file_name); } } /** - * Display simple html header of table. - */ - public static function display_table_header () { - $bgcolor = "bgcolor='white'"; - echo ""; + * Display simple html header of table. + */ + public static function display_table_header() { + $bgcolor = 'bgcolor="white"'; + echo '
'; return $bgcolor; } /** - * Display html header of table with several options. - * - * @param $properties, array with elements, all of which have defaults - * "width" - the table width, e.g. "100%", default is 85% - * "class" - the class to use for the table, e.g. "class=\"data_table\"" - * "cellpadding" - the extra border in each cell, e.g. "8",default is 4 - * "cellspacing" - the extra space between cells, default = 0 - * @param column_header, array with the header elements. - * @author Roan Embrechts - * @version 1.01 - * @return return type string, bgcolor - */ - public static function display_complex_table_header ($properties, $column_header) { - $width = $properties["width"]; - if (!isset ($width)) - $width = "85%"; - $class = $properties["class"]; - if (!isset ($class)) - $class = "class=\"data_table\""; - $cellpadding = $properties["cellpadding"]; - if (!isset ($cellpadding)) - $cellpadding = "4"; - $cellspacing = $properties["cellspacing"]; - if (!isset ($cellspacing)) - $cellspacing = "0"; + * Display html header of table with several options. + * + * @param $properties, array with elements, all of which have defaults + * "width" - the table width, e.g. "100%", default is 85% + * "class" - the class to use for the table, e.g. "class=\"data_table\"" + * "cellpadding" - the extra border in each cell, e.g. "8",default is 4 + * "cellspacing" - the extra space between cells, default = 0 + * @param column_header, array with the header elements. + * @author Roan Embrechts + * @version 1.01 + * @return return type string, bgcolor + */ + public static function display_complex_table_header($properties, $column_header) { + $width = $properties['width']; + if (!isset($width)) { + $width = '85%'; + } + $class = $properties['class']; + if (!isset($class)) { + $class = 'class="data_table"'; + } + $cellpadding = $properties['cellpadding']; + if (!isset($cellpadding)) { + $cellpadding = '4'; + } + $cellspacing = $properties['cellspacing']; + if (!isset ($cellspacing)) { + $cellspacing = '0'; + } //... add more properties as you see fit - //api_display_debug_info("Dokeos light grey is " . DOKEOSLIGHTGREY); - $bgcolor = "bgcolor='".DOKEOSLIGHTGREY."'"; - echo "
\n"; - echo ""; - foreach ($column_header as $table_element) - { - echo ""; + //api_display_debug_info("Light grey is " . DOKEOSLIGHTGREY); + $bgcolor = 'bgcolor="'.DOKEOSLIGHTGREY.'"'; + echo '
".$table_element."
'."\n"; + echo ''; + foreach ($column_header as & $table_element) { + echo ''; } echo "\n"; echo "\n"; - $bgcolor = "bgcolor='".HTML_WHITE."'"; + $bgcolor = 'bgcolor="'.HTML_WHITE.'"'; return $bgcolor; } /** - * Displays a table row. - * - * @param $bgcolor the background colour for the table - * @param $table_row an array with the row elements - * @param $is_alternating true: the row colours alternate, false otherwise - */ - public static function display_table_row ($bgcolor, $table_row, $is_alternating = true) { - echo ""; - foreach ($table_row as $table_element) - { - echo ""; + * Displays a table row. + * + * @param $bgcolor the background colour for the table + * @param $table_row an array with the row elements + * @param $is_alternating true: the row colours alternate, false otherwise + */ + public static function display_table_row($bgcolor, $table_row, $is_alternating = true) { + echo ''; + foreach ($table_row as & $table_element) { + echo ''; } echo "\n"; - if ($is_alternating) - { - if ($bgcolor == "bgcolor='".HTML_WHITE."'") - { - $bgcolor = "bgcolor='".DOKEOSLIGHTGREY."'"; - } - else - { - if ($bgcolor == "bgcolor='".DOKEOSLIGHTGREY."'") - { - $bgcolor = "bgcolor='".HTML_WHITE."'"; - } + if ($is_alternating) { + if ($bgcolor == 'bgcolor="'.HTML_WHITE.'"') { + $bgcolor = 'bgcolor="'.DOKEOSLIGHTGREY.'"'; + } elseif ($bgcolor == 'bgcolor="'.DOKEOSLIGHTGREY.'"') { + $bgcolor = 'bgcolor="'.HTML_WHITE.'"'; } } return $bgcolor; } /** - * Displays a table row. - * This public function has more options and is easier to extend than display_table_row() - * - * @param $properties, array with properties: - * ["bgcolor"] - the background colour for the table - * ["is_alternating"] - true: the row colours alternate, false otherwise - * ["align_row"] - an array with, per cell, left|center|right - * @todo add valign property - */ - public static function display_complex_table_row ($properties, $table_row) { - $bgcolor = $properties["bgcolor"]; - $is_alternating = $properties["is_alternating"]; - $align_row = $properties["align_row"]; - echo ""; + * Displays a table row. + * This public function has more options and is easier to extend than display_table_row() + * + * @param $properties, array with properties: + * ["bgcolor"] - the background colour for the table + * ["is_alternating"] - true: the row colours alternate, false otherwise + * ["align_row"] - an array with, per cell, left|center|right + * @todo add valign property + */ + public static function display_complex_table_row($properties, $table_row) { + $bgcolor = $properties['bgcolor']; + $is_alternating = $properties['is_alternating']; + $align_row = $properties['align_row']; + echo ''; $number_cells = count($table_row); - for ($i = 0; $i < $number_cells; $i ++) - { + for ($i = 0; $i < $number_cells; $i++) { $cell_data = $table_row[$i]; $cell_align = $align_row[$i]; - echo ""; + echo ''; } echo "\n"; - if ($is_alternating) - { - if ($bgcolor == "bgcolor='".HTML_WHITE."'") - $bgcolor = "bgcolor='".DOKEOSLIGHTGREY."'"; - else - if ($bgcolor == "bgcolor='".DOKEOSLIGHTGREY."'") - $bgcolor = "bgcolor='".HTML_WHITE."'"; + if ($is_alternating) { + if ($bgcolor == 'bgcolor="'.HTML_WHITE.'"') { + $bgcolor = 'bgcolor="'.DOKEOSLIGHTGREY.'"'; + } elseif ($bgcolor == 'bgcolor="'.DOKEOSLIGHTGREY.'"') { + $bgcolor = 'bgcolor="'.HTML_WHITE.'"'; + } } return $bgcolor; } /** - * display html footer of table - */ + * Displays html footer of table + */ public static function display_table_footer() { - echo "
'.$table_element.'
".$table_element."
'.$table_element.'
".$cell_data."'.$cell_data.'
"; + echo ''; } /** - * Display a table + * Displays a table * @param array $header Titles for the table header * each item in this array can contain 3 values * - 1st element: the column title @@ -228,21 +198,21 @@ class Display { * @param string The style that the table will show. You can set 'table' or 'grid' * @author bart.mollet@hogent.be */ - public static function display_sortable_table ($header, $content, $sorting_options = array (), $paging_options = array (), $query_vars = null, $form_actions=array(), $style='table') { + public static function display_sortable_table($header, $content, $sorting_options = array(), $paging_options = array(), $query_vars = null, $form_actions = array(), $style = 'table') { if (!class_exists('SortableTable')) { require_once 'sortabletable.class.php'; } global $origin; - $column = isset ($sorting_options['column']) ? $sorting_options['column'] : 0; - $default_items_per_page = isset ($paging_options['per_page']) ? $paging_options['per_page'] : 20; + $column = isset($sorting_options['column']) ? $sorting_options['column'] : 0; + $default_items_per_page = isset($paging_options['per_page']) ? $paging_options['per_page'] : 20; $table = new SortableTableFromArray($content, $column, $default_items_per_page); if (is_array($query_vars)) { $table->set_additional_parameters($query_vars); } - if ($style=='table') { - if (is_array($header) && count($header)>0 ) { + if ($style == 'table') { + if (is_array($header) && count($header) > 0) { foreach ($header as $index => $header_item) { $table->set_header($index, $header_item[0], $header_item[1], $header_item[2], $header_item[3]); } @@ -253,6 +223,7 @@ class Display { $table->display_grid(); } } + /** * Shows a nice grid * @param string grid name (important to create css) @@ -270,13 +241,13 @@ class Display { * Can be also only a bool value. TRUE: show all columns, FALSE: show nothing */ - public static function display_sortable_grid ($name, $header, $content, $paging_options = array (), $query_vars = null, $form_actions=array(), $vibility_options = true) { + public static function display_sortable_grid($name, $header, $content, $paging_options = array(), $query_vars = null, $form_actions = array(), $vibility_options = true) { if (!class_exists('SortableTable')) { require_once 'sortabletable.class.php'; } global $origin; $column = 0; - $default_items_per_page = isset ($paging_options['per_page']) ? $paging_options['per_page'] : 20; + $default_items_per_page = isset($paging_options['per_page']) ? $paging_options['per_page'] : 20; $table = new SortableTableFromArray($content, $column, $default_items_per_page, $name); if (is_array($query_vars)) { @@ -286,7 +257,7 @@ class Display { } /** - * gets a nice grid in html string + * Gets a nice grid in html string * @param string grid name (important to create css) * @param array header content * @param array array with the information to show @@ -303,24 +274,23 @@ class Display { * @param bool true for sorting data or false otherwise * @return string html grid */ - public static function return_sortable_grid ($name, $header, $content, $paging_options = array (), $query_vars = null, $form_actions=array(), $vibility_options = true, $sort_data = true) { + public static function return_sortable_grid($name, $header, $content, $paging_options = array(), $query_vars = null, $form_actions = array(), $vibility_options = true, $sort_data = true) { if (!class_exists('SortableTable')) { require_once 'sortabletable.class.php'; } global $origin; $column = 0; - $default_items_per_page = isset ($paging_options['per_page']) ? $paging_options['per_page'] : 20; + $default_items_per_page = isset($paging_options['per_page']) ? $paging_options['per_page'] : 20; $table = new SortableTableFromArray($content, $column, $default_items_per_page, $name); if (is_array($query_vars)) { $table->set_additional_parameters($query_vars); } - //var_dump($table->get_additional_url_paramstring()); return $table->display_simple_grid($vibility_options, $paging_options['hide_navigation'], $paging_options['per_page'], $sort_data); } /** - * Display a table with a special configuration + * Displays a table with a special configuration * @param array $header Titles for the table header * each item in this array can contain 3 values * - 1st element: the column title @@ -345,31 +315,27 @@ class Display { * * @author Julio Montoya */ - - public static function display_sortable_config_table ($header, $content, $sorting_options = array (), $paging_options = array (), $query_vars = null, $column_show=array(),$column_order=array(),$form_actions=array()) { + public static function display_sortable_config_table($header, $content, $sorting_options = array(), $paging_options = array(), $query_vars = null, $column_show = array(), $column_order = array(), $form_actions = array()) { if (!class_exists('SortableTable')) { require_once 'sortabletable.class.php'; } global $origin; - $column = isset ($sorting_options['column']) ? $sorting_options['column'] : 0; - $default_items_per_page = isset ($paging_options['per_page']) ? $paging_options['per_page'] : 20; + $column = isset($sorting_options['column']) ? $sorting_options['column'] : 0; + $default_items_per_page = isset($paging_options['per_page']) ? $paging_options['per_page'] : 20; - $table = new SortableTableFromArrayConfig($content, $column, $default_items_per_page,'tablename',$column_show,$column_order); + $table = new SortableTableFromArrayConfig($content, $column, $default_items_per_page, 'tablename', $column_show, $column_order); if (is_array($query_vars)) { $table->set_additional_parameters($query_vars); } - // show or hide the columns header - if (is_array($column_show) ) - { - for ($i=0;$iset_header($i, $val0, $val1, $val2, $val3); } } @@ -378,31 +344,28 @@ class Display { $table->display(); } - /** - * Displays a normal message. It is recommended to use this public function - * to display any normal information messages. - * - * @author Roan Embrechts - * @param string $message - include any additional html - * tags if you need them - * @param bool Filter (true) or not (false) - * @return void - */ - public static function display_normal_message ($message,$filter=true) { - global $charset; - if($filter) { - //filter message - $message = api_htmlentities($message, ENT_QUOTES, api_is_xml_http_request() ? 'UTF-8' : $charset); - } - if (!headers_sent()) - { + * Displays a normal message. It is recommended to use this public function + * to display any normal information messages. + * + * @author Roan Embrechts + * @param string $message - include any additional html + * tags if you need them + * @param bool Filter (true) or not (false) + * @return void + */ + public static function display_normal_message ($message, $filter = true) { + if ($filter) { + // Filter message + $message = api_htmlentities($message, ENT_QUOTES, api_is_xml_http_request() ? 'UTF-8' : api_get_system_encoding()); + } + if (!headers_sent()) { echo ' '; + '; // TODO: There is no "default.css" file in this location. } echo '
'; //Display :: display_icon('message_normal.gif', get_lang('InfoMessage'), array ('style' => 'float:left; margin-right:10px;')); @@ -413,28 +376,26 @@ class Display { } /** - * Displays an warning message. Use this if you want to draw attention to something - * This can also be used for instance with the hint in the exercises - * - * @author Patrick Cool , Ghent University - * @param string $message - * @param bool Filter (true) or not (false) - * @return void - */ - public static function display_warning_message ($message,$filter=true) { - global $charset; - if($filter){ - //filter message - $message = api_htmlentities($message, ENT_QUOTES, api_is_xml_http_request() ? 'UTF-8' : $charset); + * Displays an warning message. Use this if you want to draw attention to something + * This can also be used for instance with the hint in the exercises + * + * @author Patrick Cool , Ghent University + * @param string $message + * @param bool Filter (true) or not (false) + * @return void + */ + public static function display_warning_message($message, $filter = true) { + if ($filter){ + // Filter message + $message = api_htmlentities($message, ENT_QUOTES, api_is_xml_http_request() ? 'UTF-8' : api_get_system_encoding()); } - if (!headers_sent()) - { + if (!headers_sent()) { echo ' '; + '; // TODO: There is no "default.css" file in this location. } echo '
'; //Display :: display_icon('message_warning.png', get_lang('WarningMessage'), array ('style' => 'float:left; margin-right:10px;')); @@ -445,27 +406,25 @@ class Display { } /** - * Displays an confirmation message. Use this if something has been done successfully - * - * @author Patrick Cool , Ghent University - * @param string $message - * @param bool Filter (true) or not (false) - * @return void - */ - public static function display_confirmation_message ($message,$filter=true) { - global $charset; - if($filter){ - //filter message - $message = api_htmlentities($message, ENT_QUOTES, api_is_xml_http_request() ? 'UTF-8' : $charset); + * Displays an confirmation message. Use this if something has been done successfully + * + * @author Patrick Cool , Ghent University + * @param string $message + * @param bool Filter (true) or not (false) + * @return void + */ + public static function display_confirmation_message ($message, $filter = true) { + if ($filter){ + // Filter message + $message = api_htmlentities($message, ENT_QUOTES, api_is_xml_http_request() ? 'UTF-8' : api_get_system_encoding()); } - if (!headers_sent()) - { + if (!headers_sent()) { echo ' '; + '; // TODO: There is no "default.css" file in this location. } echo '
'; //Display :: display_icon('message_confirmation.gif', get_lang('ConfirmationMessage'), array ('style' => 'float:left; margin-right:10px;margin-left:5px;')); @@ -476,31 +435,28 @@ class Display { } /** - * Displays an error message. It is recommended to use this public function if an error occurs - * - * @author Hugues Peeters - * @author Roan Embrechts - * @author Patrick Cool , Ghent University - * @param string $message - include any additional html - * tags if you need them - * @param bool Filter (true) or not (false) - * @return void - */ - public static function display_error_message ($message,$filter=true) { - global $charset; + * Displays an error message. It is recommended to use this public function if an error occurs + * + * @author Hugues Peeters + * @author Roan Embrechts + * @author Patrick Cool , Ghent University + * @param string $message - include any additional html + * tags if you need them + * @param bool Filter (true) or not (false) + * @return void + */ + public static function display_error_message ($message, $filter = true) { if($filter){ - //filter message - $message = api_htmlentities($message, ENT_QUOTES, api_is_xml_http_request() ? 'UTF-8' : $charset); + // Filter message + $message = api_htmlentities($message, ENT_QUOTES, api_is_xml_http_request() ? 'UTF-8' : api_get_system_encoding()); } - - if (!headers_sent()) - { + if (!headers_sent()) { echo ' '; + '; // TODO: There is no "default.css" file in this location. } echo '
'; //Display :: display_icon('message_error.png', get_lang('ErrorMessage'), array ('style' => 'float:left; margin-right:10px;')); @@ -509,8 +465,9 @@ class Display { */ echo $message.'
'; } + /** - * Return an encrypted mailto hyperlink + * Returns an encrypted mailto hyperlink * * @param - $email (string) - e-mail * @param - $text (string) - clickable text @@ -518,86 +475,85 @@ class Display { * @return - encrypted mailto hyperlink */ public static function encrypted_mailto_link ($email, $clickable_text = null, $style_class = '') { - global $charset; - if (is_null($clickable_text)) - { + if (is_null($clickable_text)) { $clickable_text = $email; } - //mailto already present? + // "mailto:" already present? if (substr($email, 0, 7) != 'mailto:') { $email = 'mailto:'.$email; } - //class (stylesheet) defined? + // Class (stylesheet) defined? if ($style_class != '') { $style_class = ' class="'.$style_class.'"'; } - //encrypt email + // Encrypt email $hmail = ''; for ($i = 0; $i < strlen($email); $i ++) { $hmail .= '&#'.ord($email { $i }).';'; } - //encrypt clickable text if @ is present + // Encrypt clickable text if @ is present if (strpos($clickable_text, '@')) { - for ($i = 0; $i < strlen($clickable_text); $i ++) { $hclickable_text .= '&#'.ord($clickable_text { $i }).';'; } } else { - $hclickable_text = htmlspecialchars($clickable_text,ENT_QUOTES,$charset); + $hclickable_text = @htmlspecialchars($clickable_text, ENT_QUOTES, api_get_system_encoding()); } - - //return encrypted mailto hyperlink + // Return encrypted mailto hyperlink return ''.$hclickable_text.''; } /** - * Create a hyperlink to the platform homepage. - * @param string $name, the visible name of the hyperlink, default is sitename - * @return string with html code for hyperlink - */ - public static function get_platform_home_link_html ($name = '') { - if ($name == '') - { + * Creates a hyperlink to the platform homepage. + * @param string $name, the visible name of the hyperlink, default is sitename + * @return string with html code for hyperlink + */ + public static function get_platform_home_link_html($name = '') { + if ($name == '') { $name = api_get_setting('siteName'); } - return "$name"; + return ''.$name.''; } + /** - * Display the page header + * Displays the page header * @param string The name of the page (will be showed in the page title) * @param string Optional help file name */ - public static function display_header ($tool_name ='', $help = NULL) { + public static function display_header($tool_name ='', $help = null) { $nameTools = $tool_name; - global $_plugins,$lp_theme_css,$mycoursetheme,$user_theme,$platform_theme; + global $_plugins, $lp_theme_css, $mycoursetheme, $user_theme, $platform_theme; global $httpHeadXtra, $htmlHeadXtra, $htmlIncHeadXtra, $_course, $_user, $clarolineRepositoryWeb, $text_dir, $plugins, $_user, $rootAdminWeb, $_cid, $interbreadcrumb, $charset, $language_file, $noPHP_SELF; global $menu_navigation; - include (api_get_path(INCLUDE_PATH)."header.inc.php"); + require api_get_path(INCLUDE_PATH).'header.inc.php'; } + /** - * Display the reduced page header (without banner) + * Displays the reduced page header (without banner) */ public static function display_reduced_header () { - global $_plugins,$lp_theme_css,$mycoursetheme,$user_theme,$platform_theme; + global $_plugins, $lp_theme_css, $mycoursetheme, $user_theme, $platform_theme; global $httpHeadXtra, $htmlHeadXtra, $htmlIncHeadXtra, $_course, $_user, $clarolineRepositoryWeb, $text_dir, $plugins, $_user, $rootAdminWeb, $_cid, $interbreadcrumb, $charset, $language_file, $noPHP_SELF, $language_interface; global $menu_navigation; - include (api_get_path(INCLUDE_PATH)."reduced_header.inc.php"); + require api_get_path(INCLUDE_PATH).'reduced_header.inc.php'; } + /** * Display the page footer */ public static function display_footer () { global $_plugins; - include (api_get_path(INCLUDE_PATH)."footer.inc.php"); + require api_get_path(INCLUDE_PATH).'footer.inc.php'; } /** - * Print an