echo '<td style="width:' . $preferred_width_left . 'px" id="left-column">'; print_container_start(); blocks_print_group($PAGE, $pageblocks, BLOCK_POS_LEFT); print_container_end(); echo '</td>'; } break; case 'middle': /// Start main column echo '<td id="middle-column">'; print_container_start(); echo skip_main_destination(); print_heading_block(get_string('weeklyoutline'), 'outline'); echo '<table class="weeks" width="100%" summary="' . get_string('layouttable') . '">'; /// If currently moving a file then show the current clipboard if (ismoving($course->id)) { $stractivityclipboard = strip_tags(get_string('activityclipboard', '', addslashes($USER->activitycopyname))); $strcancel = get_string('cancel'); echo '<tr class="clipboard">'; echo '<td colspan="3">'; echo $stractivityclipboard . ' (<a href="mod.php?cancelcopy=true&sesskey=' . $USER->sesskey . '">' . $strcancel . '</a>)'; echo '</td>'; echo '</tr>'; } /// Print Section 0 with general activities $section = 0; $thissection = $sections[$section]; if ($thissection->summary or $thissection->sequence or isediting($course->id)) { echo '<tr id="section-0" class="section main">'; echo '<td class="left side"> </td>'; echo '<td class="content">';
/** * Prints a section full of activity modules * @Overrides course/lib.php=>print_section */ function ss_print_section($course, $section, $mods, $modnamesused, $absolute=false, $width="100%", $hidecompletion=false) { #print_r($mods); global $CFG, $USER, $DB, $PAGE, $OUTPUT; static $initialised; static $groupbuttons; static $groupbuttonslink; static $isediting; static $ismoving; static $strmovehere; static $strmovefull; static $strunreadpostsone; static $usetracking; static $groupings; if (!isset($initialised)) { $groupbuttons = ($course->groupmode or (!$course->groupmodeforce)); $groupbuttonslink = (!$course->groupmodeforce); $isediting = $PAGE->user_is_editing(); $ismoving = $isediting && ismoving($course->id); if ($ismoving) { $strmovehere = get_string("movehere"); $strmovefull = strip_tags(get_string("movefull", "", "'$USER->activitycopyname'")); } include_once($CFG->dirroot.'/mod/forum/lib.php'); if ($usetracking = forum_tp_can_track_forums()) { $strunreadpostsone = get_string('unreadpostsone', 'forum'); } $initialised = true; } $labelformatoptions = new stdClass(); $labelformatoptions->noclean = true; $labelformatoptions->overflowdiv = true; /// Casting $course->modinfo to string prevents one notice when the field is null $modinfo = get_fast_modinfo($course); $completioninfo = new completion_info($course); //Accessibility: replace table with list <ul>, but don't output empty list. if (!empty($section->sequence)) { // Fix bug #5027, don't want style=\"width:$width\". echo "<ul class=\"section img-text\">\n"; $sectionmods = explode(",", $section->sequence); foreach ($sectionmods as $modnumber) { if (empty($mods[$modnumber])) { continue; } $mod = $mods[$modnumber]; if ($ismoving and $mod->id == $USER->activitycopy) { // do not display moving mod continue; } if (isset($modinfo->cms[$modnumber])) { // We can continue (because it will not be displayed at all) // if: // 1) The activity is not visible to users // and // 2a) The 'showavailability' option is not set (if that is set, // we need to display the activity so we can show // availability info) // or // 2b) The 'availableinfo' is empty, i.e. the activity was // hidden in a way that leaves no info, such as using the // eye icon. if (!$modinfo->cms[$modnumber]->uservisible && (empty($modinfo->cms[$modnumber]->showavailability) || empty($modinfo->cms[$modnumber]->availableinfo))) { // visibility shortcut continue; } } else { if (!file_exists("$CFG->dirroot/mod/$mod->modname/lib.php")) { // module not installed continue; } if (!coursemodule_visible_for_user($mod) && empty($mod->showavailability)) { // full visibility check continue; } } // In some cases the activity is visible to user, but it is // dimmed. This is done if viewhiddenactivities is true and if: // 1. the activity is not visible, or // 2. the activity has dates set which do not include current, or // 3. the activity has any other conditions set (regardless of whether // current user meets them) $canviewhidden = has_capability( 'moodle/course:viewhiddenactivities', get_context_instance(CONTEXT_MODULE, $mod->id)); $accessiblebutdim = false; if ($canviewhidden) { $accessiblebutdim = !$mod->visible; if (!empty($CFG->enableavailability)) { $accessiblebutdim = $accessiblebutdim || $mod->availablefrom > time() || ($mod->availableuntil && $mod->availableuntil < time()) || count($mod->conditionsgrade) > 0 || count($mod->conditionscompletion) > 0; } } $liclasses = array(); $liclasses[] = 'activity'; $liclasses[] = $mod->modname; $liclasses[] = 'modtype_'.$mod->modname; echo html_writer::start_tag('li', array('class'=>join(' ', $liclasses), 'id'=>'module-'.$modnumber)); if ($ismoving) { echo '<a title="'.$strmovefull.'"'. ' href="'.$CFG->wwwroot.'/course/mod.php?moveto='.$mod->id.'&sesskey='.sesskey().'">'. '<img class="movetarget" src="'.$OUTPUT->pix_url('movehere') . '" '. ' alt="'.$strmovehere.'" /></a><br /> '; } $classes = array('mod-indent'); if (!empty($mod->indent)) { $classes[] = 'mod-indent-'.$mod->indent; if ($mod->indent > 15) { $classes[] = 'mod-indent-huge'; } } echo html_writer::start_tag('div', array('class'=>join(' ', $classes))); $extra = ''; if (!empty($modinfo->cms[$modnumber]->extra)) { $extra = $modinfo->cms[$modnumber]->extra; } if ($mod->modname == "label") { if ($accessiblebutdim || !$mod->uservisible) { echo '<div class="dimmed_text"><span class="accesshide">'. get_string('hiddenfromstudents').'</span>'; } else { echo '<div>'; } echo format_text($extra, FORMAT_HTML, $labelformatoptions); echo "</div>"; if (!empty($mod->groupingid) && has_capability('moodle/course:managegroups', get_context_instance(CONTEXT_COURSE, $course->id))) { if (!isset($groupings)) { $groupings = groups_get_all_groupings($course->id); } echo " <span class=\"groupinglabel\">(".format_string($groupings[$mod->groupingid]->name).')</span>'; } } else { // Normal activity $instancename = format_string($modinfo->cms[$modnumber]->name, true, $course->id); # echo format_string($modinfo->cms[$modnumber]->intro, true, $course->id); # echo format_string($modinfo->cms[$modnumber]->name, true, $course->id); # print_r($modinfo->cms[$modnumber]); $customicon = $modinfo->cms[$modnumber]->icon; if (!empty($customicon)) { if (substr($customicon, 0, 4) === 'mod/') { list($modname, $iconname) = explode('/', substr($customicon, 4), 2); $icon = $OUTPUT->pix_url($iconname, $modname); } else { $icon = $OUTPUT->pix_url($customicon); } } else { $icon = $OUTPUT->pix_url('icon', $mod->modname); } //Accessibility: for files get description via icon, this is very ugly hack! $altname = ''; $altname = $mod->modfullname; if (!empty($customicon)) { $archetype = plugin_supports('mod', $mod->modname, FEATURE_MOD_ARCHETYPE, MOD_ARCHETYPE_OTHER); if ($archetype == MOD_ARCHETYPE_RESOURCE) { $mimetype = mimeinfo_from_icon('type', $customicon); $altname = get_mimetype_description($mimetype); } } // Avoid unnecessary duplication. if (false !== stripos($instancename, $altname)) { $altname = ''; } // File type after name, for alphabetic lists (screen reader). if ($altname) { $altname = get_accesshide(' '.$altname); } // We may be displaying this just in order to show information // about visibility, without the actual link if ($mod->uservisible) { // Display normal module link if (!$accessiblebutdim) { $linkcss = ''; $accesstext =''; } else { $linkcss = ' class="dimmed" '; $accesstext = '<span class="accesshide">'. get_string('hiddenfromstudents').': </span>'; } echo '<a '.$linkcss.' '.$extra. ' href="'.$CFG->wwwroot.'/mod/'.$mod->modname.'/view.php?id='.$mod->id.'">'. '<img src="'.$icon.'" class="activityicon" alt="'.get_string('modulename',$mod->modname).'" /> '. $accesstext.'<span class="instancename">'.$instancename.$altname.'</span></a>'; if (!empty($mod->groupingid) && has_capability('moodle/course:managegroups', get_context_instance(CONTEXT_COURSE, $course->id))) { if (!isset($groupings)) { $groupings = groups_get_all_groupings($course->id); } echo " <span class=\"groupinglabel\">(".format_string($groupings[$mod->groupingid]->name).')</span>'; } } else { // Display greyed-out text of link echo '<span class="dimmed_text" '.$extra.' ><span class="accesshide">'. get_string('notavailableyet','condition').': </span>'. '<img src="'.$icon.'" class="activityicon" alt="'.get_string('modulename', $mod->modname).'" /> <span>'. $instancename.$altname.'</span></span>'; } } if ($usetracking && $mod->modname == 'forum') { if ($unread = forum_tp_count_forum_unread_posts($mod, $course)) { echo '<span class="unread"> <a href="'.$CFG->wwwroot.'/mod/forum/view.php?id='.$mod->id.'">'; if ($unread == 1) { echo $strunreadpostsone; } else { print_string('unreadpostsnumber', 'forum', $unread); } echo '</a></span>'; } } if ($isediting) { if ($groupbuttons and plugin_supports('mod', $mod->modname, FEATURE_GROUPS, 0)) { if (! $mod->groupmodelink = $groupbuttonslink) { $mod->groupmode = $course->groupmode; } } else { $mod->groupmode = false; } echo ' '; echo make_editing_buttons($mod, $absolute, true, $mod->indent, $section->section); hook_make_edit_icon_button($mod, $OUTPUT); } // Completion $completion = $hidecompletion ? COMPLETION_TRACKING_NONE : $completioninfo->is_enabled($mod); if ($completion!=COMPLETION_TRACKING_NONE && isloggedin() && !isguestuser() && $mod->uservisible) { $completiondata = $completioninfo->get_data($mod,true); $completionicon = ''; if ($isediting) { switch ($completion) { case COMPLETION_TRACKING_MANUAL : $completionicon = 'manual-enabled'; break; case COMPLETION_TRACKING_AUTOMATIC : $completionicon = 'auto-enabled'; break; default: // wtf } } else if ($completion==COMPLETION_TRACKING_MANUAL) { switch($completiondata->completionstate) { case COMPLETION_INCOMPLETE: $completionicon = 'manual-n'; break; case COMPLETION_COMPLETE: $completionicon = 'manual-y'; break; } } else { // Automatic switch($completiondata->completionstate) { case COMPLETION_INCOMPLETE: $completionicon = 'auto-n'; break; case COMPLETION_COMPLETE: $completionicon = 'auto-y'; break; case COMPLETION_COMPLETE_PASS: $completionicon = 'auto-pass'; break; case COMPLETION_COMPLETE_FAIL: $completionicon = 'auto-fail'; break; } } if ($completionicon) { $imgsrc = $OUTPUT->pix_url('i/completion-'.$completionicon); $imgalt = s(get_string('completion-alt-'.$completionicon, 'completion')); if ($completion == COMPLETION_TRACKING_MANUAL && !$isediting) { $imgtitle = s(get_string('completion-title-'.$completionicon, 'completion')); $newstate = $completiondata->completionstate==COMPLETION_COMPLETE ? COMPLETION_INCOMPLETE : COMPLETION_COMPLETE; // In manual mode the icon is a toggle form... // If this completion state is used by the // conditional activities system, we need to turn // off the JS. if (!empty($CFG->enableavailability) && condition_info::completion_value_used_as_condition($course, $mod)) { $extraclass = ' preventjs'; } else { $extraclass = ''; } echo " <form class='togglecompletion$extraclass' method='post' action='togglecompletion.php'><div> <input type='hidden' name='id' value='{$mod->id}' /> <input type='hidden' name='sesskey' value='".sesskey()."' /> <input type='hidden' name='completionstate' value='$newstate' /> <input type='image' src='$imgsrc' alt='$imgalt' title='$imgtitle' /> </div></form>"; } else { // In auto mode, or when editing, the icon is just an image echo "<span class='autocompletion'>"; echo "<img src='$imgsrc' alt='$imgalt' title='$imgalt' /></span>"; } } } // Show availability information (for someone who isn't allowed to // see the activity itself, or for staff) if (!$mod->uservisible) { echo '<div class="availabilityinfo">'.$mod->availableinfo.'</div>'; } else if ($canviewhidden && !empty($CFG->enableavailability)) { $ci = new condition_info($mod); $fullinfo = $ci->get_full_information(); if($fullinfo) { echo '<div class="availabilityinfo">'.get_string($mod->showavailability ? 'userrestriction_visible' : 'userrestriction_hidden','condition', $fullinfo).'</div>'; } } echo hook_show_activity_intro($mod); echo html_writer::end_tag('div'); echo html_writer::end_tag('li')."\n"; } } elseif ($ismoving) { echo "<ul class=\"section\">\n"; } if ($ismoving) { echo '<li><a title="'.$strmovefull.'"'. ' href="'.$CFG->wwwroot.'/course/mod.php?movetosection='.$section->id.'&sesskey='.sesskey().'">'. '<img class="movetarget" src="'.$OUTPUT->pix_url('movehere') . '" '. ' alt="'.$strmovehere.'" /></a></li> '; } if (!empty($section->sequence) || $ismoving) { echo "</ul><!--class='section'-->\n\n"; } }
/** * Show if something is on on the course clipboard (moving around) * * @param stdClass $course The course entry from DB * @param int $sectionno The section number in the coruse which is being dsiplayed * @return string HTML to output. */ protected function course_activity_clipboard($course, $sectionno = null) { global $USER; $o = ''; // If currently moving a file then show the current clipboard. if (ismoving($course->id)) { $url = new moodle_url('/course/mod.php', array('sesskey' => sesskey(), 'cancelcopy' => true, 'sr' => $sectionno)); $o .= html_writer::start_tag('div', array('class' => 'clipboard')); $o .= strip_tags(get_string('activityclipboard', '', $USER->activitycopyname)); $o .= ' (' . html_writer::link($url, get_string('cancel')) . ')'; $o .= html_writer::end_tag('div'); } return $o; }
/** * Renders HTML to display a list of course modules in a course section * Also displays "move here" controls in Javascript-disabled mode * * This function calls {@link core_course_renderer::course_section_cm()} * * @param stdClass $course course object * @param int|stdClass|section_info $section relative section number or section object * @param int $sectionreturn section number to return to * @param int $displayoptions * @return void */ public function course_section_cm_list($course, $section, $sectionreturn = null, $displayoptions = array()) { global $USER; $output = ''; $modinfo = get_fast_modinfo($course); if (is_object($section)) { $section = $modinfo->get_section_info($section->section); } else { $section = $modinfo->get_section_info($section); } $completioninfo = new completion_info($course); // check if we are currently in the process of moving a module with JavaScript disabled $ismoving = $this->page->user_is_editing() && ismoving($course->id); if ($ismoving) { $movingpix = new pix_icon('movehere', get_string('movehere'), 'moodle', array('class' => 'movetarget')); $strmovefull = strip_tags(get_string("movefull", "", "'{$USER->activitycopyname}'")); } // Get the list of modules visible to user (excluding the module being moved if there is one) $moduleshtml = array(); if (!empty($modinfo->sections[$section->section])) { foreach ($modinfo->sections[$section->section] as $modnumber) { $mod = $modinfo->cms[$modnumber]; if ($ismoving and $mod->id == $USER->activitycopy) { // do not display moving mod continue; } if ($modulehtml = $this->course_section_cm_list_item($course, $completioninfo, $mod, $sectionreturn, $displayoptions)) { $moduleshtml[$modnumber] = $modulehtml; } } } $sectionoutput = ''; if (!empty($moduleshtml) || $ismoving) { foreach ($moduleshtml as $modnumber => $modulehtml) { if ($ismoving) { $movingurl = new moodle_url('/course/mod.php', array('moveto' => $modnumber, 'sesskey' => sesskey())); $sectionoutput .= html_writer::tag('li', html_writer::link($movingurl, $this->output->render($movingpix), array('title' => $strmovefull)), array('class' => 'movehere')); } $sectionoutput .= $modulehtml; } if ($ismoving) { $movingurl = new moodle_url('/course/mod.php', array('movetosection' => $section->id, 'sesskey' => sesskey())); $sectionoutput .= html_writer::tag('li', html_writer::link($movingurl, $this->output->render($movingpix), array('title' => $strmovefull)), array('class' => 'movehere')); } } // Always output the section module list. $output .= html_writer::tag('ul', $sectionoutput, array('class' => 'section img-text')); return $output; }
/** * Parent class version of this function simply returns NULL This should be implemented by the derived class to return the content object. * * @return object The content object */ public function get_content() { global $USER, $CFG, $DB, $OUTPUT; if ($this->content !== null) { return $this->content; } $this->content = new stdClass(); $this->content->items = array(); $this->content->icons = array(); $this->content->footer = ''; if (empty($this->instance)) { if (!isset($this->content)) { $this->content = new stdClass(); } return $this->content; } if (!isset($this->config->title)) { if (!isset($this->config)) { $this->config = new stdClass(); } $this->config->title = ''; } $course = $this->page->course; require_once $CFG->dirroot . '/course/lib.php'; $context = context_course::instance($course->id); $isediting = $this->page->user_is_editing() && has_capability('moodle/course:manageactivities', $context); // Create a new section for this block (if necessary). if (empty($this->config->section)) { require_once $CFG->dirroot . '/blocks/side_bar/locallib.php'; if (null == ($section = block_side_bar_create_section($course))) { return $this->content; } $this->config->section = $section->section; $this->config->section_id = $section->id; parent::instance_config_commit(); } else { if (empty($this->config->section_id)) { $params = array('course' => $course->id, 'section' => $this->config->section); $section = $DB->get_record('course_sections', $params); $this->config->section_id = $section->id; parent::instance_config_commit(); } else { $section = $DB->get_record('course_sections', array('id' => $this->config->section_id)); if (empty($section)) { require_once $CFG->dirroot . '/blocks/side_bar/locallib.php'; if (null == ($section = block_side_bar_create_section($course))) { return $this->content; } $this->config->section = $section->section; $this->config->section_id = $section->id; parent::instance_config_commit(); } } // Double check that the section number hasn't been modified by something else. // Fixes problem found by Charlotte Owen when moving 'center column' course sections. if ($section->section != $this->config->section) { $section->section = $this->config->section; $DB->update_record('course_sections', $section); } } // extra fast view mode $modinfo = get_fast_modinfo($course); if (!$isediting) { if (!empty($modinfo->sections[$this->config->section])) { $options = array('overflowdiv' => true); foreach ($modinfo->sections[$this->config->section] as $cmid) { $cm = $modinfo->cms[$cmid]; if (!$cm->uservisible) { continue; } $content = $cm->get_formatted_content(array('overflowdiv' => true, 'noclean' => true)); $instancename = $cm->get_formatted_name(); if (!($url = $cm->url)) { $this->content->items[] = $content; $this->content->icons[] = ''; } else { $linkcss = $cm->visible ? '' : ' class="dimmed" '; // Accessibility: incidental image - should be empty Alt text $icon = '<img src="' . $cm->get_icon_url() . '" class="icon" alt="" /> '; $this->content->items[] = '<a title="' . $cm->modplural . '" ' . $linkcss . ' ' . $cm->extra . ' href="' . $url . '">' . $icon . $instancename . '</a>'; } } } return $this->content; } // slow & hacky editing mode $courserenderer = $this->page->get_renderer('core', 'course'); $ismoving = ismoving($course->id); if (!($cs = $DB->get_record('course_sections', array('section' => $this->config->section, 'course' => $course->id)))) { debugging('Could not get course section record for section ' . $this->config->section, DEBUG_DEVELOPER); return $this->content; } $modinfo = get_fast_modinfo($course); $section = $modinfo->get_section_info($this->config->section); $modnames = get_module_types_names(); $groupbuttons = $course->groupmode; $groupbuttonslink = !$course->groupmodeforce; if ($ismoving) { $strmovehere = get_string('movehere'); $strmovefull = strip_tags(get_string('movefull', '', "'{$USER->activitycopyname}'")); $strcancel = get_string('cancel'); $stractivityclipboard = $USER->activitycopyname; } else { $strmove = get_string('move'); } // Casting $course->modinfo to string prevents one notice when the field is null $editbuttons = ''; if ($ismoving) { $this->content->icons[] = '<img src="' . $OUTPUT->pix_url('t/move') . '" class="iconsmall" alt="" />'; $this->content->items[] = $USER->activitycopyname . ' (<a href="' . $CFG->wwwroot . '/course/mod.php?cancelcopy=true&sesskey=' . sesskey() . '">' . $strcancel . '</a>)'; } if (!empty($modinfo->sections[$this->config->section])) { $options = array('overflowdiv' => true); foreach ($modinfo->sections[$this->config->section] as $modnumber) { $mod = $modinfo->cms[$modnumber]; if (!$mod->uservisible) { continue; } if (!$ismoving) { $actions = course_get_cm_edit_actions($mod, -1); // Prepend list of actions with the 'move' action. $actions = array('move' => new action_menu_link_primary(new moodle_url('/course/mod.php', array('sesskey' => sesskey(), 'copy' => $mod->id)), new pix_icon('t/move', $strmove, 'moodle', array('class' => 'iconsmall', 'title' => '')), $strmove)) + $actions; $editactions = $courserenderer->course_section_cm_edit_actions($actions, $mod, array('donotenhance' => true)); $editbuttons = html_writer::tag('div', $editactions, array('class' => 'buttons')); } else { $editbuttons = ''; } if ($mod->visible || has_capability('moodle/course:viewhiddenactivities', $context)) { if ($ismoving) { if ($mod->id == $USER->activitycopy) { continue; } $this->content->items[] = '<a title="' . $strmovefull . '" href="' . $CFG->wwwroot . '/course/mod.php' . '?moveto=' . $mod->id . '&sesskey=' . sesskey() . '"><img style="height:16px; width:80px; border:0px"' . ' src="' . $OUTPUT->pix_url('movehere') . '" alt="' . $strmovehere . '" /></a>'; $this->content->icons[] = ''; } $content = $mod->get_formatted_content(array('overflowdiv' => true, 'noclean' => true)); $instancename = $mod->get_formatted_name(); $linkcss = $mod->visible ? '' : ' class="dimmed" '; if (!($url = $mod->url)) { $this->content->items[] = $content . $editbuttons; $this->content->icons[] = ''; } else { // Accessibility: incidental image - should be empty Alt text $icon = '<img src="' . $mod->get_icon_url() . '" class="icon" alt="" /> '; $this->content->items[] = '<a title="' . $mod->modfullname . '" ' . $linkcss . ' ' . $mod->extra . ' href="' . $url . '">' . $icon . $instancename . '</a>' . $editbuttons; } } } } if ($ismoving) { $this->content->items[] = '<a title="' . $strmovefull . '" href="' . $CFG->wwwroot . '/course/mod.php?' . 'movetosection=' . $section->id . '&sesskey=' . sesskey() . '"><img style="height' . ':16px; width:80px; border:0px" src="' . $OUTPUT->pix_url('movehere') . '" alt="' . $strmovehere . '" /></a>'; $this->content->icons[] = ''; } $this->content->footer = $courserenderer->course_section_add_cm_control($course, $this->config->section, null, array('inblock' => true)); // Replace modchooser with dropdown $this->content->footer = str_replace('hiddenifjs addresourcedropdown', 'visibleifjs addresourcedropdown', $this->content->footer); $this->content->footer = str_replace('visibleifjs addresourcemodchooser', 'hiddenifjs addresourcemodchooser', $this->content->footer); return $this->content; }
function print_section_fn(&$section, $absolute = false, $width = "100%") { /// Prints a section full of activity modules global $CFG, $USER, $THEME; static $initialised; static $groupbuttons; static $groupbuttonslink; static $isteacher, $isteacheredit; static $isediting; static $ismoving; static $strmovehere; static $strmovefull; static $strunreadpostsone; $labelformatoptions = new stdClass(); if (!isset($isteacher)) { $groupbuttons = $this->course->groupmode; $groupbuttonslink = !$this->course->groupmodeforce; $isteacher = has_capability('moodle/grade:viewall', $this->context); $isteacheredit = has_capability('moodle/course:manageactivities', $this->context); $isediting = isediting($this->course->id); $ismoving = ismoving($this->course->id); if ($ismoving) { $strmovehere = get_string("movehere"); $strmovefull = strip_tags(get_string("movefull", "", "'{$USER->activitycopyname}'")); } } if (!isset($initialised)) { include_once $CFG->dirroot . '/mod/forum/lib.php'; if ($usetracking = forum_tp_can_track_forums()) { $strunreadpostsone = get_string('unreadpostsone', 'forum'); } $initialised = true; } // Replace this with language file changes (eventually). $link_title = array('resource' => 'Lesson', 'choice' => 'Opinion', 'lesson' => 'Reading'); $labelformatoptions->noclean = true; $modinfo = unserialize($this->course->modinfo); echo "<table cellpadding=\"1\" cellspacing=\"0\" align=\"center\" width=\"{$width}\">\n"; if (!empty($section->sequence)) { $sectionmods = explode(",", $section->sequence); foreach ($sectionmods as $modnumber) { if (empty($this->mods[$modnumber])) { continue; } $mod = $this->mods[$modnumber]; /// mrc - 20042312 - Begin G8 First Nations School Customization: /// Added check for 'teacheredit' in order to hide invisible activities from /// non-editing teachers. /// if ($mod->visible or $isteacher) { if ($mod->visible or $isteacheredit) { /// mrc - 20042312 - End G8 First Nations School Customization: if (right_to_left()) { $tdalign = 'right'; } else { $tdalign = 'left'; } echo "<tr><td align=\"{$tdalign}\" class=\"activity{$mod->modname}\" width=\"{$width}\">"; if ($ismoving) { if ($mod->id == $USER->activitycopy) { continue; } echo "<a title=\"{$strmovefull}\"" . " href=\"{$CFG->wwwroot}/course/mod.php?moveto={$mod->id}&sesskey={$USER->sesskey}\">" . "<img height=\"16\" width=\"80\" src=\"{$CFG->pixpath}/movehere.gif\" " . " alt=\"{$strmovehere}\" border=\"0\"></a><br />\n"; } $instancename = urldecode($modinfo[$modnumber]->name); if (!empty($CFG->filterall)) { $instancename = filter_text("<nolink>{$instancename}</nolink>", $this->course->id); } if (!empty($modinfo[$modnumber]->extra)) { $extra = urldecode($modinfo[$modnumber]->extra); } else { $extra = ""; } if (!empty($modinfo[$modnumber]->icon)) { $icon = "{$CFG->pixpath}/" . urldecode($modinfo[$modnumber]->icon); } else { $icon = "{$CFG->modpixpath}/{$mod->modname}/icon.gif"; } if ($mod->indent) { print_spacer(12, 20 * $mod->indent, false); } // /// If the questionnaire is mandatory // if (($mod->modname == 'questionnaire') && empty($mandatorypopup)) { // $mandatorypopup = is_mod_mandatory($mod, $USER->id); // } if ($mod->modname == "label") { if (empty($this->course->usemandatory) || empty($mod->mandatory)) { if (!$mod->visible) { echo "<span class=\"dimmed_text\">"; } echo format_text($extra, FORMAT_HTML, $labelformatoptions); if (!$mod->visible) { echo "</span>"; } } else { if ($isediting) { $linkcss = $mod->visible ? "" : " class=\"dimmed\" "; $alttext = isset($link_title[$mod->modname]) ? $link_title[$mod->modname] : $mod->modfullname; echo "<img src=\"{$icon}\"" . " height=16 width=16 alt=\"{$alttext}\">" . " <font size=2><a title=\"{$alttext}\" {$linkcss} {$extra}" . " href=\"{$CFG->wwwroot}/mod/{$mod->modname}/view.php?id={$mod->id}\">{$instancename}</a></font>"; } } } else { if (!$isediting && $mod->modname == 'forum' && isset($this->course->expforumsec) && $this->course->expforumsec == $section->section) { $page = optional_param('page', 0, PARAM_INT); $changegroup = isset($_GET['group']) ? $_GET['group'] : -1; // Group change requested? $forum = get_record("forum", "id", $mod->instance); $groupmode = groupmode($this->course, $mod); // Groups are being used $currentgroup = get_and_set_current_group($this->course, $groupmode, $changegroup); forum_print_latest_discussions($this->course, $forum, $CFG->forum_manydiscussions, 'header', '', $currentgroup, $groupmode, $page); } else { // Normal activity if (!$isteacher && !empty($this->course->activitytracking)) { $act_compl = is_activity_complete($mod, $USER->id); if ($act_compl === false) { echo ' <img src="' . $CFG->wwwroot . '/course/format/' . $this->course->format . '/pix/incomplete.gif" ' . 'height="16" width="16" alt="Activity Not Completed" hspace="10" ' . 'title="Activity Not Completed">'; } else { if ($act_compl === true || is_int($act_compl) && $act_compl >= 50) { echo ' <img src="' . $CFG->wwwroot . '/course/format/' . $this->course->format . '/pix/completed.gif" ' . 'height="16" width="16" alt="Activity Completed" hspace="10" ' . 'title="Activity Completed">'; } else { if (is_int($act_compl)) { echo ' <img src="' . $CFG->wwwroot . '/course/format/' . $this->course->format . '/pix/completedpoor.gif" ' . 'height="16" width="16" alt="Activity Completed Poorly" hspace="10" ' . 'title="Activity Completed Poorly">'; } else { if ($act_compl == 'submitted') { echo ' <img src="' . $CFG->wwwroot . '/course/format/' . $this->course->format . '/pix/submitted.gif" ' . 'height="16" width="16" alt="Activity Submitted" hspace="10" ' . 'title="Activity Submitted">'; } } } } } $linkcss = $mod->visible ? "" : " class=\"dimmed\" "; $alttext = isset($link_title[$mod->modname]) ? $link_title[$mod->modname] : $mod->modfullname; echo "<img src=\"{$icon}\"" . " height=16 width=16 alt=\"{$alttext}\">" . " <font size=2><a title=\"{$alttext}\" {$linkcss} {$extra}" . " href=\"{$CFG->wwwroot}/mod/{$mod->modname}/view.php?id={$mod->id}\">{$instancename}</a></font>"; } } if ($usetracking && $mod->modname == 'forum') { if ($unread = forum_tp_count_forum_unread_posts($mod, $this->course)) { echo '<span class="unread"> <a href="' . $CFG->wwwroot . '/mod/forum/view.php?id=' . $mod->id . '">'; if ($unread == 1) { echo $strunreadpostsone; } else { print_string('unreadpostsnumber', 'forum', $unread); } echo '</a></span>'; } } if ($isediting) { // TODO: we must define this as mod property! if ($groupbuttons and $mod->modname != 'label' and $mod->modname != 'resource' and $mod->modname != 'glossary') { if (!($mod->groupmodelink = $groupbuttonslink)) { $mod->groupmode = $course->groupmode; } } else { $mod->groupmode = false; } echo " "; echo make_editing_buttons($mod, $absolute, true, $mod->indent, $section->section); // echo make_editing_buttons($mod, $absolute, true, $mod->indent); if (isadmin()) { if (empty($THEME->custompix)) { $pixpath = $CFG->wwwroot . '/pix'; } else { $pixpath = $CFG->wwwroot . '/theme/' . $CFG->theme . '/pix'; } if ($mod->hideingradebook) { echo '<a title="Show Grades" href="' . $CFG->wwwroot . '/course/view.php?id=' . $this->course->id . '&hidegrades=0&mid=' . $mod->id . '&sesskey=' . $USER->sesskey . '">' . '<img src="' . $CFG->wwwroot . '/course/format/' . $this->course->format . '/pix/hidegrades.gif" hspace="2" height="11" width="11" border="0" /></a>'; } else { echo '<a title="Hide Grades" href="' . $CFG->wwwroot . '/course/view.php?id=' . $this->course->id . '&hidegrades=1&mid=' . $mod->id . '&sesskey=' . $USER->sesskey . '">' . '<img src="' . $CFG->wwwroot . '/course/format/' . $this->course->format . '/pix/showgrades.gif" hspace="2" height="11" width="11" border="0" /></a>'; } if (!empty($this->course->usemandatory)) { if ($mod->mandatory) { echo '<a title="Mandatory off" href="' . $CFG->wwwroot . '/course/format/' . $this->course->format . '/mod.php?mandatory=0&id=' . $mod->id . '&sesskey=' . $USER->sesskey . '">' . '<img src="' . $CFG->wwwroot . '/course/format/' . $this->course->format . '/pix/lock.gif" hspace="2" height="11" width="11" border="0" /></a>'; } else { echo '<a title="Mandatory on" href="' . $CFG->wwwroot . '/course/format/' . $this->course->format . '/mod.php?mandatory=1&id=' . $mod->id . '&sesskey=' . $USER->sesskey . '">' . '<img src="' . $CFG->wwwroot . '/course/format/' . $this->course->format . '/pix/unlock.gif" hspace="2" height="11" width="11" border="0" /></a>'; } } } } echo "</td>"; echo "</tr>"; } } } if ($ismoving) { echo "<tr><td><a title=\"{$strmovefull}\"" . " href=\"mod.php?movetosection={$section->id}" . '&sesskey=' . $USER->sesskey . '">' . "<img height=\"16\" width=\"80\" src=\"{$CFG->pixpath}/movehere.gif\" " . " alt=\"{$strmovehere}\" border=\"0\"></a></td></tr>\n"; } echo "</table>\n\n"; // return $mandatorypopup; }
/** * If currently moving a file then show the current clipboard. */ private function make_block_show_clipboard_if_file_moving($course) { global $USER; if (is_object($course) && ismoving($course->id)) { $strcancel = get_string('cancel'); $stractivityclipboard = clean_param(format_string(get_string('activityclipboard', '', $USER->activitycopyname)), PARAM_NOTAGS); $stractivityclipboard .= ' (' . html_writer::link(new moodle_url('/mod.php', array('cancelcopy' => 'true', 'sesskey' => sesskey())), $strcancel); echo html_writer::tag('li', $stractivityclipboard, array('class' => 'clipboard')); } }
/** * Returns a control to exit the section moving mode * * @return null|format_flexsections_edit_control */ public function get_edit_controls_cancelmoving() { global $USER; $controls = array(); // cancel moving section $movingsection = $this->is_moving_section(); if ($movingsection) { $cancelmovingurl = course_get_url($this->courseid, $this->get_viewed_section()); $str = strip_tags(get_string('cancelmoving', 'format_flexsections', $this->get_section_name($movingsection))); $controls[] = new format_flexsections_edit_control('cancelmovingsection', $cancelmovingurl, $str); } // cancel moving activity if (ismoving($this->courseid)) { $cancelmovingurl = new moodle_url('/course/mod.php', array('sesskey' => sesskey(), 'cancelcopy' => true, 'sr' => $this->get_viewed_section)); $str = strip_tags(get_string('cancelmoving', 'format_flexsections', $USER->activitycopyname)); $controls[] = new format_flexsections_edit_control('cancelmovingactivity', $cancelmovingurl, $str); } return $controls; }
function get_content() { global $USER, $CFG; if ($this->content !== NULL) { return $this->content; } $this->content = new stdClass(); $this->content->items = array(); $this->content->icons = array(); $this->content->footer = ''; if (empty($this->instance)) { return $this->content; } $course = get_record('course', 'id', $this->instance->pageid); $context = get_context_instance(CONTEXT_COURSE, $course->id); $isediting = isediting($this->instance->pageid) && has_capability('moodle/course:manageactivities', $context); $ismoving = ismoving($this->instance->pageid); $sections = get_all_sections($this->instance->pageid); if (!empty($sections) && isset($sections[0])) { $section = $sections[0]; } if (!empty($section) || $isediting) { get_all_mods($this->instance->pageid, $mods, $modnames, $modnamesplural, $modnamesused); } $groupbuttons = $course->groupmode; $groupbuttonslink = !$course->groupmodeforce; if ($ismoving) { $strmovehere = get_string('movehere'); $strmovefull = strip_tags(get_string('movefull', '', "'{$USER->activitycopyname}'")); $strcancel = get_string('cancel'); $stractivityclipboard = $USER->activitycopyname; } /// Casting $course->modinfo to string prevents one notice when the field is null $modinfo = unserialize((string) $course->modinfo); $editbuttons = ''; if ($ismoving) { $this->content->icons[] = '<img src="' . $CFG->pixpath . '/t/move.gif" class="iconsmall" alt="" />'; $this->content->items[] = $USER->activitycopyname . ' (<a href="' . $CFG->wwwroot . '/course/mod.php?cancelcopy=true&sesskey=' . $USER->sesskey . '">' . $strcancel . '</a>)'; } if (!empty($section) && !empty($section->sequence)) { $sectionmods = explode(',', $section->sequence); foreach ($sectionmods as $modnumber) { if (empty($mods[$modnumber])) { continue; } $mod = $mods[$modnumber]; if ($isediting && !$ismoving) { if ($groupbuttons) { if (!($mod->groupmodelink = $groupbuttonslink)) { $mod->groupmode = $course->groupmode; } } else { $mod->groupmode = false; } $editbuttons = '<div class="buttons">' . make_editing_buttons($mod, true, true) . '</div>'; } else { $editbuttons = ''; } if ($mod->visible || has_capability('moodle/course:viewhiddenactivities', $context)) { if ($ismoving) { if ($mod->id == $USER->activitycopy) { continue; } $this->content->items[] = '<a title="' . $strmovefull . '" href="' . $CFG->wwwroot . '/course/mod.php?moveto=' . $mod->id . '&sesskey=' . $USER->sesskey . '">' . '<img style="height:16px; width:80px; border:0px" src="' . $CFG->pixpath . '/movehere.gif" alt="' . $strmovehere . '" /></a>'; $this->content->icons[] = ''; } $instancename = urldecode($modinfo[$modnumber]->name); $instancename = format_string($instancename, true, $this->instance->pageid); $linkcss = $mod->visible ? '' : ' class="dimmed" '; if (!empty($modinfo[$modnumber]->extra)) { $extra = urldecode($modinfo[$modnumber]->extra); } else { $extra = ''; } if (!empty($modinfo[$modnumber]->icon)) { $icon = $CFG->pixpath . '/' . urldecode($modinfo[$modnumber]->icon); } else { $icon = $CFG->modpixpath . '/' . $mod->modname . '/icon.gif'; } if ($mod->modname == 'label') { $this->content->items[] = format_text($extra, FORMAT_HTML) . $editbuttons; $this->content->icons[] = ''; } else { $this->content->items[] = '<a title="' . $mod->modfullname . '" ' . $linkcss . ' ' . $extra . ' href="' . $CFG->wwwroot . '/mod/' . $mod->modname . '/view.php?id=' . $mod->id . '">' . $instancename . '</a>' . $editbuttons; //Accessibility: incidental image - should be empty Alt text $this->content->icons[] = '<img src="' . $icon . '" class="icon" alt="" />'; } } } } if ($ismoving) { $this->content->items[] = '<a title="' . $strmovefull . '" href="' . $CFG->wwwroot . '/course/mod.php?movetosection=' . $section->id . '&sesskey=' . $USER->sesskey . '">' . '<img style="height:16px; width:80px; border:0px" src="' . $CFG->pixpath . '/movehere.gif" alt="' . $strmovehere . '" /></a>'; $this->content->icons[] = ''; } if ($isediting && $modnames) { $this->content->footer = print_section_add_menus($course, 0, $modnames, true, true); } else { $this->content->footer = ''; } return $this->content; }
/** * Function used by the site index page to display category specific information. */ function fn_display_category_content($course, $catid) { global $USER, $CFG; $totcount = 99; $isteacher = isteacher($course->id); $isediting = isediting($course->id); $ismoving = ismoving($course->id); if (!($category = get_record('course_categories', 'id', $catid))) { error('Invalid category requested.'); } $courses = get_courses_page($catid, 'c.sortorder ASC', 'c.id,c.sortorder,c.shortname,c.fullname,c.summary,c.visible,c.teacher,c.guest,c.password', $totcount); /// Store a course section per category id. Code it by using the 'catid' plus 10 as the section number. $sectnum = $catid + 10; if (!($section = get_record('course_sections', 'course', $course->id, 'section', $sectnum))) { $section = new stdClass(); $section->course = $course->id; $section->section = $sectnum; $section->summary = $category->name; $section->sequence = ''; $section->visible = 1; if (!($section->id = insert_record('course_sections', $section))) { error('Could not create section for category ' . $category->name); } } if (!empty($section) || $isediting) { get_all_mods($course->id, $mods, $modnames, $modnamesplural, $modnamesused); } $groupbuttons = $course->groupmode; $groupbuttonslink = !$course->groupmodeforce; if ($ismoving) { $strmovehere = get_string('movehere'); $strmovefull = strip_tags(get_string('movefull', '', "'{$USER->activitycopyname}'")); $strcancel = get_string('cancel'); $stractivityclipboard = $USER->activitycopyname; } $modinfo = unserialize($course->modinfo); $editbuttons = ''; print_simple_box_start("center", "100%", '', 5, "coursebox"); echo '<table class="topics" width="100%">'; echo '<tr id="section-' . $section . '" class="section main">'; echo '<td class="content">'; print_heading_block('<div align="center">' . $category->name . '</div>'); echo '<table class="section" width="100%">'; if (!empty($section) && !empty($section->sequence)) { $sectionmods = explode(',', $section->sequence); foreach ($sectionmods as $modnumber) { if (empty($mods[$modnumber])) { continue; } $mod = $mods[$modnumber]; if ($isediting && !$ismoving) { if ($groupbuttons) { if (!($mod->groupmodelink = $groupbuttonslink)) { $mod->groupmode = $course->groupmode; } } else { $mod->groupmode = false; } $editbuttons = '<br />' . make_editing_buttons($mod, true, true); } else { $editbuttons = ''; } if ($mod->visible || $isteacher) { echo '<tr><td class="activity ' . $mod->modname . '">'; if ($ismoving) { if ($mod->id == $USER->activitycopy) { continue; } echo '<a title="' . $strmovefull . '" href="' . $CFG->wwwroot . '/course/mod.php?moveto=' . $mod->id . '&sesskey=' . $USER->sesskey . '">' . '<img height="16" width="80" src="' . $CFG->pixpath . '/movehere.gif" alt="' . $strmovehere . '" border="0" /></a>'; } $instancename = urldecode($modinfo[$modnumber]->name); $instancename = format_string($instancename, true, $course->id); $linkcss = $mod->visible ? '' : ' class="dimmed" '; if (!empty($modinfo[$modnumber]->extra)) { $extra = urldecode($modinfo[$modnumber]->extra); } else { $extra = ''; } if (!empty($modinfo[$modnumber]->icon)) { $icon = $CFG->pixpath . '/' . urldecode($modinfo[$modnumber]->icon); } else { $icon = $CFG->modpixpath . '/' . $mod->modname . '/icon.gif'; } if ($mod->modname == 'label') { echo format_text($extra, FORMAT_HTML) . $editbuttons; } else { echo '<img src="' . $icon . '" height="16" width="16" alt="' . $mod->modfullname . '" /> ' . '<a title="' . $mod->modfullname . '" ' . $linkcss . ' ' . $extra . ' href="' . $CFG->wwwroot . '/mod/' . $mod->modname . '/view.php?id=' . $mod->id . '">' . $instancename . '</a>' . $editbuttons; } echo "</td>"; echo "</tr>"; } } } else { echo "<tr><td></td></tr>"; // needed for XHTML compatibility } if ($ismoving) { echo '<tr><td><a title="' . $strmovefull . '" href="' . $CFG->wwwroot . '/course/mod.php?movetosection=' . $section->id . '&sesskey=' . $USER->sesskey . '">' . '<img height="16" width="80" src="' . $CFG->pixpath . '/movehere.gif" alt="' . $strmovehere . '" border="0" /></a></td></tr>'; } if ($isediting && $modnames) { echo '<tr><td>'; print_section_add_menus($course, $section->section, $modnames, true); echo '</td></tr>'; } echo "</table>\n\n"; echo '</td></tr></table>'; print_simple_box_end(); if (empty($courses)) { print_heading(FN_translate_course_string(get_string("nocoursesyet"))); } else { foreach ($courses as $course) { print_course($course); } } }
/** * Called from {@link page_print_position()} and it is * supposed to print the front page settings in the * center column for the site course and only for * the default page (EG: the landing page). * * @return boolean **/ function page_frontpage_settings() { global $CFG, $SESSION, $SITE, $PAGE, $COURSE; // Cheap check first - course ID if ($COURSE->id != SITEID) { return false; } // More expensive check - make sure we are viewing default page $default = page_get_default_page(); $current = $PAGE->get_formatpage(); if (empty($default->id) or empty($current->id) or $default->id != $current->id) { return false; } $editing = $PAGE->user_is_editing(); /// START COPY/PASTE FROM INDEX.PHP print_container_start(); /// Print Section if ($SITE->numsections > 0) { if (!($section = get_record('course_sections', 'course', $SITE->id, 'section', 1))) { delete_records('course_sections', 'course', $SITE->id, 'section', 1); // Just in case $section->course = $SITE->id; $section->section = 1; $section->summary = ''; $section->sequence = ''; $section->visible = 1; $section->id = insert_record('course_sections', $section); } if (!empty($section->sequence) or !empty($section->summary) or $editing) { print_box_start('generalbox sitetopic'); /// If currently moving a file then show the current clipboard if (ismoving($SITE->id)) { $stractivityclipboard = strip_tags(get_string('activityclipboard', '', addslashes($USER->activitycopyname))); echo '<p><font size="2">'; echo "{$stractivityclipboard} (<a href=\"course/mod.php?cancelcopy=true&sesskey={$USER->sesskey}\">" . get_string('cancel') . '</a>)'; echo '</font></p>'; } $options = NULL; $options->noclean = true; echo format_text($section->summary, FORMAT_HTML, $options); if ($editing) { $streditsummary = get_string('editsummary'); echo "<a title=\"{$streditsummary}\" " . " href=\"course/editsection.php?id={$section->id}\"><img src=\"{$CFG->pixpath}/t/edit.gif\" " . " class=\"iconsmall\" alt=\"{$streditsummary}\" /></a><br /><br />"; } get_all_mods($SITE->id, $mods, $modnames, $modnamesplural, $modnamesused); print_section($SITE, $section, $mods, $modnamesused, true); if ($editing) { print_section_add_menus($SITE, $section->section, $modnames); } print_box_end(); } } 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 FRONTPAGENEWS: if ($SITE->newsitems) { // Print forums only when needed require_once $CFG->dirroot . '/mod/forum/lib.php'; if (!($newsforum = forum_get_course_forum($SITE->id, 'news'))) { error('Could not find or create a main news forum for the site'); } if (!empty($USER->id)) { $SESSION->fromdiscussion = $CFG->wwwroot; if (forum_is_subscribed($USER->id, $newsforum)) { $subtext = get_string('unsubscribe', 'forum'); } else { $subtext = get_string('subscribe', 'forum'); } print_heading_block($newsforum->name); echo '<div class="subscribelink"><a href="mod/forum/subscribe.php?id=' . $newsforum->id . '">' . $subtext . '</a></div>'; } else { print_heading_block($newsforum->name); } forum_print_latest_discussions($SITE, $newsforum, $SITE->newsitems, 'plain', 'p.modified DESC'); } break; case FRONTPAGECOURSELIST: if (isloggedin() and !has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM)) and !isguest() and empty($CFG->disablemycourses)) { print_heading_block(get_string('mycourses')); print_my_moodle(); } else { if (!has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM)) and !isguest() or count_records('course') <= FRONTPAGECOURSELIMIT) { // admin should not see list of courses when there are too many of them print_heading_block(get_string('availablecourses')); print_courses(0); } } break; case FRONTPAGECATEGORYNAMES: print_heading_block(get_string('categories')); print_box_start('generalbox categorybox'); print_whole_category_list(NULL, NULL, NULL, -1, false); print_box_end(); print_course_search('', false, 'short'); break; case FRONTPAGECATEGORYCOMBO: print_heading_block(get_string('categories')); print_box_start('generalbox categorybox'); print_whole_category_list(NULL, NULL, NULL, -1, true); print_box_end(); print_course_search('', false, 'short'); break; case FRONTPAGETOPICONLY: // Do nothing!! :-) break; } // echo '<br />'; REMOVED FOR THE FORMAT } print_container_end(); /// END COPY/PASTE FROM INDEX.PHP return true; }
function get_content() { global $USER, $CFG, $DB, $OUTPUT; if ($this->content !== NULL) { return $this->content; } $this->content = new stdClass(); $this->content->items = array(); $this->content->icons = array(); $this->content->footer = ''; if (empty($this->instance)) { return $this->content; } $course = $this->page->course; $courserenderer = $this->page->get_renderer('core', 'course'); require_once $CFG->dirroot . '/course/lib.php'; $context = context_course::instance($course->id); $isediting = $this->page->user_is_editing() && has_capability('moodle/course:manageactivities', $context); $modinfo = get_fast_modinfo($course); /// extra fast view mode if (!$isediting) { if (!empty($modinfo->sections[0])) { foreach ($modinfo->sections[0] as $cmid) { $cm = $modinfo->cms[$cmid]; if (!$cm->uservisible) { continue; } if (!$cm->url) { $content = $cm->get_formatted_content(array('overflowdiv' => true, 'noclean' => true)); $this->content->items[] = $content; $this->content->icons[] = ''; } else { $this->content->items[] = html_writer::div($courserenderer->course_section_cm_name($cm), 'activity'); } } } return $this->content; } // Slow & hacky editing mode. $ismoving = ismoving($course->id); $section = $modinfo->get_section_info(0); if ($ismoving) { $strmovehere = get_string('movehere'); $strmovefull = strip_tags(get_string('movefull', '', "'{$USER->activitycopyname}'")); $strcancel = get_string('cancel'); } else { $strmove = get_string('move'); } if ($ismoving) { $this->content->icons[] = ' <img align="bottom" src="' . $OUTPUT->pix_url('t/move') . '" class="iconsmall" alt="" />'; $this->content->items[] = $USER->activitycopyname . ' (<a href="' . $CFG->wwwroot . '/course/mod.php?cancelcopy=true&sesskey=' . sesskey() . '">' . $strcancel . '</a>)'; } if (!empty($modinfo->sections[0])) { foreach ($modinfo->sections[0] as $modnumber) { $mod = $modinfo->cms[$modnumber]; if (!$mod->uservisible) { continue; } if (!$ismoving) { $actions = course_get_cm_edit_actions($mod, -1); // Prepend list of actions with the 'move' action. $actions = array('move' => new action_menu_link_primary(new moodle_url('/course/mod.php', array('sesskey' => sesskey(), 'copy' => $mod->id)), new pix_icon('t/move', $strmove, 'moodle', array('class' => 'iconsmall', 'title' => '')), $strmove)) + $actions; $editbuttons = html_writer::tag('div', $courserenderer->course_section_cm_edit_actions($actions, $mod, array('donotenhance' => true)), array('class' => 'buttons')); } else { $editbuttons = ''; } if ($mod->visible || has_capability('moodle/course:viewhiddenactivities', $mod->context)) { if ($ismoving) { if ($mod->id == $USER->activitycopy) { continue; } $this->content->items[] = '<a title="' . $strmovefull . '" href="' . $CFG->wwwroot . '/course/mod.php?moveto=' . $mod->id . '&sesskey=' . sesskey() . '">' . '<img style="height:16px; width:80px; border:0px" src="' . $OUTPUT->pix_url('movehere') . '" alt="' . $strmovehere . '" /></a>'; $this->content->icons[] = ''; } if (!$mod->url) { $content = $mod->get_formatted_content(array('overflowdiv' => true, 'noclean' => true)); $this->content->items[] = $content . $editbuttons; $this->content->icons[] = ''; } else { $this->content->items[] = html_writer::div($courserenderer->course_section_cm_name($mod), 'activity') . $editbuttons; } } } } if ($ismoving) { $this->content->items[] = '<a title="' . $strmovefull . '" href="' . $CFG->wwwroot . '/course/mod.php?movetosection=' . $section->id . '&sesskey=' . sesskey() . '">' . '<img style="height:16px; width:80px; border:0px" src="' . $OUTPUT->pix_url('movehere') . '" alt="' . $strmovehere . '" /></a>'; $this->content->icons[] = ''; } $this->content->footer = $courserenderer->course_section_add_cm_control($course, 0, null, array('inblock' => true)); return $this->content; }
function print_section($course, $section, $mods, $modnamesused, $absolute = false, $width = "100%") { /// Prints a section full of activity modules global $CFG, $USER; static $groupbuttons; static $groupbuttonslink; static $isteacher; static $isediting; static $ismoving; static $strmovehere; static $strmovefull; static $strunreadpostsone; static $untracked; static $usetracking; $labelformatoptions = new stdClass(); if (!isset($isteacher)) { $groupbuttons = ($course->groupmode or !$course->groupmodeforce); $groupbuttonslink = !$course->groupmodeforce; $isediting = isediting($course->id); $ismoving = $isediting && ismoving($course->id); if ($ismoving) { $strmovehere = get_string("movehere"); $strmovefull = strip_tags(get_string("movefull", "", "'{$USER->activitycopyname}'")); } include_once $CFG->dirroot . '/mod/forum/lib.php'; if ($usetracking = forum_tp_can_track_forums()) { $strunreadpostsone = get_string('unreadpostsone', 'forum'); $untracked = forum_tp_get_untracked_forums($USER->id, $course->id); } } $labelformatoptions->noclean = true; /// Casting $course->modinfo to string prevents one notice when the field is null $modinfo = unserialize((string) $course->modinfo); $groupings = groups_get_all_groupings($course->id); //Acccessibility: replace table with list <ul>, but don't output empty list. if (!empty($section->sequence)) { // Fix bug #5027, don't want style=\"width:$width\". echo "<ul class=\"section img-text\">\n"; $sectionmods = explode(",", $section->sequence); foreach ($sectionmods as $modnumber) { if (empty($mods[$modnumber])) { continue; } $mod = $mods[$modnumber]; if (($mod->visible or has_capability('moodle/course:viewhiddenactivities', get_context_instance(CONTEXT_COURSE, $course->id))) && (!$ismoving || $mod->id != $USER->activitycopy) && groups_course_module_visible($mod)) { echo '<li class="activity ' . $mod->modname . '" id="module-' . $modnumber . '">'; // Unique ID if ($ismoving) { echo '<a title="' . $strmovefull . '"' . ' href="' . $CFG->wwwroot . '/course/mod.php?moveto=' . $mod->id . '&sesskey=' . $USER->sesskey . '">' . '<img class="movetarget" src="' . $CFG->pixpath . '/movehere.gif" ' . ' alt="' . $strmovehere . '" /></a><br /> '; } $instancename = urldecode($modinfo[$modnumber]->name); $instancename = format_string($instancename, true, $course->id); if (!empty($modinfo[$modnumber]->extra)) { $extra = urldecode($modinfo[$modnumber]->extra); } else { $extra = ""; } if (!empty($modinfo[$modnumber]->icon)) { $icon = "{$CFG->pixpath}/" . urldecode($modinfo[$modnumber]->icon); } else { $icon = "{$CFG->modpixpath}/{$mod->modname}/icon.gif"; } if ($mod->indent) { print_spacer(12, 20 * $mod->indent, false); } if ($mod->modname == "label") { if (!$mod->visible) { echo "<span class=\"dimmed_text\">"; } echo format_text($extra, FORMAT_HTML, $labelformatoptions); if (!$mod->visible) { echo "</span>"; } } else { // Normal activity //Accessibility: for files get description via icon. $altname = ''; if ('resource' == $mod->modname) { if (!empty($modinfo[$modnumber]->icon)) { $possaltname = $modinfo[$modnumber]->icon; $mimetype = mimeinfo_from_icon('type', $possaltname); $altname = get_mimetype_description($mimetype); } else { $altname = $mod->modfullname; } } else { $altname = $mod->modfullname; } // Avoid unnecessary duplication. if (false !== stripos($instancename, $altname)) { $altname = ''; } // File type after name, for alphabetic lists (screen reader). if ($altname) { $altname = get_accesshide(' ' . $altname); } $linkcss = $mod->visible ? "" : " class=\"dimmed\" "; echo '<a ' . $linkcss . ' ' . $extra . ' href="' . $CFG->wwwroot . '/mod/' . $mod->modname . '/view.php?id=' . $mod->id . '">' . '<img src="' . $icon . '" class="activityicon" alt="" /> <span>' . $instancename . $altname . '</span></a>'; if (!empty($CFG->enablegroupings) && !empty($mod->groupingid) && has_capability('moodle/course:managegroups', get_context_instance(CONTEXT_COURSE, $course->id))) { echo " <span class=\"groupinglabel\"> - " . format_string($groupings[$mod->groupingid]->name) . '</span>'; } } if ($usetracking && $mod->modname == 'forum') { $groupmode = groups_get_course_groupmode($course, $mod); $groupid = $groupmode == SEPARATEGROUPS && !has_capability('moodle/course:managegroups', get_context_instance(CONTEXT_COURSE, $course->id)) ? groups_get_course_group($course, true) : false; if (forum_tp_can_track_forums() && !isset($untracked[$mod->instance])) { $unread = forum_tp_count_forum_unread_posts($USER->id, $mod->instance, $groupid); if ($unread) { echo '<span class="unread"> <a href="' . $CFG->wwwroot . '/mod/forum/view.php?id=' . $mod->id . '">'; if ($unread == 1) { echo $strunreadpostsone; } else { print_string('unreadpostsnumber', 'forum', $unread); } echo '</a> </span>'; } } } if ($isediting) { // TODO: we must define this as mod property! if ($groupbuttons and $mod->modname != 'label' and $mod->modname != 'resource' and $mod->modname != 'glossary') { if (!($mod->groupmodelink = $groupbuttonslink)) { $mod->groupmode = $course->groupmode; } } else { $mod->groupmode = false; } echo ' '; echo make_editing_buttons($mod, $absolute, true, $mod->indent, $section->section); } echo "</li>\n"; } } } elseif ($ismoving) { echo "<ul class=\"section\">\n"; } if ($ismoving) { echo '<li><a title="' . $strmovefull . '"' . ' href="' . $CFG->wwwroot . '/course/mod.php?movetosection=' . $section->id . '&sesskey=' . $USER->sesskey . '">' . '<img class="movetarget" src="' . $CFG->pixpath . '/movehere.gif" ' . ' alt="' . $strmovehere . '" /></a></li> '; } if (!empty($section->sequence) || $ismoving) { echo "</ul><!--class='section'-->\n\n"; } }
/** * Prints a section full of activity modules */ function print_section($course, $section, $mods, $modnamesused, $absolute = false, $width = "100%", $hidecompletion = false) { global $CFG, $USER, $DB, $PAGE, $OUTPUT; static $initialised; static $groupbuttons; static $groupbuttonslink; static $isediting; static $ismoving; static $strmovehere; static $strmovefull; static $strunreadpostsone; static $groupings; static $modulenames; if (!isset($initialised)) { $groupbuttons = ($course->groupmode or !$course->groupmodeforce); $groupbuttonslink = !$course->groupmodeforce; $isediting = $PAGE->user_is_editing(); $ismoving = $isediting && ismoving($course->id); if ($ismoving) { $strmovehere = get_string("movehere"); $strmovefull = strip_tags(get_string("movefull", "", "'{$USER->activitycopyname}'")); } $modulenames = array(); $initialised = true; } $modinfo = get_fast_modinfo($course); $completioninfo = new completion_info($course); //Accessibility: replace table with list <ul>, but don't output empty list. if (!empty($section->sequence)) { // Fix bug #5027, don't want style=\"width:$width\". echo "<ul class=\"section img-text\">\n"; $sectionmods = explode(",", $section->sequence); foreach ($sectionmods as $modnumber) { if (empty($mods[$modnumber])) { continue; } /** * @var cm_info */ $mod = $mods[$modnumber]; if ($ismoving and $mod->id == $USER->activitycopy) { // do not display moving mod continue; } if (isset($modinfo->cms[$modnumber])) { // We can continue (because it will not be displayed at all) // if: // 1) The activity is not visible to users // and // 2a) The 'showavailability' option is not set (if that is set, // we need to display the activity so we can show // availability info) // or // 2b) The 'availableinfo' is empty, i.e. the activity was // hidden in a way that leaves no info, such as using the // eye icon. if (!$modinfo->cms[$modnumber]->uservisible && (empty($modinfo->cms[$modnumber]->showavailability) || empty($modinfo->cms[$modnumber]->availableinfo))) { // visibility shortcut continue; } } else { if (!file_exists("{$CFG->dirroot}/mod/{$mod->modname}/lib.php")) { // module not installed continue; } if (!coursemodule_visible_for_user($mod) && empty($mod->showavailability)) { // full visibility check continue; } } if (!isset($modulenames[$mod->modname])) { $modulenames[$mod->modname] = get_string('modulename', $mod->modname); } $modulename = $modulenames[$mod->modname]; // In some cases the activity is visible to user, but it is // dimmed. This is done if viewhiddenactivities is true and if: // 1. the activity is not visible, or // 2. the activity has dates set which do not include current, or // 3. the activity has any other conditions set (regardless of whether // current user meets them) $canviewhidden = has_capability('moodle/course:viewhiddenactivities', get_context_instance(CONTEXT_MODULE, $mod->id)); $accessiblebutdim = false; if ($canviewhidden) { $accessiblebutdim = !$mod->visible; if (!empty($CFG->enableavailability)) { $accessiblebutdim = $accessiblebutdim || $mod->availablefrom > time() || $mod->availableuntil && $mod->availableuntil < time() || count($mod->conditionsgrade) > 0 || count($mod->conditionscompletion) > 0; } } $liclasses = array(); $liclasses[] = 'activity'; $liclasses[] = $mod->modname; $liclasses[] = 'modtype_' . $mod->modname; $extraclasses = $mod->get_extra_classes(); if ($extraclasses) { $liclasses = array_merge($liclasses, explode(' ', $extraclasses)); } echo html_writer::start_tag('li', array('class' => join(' ', $liclasses), 'id' => 'module-' . $modnumber)); if ($ismoving) { echo '<a title="' . $strmovefull . '"' . ' href="' . $CFG->wwwroot . '/course/mod.php?moveto=' . $mod->id . '&sesskey=' . sesskey() . '">' . '<img class="movetarget" src="' . $OUTPUT->pix_url('movehere') . '" ' . ' alt="' . $strmovehere . '" /></a><br /> '; } $classes = array('mod-indent'); if (!empty($mod->indent)) { $classes[] = 'mod-indent-' . $mod->indent; if ($mod->indent > 15) { $classes[] = 'mod-indent-huge'; } } echo html_writer::start_tag('div', array('class' => join(' ', $classes))); // Get data about this course-module list($content, $instancename) = get_print_section_cm_text($modinfo->cms[$modnumber], $course); //Accessibility: for files get description via icon, this is very ugly hack! $altname = ''; $altname = $mod->modfullname; if (!empty($customicon)) { $archetype = plugin_supports('mod', $mod->modname, FEATURE_MOD_ARCHETYPE, MOD_ARCHETYPE_OTHER); if ($archetype == MOD_ARCHETYPE_RESOURCE) { $mimetype = mimeinfo_from_icon('type', $customicon); $altname = get_mimetype_description($mimetype); } } // Avoid unnecessary duplication: if e.g. a forum name already // includes the word forum (or Forum, etc) then it is unhelpful // to include that in the accessible description that is added. if (false !== strpos(textlib::strtolower($instancename), textlib::strtolower($altname))) { $altname = ''; } // File type after name, for alphabetic lists (screen reader). if ($altname) { $altname = get_accesshide(' ' . $altname); } // We may be displaying this just in order to show information // about visibility, without the actual link $contentpart = ''; if ($mod->uservisible) { // Nope - in this case the link is fully working for user $linkclasses = ''; $textclasses = ''; if ($accessiblebutdim) { $linkclasses .= ' dimmed'; $textclasses .= ' dimmed_text'; $accesstext = '<span class="accesshide">' . get_string('hiddenfromstudents') . ': </span>'; } else { $accesstext = ''; } if ($linkclasses) { $linkcss = 'class="' . trim($linkclasses) . '" '; } else { $linkcss = ''; } if ($textclasses) { $textcss = 'class="' . trim($textclasses) . '" '; } else { $textcss = ''; } // Get on-click attribute value if specified $onclick = $mod->get_on_click(); if ($onclick) { $onclick = ' onclick="' . $onclick . '"'; } if ($url = $mod->get_url()) { // Display link itself echo '<a ' . $linkcss . $mod->extra . $onclick . ' href="' . $url . '"><img src="' . $mod->get_icon_url() . '" class="activityicon" alt="' . $modulename . '" /> ' . $accesstext . '<span class="instancename">' . $instancename . $altname . '</span></a>'; // If specified, display extra content after link if ($content) { $contentpart = '<div class="' . trim('contentafterlink' . $textclasses) . '">' . $content . '</div>'; } } else { // No link, so display only content $contentpart = '<div ' . $textcss . $mod->extra . '>' . $accesstext . $content . '</div>'; } if (!empty($mod->groupingid) && has_capability('moodle/course:managegroups', get_context_instance(CONTEXT_COURSE, $course->id))) { if (!isset($groupings)) { $groupings = groups_get_all_groupings($course->id); } echo " <span class=\"groupinglabel\">(" . format_string($groupings[$mod->groupingid]->name) . ')</span>'; } } else { $textclasses = $extraclasses; $textclasses .= ' dimmed_text'; if ($textclasses) { $textcss = 'class="' . trim($textclasses) . '" '; } else { $textcss = ''; } $accesstext = '<span class="accesshide">' . get_string('notavailableyet', 'condition') . ': </span>'; if ($url = $mod->get_url()) { // Display greyed-out text of link echo '<div ' . $textcss . $mod->extra . ' >' . '<img src="' . $mod->get_icon_url() . '" class="activityicon" alt="' . $modulename . '" /> <span>' . $instancename . $altname . '</span></div>'; // Do not display content after link when it is greyed out like this. } else { // No link, so display only content (also greyed) $contentpart = '<div ' . $textcss . $mod->extra . '>' . $accesstext . $content . '</div>'; } } // Module can put text after the link (e.g. forum unread) echo $mod->get_after_link(); // If there is content but NO link (eg label), then display the // content here (BEFORE any icons). In this case cons must be // displayed after the content so that it makes more sense visually // and for accessibility reasons, e.g. if you have a one-line label // it should work similarly (at least in terms of ordering) to an // activity. if (empty($url)) { echo $contentpart; } if ($isediting) { if ($groupbuttons and plugin_supports('mod', $mod->modname, FEATURE_GROUPS, 0)) { if (!($mod->groupmodelink = $groupbuttonslink)) { $mod->groupmode = $course->groupmode; } } else { $mod->groupmode = false; } echo ' '; echo make_editing_buttons($mod, $absolute, true, $mod->indent, $section->section); echo $mod->get_after_edit_icons(); } // Completion $completion = $hidecompletion ? COMPLETION_TRACKING_NONE : $completioninfo->is_enabled($mod); if ($completion != COMPLETION_TRACKING_NONE && isloggedin() && !isguestuser() && $mod->uservisible) { $completiondata = $completioninfo->get_data($mod, true); $completionicon = ''; if ($isediting) { switch ($completion) { case COMPLETION_TRACKING_MANUAL: $completionicon = 'manual-enabled'; break; case COMPLETION_TRACKING_AUTOMATIC: $completionicon = 'auto-enabled'; break; default: // wtf } } else { if ($completion == COMPLETION_TRACKING_MANUAL) { switch ($completiondata->completionstate) { case COMPLETION_INCOMPLETE: $completionicon = 'manual-n'; break; case COMPLETION_COMPLETE: $completionicon = 'manual-y'; break; } } else { // Automatic switch ($completiondata->completionstate) { case COMPLETION_INCOMPLETE: $completionicon = 'auto-n'; break; case COMPLETION_COMPLETE: $completionicon = 'auto-y'; break; case COMPLETION_COMPLETE_PASS: $completionicon = 'auto-pass'; break; case COMPLETION_COMPLETE_FAIL: $completionicon = 'auto-fail'; break; } } } if ($completionicon) { $imgsrc = $OUTPUT->pix_url('i/completion-' . $completionicon); $imgalt = s(get_string('completion-alt-' . $completionicon, 'completion', $mod->name)); if ($completion == COMPLETION_TRACKING_MANUAL && !$isediting) { $imgtitle = s(get_string('completion-title-' . $completionicon, 'completion', $mod->name)); $newstate = $completiondata->completionstate == COMPLETION_COMPLETE ? COMPLETION_INCOMPLETE : COMPLETION_COMPLETE; // In manual mode the icon is a toggle form... // If this completion state is used by the // conditional activities system, we need to turn // off the JS. if (!empty($CFG->enableavailability) && condition_info::completion_value_used_as_condition($course, $mod)) { $extraclass = ' preventjs'; } else { $extraclass = ''; } echo "\n<form class='togglecompletion{$extraclass}' method='post' action='" . $CFG->wwwroot . "/course/togglecompletion.php'><div>\n<input type='hidden' name='id' value='{$mod->id}' />\n<input type='hidden' name='modulename' value='" . s($mod->name) . "' />\n<input type='hidden' name='sesskey' value='" . sesskey() . "' />\n<input type='hidden' name='completionstate' value='{$newstate}' />\n<input type='image' src='{$imgsrc}' alt='{$imgalt}' title='{$imgtitle}' />\n</div></form>"; } else { // In auto mode, or when editing, the icon is just an image echo "<span class='autocompletion'>"; echo "<img src='{$imgsrc}' alt='{$imgalt}' title='{$imgalt}' /></span>"; } } } // If there is content AND a link, then display the content here // (AFTER any icons). Otherwise it was displayed before if (!empty($url)) { echo $contentpart; } // Show availability information (for someone who isn't allowed to // see the activity itself, or for staff) if (!$mod->uservisible) { echo '<div class="availabilityinfo">' . $mod->availableinfo . '</div>'; } else { if ($canviewhidden && !empty($CFG->enableavailability)) { $ci = new condition_info($mod); $fullinfo = $ci->get_full_information(); if ($fullinfo) { echo '<div class="availabilityinfo">' . get_string($mod->showavailability ? 'userrestriction_visible' : 'userrestriction_hidden', 'condition', $fullinfo) . '</div>'; } } } echo html_writer::end_tag('div'); echo html_writer::end_tag('li') . "\n"; } } elseif ($ismoving) { echo "<ul class=\"section\">\n"; } if ($ismoving) { echo '<li><a title="' . $strmovefull . '"' . ' href="' . $CFG->wwwroot . '/course/mod.php?movetosection=' . $section->id . '&sesskey=' . sesskey() . '">' . '<img class="movetarget" src="' . $OUTPUT->pix_url('movehere') . '" ' . ' alt="' . $strmovehere . '" /></a></li> '; } if (!empty($section->sequence) || $ismoving) { echo "</ul><!--class='section'-->\n\n"; } }
function get_content() { global $USER, $CFG, $DB, $OUTPUT; if ($this->content !== NULL) { return $this->content; } $this->content = new stdClass(); $this->content->items = array(); $this->content->icons = array(); $this->content->footer = ''; if (empty($this->instance)) { return $this->content; } $course = $this->page->course; require_once $CFG->dirroot . '/course/lib.php'; $context = context_course::instance($course->id); $isediting = $this->page->user_is_editing() && has_capability('moodle/course:manageactivities', $context); $modinfo = get_fast_modinfo($course); /// extra fast view mode if (!$isediting) { if (!empty($modinfo->sections[0])) { $options = array('overflowdiv' => true); foreach ($modinfo->sections[0] as $cmid) { $cm = $modinfo->cms[$cmid]; if (!$cm->uservisible) { continue; } $content = $cm->get_formatted_content(array('overflowdiv' => true, 'noclean' => true)); $instancename = $cm->get_formatted_name(); if (!($url = $cm->get_url())) { $this->content->items[] = $content; $this->content->icons[] = ''; } else { $linkcss = $cm->visible ? '' : ' class="dimmed" '; //Accessibility: incidental image - should be empty Alt text $icon = '<img src="' . $cm->get_icon_url() . '" class="icon" alt="" /> '; $this->content->items[] = '<a title="' . $cm->modplural . '" ' . $linkcss . ' ' . $cm->extra . ' href="' . $url . '">' . $icon . $instancename . '</a>'; } } } return $this->content; } // Slow & hacky editing mode. /** @var core_course_renderer $courserenderer */ $courserenderer = $this->page->get_renderer('core', 'course'); $ismoving = ismoving($course->id); $modinfo = get_fast_modinfo($course); $section = $modinfo->get_section_info(0); if ($ismoving) { $strmovehere = get_string('movehere'); $strmovefull = strip_tags(get_string('movefull', '', "'{$USER->activitycopyname}'")); $strcancel = get_string('cancel'); $stractivityclipboard = $USER->activitycopyname; } $editbuttons = ''; if ($ismoving) { $this->content->icons[] = ' <img align="bottom" src="' . $OUTPUT->pix_url('t/move') . '" class="iconsmall" alt="" />'; $this->content->items[] = $USER->activitycopyname . ' (<a href="' . $CFG->wwwroot . '/course/mod.php?cancelcopy=true&sesskey=' . sesskey() . '">' . $strcancel . '</a>)'; } if (!empty($modinfo->sections[0])) { $options = array('overflowdiv' => true); foreach ($modinfo->sections[0] as $modnumber) { $mod = $modinfo->cms[$modnumber]; if (!$mod->uservisible) { continue; } if (!$ismoving) { $actions = course_get_cm_edit_actions($mod, -1); $editbuttons = '<br />' . $courserenderer->course_section_cm_edit_actions($actions, $mod); } else { $editbuttons = ''; } if ($mod->visible || has_capability('moodle/course:viewhiddenactivities', $context)) { if ($ismoving) { if ($mod->id == $USER->activitycopy) { continue; } $this->content->items[] = '<a title="' . $strmovefull . '" href="' . $CFG->wwwroot . '/course/mod.php?moveto=' . $mod->id . '&sesskey=' . sesskey() . '">' . '<img style="height:16px; width:80px; border:0px" src="' . $OUTPUT->pix_url('movehere') . '" alt="' . $strmovehere . '" /></a>'; $this->content->icons[] = ''; } $content = $mod->get_formatted_content(array('overflowdiv' => true, 'noclean' => true)); $instancename = $mod->get_formatted_name(); $linkcss = $mod->visible ? '' : ' class="dimmed" '; if (!($url = $mod->get_url())) { $this->content->items[] = $content . $editbuttons; $this->content->icons[] = ''; } else { //Accessibility: incidental image - should be empty Alt text $icon = '<img src="' . $mod->get_icon_url() . '" class="icon" alt="" /> '; $this->content->items[] = '<a title="' . $mod->modfullname . '" ' . $linkcss . ' ' . $mod->extra . ' href="' . $url . '">' . $icon . $instancename . '</a>' . $editbuttons; } } } } if ($ismoving) { $this->content->items[] = '<a title="' . $strmovefull . '" href="' . $CFG->wwwroot . '/course/mod.php?movetosection=' . $section->id . '&sesskey=' . sesskey() . '">' . '<img style="height:16px; width:80px; border:0px" src="' . $OUTPUT->pix_url('movehere') . '" alt="' . $strmovehere . '" /></a>'; $this->content->icons[] = ''; } $this->content->footer = $courserenderer->course_section_add_cm_control($course, 0, null, array('inblock' => true)); return $this->content; }
function get_content() { global $USER, $CFG, $DB, $OUTPUT; if ($this->content !== NULL) { return $this->content; } $this->content = new stdClass(); $this->content->items = array(); $this->content->icons = array(); $this->content->footer = ''; if (empty($this->instance)) { return $this->content; } $course = $this->page->course; require_once $CFG->dirroot . '/course/lib.php'; $context = context_course::instance($course->id); $isediting = $this->page->user_is_editing() && has_capability('moodle/course:manageactivities', $context); $modinfo = get_fast_modinfo($course); /// extra fast view mode if (!$isediting) { if (!empty($modinfo->sections[0])) { $options = array('overflowdiv' => true); foreach ($modinfo->sections[0] as $cmid) { $cm = $modinfo->cms[$cmid]; if (!$cm->uservisible) { continue; } list($content, $instancename) = get_print_section_cm_text($cm, $course); if (!($url = $cm->get_url())) { $this->content->items[] = $content; $this->content->icons[] = ''; } else { $linkcss = $cm->visible ? '' : ' class="dimmed" '; //Accessibility: incidental image - should be empty Alt text $icon = '<img src="' . $cm->get_icon_url() . '" class="icon" alt="" /> '; $this->content->items[] = '<a title="' . $cm->modplural . '" ' . $linkcss . ' ' . $cm->extra . ' href="' . $url . '">' . $icon . $instancename . '</a>'; } } } return $this->content; } /// slow & hacky editing mode $ismoving = ismoving($course->id); $section = get_course_section(0, $course->id); get_all_mods($course->id, $mods, $modnames, $modnamesplural, $modnamesused); $groupbuttons = $course->groupmode; $groupbuttonslink = !$course->groupmodeforce; if ($ismoving) { $strmovehere = get_string('movehere'); $strmovefull = strip_tags(get_string('movefull', '', "'{$USER->activitycopyname}'")); $strcancel = get_string('cancel'); $stractivityclipboard = $USER->activitycopyname; } /// Casting $course->modinfo to string prevents one notice when the field is null $editbuttons = ''; if ($ismoving) { $this->content->icons[] = '<img src="' . $OUTPUT->pix_url('t/move') . '" class="iconsmall" alt="" />'; $this->content->items[] = $USER->activitycopyname . ' (<a href="' . $CFG->wwwroot . '/course/mod.php?cancelcopy=true&sesskey=' . sesskey() . '">' . $strcancel . '</a>)'; } if (!empty($section->sequence)) { $sectionmods = explode(',', $section->sequence); $options = array('overflowdiv' => true); foreach ($sectionmods as $modnumber) { if (empty($mods[$modnumber])) { continue; } $mod = $mods[$modnumber]; if (!$ismoving) { if ($groupbuttons) { if (!($mod->groupmodelink = $groupbuttonslink)) { $mod->groupmode = $course->groupmode; } } else { $mod->groupmode = false; } $editbuttons = '<div class="buttons">' . make_editing_buttons($mod, true, true) . '</div>'; } else { $editbuttons = ''; } if ($mod->visible || has_capability('moodle/course:viewhiddenactivities', $context)) { if ($ismoving) { if ($mod->id == $USER->activitycopy) { continue; } $this->content->items[] = '<a title="' . $strmovefull . '" href="' . $CFG->wwwroot . '/course/mod.php?moveto=' . $mod->id . '&sesskey=' . sesskey() . '">' . '<img style="height:16px; width:80px; border:0px" src="' . $OUTPUT->pix_url('movehere') . '" alt="' . $strmovehere . '" /></a>'; $this->content->icons[] = ''; } list($content, $instancename) = get_print_section_cm_text($modinfo->cms[$modnumber], $course); $linkcss = $mod->visible ? '' : ' class="dimmed" '; if (!($url = $mod->get_url())) { $this->content->items[] = $content . $editbuttons; $this->content->icons[] = ''; } else { //Accessibility: incidental image - should be empty Alt text $icon = '<img src="' . $mod->get_icon_url() . '" class="icon" alt="" /> '; $this->content->items[] = '<a title="' . $mod->modfullname . '" ' . $linkcss . ' ' . $mod->extra . ' href="' . $url . '">' . $icon . $instancename . '</a>' . $editbuttons; } } } } if ($ismoving) { $this->content->items[] = '<a title="' . $strmovefull . '" href="' . $CFG->wwwroot . '/course/mod.php?movetosection=' . $section->id . '&sesskey=' . sesskey() . '">' . '<img style="height:16px; width:80px; border:0px" src="' . $OUTPUT->pix_url('movehere') . '" alt="' . $strmovehere . '" /></a>'; $this->content->icons[] = ''; } if (!empty($modnames)) { $this->content->footer = print_section_add_menus($course, 0, $modnames, true, true); } else { $this->content->footer = ''; } return $this->content; }
function print_section_newsroom($course, $section, $mods, $modnamesused, $absolute = false, $width = "100%") { /// Prints a section full of activity modules global $CFG, $USER; static $initialised; static $groupbuttons; static $groupbuttonslink; static $isediting; static $ismoving; static $strmovehere; static $strmovefull; static $strunreadpostsone; static $usetracking; static $groupings; if (!isset($initialised)) { $groupbuttons = ($course->groupmode or !$course->groupmodeforce); $groupbuttonslink = !$course->groupmodeforce; $isediting = isediting($course->id); $ismoving = $isediting && ismoving($course->id); if ($ismoving) { $strmovehere = get_string("movehere"); $strmovefull = strip_tags(get_string("movefull", "", "'{$USER->activitycopyname}'")); } include_once $CFG->dirroot . '/mod/forum/lib.php'; if ($usetracking = forum_tp_can_track_forums()) { $strunreadpostsone = get_string('unreadpostsone', 'forum'); } $initialised = true; } $labelformatoptions = new object(); $labelformatoptions->noclean = true; /// Casting $course->modinfo to string prevents one notice when the field is null $modinfo = get_fast_modinfo($course); //Acccessibility: replace table with list <ul>, but don't output empty list. if (!empty($section->sequence)) { // Fix bug #5027, don't want style=\"width:$width\". echo "<ul class=\"section img-text\">\n"; $sectionmods = explode(",", $section->sequence); foreach ($sectionmods as $modnumber) { if (empty($mods[$modnumber])) { continue; } $mod = $mods[$modnumber]; if ($ismoving and $mod->id == $USER->activitycopy) { // do not display moving mod continue; } if (isset($modinfo->cms[$modnumber])) { if (!$modinfo->cms[$modnumber]->uservisible) { // visibility shortcut continue; } } else { if (!file_exists("{$CFG->dirroot}/mod/{$mod->modname}/lib.php")) { // module not installed continue; } if (!coursemodule_visible_for_user($mod)) { // full visibility check continue; } } // The magic! ... if indent == 1 then ... hide module if ($mod->indent == 1) { $hiddemodule = 'hidden'; } else { $hiddemodule = ''; } echo '<li class="activity ' . $mod->modname . ' ' . $hiddemodule . '" id="module-' . $modnumber . '">'; // Unique ID if ($ismoving) { echo '<a title="' . $strmovefull . '"' . ' href="' . $CFG->wwwroot . '/course/mod.php?moveto=' . $mod->id . '&sesskey=' . $USER->sesskey . '">' . '<img class="movetarget" src="' . $CFG->pixpath . '/movehere.gif" ' . ' alt="' . $strmovehere . '" /></a><br /> '; } if ($mod->indent) { print_spacer(12, 20 * $mod->indent, false); } $extra = ''; if (!empty($modinfo->cms[$modnumber]->extra)) { $extra = $modinfo->cms[$modnumber]->extra; } if ($mod->modname == "label") { echo "<span class=\""; if (!$mod->visible) { echo 'dimmed_text'; } else { echo 'label'; } echo '">'; echo format_text($extra, FORMAT_HTML, $labelformatoptions); echo "</span>"; if (!empty($CFG->enablegroupings) && !empty($mod->groupingid) && has_capability('moodle/course:managegroups', get_context_instance(CONTEXT_COURSE, $course->id))) { if (!isset($groupings)) { $groupings = groups_get_all_groupings($course->id); } echo " <span class=\"groupinglabel\">(" . format_string($groupings[$mod->groupingid]->name) . ')</span>'; } } else { // Normal activity $instancename = format_string($modinfo->cms[$modnumber]->name, true, $course->id); if (!empty($modinfo->cms[$modnumber]->icon)) { $icon = "{$CFG->pixpath}/" . $modinfo->cms[$modnumber]->icon; } else { $icon = "{$CFG->modpixpath}/{$mod->modname}/icon.gif"; } //Accessibility: for files get description via icon. $altname = ''; if ('resource' == $mod->modname) { if (!empty($modinfo->cms[$modnumber]->icon)) { $possaltname = $modinfo->cms[$modnumber]->icon; $mimetype = mimeinfo_from_icon('type', $possaltname); $altname = get_mimetype_description($mimetype); } else { $altname = $mod->modfullname; } } else { $altname = $mod->modfullname; } // Avoid unnecessary duplication. if (false !== stripos($instancename, $altname)) { $altname = ''; } // File type after name, for alphabetic lists (screen reader). if ($altname) { $altname = get_accesshide(' ' . $altname); } $linkcss = $mod->visible ? "" : " class=\"dimmed\" "; echo '<a ' . $linkcss . ' ' . $extra . ' href="' . $CFG->wwwroot . '/mod/' . $mod->modname . '/view.php?id=' . $mod->id . '">' . '<img src="' . $icon . '" class="activityicon" alt="" /> <span>' . $instancename . $altname . '</span></a>'; //echo " $mod->modname "; // Special NEWSPAPER magic ... show summry from resource and blog's 200 chars from each post OUBlog (nadavkav) if ($mod->modname == 'resource') { $article = get_record('resource', 'id', $mod->instance); //print_r($article ); echo "{$article->summary}"; } if ($mod->modname == 'oublog') { require_once $CFG->dirroot . '/mod/oublog/locallib.php'; $oublog = get_record('oublog', 'id', $mod->instance); if (!($oublogcm = get_coursemodule_from_instance('oublog', $oublog->id))) { //error("Course module ID was incorrect"); } $oublogcontext = get_context_instance(CONTEXT_MODULE, $oublogcm->id); //oublog_check_view_permissions($oublog, $oublogcontext, $oublogcm); $currentgroup = oublog_get_activity_group($oublogcm, true); echo '<br/>'; /// Get Posts list($posts, $recordcount) = oublog_get_posts($oublog, $oublogcontext, 0, $oublogcm, $currentgroup); //, -1, $oubloguser->id, $tag, $canaudit); $i = 0; foreach ($posts as $post) { if ($i < 3) { echo '<a href="' . $CFG->wwwroot . '/mod/oublog/viewpost.php?blog=' . $oublog->id . '&post=' . $post->id . '">' . $post->title . '</a><br/>'; $summaryformatoptions->noclean = false; echo mb_substr(format_text($post->message, FORMAT_HTML, $summaryformatoptions), 1, 600) . "<hr/>"; } if ($i > 2 and $i < 6) { echo '<a href="' . $CFG->wwwroot . '/mod/oublog/viewpost.php?blog=' . $oublog->id . '&post=' . $post->id . '">' . $post->title . '</a><br/>'; } $i++; } //print_r($article ); //echo "$article->summary"; echo '<br/><a ' . $linkcss . ' ' . $extra . ' href="' . $CFG->wwwroot . '/mod/' . $mod->modname . '/view.php?id=' . $mod->id . '">' . '<img src="' . $icon . '" class="activityicon" alt="" /> <span>' . get_string('more', 'format_newsroom') . '</span></a>'; } if (!empty($CFG->enablegroupings) && !empty($mod->groupingid) && has_capability('moodle/course:managegroups', get_context_instance(CONTEXT_COURSE, $course->id))) { if (!isset($groupings)) { $groupings = groups_get_all_groupings($course->id); } echo " <span class=\"groupinglabel\">(" . format_string($groupings[$mod->groupingid]->name) . ')</span>'; } } if ($usetracking && $mod->modname == 'forum') { if ($unread = forum_tp_count_forum_unread_posts($mod, $course)) { echo '<span class="unread"> <a href="' . $CFG->wwwroot . '/mod/forum/view.php?id=' . $mod->id . '">'; if ($unread == 1) { echo $strunreadpostsone; } else { print_string('unreadpostsnumber', 'forum', $unread); } echo '</a></span>'; } } if ($isediting) { // TODO: we must define this as mod property! if ($groupbuttons and $mod->modname != 'label' and $mod->modname != 'resource' and $mod->modname != 'glossary') { if (!($mod->groupmodelink = $groupbuttonslink)) { $mod->groupmode = $course->groupmode; } } else { $mod->groupmode = false; } echo ' '; echo make_editing_buttons($mod, $absolute, true, $mod->indent, $section->section); } echo "</li>\n"; } } elseif ($ismoving) { echo "<ul class=\"section\">\n"; } if ($ismoving) { echo '<li><a title="' . $strmovefull . '"' . ' href="' . $CFG->wwwroot . '/course/mod.php?movetosection=' . $section->id . '&sesskey=' . $USER->sesskey . '">' . '<img class="movetarget" src="' . $CFG->pixpath . '/movehere.gif" ' . ' alt="' . $strmovehere . '" /></a></li> '; } if (!empty($section->sequence) || $ismoving) { echo "</ul><!--class='section'-->\n\n"; } }
} $beforecm = NULL; } else { // normal moveto if (!($beforecm = get_record("course_modules", "id", $moveto))) { error("The destination course module doesn't exist"); } if (!($section = get_record("course_sections", "id", $beforecm->section))) { error("This section doesn't exist"); } } require_login($section->course); // needed to setup proper $COURSE $context = get_context_instance(CONTEXT_COURSE, $section->course); require_capability('moodle/course:manageactivities', $context); if (!ismoving($section->course)) { error("You need to copy something first!"); } moveto_module($cm, $section, $beforecm); unset($USER->activitycopy); unset($USER->activitycopycourse); unset($USER->activitycopyname); rebuild_course_cache($section->course); if (SITEID == $section->course) { redirect($CFG->wwwroot); } else { redirect("view.php?id={$section->course}#section-{$sectionreturn}"); } } else { if (!empty($indent) and confirm_sesskey()) { $id = required_param('id', PARAM_INT);
function get_content() { global $USER, $CFG, $DB, $OUTPUT; if ($this->content !== NULL) { return $this->content; } $this->content = new stdClass(); $this->content->items = array(); $this->content->icons = array(); $this->content->footer = ''; if (empty($this->instance)) { return $this->content; } $course = $this->page->course; require_once $CFG->dirroot . '/course/lib.php'; $context = context_course::instance($course->id); $isediting = $this->page->user_is_editing() && has_capability('moodle/course:manageactivities', $context); /// extra fast view mode if (!$isediting) { $modinfo = get_fast_modinfo($course); if (!empty($modinfo->sections[0])) { foreach ($modinfo->sections[0] as $cmid) { $cm = $modinfo->cms[$cmid]; if (!$cm->uservisible) { continue; } if ($cm->indent > 0) { $indent = '<div class="mod-indent mod-indent-' . $cm->indent . '"></div>'; } else { $indent = ''; } if (!empty($cm->url)) { $attrs = array(); $attrs['title'] = $cm->modfullname; $attrs['class'] = $cm->extraclasses . ' activity-action'; if ($cm->onclick) { $attrs['id'] = html_writer::random_id('onclick'); $OUTPUT->add_action_handler(new component_action('click', $cm->onclick), $attrs['id']); } if (!$cm->visible) { $attrs['class'] .= ' dimmed'; } $icon = '<img src="' . $cm->get_icon_url() . '" class="icon" alt="" />'; $content = html_writer::link($cm->url, $icon . $cm->get_formatted_name(), $attrs); } else { $content = $cm->get_formatted_content(array('overflowdiv' => true, 'noclean' => true)); } $this->content->items[] = $indent . html_writer::div($content, 'main-menu-content'); } } return $this->content; } // Slow & hacky editing mode. /** @var core_course_renderer $courserenderer */ $courserenderer = $this->page->get_renderer('core', 'course'); $ismoving = ismoving($course->id); course_create_sections_if_missing($course, 0); $modinfo = get_fast_modinfo($course); $section = $modinfo->get_section_info(0); if ($ismoving) { $strmovehere = get_string('movehere'); $strmovefull = strip_tags(get_string('movefull', '', "'{$USER->activitycopyname}'")); $strcancel = get_string('cancel'); $stractivityclipboard = $USER->activitycopyname; } else { $strmove = get_string('move'); } $editbuttons = ''; if ($ismoving) { $this->content->icons[] = '<img src="' . $OUTPUT->pix_url('t/move') . '" class="iconsmall" alt="" />'; $this->content->items[] = $USER->activitycopyname . ' (<a href="' . $CFG->wwwroot . '/course/mod.php?cancelcopy=true&sesskey=' . sesskey() . '">' . $strcancel . '</a>)'; } if (!empty($modinfo->sections[0])) { $options = array('overflowdiv' => true); foreach ($modinfo->sections[0] as $modnumber) { $mod = $modinfo->cms[$modnumber]; if (!$mod->uservisible) { continue; } if (!$ismoving) { $actions = course_get_cm_edit_actions($mod, $mod->indent); // Prepend list of actions with the 'move' action. $actions = array('move' => new action_menu_link_primary(new moodle_url('/course/mod.php', array('sesskey' => sesskey(), 'copy' => $mod->id)), new pix_icon('t/move', $strmove, 'moodle', array('class' => 'iconsmall', 'title' => '')), $strmove)) + $actions; $editbuttons = html_writer::tag('div', $courserenderer->course_section_cm_edit_actions($actions, $mod, array('donotenhance' => true)), array('class' => 'buttons')); } else { $editbuttons = ''; } if ($mod->visible || has_capability('moodle/course:viewhiddenactivities', $mod->context)) { if ($ismoving) { if ($mod->id == $USER->activitycopy) { continue; } $this->content->items[] = '<a title="' . $strmovefull . '" href="' . $CFG->wwwroot . '/course/mod.php?moveto=' . $mod->id . '&sesskey=' . sesskey() . '">' . '<img style="height:16px; width:80px; border:0px" src="' . $OUTPUT->pix_url('movehere') . '" alt="' . $strmovehere . '" /></a>'; $this->content->icons[] = ''; } if ($mod->indent > 0) { $indent = '<div class="mod-indent mod-indent-' . $mod->indent . '"></div>'; } else { $indent = ''; } $url = $mod->url; if (!$url) { $content = $mod->get_formatted_content(array('overflowdiv' => true, 'noclean' => true)); } else { //Accessibility: incidental image - should be empty Alt text $attrs = array(); $attrs['title'] = $mod->modfullname; $attrs['class'] = $mod->extraclasses . ' activity-action'; if ($mod->onclick) { $attrs['id'] = html_writer::random_id('onclick'); $OUTPUT->add_action_handler(new component_action('click', $mod->onclick), $attrs['id']); } if (!$mod->visible) { $attrs['class'] .= ' dimmed'; } $icon = '<img src="' . $mod->get_icon_url() . '" class="icon" alt="" />'; $content = html_writer::link($url, $icon . $mod->get_formatted_name(), $attrs); } $this->content->items[] = $indent . html_writer::div($content . $editbuttons, 'main-menu-content'); } } } if ($ismoving) { $this->content->items[] = '<a title="' . $strmovefull . '" href="' . $CFG->wwwroot . '/course/mod.php?movetosection=' . $section->id . '&sesskey=' . sesskey() . '">' . '<img style="height:16px; width:80px; border:0px" src="' . $OUTPUT->pix_url('movehere') . '" alt="' . $strmovehere . '" /></a>'; $this->content->icons[] = ''; } $this->content->footer = $courserenderer->course_section_add_cm_control($course, 0, null, array('inblock' => true)); return $this->content; }
/// Print Section if ($SITE->numsections > 0) { if (!($section = get_record('course_sections', 'course', $SITE->id, 'section', 1))) { delete_records('course_sections', 'course', $SITE->id, 'section', 1); // Just in case $section->course = $SITE->id; $section->section = 1; $section->summary = ''; $section->sequence = ''; $section->visible = 1; $section->id = insert_record('course_sections', $section); } if (!empty($section->sequence) or !empty($section->summary) or $editing) { print_box_start('generalbox sitetopic'); /// If currently moving a file then show the current clipboard if (ismoving($SITE->id)) { $stractivityclipboard = strip_tags(get_string('activityclipboard', '', addslashes($USER->activitycopyname))); echo '<p><font size="2">'; echo "{$stractivityclipboard} (<a href=\"course/mod.php?cancelcopy=true&sesskey={$USER->sesskey}\">" . get_string('cancel') . '</a>)'; echo '</font></p>'; } $options = NULL; $options->noclean = true; echo format_text($section->summary, FORMAT_HTML, $options); if ($editing) { $streditsummary = get_string('editsummary'); echo "<a title=\"{$streditsummary}\" " . " href=\"course/editsection.php?id={$section->id}\"><img src=\"{$CFG->pixpath}/t/edit.gif\" " . " class=\"iconsmall\" alt=\"{$streditsummary}\" /></a><br /><br />"; } get_all_mods($SITE->id, $mods, $modnames, $modnamesplural, $modnamesused); print_section($SITE, $section, $mods, $modnamesused, true); if ($editing) {
function print_section_dblistview($course, $section, $mods, $modnamesused, $absolute = false, $width = "100%") { /// Prints a section full of activity modules global $CFG, $USER; static $initialised; static $groupbuttons; static $groupbuttonslink; static $isediting; static $ismoving; static $strmovehere; static $strmovefull; static $strunreadpostsone; static $usetracking; static $groupings; if (!isset($initialised)) { $groupbuttons = ($course->groupmode or !$course->groupmodeforce); $groupbuttonslink = !$course->groupmodeforce; $isediting = isediting($course->id); $ismoving = $isediting && ismoving($course->id); if ($ismoving) { $strmovehere = get_string("movehere"); $strmovefull = strip_tags(get_string("movefull", "", "'{$USER->activitycopyname}'")); } include_once $CFG->dirroot . '/mod/forum/lib.php'; if ($usetracking = forum_tp_can_track_forums()) { $strunreadpostsone = get_string('unreadpostsone', 'forum'); } $initialised = true; } $labelformatoptions = new object(); $labelformatoptions->noclean = true; /// Casting $course->modinfo to string prevents one notice when the field is null $modinfo = get_fast_modinfo($course); //Acccessibility: replace table with list <ul>, but don't output empty list. if (!empty($section->sequence)) { // Fix bug #5027, don't want style=\"width:$width\". echo "<ul class=\"section img-text\">\n"; $sectionmods = explode(",", $section->sequence); foreach ($sectionmods as $modnumber) { if (empty($mods[$modnumber])) { continue; } $mod = $mods[$modnumber]; if ($ismoving and $mod->id == $USER->activitycopy) { // do not display moving mod continue; } if (isset($modinfo->cms[$modnumber])) { if (!$modinfo->cms[$modnumber]->uservisible) { // visibility shortcut continue; } } else { if (!file_exists("{$CFG->dirroot}/mod/{$mod->modname}/lib.php")) { // module not installed continue; } if (!coursemodule_visible_for_user($mod)) { // full visibility check continue; } } // The magic! ... if indent == 1 then ... hide module // if ($mod->indent == 1) { // $hiddemodule = 'hidden'; // } else { // $hiddemodule = ''; // } echo '<li class="activity ' . $mod->modname . ' ' . $hiddemodule . '" id="module-' . $modnumber . '">'; // Unique ID if ($ismoving) { echo '<a title="' . $strmovefull . '"' . ' href="' . $CFG->wwwroot . '/course/mod.php?moveto=' . $mod->id . '&sesskey=' . $USER->sesskey . '">' . '<img class="movetarget" src="' . $CFG->pixpath . '/movehere.gif" ' . ' alt="' . $strmovehere . '" /></a><br /> '; } if ($mod->indent) { print_spacer(12, 20 * $mod->indent, false); } $extra = ''; if (!empty($modinfo->cms[$modnumber]->extra)) { $extra = $modinfo->cms[$modnumber]->extra; } if ($mod->modname == "label") { echo "<span class=\""; if (!$mod->visible) { echo 'dimmed_text'; } else { echo 'label'; } echo '">'; echo format_text($extra, FORMAT_HTML, $labelformatoptions); echo "</span>"; if (!empty($CFG->enablegroupings) && !empty($mod->groupingid) && has_capability('moodle/course:managegroups', get_context_instance(CONTEXT_COURSE, $course->id))) { if (!isset($groupings)) { $groupings = groups_get_all_groupings($course->id); } echo " <span class=\"groupinglabel\">(" . format_string($groupings[$mod->groupingid]->name) . ')</span>'; } } else { // Normal activity $instancename = format_string($modinfo->cms[$modnumber]->name, true, $course->id); if (!empty($modinfo->cms[$modnumber]->icon)) { $icon = "{$CFG->pixpath}/" . $modinfo->cms[$modnumber]->icon; } else { $icon = "{$CFG->modpixpath}/{$mod->modname}/icon.gif"; } //Accessibility: for files get description via icon. $altname = ''; if ('resource' == $mod->modname) { if (!empty($modinfo->cms[$modnumber]->icon)) { $possaltname = $modinfo->cms[$modnumber]->icon; $mimetype = mimeinfo_from_icon('type', $possaltname); $altname = get_mimetype_description($mimetype); } else { $altname = $mod->modfullname; } } else { $altname = $mod->modfullname; } // Avoid unnecessary duplication. if (false !== stripos($instancename, $altname)) { $altname = ''; } // File type after name, for alphabetic lists (screen reader). if ($altname) { $altname = get_accesshide(' ' . $altname); } $linkcss = $mod->visible ? "" : " class=\"dimmed\" "; if ($mod->modname != 'data') { echo '<a ' . $linkcss . ' ' . $extra . ' href="' . $CFG->wwwroot . '/mod/' . $mod->modname . '/view.php?id=' . $mod->id . '">' . '<img src="' . $icon . '" class="activityicon" alt="" /> <span>' . $instancename . $altname . '</span></a>'; } //echo " $mod->modname "; // Special DBLISTVIEW magic ... show summry from resource and blog's 200 chars from each post OUBlog (nadavkav) if ($mod->modname == 'resource') { $article = get_record('resource', 'id', $mod->instance); //print_r($article ); echo "{$article->summary}"; } if ($mod->modname == 'data') { require_once $CFG->dirroot . '/mod/data/lib.php'; if (!($data = get_record('data', 'id', $mod->instance))) { //error('Course module is incorrect'); } $sort = 0; $what = ' DISTINCT r.id, r.approved, r.timecreated, r.timemodified, r.userid, u.firstname, u.lastname '; $count = ' COUNT(DISTINCT c.recordid) '; $tables = $CFG->prefix . 'data_content c,' . $CFG->prefix . 'data_records r,' . $CFG->prefix . 'data_content cs, ' . $CFG->prefix . 'user u '; $where = 'WHERE c.recordid = r.id AND r.dataid = ' . $data->id . ' AND r.userid = u.id '; $sortorder = ' ORDER BY r.id ASC '; $searchselect = ''; // If requiredentries is not reached, only show current user's entries //if (!$requiredentries_allowed) { // $where .= ' AND u.id = ' . $USER->id; //} /// To actually fetch the records //$fromsql = "FROM $tables $advtables $where $advwhere $groupselect $approveselect $searchselect $advsearchselect"; $fromsql = "FROM {$tables} {$where} "; $sqlselect = "SELECT {$what} {$fromsql} {$sortorder}"; /// Get the actual records if (!($records = get_records_sql($sqlselect))) { // Nothing to show! } if (empty($data->listtemplate)) { //notify(get_string('nolisttemplate','data')); //data_generate_default_template($data, 'listtemplate', 0, false, false); } echo $data->listtemplateheader; data_print_template('listtemplate', $records, $data); echo $data->listtemplatefooter; //print_r($article ); //echo "$article->summary"; echo '<hr/><a ' . $linkcss . ' ' . $extra . ' href="' . $CFG->wwwroot . '/mod/' . $mod->modname . '/view.php?id=' . $mod->id . '">' . '<img src="' . $icon . '" class="activityicon" alt="" /> <span>' . get_string('more', 'format_dblistview') . '</span></a>'; if (!empty($data->csstemplate)) { echo '<style>' . $data->csstemplate . '</style>'; } } if (!empty($CFG->enablegroupings) && !empty($mod->groupingid) && has_capability('moodle/course:managegroups', get_context_instance(CONTEXT_COURSE, $course->id))) { if (!isset($groupings)) { $groupings = groups_get_all_groupings($course->id); } echo " <span class=\"groupinglabel\">(" . format_string($groupings[$mod->groupingid]->name) . ')</span>'; } } if ($usetracking && $mod->modname == 'forum') { if ($unread = forum_tp_count_forum_unread_posts($mod, $course)) { echo '<span class="unread"> <a href="' . $CFG->wwwroot . '/mod/forum/view.php?id=' . $mod->id . '">'; if ($unread == 1) { echo $strunreadpostsone; } else { print_string('unreadpostsnumber', 'forum', $unread); } echo '</a></span>'; } } if ($isediting) { // TODO: we must define this as mod property! if ($groupbuttons and $mod->modname != 'label' and $mod->modname != 'resource' and $mod->modname != 'glossary') { if (!($mod->groupmodelink = $groupbuttonslink)) { $mod->groupmode = $course->groupmode; } } else { $mod->groupmode = false; } echo ' '; echo make_editing_buttons($mod, $absolute, true, $mod->indent, $section->section); } echo "</li>\n"; } } elseif ($ismoving) { echo "<ul class=\"section\">\n"; } if ($ismoving) { echo '<li><a title="' . $strmovefull . '"' . ' href="' . $CFG->wwwroot . '/course/mod.php?movetosection=' . $section->id . '&sesskey=' . $USER->sesskey . '">' . '<img class="movetarget" src="' . $CFG->pixpath . '/movehere.gif" ' . ' alt="' . $strmovehere . '" /></a></li> '; } if (!empty($section->sequence) || $ismoving) { echo "</ul><!--class='section'-->\n\n"; } }