##// END OF EJS Templates
Added the ability to destroy wiki pages (content and its history are deleted from the database)....
Jean-Philippe Lang -
r537:6446c312beab
parent child
Show More
@@ -0,0 +1,9
1 class AddWikiDestroyPagePermission < ActiveRecord::Migration
2 def self.up
3 Permission.create :controller => 'wiki', :action => 'destroy', :description => 'button_delete', :sort => 1740, :is_public => false, :mail_option => 0, :mail_enabled => 0
4 end
5
6 def self.down
7 Permission.find_by_controller_and_action('wiki', 'destroy').destroy
8 end
9 end
@@ -18,7 +18,10
18 class WikiController < ApplicationController
18 class WikiController < ApplicationController
19 layout 'base'
19 layout 'base'
20 before_filter :find_wiki, :check_project_privacy, :except => [:preview]
20 before_filter :find_wiki, :check_project_privacy, :except => [:preview]
21
21 before_filter :authorize, :only => :destroy
22
23 verify :method => :post, :only => [ :destroy ], :redirect_to => { :action => :index }
24
22 # display a page (in editing mode if it doesn't exist)
25 # display a page (in editing mode if it doesn't exist)
23 def index
26 def index
24 page_title = params[:page]
27 page_title = params[:page]
@@ -72,6 +75,13 class WikiController < ApplicationController
72 :select => "id, author_id, comments, updated_on, version",
75 :select => "id, author_id, comments, updated_on, version",
73 :order => 'version DESC'
76 :order => 'version DESC'
74 end
77 end
78
79 # remove a wiki page and its history
80 def destroy
81 @page = @wiki.find_page(params[:page])
82 @page.destroy if @page
83 redirect_to :action => 'special', :id => @project, :page => 'Page_index'
84 end
75
85
76 # display special pages
86 # display special pages
77 def special
87 def special
@@ -32,6 +32,7 class Permission < ActiveRecord::Base
32 1300 => :label_attachment_plural,
32 1300 => :label_attachment_plural,
33 1400 => :label_repository,
33 1400 => :label_repository,
34 1500 => :label_time_tracking,
34 1500 => :label_time_tracking,
35 1700 => :label_wiki_page_plural,
35 2000 => :label_board_plural
36 2000 => :label_board_plural
36 }.freeze
37 }.freeze
37
38
@@ -1,5 +1,6
1 <div class="contextual">
1 <div class="contextual">
2 <%= link_to(l(:button_edit), {:action => 'edit', :page => @page.title}, :class => 'icon icon-edit') if @content.version == @page.content.version %>
2 <%= link_to(l(:button_edit), {:action => 'edit', :page => @page.title}, :class => 'icon icon-edit') if @content.version == @page.content.version %>
3 <%= link_to_if_authorized(l(:button_delete), {:action => 'destroy', :page => @page.title}, :method => :post, :confirm => l(:text_are_you_sure), :class => 'icon icon-del') %>
3 <%= link_to(l(:button_rollback), {:action => 'edit', :page => @page.title, :version => @content.version }, :class => 'icon icon-cancel') if @content.version < @page.content.version %>
4 <%= link_to(l(:button_rollback), {:action => 'edit', :page => @page.title, :version => @content.version }, :class => 'icon icon-cancel') if @content.version < @page.content.version %>
4 <%= link_to(l(:label_history), {:action => 'history', :page => @page.title}, :class => 'icon icon-history') %>
5 <%= link_to(l(:label_history), {:action => 'history', :page => @page.title}, :class => 'icon icon-history') %>
5 <%= link_to(l(:label_page_index), {:action => 'special', :page => 'Page_index'}, :class => 'icon icon-index') %>
6 <%= link_to(l(:label_page_index), {:action => 'special', :page => 'Page_index'}, :class => 'icon icon-index') %>
@@ -346,6 +346,7 label_all_words: Всички думи
346 label_wiki: Wiki
346 label_wiki: Wiki
347 label_wiki_edit: Wiki редакция
347 label_wiki_edit: Wiki редакция
348 label_wiki_edit_plural: Wiki редакции
348 label_wiki_edit_plural: Wiki редакции
349 label_wiki_page_plural: Wiki pages
349 label_page_index: Индекс
350 label_page_index: Индекс
350 label_current_version: Текуща версия
351 label_current_version: Текуща версия
351 label_preview: Преглед
352 label_preview: Преглед
@@ -346,6 +346,7 label_all_words: Alle Wörter
346 label_wiki: Wiki
346 label_wiki: Wiki
347 label_wiki_edit: Wiki Bearbeitung
347 label_wiki_edit: Wiki Bearbeitung
348 label_wiki_edit_plural: Wiki Bearbeitungen
348 label_wiki_edit_plural: Wiki Bearbeitungen
349 label_wiki_page_plural: Wiki pages
349 label_page_index: Index
350 label_page_index: Index
350 label_current_version: Gegenwärtige Version
351 label_current_version: Gegenwärtige Version
351 label_preview: Vorschau
352 label_preview: Vorschau
@@ -346,6 +346,7 label_all_words: All words
346 label_wiki: Wiki
346 label_wiki: Wiki
347 label_wiki_edit: Wiki edit
347 label_wiki_edit: Wiki edit
348 label_wiki_edit_plural: Wiki edits
348 label_wiki_edit_plural: Wiki edits
349 label_wiki_page_plural: Wiki pages
349 label_page_index: Index
350 label_page_index: Index
350 label_current_version: Current version
351 label_current_version: Current version
351 label_preview: Preview
352 label_preview: Preview
@@ -346,6 +346,7 label_all_words: Todas las palabras
346 label_wiki: Wiki
346 label_wiki: Wiki
347 label_wiki_edit: Wiki edit
347 label_wiki_edit: Wiki edit
348 label_wiki_edit_plural: Wiki edits
348 label_wiki_edit_plural: Wiki edits
349 label_wiki_page_plural: Wiki pages
349 label_page_index: Índice
350 label_page_index: Índice
350 label_current_version: Versión actual
351 label_current_version: Versión actual
351 label_preview: Previo
352 label_preview: Previo
@@ -346,6 +346,7 label_all_words: Tous les mots
346 label_wiki: Wiki
346 label_wiki: Wiki
347 label_wiki_edit: Révision wiki
347 label_wiki_edit: Révision wiki
348 label_wiki_edit_plural: Révisions wiki
348 label_wiki_edit_plural: Révisions wiki
349 label_wiki_page_plural: Pages wiki
349 label_page_index: Index
350 label_page_index: Index
350 label_current_version: Version actuelle
351 label_current_version: Version actuelle
351 label_preview: Prévisualisation
352 label_preview: Prévisualisation
@@ -346,6 +346,7 label_all_words: Tutte le parole
346 label_wiki: Wiki
346 label_wiki: Wiki
347 label_wiki_edit: Modifica Wiki
347 label_wiki_edit: Modifica Wiki
348 label_wiki_edit_plural: Modfiche wiki
348 label_wiki_edit_plural: Modfiche wiki
349 label_wiki_page_plural: Wiki pages
349 label_page_index: Indice
350 label_page_index: Indice
350 label_current_version: Versione corrente
351 label_current_version: Versione corrente
351 label_preview: Anteprima
352 label_preview: Anteprima
@@ -347,6 +347,7 label_all_words: すべての単語
347 label_wiki: Wiki
347 label_wiki: Wiki
348 label_wiki_edit: Wiki編集
348 label_wiki_edit: Wiki編集
349 label_wiki_edit_plural: Wiki編集
349 label_wiki_edit_plural: Wiki編集
350 label_wiki_page_plural: Wiki pages
350 label_page_index: 索引
351 label_page_index: 索引
351 label_current_version: 最新版
352 label_current_version: 最新版
352 label_preview: プレビュー
353 label_preview: プレビュー
@@ -346,6 +346,7 label_all_words: Alle woorden
346 label_wiki: Wiki
346 label_wiki: Wiki
347 label_wiki_edit: Wiki edit
347 label_wiki_edit: Wiki edit
348 label_wiki_edit_plural: Wiki edits
348 label_wiki_edit_plural: Wiki edits
349 label_wiki_page_plural: Wiki pages
349 label_page_index: Index
350 label_page_index: Index
350 label_current_version: Huidige versie
351 label_current_version: Huidige versie
351 label_preview: Testweergave
352 label_preview: Testweergave
@@ -346,6 +346,7 label_all_words: Todas as palavras
346 label_wiki: Wiki
346 label_wiki: Wiki
347 label_wiki_edit: Wiki edit
347 label_wiki_edit: Wiki edit
348 label_wiki_edit_plural: Wiki edits
348 label_wiki_edit_plural: Wiki edits
349 label_wiki_page_plural: Wiki pages
349 label_page_index: Index
350 label_page_index: Index
350 label_current_version: Versao atual
351 label_current_version: Versao atual
351 label_preview: Previa
352 label_preview: Previa
@@ -346,6 +346,7 label_all_words: Todas as palavras
346 label_wiki: Wiki
346 label_wiki: Wiki
347 label_wiki_edit: Wiki edit
347 label_wiki_edit: Wiki edit
348 label_wiki_edit_plural: Wiki edits
348 label_wiki_edit_plural: Wiki edits
349 label_wiki_page_plural: Wiki pages
349 label_page_index: Index
350 label_page_index: Index
350 label_current_version: Versão atual
351 label_current_version: Versão atual
351 label_preview: Prévia
352 label_preview: Prévia
@@ -349,6 +349,7 label_all_words: 所有单词
349 label_wiki: Wiki
349 label_wiki: Wiki
350 label_wiki_edit: Wiki edit
350 label_wiki_edit: Wiki edit
351 label_wiki_edit_plural: Wiki edits
351 label_wiki_edit_plural: Wiki edits
352 label_wiki_page_plural: Wiki pages
352 label_page_index: 索引
353 label_page_index: 索引
353 label_current_version: 当前版本
354 label_current_version: 当前版本
354 label_preview: 预览
355 label_preview: 预览
@@ -18,7 +18,7
18 require File.dirname(__FILE__) + '/../test_helper'
18 require File.dirname(__FILE__) + '/../test_helper'
19
19
20 class WikiPageTest < Test::Unit::TestCase
20 class WikiPageTest < Test::Unit::TestCase
21 fixtures :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions
21 fixtures :projects, :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions
22
22
23 def setup
23 def setup
24 @wiki = Wiki.find(1)
24 @wiki = Wiki.find(1)
@@ -47,4 +47,13 class WikiPageTest < Test::Unit::TestCase
47 assert_kind_of WikiPage, page
47 assert_kind_of WikiPage, page
48 assert page.new_record?
48 assert page.new_record?
49 end
49 end
50
51 def test_destroy
52 page = WikiPage.find(1)
53 page.destroy
54 assert_nil WikiPage.find_by_id(1)
55 # make sure that page content and its history are deleted
56 assert WikiContent.find_all_by_page_id(1).empty?
57 assert WikiContent.versioned_class.find_all_by_page_id(1).empty?
58 end
50 end
59 end
General Comments 0
You need to be logged in to leave comments. Login now