Revisión | 5a7da81f5c1c481fec3fc1fcee5bfb18b34f1386 (tree) |
---|---|
Tiempo | 2022-03-22 03:08:29 |
Autor | umorigu <umorigu@gmai...> |
Commiter | umorigu |
BugTrack/2551 Diff and History on RecentChanges page
Originally implemented by haifun -san.
@@ -2,7 +2,7 @@ | ||
2 | 2 | // PukiWiki - Yet another WikiWikiWeb clone. |
3 | 3 | // file.php |
4 | 4 | // Copyright |
5 | -// 2002-2021 PukiWiki Development Team | |
5 | +// 2002-2022 PukiWiki Development Team | |
6 | 6 | // 2001-2002 Originally written by yu-ji |
7 | 7 | // License: GPL v2 or (at your option) any later version |
8 | 8 | // |
@@ -521,11 +521,8 @@ function lastmodified_add($update = '', $remove = '') | ||
521 | 521 | return; |
522 | 522 | } |
523 | 523 | |
524 | - | |
525 | - | |
526 | 524 | // ---- |
527 | 525 | // Update the page 'RecentChanges' |
528 | - | |
529 | 526 | $recent_pages = array_splice($recent_pages, 0, $maxshow); |
530 | 527 | $file = get_filename($whatsnew); |
531 | 528 |
@@ -539,9 +536,11 @@ function lastmodified_add($update = '', $remove = '') | ||
539 | 536 | // Recreate |
540 | 537 | ftruncate($fp, 0); |
541 | 538 | rewind($fp); |
542 | - foreach ($recent_pages as $_page=>$time) | |
543 | - fputs($fp, '-' . htmlsc(format_date($time)) . | |
544 | - ' - ' . '[[' . htmlsc($_page) . ']]' . "\n"); | |
539 | + $do_diff = exist_plugin('diff'); | |
540 | + foreach ($recent_pages as $_page=>$time) { | |
541 | + $line = get_recentchanges_line($_page, $time, $do_diff); | |
542 | + fputs($fp, $line); | |
543 | + } | |
545 | 544 | fputs($fp, '#norelated' . "\n"); // :) |
546 | 545 | |
547 | 546 | flock($fp, LOCK_UN); |
@@ -601,11 +600,11 @@ function put_lastmodified() | ||
601 | 600 | flock($fp, LOCK_EX); |
602 | 601 | ftruncate($fp, 0); |
603 | 602 | rewind($fp); |
603 | + $do_diff = exist_plugin('diff'); | |
604 | 604 | foreach (array_keys($recent_pages) as $page) { |
605 | - $time = $recent_pages[$page]; | |
606 | - $s_lastmod = htmlsc(format_date($time)); | |
607 | - $s_page = htmlsc($page); | |
608 | - fputs($fp, '-' . $s_lastmod . ' - [[' . $s_page . ']]' . "\n"); | |
605 | + $time = $recent_pages[$page]; | |
606 | + $line = get_recentchanges_line($page, $time, $do_diff); | |
607 | + fputs($fp, $line); | |
609 | 608 | } |
610 | 609 | fputs($fp, '#norelated' . "\n"); // :) |
611 | 610 | flock($fp, LOCK_UN); |
@@ -619,6 +618,27 @@ function put_lastmodified() | ||
619 | 618 | } |
620 | 619 | |
621 | 620 | /** |
621 | + * Get RecentChanges line. | |
622 | + */ | |
623 | +function get_recentchanges_line($page, $time, $is_diff) | |
624 | +{ | |
625 | + global $do_backup; | |
626 | + $lastmod = format_date($time); | |
627 | + if ($is_diff) { | |
628 | + $diff = '[ &pageaction("' . $page . '",diff);'; | |
629 | + if ($do_backup) { | |
630 | + $diff_backup = $diff . ' | &pageaction("' . $page . '",backup); ]'; | |
631 | + } else { | |
632 | + $diff_backup = $diff . ' ]'; | |
633 | + } | |
634 | + } else { | |
635 | + $diff_backup = ''; | |
636 | + } | |
637 | + $line = '-' . $lastmod . ' - ' . $diff_backup . ' [[' . $page . ']]' . "\n"; | |
638 | + return $line; | |
639 | +} | |
640 | + | |
641 | +/** | |
622 | 642 | * Get recent files |
623 | 643 | * |
624 | 644 | * @return Array of (file => time) |
@@ -0,0 +1,28 @@ | ||
1 | +<?php | |
2 | +// PukiWiki - Yet another WikiWikiWeb clone. | |
3 | +// pageaction.inc.php | |
4 | +// Copyright 2022 PukiWiki Development Team | |
5 | +// License: GPL v2 or (at your option) any later version | |
6 | +// | |
7 | +// pageaction plugin | |
8 | + | |
9 | +function plugin_pageaction_inline() | |
10 | +{ | |
11 | + global $_LANG; | |
12 | + $args = func_get_args(); | |
13 | + $page = strip_bracket(array_shift($args)); | |
14 | + $action = array_shift($args); | |
15 | + $base_uri = get_base_uri(); | |
16 | + switch ($action) { | |
17 | + case 'diff': | |
18 | + $diff_uri = $base_uri . '?cmd=diff&page=' . pagename_urlencode($page); | |
19 | + return '<a href="' . htmlsc($diff_uri) . '">' . $_LANG['skin']['diff'] . '</a>'; | |
20 | + break; | |
21 | + case 'backup': | |
22 | + $backup_uri = $base_uri . '?cmd=backup&page=' . pagename_urlencode($page); | |
23 | + return '<a href="' . htmlsc($backup_uri) . '">' . $_LANG['skin']['backup'] . '</a>'; | |
24 | + break; | |
25 | + default: | |
26 | + return make_pagelink($page); | |
27 | + } | |
28 | +} |