$(function() { $("#all_langs").change(function() { var checkboxes = $(this).closest("form").find("#table_langs").find(":checkbox"); checkboxes.prop("checked", $(this).is(":checked")); }); }); '; $action = isset($_GET['action']) ? Security::remove_XSS($_GET['action']) : null; $tbl_category = Database::get_main_table(TABLE_MAIN_CATEGORY); $tool_name = get_lang('ConfigureHomePage'); $_languages = api_get_languages(); $selfUrl = api_get_self(); $interbreadcrumb[] = [ 'url' => 'index.php', 'name' => get_lang('PlatformAdmin'), ]; if (!empty($action)) { $interbreadcrumb[] = [ 'url' => 'configure_homepage.php', 'name' => get_lang('ConfigureHomePage'), ]; switch ($action) { case 'edit_top': $tool_name = get_lang('EditHomePage'); break; case 'edit_news': $tool_name = get_lang('EditNews'); break; case 'edit_notice': $tool_name = get_lang('EditNotice'); break; case 'insert_link': $tool_name = get_lang('InsertLink'); break; case 'edit_link': $tool_name = get_lang('EditLink'); break; case 'insert_tabs': $tool_name = get_lang('InsertTabs'); break; case 'edit_tabs': $tool_name = get_lang('EditTabs'); break; } } // The global logic for language priorities should be: // - take language selected when connecting ($_SESSION['user_language_choice']) // or last language selected (taken from select box into SESSION by global.inc.php) // or, if unavailable; // - take default user language ($_SESSION['_user']['language']) - which is taken from // the database in local.inc.php or, if unavailable; // - take platform language (taken from the database campus setting 'platformLanguage') // Then if a language file doesn't exist, it should be created. // The default language for the homepage should use the default platform language // (if nothing else is selected), which means the 'no-language' file should be taken // to fill a new 'language-specified' language file, and then only the latter should be // modified. The original 'no-language' files should never be modified. // ----- Language selection ----- // The final language selected and used everywhere in this script follows the rules // described above and is put into "$lang". Because this script includes // global.inc.php, the variables used for language purposes below are considered safe. $lang = ''; //el for "Edit Language" if (!empty($_SESSION['user_language_choice'])) { $lang = $_SESSION['user_language_choice']; } elseif (!empty($_SESSION['_user']['language'])) { $lang = $_SESSION['_user']['language']; } else { $lang = api_get_setting('platformLanguage'); } $languageGet = isset($_GET['language']) ? Security::remove_XSS($_GET['language']) : $lang; // Ensuring availability of main files in the corresponding language $homePath = api_get_path(SYS_HOME_PATH); if (api_is_multiple_url_enabled()) { $access_url_id = api_get_current_access_url_id(); if ($access_url_id != -1) { $url_info = api_get_access_url($access_url_id); $url = api_remove_trailing_slash(preg_replace('/https?:\/\//i', '', $url_info['url'])); $clean_url = api_replace_dangerous_char($url); $clean_url = str_replace('/', '-', $clean_url); $clean_url .= '/'; $homep = $homePath; //homep for Home Path $homep_new = $homePath.$clean_url; //homep for Home Path added the url $new_url_dir = $homePath.$clean_url; //we create the new dir for the new sites if (!is_dir($new_url_dir)) { mkdir($new_url_dir, api_get_permissions_for_new_directories()); } } } else { $homep_new = ''; $homep = $homePath; //homep for Home Path } $menuf = 'home_menu'; //menuf for Menu File $newsf = 'home_news'; //newsf for News File $topf = 'home_top'; //topf for Top File $noticef = 'home_notice'; //noticef for Notice File $menutabs = 'home_tabs'; //menutabs for tabs Menu $mtloggedin = 'home_tabs_logged_in'; //menutabs for tabs Menu $ext = '.html'; //ext for HTML Extension - when used frequently, variables are // faster than hardcoded strings $homef = [$menuf, $newsf, $topf, $noticef, $menutabs, $mtloggedin]; // If language-specific file does not exist, create it by copying default file foreach ($homef as $my_file) { if (api_is_multiple_url_enabled()) { if (!file_exists($homep_new.$my_file.'_'.$lang.$ext)) { if (!file_exists($homep.$my_file.$ext)) { touch($homep.$my_file.$ext); } @copy($homep.$my_file.$ext, $homep_new.$my_file.'_'.$lang.$ext); } } else { if (!file_exists($homep.$my_file.'_'.$lang.$ext)) { if (!file_exists($homep.$my_file.$ext)) { touch($homep.$my_file.$ext); } @copy($homep.$my_file.$ext, $homep.$my_file.'_'.$lang.$ext); } } } if (api_is_multiple_url_enabled()) { $homep = $homep_new; } // Check WCAG settings and prepare edition using WCAG $errorMsg = ''; // Filter link param $link = ''; if (!empty($_GET['link'])) { $link = $_GET['link']; // If the link parameter is suspicious, empty it if (strstr($link, '/') || !strstr($link, '.html') || strstr($link, '\\')) { $link = ''; $action = ''; } } // Start analysing requested actions if (!empty($action)) { if (!empty($_POST['formSent'])) { // Variables used are $homep for home path, $menuf for menu file, $newsf // for news file, $topf for top file, $noticef for noticefile, // $ext for '.html' switch ($action) { case 'edit_top': // Filter $home_top = trim(stripslashes($_POST['home_top'])); // Write if (is_writable($homep)) { // Default if (is_writable($homep.$topf.'_'.$lang.$ext)) { $fp = fopen($homep.$topf.'_'.$lang.$ext, 'w'); fputs($fp, $home_top); fclose($fp); // Language foreach ($_languages['name'] as $key => $value) { $lang_name = $_languages['folder'][$key]; if (isset($_POST[$lang_name])) { $fp = fopen($homep.$topf.'_'.$lang_name.$ext, 'w'); fputs($fp, $home_top); fclose($fp); } } } else { $errorMsg = get_lang('HomePageFilesNotWritable'); } } else { //File does not exist $fp = fopen($homep.$topf.'_'.$lang.$ext, 'w'); fputs($fp, $home_top); fclose($fp); foreach ($_languages['name'] as $key => $value) { $lang_name = $_languages['folder'][$key]; if (isset($_POST[$lang_name])) { if (file_exists($homep.$topf.'_'.$lang_name.$ext)) { $fp = fopen($homep.$topf.'_'.$lang_name.$ext, 'w'); fputs($fp, $home_top); fclose($fp); } } } } if (EventsMail::check_if_using_class('portal_homepage_edited')) { EventsDispatcher::events('portal_homepage_edited', ['about_user' => api_get_user_id()]); } Event::addEvent( LOG_HOMEPAGE_CHANGED, 'edit_top', cut(strip_tags($home_top), 254), api_get_utc_datetime(), api_get_user_id() ); break; case 'edit_notice': // Filter $notice_title = trim(strip_tags(stripslashes($_POST['notice_title']))); $notice_text = trim(str_replace(["\r", "\n"], ['', '
'], strip_tags(stripslashes($_POST['notice_text']), ''))); if (empty($notice_title) || empty($notice_text)) { $errorMsg = get_lang('NoticeWillBeNotDisplayed'); } // Write if (file_exists($homep.$noticef.'_'.$lang.$ext)) { if (is_writable($homep.$noticef.'_'.$lang.$ext)) { $fp = fopen($homep.$noticef.'_'.$lang.$ext, 'w'); if ($errorMsg == '') { fputs($fp, "
$notice_title

