break; case 'edit_icon': $tool = CourseHome::getTool($id); if (empty($tool)) { api_not_allowed(true); } $interbreadcrumb[] = array('url' => api_get_self() . '?' . api_get_cidreq(), 'name' => get_lang('CustomizeIcons')); $toolName = $tool['name']; $currentUrl = api_get_self() . '?action=edit_icon&id=' . $id . '&' . api_get_cidreq(); $form = new FormValidator('icon_edit', 'post', $currentUrl); $form->addHeader(get_lang('EditIcon')); $form->addHtml('<div class="col-md-7">'); $form->addText('name', get_lang('Name')); $form->addText('link', get_lang('Links')); $allowed_picture_types = array('jpg', 'jpeg', 'png'); $form->addFile('icon', get_lang('CustomIcon')); $form->addRule('icon', get_lang('OnlyImagesAllowed') . ' (' . implode(',', $allowed_picture_types) . ')', 'filetype', $allowed_picture_types); $form->addSelect('target', get_lang('LinkTarget'), ['_self' => get_lang('LinkOpenSelf'), '_blank' => get_lang('LinkOpenBlank')]); $form->addSelect('visibility', get_lang('Visibility'), array(1 => get_lang('Visible'), 0 => get_lang('Invisible'))); $form->addTextarea('description', get_lang('Description'), array('rows' => '3', 'cols' => '40')); $form->addButtonUpdate(get_lang('Update')); $form->addHtml('</div>'); $form->addHtml('<div class="col-md-5">'); if (isset($tool['custom_icon']) && !empty($tool['custom_icon'])) { $form->addLabel(get_lang('CurrentIcon'), Display::img(CourseHome::getCustomWebIconPath() . $tool['custom_icon'])); $form->addCheckBox('delete_icon', null, get_lang('DeletePicture')); } $form->addHtml('</div>'); $form->setDefaults($tool); $content = $form->returnForm(); if ($form->validate()) {
/** * Displays the form to create a new post * @author Toon Keppens * * @param Integer $blog_id */ public static function display_new_comment_form($blog_id, $post_id, $title) { $form = new FormValidator('add_post', 'post', api_get_path(WEB_CODE_PATH) . "blog/blog.php?action=view_post&blog_id=" . intval($blog_id) . "&post_id=" . intval($post_id) . "&" . api_get_cidreq(), null, array('enctype' => 'multipart/form-data')); $header = get_lang('AddNewComment'); if (isset($_GET['task_id'])) { $header = get_lang('ExecuteThisTask'); } $form->addHeader($header); $form->addText('title', get_lang('Title')); $config = array(); if (!api_is_allowed_to_edit()) { $config['ToolbarSet'] = 'ProjectComment'; } else { $config['ToolbarSet'] = 'ProjectCommentStudent'; } $form->addHtmlEditor('comment', get_lang('Comment'), false, false, $config); $form->addFile('user_upload', get_lang('AddAnAttachment')); $form->addTextarea('post_file_comment', get_lang('FileComment')); $form->addHidden('action', null); $form->addHidden('comment_parent_id', 0); if (isset($_GET['task_id'])) { $form->addHidden('new_task_execution_submit', 'true'); $form->addHidden('task_id', intval($_GET['task_id'])); } else { $form->addHidden('new_comment_submit', 'true'); } $form->addButton('save', get_lang('Save')); $form->display(); }
/** * This function allows the platform admin to choose the default stylesheet * @author Patrick Cool <*****@*****.**>, Ghent University * @author Julio Montoya <*****@*****.**>, Chamilo */ function handle_stylesheets() { global $_configuration; // Current style. $currentstyle = api_get_setting('stylesheets'); $is_style_changeable = false; if ($_configuration['access_url'] != 1) { $style_info = api_get_settings('stylesheets', '', 1, 0); $url_info = api_get_access_url($_configuration['access_url']); if ($style_info[0]['access_url_changeable'] == 1 && $url_info['active'] == 1) { $is_style_changeable = true; } } else { $is_style_changeable = true; } $form = new FormValidator('stylesheet_upload', 'post', 'settings.php?category=Stylesheets#tabs-3'); $form->addElement('text', 'name_stylesheet', get_lang('NameStylesheet'), array('size' => '40', 'maxlength' => '40')); $form->addRule('name_stylesheet', get_lang('ThisFieldIsRequired'), 'required'); $form->addElement('file', 'new_stylesheet', get_lang('UploadNewStylesheet')); $allowed_file_types = array('css', 'zip', 'jpeg', 'jpg', 'png', 'gif', 'ico', 'psd', 'xcf', 'svg', 'webp', 'woff', 'woff2'); $form->addRule('new_stylesheet', get_lang('InvalidExtension') . ' (' . implode(',', $allowed_file_types) . ')', 'filetype', $allowed_file_types); $form->addRule('new_stylesheet', get_lang('ThisFieldIsRequired'), 'required'); $form->addButtonUpload(get_lang('Upload'), 'stylesheet_upload'); $show_upload_form = false; if (!is_writable(CSS_UPLOAD_PATH)) { Display::display_error_message(CSS_UPLOAD_PATH . get_lang('IsNotWritable')); } else { // Uploading a new stylesheet. if ($_configuration['access_url'] == 1) { $show_upload_form = true; } else { if ($is_style_changeable) { $show_upload_form = true; } } } // Stylesheet upload. if (isset($_POST['stylesheet_upload'])) { if ($form->validate()) { $values = $form->exportValues(); $picture_element = $form->getElement('new_stylesheet'); $picture = $picture_element->getValue(); $result = upload_stylesheet($values, $picture); // Add event to the system log. $user_id = api_get_user_id(); $category = $_GET['category']; Event::addEvent(LOG_CONFIGURATION_SETTINGS_CHANGE, LOG_CONFIGURATION_SETTINGS_CATEGORY, $category, api_get_utc_datetime(), $user_id); if ($result) { Display::display_confirmation_message(get_lang('StylesheetAdded')); } } } $form_change = new FormValidator('stylesheet_upload', 'post', api_get_self() . '?category=Stylesheets', null, array('id' => 'stylesheets_id')); $list_of_names = array(); $selected = ''; $dirpath = ''; $safe_style_dir = ''; if ($handle = @opendir(CSS_UPLOAD_PATH)) { $counter = 1; while (false !== ($style_dir = readdir($handle))) { if (substr($style_dir, 0, 1) == '.') { // Skip directories starting with a '.' continue; } $dirpath = CSS_UPLOAD_PATH . $style_dir; if (is_dir($dirpath)) { if ($style_dir != '.' && $style_dir != '..') { if (isset($_POST['style']) && (isset($_POST['preview']) || isset($_POST['download'])) && $_POST['style'] == $style_dir) { $safe_style_dir = $style_dir; } else { if ($currentstyle == $style_dir || $style_dir == 'chamilo' && !$currentstyle) { if (isset($_POST['style'])) { $selected = Database::escape_string($_POST['style']); } else { $selected = $style_dir; } } } $show_name = ucwords(str_replace('_', ' ', $style_dir)); if ($is_style_changeable) { $list_of_names[$style_dir] = $show_name; } $counter++; } } } closedir($handle); } // Sort styles in alphabetical order. asort($list_of_names); $select_list = array(); foreach ($list_of_names as $style_dir => $item) { $select_list[$style_dir] = $item; } $styles =& $form_change->addElement('select', 'style', get_lang('NameStylesheet'), $select_list); $styles->setSelected($selected); if ($form_change->validate()) { // Submit stylesheets. if (isset($_POST['save'])) { store_stylesheets(); Display::display_normal_message(get_lang('Saved')); } if (isset($_POST['download'])) { $arch = api_get_path(SYS_ARCHIVE_PATH) . $safe_style_dir . '.zip'; $dir = api_get_path(SYS_CSS_PATH) . 'themes/' . $safe_style_dir; if (is_dir($dir)) { $zip = new PclZip($arch); // Remove path prefix except the style name and put file on disk $zip->create($dir, PCLZIP_OPT_REMOVE_PATH, substr($dir, 0, -strlen($safe_style_dir))); //@TODO: use more generic script to download. $str = '<a class="btn btn-primary btn-large" href="' . api_get_path(WEB_CODE_PATH) . 'course_info/download.php?archive=' . str_replace(api_get_path(SYS_ARCHIVE_PATH), '', $arch) . '">' . get_lang('ClickHereToDownloadTheFile') . '</a>'; Display::display_normal_message($str, false); } else { Display::addFlash(Display::return_message(get_lang('FileNotFound'), 'warning')); } } } $logoForm = new FormValidator('logo_upload', 'post', 'settings.php?category=Stylesheets#tabs-2'); $logoForm->addHtml(Display::return_message(sprintf(get_lang('TheLogoMustBeSizeXAndFormatY'), '250 x 70', 'PNG'), 'info')); $dir = api_get_path(SYS_PUBLIC_PATH) . 'css/themes/' . $selected . '/images/'; $url = api_get_path(WEB_CSS_PATH) . 'themes/' . $selected . '/images/'; $logoFileName = 'header-logo.png'; $newLogoFileName = 'header-logo-custom.png'; if (is_file($dir . $newLogoFileName)) { $logoForm->addLabel(get_lang('CurrentLogo'), '<img id="header-logo-custom" src="' . $url . $newLogoFileName . '?' . time() . '">'); } else { $logoForm->addLabel(get_lang('CurrentLogo'), '<img id="header-logo-custom" src="' . $url . $logoFileName . '?' . time() . '">'); } $logoForm->addFile('new_logo', get_lang('UpdateLogo')); $allowedFileTypes = ['png']; if (isset($_POST['logo_reset'])) { if (is_file($dir . $newLogoFileName)) { unlink($dir . $newLogoFileName); Display::display_normal_message(get_lang('ResetToTheOriginalLogo')); echo '<script>' . '$("#header-logo").attr("src","' . $url . $logoFileName . '");' . '</script>'; } } elseif (isset($_POST['logo_upload'])) { $logoForm->addRule('new_logo', get_lang('InvalidExtension') . ' (' . implode(',', $allowedFileTypes) . ')', 'filetype', $allowedFileTypes); $logoForm->addRule('new_logo', get_lang('ThisFieldIsRequired'), 'required'); if ($logoForm->validate()) { $imageInfo = getimagesize($_FILES['new_logo']['tmp_name']); $width = $imageInfo[0]; $height = $imageInfo[1]; if ($width <= 250 && $height <= 70) { if (is_file($dir . $newLogoFileName)) { unlink($dir . $newLogoFileName); } $status = move_uploaded_file($_FILES['new_logo']['tmp_name'], $dir . $newLogoFileName); if ($status) { Display::display_normal_message(get_lang('NewLogoUpdated')); echo '<script>' . '$("#header-logo").attr("src","' . $url . $newLogoFileName . '");' . '</script>'; } else { Display::display_error_message('Error - ' . get_lang('UplNoFileUploaded')); } } else { Display::display_error_message('Error - ' . get_lang('InvalidImageDimensions')); } } } if ($is_style_changeable) { $group = [$form_change->addButtonSave(get_lang('SaveSettings'), 'save', true), $form_change->addButtonPreview(get_lang('Preview'), 'preview', true), $form_change->addButtonDownload(get_lang('Download'), 'download', true)]; $form_change->addGroup($group); $logoGroup = [$logoForm->addButtonUpload(get_lang('Upload'), 'logo_upload', true), $logoForm->addButtonCancel(get_lang('Reset'), 'logo_reset', true)]; $logoForm->addGroup($logoGroup); if ($show_upload_form) { echo '<script> $(function() { $( "#tabs" ).tabs(); }); </script>'; echo Display::tabs(array(get_lang('Update'), get_lang('UpdateLogo'), get_lang('UploadNewStylesheet')), array($form_change->return_form(), $logoForm->return_form(), $form->return_form())); } else { $form_change->display(); } //Little hack to update the logo image in update form when submiting if (isset($_POST['logo_reset'])) { echo '<script>' . '$("#header-logo-custom").attr("src","' . $url . $logoFileName . '");' . '</script>'; } elseif (isset($_POST['logo_upload']) && is_file($dir . $newLogoFileName)) { echo '<script>' . '$("#header-logo-custom").attr("src","' . $url . $newLogoFileName . '");' . '</script>'; } } else { $form_change->freeze(); } }