From ff68fff80ed1cc9f95587581be9eb641d7a776e5 2012-07-18 17:47:19 From: Jean-Philippe Lang Date: 2012-07-18 17:47:19 Subject: [PATCH] Adds a helper for preview links. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10031 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index d118e04..a9dcf25 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -995,6 +995,14 @@ module ApplicationHelper link_to l(:button_delete), url, options end + def preview_link(url, form, target='preview', options={}) + content_tag 'a', l(:label_preview), { + :href => "#", + :onclick => %|submitPreview("#{escape_javascript url_for(url)}", "#{escape_javascript form}", "#{escape_javascript target}"); return false;|, + :accesskey => accesskey(:preview) + }.merge(options) + end + def back_url_hidden_field_tag back_url = params[:back_url] || request.env['HTTP_REFERER'] back_url = CGI.unescape(back_url.to_s) diff --git a/app/views/boards/show.html.erb b/app/views/boards/show.html.erb index 523dfea..3d31014 100644 --- a/app/views/boards/show.html.erb +++ b/app/views/boards/show.html.erb @@ -14,13 +14,7 @@ <%= form_for @message, :url => {:controller => 'messages', :action => 'new', :board_id => @board}, :html => {:multipart => true, :id => 'message-form'} do |f| %> <%= render :partial => 'messages/form', :locals => {:f => f} %>

<%= submit_tag l(:button_create) %> - <%= link_to_remote l(:label_preview), - { :url => { :controller => 'messages', :action => 'preview', :board_id => @board }, - :method => 'post', - :update => 'preview', - :with => "Form.serialize('message-form')", - :complete => "Element.scrollTo('preview')" - }, :accesskey => accesskey(:preview) %> | + <%= preview_link({:controller => 'messages', :action => 'preview', :board_id => @board}, 'message-form') %> | <%= link_to l(:button_cancel), "#", :onclick => 'Element.hide("add-message")' %>

<% end %>
diff --git a/app/views/issues/_edit.html.erb b/app/views/issues/_edit.html.erb index b5ddfac..5b5f53a 100644 --- a/app/views/issues/_edit.html.erb +++ b/app/views/issues/_edit.html.erb @@ -38,13 +38,7 @@ <%= f.hidden_field :lock_version %> <%= hidden_field_tag 'last_journal_id', params[:last_journal_id] || @issue.last_journal_id %> <%= submit_tag l(:button_submit) %> - <%= link_to_remote l(:label_preview), - { :url => preview_edit_issue_path(:project_id => @project, :id => @issue), - :method => 'post', - :update => 'preview', - :with => 'Form.serialize("issue-form")', - :complete => "Element.scrollTo('preview')" - }, :accesskey => accesskey(:preview) %> + <%= preview_link preview_edit_issue_path(:project_id => @project, :id => @issue), 'issue-form' %> <% end %>
diff --git a/app/views/issues/new.html.erb b/app/views/issues/new.html.erb index 4e84495..fe07dbd 100644 --- a/app/views/issues/new.html.erb +++ b/app/views/issues/new.html.erb @@ -36,13 +36,7 @@ <%= submit_tag l(:button_create) %> <%= submit_tag l(:button_create_and_continue), :name => 'continue' %> - <%= link_to_remote l(:label_preview), - { :url => preview_new_issue_path(:project_id => @project), - :method => 'post', - :update => 'preview', - :with => "Form.serialize('issue-form')", - :complete => "Element.scrollTo('preview')" - }, :accesskey => accesskey(:preview) %> + <%= preview_link preview_new_issue_path(:project_id => @project), 'issue-form' %> <%= javascript_tag "Form.Element.focus('issue_subject');" %> <% end %> diff --git a/app/views/journals/_notes_form.html.erb b/app/views/journals/_notes_form.html.erb index f451dbb..f039b47 100644 --- a/app/views/journals/_notes_form.html.erb +++ b/app/views/journals/_notes_form.html.erb @@ -6,14 +6,9 @@ :rows => (@journal.notes.blank? ? 10 : [[10, @journal.notes.length / 50].max, 100].min) %> <%= call_hook(:view_journals_notes_form_after_notes, { :journal => @journal}) %>

