diff --git a/ext/index/theme.php b/ext/index/theme.php index f948f1bb..4a65f4e6 100644 --- a/ext/index/theme.php +++ b/ext/index/theme.php @@ -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 = '

'.$st.' 

'.$short_wiki_description; + $page->add_block(new Block(null, $short_wiki_description, "main", 0, "short-wiki-description")); + } + } + } + /** * #param Image[] $images */ diff --git a/ext/wiki/main.php b/ext/wiki/main.php index 49b9a7b7..5af306d4 100644 --- a/ext/wiki/main.php +++ b/ext/wiki/main.php @@ -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; diff --git a/themes/danbooru/index.theme.php b/themes/danbooru/index.theme.php index 5aa2f90f..7b72857b 100644 --- a/themes/danbooru/index.theme.php +++ b/themes/danbooru/index.theme.php @@ -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) { diff --git a/themes/danbooru/style.css b/themes/danbooru/style.css index 59701969..598c05f9 100644 --- a/themes/danbooru/style.css +++ b/themes/danbooru/style.css @@ -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; diff --git a/themes/danbooru2/index.theme.php b/themes/danbooru2/index.theme.php index 796fb660..73a2da10 100644 --- a/themes/danbooru2/index.theme.php +++ b/themes/danbooru2/index.theme.php @@ -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); diff --git a/themes/danbooru2/style.css b/themes/danbooru2/style.css index a4b05818..ba42886f 100644 --- a/themes/danbooru2/style.css +++ b/themes/danbooru2/style.css @@ -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; diff --git a/themes/default/style.css b/themes/default/style.css index 4eefd609..7e963c99 100644 --- a/themes/default/style.css +++ b/themes/default/style.css @@ -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; } diff --git a/themes/futaba/style.css b/themes/futaba/style.css index 4ea6a219..a9738444 100644 --- a/themes/futaba/style.css +++ b/themes/futaba/style.css @@ -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; diff --git a/themes/warm/style.css b/themes/warm/style.css index 2d54532d..616010ee 100644 --- a/themes/warm/style.css +++ b/themes/warm/style.css @@ -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; }