/** * should display header of ccform then the extra fields followed by footer of ccform */ public function body_definition() { $mform =& $this->_form; $parent_obj = $this->_customdata['parent_obj']; $coursecurriculum = new curriculumcourse(); $coursecurriculum->courseid = $parent_obj->id; if (isset($this->_customdata['obj'])) { $course = $this->_customdata['obj']->course; $curriculum = $this->_customdata['obj']->curriculum; $curriculas[$curriculum->id] = $curriculum->name; } else { $contexts = curriculumpage::get_contexts('block/curr_admin:associate'); $curricula_avail = $coursecurriculum->get_curricula_avail(array('contexts' => $contexts)); $curriculas = array(); if (is_array($curricula_avail)) { foreach ($curricula_avail as $crsid => $c) { $curriculas[$crsid] = $c->name . ' (' . $c->idnumber . ')'; } natcasesort($curriculas); } } $mform->addElement('select', 'curriculumid', get_string('curriculum', 'block_curr_admin') . ':', $curriculas); $mform->addRule('curriculumid', null, 'required', null, 'client'); $mform->setHelpButton('curriculumid', array('coursecurriculumform/curriculumname', get_string('curriculum', 'block_curr_admin'), 'block_curr_admin')); $mform->addElement('hidden', 'courseid', $parent_obj->id); $mform->setType('courseid', PARAM_INT); $mform->addElement('text', 'coursename', get_string('course', 'block_curr_admin') . ':', 'readonly="readonly"'); $mform->setType('coursename', PARAM_TEXT); $mform->setHelpButton('coursename', array('coursecurriculumform/coursename', get_string('course', 'block_curr_admin'), 'block_curr_admin')); $this->set_data(array('coursename' => $parent_obj->name)); }
/** * Test that a user without program_view permissions does not get any data returned */ public function test_nocurriculumpermission() { $this->load_csv_data(); $this->setGuestUser(); $curriculumfilter = array('contexts' => curriculumpage::get_contexts('local/elisprogram:program_view')); $curricula = clustercurriculum::get_curricula(1, 0, 5, 'cur.priority ASC, cur.name ASC', $curriculumfilter); $this->assertInternalType('array', $curricula); $this->assertEmpty($curricula); }
function display_default() { // Get parameters $sort = optional_param('sort', 'name', PARAM_ALPHA); $dir = optional_param('dir', 'ASC', PARAM_ALPHA); $page = optional_param('page', 0, PARAM_INT); $perpage = optional_param('perpage', 30, PARAM_INT); // how many per page $namesearch = trim(optional_param('search', '', PARAM_TEXT)); $alpha = optional_param('alpha', '', PARAM_ALPHA); // Define columns $columns = array('name' => array('header' => get_string('curriculum_name', 'local_elisprogram')), 'description' => array('header' => get_string('description', 'local_elisprogram')), 'reqcredits' => array('header' => get_string('curriculum_reqcredits', 'local_elisprogram')), 'courses' => array('header' => get_string('courses', 'local_elisprogram')), 'priority' => array('header' => get_string('priority', 'local_elisprogram'))); if ($dir !== 'DESC') { $dir = 'ASC'; } if (isset($columns[$sort])) { $columns[$sort]['sortable'] = $dir; } // Get list of users $items = curriculum_get_listing($sort, $dir, $page * $perpage, $perpage, $namesearch, $alpha, curriculumpage::get_contexts('local/elisprogram:program_view')); $numitems = curriculum_count_records($namesearch, $alpha, curriculumpage::get_contexts('local/elisprogram:program_view')); curriculumpage::get_contexts('local/elisprogram:program_edit'); curriculumpage::get_contexts('local/elisprogram:program_delete'); $this->print_list_view($items, $numitems, $columns, $filter = null, $alphaflag = true, $searchflag = true); }
/** * Dynamically loads child menu items for a cluster entity * * @param int $id The entity id * @param int $parent_cluster_id The last cluster passed going down the elisadmin tree, or 0 if none * @param int $parent_curriculum_id The last curriculum passed going down the elisadmin tree, or 0 if none * @param int $num_block_icons Max number of entries to display * @param string $parent_path Path of parent curriculum elements in the tree * @return menuitem array The appropriate child items */ function block_elisadmin_load_menu_children_userset($id, $parent_cluster_id, $parent_curriculum_id, $num_block_icons, $parent_path = '') { global $CFG; //page dependencies require_once elispm::file('coursepage.class.php'); $result_items = array(); /***************************************** * Cluster - Child Cluster Associations *****************************************/ //note - no need to worry about permissions since there is no prevents/prohibits in ELIS $cluster_css_class = block_elisadmin_get_item_css_class('cluster_instance'); $listing = cluster_get_listing('name', 'ASC', 0, $num_block_icons, '', '', array('parent' => $id)); //$listing = cluster_get_listing('priority, name', 'ASC', 0, $num_block_icons, '', '', array('parent' => $id)); if (!empty($listing)) { foreach ($listing as $item) { $params = array('id' => $item->id, 'action' => 'view'); $cluster_count = cluster_count_records('', '', array('parent' => $item->id)); $curriculum_count = clustercurriculum::count_curricula($item->id); $isLeaf = empty($cluster_count) && empty($curriculum_count); $result_items[] = block_elisadmin_get_menu_item('userset', $item, 'root', $cluster_css_class, $item->id, $parent_curriculum_id, $params, $isLeaf, $parent_path); } } //summary item $num_records = cluster_count_records('', '', array('parent' => $id)); if ($num_block_icons < $num_records) { $params = array('id' => $parent_cluster_id); $result_items[] = block_elisadmin_get_menu_summary_item('userset', $cluster_css_class, $num_records - $num_block_icons, $params, '', $parent_path); } /***************************************** * Cluster - Curriculum *****************************************/ $curriculum_css_class = block_elisadmin_get_item_css_class('curriculum_instance'); //permissions filter $curriculum_filter = array('contexts' => curriculumpage::get_contexts('local/elisprogram:program_view')); $curricula = clustercurriculum::get_curricula($id, 0, $num_block_icons, 'cur.priority ASC, cur.name ASC', $curriculum_filter); if (!empty($curricula)) { foreach ($curricula as $curriculum) { $curriculum->id = $curriculum->curriculumid; $params = array('id' => $curriculum->id, 'action' => 'view'); //count associated courses $course_filter = array('contexts' => coursepage::get_contexts('local/elisprogram:course_view')); $course_count = curriculumcourse_count_records($curriculum->id, '', '', $course_filter); //count associated tracks $track_contexts = trackpage::get_contexts('local/elisprogram:track_view'); $track_count = track_count_records('', '', $curriculum->id, $parent_cluster_id, $track_contexts); //count associated clusters $cluster_filter = array('contexts' => usersetpage::get_contexts('local/elisprogram:userset_view')); $cluster_count = clustercurriculum::count_clusters($curriculum->id, $parent_cluster_id, $cluster_filter); $isLeaf = empty($course_count) && empty($track_count) && empty($cluster_count); $result_items[] = block_elisadmin_get_menu_item('curriculum', $curriculum, 'root', $curriculum_css_class, $parent_cluster_id, $curriculum->id, $params, $isLeaf, $parent_path); } } //summary item $num_records = clustercurriculum::count_curricula($id, $curriculum_filter); if ($num_block_icons < $num_records) { $params = array('id' => $id); $result_items[] = block_elisadmin_get_menu_summary_item('clustercurriculum', $curriculum_css_class, $num_records - $num_block_icons, $params, '', $parent_path); } return $result_items; }
function get_content() { global $CFG, $ADMIN, $USER, $CURMAN, $HTTPSPAGEREQUIRED; require_once $CFG->libdir . '/adminlib.php'; require_once $CFG->dirroot . '/my/pagelib.php'; // dependencies on page classes require_once $CFG->dirroot . '/curriculum/clusterpage.class.php'; require_once $CFG->dirroot . '/curriculum/curriculumpage.class.php'; require_once $CFG->dirroot . '/curriculum/coursepage.class.php'; require_once $CFG->dirroot . '/curriculum/trackpage.class.php'; // ELIS-1251 - Don't display a useless message if in the center column // if ($this->instance->position == BLOCK_POS_CENTRE) { // $this->content = new stdClass; // $output = "This is content to display if in the middle..."; // $this->content->text = $output; // $this->content->footer = ''; // return $this->content; // } /// Display a link to the admin interface if on the main site index page and the current user has /// admin or developer access. // if ($this->instance->pageid == SITEID && // has_capability('block/curr_admin:config', get_context_instance(CONTEXT_SYSTEM, SITEID))) { // // $this->content = new stdClass; // $this->content->text = '<a href="' . $CFG->wwwroot . '/curriculum/index.php">' . // get_string('accesscurriculumadmin', 'block_curr_admin') . '</a>'; // $this->content->footer = ''; // } /// Determine the users CM access level. $access = cm_determine_access($USER->id); $this->title = get_string("blocktitle{$access}", 'block_curr_admin'); if (empty($access) || $this->content !== NULL) { return $this->content; } //if we are not on a CM "newpage", disable the expansion of //entities in the curr admin tree (logic in curriculum/index.php) if (!isset($CURMAN->page)) { unset($USER->currentitypath); } //include the necessary javascript libraries for the YUI TreeView require_js(array('yui_yahoo', 'yui_dom', 'yui_event', 'yui_treeview')); //for converting tree representation require_js('yui_json'); //for asynch request dynamic loading require_js('yui_connection'); //include our custom code that handles the YUI Treeview menu if (!empty($HTTPSPAGEREQUIRED)) { $wwwroot = $CFG->httpswwwroot; } else { $wwwroot = $CFG->wwwroot; } require_js($wwwroot . '/curriculum/js/menuitem.js'); //CM entities for placement at the top of the menu $cm_entity_pages = array(); $cm_entity_pages[] = new menuitem('root'); $num_block_icons = isset($CURMAN->config->num_block_icons) ? $CURMAN->config->num_block_icons : 5; /***************************************** * Clusters *****************************************/ if (!isset($CURMAN->config->display_clusters_at_top_level) || !empty($CURMAN->config->display_clusters_at_top_level)) { $manageclusters_css_class = block_curr_admin_get_item_css_class('manageclusters'); $cluster_css_class = block_curr_admin_get_item_css_class('cluster_instance'); require_once CURMAN_DIRLOCATION . '/lib/contexts.php'; $context_result = cm_context_set::for_user_with_capability('cluster', 'block/curr_admin:cluster:view', $USER->id); $extrafilters = array('contexts' => $context_result, 'parent' => 0); $num_records = cluster_count_records('', '', $extrafilters); if ($clusters = cluster_get_listing('priority, name', 'ASC', 0, $num_block_icons, '', '', $extrafilters)) { foreach ($clusters as $cluster) { $params = array('id' => $cluster->id, 'action' => 'view'); // count sub-clusters $cluster_filter = array('contexts' => clusterpage::get_contexts('block/curr_admin:cluster:view'), 'parent' => $cluster->id); $cluster_count = cluster_count_records('', '', $cluster_filter); // count associated curricula $curriculum_filter = array('contexts' => curriculumpage::get_contexts('block/curr_admin:curriculum:view')); $curriculum_count = clustercurriculum::count_curricula($cluster->id, $curriculum_filter); $isLeaf = empty($cluster_count) && empty($curriculum_count); $cm_entity_pages[] = block_curr_admin_get_menu_item('cluster', $cluster, 'root', $manageclusters_css_class, $cluster->id, 0, $params, $isLeaf); } } if ($num_block_icons < $num_records) { $cm_entity_pages[] = block_curr_admin_get_menu_summary_item('cluster', $cluster_css_class, $num_records - $num_block_icons); } } /***************************************** * Curricula *****************************************/ if (!empty($CURMAN->config->display_curricula_at_top_level)) { $managecurricula_css_class = block_curr_admin_get_item_css_class('managecurricula'); $curriculum_css_class = block_curr_admin_get_item_css_class('curriculum_instance'); require_once CURMAN_DIRLOCATION . '/curriculumpage.class.php'; $num_records = curriculum_count_records('', '', curriculumpage::get_contexts('block/curr_admin:curriculum:view')); if ($curricula = get_records(CURTABLE, '', '', 'priority ASC, name ASC', '*', 0, $num_block_icons)) { foreach ($curricula as $curriculum) { $params = array('id' => $curriculum->id, 'action' => 'view'); // count associated courses $course_filter = array('contexts' => coursepage::get_contexts('block/curr_admin:course:view')); $course_count = curriculumcourse_count_records($curriculum->id, '', '', $course_filter); // count associated tracks $track_contexts = trackpage::get_contexts('block/curr_admin:track:view'); $track_count = track_count_records('', '', $curriculum->id, 0, $track_contexts); // count associated clusters $cluster_filter = array('contexts' => clusterpage::get_contexts('block/curr_admin:cluster:view')); $cluster_count = clustercurriculum::count_clusters($curriculum->id, 0, $cluster_filter); $isLeaf = empty($course_count) && empty($track_count) && empty($cluster_count); $cm_entity_pages[] = block_curr_admin_get_menu_item('curriculum', $curriculum, 'root', $managecurricula_css_class, 0, $curriculum->id, $params, $isLeaf); } } if ($num_block_icons < $num_records) { $cm_entity_pages[] = block_curr_admin_get_menu_summary_item('curriculum', $curriculum_css_class, $num_records - $num_block_icons); } } global $SITE; //general cm pages $pages = array(new menuitem('dashboard', new menuitempage('dashboardpage'), 'root', '', block_curr_admin_get_item_css_class('dashboard')), new menuitem('admn', null, 'root', get_string('admin'), block_curr_admin_get_item_css_class('admn', true)), new menuitem('bulkuser', new menuitempage('bulkuserpage'), null, get_string('userbulk', 'admin'), block_curr_admin_get_item_css_class('bulkuser'))); //show the Jasper report server link if applicable if (cm_jasper_link_enabled()) { //page action $jasper_link_params = array('action' => 'reportslist'); //page instance $jasper_link_page = new menuitempage('jasperreportpage', '', $jasper_link_params); //styling for the link $jasper_link_css = block_curr_admin_get_item_css_class('reportslist'); $pages[] = new menuitem('reportslist', $jasper_link_page, null, '', $jasper_link_css); } $pages = array_merge($pages, array(new menuitem('customfields', new menuitempage('customfieldpage', '', array('level' => 'user')), null, '', block_curr_admin_get_item_css_class('customfields')), new menuitem('clusterclassification', new menuitempage('clusterclassificationpage', 'plugins/cluster_classification/clusterclassificationpage.class.php'), null, get_string('cluster_classification', 'crlm_cluster_classification'), block_curr_admin_get_item_css_class('clusterclassification')), new menuitem('info', null, 'root', get_string('informationalelements', 'block_curr_admin'), block_curr_admin_get_item_css_class('info', true)), new menuitem('managetags', new menuitempage('tagpage'), null, '', block_curr_admin_get_item_css_class('managetags')), new menuitem('manageenvironments', new menuitempage('envpage'), null, '', block_curr_admin_get_item_css_class('manageenvironments')), new menuitem('users', null, 'root', '', block_curr_admin_get_item_css_class('users', true)), new menuitem('manageusers', new menuitempage('usermanagementpage'), null, '', block_curr_admin_get_item_css_class('manageusers')), new menuitem('manageclusters', new menuitempage('clusterpage'), null, '', block_curr_admin_get_item_css_class('manageclusters')), new menuitem('curr', null, 'root', get_string('curriculum', 'block_curr_admin'), block_curr_admin_get_item_css_class('curr', true)), new menuitem('certificatelist', new menuitempage('certificatelistpage'), null, '', block_curr_admin_get_item_css_class('certificatelist')), new menuitem('managecurricula', new menuitempage('curriculumpage'), null, '', block_curr_admin_get_item_css_class('managecurricula')), new menuitem('managecourses', new menuitempage('coursepage'), null, '', block_curr_admin_get_item_css_class('managecourses')), new menuitem('manageclasses', new menuitempage('cmclasspage'), null, '', block_curr_admin_get_item_css_class('manageclasses')), new menuitem('crscat', null, 'root', get_string('learningplan', 'block_curr_admin'), block_curr_admin_get_item_css_class('crscat', true)), new menuitem('currentcourses', new menuitempage('coursecatalogpage', '', array('action' => 'current')), null, '', block_curr_admin_get_item_css_class('currentcourses')), new menuitem('availablecourses', new menuitempage('coursecatalogpage', '', array('action' => 'available')), null, '', block_curr_admin_get_item_css_class('availablecourses')), new menuitem('waitlist', new menuitempage('coursecatalogpage', '', array('action' => 'waitlist')), null, get_string('waitlistcourses', 'block_curr_admin'), block_curr_admin_get_item_css_class('waitlist')), new menuitem('rept', null, 'root', get_string('reports', 'block_curr_admin'), block_curr_admin_get_item_css_class('rept', true)))); if (has_capability('moodle/course:managegroups', get_context_instance(CONTEXT_COURSE, $SITE->id))) { if ($CURMAN->config->site_course_cluster_groups) { $pages[] = new menuitem('frontpagegroups', new menuitempage('url_page', 'lib/menuitem.class.php', "{$CFG->wwwroot}/group/index.php?id={$SITE->id}"), 'admn', get_string('frontpagegroups', 'crlm_cluster_groups'), block_curr_admin_get_item_css_class('manageclusters')); } if ($CURMAN->config->cluster_groupings) { $pages[] = new menuitem('frontpagegroupings', new menuitempage('url_page', 'lib/menuitem.class.php', "{$CFG->wwwroot}/group/groupings.php?id={$SITE->id}"), 'admn', get_string('frontpagegroupings', 'crlm_cluster_groups'), block_curr_admin_get_item_css_class('manageclusters')); } } /** * This section adds all the necessary PHP reports to the menu */ //get all report pages, including categories but not including the //topmost report element $report_pages = block_curr_admin_get_report_tree_items(); //merge in the reporting page links $pages = array_merge($pages, $report_pages); if (empty($CURMAN->config->userdefinedtrack)) { $pages[] = new menuitem('managetracks', new menuitempage('trackpage'), null, '', block_curr_admin_get_item_css_class('managetracks')); } $access = cm_determine_access($USER->id); switch ($access) { case 'admin': case 'developer': $pages[] = new menuitem('configmanager', new menuitempage('configpage', '', array('section' => 'admn')), null, get_string('configuration'), block_curr_admin_get_item_css_class('configuration')); $pages[] = new menuitem('notifications', new menuitempage('notifications', 'notificationspage.class.php', array('section' => 'admn')), null, '', block_curr_admin_get_item_css_class('notifications')); $pages[] = new menuitem('dataimport', new menuitempage('dataimportpage', 'elis_ip/elis_ip_page.php', array('section' => 'admn')), null, '', block_curr_admin_get_item_css_class('integrationpoint')); $pages[] = new menuitem('defaultcls', new menuitempage('configclsdefaultpage', '', array('section' => 'admn')), null, '', block_curr_admin_get_item_css_class('defaultcls')); $pages[] = new menuitem('defaultcrs', new menuitempage('configcrsdefaultpage', '', array('section' => 'admn')), null, '', block_curr_admin_get_item_css_class('defaultcrs')); break; default: break; } //turn all pages that have no children into leaf nodes menuitemlisting::flag_leaf_nodes($pages); //combine the specific entity page listing with the general CM listing $menuitemlisting = new menuitemlisting(array_merge($cm_entity_pages, $pages)); $tree = new treerepresentation($menuitemlisting); $this->content = new stdClass(); $this->content->text = $tree->convert_to_markup(); $this->content->footer = ''; return $this->content; }
function action_default() { // Get parameters $sort = optional_param('sort', 'name', PARAM_ALPHA); $dir = optional_param('dir', 'ASC', PARAM_ALPHA); $page = optional_param('page', 0, PARAM_INT); $perpage = optional_param('perpage', 30, PARAM_INT); // how many per page $namesearch = trim(cm_get_param('search', '')); $alpha = cm_get_param('alpha', ''); // Define columns $columns = array('name' => get_string('curriculum_name', 'block_curr_admin'), 'description' => get_string('curriculum_shortdescription', 'block_curr_admin'), 'reqcredits' => get_string('curriculum_reqcredits', 'block_curr_admin'), 'courses' => get_string('courses', 'block_curr_admin'), 'priority' => get_string('priority', 'block_curr_admin')); // Get list of users $items = curriculum_get_listing($sort, $dir, $page * $perpage, $perpage, $namesearch, $alpha, curriculumpage::get_contexts('block/curr_admin:curriculum:view')); $numitems = curriculum_count_records($namesearch, $alpha, curriculumpage::get_contexts('block/curr_admin:curriculum:view')); curriculumpage::get_contexts('block/curr_admin:curriculum:edit'); curriculumpage::get_contexts('block/curr_admin:curriculum:delete'); $this->print_list_view($items, $numitems, $columns, $filter = null, $alphaflag = true, $searchflag = true); }
function action_copycurredit() { global $CFG, $USER, $CURMAN; require_js($CFG->wwwroot . '/curriculum/js/clustercurriculumpage.js'); $id = $this->required_param('id', PARAM_INT); // Create a list of curricula to be excluded $curriculumshown = array(); $table = new stdClass(); $table->head = array(get_string('clustcpyclustname', 'block_curr_admin'), get_string('clustcpycurname', 'block_curr_admin'), get_string('clustcpyadd', 'block_curr_admin'), get_string('clustcpytrkcpy', 'block_curr_admin'), get_string('clustcpycrscpy', 'block_curr_admin'), get_string('clustcpyclscpy', 'block_curr_admin'), get_string('clustcpymdlclscpy', 'block_curr_admin')); $table->class = 'cluster_copy_curriculum'; // Get all clusters $sort = 'name'; $dir = 'ASC'; $clusters = cluster_get_listing($sort, $dir, 0); $clusterlist = array(); $sql = 'SELECT * from ' . $CURMAN->db->prefix_table('crlm_cluster'); // Exclude clusters the user does not have the capability to manage/see $context = get_contexts_by_capability_for_user('cluster', 'block/curr_admin:cluster:view', $USER->id); foreach ($clusters as $clusid => $clusdata) { $haspermission = $context->context_allowed($clusid, 'cluster'); if (!$haspermission) { unset($clusters[$clusid]); } } echo '<form action="index.php" method="post">'; $mdlcrsoptions = array('copyalways' => get_string('currcopy_mdlcrs_copyalways', 'block_curr_admin'), 'copyautocreated' => get_string('currcopy_mdlcrs_copyautocreated', 'block_curr_admin'), 'autocreatenew' => get_string('currcopy_mdlcrs_autocreatenew', 'block_curr_admin'), 'link' => get_string('currcopy_mdlcrs_link', 'block_curr_admin')); $contexts = curriculumpage::get_contexts('block/curr_admin:associate'); foreach ($clusters as $clusid => $clusdata) { $assocurr = clustercurriculum::get_curricula($clusid); if (!empty($assocurr)) { $first = true; foreach ($assocurr as $assocurrrec) { // Add to list of curricula to exclude $curriculumshown[] = $assocurrrec->curriculumid; // Skip over this clusters associated curricula if ($clusid == $id) { continue; } // Skip over curricula that user cannot associate if (!$contexts->context_allowed($assocurrrec->curriculumid, 'curriculum')) { continue; } if ($first) { $curname = format_string($clusdata->name); $first = false; } else { $curname = ''; } $table->data[] = array($curname, format_string($assocurrrec->name), print_checkbox(self::CPY_CURR_PREFIX . $assocurrrec->curriculumid, 1, false, '', '', '', true), print_checkbox(self::CPY_CURR_TRK_PREFIX . $assocurrrec->curriculumid, 1, false, '', '', '', true), print_checkbox(self::CPY_CURR_CRS_PREFIX . $assocurrrec->curriculumid, 1, false, '', '', '', true), print_checkbox(self::CPY_CURR_CLS_PREFIX . $assocurrrec->curriculumid, 1, false, '', '', '', true), choose_from_menu($mdlcrsoptions, self::CPY_CURR_MDLCRS_PREFIX . $assocurrrec->curriculumid, '', '', '', 0, true)); $table->rowclass[] = 'clus_cpy_row'; } } } // Add unassociated row to table $table->data[] = array(get_string('unassociated', 'block_curr_admin'), '', '', '', '', '', ''); $table->rowclass[] = 'clus_cpy_row unassigned'; // Get all curriculums, removing curricula that have already // been listed $curriculums = curriculum_get_listing($sort, $dir, 0, 0, '', '', $contexts); foreach ($curriculums as $curriculumid => $curriculumdata) { if (false === array_search($curriculumid, $curriculumshown)) { $table->data[] = array('', format_string($curriculumdata->name), print_checkbox(self::CPY_CURR_PREFIX . $curriculumid, 1, false, '', '', '', true), print_checkbox(self::CPY_CURR_TRK_PREFIX . $curriculumid, 1, false, '', '', '', true), print_checkbox(self::CPY_CURR_CRS_PREFIX . $curriculumid, 1, false, '', '', '', true), print_checkbox(self::CPY_CURR_CLS_PREFIX . $curriculumid, 1, false, '', '', '', true), choose_from_menu($mdlcrsoptions, self::CPY_CURR_MDLCRS_PREFIX . $curriculumid, '', '', '', 0, true)); $table->rowclass[] = 'clus_cpy_row'; } } $currselectall = '<div class="currselectall">' . '<a id="clus_currcpy_select_all" onclick="cluster_copycurriculum_set_all_selected()">' . get_string('selectall') . '</a></div>'; $trkselectall = '<div class="trkselectall">' . '<a id="clus_trkcpy_select_all" onclick="cluster_copytrack_set_all_selected()">' . get_string('selectall') . '</a></div>'; $crsselectall = '<div class="crsselectall">' . '<a id="clus_crscpy_select_all" onclick="cluster_copycourse_set_all_selected()">' . get_string('selectall') . '</a></div>'; $clsselectall = '<div class="clsselectall">' . '<a id="clus_crscpy_select_all" onclick="cluster_copyclass_set_all_selected()">' . get_string('selectall') . '</a></div>'; $table->data[] = array('', '', $currselectall, $trkselectall, $crsselectall, $clsselectall); $table->rowclass[] = 'clus_cpy_row select_all_row'; echo print_table($table, true); echo '<div class="clus_curr_cpy_save_exit">'; echo '<input type="submit" name="save" value="' . get_string('saveexit', 'block_curr_admin') . '">'; echo '<div class="hidden">'; echo '<input type="hidden" name="id" value="' . $id . '">'; echo '<input type="hidden" name="s" value="clstcur">'; echo '<input type="hidden" name="action" value="copycurr">'; echo '<input type="hidden" name="sesskey" value="' . $USER->sesskey . '">'; echo '</div>'; echo '</div>'; echo '</form>'; }
function get_content() { global $CFG, $ADMIN, $USER, $HTTPSPAGEREQUIRED, $PAGE, $DB, $SITE; require_once $CFG->libdir . '/adminlib.php'; //dependencies on page classes require_once elispm::file('usersetpage.class.php'); require_once elispm::file('curriculumpage.class.php'); require_once elispm::file('coursepage.class.php'); require_once elispm::file('trackpage.class.php'); //require_once($CFG->dirroot . '/my/pagelib.php'); /// Determine the users CM access level. $access = cm_determine_access($USER->id); //make sure local_elisprogram / custom contexts set up correctly //to prevent error before the upgrade to ELIS 2 if (empty($access) || $this->content !== NULL || !defined('CONTEXT_ELIS_PROGRAM')) { return $this->content; } //if we are not on a PM page, disable the expansion of //entities in the curr admin tree (logic in curriculum/index.php) if (!is_a($PAGE, 'pm_page') && $PAGE->pagetype != 'admin-setting-local_elisprogram_settings') { unset($USER->currentitypath); } // Include Icon CSS. $PAGE->requires->css('/local/elisprogram/icons.css'); //CM entities for placement at the top of the menu $cm_entity_pages = array(); $cm_entity_pages[] = new menuitem('root'); $num_block_icons = isset(elis::$config->local_elisprogram->num_block_icons) ? elis::$config->local_elisprogram->num_block_icons : 5; /***************************************** * Clusters *****************************************/ if (!isset(elis::$config->local_elisprogram->display_clusters_at_top_level) || !empty(elis::$config->local_elisprogram->display_clusters_at_top_level)) { $manageclusters_css_class = block_elisadmin_get_item_css_class('manageclusters'); $cluster_css_class = block_elisadmin_get_item_css_class('cluster_instance'); require_once elispm::lib('contexts.php'); $context_result = pm_context_set::for_user_with_capability('cluster', 'local/elisprogram:userset_view', $USER->id); $extrafilters = array('contexts' => $context_result, 'parent' => 0); $num_records = cluster_count_records('', '', $extrafilters); if ($clusters = cluster_get_listing('priority, name', 'ASC', 0, $num_block_icons, '', '', $extrafilters)) { foreach ($clusters as $cluster) { $params = array('id' => $cluster->id, 'action' => 'view'); //count sub-clusters $cluster_filter = array('contexts' => usersetpage::get_contexts('local/elisprogram:userset_view')); $cluster_count = cluster_count_records('', '', array('parent' => $cluster->id), $cluster_filter); //count associated curricula $curriculum_filter = array('contexts' => curriculumpage::get_contexts('local/elisprogram:program_view')); $curriculum_count = clustercurriculum::count_curricula($cluster->id, $curriculum_filter); $isLeaf = empty($cluster_count) && empty($curriculum_count); $cm_entity_pages[] = block_elisadmin_get_menu_item('userset', $cluster, 'root', $manageclusters_css_class, $cluster->id, 0, $params, $isLeaf); } } if ($num_block_icons < $num_records) { $cm_entity_pages[] = block_elisadmin_get_menu_summary_item('userset', $cluster_css_class, $num_records - $num_block_icons); } } /***************************************** * Curricula *****************************************/ if (!empty(elis::$config->local_elisprogram->display_curricula_at_top_level)) { $managecurricula_css_class = block_elisadmin_get_item_css_class('managecurricula'); $curriculum_css_class = block_elisadmin_get_item_css_class('curriculum_instance'); require_once elispm::file('curriculumpage.class.php'); $num_records = curriculum_count_records('', '', curriculumpage::get_contexts('local/elisprogram:program_view')); $curricula = $DB->get_recordset(curriculum::TABLE, null, 'priority ASC, name ASC', '*', 0, $num_block_icons); foreach ($curricula as $curriculum) { $params = array('id' => $curriculum->id, 'action' => 'view'); //count associated courses $course_filter = array('contexts' => coursepage::get_contexts('local/elisprogram:course_view')); $course_count = curriculumcourse_count_records($curriculum->id, '', '', $course_filter); //count associated tracks $track_contexts = trackpage::get_contexts('local/elisprogram:track_view'); $track_count = track_count_records('', '', $curriculum->id, 0, $track_contexts); //count associated clusters $cluster_filter = array('contexts' => usersetpage::get_contexts('local/elisprogram:userset_view')); $cluster_count = clustercurriculum::count_clusters($curriculum->id, 0, $cluster_filter); $isLeaf = empty($course_count) && empty($track_count) && empty($cluster_count); $cm_entity_pages[] = block_elisadmin_get_menu_item('curriculum', $curriculum, 'root', $managecurricula_css_class, 0, $curriculum->id, $params, $isLeaf); } unset($curricula); if ($num_block_icons < $num_records) { $cm_entity_pages[] = block_elisadmin_get_menu_summary_item('curriculum', $curriculum_css_class, $num_records - $num_block_icons); } } //general cm pages $pages = array(new menuitem('dashboard', new menuitempage('dashboardpage'), 'root', '', block_elisadmin_get_item_css_class('dashboard')), new menuitem('admn', null, 'root', get_string('admin'), block_elisadmin_get_item_css_class('admn', true)), new menuitem('bulkuser', new menuitempage('bulkuserpage'), null, get_string('userbulk', 'admin'), block_elisadmin_get_item_css_class('bulkuser')), new menuitem('resultsconfig', new menuitempage('resultsconfigpage'), null, 'Default Results Engine Score Settings', block_elisadmin_get_item_css_class('resultsconfig'))); // ELIS-3208 - commented out this code as the Jasper reports no longer work in ELIS 2 /* //show the Jasper report server link if applicable if (cm_jasper_link_enabled()) { //page action $jasper_link_params = array('action' => 'reportslist'); //page instance $jasper_link_page = new menuitempage('jasperreportpage', '', $jasper_link_params); //styling for the link $jasper_link_css = block_elisadmin_get_item_css_class('reportslist'); $pages[] = new menuitem('reportslist', $jasper_link_page, null, '', $jasper_link_css); } */ $pages = array_merge($pages, array(new menuitem('customfields', new menuitempage('customfieldpage', '', array('level' => 'user')), null, '', block_elisadmin_get_item_css_class('customfields')), new menuitem('clusterclassification', new menuitempage('usersetclassificationpage', 'plugins/usetclassify/usersetclassificationpage.class.php'), null, get_string('userset_classification', 'elisprogram_usetclassify'), block_elisadmin_get_item_css_class('clusterclassification')), new menuitem('users', null, 'root', '', block_elisadmin_get_item_css_class('users', true)), new menuitem('manageusers', new menuitempage('userpage'), null, '', block_elisadmin_get_item_css_class('manageusers')), new menuitem('manageclusters', new menuitempage('usersetpage'), null, '', block_elisadmin_get_item_css_class('manageclusters')), new menuitem('curr', null, 'root', get_string('curriculum', 'local_elisprogram'), block_elisadmin_get_item_css_class('curr', true)), new menuitem('certificatelist', new menuitempage('certificatelistpage'), null, '', block_elisadmin_get_item_css_class('certificatelist')), new menuitem('managecurricula', new menuitempage('curriculumpage'), null, '', block_elisadmin_get_item_css_class('managecurricula')), new menuitem('managecourses', new menuitempage('coursepage'), null, '', block_elisadmin_get_item_css_class('managecourses')), new menuitem('manageclasses', new menuitempage('pmclasspage'), null, '', block_elisadmin_get_item_css_class('manageclasses')), new menuitem('crscat', null, 'root', get_string('learningplan', 'local_elisprogram'), block_elisadmin_get_item_css_class('crscat', true)), new menuitem('currentcourses', new menuitempage('coursecatalogpage', '', array('action' => 'current')), null, '', block_elisadmin_get_item_css_class('currentcourses')), new menuitem('availablecourses', new menuitempage('coursecatalogpage', '', array('action' => 'available')), null, '', block_elisadmin_get_item_css_class('availablecourses')), new menuitem('waitlist', new menuitempage('coursecatalogpage', '', array('action' => 'waitlist')), null, get_string('waitlistcourses', 'local_elisprogram'), block_elisadmin_get_item_css_class('waitlist')), new menuitem('rept', null, 'root', get_string('reports', 'local_elisprogram'), block_elisadmin_get_item_css_class('rept', true)))); if (has_capability('moodle/course:managegroups', context_course::instance($SITE->id))) { if (elis::$config->elisprogram_usetgroups->site_course_userset_groups) { $pages[] = new menuitem('frontpagegroups', new menuitempage('url_page', 'lib/menuitem.class.php', "{$CFG->wwwroot}/group/index.php?id={$SITE->id}"), 'admn', get_string('frontpagegroups', 'elisprogram_usetgroups'), block_elisadmin_get_item_css_class('manageclusters')); } if (elis::$config->elisprogram_usetgroups->userset_groupings) { $pages[] = new menuitem('frontpagegroupings', new menuitempage('url_page', 'lib/menuitem.class.php', "{$CFG->wwwroot}/group/groupings.php?id={$SITE->id}"), 'admn', get_string('frontpagegroupings', 'elisprogram_usetgroups'), block_elisadmin_get_item_css_class('manageclusters')); } } /** * This section adds all the necessary PHP reports to the menu */ //get all report pages, including categories but not including the //topmost report element $report_pages = block_elisadmin_get_report_tree_items(); //merge in the reporting page links $pages = array_merge($pages, $report_pages); if (empty(elis::$config->local_elisprogram->userdefinedtrack)) { $pages[] = new menuitem('managetracks', new menuitempage('trackpage'), null, '', block_elisadmin_get_item_css_class('managetracks')); } $syscontext = context_system::instance(); if (has_capability('local/elisprogram:config', $syscontext)) { $pages[] = new menuitem('configmanager', new menuitempage('url_page', 'lib/menuitem.class.php', "{$CFG->wwwroot}/admin/settings.php?section=local_elisprogram_settings"), 'admn', get_string('configuration'), block_elisadmin_get_item_css_class('configuration')); } $pages[] = new menuitem('notifications', new menuitempage('notifications', 'notificationspage.class.php', array('section' => 'admn')), null, '', block_elisadmin_get_item_css_class('notifications')); //$pages[] = new menuitem('dataimport', new menuitempage('dataimportpage', 'elis_ip/elis_ip_page.php', array('section' => 'admn')), null, '', block_elisadmin_get_item_css_class('integrationpoint')); $pages[] = new menuitem('defaultcls', new menuitempage('configclsdefaultpage', '', array('section' => 'admn')), null, '', block_elisadmin_get_item_css_class('defaultcls')); $pages[] = new menuitem('defaultcrs', new menuitempage('configcrsdefaultpage', '', array('section' => 'admn')), null, '', block_elisadmin_get_item_css_class('defaultcrs')); //turn all pages that have no children into leaf nodes menuitemlisting::flag_leaf_nodes($pages); //combine the specific entity page listing with the general CM listing $menuitemlisting = new menuitemlisting(array_merge($cm_entity_pages, $pages)); $tree = new treerepresentation($menuitemlisting); $this->content = new stdClass(); $this->content->text = $tree->convert_to_markup(); $this->content->footer = ''; $PAGE->requires->yui_module('moodle-local_elisprogram-menuitem', 'M.local_elisprogram.init_menuitem', array($tree->get_js_object(), $CFG->httpswwwroot), null, true); return $this->content; }
/** * Dynamically loads child menu items for a cluster entity * * @param int $id The entity id * @param int $parent_cluster_id The last cluster passed going down the curr_admin tree, or 0 if none * @param int $parent_curriculum_id The last curriculum passed going down the curr_admin tree, or 0 if none * @param int $num_block_icons Max number of entries to display * @param string $parent_path Path of parent curriculum elements in the tree * @return menuitem array The appropriate child items */ function block_curr_admin_load_menu_children_cluster($id, $parent_cluster_id, $parent_curriculum_id, $num_block_icons, $parent_path = '') { global $CFG, $USER; // page dependencies require_once $CFG->dirroot . '/curriculum/coursepage.class.php'; //error_log("block_curr_admin_load_menu_children_cluster($id, $parent_cluster_id, $parent_curriculum_id, $num_block_icons, $parent_path)"); $result_items = array(); /***************************************** * Cluster - Child Cluster Associations *****************************************/ // TBD: no permission check 'cause currently there is no prevents/prohibits in ELIS $cluster_css_class = block_curr_admin_get_item_css_class('cluster_instance'); $parent_clst_filter = array('contexts' => clusterpage::get_contexts('block/curr_admin:cluster:view'), 'parent' => $id); $listing = cluster_get_listing('priority, name', 'ASC', 0, $num_block_icons, '', '', $parent_clst_filter); $curriculum_filter = array('contexts' => curriculumpage::get_contexts('block/curr_admin:curriculum:view')); if (!empty($listing)) { foreach ($listing as $item) { $params = array('id' => $item->id, 'action' => 'view'); $cluster_filter = array('contexts' => clusterpage::get_contexts('block/curr_admin:cluster:view'), 'parent' => $item->id); $cluster_count = cluster_count_records('', '', $cluster_filter); $curriculum_count = clustercurriculum::count_curricula($item->id, $curriculum_filter); $isLeaf = empty($cluster_count) && empty($curriculum_count); $result_items[] = block_curr_admin_get_menu_item('cluster', $item, 'root', $cluster_css_class, $item->id, $parent_curriculum_id, $params, $isLeaf, $parent_path); //error_log("block_curr_admin_load_menu_children_cluster(); parent of cluster child = {$result_items[count($result_items) - 1]->parent}"); } } //summary item $num_records = cluster_count_records('', '', $parent_clst_filter); if ($num_block_icons < $num_records) { $params = array('id' => $parent_cluster_id); $result_items[] = block_curr_admin_get_menu_summary_item('cluster', $cluster_css_class, $num_records - $num_block_icons, $params, '', $parent_path); } /***************************************** * Cluster - Curriculum *****************************************/ $curriculum_css_class = block_curr_admin_get_item_css_class('curriculum_instance'); // permissions filter $curricula = clustercurriculum::get_curricula($id, 0, $num_block_icons, 'cur.priority ASC, cur.name ASC', $curriculum_filter); if (!empty($curricula)) { foreach ($curricula as $curriculum) { $curriculum->id = $curriculum->curriculumid; $params = array('id' => $curriculum->id, 'action' => 'view'); // count associated courses $course_filter = array('contexts' => coursepage::get_contexts('block/curr_admin:course:view')); $course_count = curriculumcourse_count_records($curriculum->id, '', '', $course_filter); // count associated tracks $track_contexts = trackpage::get_contexts('block/curr_admin:track:view'); $track_count = track_count_records('', '', $curriculum->id, $parent_cluster_id, $track_contexts); // count associated clusters $cluster_filter = array('contexts' => clusterpage::get_contexts('block/curr_admin:cluster:view')); $cluster_count = clustercurriculum::count_clusters($curriculum->id, $parent_cluster_id, $cluster_filter); $isLeaf = empty($course_count) && empty($track_count) && empty($cluster_count); $result_items[] = block_curr_admin_get_menu_item('curriculum', $curriculum, 'root', $curriculum_css_class, $parent_cluster_id, $curriculum->id, $params, $isLeaf, $parent_path); } } //summary item $num_records = clustercurriculum::count_curricula($id, $curriculum_filter); if ($num_block_icons < $num_records) { $params = array('id' => $id); $result_items[] = block_curr_admin_get_menu_summary_item('clustercurriculum', $curriculum_css_class, $num_records - $num_block_icons, $params, '', $parent_path); } //error_log("block_curr_admin_load_menu_children_cluster => " . count($result_items) . " child meuitems."); return $result_items; }
function __construct(&$items, $columns, $pageurl, $decorators = array()) { global $CURMAN; parent::__construct($items, $columns, $pageurl, $decorators); $this->curriculum_contexts = curriculumpage::get_contexts('block/curr_admin:curriculum:enrol'); $id = required_param('id', PARAM_INT); $cluster_contexts = clusterpage::get_contexts('block/curr_admin:curriculum:enrol_cluster_user'); $cluster_filter = $cluster_contexts->sql_filter_for_context_level('clst.id', 'cluster'); $sql = "SELECT curr.id\n FROM {$CURMAN->db->prefix_table(CLSTTABLE)} clst\n JOIN {$CURMAN->db->prefix_table(CLSTCURTABLE)} clstcurr\n ON clst.id = clstcurr.clusterid\n JOIN {$CURMAN->db->prefix_table(CURTABLE)} curr\n ON clstcurr.curriculumid = curr.id\n JOIN {$CURMAN->db->prefix_table(CLSTUSERTABLE)} usrclst ON usrclst.clusterid = clst.id AND usrclst.userid = {$id}\n WHERE {$cluster_filter}"; $this->cluster_curricula = $CURMAN->db->get_records_sql($sql); }
/** * Display copy curriculum action. */ public function display_copycurredit() { global $CFG, $USER, $PAGE, $DB, $OUTPUT; $PAGE->requires->js('/local/elisprogram/js/clustercurriculumpage.js'); $id = $this->required_param('id', PARAM_INT); // Create a list of curricula to be excluded. $curriculumshown = array(); $table = new html_table(); $table->head = array(get_string('userset_cpyclustname', 'local_elisprogram'), get_string('userset_cpycurname', 'local_elisprogram'), get_string('userset_cpyadd', 'local_elisprogram'), get_string('userset_cpytrkcpy', 'local_elisprogram'), get_string('userset_cpycrscpy', 'local_elisprogram'), get_string('userset_cpyclscpy', 'local_elisprogram'), get_string('userset_cpymdlclscpy', 'local_elisprogram')); $table->class = 'cluster_copy_curriculum'; // Get all clusters. $sort = 'name'; $dir = 'ASC'; $clusters = cluster_get_listing($sort, $dir, 0); $clusterlist = array(); $sql = 'SELECT * from {' . userset::TABLE . '}'; // Exclude clusters the user does not have the capability to manage/see. $context = get_contexts_by_capability_for_user('cluster', 'local/elisprogram:userset_view', $USER->id); echo '<form action="index.php" method="post">'; $mdlcrsoptions = array('copyalways' => get_string('program_copy_mdlcrs_copyalways', 'local_elisprogram'), 'copyautocreated' => get_string('program_copy_mdlcrs_copyautocreated', 'local_elisprogram'), 'autocreatenew' => get_string('program_copy_mdlcrs_autocreatenew', 'local_elisprogram'), 'link' => get_string('program_copy_mdlcrs_link', 'local_elisprogram')); $contexts = curriculumpage::get_contexts('local/elisprogram:associate'); foreach ($clusters as $clusid => $clusdata) { if (!$context->context_allowed($clusid, 'cluster')) { continue; } $assocurr = clustercurriculum::get_curricula($clusid); if (!empty($assocurr)) { $first = true; foreach ($assocurr as $assocurrrec) { // Add to list of curricula to exclude. $curriculumshown[] = $assocurrrec->curriculumid; // Skip over this clusters associated curricula. if ($clusid == $id) { continue; } // Skip over curricula that user cannot associate. if (!$contexts->context_allowed($assocurrrec->curriculumid, 'curriculum')) { continue; } if ($first) { $curname = format_string($clusdata->name); $first = false; } else { $curname = ''; } // Disable the last 3 options unless the first is checked. $checkboxids = "'" . self::CPY_CURR_PREFIX . $assocurrrec->curriculumid . "',\n '" . self::CPY_CURR_TRK_PREFIX . $assocurrrec->curriculumid . "',\n '" . self::CPY_CURR_CRS_PREFIX . $assocurrrec->curriculumid . "',\n '" . self::CPY_CURR_CLS_PREFIX . $assocurrrec->curriculumid . "'"; $togglecheckboxes = "cluster_copy_checkbox_changed(" . $checkboxids . ");"; $table->data[] = array($curname, format_string($assocurrrec->name), html_writer::checkbox(self::CPY_CURR_PREFIX . $assocurrrec->curriculumid, 1, false, '', array('id' => self::CPY_CURR_PREFIX . $assocurrrec->curriculumid, 'onclick' => $togglecheckboxes)), html_writer::checkbox(self::CPY_CURR_TRK_PREFIX . $assocurrrec->curriculumid, 1, false, '', array('disabled' => true, 'id' => self::CPY_CURR_TRK_PREFIX . $assocurrrec->curriculumid)), html_writer::checkbox(self::CPY_CURR_CRS_PREFIX . $assocurrrec->curriculumid, 1, false, '', array('disabled' => true, 'id' => self::CPY_CURR_CRS_PREFIX . $assocurrrec->curriculumid)), html_writer::checkbox(self::CPY_CURR_CLS_PREFIX . $assocurrrec->curriculumid, 1, false, '', array('disabled' => true, 'id' => self::CPY_CURR_CLS_PREFIX . $assocurrrec->curriculumid)), html_writer::select($mdlcrsoptions, self::CPY_CURR_MDLCRS_PREFIX . $assocurrrec->curriculumid)); $table->rowclass[] = 'clus_cpy_row'; } } } // Add unassociated row to table. $table->data[] = array(get_string('usersetprogram_unassociated', 'local_elisprogram'), '', '', '', '', '', ''); $table->rowclass[] = 'clus_cpy_row unassigned'; // Get all curriculums, removing curricula that have already been listed. $curriculums = curriculum_get_listing($sort, $dir, 0, 0, '', '', $contexts); foreach ($curriculums as $curriculumid => $curriculumdata) { if (false === array_search($curriculumid, $curriculumshown)) { $checkboxids = "'" . self::CPY_CURR_PREFIX . $curriculumid . "',\n '" . self::CPY_CURR_TRK_PREFIX . $curriculumid . "',\n '" . self::CPY_CURR_CRS_PREFIX . $curriculumid . "',\n '" . self::CPY_CURR_CLS_PREFIX . $curriculumid . "'"; $togglecheckboxes = "cluster_copy_checkbox_changed(" . $checkboxids . ");"; $table->data[] = array('', format_string($curriculumdata->name), html_writer::checkbox(self::CPY_CURR_PREFIX . $curriculumid, 1, false, '', array('id' => self::CPY_CURR_PREFIX . $curriculumid, 'onclick' => $togglecheckboxes)), html_writer::checkbox(self::CPY_CURR_TRK_PREFIX . $curriculumid, 1, false, '', array('disabled' => true, 'id' => self::CPY_CURR_TRK_PREFIX . $curriculumid)), html_writer::checkbox(self::CPY_CURR_CRS_PREFIX . $curriculumid, 1, false, '', array('disabled' => true, 'id' => self::CPY_CURR_CRS_PREFIX . $curriculumid)), html_writer::checkbox(self::CPY_CURR_CLS_PREFIX . $curriculumid, 1, false, '', array('disabled' => true, 'id' => self::CPY_CURR_CLS_PREFIX . $curriculumid)), html_writer::select($mdlcrsoptions, self::CPY_CURR_MDLCRS_PREFIX . $curriculumid)); $table->rowclass[] = 'clus_cpy_row'; } } $currselectall = '<div class="currselectall">'; $currselectall .= '<a id="clus_currcpy_select_all" onclick="cluster_copycurriculum_set_all_selected()">'; $currselectall .= get_string('selectall') . '</a></div>'; $trkselectall = '<div class="trkselectall"><a id="clus_trkcpy_select_all" onclick="cluster_copytrack_set_all_selected()">'; $trkselectall .= get_string('selectall') . '</a></div>'; $crsselectall = '<div class="crsselectall"><a id="clus_crscpy_select_all" onclick="cluster_copycourse_set_all_selected()">'; $crsselectall .= get_string('selectall') . '</a></div>'; $clsselectall = '<div class="clsselectall"><a id="clus_crscpy_select_all" onclick="cluster_copyclass_set_all_selected()">'; $clsselectall .= get_string('selectall') . '</a></div>'; $table->data[] = array('', '', $currselectall, $trkselectall, $crsselectall, $clsselectall); $table->rowclass[] = 'clus_cpy_row select_all_row'; echo html_writer::table($table); echo '<div class="clus_curr_cpy_save_exit">'; echo '<input type="submit" name="save" value="' . get_string('userset_saveexit', 'local_elisprogram') . '">'; echo '<div class="hidden">'; echo '<input type="hidden" name="id" value="' . $id . '">'; echo '<input type="hidden" name="s" value="clstcur">'; echo '<input type="hidden" name="action" value="copycurr">'; echo '<input type="hidden" name="sesskey" value="' . $USER->sesskey . '">'; echo '</div>'; echo '</div>'; echo '</form>'; }