1 |
<?php |
<?php |
|
///////////////////////////////////////////////// |
|
2 |
// PukiWiki - Yet another WikiWikiWeb clone. |
// PukiWiki - Yet another WikiWikiWeb clone. |
|
// |
|
3 |
// $Id$ |
// $Id$ |
4 |
|
// Copyright (C) |
5 |
|
// 2002-2005 PukiWiki Developers Team |
6 |
|
// 2002 Originally written by yu-ji |
7 |
|
// License: GPL v2 or (at your option) any later version |
8 |
// |
// |
9 |
|
// Showing colored-diff plugin |
10 |
|
|
|
//ページの差分を表示する |
|
11 |
function plugin_diff_action() |
function plugin_diff_action() |
12 |
{ |
{ |
13 |
global $vars; |
global $vars; |
23 |
return $retval; |
return $retval; |
24 |
} |
} |
25 |
|
|
|
// 差分を表示 |
|
26 |
function plugin_diff_view($page) |
function plugin_diff_view($page) |
27 |
{ |
{ |
28 |
global $script, $hr; |
global $script, $hr; |
47 |
$filename = DIFF_DIR . encode($page) . '.txt'; |
$filename = DIFF_DIR . encode($page) . '.txt'; |
48 |
if (file_exists($filename)) { |
if (file_exists($filename)) { |
49 |
$diffdata = htmlspecialchars(join('', file($filename))); |
$diffdata = htmlspecialchars(join('', file($filename))); |
50 |
$diffdata = preg_replace('/^(\-)(.*)$/m', '<span class="diff_removed">$2</span>', $diffdata); |
|
51 |
$diffdata = preg_replace('/^(\+)(.*)$/m', '<span class="diff_added" >$2</span>', $diffdata); |
// Cut diff markers ('+' or '-' or ' ') |
52 |
$diffdata = preg_replace('/^\s(.*)$/m', '$1', $diffdata); |
$diffdata = preg_replace('/^\-(.*)$/m', '<span class="diff_removed">$1</span>', $diffdata); |
53 |
|
$diffdata = preg_replace('/^\+(.*)$/m', '<span class="diff_added" >$1</span>', $diffdata); |
54 |
|
$diffdata = preg_replace('/^ (.*)$/m', '$1', $diffdata); |
55 |
|
|
56 |
if (! PKWK_READONLY) { |
if (! PKWK_READONLY) { |
57 |
$menu[] = "<li><a href=\"$script?cmd=diff&action=delete&page=$r_page\">" . |
$menu[] = '<li><a href="' . $script . '?cmd=diff&action=delete&page=' . |
58 |
str_replace('$1', $s_page, $_title_diff_delete) . '</a></li>'; |
$r_page . '">"' . str_replace('$1', $s_page, $_title_diff_delete) . '</a></li>'; |
59 |
} |
} |
60 |
|
|
61 |
$msg = "<pre>$diffdata</pre>\n"; |
$msg = '<pre>' . $diffdata . '</pre>' . "\n"; |
62 |
} |
} else if ($is_page) { |
|
else if ($is_page) { |
|
63 |
$diffdata = trim(htmlspecialchars(join('', get_source($page)))); |
$diffdata = trim(htmlspecialchars(join('', get_source($page)))); |
64 |
$msg = "<pre><span class=\"diff_added\">$diffdata</span></pre>\n"; |
$msg = '<pre><span class="diff_added">' . $diffdata . '</span></pre>' . "\n"; |
65 |
} |
} else { |
|
else { |
|
66 |
return array('msg'=>$_title_diff, 'body'=>$_msg_notfound); |
return array('msg'=>$_title_diff, 'body'=>$_msg_notfound); |
67 |
} |
} |
68 |
|
|
77 |
return array('msg'=>$_title_diff, 'body'=>$body . $msg); |
return array('msg'=>$_title_diff, 'body'=>$body . $msg); |
78 |
} |
} |
79 |
|
|
|
// バックアップを削除 |
|
80 |
function plugin_diff_delete($page) |
function plugin_diff_delete($page) |
81 |
{ |
{ |
82 |
global $script, $vars; |
global $script, $vars; |
85 |
|
|
86 |
$filename = DIFF_DIR . encode($page) . '.txt'; |
$filename = DIFF_DIR . encode($page) . '.txt'; |
87 |
$body = ''; |
$body = ''; |
88 |
if (! is_pagename($page)) $body = "Invalid page name"; |
if (! is_pagename($page)) $body = 'Invalid page name'; |
89 |
if (! file_exists($filename)) $body = make_pagelink($page) . "'s diff seems not found"; |
if (! file_exists($filename)) $body = make_pagelink($page) . '\'s diff seems not found'; |
90 |
if ($body) return array('msg'=>$_title_diff_delete, 'body'=>$body); |
if ($body) return array('msg'=>$_title_diff_delete, 'body'=>$body); |
91 |
|
|
92 |
if (isset($vars['pass'])) { |
if (isset($vars['pass'])) { |
97 |
'body' => str_replace('$1', make_pagelink($page), $_msg_diff_deleted) |
'body' => str_replace('$1', make_pagelink($page), $_msg_diff_deleted) |
98 |
); |
); |
99 |
} else { |
} else { |
100 |
$body .= "<p><strong>$_msg_invalidpass</strong></p>\n"; |
$body .= '<p><strong>' . $_msg_invalidpass . '</strong></p>' . "\n"; |
101 |
} |
} |
102 |
} |
} |
103 |
|
|