From 6f24e48e1f330591795810dceb959de5c365f05b Mon Sep 17 00:00:00 2001 From: skodak Date: Wed, 19 Jul 2006 12:10:07 +0000 Subject: [PATCH] Improved category and course list display on front page- see bug Bug #5965 - Frontpage Category List also showing courses; new Combo List(categories + courses), fixed categories list and separate settings for not logged in / logged in users; merged from MOODLE_16_STABLE --- admin/site.html | 38 +++++++++++++++++++++++++++++--------- admin/site.php | 15 ++++++++++++++- course/lib.php | 28 ++++++++++++++-------------- index.php | 17 ++++++++++++++++- lang/en_utf8/admin.php | 1 + lang/en_utf8/moodle.php | 2 ++ 6 files changed, 76 insertions(+), 25 deletions(-) diff --git a/admin/site.html b/admin/site.html index 72b6218eeca..603af4de582 100644 --- a/admin/site.html +++ b/admin/site.html @@ -33,26 +33,46 @@ get_string("frontpagenews"), FRONTPAGECOURSELIST => get_string("frontpagecourselist"), FRONTPAGECATEGORYNAMES => get_string("frontpagecategorynames"), + FRONTPAGECATEGORYCOMBO => get_string("frontpagecategorycombo"), ); - $values = array(get_string('hide'), get_string('order1', 'admin'), get_string('order2', 'admin')); + $values = array(get_string('hide'), get_string('order1', 'admin'), get_string('order2', 'admin'), get_string('order3', 'admin'), get_string('order4', 'admin')); $seq = array_flip(explode(',',$form->frontpage)); foreach ($seq as $k => $s) { $seq[$k]++; } - if (count_records("course") > 200) { - unset($options[FRONTPAGECOURSELIST]); - if (isset($seq[FRONTPAGECOURSELIST])) { - $form->frontpage = 2; - } - } else { - $values[] = get_string('order3', 'admin'); + if (!$coursecount and isset($seq[FRONTPAGECOURSELIST])) { + unset($seq[FRONTPAGECOURSELIST]); //disable course list option when too many course present } + + foreach ($options as $key => $option) { + $disabled = (!$coursecount and ($key == FRONTPAGECOURSELIST)); + echo "'; + } + ?> + +
$option
"; + choose_from_menu ($values, "frontpage[$key]", isset($seq[$key])?$seq[$key]:0, '', '', 0, false, $disabled); + echo '
+ + + + : + + + + frontpageloggedin)); + foreach ($seq as $k => $s) { + $seq[$k]++; + } + foreach ($options as $key => $option) { echo "'; } ?> diff --git a/admin/site.php b/admin/site.php index 17c40d5225c..ce06de6b965 100644 --- a/admin/site.php +++ b/admin/site.php @@ -37,6 +37,13 @@ $form->numsections = 1; // Force the topic display for this format } + $form->frontpageloggedin = array_flip($form->frontpageloggedin); + unset($form->frontpageloggedin[0]); + $form->frontpageloggedin = array_flip($form->frontpageloggedin); + asort($form->frontpageloggedin); + $form->frontpageloggedin = implode(',',array_flip($form->frontpageloggedin)); + set_config("frontpageloggedin", $form->frontpageloggedin); + $form->timemodified = time(); if ($form->id) { @@ -98,12 +105,18 @@ if (isset($CFG->frontpage)) { $form->frontpage = $CFG->frontpage; - } else { $form->frontpage = FRONTPAGECOURSELIST; // Show course list by default set_config("frontpage", $form->frontpage); } + if (isset($CFG->frontpageloggedin)) { + $form->frontpageloggedin = $CFG->frontpageloggedin; + } else { + $form->frontpageloggedin = $form->frontpage; + set_config("frontpageloggedin", $form->frontpageloggedin); + } + $stradmin = get_string("administration"); $strconfiguration = get_string("configuration"); $strsitesettings = get_string("sitesettings"); diff --git a/course/lib.php b/course/lib.php index 7fa299b1b42..316867c96b1 100644 --- a/course/lib.php +++ b/course/lib.php @@ -14,11 +14,13 @@ define('COURSE_MAX_SUMMARIES_PER_PAGE', 10); // courses define('COURSE_MAX_COURSES_PER_DROPDOWN',1000); // max courses in log dropdown before switching to optional define('COURSE_MAX_USERS_PER_DROPDOWN',1000); // max users in log dropdown before switching to optional define('FRONTPAGENEWS', 0); -define('FRONTPAGECOURSELIST', 1); -define('FRONTPAGECATEGORYNAMES', 2); -define('FRONTPAGETOPICONLY', 3); -define("EXCELROWS", 65535); -define("FIRSTUSEDEXCELROW", 3); +define('FRONTPAGECOURSELIST', 1); +define('FRONTPAGECATEGORYNAMES', 2); +define('FRONTPAGETOPICONLY', 3); +define('FRONTPAGECATEGORYCOMBO', 4); +define('FRONTPAGECOURSELIMIT', 200); // maximum number of courses displayed on the frontpage +define('EXCELROWS', 65535); +define('FIRSTUSEDEXCELROW', 3); function print_recent_selector_form($course, $advancedfilter=0, $selecteduser=0, $selecteddate="lastlogin", @@ -1314,7 +1316,7 @@ function make_categories_list(&$list, &$parents, $category=NULL, $path="") { } -function print_whole_category_list($category=NULL, $displaylist=NULL, $parentslist=NULL, $depth=-1) { +function print_whole_category_list($category=NULL, $displaylist=NULL, $parentslist=NULL, $depth=-1, $files = false) { /// Recursive function to print out all the categories in a nice format /// with or without courses included global $CFG; @@ -1329,7 +1331,7 @@ function print_whole_category_list($category=NULL, $displaylist=NULL, $parentsli if ($category) { if ($category->visible or iscreator()) { - print_category_info($category, $depth); + print_category_info($category, $depth, $files); } else { return; // Don't bother printing children of invisible categories } @@ -1352,7 +1354,7 @@ function print_whole_category_list($category=NULL, $displaylist=NULL, $parentsli $down = $last ? false : true; $first = false; - print_whole_category_list($cat, $displaylist, $parentslist, $depth + 1); + print_whole_category_list($cat, $displaylist, $parentslist, $depth + 1, $files); } } } @@ -1373,7 +1375,7 @@ function make_categories_options() { return $cats; } -function print_category_info($category, $depth) { +function print_category_info($category, $depth, $files = false) { /// Prints the category info in indented fashion /// This function is only used by print_whole_category_list() above @@ -1388,10 +1390,8 @@ function print_category_info($category, $depth) { $catlinkcss = $category->visible ? '' : ' class="dimmed" '; - $frontpage = explode(',', $CFG->frontpage); - $frontpage = $frontpage?array_flip($frontpage):array(); - $coursecount = count_records('course') <= 200; - if (isset($frontpage[FRONTPAGECATEGORYNAMES]) && !isset($frontpage[FRONTPAGECOURSELIST]) && $coursecount) { + $coursecount = count_records('course') <= FRONTPAGECOURSELIMIT; + if ($files and $coursecount) { $catimage = ''; } else { $catimage = " "; @@ -1399,7 +1399,7 @@ function print_category_info($category, $depth) { echo "\n\n".'
$option
"; - choose_from_menu ($values, "frontpage[$key]", isset($seq[$key])?$seq[$key]:0, ""); + choose_from_menu ($values, "frontpageloggedin[$key]", isset($seq[$key])?$seq[$key]:0, ''); echo '
'; - if (isset($frontpage[FRONTPAGECATEGORYNAMES]) && !isset($frontpage[FRONTPAGECOURSELIST]) && $coursecount) { + if ($files and $coursecount) { $courses = get_courses($category->id, 'c.sortorder ASC', 'c.id,c.sortorder,c.visible,c.fullname,c.shortname,c.password,c.summary,c.guest,c.cost,c.currency'); echo ""; diff --git a/index.php b/index.php index 265b93cd696..dba5dbe2110 100644 --- a/index.php +++ b/index.php @@ -119,7 +119,13 @@ } } - foreach (explode(',',$CFG->frontpage) as $v) { + if (isloggedin() and !isguest() and isset($CFG->frontpageloggedin)) { + $frontpagelayout = $CFG->frontpageloggedin; + } else { + $frontpagelayout = $CFG->frontpage; + } + + foreach (explode(',',$frontpagelayout) as $v) { switch ($v) { /// Display the main part of the front page. case strval(FRONTPAGENEWS): if ($SITE->newsitems) { // Print forums only when needed @@ -169,6 +175,15 @@ print_course_search('', false, 'short'); break; + case FRONTPAGECATEGORYCOMBO: + + print_heading_block(get_string('categories')); + print_simple_box_start('center', '100%', '', 5, 'categorybox'); + print_whole_category_list(NULL, NULL, NULL, -1, true); + print_simple_box_end(); + print_course_search('', false, 'short'); + break; + case FRONTPAGETOPICONLY: // Do nothing!! :-) break; diff --git a/lang/en_utf8/admin.php b/lang/en_utf8/admin.php index 2907dc75d09..aa47d7c2897 100644 --- a/lang/en_utf8/admin.php +++ b/lang/en_utf8/admin.php @@ -202,6 +202,7 @@ $string['optionalmaintenancemessage'] = 'Optional maintenance messsage'; $string['order1'] = 'First'; $string['order2'] = 'Second'; $string['order3'] = 'Third'; +$string['order4'] = 'Forth'; $string['pathdvips'] = 'Path of dvips binary'; $string['pathconvert'] = 'Path of convert binary'; $string['pathlatex'] = 'Path of latex binary'; diff --git a/lang/en_utf8/moodle.php b/lang/en_utf8/moodle.php index 93e0a3610bb..4392fe3ded1 100644 --- a/lang/en_utf8/moodle.php +++ b/lang/en_utf8/moodle.php @@ -552,10 +552,12 @@ $string['formatweeks'] = 'Weekly format'; $string['formatweekscss'] = 'Weekly format - CSS/No tables'; $string['formatwiki'] = 'Wiki-like format'; $string['from'] = 'From'; +$string['frontpagecategorycombo'] = 'Combo list'; $string['frontpagecategorynames'] = 'List of categories'; $string['frontpagecourselist'] = 'List of courses'; $string['frontpagedescription'] = 'Front Page Description'; $string['frontpageformat'] = 'Front page format'; +$string['frontpageformatloggedin'] = 'Front page format when logged in'; $string['frontpagenews'] = 'News items'; $string['frontpagetopiconly'] = 'Topic section'; $string['fulllistofcourses'] = 'All courses';