Merge pull request #705 from DanielOaks/extend-wiki-tagcategories

Extend Wiki integration a bit
This commit is contained in:
Shish 2020-03-23 14:22:41 +00:00 committed by GitHub
commit 9a21716f5e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 100 additions and 1 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

@ -25,11 +25,19 @@ class WikiTheme extends Themelet
$tfe->formatted .= "<p>(<a href='".make_link("wiki/wiki:sidebar", "edit=on")."'>Edit</a>)";
}
// see if title is a category'd tag
$title_html = html_escape($wiki_page->title);
if (class_exists('TagCategories')) {
$this->tagcategories = new TagCategories;
$tag_category_dict = $this->tagcategories->getKeyedDict();
$title_html = $this->tagcategories->getTagHtml($title_html, $tag_category_dict);
}
$page->set_title(html_escape($wiki_page->title));
$page->set_heading(html_escape($wiki_page->title));
$page->add_block(new NavBlock());
$page->add_block(new Block("Wiki Index", $tfe->formatted, "left", 20));
$page->add_block(new Block(html_escape($wiki_page->title), $this->create_display_html($wiki_page)));
$page->add_block(new Block($title_html, $this->create_display_html($wiki_page)));
}
public function display_page_editor(Page $page, WikiPage $wiki_page)

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;
}