From bda78a4679bc947dfd42ab92adfc043afd1d2f60 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Fri, 22 Apr 2016 17:47:11 +0000 Subject: Adds "New wiki page" link to create a new wiki page (#5536). git-svn-id: http://svn.redmine.org/redmine/trunk@15346 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/wiki_controller.rb | 17 ++++++++++++ app/helpers/application_helper.rb | 10 +++++-- app/views/wiki/_new_modal.html.erb | 21 ++++++++++++++ app/views/wiki/date_index.html.erb | 3 ++ app/views/wiki/index.html.erb | 3 ++ app/views/wiki/new.html.erb | 17 ++++++++++++ app/views/wiki/new.js.erb | 2 ++ app/views/wiki/show.html.erb | 3 ++ config/locales/de.yml | 1 + config/locales/en.yml | 1 + config/locales/fr.yml | 1 + config/routes.rb | 3 +- lib/redmine.rb | 2 +- test/functional/wiki_controller_test.rb | 49 +++++++++++++++++++++++++++++++++ test/integration/routing/wiki_test.rb | 3 ++ 15 files changed, 132 insertions(+), 4 deletions(-) create mode 100644 app/views/wiki/_new_modal.html.erb create mode 100644 app/views/wiki/new.html.erb create mode 100644 app/views/wiki/new.js.erb diff --git a/app/controllers/wiki_controller.rb b/app/controllers/wiki_controller.rb index 46dec485c..2f174877f 100644 --- a/app/controllers/wiki_controller.rb +++ b/app/controllers/wiki_controller.rb @@ -60,6 +60,23 @@ class WikiController < ApplicationController @pages_by_date = @pages.group_by {|p| p.updated_on.to_date} end + def new + @page = WikiPage.new(:wiki => @wiki, :title => params[:title]) + unless User.current.allowed_to?(:edit_wiki_pages, @project) && editable? + render_403 + end + if request.post? + @page.validate + if @page.errors[:title].blank? + path = project_wiki_page_path(@project, @page.title) + respond_to do |format| + format.html { redirect_to path } + format.js { render :js => "window.location = #{path.to_json}" } + end + end + end + end + # display a page (in editing mode if it doesn't exist) def show if params[:version] && !User.current.allowed_to?(:view_wiki_edits, @project) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 7edfbd534..7cdf5061a 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1057,11 +1057,17 @@ module ApplicationHelper fields_for(*args, &proc) end + # Render the error messages for the given objects def error_messages_for(*objects) - html = "" objects = objects.map {|o| o.is_a?(String) ? instance_variable_get("@#{o}") : o}.compact errors = objects.map {|o| o.errors.full_messages}.flatten - if errors.any? + render_error_messages(errors) + end + + # Renders a list of error messages + def render_error_messages(errors) + html = "" + if errors.present? html << "