Patch #18419 » copy_news_with_project.patch
| app/models/project.rb | ||
|---|---|---|
| 743 | 743 |
def copy(project, options={})
|
| 744 | 744 |
project = project.is_a?(Project) ? project : Project.find(project) |
| 745 | 745 | |
| 746 |
to_be_copied = %w(wiki versions issue_categories issues members queries boards) |
|
| 746 |
to_be_copied = %w(wiki versions issue_categories issues members queries boards news)
|
|
| 747 | 747 |
to_be_copied = to_be_copied & Array.wrap(options[:only]) unless options[:only].nil? |
| 748 | 748 | |
| 749 | 749 |
Project.transaction do |
| ... | ... | |
| 994 | 994 |
end |
| 995 | 995 |
end |
| 996 | 996 | |
| 997 |
# Copies news from +project+ |
|
| 998 |
def copy_news(project) |
|
| 999 |
project.news.each do |news| |
|
| 1000 |
new_news = News.new |
|
| 1001 |
new_news.attributes = news.attributes.dup.except("id", "project_id", "created_on", "updated_on")
|
|
| 1002 |
self.news << new_news |
|
| 1003 |
end |
|
| 1004 |
end |
|
| 1005 | ||
| 997 | 1006 |
def allowed_permissions |
| 998 | 1007 |
@allowed_permissions ||= begin |
| 999 | 1008 |
module_names = enabled_modules.loaded? ? enabled_modules.map(&:name) : enabled_modules.pluck(:name) |
| app/views/projects/copy.html.erb | ||
|---|---|---|
| 11 | 11 |
<label class="block"><%= check_box_tag 'only[]', 'queries', true %> <%= l(:label_query_plural) %> (<%= @source_project.queries.count %>)</label> |
| 12 | 12 |
<label class="block"><%= check_box_tag 'only[]', 'boards', true %> <%= l(:label_board_plural) %> (<%= @source_project.boards.count %>)</label> |
| 13 | 13 |
<label class="block"><%= check_box_tag 'only[]', 'wiki', true %> <%= l(:label_wiki_page_plural) %> (<%= @source_project.wiki.nil? ? 0 : @source_project.wiki.pages.count %>)</label> |
| 14 |
<label class="block"><%= check_box_tag 'only[]', 'news', true %> <%= l(:label_news_plural) %> (<%= @source_project.news.nil? ? 0 : @source_project.news.count %>)</label> |
|
| 14 | 15 |
<%= hidden_field_tag 'only[]', '' %> |
| 15 | 16 |
<br /> |
| 16 | 17 |
<label class="block"><%= check_box_tag 'notifications', 1, params[:notifications] %> <%= l(:label_project_copy_notifications) %></label> |
| test/unit/project_copy_test.rb | ||
|---|---|---|
| 304 | 304 |
end |
| 305 | 305 |
end |
| 306 | 306 | |
| 307 |
test "#copy should copy news" do |
|
| 308 |
assert @project.copy(@source_project) |
|
| 309 | ||
| 310 |
assert_equal 1, @project.news.size |
|
| 311 |
@project.news.each do |news| |
|
| 312 |
assert !@source_project.news.include?(news) |
|
| 313 |
end |
|
| 314 |
end |
|
| 315 | ||
| 307 | 316 |
test "#copy should change the new issues to use the copied issue categories" do |
| 308 | 317 |
issue = Issue.find(4) |
| 309 | 318 |
issue.update_attribute(:category_id, 3) |