/**
  * 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');
 }
Example #2
0
    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>';
Example #5
0
        $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>