From 60d486f9aa6c40adc51ec0c07b1cde3988aa4e10 Mon Sep 17 00:00:00 2001 From: Angel Fernando Quiroz Campos Date: Tue, 17 Jan 2023 10:25:23 -0500 Subject: [PATCH] Wiki: Add category block + link to search by category - refs BT20357 --- main/wiki/wiki.inc.php | 122 ++++++++++++++++-- .../Repository/CWikiCategoryRepository.php | 2 +- 2 files changed, 113 insertions(+), 11 deletions(-) diff --git a/main/wiki/wiki.inc.php b/main/wiki/wiki.inc.php index 88cab803f2..c0275532bc 100755 --- a/main/wiki/wiki.inc.php +++ b/main/wiki/wiki.inc.php @@ -1377,9 +1377,10 @@ class Wiki ); } - echo Display::toolbarAction( + $contentHtml = Display::toolbarAction( 'toolbar-wikistudent', - [$actionsLeft, $actionsRight] + [$actionsLeft, $actionsRight], + [3, 9] ); $pageWiki = self::detect_news_link($content); @@ -1403,7 +1404,9 @@ class Wiki $footerWiki .= ''; // wikicontent require to print wiki document - echo '
'.Display::panel($pageWiki, $pageTitle, $footerWiki).'
'; //end filter visibility + $contentHtml .= '
'.Display::panel($pageWiki, $pageTitle, $footerWiki).'
'; //end filter visibility + + $this->renderShowPage($contentHtml); } /** @@ -4888,16 +4891,23 @@ class Wiki // initiate the object $form = new FormValidator( 'wiki_search', - 'post', + 'get', $this->url.'&'.http_build_query(['action' => api_htmlentities($action), 'mode_table' => 'yes1']) ); + $form->addHidden('cidReq', $this->courseCode); + $form->addHidden('id_session', $this->session_id); + $form->addHidden('gidReq', $this->group_id); + $form->addHidden('gradebook', '0'); + $form->addHidden('origin', ''); + $form->addHidden('action', 'searchpages'); + // Setting the form elements $form->addText( 'search_term', get_lang('SearchTerm'), - true, + false, ['autofocus' => 'autofocus'] ); $form->addCheckBox('search_content', '', get_lang('AlsoSearchContent')); @@ -4939,8 +4949,8 @@ class Wiki $values = $form->exportValues(); $this->display_wiki_search_results( $values['search_term'], - (int) $values['search_content'], - (int) $values['all_vers'], + (int) ($values['search_content'] ?? ''), + (int) ($values['all_vers'] ?? ''), $values['categories'] ?? [], !empty($values['match_all_categories']) ); @@ -5890,7 +5900,20 @@ class Wiki // menu recent changes $actionsLeft .= '' .Display::return_icon('history.png', get_lang('RecentChanges'), [], ICON_SIZE_MEDIUM).''; - echo Display::toolbarAction('toolbar-wiki', [$actionsLeft]); + + $frmSearch = new FormValidator('wiki_search', 'get', '', '', [], FormValidator::LAYOUT_INLINE); + $frmSearch->addText('search_term', get_lang('SearchTerm'), false); + $frmSearch->addHidden('cidReq', $this->courseCode); + $frmSearch->addHidden('id_session', $this->session_id); + $frmSearch->addHidden('gidReq', $this->group_id); + $frmSearch->addHidden('gradebook', '0'); + $frmSearch->addHidden('origin', ''); + $frmSearch->addHidden('action', 'searchpages'); + $frmSearch->addButtonSearch(get_lang('Search')); + + $actionsRight = $frmSearch->returnForm(); + + echo Display::toolbarAction('toolbar-wiki', [$actionsLeft, $actionsRight]); } /** @@ -6856,15 +6879,94 @@ class Wiki return false; } + private function renderShowPage(string $contentHtml) + { + $wikiCategoriesEnabled = api_get_configuration_value('wiki_categories_enabled'); + + if ($wikiCategoriesEnabled) { + $em = Database::getManager(); + $categoryRepo = $em->getRepository(CWikiCategory::class); + + $course = api_get_course_entity(); + $session = api_get_session_entity(); + + $count = $categoryRepo->countByCourse($course, $session); + $tree = get_lang('NoCategories'); + + if ($count) { + $tree = $categoryRepo->buildCourseTree( + $course, + $session, + [ + 'decorate' => true, + 'rootOpen' => '