]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - doc/bugs/inline_sort-by-title_issues.mdwn
related ideas
[git.ikiwiki.info.git] / doc / bugs / inline_sort-by-title_issues.mdwn
index 38063d6a384bab51d626242a966c6853e19f4f15..ff45550673ba99cb2d41c4354b62adb614747e68 100644 (file)
@@ -15,4 +15,43 @@ which appears to list `unixauth` before `creole`.
 
 I'm not sure what the best fix is.  One fix would be to add another sort option, `sort="path"`, that would use the current (broken) sort by title.  Then add a true `sort="title"` that actually sorts on the title.  It might also be interesting to modify the sort=path to actually list the full path in the links - that way it would be obvious how it is sorted.  Or you could ignore the idea for `sort="path"`, and tell people to use [[plugins/map]] for that.
 
 
 I'm not sure what the best fix is.  One fix would be to add another sort option, `sort="path"`, that would use the current (broken) sort by title.  Then add a true `sort="title"` that actually sorts on the title.  It might also be interesting to modify the sort=path to actually list the full path in the links - that way it would be obvious how it is sorted.  Or you could ignore the idea for `sort="path"`, and tell people to use [[plugins/map]] for that.
 
---Will
+--[[users/Will]]
+
+And here is a [[patch]] for this.  It makes `sort=title` actually sort on the title, and adds `sort=path` if you really want to sort on the path.  `sort=path` still only displays titles.  Just use map if you want more.
+
+    diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm
+    index 9c336e7..99f6de3 100644
+    --- a/IkiWiki/Plugin/inline.pm
+    +++ b/IkiWiki/Plugin/inline.pm
+    @@ -185,9 +185,12 @@ sub preprocess_inline (@) {
+               }
+       }
+     
+    -  if (exists $params{sort} && $params{sort} eq 'title') {
+    +  if (exists $params{sort} && $params{sort} eq 'path') {
+               @list=sort @list;
+       }
+    +  elsif (exists $params{sort} && $params{sort} eq 'title') {
+    +          @list=sort { lc(pagetitle(basename($a))) cmp lc(pagetitle(basename($b))) } @list;
+    +  }
+       elsif (exists $params{sort} && $params{sort} eq 'mtime') {
+               @list=sort { $pagemtime{$b} <=> $pagemtime{$a} } @list;
+       }
+    diff --git a/doc/ikiwiki/blog.mdwn b/doc/ikiwiki/blog.mdwn
+    index 19ec7ac..7608628 100644
+    --- a/doc/ikiwiki/blog.mdwn
+    +++ b/doc/ikiwiki/blog.mdwn
+    @@ -89,7 +89,8 @@ Here are some less often needed parameters:
+       inlining page.
+     * `sort` - Controls how inlined pages are sorted. The default, "age" is to
+       sort newest created pages first. Setting it to "title" will sort pages by
+    -  title, and "mtime" sorts most recently modified pages first.
+    +  title, "path" sorts by the path to the page, and "mtime" sorts most
+    +  recently modified pages first.
+     * `reverse` - If set to "yes", causes the sort order to be reversed.
+     * `feedshow` - Specify the maximum number of matching pages to include in
+       the rss/atom feeds. The default is the same as the `show` value above.
+
+> Thanks for the patch. [[done]], but I left off the sort=path. Also left
+> off the lc (if you ask your locale to sort case-sensatively, it should, I
+> think). --[[Joey]]