Add shortwiki entries when viewing a single tag

This commit is contained in:
Daniel Oaks 2020-03-23 22:48:38 +10:00
parent deac369d26
commit 0029aa5320
9 changed files with 91 additions and 0 deletions

View file

@ -37,6 +37,8 @@ and of course start organising your images :-)
*/
public function display_page(Page $page, array $images)
{
$this->display_shortwiki($page);
$this->display_page_header($page, $images);
$nav = $this->build_navigation($this->page_number, $this->total_pages, $this->search_terms);
@ -102,6 +104,36 @@ and of course start organising your images :-)
return $table;
}
protected function display_shortwiki(Page $page)
{
global $config;
if (class_exists('Wiki') && $config->get_bool(WikiConfig::TAG_SHORTWIKIS)) {
if (count($this->search_terms) == 1) {
$st = Tag::implode($this->search_terms);
$wikiPage = Wiki::get_page($st);
$short_wiki_description = '';
if ($wikiPage->id != -1) {
// only show first line of wiki
$short_wiki_description = explode("\n", $wikiPage->body, 2)[0];
$tfe = new TextFormattingEvent($short_wiki_description);
send_event($tfe);
$short_wiki_description = $tfe->formatted;
}
$wikiLink = make_link("wiki/$st");
if (class_exists('TagCategories')) {
$this->tagcategories = new TagCategories;
$tag_category_dict = $this->tagcategories->getKeyedDict();
$st = $this->tagcategories->getTagHtml(html_escape($st), $tag_category_dict);
}
$short_wiki_description = '<h2>'.$st.'&nbsp;<a href="'.$wikiLink.'"><sup>ⓘ</sup></a></h2>'.$short_wiki_description;
$page->add_block(new Block(null, $short_wiki_description, "main", 0, "short-wiki-description"));
}
}
}
/**
* #param Image[] $images
*/

View file

@ -96,11 +96,31 @@ class WikiPage
}
}
abstract class WikiConfig
{
const TAG_SHORTWIKIS = "shortwikis_on_tags";
}
class Wiki extends Extension
{
/** @var WikiTheme */
protected $theme;
public function onInitExt(InitExtEvent $event)
{
global $config;
$config->set_default_bool(WikiConfig::TAG_SHORTWIKIS, false);
}
// Add a block to the Board Config / Setup
public function onSetupBuilding(SetupBuildingEvent $event)
{
$sb = new SetupBlock("Wiki");
$sb->add_bool_option(WikiConfig::TAG_SHORTWIKIS, "Show shortwiki entry when searching for a single tag: ");
$event->panel->add_block($sb);
}
public function onDatabaseUpgrade(DatabaseUpgradeEvent $event)
{
global $database;

View file

@ -7,6 +7,8 @@ class CustomIndexTheme extends IndexTheme
*/
public function display_page(Page $page, array $images)
{
$this->display_shortwiki($page);
global $config;
if (count($this->search_terms) == 0) {

View file

@ -87,6 +87,12 @@ margin:auto;
text-align:center;
width:256px;
}
#short-wiki-description {
padding:0 1.5em;
}
#short-wiki-description h2 {
padding-bottom:0.2em;
}
FOOTER {
clear:both;
color:#CCCCCC;

View file

@ -7,6 +7,8 @@ class CustomIndexTheme extends IndexTheme
*/
public function display_page(Page $page, array $images)
{
$this->display_shortwiki($page);
$this->display_page_header($page, $images);
$nav = $this->build_navigation($this->page_number, $this->total_pages, $this->search_terms);

View file

@ -99,6 +99,13 @@ border-top:medium none;
text-align:center;
font-size:0.75em;
}
#short-wiki-description {
padding:0 2em;
font-size:1.2em;
}
#short-wiki-description h2 {
padding-bottom:0.2em;
}
FOOTER {
clear:both;
border-top:solid 1px #E7E7F7;

View file

@ -148,6 +148,13 @@ ARTICLE TABLE {
* specific page types *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#short-wiki-description > .blockbody {
padding-bottom: 15px;
}
#short-wiki-description h2 {
margin: 0 0 0.4em;
}
#pagelist {
margin-top: 32px;
}

View file

@ -84,6 +84,14 @@ TABLE.tag_list>TBODY>TR>TD:after {
* specific page types *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#short-wiki-description > .blockbody {
padding-bottom: 15px;
font-size: 1.1em;
}
#short-wiki-description h2 {
margin: 0 0 0.4em;
}
.doubledash {
color: #D9BFB7;
vertical-align: top;

View file

@ -170,6 +170,13 @@ ARTICLE TABLE {
* specific page types *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#short-wiki-description > .blockbody {
padding-bottom: 15px;
}
#short-wiki-description h2 {
margin: 0 0 0.4em;
}
#pagelist {
margin-top: 32px;
}