カテゴリ | 動作環境 |
---|---|
サマリ | RecentChangesに差分とバックアップのリンクを載せたい |
バージョン | 1.5.3 |
投稿者 | 名無し |
状態 | 完了 |
投稿日 | 2021-12-27 (月) 08:14:04 |
RecentChanges(最終更新)のページは使いやすいものの、更新されたページのみの表示なのでいまいち変更箇所が分かりにくいです。 Wikipediaの最近の更新ページのように差分とバックアップのリンクを載せるのはどうしたらよいでしょうか。
// Create RecentChanges $file = get_filename($whatsnew); pkwk_touch_file($file); $fp = fopen($file, 'r+') or die_message('Cannot open ' . htmlsc($whatsnew)); set_file_buffer($fp, 0); flock($fp, LOCK_EX); ftruncate($fp, 0); rewind($fp); foreach (array_keys($recent_pages) as $page) { $time = $recent_pages[$page]; $s_lastmod = htmlsc(format_date($time)); $s_page = htmlsc($page); - fputs($fp, '-' . $s_lastmod . ' - [[' . $s_page . ']]' . "\n"); + fputs($fp, '-' . $s_lastmod . ' - [ [[差分>Diff:' . $s_page . ']] | [[バックアップ>Backup:' . $s_page . ']] ] [[' . $s_page . ']]' . "\n"); } fputs($fp, '#norelated' . "\n"); // :) flock($fp, LOCK_UN); fclose($fp);−の行を+の行に置き換える。(+は消す)
-[./?cmd=diff&page= Diff] -[./?cmd=backup&page= Backup]
+ $script = get_script_uri(); foreach (array_keys($recent_pages) as $page) { $time = $recent_pages[$page]; $s_lastmod = htmlsc(format_date($time)); $s_page = htmlsc($page); - fputs($fp, '-' . $s_lastmod . ' - [[' . $s_page . ']]' . "\n"); + fputs($fp, '-' . $s_lastmod . ' - [ [[差分>' . $script . '?cmd=diff&page=' . $s_page . ']] | [[バックアップ>' . $script . '?cmd=backup&page=' . $s_page . ']] ] [[' . $s_page . ']]' . "\n"); }
+ $script = get_script_uri(); foreach ($recent_pages as $_page=>$time) fputs($fp, '-' . htmlsc(format_date($time)) . - ' - ' . '[[' . htmlsc($_page) . ']]' . "\n"); + ' - ' . '[ [[差分>' . $script . '?cmd=diff&page=' . htmlsc($_page) . ']] | [[バックアップ>' . $script . '?cmd=backup&page=' . htmlsc($_page) . ']] ] [[' . htmlsc($_page) . ']]' . "\n");
$script = get_script_uri(); foreach (array_keys($recent_pages) as $page) { $time = $recent_pages[$page]; $s_lastmod = htmlsc(format_date($time)); $s_page = htmlsc($page); // 差分の文字数計算 $diff_len = 0; $diff_len_str = ''; $diff_file = DIFF_DIR . encode($page) . '.txt'; if (file_exists($diff_file)) { foreach (file($diff_file) as $line) { $head = $line[0]; if ($head == "+") { $diff_len += mb_strlen($line) - 1; } else if ($head == "-") { $diff_len -= mb_strlen($line) - 1; } } } else if (is_page($page)) { $diff_len = mb_strlen(join('', get_source($page))); } else { $diff_len = 0; } if ($diff_len == 0) $diff_len_str = "&color(silver){(0)};"; if ($diff_len > 0) $diff_len_str = "&color(green){(+" . $diff_len . ")};"; if ($diff_len < 0) $diff_len_str = "&color(maroon){(" . $diff_len . ")};"; fputs($fp, '-' . $s_lastmod . ' - [ [[差分>' . $script . '?cmd=diff&page=' . $s_page . ']] | [[バックアップ>' . $script . '?cmd=backup&page=' . $s_page . ']] ] [[' . $s_page . ']] -- ' . $diff_len_str . "\n"); }
$script = get_script_uri(); foreach ($recent_pages as $_page=>$time) { // 差分の文字数計算 $diff_len = 0; $diff_len_str = ''; $diff_file = DIFF_DIR . encode($_page) . '.txt'; if (file_exists($diff_file)) { foreach (file($diff_file) as $line) { $head = $line[0]; if ($head == "+") { $diff_len += mb_strlen($line) - 1; } else if ($head == "-") { $diff_len -= mb_strlen($line) - 1; } } } else if (is_page($_page)) { $diff_len = mb_strlen(join('', get_source($page))); } else { $diff_len = 0; } if ($diff_len == 0) $diff_len_str = "&color(silver){(0)};"; if ($diff_len > 0) $diff_len_str = "&color(green){(+" . $diff_len . ")};"; if ($diff_len < 0) $diff_len_str = "&color(maroon){(" . $diff_len . ")};"; fputs($fp, '-' . htmlsc(format_date($time)) . ' - ' . '[ [[差分>' . $script . '?cmd=diff&page=' . htmlsc($_page) . ']] | [[バックアップ>' . $script . '?cmd=backu p&page=' . htmlsc($_page) . ']] ] [[' . htmlsc($_page) . ']] -- ' . $diff_len_str . "\n"); }
// 差分文字数計算(ここから) $diff_len = 0; $diff_len_str = ''; $diff_file = DIFF_DIR . encode($page) . '.txt'; if (file_exists($diff_file)) { foreach (file($diff_file) as $line) { $head = $line[0]; if ($head == "+") { $diff_len += mb_strlen($line) - 1; } else if ($head == "-") { $diff_len -= mb_strlen($line) - 1; } } } else if (is_page($page)) { $diff_len = mb_strlen(join('', get_source($page))); } else { $diff_len = 0; } if ($diff_len == 0) $diff_len_str = '<span style="color:silver;">(0)</span>'; if ($diff_len > 0) $diff_len_str = '<span style="color:green;">(+' . $diff_len . ')</span>'; if ($diff_len < 0) $diff_len_str = '<span style="color:maroon;">(' . $diff_len . ')</span>'; // (ここまで) if ($page === $vars['page']) { // No need to link to the page you just read, or notify where you just read // ここの1行も下の1行と置き換える $items .= ' <li>' . $s_page . ' ' . $diff_len_str . '</li>' . "\n"; } else { $attrs = get_page_link_a_attrs($page); // ここの3行も下の3行と置き換える $items .= ' <li><a href="' . get_page_uri($page) . '" class="' . $attrs['class'] . '" data-mtime="' . $attrs['data_mtime'] . '">' . $s_page . '</a>' . ' ' . $diff_len_str . '</li>' . "\n"; }