protected function specific_definition($mform) { global $CFG, $PAGE; require_once $CFG->dirroot . '/local/moodec/lib.php'; // Fields for editing HTML block title and contents. $mform->addElement('header', 'configheader', get_string('blocksettings', 'block')); // Add number of courses to display selection $mform->addElement('select', 'config_courses_shown', get_string('courses_shown', 'block_moodec_courses'), array(1 => 1, 2 => 2, 3 => 3, 4 => 4)); $mform->setType('config_courses_shown', PARAM_INT); // Add show image checkbox $mform->addElement('advcheckbox', 'config_show_image', get_string('show_image', 'block_moodec_courses'), get_string('show_image_label', 'block_moodec_courses')); $mform->setType('config_show_image', PARAM_INT); // Add show description checkbox $mform->addElement('advcheckbox', 'config_show_description', get_string('show_description', 'block_moodec_courses'), get_string('show_description_label', 'block_moodec_courses')); $mform->setType('config_show_description', PARAM_INT); // Add show price checkbox $mform->addElement('advcheckbox', 'config_show_price', get_string('show_price', 'block_moodec_courses'), get_string('show_price_label', 'block_moodec_courses')); $mform->setType('config_show_price', PARAM_INT); // Add display method selection $mform->addElement('select', 'config_course_selection', get_string('course_selection', 'block_moodec_courses'), array(0 => get_string('select_latest_courses', 'block_moodec_courses'), 1 => get_string('select_random_courses', 'block_moodec_courses'), 2 => get_string('select_manual_courses', 'block_moodec_courses'))); $mform->setType('config_course_selection', PARAM_INT); // Get all products and store in an array of ID and fullname $products = local_moodec_get_products(-1, null, 'fullname', 'ASC'); $allProducts = array(); foreach ($products as $p) { $allProducts[$p->get_id()] = $p->get_fullname(); } // Add manual course selection 1 $mform->addElement('select', 'config_manual_course_1', get_string('manual_course_selection', 'block_moodec_courses', array('id' => 1)), $allProducts); $mform->setType('config_manual_course_1', PARAM_INT); $mform->disabledif('config_manual_course_1', 'config_course_selection', 'neq', 2); // Add manual course selection 2 $mform->addElement('select', 'config_manual_course_2', get_string('manual_course_selection', 'block_moodec_courses', array('id' => 2)), $allProducts); $mform->setType('config_manual_course_2', PARAM_INT); $mform->disabledif('config_manual_course_2', 'config_course_selection', 'neq', 2); $mform->disabledif('config_manual_course_2', 'config_courses_shown', 'eq', 1); // Add manual course selection 3 $mform->addElement('select', 'config_manual_course_3', get_string('manual_course_selection', 'block_moodec_courses', array('id' => 3)), $allProducts); $mform->setType('config_manual_course_3', PARAM_INT); $mform->disabledif('config_manual_course_3', 'config_course_selection', 'neq', 2); $mform->disabledif('config_manual_course_3', 'config_courses_shown', 'eq', 1); $mform->disabledif('config_manual_course_3', 'config_courses_shown', 'eq', 2); // Add manual course selection 4 $mform->addElement('select', 'config_manual_course_4', get_string('manual_course_selection', 'block_moodec_courses', array('id' => 4)), $allProducts); $mform->setType('config_manual_course_4', PARAM_INT); $mform->disabledif('config_manual_course_4', 'config_course_selection', 'neq', 2); $mform->disabledif('config_manual_course_4', 'config_courses_shown', 'eq', 1); $mform->disabledif('config_manual_course_4', 'config_courses_shown', 'eq', 2); $mform->disabledif('config_manual_course_4', 'config_courses_shown', 'eq', 3); $PAGE->requires->jquery(); $PAGE->requires->js(new moodle_url($CFG->wwwroot . '/blocks/moodec_courses/edit_form.js')); }
/** * Extend the default Moodle navigation * @param global_navigation $nav * @return void */ function local_moodec_extends_navigation(global_navigation $nav) { global $CFG, $PAGE, $DB; // Add store container to menu $storenode = $PAGE->navigation->add(get_string('catalogue_title', 'local_moodec'), new moodle_url($CFG->wwwroot . '/local/moodec/pages/catalogue.php'), navigation_node::TYPE_CONTAINER); if (!!get_config('local_moodec', 'page_product_enable')) { // We store the courses by category // but only get categories with active products $query = sprintf('SELECT DISTINCT cc.id, cc.visible, cc.name FROM {course_categories} cc, {course} c, {local_moodec_product} lmp WHERE cc.id = c.category AND c.id = lmp.course_id AND lmp.is_enabled = 1'); $categories = $DB->get_records_sql($query); if (!!$categories) { foreach ($categories as $category) { if ($category->visible) { $catnode = $storenode->add($category->name, new moodle_url($CFG->wwwroot . '/local/moodec/pages/catalogue.php', array('category' => $category->id)), navigation_node::TYPE_CONTAINER); // Actually get the products $products = local_moodec_get_products(-1, $category->id, 'fullname'); // Add products to the store menu foreach ($products as $product) { $catnode->add($product->get_fullname(), new moodle_url($CFG->wwwroot . '/local/moodec/pages/product.php', array('id' => $product->get_id()))); } } } } } // Add cart page to menu $PAGE->navigation->add(get_string('cart_title', 'local_moodec'), new moodle_url($CFG->wwwroot . '/local/moodec/pages/cart.php')); // Add transactions page to menu $PAGE->navigation->add(get_string('transactions_title', 'local_moodec'), new moodle_url($CFG->wwwroot . '/local/moodec/pages/transaction/index.php')); }
/** * Return contents of moodec_courses block * * @return stdClass contents of block */ public function get_content() { global $USER, $CFG, $DB; require_once $CFG->dirroot . '/local/moodec/lib.php'; if ($this->content !== NULL) { return $this->content; } // $config = get_config('block_moodec_courses'); $this->content = new stdClass(); $this->content->text = ''; $this->content->footer = ''; if (!empty($this->config)) { // Check config for which courses to select if ((int) $this->config->course_selection === 0) { // Return latest courses $products = local_moodec_get_products(-1, null, 'timecreated', 'DESC'); $products = array_slice($products, 0, $this->config->courses_shown); } elseif ((int) $this->config->course_selection === 1) { // Return random courses $products = local_moodec_get_random_products($this->config->courses_shown); } else { // TODO: Add return manual courses $products = array(); for ($i = 1; $i <= $this->config->courses_shown; $i++) { $manual = 'manual_course_' . $i; $newProduct = local_moodec_get_product((int) $this->config->{$manual}); if (!!$newProduct) { $products[] = $newProduct; } } } // Render HTML $renderer = $this->page->get_renderer('block_moodec_courses'); $this->content->text = $renderer->output_products($products, $this->config); } return $this->content; }
} else { $PAGE->set_pagelayout('standard'); } } $PAGE->set_title(get_string('catalogue_title', 'local_moodec')); $PAGE->set_heading(get_string('catalogue_title', 'local_moodec')); $PAGE->requires->jquery(); $PAGE->requires->js(new moodle_url($CFG->wwwroot . '/local/moodec/js/catalogue.js')); // Get the renderer for this page $renderer = $PAGE->get_renderer('local_moodec'); list($sortfield, $sortorder) = local_moodec_extract_sort_vars($sort); echo $OUTPUT->header(); ?> <h1 class="page__title"><?php echo get_string('catalogue_title', 'local_moodec'); ?> </h1> <?php // Render catalogue filter bar echo $renderer->filter_bar($categoryID, $sort); // Get the products for this page $products = local_moodec_get_products($page, $categoryID, $sortfield, $sortorder); // Outputs this page of products echo $renderer->catalogue($products); // Get all products matching the filter parameters $allProducts = local_moodec_get_products(-1, $categoryID, $sortfield, $sortorder); // Pass them to the pagination function echo $renderer->pagination($allProducts, $page, $categoryID, $sort); echo $OUTPUT->footer();