crude wiki history
This commit is contained in:
parent
a7e775de2b
commit
61068bc0d0
2 changed files with 32 additions and 1 deletions
|
@ -198,6 +198,9 @@ class Wiki extends Extension
|
||||||
} else {
|
} else {
|
||||||
$this->theme->display_permission_denied();
|
$this->theme->display_permission_denied();
|
||||||
}
|
}
|
||||||
|
} elseif ($event->page_matches("wiki_admin/history")) {
|
||||||
|
$history = $this->get_history($_GET['title']);
|
||||||
|
$this->theme->display_page_history($page, $_GET['title'], $history);
|
||||||
} elseif ($event->page_matches("wiki_admin/delete_revision")) {
|
} elseif ($event->page_matches("wiki_admin/delete_revision")) {
|
||||||
if ($user->can(Permissions::WIKI_ADMIN)) {
|
if ($user->can(Permissions::WIKI_ADMIN)) {
|
||||||
send_event(new WikiDeleteRevisionEvent($_POST["title"], (int)$_POST["revision"]));
|
send_event(new WikiDeleteRevisionEvent($_POST["title"], (int)$_POST["revision"]));
|
||||||
|
@ -301,6 +304,20 @@ class Wiki extends Extension
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function get_history(string $title): array
|
||||||
|
{
|
||||||
|
global $database;
|
||||||
|
// first try and get the actual page
|
||||||
|
return $database->get_all(
|
||||||
|
"
|
||||||
|
SELECT revision, date
|
||||||
|
FROM wiki_pages
|
||||||
|
WHERE LOWER(title) LIKE LOWER(:title)
|
||||||
|
ORDER BY revision DESC
|
||||||
|
",
|
||||||
|
["title"=>$title]
|
||||||
|
);
|
||||||
|
}
|
||||||
public static function get_page(string $title, int $revision=-1): WikiPage
|
public static function get_page(string $title, int $revision=-1): WikiPage
|
||||||
{
|
{
|
||||||
global $database;
|
global $database;
|
||||||
|
|
|
@ -42,6 +42,20 @@ class WikiTheme extends Themelet
|
||||||
$page->add_block(new Block($title_html, $this->create_display_html($wiki_page)));
|
$page->add_block(new Block($title_html, $this->create_display_html($wiki_page)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function display_page_history(Page $page, string $title, array $history)
|
||||||
|
{
|
||||||
|
$html = "<table class='zebra'>";
|
||||||
|
foreach ($history as $row) {
|
||||||
|
$rev = $row['revision'];
|
||||||
|
$html .= "<tr><td><a href='".make_link("wiki/$title", "revision=$rev")."'>{$rev}</a></td><td>{$row['date']}</td></tr>";
|
||||||
|
}
|
||||||
|
$html .= "</table>";
|
||||||
|
$page->set_title(html_escape($title));
|
||||||
|
$page->set_heading(html_escape($title));
|
||||||
|
$page->add_block(new NavBlock());
|
||||||
|
$page->add_block(new Block(html_escape($title), $html));
|
||||||
|
}
|
||||||
|
|
||||||
public function display_page_editor(Page $page, WikiPage $wiki_page)
|
public function display_page_editor(Page $page, WikiPage $wiki_page)
|
||||||
{
|
{
|
||||||
$page->set_title(html_escape($wiki_page->title));
|
$page->set_title(html_escape($wiki_page->title));
|
||||||
|
@ -111,7 +125,7 @@ class WikiTheme extends Themelet
|
||||||
$formatted_body
|
$formatted_body
|
||||||
<hr>
|
<hr>
|
||||||
<p class='wiki-footer'>
|
<p class='wiki-footer'>
|
||||||
Revision {$page->revision}
|
Revision <a href='".make_link("wiki_admin/history", "title={$page->title}")."'>{$page->revision}</a>
|
||||||
by <a href='".make_link("user/{$owner->name}")."'>{$owner->name}</a>
|
by <a href='".make_link("user/{$owner->name}")."'>{$owner->name}</a>
|
||||||
at {$page->date}
|
at {$page->date}
|
||||||
$edit
|
$edit
|
||||||
|
|
Reference in a new issue