/** * A collection of actions for a course. * * @param course_in_list $course The course to display actions for. * @return string */ public function course_detail_actions(course_in_list $course) { $actions = \core_course\management\helper::get_course_detail_actions($course); if (empty($actions)) { return ''; } $options = array(); foreach ($actions as $action) { $options[] = $this->action_link($action['url'], $action['string']); } return html_writer::div(join(' | ', $options), 'listing-actions course-detail-listing-actions'); }
echo $renderer->notification(join('<br />', $notificationsfail)); } // Start the management form. echo $renderer->management_form_start(); echo $renderer->accessible_skipto_links($displaycategorylisting, $displaycourselisting, $displaycoursedetail); echo $renderer->grid_start('course-category-listings', $class); if ($displaycategorylisting) { echo $renderer->grid_column_start($categorysize, 'category-listing'); echo $renderer->category_listing($category); echo $renderer->grid_column_end(); } if ($displaycourselisting) { echo $renderer->grid_column_start($coursesize, 'course-listing'); if (!$issearching) { echo $renderer->course_listing($category, $course, $page, $perpage); } else { list($courses, $coursescount, $coursestotal) = \core_course\management\helper::search_courses($search, $blocklist, $modulelist, $page, $perpage); echo $renderer->search_listing($courses, $coursestotal, $course, $page, $perpage, $search); } echo $renderer->grid_column_end(); if ($displaycoursedetail) { echo $renderer->grid_column_start($detailssize, 'course-detail'); echo $renderer->course_detail($course); echo $renderer->grid_column_end(); } } echo $renderer->grid_end(); // End of the management form. echo $renderer->management_form_end(); echo $renderer->course_search_form($search); echo $renderer->footer();
public function test_move_courses_into_category() { global $DB, $CFG; $this->resetAfterTest(true); $generator = $this->getDataGenerator(); $cat1 = $generator->create_category(); $cat2 = $generator->create_category(); $sub1 = $generator->create_category(array('parent' => $cat1->id)); $sub2 = $generator->create_category(array('parent' => $cat1->id)); $course1 = $generator->create_course(array('category' => $cat1->id)); $course2 = $generator->create_course(array('category' => $sub1->id)); $course3 = $generator->create_course(array('category' => $sub1->id)); $course4 = $generator->create_course(array('category' => $cat2->id)); $syscontext = context_system::instance(); list($user, $roleid) = $this->get_user_objects($generator, $syscontext->id); course_capability_assignment::allow(array(self::CATEGORY_MANAGE, self::CATEGORY_VIEWHIDDEN), $roleid, $syscontext->id); // Check they are where we think they are. $this->assertEquals(1, $cat1->get_courses_count()); $this->assertEquals(1, $cat2->get_courses_count()); $this->assertEquals(2, $sub1->get_courses_count()); $this->assertEquals(0, $sub2->get_courses_count()); // Move the courses in sub category 1 to sub category 2. $this->assertTrue(\core_course\management\helper::move_courses_into_category($sub2->id, array($course2->id, $course3->id))); $this->assertEquals(1, $cat1->get_courses_count()); $this->assertEquals(1, $cat2->get_courses_count()); $this->assertEquals(0, $sub1->get_courses_count()); $this->assertEquals(2, $sub2->get_courses_count()); $courses = $DB->get_records('course', array('category' => $sub2->id), 'id'); $this->assertEquals(array((int) $course2->id, (int) $course3->id), array_keys($courses)); // Move the courses in sub category 2 back into to sub category 1. $this->assertTrue(\core_course\management\helper::move_courses_into_category($sub1->id, array($course2->id, $course3->id))); $this->assertEquals(1, $cat1->get_courses_count()); $this->assertEquals(1, $cat2->get_courses_count()); $this->assertEquals(2, $sub1->get_courses_count()); $this->assertEquals(0, $sub2->get_courses_count()); $courses = $DB->get_records('course', array('category' => $sub1->id), 'id'); $this->assertEquals(array((int) $course2->id, (int) $course3->id), array_keys($courses)); // Try moving just one course. $this->assertTrue(\core_course\management\helper::move_courses_into_category($sub2->id, $course4->id)); $this->assertEquals(1, $cat1->get_courses_count()); $this->assertEquals(0, $cat2->get_courses_count()); $this->assertEquals(2, $sub1->get_courses_count()); $this->assertEquals(1, $sub2->get_courses_count()); $courses = $DB->get_records('course', array('category' => $sub2->id), 'id'); $this->assertEquals(array((int) $course4->id), array_keys($courses)); // Current state: // * $cat1 => $course1 // * $sub1 => $course2, $course3 // * $sub2 => $course4 // * $cat2 =>. // Prevent the user from being able to move into $sub2. $sub2cap = course_capability_assignment::prohibit(self::CATEGORY_MANAGE, $roleid, $sub2->get_context()->id); $sub2 = coursecat::get($sub2->id); // Suppress debugging messages for a moment. $olddebug = $CFG->debug; $CFG->debug = 0; // Try to move a course into sub2. This shouldn't be possible because you should always be able to undo what you've done. // Try moving just one course. try { \core_course\management\helper::move_courses_into_category($sub2->id, array($course2->id)); $this->fail('Invalid move of course between categories, action can\'t be undone.'); } catch (moodle_exception $ex) { $this->assertEquals(get_string('cannotmovecourses', 'error'), $ex->getMessage()); } // Nothing should have changed. $this->assertEquals(1, $cat1->get_courses_count()); $this->assertEquals(0, $cat2->get_courses_count()); $this->assertEquals(2, $sub1->get_courses_count()); $this->assertEquals(1, $sub2->get_courses_count()); // Now try moving a course out of sub2. Again should not be possible. // Try to move a course into sub2. This shouldn't be possible because you should always be able to undo what you've done. // Try moving just one course. try { \core_course\management\helper::move_courses_into_category($cat2->id, array($course4->id)); $this->fail('Invalid move of course between categories, action can\'t be undone.'); } catch (moodle_exception $ex) { $this->assertEquals(get_string('cannotmovecourses', 'error'), $ex->getMessage()); } // Nothing should have changed. $this->assertEquals(1, $cat1->get_courses_count()); $this->assertEquals(0, $cat2->get_courses_count()); $this->assertEquals(2, $sub1->get_courses_count()); $this->assertEquals(1, $sub2->get_courses_count()); $CFG->debug = $olddebug; }
//} $params['sort'] = $column == 'course' ? 'fullname' : 'id'; $params['dir'] = $columndir; ${$column} = "<a href= " . new moodle_url('companycourses.php', $params) . ">" . $string[$column] . "</a>{$columnicon}"; } $redirectback = false; if ($courseid) { $record = get_course($courseid); $companycourse = new course_in_list($record); } switch ($action) { case 'showcourse': $redirectback = \core_course\management\helper::action_course_show($companycourse); break; case 'hidecourse': $redirectback = \core_course\management\helper::action_course_hide($companycourse); break; } if ($redirectback) { redirect(new moodle_url('companycourses.php')); } echo $OUTPUT->header(); if (iomad::has_capability('block/iomad_company_admin:manageallcompanycourses', $context)) { $companyids = $DB->get_records_menu('company', array(), 'id, name'); //$companyids['none'] = get_string('nocompany', 'block_iomad_company_admin'); $companyids['all'] = get_string('allcourses', 'block_iomad_company_admin'); ksort($companyids); $companyselect = new single_select($linkurl, 'company', $companyids, $company); $companyselect->label = get_string('company', 'block_iomad_company_admin'); $companyselect->formid = 'choosecompany'; echo html_writer::tag('div', $OUTPUT->render($companyselect), array('id' => 'iomad_company_selector')) . '</br>';
$outcome->categoryvisibility = \core_course\management\helper::get_category_children_visibility($categoryid); $outcome->coursevisibility = \core_course\management\helper::get_category_courses_visibility($categoryid); if ($selectedcategoryid !== null) { $outcome->coursevisibility = array_merge($outcome->coursevisibility, \core_course\management\helper::get_category_courses_visibility($selectedcategoryid)); } break; case 'expandcategory': $categoryid = required_param('categoryid', PARAM_INT); $coursecat = coursecat::get($categoryid); \core_course\management\helper::record_expanded_category($coursecat); $outcome->outcome = true; break; case 'collapsecategory': $categoryid = required_param('categoryid', PARAM_INT); $coursecat = coursecat::get($categoryid); \core_course\management\helper::record_expanded_category($coursecat, false); $outcome->outcome = true; break; case 'getsubcategorieshtml': $categoryid = required_param('categoryid', PARAM_INT); /* @var core_course_management_renderer $renderer */ $renderer = $PAGE->get_renderer('core_course', 'management'); $outcome->html = html_writer::start_tag('ul', array('class' => 'ml', 'role' => 'group', 'id' => 'subcategoriesof' . $categoryid)); $coursecat = coursecat::get($categoryid); foreach ($coursecat->get_children() as $subcat) { $outcome->html .= $renderer->category_listitem($subcat, array(), $subcat->get_children_count()); } $outcome->html .= html_writer::end_tag('ul'); $outcome->outcome = true; break; }
)); if ($course instanceof stdClass) { require_once($CFG->libdir. '/coursecatlib.php'); $course = new course_in_list($course); } $content .= html_writer::start_tag('div', array('class' => 'info')); // course name $coursename = $chelper->get_course_formatted_name($course); $coursenamelink = html_writer::link(new moodle_url('/course/view.php', array('id' => $course->id)), $coursename, array('class' => $course->visible ? '' : 'dimmed')); $content .= html_writer::tag($nametag, $coursenamelink, array('class' => 'coursename')); $category = coursecat::get($course->category); //echo $renderer->course_listitem_actions($category,$course); $actions = \core_course\management\helper::get_course_listitem_actions($category, $course); if (empty($actions)) { return ''; } $actionshtml = array(); $actionshtml[] = html_writer::link(new moodle_url('/local/mass_enroll/mass_enroll.php',array('id'=>$course->id)),html_writer::empty_tag('img', array('src' => $OUTPUT->pix_url('t/groups'), 'title' => 'Bulk enroll', 'alt' => 'Bulk enroll', 'class' => 'iconsmall'))); $actionshtml[] = html_writer::link(new moodle_url('/local/costcenter/course_enrol.php',array('id'=>$course->id,'enrolid'=>$DB->get_field('enrol','id',array('enrol'=>'manual','courseid'=>$course->id)))),html_writer::empty_tag('img', array('src' => $OUTPUT->pix_url('t/enrolusers'), 'title' => get_string('enrolusers','enrol'), 'alt' => get_string('enrolusers','enrol'), 'class' => 'iconsmall'))); foreach ($actions as $action) { $action['attributes']['role'] = 'button'; if($action['icon']->attributes['title']=== 'Edit' || $action['icon']->attributes['title']=== 'Delete') $actionshtml[] = $output->action_icon($action['url'], $action['icon'], null, $action['attributes']); } $content .= html_writer::span(join('', $actionshtml), 'course-item-actions item-actions'); $content .= "<ul id='courseview-info'> <li>".get_string('pluginname','local_costcenter').": ". $DB->get_field('local_costcenter','fullname',array('id'=>$course->costcenter))."</li>