Skip to content
This repository has been archived by the owner on Mar 29, 2018. It is now read-only.

Commit

Permalink
ProjectsController#add_news moved to NewsController#new.
Browse files Browse the repository at this point in the history
Preview added when adding/editing a news (#590).

git-svn-id: http://redmine.rubyforge.org/svn/trunk@1111 e93f8b46-1217-0410-a6f0-8f06a7374b81
  • Loading branch information
jplang committed Feb 3, 2008
1 parent b124501 commit 1ecef3a
Show file tree
Hide file tree
Showing 9 changed files with 82 additions and 27 deletions.
29 changes: 27 additions & 2 deletions app/controllers/news_controller.rb
Expand Up @@ -17,7 +17,9 @@

class NewsController < ApplicationController
layout 'base'
before_filter :find_project, :authorize, :except => :index
before_filter :find_news, :except => [:new, :index, :preview]
before_filter :find_project, :only => :new
before_filter :authorize, :except => [:index, :preview]
before_filter :find_optional_project, :only => :index
accept_key_auth :index

Expand All @@ -36,6 +38,18 @@ def index
def show
end

def new
@news = News.new(:project => @project, :author => User.current)
if request.post?
@news.attributes = params[:news]
if @news.save
flash[:notice] = l(:notice_successful_create)
Mailer.deliver_news_added(@news) if Setting.notified_events.include?('news_added')
redirect_to :controller => 'news', :action => 'index', :project_id => @project
end
end
end

def edit
if request.post? and @news.update_attributes(params[:news])
flash[:notice] = l(:notice_successful_update)
Expand Down Expand Up @@ -64,14 +78,25 @@ def destroy
redirect_to :action => 'index', :project_id => @project
end

def preview
@text = (params[:news] ? params[:news][:description] : nil)
render :partial => 'common/preview'
end

private
def find_project
def find_news
@news = News.find(params[:id])
@project = @news.project
rescue ActiveRecord::RecordNotFound
render_404
end

def find_project
@project = Project.find(params[:project_id])
rescue ActiveRecord::RecordNotFound
render_404
end

def find_optional_project
return true unless params[:project_id]
@project = Project.find(params[:project_id])
Expand Down
13 changes: 0 additions & 13 deletions app/controllers/projects_controller.rb
Expand Up @@ -259,19 +259,6 @@ def move_issues
render :layout => false if request.xhr?
end

# Add a news to @project
def add_news
@news = News.new(:project => @project, :author => User.current)
if request.post?
@news.attributes = params[:news]
if @news.save
flash[:notice] = l(:notice_successful_create)
Mailer.deliver_news_added(@news) if Setting.notified_events.include?('news_added')
redirect_to :controller => 'news', :action => 'index', :project_id => @project
end
end
end

def add_file
if request.post?
@version = @project.versions.find_by_id(params[:version_id])
Expand Down
12 changes: 10 additions & 2 deletions app/views/news/edit.rhtml
@@ -1,6 +1,14 @@
<h2><%=l(:label_news)%></h2>

<% labelled_tabular_form_for :news, @news, :url => { :action => "edit" } do |f| %>
<% labelled_tabular_form_for :news, @news, :url => { :action => "edit" },
:html => { :id => 'news-form' } do |f| %>
<%= render :partial => 'form', :locals => { :f => f } %>
<%= submit_tag l(:button_save) %>
<% end %>
<%= link_to_remote l(:label_preview),
{ :url => { :controller => 'news', :action => 'preview' },
:method => 'post',
:update => 'preview',
:with => "Form.serialize('news-form')"
}, :accesskey => accesskey(:preview) %>
<% end %>
<div id="preview" class="wiki"></div>
12 changes: 10 additions & 2 deletions app/views/news/index.rhtml
@@ -1,17 +1,25 @@
<div class="contextual">
<%= link_to_if_authorized(l(:label_news_new),
{:controller => 'projects', :action => 'add_news', :id => @project},
{:controller => 'news', :action => 'new', :project_id => @project},
:class => 'icon icon-add',
:onclick => 'Element.show("add-news"); return false;') if @project %>
</div>

<div id="add-news" style="display:none;">
<h2><%=l(:label_news_new)%></h2>
<% labelled_tabular_form_for :news, @news, :url => { :controller => 'projects', :action => "add_news", :id => @project } do |f| %>
<% labelled_tabular_form_for :news, @news, :url => { :controller => 'news', :action => 'new', :project_id => @project },
:html => { :id => 'news-form' } do |f| %>
<%= render :partial => 'news/form', :locals => { :f => f } %>
<%= submit_tag l(:button_create) %>
<%= link_to_remote l(:label_preview),
{ :url => { :controller => 'news', :action => 'preview' },
:method => 'post',
:update => 'preview',
:with => "Form.serialize('news-form')"
}, :accesskey => accesskey(:preview) %> |
<%= link_to l(:button_cancel), "#", :onclick => 'Element.hide("add-news")' %>
<% end if @project %>
<div id="preview" class="wiki"></div>
</div>

<h2><%=l(:label_news_plural)%></h2>
Expand Down
14 changes: 14 additions & 0 deletions app/views/news/new.rhtml
@@ -0,0 +1,14 @@
<h2><%=l(:label_news_new)%></h2>

<% labelled_tabular_form_for :news, @news, :url => { :controller => 'news', :action => 'new', :project_id => @project },
:html => { :id => 'news-form' } do |f| %>
<%= render :partial => 'news/form', :locals => { :f => f } %>
<%= submit_tag l(:button_create) %>
<%= link_to_remote l(:label_preview),
{ :url => { :controller => 'news', :action => 'preview' },
:method => 'post',
:update => 'preview',
:with => "Form.serialize('news-form')"
}, :accesskey => accesskey(:preview) %>
<% end %>
<div id="preview" class="wiki"></div>
10 changes: 9 additions & 1 deletion app/views/news/show.rhtml
Expand Up @@ -10,11 +10,19 @@
<h2><%=h @news.title %></h2>

<div id="edit-news" style="display:none;">
<% labelled_tabular_form_for :news, @news, :url => { :action => "edit", :id => @news } do |f| %>
<% labelled_tabular_form_for :news, @news, :url => { :action => "edit", :id => @news },
:html => { :id => 'news-form' } do |f| %>
<%= render :partial => 'form', :locals => { :f => f } %>
<%= submit_tag l(:button_save) %>
<%= link_to_remote l(:label_preview),
{ :url => { :controller => 'news', :action => 'preview' },
:method => 'post',
:update => 'preview',
:with => "Form.serialize('news-form')"
}, :accesskey => accesskey(:preview) %> |
<%= link_to l(:button_cancel), "#", :onclick => 'Element.hide("edit-news")' %>
<% end %>
<div id="preview" class="wiki"></div>
</div>

<p><em><% unless @news.summary.empty? %><%=h @news.summary %><br /><% end %>
Expand Down
6 changes: 0 additions & 6 deletions app/views/projects/add_news.rhtml

This file was deleted.

2 changes: 1 addition & 1 deletion lib/redmine.rb
Expand Up @@ -51,7 +51,7 @@
end

map.project_module :news do |map|
map.permission :manage_news, {:projects => :add_news, :news => [:edit, :destroy, :destroy_comment]}, :require => :member
map.permission :manage_news, {:news => [:new, :edit, :destroy, :destroy_comment]}, :require => :member
map.permission :view_news, {:news => [:index, :show]}, :public => true
map.permission :comment_news, {:news => :add_comment}
end
Expand Down
11 changes: 11 additions & 0 deletions test/functional/news_controller_test.rb
Expand Up @@ -45,4 +45,15 @@ def test_index_with_project
assert_template 'index'
assert_not_nil assigns(:newss)
end

def test_preview
get :preview, :project_id => 1,
:news => {:title => '',
:description => 'News description',
:summary => ''}
assert_response :success
assert_template 'common/_preview'
assert_tag :tag => 'fieldset', :attributes => { :class => 'preview' },
:content => /News description/
end
end

0 comments on commit 1ecef3a

Please sign in to comment.