書いてみた
redmine デフォルトの表示。
tree view 化して第一階層だけ開く (デフォルト)
tree view 化して第二階層まで開く (js のコメントアウトをはずす)
wiki page が増えてくるとどこに何があるのか分からなくなってきて探すのが大変だし整理するのも大変。最初にページを全て表示するんじゃなくて階層化しておけばたどりやすくなるんじゃないかなぁと思って。ページ名をインクリメンタルサーチしつつツリー構造を維持するってとこまでやりたいんだけど・・・jquery のプラグイン転がってないかなぁ。
中身
たいしたことはしていないのだけど。
- redmine_wiki_index_tree_view/lib/redmine_wiki_index_tree_view.rb
module Redmine module Plugins class RedmineWikiIndexTreeViewListener < Redmine::Hook::ViewListener def view_layouts_base_html_head(context) return unless context[:controller] params = context[:controller].params return unless (params[:controller] == 'wiki' && params[:action] == 'index') tags = [stylesheet_link_tag('jquery.treeview.css', :plugin => 'redmine_wiki_index_tree_view')] tags << javascript_include_tag('jquery.treeview.js', :plugin => 'redmine_wiki_index_tree_view') tags << javascript_include_tag('redmine_wiki_index_tree_view.js', :plugin => 'redmine_wiki_index_tree_view') tags.join("\n") end end end end
- redmine_wiki_index_tree_view/assets/javascripts/redmine_wiki_index_tree_view.js
$(document).ready(function(){ $(".pages-hierarchy:first").treeview({ collapsed: true, }); $(".hitarea:first").click(); // open second hierarchy //$('.treeview:first').find('ul:first').children('li').find('.hitarea:first').click(); });
Hook を使って jquery-treeview を埋め込んで、階層をクリックしてるだけ。
ライセンス
jquery-treeview が MIT/GPL のデュアルライセンスでどうしていいのかよく分からないのだけど、MIT LICENSE にして AUTHOR.txt に記載しておいた。あってるのかこれ・・・。
まとめ
plugin 作るの楽しいなぁ。