• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
Keine Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Commit MetaInfo

Revision32c7cdee02d7c2d5e71a384ad7377bcbf26b0b3d (tree)
Zeit2017-06-13 03:40:00
Autorumorigu <umorigu@gmai...>
Commiterumorigu

Log Message

BugTrack/782 Numbering tracker issue naturally : the biggest one + 1

Ändern Zusammenfassung

Diff

--- a/.gitignore
+++ b/.gitignore
@@ -18,6 +18,7 @@
1818 /wiki.en/*.txt
1919
2020 /nbproject/**
21+/.vscode/
2122
2223 # Composer files
2324 /vendor/
--- a/plugin/tracker.inc.php
+++ b/plugin/tracker.inc.php
@@ -1,7 +1,7 @@
11 <?php
22 // PukiWiki - Yet another WikiWikiWeb clone
33 // tracker.inc.php
4-// Copyright 2003-2016 PukiWiki Development Team
4+// Copyright 2003-2017 PukiWiki Development Team
55 // License: GPL v2 or (at your option) any later version
66 //
77 // Issue tracker plugin (See Also bugtrack plugin)
@@ -121,26 +121,30 @@ function plugin_tracker_action()
121121 'body'=>'page name ('.htmlsc($base).') is not valid.'
122122 );
123123 }
124- $num = 0;
125124 $name = (array_key_exists('_name',$post)) ? $post['_name'] : '';
126- if (array_key_exists('_page',$post))
127- {
128- $page = $real = $post['_page'];
129- }
130- else
131- {
132- $real = is_pagename($name) ? $name : ++$num;
133- $page = get_fullname('./'.$real,$base);
134- }
135- if (!is_pagename($page))
136- {
137- $page = $base;
138- }
139-
140- while (is_page($page))
141- {
142- $real = ++$num;
143- $page = "$base/$real";
125+ $_page = (array_key_exists('_page',$post)) ? $post['_page'] : '';
126+ if (is_pagename($_page)) {
127+ // Create _page page if _page is in parameters
128+ $page = $real = $_page;
129+ } else if (is_pagename($name)) {
130+ // Create "$base/$name" page if _name is in parameters
131+ $real = $name;
132+ $page = get_fullname('./' . $name, $base);
133+ } else {
134+ $page = '';
135+ }
136+ if (!is_pagename($page) || is_page($page)) {
137+ // Need new page name => Get last article number + 1
138+ $page_list = plugin_tracker_get_page_list($base, false);
139+ usort($page_list, '_plugin_tracker_list_paganame_compare');
140+ if (count($page_list) === 0) {
141+ $num = 1;
142+ } else {
143+ $latest_page = $page_list[count($page_list) - 1]['name'];
144+ $num = intval(substr($latest_page, strlen($base) + 1)) + 1;
145+ }
146+ $real = '' . $num;
147+ $page = $base . '/' . $num;
144148 }
145149 // ページデータを生成
146150 $postdata = plugin_tracker_get_source($source);
@@ -187,6 +191,35 @@ function plugin_tracker_action()
187191 header('Location: ' . get_script_uri() . '?' . $r_page);
188192 exit;
189193 }
194+
195+/**
196+ * Page_list comparator
197+ */
198+function _plugin_tracker_list_paganame_compare($a, $b)
199+{
200+ return strnatcmp($a['name'], $b['name']);
201+}
202+
203+/**
204+ * Get page list for "$page/"
205+ */
206+function plugin_tracker_get_page_list($page, $needs_filetime) {
207+ $page_list = array();
208+ $pattern = $page . '/';
209+ $pattern_len = strlen($pattern);
210+ foreach (get_existpages() as $p) {
211+ if (strncmp($p, $pattern, $pattern_len) === 0 && pkwk_ctype_digit(substr($p, $pattern_len))) {
212+ if ($needs_filetime) {
213+ $page_list[] = array('name'=>$p,'filetime'=>get_filetime($p));
214+ } else {
215+ $page_list[] = array('name'=>$p);
216+ }
217+ }
218+ }
219+ return $page_list;
220+}
221+
222+
190223 /*
191224 function plugin_tracker_inline()
192225 {
--- a/plugin/tracker_list.inc.php
+++ b/plugin/tracker_list.inc.php
@@ -1,6 +1,8 @@
11 <?php
22 // PukiWiki - Yet another WikiWikiWeb clone
3-// $Id: tracker_list.inc.php,v 1.2 2005/01/23 08:30:14 henoheno Exp $
3+// tracker_list.inc.php
4+// Copyright 2003-2017 PukiWiki Development Team
5+// License: GPL v2 or (at your option) any later version
46 //
57 // Issue tracker list plugin (a part of tracker plugin)
68
@@ -11,4 +13,3 @@ function plugin_tracker_list_init()
1113 if (function_exists('plugin_tracker_init'))
1214 plugin_tracker_init();
1315 }
14-?>