<%= submit_tag l(:button_save) %> - <%= link_to_remote l(:label_preview), - { :url => preview_edit_issue_path(:project_id => @project, :id => @journal.issue), - :method => 'post', - :update => "journal_#{@journal.id}_preview", - :with => "Form.serialize('journal-#{@journal.id}-form')", - :complete => "Element.scrollTo('journal_#{@journal.id}_preview')" - }, :accesskey => accesskey(:preview) %> - | + <%= preview_link preview_edit_issue_path(:project_id => @project, :id => @journal.issue), + "journal-#{@journal.id}-form", + "journal_#{@journal.id}_preview" %> | <%= link_to l(:button_cancel), '#', :onclick => "Element.remove('journal-#{@journal.id}-form'); " + "Element.show('journal-#{@journal.id}-notes'); return false;" %>

diff --git a/app/views/messages/edit.html.erb b/app/views/messages/edit.html.erb index 362f1b6..e08d7a2 100644 --- a/app/views/messages/edit.html.erb +++ b/app/views/messages/edit.html.erb @@ -12,14 +12,7 @@ <%= render :partial => 'form', :locals => {:f => f, :replying => !@message.parent.nil?} %> <%= submit_tag l(:button_save) %> - <%= link_to_remote l(:label_preview), - { :url => { :controller => 'messages', - :action => 'preview', :board_id => @board, :id => @message }, - :method => 'post', - :update => 'preview', - :with => "Form.serialize('message-form')", - :complete => "Element.scrollTo('preview')" - }, :accesskey => accesskey(:preview) %> + <%= preview_link({:controller => 'messages', :action => 'preview', :board_id => @board, :id => @message}, 'message-form') %> <% end %>
diff --git a/app/views/messages/new.html.erb b/app/views/messages/new.html.erb index f1dddb6..fbdac69 100644 --- a/app/views/messages/new.html.erb +++ b/app/views/messages/new.html.erb @@ -3,13 +3,7 @@ <%= form_for @message, :url => {:action => 'new'}, :html => {:multipart => true, :id => 'message-form'} do |f| %> <%= render :partial => 'form', :locals => {:f => f} %> <%= submit_tag l(:button_create) %> - <%= link_to_remote l(:label_preview), - { :url => { :controller => 'messages', :action => 'preview', :board_id => @board }, - :method => 'post', - :update => 'preview', - :with => "Form.serialize('message-form')", - :complete => "Element.scrollTo('preview')" - }, :accesskey => accesskey(:preview) %> + <%= preview_link({:controller => 'messages', :action => 'preview', :board_id => @board}, 'message-form') %> <% end %>
diff --git a/app/views/messages/show.html.erb b/app/views/messages/show.html.erb index 639dc2e..831d3ec 100644 --- a/app/views/messages/show.html.erb +++ b/app/views/messages/show.html.erb @@ -75,13 +75,7 @@ <%= form_for @reply, :as => :reply, :url => {:action => 'reply', :id => @topic}, :html => {:multipart => true, :id => 'message-form'} do |f| %> <%= render :partial => 'form', :locals => {:f => f, :replying => true} %> <%= submit_tag l(:button_submit) %> - <%= link_to_remote l(:label_preview), - { :url => { :controller => 'messages', :action => 'preview', :board_id => @board }, - :method => 'post', - :update => 'preview', - :with => "Form.serialize('message-form')", - :complete => "Element.scrollTo('preview')" - }, :accesskey => accesskey(:preview) %> + <%= preview_link({:controller => 'messages', :action => 'preview', :board_id => @board}, 'message-form') %> <% end %>
diff --git a/app/views/news/edit.html.erb b/app/views/news/edit.html.erb index 5dd43c3..499451b 100644 --- a/app/views/news/edit.html.erb +++ b/app/views/news/edit.html.erb @@ -3,12 +3,7 @@ <%= labelled_form_for @news, :html => { :id => 'news-form', :multipart => true, :method => :put } do |f| %> <%= render :partial => 'form', :locals => { :f => f } %> <%= submit_tag l(:button_save) %> -<%= link_to_remote l(:label_preview), - { :url => preview_news_path(:project_id => @project), - :method => 'get', - :update => 'preview', - :with => "Form.serialize('news-form')" - }, :accesskey => accesskey(:preview) %> +<%= preview_link preview_news_path(:project_id => @project), 'news-form' %> <% end %>
diff --git a/app/views/news/index.html.erb b/app/views/news/index.html.erb index b354adc..e62cce4 100644 --- a/app/views/news/index.html.erb +++ b/app/views/news/index.html.erb @@ -11,12 +11,7 @@ :html => { :id => 'news-form', :multipart => true } do |f| %> <%= render :partial => 'news/form', :locals => { :f => f } %> <%= submit_tag l(:button_create) %> -<%= link_to_remote l(:label_preview), - { :url => preview_news_path(:project_id => @project), - :method => 'get', - :update => 'preview', - :with => "Form.serialize('news-form')" - }, :accesskey => accesskey(:preview) %> | +<%= preview_link preview_news_path(:project_id => @project), 'news-form' %> | <%= link_to l(:button_cancel), "#", :onclick => 'Element.hide("add-news")' %> <% end if @project %>
diff --git a/app/views/news/new.html.erb b/app/views/news/new.html.erb index 95a9024..f96dd5c 100644 --- a/app/views/news/new.html.erb +++ b/app/views/news/new.html.erb @@ -4,11 +4,6 @@ :html => { :id => 'news-form', :multipart => true } do |f| %> <%= render :partial => 'news/form', :locals => { :f => f } %> <%= submit_tag l(:button_create) %> - <%= link_to_remote l(:label_preview), - { :url => preview_news_path(:project_id => @project), - :method => 'get', - :update => 'preview', - :with => "Form.serialize('news-form')" - }, :accesskey => accesskey(:preview) %> + <%= preview_link preview_news_path(:project_id => @project), 'news-form' %> <% end %>
diff --git a/app/views/news/show.html.erb b/app/views/news/show.html.erb index fba6183..51a896e 100644 --- a/app/views/news/show.html.erb +++ b/app/views/news/show.html.erb @@ -16,12 +16,7 @@ :html => { :id => 'news-form', :multipart => true, :method => :put } do |f| %> <%= render :partial => 'form', :locals => { :f => f } %> <%= submit_tag l(:button_save) %> -<%= link_to_remote l(:label_preview), - { :url => preview_news_path(:project_id => @project), - :method => 'get', - :update => 'preview', - :with => "Form.serialize('news-form')" - }, :accesskey => accesskey(:preview) %> | +<%= preview_link preview_news_path(:project_id => @project), 'news-form' %> | <%= link_to l(:button_cancel), "#", :onclick => 'Element.hide("edit-news"); return false;' %> <% end %>
diff --git a/app/views/wiki/edit.html.erb b/app/views/wiki/edit.html.erb index 0d4da7e..db9d1c2 100644 --- a/app/views/wiki/edit.html.erb +++ b/app/views/wiki/edit.html.erb @@ -33,14 +33,7 @@

<%= submit_tag l(:button_save) %> - <%= link_to_remote l(:label_preview), - { :url => { :controller => 'wiki', :action => 'preview', - :project_id => @project, :id => @page.title }, - :method => :post, - :update => 'preview', - :with => "Form.serialize('wiki_form')", - :complete => "Element.scrollTo('preview')" - }, :accesskey => accesskey(:preview) %>

+ <%= preview_link({:controller => 'wiki', :action => 'preview', :project_id => @project, :id => @page.title }, 'wiki_form') %>

<%= wikitoolbar_for 'content_text' %> <% end %> diff --git a/public/javascripts/application.js b/public/javascripts/application.js index 29c34c4..c09dc53 100644 --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -337,6 +337,16 @@ function hideModal(el) { } } +function submitPreview(url, form, target) { + new Ajax.Updater(target, url, { + asynchronous:true, + evalScripts:true, + method:'post', + onComplete:function(request){Element.scrollTo(target)}, + parameters:Form.serialize(form) + }); +} + function collapseScmEntry(id) { var els = document.getElementsByClassName(id, 'browser'); for (var i = 0; i < els.length; i++) {