Redmineカスタマイズその8 Wiki雛型プルダウン追加
カスタマイズその8。*1
PukiWikiからのパクリですが、
Wikiページのひな形を読みこめる機能がありましたので
結構使えそうだーという事で似たようなパッチを当ててみました。
$RAILS_ROOT/app/views/wiki/edit.rhtml
--- redmine-0.8.0_RC1-org/app/views/wiki/edit.rhtml 2008-12-07 20:10:25.000000000 +0900 +++ redmine-0.8.0_RC1/app/views/wiki/edit.rhtml 2009-03-01 01:05:55.000000000 +0900 @@ -4,6 +4,14 @@ <%= f.hidden_field :version %> <%= error_messages_for 'content' %> +<select onchange="if (this.value != '') { window.location = this.value; }"> +<option selected="selected">-- Wiki Page Reading --</option> + <% @pages.each do |page| %> + <%= content_tag('option', h(page.title), :value => url_for(:action => 'edit', :page => page.title, :params => params.merge('selpage' => page.title)) ) %> + <% end %> +</select> + + <p><%= f.text_area :text, :cols => 100, :rows => 25, :class => 'wiki-edit', :accesskey => accesskey(:edit) %></p> <p><label><%= l(:field_comments) %></label><br /><%= f.text_field :comments, :size => 120 %></p> <p><%= submit_tag l(:button_save) %>
ページの配列を受けとって、selectタグにする処理を追加しています。
$RAILS_ROOT/app/controllers/wiki_controller.rb
--- redmine-0.8.0_RC1-org/app/controllers/wiki_controller.rb 2009-03-01 01:18:12.000000000 +0900 +++ redmine-0.8.0_RC1/app/controllers/wiki_controller.rb 2009-03-01 01:27:07.000000000 +0900 @@ -27,6 +27,7 @@ # display a page (in editing mode if it doesn't exist) def index + @sidebar_wiki= @wiki.find_page("sidebar") page_title = params[:page] @page = @wiki.find_or_new_page(page_title) if @page.new_record? @@ -58,12 +59,22 @@ # edit an existing page or a new one def edit + @pages = @wiki.pages.find :all, :select => "#{WikiPage.table_name}.*, #{WikiContent.table_name}.updated_on", + :joins => "LEFT JOIN #{WikiContent.table_name} ON #{WikiContent.table_name}.page_id = #{WikiPage.table_name}.id", + :order => 'title' @page = @wiki.find_or_new_page(params[:page]) return render_403 unless editable? @page.content = WikiContent.new(:page => @page) if @page.new_record? @content = @page.content_for_version(params[:version]) - @content.text = initial_page_content(@page) if @content.text.blank? + + if params[:selpage] + @selpage = @wiki.find_or_new_page(params[:selpage]) + @content.text = @selpage.text + else + @content.text = initial_page_content(@page) if @content.text.blank? + end + # don't keep previous comment @content.comments = nil if request.get?
@sidebar_wikiの部分は前回のパッチなので気にしないでくださいw
editファンクションでページ一覧の配列を作る処理と、
パラメータでselpage(雛型wikiページ)が渡された場合に
テキストを置き換える処理が追加されています。
イメージはこんな感じ。
wikiページの「新規時 or 編集時」に
既に作成されているwikiページの一覧プルダウンが追加されます。
雛型ページを選択すると、そのページのテキストを読み込んで表示します。
既に編集済みであった場合、内容は上書きされてしまいますのでご注意を。
*1:バージョンは0.8.0_RC1を使用しています