]> source.dussan.org Git - redmine.git/commitdiff
Added the ability to destroy wiki pages (content and its history are deleted from...
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 25 May 2007 16:44:50 +0000 (16:44 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 25 May 2007 16:44:50 +0000 (16:44 +0000)
This permission has to be explicitly given (Roles & Permissions -> Wiki pages/Delete).

git-svn-id: http://redmine.rubyforge.org/svn/trunk@540 e93f8b46-1217-0410-a6f0-8f06a7374b81

16 files changed:
app/controllers/wiki_controller.rb
app/models/permission.rb
app/views/wiki/show.rhtml
db/migrate/049_add_wiki_destroy_page_permission.rb [new file with mode: 0644]
lang/bg.yml
lang/de.yml
lang/en.yml
lang/es.yml
lang/fr.yml
lang/it.yml
lang/ja.yml
lang/nl.yml
lang/pt-br.yml
lang/pt.yml
lang/zh.yml
test/unit/wiki_page_test.rb

index 9e750b3a6553f995f5d053f3d596070106f32458..f68b71eccfc20cb27cdfd2210f2430ea98d06fed 100644 (file)
 class WikiController < ApplicationController
   layout 'base'
   before_filter :find_wiki, :check_project_privacy, :except => [:preview]
-    
+  before_filter :authorize, :only => :destroy
+  
+  verify :method => :post, :only => [ :destroy ], :redirect_to => { :action => :index }
+  
   # display a page (in editing mode if it doesn't exist)
   def index
     page_title = params[:page]
@@ -72,6 +75,13 @@ class WikiController < ApplicationController
                                             :select => "id, author_id, comments, updated_on, version",
                                             :order => 'version DESC'
   end
+  
+  # remove a wiki page and its history
+  def destroy
+    @page = @wiki.find_page(params[:page])
+    @page.destroy if @page
+    redirect_to :action => 'special', :id => @project, :page => 'Page_index'
+  end
 
   # display special pages
   def special
index f78118d8691fcbe34d92610d0aed6ca9e31dc11a..bea670c4ce6fdb35ff63009cee2915e29c3e2356 100644 (file)
@@ -32,6 +32,7 @@ class Permission < ActiveRecord::Base
     1300 => :label_attachment_plural,
     1400 => :label_repository,
     1500 => :label_time_tracking,
+    1700 => :label_wiki_page_plural,
     2000 => :label_board_plural
   }.freeze
   
index a65b1a61e95fdae41d93767c7c5636cd96227722..c2deba02b87c74664c5b1d0c847a4d0e6751aeeb 100644 (file)
@@ -1,5 +1,6 @@
 <div class="contextual">
 <%= link_to(l(:button_edit), {:action => 'edit', :page => @page.title}, :class => 'icon icon-edit') if @content.version == @page.content.version %>
+<%= link_to_if_authorized(l(:button_delete), {:action => 'destroy', :page => @page.title}, :method => :post, :confirm => l(:text_are_you_sure), :class => 'icon icon-del') %>
 <%= link_to(l(:button_rollback), {:action => 'edit', :page => @page.title, :version => @content.version }, :class => 'icon icon-cancel') if @content.version < @page.content.version %>
 <%= link_to(l(:label_history), {:action => 'history', :page => @page.title}, :class => 'icon icon-history') %>
 <%= link_to(l(:label_page_index), {:action => 'special', :page => 'Page_index'}, :class => 'icon icon-index') %>
diff --git a/db/migrate/049_add_wiki_destroy_page_permission.rb b/db/migrate/049_add_wiki_destroy_page_permission.rb
new file mode 100644 (file)
index 0000000..c68370f
--- /dev/null
@@ -0,0 +1,9 @@
+class AddWikiDestroyPagePermission < ActiveRecord::Migration
+  def self.up
+    Permission.create :controller => 'wiki', :action => 'destroy', :description => 'button_delete', :sort => 1740, :is_public => false, :mail_option => 0, :mail_enabled => 0
+  end
+
+  def self.down
+    Permission.find_by_controller_and_action('wiki', 'destroy').destroy
+  end
+end
index 912074400f562f13a50a24d8a5ccdfaef0b42ff6..47ade6312317c57905521d48dfab98297fec019c 100644 (file)
@@ -346,6 +346,7 @@ label_all_words: Всички думи
 label_wiki: Wiki
 label_wiki_edit: Wiki редакция
 label_wiki_edit_plural: Wiki редакции
+label_wiki_page_plural: Wiki pages
 label_page_index: Индекс
 label_current_version: Текуща версия
 label_preview: Преглед
index b74aa5c690c02bb03a376b1044c5bb1e3b9a0622..3fc39dad591c29f9111df20bc4a4b3d5a371dcbe 100644 (file)
@@ -346,6 +346,7 @@ label_all_words: Alle Wörter
 label_wiki: Wiki
 label_wiki_edit: Wiki Bearbeitung
 label_wiki_edit_plural: Wiki Bearbeitungen
+label_wiki_page_plural: Wiki pages
 label_page_index: Index
 label_current_version: Gegenwärtige Version
 label_preview: Vorschau
index 586fc8b091e9b7740abca6e2c4f6c1d5da603372..9cc452d8f83d1df5c32fa4e30d5827c896fc30e5 100644 (file)
@@ -346,6 +346,7 @@ label_all_words: All words
 label_wiki: Wiki
 label_wiki_edit: Wiki edit
 label_wiki_edit_plural: Wiki edits
+label_wiki_page_plural: Wiki pages
 label_page_index: Index
 label_current_version: Current version
 label_preview: Preview
index 2a0b3599cacebdccea0f8e46cf900c6e6d11f140..523754c3da02b82a23be1cf39e4d35ffc6808eed 100644 (file)
@@ -346,6 +346,7 @@ label_all_words: Todas las palabras
 label_wiki: Wiki
 label_wiki_edit: Wiki edit
 label_wiki_edit_plural: Wiki edits
+label_wiki_page_plural: Wiki pages
 label_page_index: Índice
 label_current_version: Versión actual
 label_preview: Previo
index 35ec97b3643781839586c2a994aa55b0ee92f996..35812bc7fb51f356e12532745be82ceb5d0bb988 100644 (file)
@@ -346,6 +346,7 @@ label_all_words: Tous les mots
 label_wiki: Wiki
 label_wiki_edit: Révision wiki
 label_wiki_edit_plural: Révisions wiki
+label_wiki_page_plural: Pages wiki
 label_page_index: Index
 label_current_version: Version actuelle
 label_preview: Prévisualisation
index 91eaae6e3db8630f14935c437b27457a806ec986..77a12162a88344ae9b81b961a218c93c5068c2a1 100644 (file)
@@ -346,6 +346,7 @@ label_all_words: Tutte le parole
 label_wiki: Wiki
 label_wiki_edit: Modifica Wiki
 label_wiki_edit_plural: Modfiche wiki
+label_wiki_page_plural: Wiki pages
 label_page_index: Indice
 label_current_version: Versione corrente
 label_preview: Anteprima
index 2c205bee837da23603465af0791293b3d3a8e982..357777d3b4858d97ab5446d0984c74ed6fc91043 100644 (file)
@@ -347,6 +347,7 @@ label_all_words: すべての単語
 label_wiki: Wiki
 label_wiki_edit: Wiki編集
 label_wiki_edit_plural: Wiki編集
+label_wiki_page_plural: Wiki pages
 label_page_index: 索引
 label_current_version: 最新版
 label_preview: プレビュー
index c6e92df4da427fd0fe0c001c19e5e767bee3f127..8b706f013ea774064713decbe3ce17b5ef643ff0 100644 (file)
@@ -346,6 +346,7 @@ label_all_words: Alle woorden
 label_wiki: Wiki
 label_wiki_edit: Wiki edit
 label_wiki_edit_plural: Wiki edits
+label_wiki_page_plural: Wiki pages
 label_page_index: Index
 label_current_version: Huidige versie
 label_preview: Testweergave
index 0b648af0ed76aac0137453f0f9369b2cfb90e61c..f3a6caf7411683dc5cae44a8168e422df7d03a3b 100644 (file)
@@ -346,6 +346,7 @@ label_all_words: Todas as palavras
 label_wiki: Wiki\r
 label_wiki_edit: Wiki edit\r
 label_wiki_edit_plural: Wiki edits\r
+label_wiki_page_plural: Wiki pages\r
 label_page_index: Index\r
 label_current_version: Versao atual\r
 label_preview: Previa\r
index 4aa5eb6a0f301468650b3483c056139a42f0271f..231b9699249bd2a30160b0274ebe3cae670f4d5e 100644 (file)
@@ -346,6 +346,7 @@ label_all_words: Todas as palavras
 label_wiki: Wiki
 label_wiki_edit: Wiki edit
 label_wiki_edit_plural: Wiki edits
+label_wiki_page_plural: Wiki pages
 label_page_index: Index
 label_current_version: Versão atual
 label_preview: Prévia
index f71a05e0ca180dc2efc2aa5530e60aceeb42674f..8f05ec9e2cd38abcb976d4216292c9fbfbcb75f5 100644 (file)
@@ -349,6 +349,7 @@ label_all_words: 所有单词
 label_wiki: Wiki
 label_wiki_edit: Wiki edit
 label_wiki_edit_plural: Wiki edits
+label_wiki_page_plural: Wiki pages
 label_page_index: 索引
 label_current_version: 当前版本
 label_preview: 预览
index bfe8aa06fa2858e34d6814ef8e4787197b8da894..bb8111176b0e2c7d7091a121559628d0fa684532 100644 (file)
@@ -18,7 +18,7 @@
 require File.dirname(__FILE__) + '/../test_helper'
 
 class WikiPageTest < Test::Unit::TestCase
-  fixtures :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions
+  fixtures :projects, :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions
 
   def setup
     @wiki = Wiki.find(1)
@@ -47,4 +47,13 @@ class WikiPageTest < Test::Unit::TestCase
     assert_kind_of WikiPage, page
     assert page.new_record?
   end
+  
+  def test_destroy
+    page = WikiPage.find(1)
+    page.destroy
+    assert_nil WikiPage.find_by_id(1)
+    # make sure that page content and its history are deleted
+    assert WikiContent.find_all_by_page_id(1).empty?
+    assert WikiContent.versioned_class.find_all_by_page_id(1).empty?
+  end
 end