\n$notice_text"); foreach ($_languages['name'] as $key => $value) { $lang_name = $_languages['folder'][$key]; if (isset($_POST[$lang_name])) { if (file_exists($homep.$noticef.'_'.$lang_name.$ext)) { if (is_writable($homep.$noticef.'_'.$lang_name.$ext)) { $fp = fopen($homep.$noticef.'_'.$lang_name.$ext, 'w'); fputs($fp, "

$notice_title

\n$notice_text"); fclose($fp); } } } } } else { fputs($fp, ''); foreach ($_languages['name'] as $key => $value) { $lang_name = $_languages['folder'][$key]; if (isset($_POST[$lang_name])) { if (file_exists($homep.$noticef.'_'.$lang_name.$ext)) { $fp1 = fopen($homep.$noticef.'_'.$lang_name.$ext, 'w'); fputs($fp1, ''); fclose($fp1); } } } } fclose($fp); } else { $errorMsg .= "
\n".get_lang('HomePageFilesNotWritable'); } } else { //File does not exist $fp = fopen($homep.$noticef.'_'.$lang.$ext, 'w'); fputs($fp, "

$notice_title

\n$notice_text"); fclose($fp); } Event::addEvent( LOG_HOMEPAGE_CHANGED, 'edit_notice', cut(strip_tags($notice_title), 254), api_get_utc_datetime(), api_get_user_id() ); break; case 'edit_news': //Filter $home_news = trim(stripslashes($_POST['home_news'])); //Write if ($s_languages_news != 'all') { if (file_exists($homep.$newsf.'_'.$s_languages_news.$ext)) { if (is_writable($homep.$newsf.'_'.$s_languages_news.$ext)) { $fp = fopen($homep.$newsf.'_'.$s_languages_news.$ext, 'w'); fputs($fp, $home_news); fclose($fp); } else { $errorMsg = get_lang('HomePageFilesNotWritable'); } } else { // File does not exist $fp = fopen($homep.$newsf.'_'.$s_languages_news.$ext, 'w'); fputs($fp, $home_news); fclose($fp); } } else { // We update all the news file foreach ($_languages['name'] as $key => $value) { $english_name = $_languages['folder'][$key]; if (file_exists($homep.$newsf.'_'.$english_name.$ext)) { if (is_writable($homep.$newsf.'_'.$english_name.$ext)) { $fp = fopen($homep.$newsf.'_'.$english_name.$ext, 'w'); fputs($fp, $home_news); fclose($fp); } else { $errorMsg = get_lang('HomePageFilesNotWritable'); } } else { // File does not exist $fp = fopen($homep.$newsf.'_'.$english_name.$ext, 'w'); fputs($fp, $home_news); fclose($fp); } } } Event::addEvent( LOG_HOMEPAGE_CHANGED, 'edit_news', strip_tags(cut($home_news, 254)), api_get_utc_datetime(), api_get_user_id() ); break; case 'insert_tabs': case 'edit_tabs': case 'insert_link': case 'edit_link': $link_index = (isset($_POST['link_index']) ? intval($_POST['link_index']) : 0); $insert_where = (isset($_POST['insert_where']) ? intval($_POST['insert_where']) : 0); $link_name = trim(stripslashes($_POST['link_name'])); $link_url = trim(stripslashes($_POST['link_url'])); $add_in_tab = (isset($_POST['add_in_tab']) ? intval($_POST['add_in_tab']) : 0); $link_html = trim(stripslashes($_POST['link_html'])); $filename = trim(stripslashes($_POST['filename'])); $target_blank = isset($_POST['target_blank']); if ($link_url == 'http://' || $link_url == 'https://') { $link_url = ''; } elseif (!empty($link_url) && !strstr($link_url, '://')) { $link_url = 'http://'.$link_url; } $menuf = ($action == 'insert_tabs' || $action == 'edit_tabs') ? $mtloggedin : $menuf; if (!is_writable($homep.$menuf.'_'.$lang.$ext)) { $errorMsg = get_lang('HomePageFilesNotWritable'); } elseif (empty($link_name)) { $errorMsg = get_lang('PleaseEnterLinkName'); } else { // New links are added as new files in the home/ directory if ($action == 'insert_link' || $action == 'insert_tabs' || empty($filename) || strstr($filename, '/') || !strstr($filename, '.html')) { $filename = api_replace_dangerous_char($link_name).'.html'; } // "home_" prefix for links are renamed to "user_" prefix (to avoid name clash with existing home page files) if (!empty($filename)) { $filename = str_replace('home_', 'user_', $filename); } // If the typical language suffix is not found in the file name, // replace the ".html" suffix by "_en.html" or the active menu language if (!strstr($filename, '_'.$lang.$ext)) { $filename = str_replace($ext, '_'.$lang.$ext, $filename); } // Get the contents of home_menu_en.html (or active menu language // version) into $home_menu as an array of one entry per line $home_menu = file($homep.$menuf.'_'.$lang.$ext); $home_menu = implode("\n", $home_menu); $home_menu = api_to_system_encoding($home_menu, api_detect_encoding(strip_tags($home_menu))); $home_menu = explode("\n", $home_menu); $home_menu = array_values(array_filter(array_map('trim', $home_menu), 'strlen')); // Prepare place to insert the new link into (default is end of file) if ($insert_where < -1 || $insert_where > (sizeof($home_menu) - 1)) { $insert_where = sizeof($home_menu) - 1; } // // For each line of the file, remove trailing spaces and special chars //foreach ($home_menu as $key => $enreg) { // $home_menu[$key] = trim($enreg); //} // // If the given link url is empty, then replace the link url by a link to the link file created if (empty($link_url) || $link_url == 'http://' || $link_url == 'https://') { $link_url = api_get_path(WEB_PATH).'index.php?include='.urlencode($filename); // If the file doesn't exist, then create it and // fill it with default text $fp = @fopen($homep.$filename, 'w'); if ($fp) { if (empty($link_html)) { fputs($fp, get_lang('MyTextHere')); home_tabs($homep.$filename); } else { fputs($fp, $link_html); home_tabs($homep.$filename); } fclose($fp); } } // If the requested action is to edit a link, open the file and // write to it (if the file doesn't exist, create it) if (in_array($action, ['edit_link']) && !empty($link_html)) { $fp = @fopen($homep.$filename, 'w'); if ($fp) { fputs($fp, $link_html); home_tabs($homep.$filename); fclose($fp); } } $class_add_in_tab = 'class="show_menu"'; if (!$add_in_tab) { $class_add_in_tab = 'class="hide_menu"'; } // If the requested action is to create a link, make some room // for the new link in the home_menu array at the requested place // and insert the new link there if ($action == 'insert_link' || $action == 'insert_tabs') { for ($i = sizeof($home_menu); $i; $i--) { if ($i > $insert_where) { $home_menu[$i] = $home_menu[$i - 1]; } else { break; } } $home_menu[$insert_where + 1] = '

  • '.$link_name.'
  • '; } else { // If the request is about a link edition, change the link $home_menu[$link_index] = '
  • '.$link_name.'
  • '; } // Re-build the file from the home_menu array $home_menu = implode("\n", $home_menu); // Write if (file_exists($homep.$menuf.'_'.$lang.$ext)) { if (is_writable($homep.$menuf.'_'.$lang.$ext)) { $fp = fopen($homep.$menuf.'_'.$lang.$ext, 'w'); fputs($fp, $home_menu); home_tabs($homep.$menuf.'_'.$lang.$ext); fclose($fp); foreach ($_languages['name'] as $key => $value) { $lang_name = $_languages['folder'][$key]; if (isset($_POST[$lang_name])) { $fp = fopen($homep.$menuf.'_'.$lang_name.$ext, 'w'); fputs($fp, $home_menu); home_tabs($homep.$menuf.'_'.$lang_name.$ext); fclose($fp); } } if (file_exists($homep.$menuf.$ext)) { if (is_writable($homep.$menuf.$ext)) { $fpo = fopen($homep.$menuf.$ext, 'w'); fputs($fpo, $home_menu); home_tabs($homep.$menuf.$ext); fclose($fpo); } } } else { $errorMsg = get_lang('HomePageFilesNotWritable'); } } else { //File does not exist $fp = fopen($homep.$menuf.'_'.$lang.$ext, 'w'); fputs($fp, $home_menu); home_tabs($homep.$menuf.'_'.$lang.$ext); fclose($fp); foreach ($_languages['name'] as $key => $value) { $lang_name = $_languages['folder'][$key]; if (isset($_POST[$lang_name])) { $fp = fopen($homep.$menuf.'_'.$lang_name.$ext, 'w'); fputs($fp, $home_menu); home_tabs($homep.$menuf.'_'.$lang_name.$ext); fclose($fp); } } } } Event::addEvent( LOG_HOMEPAGE_CHANGED, $action, cut($link_name.':'.$link_url, 254), api_get_utc_datetime(), api_get_user_id() ); break; } //end of switch($action) if (empty($errorMsg)) { header('Location: '.$selfUrl.'?language='.$languageGet); exit(); } } else { //if POST[formSent] is not set switch ($action) { case 'open_link': // Previously, filtering of GET['link'] was done here but it left // a security threat. Filtering has now been moved outside conditions break; case 'delete_tabs': case 'delete_link': // A link is deleted by getting the file into an array, removing the // link and re-writing the array to the file $link_index = intval($_GET['link_index']); $menuf = ($action == 'delete_tabs') ? $mtloggedin : $menuf; $home_menu = @file($homep.$menuf.'_'.$lang.$ext); if (empty($home_menu)) { $home_menu = []; } foreach ($home_menu as $key => $enreg) { if ($key == $link_index) { unset($home_menu[$key]); } else { $home_menu[$key] = trim($enreg); } } $home_menu = implode("\n", $home_menu); $home_menu = api_to_system_encoding($home_menu, api_detect_encoding(strip_tags($home_menu))); $fp = fopen($homep.$menuf.'_'.$lang.$ext, 'w'); fputs($fp, $home_menu); home_tabs($homep.$menuf.'_'.$lang.$ext); fclose($fp); if (file_exists($homep.$menuf.$ext)) { if (is_writable($homep.$menuf.$ext)) { $fpo = fopen($homep.$menuf.$ext, 'w'); fputs($fpo, $home_menu); home_tabs($homep.$menuf.$ext); fclose($fpo); } } header('Location: '.$selfUrl); exit(); break; case 'edit_top': // This request is only the preparation for the update of the home_top $home_top = ''; if (is_file($homep.$topf.'_'.$lang.$ext) && is_readable($homep.$topf.'_'.$lang.$ext)) { $home_top = @(string) file_get_contents($homep.$topf.'_'.$lang.$ext); } elseif (is_file($homep.$topf.$lang.$ext) && is_readable($homep.$topf.$lang.$ext)) { $home_top = @(string) file_get_contents($homep.$topf.$lang.$ext); } else { $errorMsg = get_lang('HomePageFilesNotReadable'); } $home_top = api_to_system_encoding($home_top, api_detect_encoding(strip_tags($home_top))); break; case 'edit_notice': // This request is only the preparation for the update of the home_notice $home_notice = ''; if (is_file($homep.$noticef.'_'.$lang.$ext) && is_readable($homep.$noticef.'_'.$lang.$ext)) { $home_notice = @file($homep.$noticef.'_'.$lang.$ext); } elseif (is_file($homep.$noticef.$lang.$ext) && is_readable($homep.$noticef.$lang.$ext)) { $home_notice = @file($homep.$noticef.$lang.$ext); } else { $errorMsg = get_lang('HomePageFilesNotReadable'); } if (empty($home_notice)) { $home_notice = []; } $notice_title = strip_tags($home_notice[0]); $notice_title = api_to_system_encoding($notice_title, api_detect_encoding($notice_title)); $notice_text = strip_tags(str_replace('
    ', "\n", $home_notice[1]), ''); $notice_text = api_to_system_encoding($notice_text, api_detect_encoding(strip_tags($notice_text))); break; case 'edit_news': // This request is the preparation for the update of the home_news page $home_news = ''; if (is_file($homep.$newsf.'_'.$lang.$ext) && is_readable($homep.$newsf.'_'.$lang.$ext)) { $home_news = @(string) file_get_contents($homep.$newsf.'_'.$lang.$ext); } elseif (is_file($homep.$newsf.$lang.$ext) && is_readable($homep.$newsf.$lang.$ext)) { $home_news = @(string) file_get_contents($homep.$newsf.$lang.$ext); } else { $errorMsg = get_lang('HomePageFilesNotReadable'); } $home_news = api_to_system_encoding($home_news, api_detect_encoding(strip_tags($home_news))); break; case 'insert_link': // This request is the preparation for the addition of an item in home_menu $home_menu = ''; $menuf = ($action == 'edit_tabs') ? $mtloggedin : $menuf; if (is_file($homep.$menuf.'_'.$lang.$ext) && is_readable($homep.$menuf.'_'.$lang.$ext)) { $home_menu = @file($homep.$menuf.'_'.$lang.$ext); } elseif (is_file($homep.$menuf.$lang.$ext) && is_readable($homep.$menuf.$lang.$ext)) { $home_menu = @file($homep.$menuf.$lang.$ext); } else { $errorMsg = get_lang('HomePageFilesNotReadable'); } if (empty($home_menu)) { $home_menu = []; } if (!empty($home_menu)) { $home_menu = implode("\n", $home_menu); $home_menu = api_to_system_encoding($home_menu, api_detect_encoding(strip_tags($home_menu))); $home_menu = explode("\n", $home_menu); } $home_menu = array_values(array_filter(array_map('trim', $home_menu), 'strlen')); break; case 'insert_tabs': // This request is the preparation for the addition of an item in home_menu $home_menu = ''; if (is_file($homep.$mtloggedin.'_'.$lang.$ext) && is_readable($homep.$mtloggedin.'_'.$lang.$ext)) { $home_menu = @file($homep.$mtloggedin.'_'.$lang.$ext); } elseif (is_file($homep.$mtloggedin.$lang.$ext) && is_readable($homep.$mtloggedin.$lang.$ext)) { $home_menu = @file($homep.$mtloggedin.$lang.$ext); } elseif (touch($homep.$mtloggedin.'_'.$lang.$ext)) { $home_menu = @file($homep.$mtloggedin.'_'.$lang.$ext); } else { $errorMsg = get_lang('HomePageFilesNotReadable'); } if (empty($home_menu)) { $home_menu = []; } if (!empty($home_menu)) { $home_menu = implode("\n", $home_menu); $home_menu = api_to_system_encoding($home_menu, api_detect_encoding(strip_tags($home_menu))); $home_menu = explode("\n", $home_menu); } $home_menu = array_values(array_filter(array_map('trim', $home_menu), 'strlen')); break; case 'edit_tabs': case 'edit_link': // This request is the preparation for the edition of the links array $home_menu = ''; $menuf = ($action == 'edit_tabs') ? $mtloggedin : $menuf; if (is_file($homep.$menuf.'_'.$lang.$ext) && is_readable($homep.$menuf.'_'.$lang.$ext)) { $home_menu = @file($homep.$menuf.'_'.$lang.$ext); } elseif (is_file($homep.$menuf.$lang.$ext) && is_readable($homep.$menuf.$lang.$ext)) { $home_menu = @file($homep.$menuf.$lang.$ext); } else { $errorMsg = get_lang('HomePageFilesNotReadable'); } if (empty($home_menu)) { if (file_exists($homep.$menutabs.'_'.$lang.$ext)) { $home_menu = @file($homep.$menutabs.'_'.$lang.$ext); } } if (empty($home_menu)) { $home_menu = []; } if (!empty($home_menu)) { $home_menu = implode("\n", $home_menu); $home_menu = api_to_system_encoding($home_menu, api_detect_encoding(strip_tags($home_menu))); $home_menu = explode("\n", $home_menu); } $link_index = intval($_GET['link_index']); $target_blank = false; $link_name = ''; $link_url = ''; //$home_menu_new = array(); // //Cleaning array //foreach ($home_menu as $item) { // if(!empty($item)) { // $home_menu_new[] = $item; // } //} //$home_menu = $home_menu_new; // Cleaning the array $home_menu = array_values(array_filter(array_map('trim', $home_menu), 'strlen')); // For each line of the home_menu file foreach ($home_menu as $key => $enreg) { // Check if the current item is the one we want to update if ($key == $link_index) { // This is the link we want to update // Check if the target should be "_blank" if (strstr($enreg, 'target="_blank"')) { $target_blank = true; } if (strstr($enreg, 'hide_menu')) { $add_in_tab = false; } else { $add_in_tab = true; } // Remove dangerous HTML tags from the link itself (this is an // additional measure in case a link previously contained // unsecure tags) $link_name = strip_tags($enreg); // Get the contents of "href" attribute in $link_url $enreg = explode('href="', $enreg); list($link_url) = explode('"', $enreg[sizeof($enreg) - 1]); // If the link contains the web root of this portal, then strip // it off and keep only the name of the file that needs edition if (strstr($link_url, '?include=')) { $link_url = explode('?include=', $link_url); $filename = $link_url[sizeof($link_url) - 1]; if (!strstr($filename, '/') && strstr($filename, '.html')) { // Get oonly the contents of the link file $link_html = @file($homep.$filename); $link_html = implode('', $link_html); $link_url = ''; } else { $filename = ''; } } break; } } break; }//end of second switch($action) (when POST['formSent'] was not set, yet) }// end of "else" in if($_POST['formSent']) condition } else { //if $action is empty, then prepare a list of the course categories to display (?) $Categories = CourseCategory::getCategoriesToDisplayInHomePage(); } // Display section Display::display_header($tool_name); switch ($action) { case 'open_link': if (!empty($link)) { // $link is only set in case of action=open_link and is filtered $open = @(string) file_get_contents($homep.$link); $open = api_to_system_encoding($open, api_detect_encoding(strip_tags($open))); echo $open; } break; case 'edit_notice': // Display for edit_notice case ?>

    'margin: 0px;']); $renderer = &$form->defaultRenderer(); $form->addElement('header', '', $tool_name); $form->addElement('hidden', 'formSent', '1'); $form->addElement('hidden', 'link_index', ($action == 'edit_link' || $action == 'edit_tabs') ? $link_index : '0'); $form->addElement('hidden', 'filename', ($action == 'edit_link' || $action == 'edit_tabs') ? (!empty($filename) ? $filename : '') : ''); $form->addElement('text', 'link_name', get_lang('LinkName'), ['size' => '30', 'maxlength' => '50']); if (!empty($link_name)) { $default['link_name'] = $link_name; } $default['link_url'] = empty($link_url) ? 'http://' : api_htmlentities($link_url, ENT_QUOTES); $linkUrlComment = ($action == 'insert_tabs') ? get_lang('Optional').'
    '.get_lang('GlobalLinkUseDoubleColumnPrivateToShowPrivately') : ''; $form->addElement('text', 'link_url', [get_lang('LinkURL'), $linkUrlComment], ['size' => '30', 'maxlength' => '100', 'style' => 'width: 350px;']); $options = ['-1' => get_lang('FirstPlace')]; $selected = ''; if ($action == 'insert_link' || $action == 'insert_tabs') { $add_in_tab = 1; if (is_array($home_menu)) { foreach ($home_menu as $key => $enreg) { if (strlen($enreg = trim(strip_tags($enreg))) > 0) { $options[$key] = get_lang('After').' "'.$enreg.'"'; $formSentCheck = (!empty($_POST['formSent']) ? true : false); $selected = $formSentCheck && $insert_where == $key ? $key : ''; } } } $default['insert_link'] = $selected; $form->addElement('select', 'insert_where', get_lang('InsertThisLink'), $options); } $target_blank_checkbox = $form->addElement('checkbox', 'target_blank', null, get_lang('OpenInNewWindow'), 1); if ($action == 'insert_tabs' || $action == 'edit_tabs') { $form->addElement('checkbox', 'add_in_tab', null, get_lang('AddInMenu'), 1); $default['add_in_tab'] = $add_in_tab; } if (!empty($target_blank)) { $target_blank_checkbox->setChecked(true); } if ($action == 'edit_link' && (empty($link_url) || $link_url == 'http://' || $link_url == 'https://')) { $default['link_html'] = isset($_POST['link_html']) ? $_POST['link_html'] : $link_html; $form->addHtmlEditor('link_html', get_lang('Content'), false, false, ['ToolbarSet' => 'PortalHomePage', 'Width' => '100%', 'Height' => '400']); $form->addButtonSave(get_lang('Save'), 'submit'); } else { if (in_array($action, ['edit_tabs', 'insert_tabs'])) { $default['link_html'] = isset($_POST['link_html']) ? $_POST['link_html'] : (!empty($link_html) ? $link_html : ''); $form->addHtmlEditor('link_html', get_lang('Content'), false, false, ['ToolbarSet' => 'PortalHomePage', 'Width' => '100%', 'Height' => '400']); } $form->addElement('checkbox', 'all_langs', null, get_lang('ApplyAllLanguages'), ['id' => 'all_langs']); $form->addElement('html', ''); $i = 0; foreach ($_languages['name'] as $key => $value) { $i++; $lang_name = $_languages['folder'][$key]; $html_langs = ''; if ($i % 5 == 0) { $html_langs .= ''; } $form->addElement('html', $html_langs); } $form->addElement('html', '
    '; $html_langs .= '

    '); $form->addButtonSave(get_lang('Save'), 'submit'); } $form->setDefaults($default); $form->display(); break; case 'edit_top': case 'edit_news': if ($action == 'edit_top') { $name = $topf; $open = $home_top; } else { $name = $newsf; $open = @(string) file_get_contents($homep.$newsf.'_'.$lang.$ext); } $open = api_to_system_encoding($open, api_detect_encoding(strip_tags($open))); if (!empty($errorMsg)) { echo Display::return_message($errorMsg, 'normal'); //main API } $default = []; $form = new FormValidator( 'configure_homepage_'.$action, 'post', $selfUrl.'?action='.$action, '', ['style' => 'margin: 0px;'] ); $renderer = &$form->defaultRenderer(); $renderer->setHeaderTemplate(''); $renderer->setFormTemplate('{content}
    '); $renderer->setCustomElementTemplate('{element}'); $renderer->setRequiredNoteTemplate(''); $form->addElement('hidden', 'formSent', '1'); if ($action == 'edit_news') { $_languages = api_get_languages(); $html = ''.get_lang('ChooseNewsLanguage').' : '; $html .= ''; $form->addElement('html', $html); } $default[$name] = str_replace('{rel_path}', api_get_path(REL_PATH), $open); $form->addHtmlEditor($name, '', true, false, ['ToolbarSet' => 'PortalHomePage', 'Width' => '100%', 'Height' => '400']); $form->addElement('checkbox', 'all_langs', null, get_lang('ApplyAllLanguages'), ['id' => 'all_langs']); $form->addElement('html', ''); $currentLanguage = api_get_interface_language(); $i = 0; foreach ($_languages['name'] as $key => $value) { $lang_name = $_languages['folder'][$key]; $i++; $checked = null; if ($languageGet == $lang_name) { $checked = "checked"; } $html_langs = ''; if ($i % 5 == 0) { $html_langs .= ''; } $form->addElement('html', $html_langs); } $form->addElement('html', '
    '; $html_langs .= '

    '); $form->addButtonSave(get_lang('Save')); $form->setDefaults($default); $form->display(); break; default: // When no action applies, default page to update campus homepage ?>
    '; echo $home_notice; echo '
    '; ?>
    '; echo ''.Display::return_icon('edit.png', get_lang('Edit')).' '.get_lang('EditCategories').''; echo '
    '; echo ''; } ?> '.Display::return_icon('edit.png', get_lang('Edit')).''; $delete_link = ' '.Display::return_icon('delete.png', get_lang('Delete')).''; $tab_string = str_replace( ['href="'.api_get_path(WEB_PATH).'index.php?include=', ''], ['href="'.api_get_path(WEB_CODE_PATH).'admin/'.basename($selfUrl).'?action=open_link&link=', $edit_link.$delete_link.''], $enreg ); $tab_string = str_replace([' class="hide_menu"', ' class="show_menu"'], '', $tab_string); $tab_string = str_replace(['
  • ', '
  • '], '', $tab_string); $link_list .= Display::tag('li', $tab_string, ['class' => 'list-group-item']); $tab_counter++; } } ?>
    '; echo $link_list; echo ''; ?>