diff --git a/app/controllers/wiki_controller.rb b/app/controllers/wiki_controller.rb index 782f939d641629163d2b59629d3d2858281a3178..97e1531c0604deb2b0b1d3dc9fc0e5c09e83546f 100644 --- a/app/controllers/wiki_controller.rb +++ b/app/controllers/wiki_controller.rb @@ -47,15 +47,17 @@ class WikiController < ApplicationController return end @content = @page.content_for_version(params[:version]) - if params[:format] == 'html' - export = render_to_string :action => 'export', :layout => false - send_data(export, :type => 'text/html', :filename => "#{@page.title}.html") - return - elsif params[:format] == 'txt' - send_data(@content.text, :type => 'text/plain', :filename => "#{@page.title}.txt") - return + if User.current.allowed_to?(:export_wiki_pages, @project) + if params[:format] == 'html' + export = render_to_string :action => 'export', :layout => false + send_data(export, :type => 'text/html', :filename => "#{@page.title}.html") + return + elsif params[:format] == 'txt' + send_data(@content.text, :type => 'text/plain', :filename => "#{@page.title}.txt") + return + end end - @editable = editable? + @editable = editable? render :action => 'show' end @@ -177,9 +179,13 @@ class WikiController < ApplicationController @pages_by_parent_id = @pages.group_by(&:parent_id) # export wiki to a single html file when 'export' - @pages = @wiki.pages.find :all, :order => 'title' - export = render_to_string :action => 'export_multiple', :layout => false - send_data(export, :type => 'text/html', :filename => "wiki.html") + if User.current.allowed_to?(:export_wiki_pages, @project) + @pages = @wiki.pages.find :all, :order => 'title' + export = render_to_string :action => 'export_multiple', :layout => false + send_data(export, :type => 'text/html', :filename => "wiki.html") + else + redirect_to :action => 'index', :id => @project, :page => nil + end return else # requested special page doesn't exist, redirect to default page diff --git a/app/views/wiki/show.rhtml b/app/views/wiki/show.rhtml index 0ae8c10dca5422667da5fdc4a6cb6ee4815002fa..690e9102b96a4eefb751e83cb2f8c946b20bf446 100644 --- a/app/views/wiki/show.rhtml +++ b/app/views/wiki/show.rhtml @@ -48,7 +48,7 @@ <% other_formats_links do |f| %> <%= f.link_to 'HTML', :url => {:page => @page.title, :version => @content.version} %> <%= f.link_to 'TXT', :url => {:page => @page.title, :version => @content.version} %> -<% end %> +<% end if User.current.allowed_to?(:export_wiki_pages, @project) %> <% content_for :header_tags do %> <%= stylesheet_link_tag 'scm' %> diff --git a/app/views/wiki/special_date_index.rhtml b/app/views/wiki/special_date_index.rhtml index 53b7124c17dcc858e0729a18e97cb5ce847b6ba8..228737a5e8fbb1bca8279f105af7fca0bbb3c8a7 100644 --- a/app/views/wiki/special_date_index.rhtml +++ b/app/views/wiki/special_date_index.rhtml @@ -24,7 +24,7 @@ <% unless @pages.empty? %> <% other_formats_links do |f| %> <%= f.link_to 'Atom', :url => {:controller => 'projects', :action => 'activity', :id => @project, :show_wiki_edits => 1, :key => User.current.rss_key} %> - <%= f.link_to 'HTML', :url => {:action => 'special', :page => 'export'} %> + <%= f.link_to('HTML', :url => {:action => 'special', :page => 'export'}) if User.current.allowed_to?(:export_wiki_pages, @project) %> <% end %> <% end %> diff --git a/app/views/wiki/special_page_index.rhtml b/app/views/wiki/special_page_index.rhtml index 0b8eeccce610d5d9e2d2dbd7620e53cb3fdcc057..b3ad10019bd05e006f4beb453a20b23907f484bc 100644 --- a/app/views/wiki/special_page_index.rhtml +++ b/app/views/wiki/special_page_index.rhtml @@ -17,7 +17,7 @@ <% unless @pages.empty? %> <% other_formats_links do |f| %> <%= f.link_to 'Atom', :url => {:controller => 'projects', :action => 'activity', :id => @project, :show_wiki_edits => 1, :key => User.current.rss_key} %> - <%= f.link_to 'HTML', :url => {:action => 'special', :page => 'export'} %> + <%= f.link_to('HTML', :url => {:action => 'special', :page => 'export'}) if User.current.allowed_to?(:export_wiki_pages, @project) %> <% end %> <% end %> diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 7c699e1f08eef80e2da66bf0f59f36144d8162d6..d48c09314c385ec8a9ed4d57eb76500e6b0bb6ed 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -878,3 +878,4 @@ bg: label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/bs.yml b/config/locales/bs.yml index 28fddcbd509373a045b1cc091c07c061eed5e9f0..6d297fefe4bc5f9e7361f5c95f24bd0565411881 100644 --- a/config/locales/bs.yml +++ b/config/locales/bs.yml @@ -902,3 +902,4 @@ bs: label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 3f440c92c6ed8b7d58467ce8c4229d6cb953a557..dc033a24eb2d5148a79678ec1a32c21950316ca6 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -881,3 +881,4 @@ ca: label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/cs.yml b/config/locales/cs.yml index a6c18e88a89acb2fd7bc35fc5ece1f0d87c744ee..dd4cea30bd05be52fe056ee423e7ae24ab02f6ef 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -884,3 +884,4 @@ cs: label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/da.yml b/config/locales/da.yml index 99e9a0df54614d8aa11992e2b63e1e9b9c5733ed..1da8ac2fcf486e2c1fb0b8fb484a5d4e195535b5 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -904,3 +904,4 @@ da: label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/de.yml b/config/locales/de.yml index e4c35d1431a80ddb8a016daa7152324c5cfa65f8..ddb292c5d3f026c83270161d8a35f559c4320082 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -904,3 +904,4 @@ de: label_close_versions: Vollständige Versionen schließen label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/el.yml b/config/locales/el.yml index c1c1e40b73fb7b6c06937eebb50e15aa84d7bc03..3943cb5c37aea8c3f5c24ff8dae62942803b9547 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -884,3 +884,4 @@ el: label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/en.yml b/config/locales/en.yml index 37e9963ab5580f61fd5449f1b21bf2408770402e..c8b0ddbeee787a5964291e037f4a231551c42caa 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -382,6 +382,7 @@ en: permission_edit_own_messages: Edit own messages permission_delete_messages: Delete messages permission_delete_own_messages: Delete own messages + permission_export_wiki_pages: Export wiki pages project_module_issue_tracking: Issue tracking project_module_time_tracking: Time tracking diff --git a/config/locales/es.yml b/config/locales/es.yml index 360f488d2e936254ec9bc11a3bed9aeb1cca7c8b..8bc7c8c18d207d435b1ab572af39d17a248b69e1 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -928,3 +928,4 @@ es: label_close_versions: Cerrar versiones completadas label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/eu.yml b/config/locales/eu.yml index ba48eebf3ba47bfd8d6f2fa503e00a0b6658448f..04bb5c5b7a07fb897586a5bc2192dd71d91c790a 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -888,3 +888,4 @@ eu: enumeration_system_activity: Sistemako Jarduera label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 822bb43510a34ff7878a76f05cdd83c65cd122db..9ed111556d3dd66a66b0ad0458bccb267da5b909 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -914,3 +914,4 @@ fi: label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 1449abb5783d0e26dd45ce59d52ac5423afd476e..99c4361f08f89669d24cc9ff4ccdb8b74c1a2ecb 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -405,6 +405,7 @@ fr: permission_edit_own_messages: Modifier ses propres messages permission_delete_messages: Supprimer les messages permission_delete_own_messages: Supprimer ses propres messages + permission_export_wiki_pages: Exporter les pages project_module_issue_tracking: Suivi des demandes project_module_time_tracking: Suivi du temps passé diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 707eff4a391b3bfba5e0b0911305abbffb5facbb..b606ad46de668648ed1945da017847f7fb6876e5 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -904,3 +904,4 @@ gl: label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/he.yml b/config/locales/he.yml index af7aa883a38ccb7fbe42c74e622b3cb224342494..c2604ee5078732de771ccdf95c8cc466ab47e505 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -888,3 +888,4 @@ he: label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/hr.yml b/config/locales/hr.yml index bf3dc46cf96962e3b85c9942854111ddf5315ce1..4244e5b6cdd59964491acc64a8b90cf9a6f69652 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -891,3 +891,4 @@ hr: Are you sure you want to continue? label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 603fd19dbe4aeec75f60d870c6bd45673e67bf8e..f419aa301286e7b804daf2caff04ded2a71c1bd9 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -909,3 +909,4 @@ label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/id.yml b/config/locales/id.yml index 9e98bbfe2c6d285f9d4b882db03e8ac9c7a2d641..db92948aef28dc6cafdfce9e90e984661f3330a7 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -896,3 +896,4 @@ id: label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/it.yml b/config/locales/it.yml index c43d41b537d338a14228322a987e8c8765efe9b4..a3c12ad3fa84ad9983ffbc2a5fbf17a8af8d350f 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -891,3 +891,4 @@ it: label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 2f3336a6ccb6e072e1ec989f11d54181f7ff27b8..4a0fb894159ac4a9a725153fb39fa32a96d9169f 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -913,3 +913,4 @@ ja: enumeration_doc_categories: 文書カテゴリ enumeration_activities: 作æ¥åˆ†é¡ž (時間トラッã‚ング) enumeration_system_activity: システム作æ¥åˆ†é¡ž + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 09bedd63e35f5a88634a6bb7d8cc45d53f355b6d..99fc180b3f804eb03678ed26d17da45c12f3b0af 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -944,3 +944,4 @@ ko: label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/lt.yml b/config/locales/lt.yml index 289db443314df3bf7f5f250895db22bd33d38464..43158bccac9031a15b7134bec5b7504f4802df72 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -952,3 +952,4 @@ lt: label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 7c85fbbd0bae7aff5abee28dfc1d8aec14acc4cf..024db3238d60d2c34c9866a81b424de1451d592b 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -866,3 +866,4 @@ nl: label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/no.yml b/config/locales/no.yml index 6eabaeb25f00f34446a113cbf5ae7e85fed7c8ba..726dadb4617384140b66b68bd7c515af69bff6d2 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -879,3 +879,4 @@ label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 84cc3ec86f9604a263078180bdfd3a6e9dde6915..5d4e62e55c2e9fff25baad555f455c893b498955 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -909,3 +909,4 @@ pl: label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 300d5e7731f9a0ffb3e7ce661812729da5ac1b28..53f968ad181e829317208ce51ffdeb97692360ec 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -912,3 +912,4 @@ pt-BR: label_board_sticky: Marcado label_board_locked: Travado label_change_log: Registro de alterações + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/pt.yml b/config/locales/pt.yml index 0acfa0dd5828eefb16ac9bc729ec8f892f9c4e82..5d9d8ce46fe15108c348974eaca5923230bb8b33 100644 --- a/config/locales/pt.yml +++ b/config/locales/pt.yml @@ -896,3 +896,4 @@ pt: label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/ro.yml b/config/locales/ro.yml index 55a61634c982618a315355c2f949b84ca97336ba..257cf8e1962b64250e40cefeb4e1068b4bba3734 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -881,3 +881,4 @@ ro: label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 451e7008944d3109d3e7bf1c2dcf653ca756d9b4..2dd495212fb94caefb78adf1c180845b65fbdf1a 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -992,3 +992,4 @@ ru: label_close_versions: Закрыть завершенные верÑии label_board_sticky: Прикреплена label_board_locked: Заблокирована + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 009ec029463bded73938b96e20b3b98f19373008..c1070ab161f9ed1719d835d5294c85e115469670 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -883,3 +883,4 @@ sk: label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 9a640e010bf84fd49f73442e12418c2e861f3741..b12c77d781d6f21330e06b59e9b7d30a882a2491 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -880,3 +880,4 @@ sl: label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/sr.yml b/config/locales/sr.yml index 2d1c7112f91c18a7ab9b92554ce440bd37edbf18..28eaaaa3c23c925592188628c6d4325042b16459 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -899,3 +899,4 @@ label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 64d6b0aba888986029a0b9cc7839049f4a8def2c..d0488ad968f159f1ced1ff68fa54d5768ddd6da0 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -933,3 +933,4 @@ sv: enumeration_doc_categories: Dokumentkategorier enumeration_activities: Aktiviteter (tidsuppföljning) enumeration_system_activity: Systemaktivitet + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/th.yml b/config/locales/th.yml index 3c47b76099d7f063e3a0b4619da1bb3a7705c30a..c5982851f2af8bb6ec48fb4193deddd500c85efa 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -881,3 +881,4 @@ th: label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 673762b0ee69c626930da0b88c5ce513e4a97a4f..86b365d85d45780b2a86362eb97b3788580ad1a6 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -911,3 +911,4 @@ tr: label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 0bf649b47ac16966378d05fded06c40c5d0d3e98..4ae064d69b27a531cb1e80cd69cf5f003ee7fc3a 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -880,3 +880,4 @@ uk: label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 3ec9d57f9337f37fe50bc41bc4456035f173589b..c66cdd53b0136e4505b19f5f7ca7974a06bc0164 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -943,3 +943,4 @@ vi: label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index b94713379dedaebefeb30da3747d3be6a522c68b..db5bfa2e8336545f89f9bf629f705c479c4533c7 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -975,3 +975,4 @@ enumeration_doc_categories: 文件分類 enumeration_activities: 活動 (時間追蹤) enumeration_system_activity: 系統活動 + permission_export_wiki_pages: Export wiki pages diff --git a/config/locales/zh.yml b/config/locales/zh.yml index 632103a6e473cf8b1dec2a6a3a768462f6dbf7cb..8e7dc4d1cd6dc25cf60349c2d9cde06ed8cd5c42 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -906,3 +906,4 @@ zh: enumeration_system_activity: 系统活动 label_board_sticky: Sticky label_board_locked: Locked + permission_export_wiki_pages: Export wiki pages diff --git a/lib/redmine.rb b/lib/redmine.rb index 0cf0cc497f59caf6368d7640c9dfa50468388950..9d9de9cf9cc9d2653309bf03de63dac27ac6f22d 100644 --- a/lib/redmine.rb +++ b/lib/redmine.rb @@ -92,6 +92,7 @@ Redmine::AccessControl.map do |map| map.permission :rename_wiki_pages, {:wiki => :rename}, :require => :member map.permission :delete_wiki_pages, {:wiki => :destroy}, :require => :member map.permission :view_wiki_pages, :wiki => [:index, :special] + map.permission :export_wiki_pages, {} map.permission :view_wiki_edits, :wiki => [:history, :diff, :annotate] map.permission :edit_wiki_pages, :wiki => [:edit, :preview, :add_attachment] map.permission :delete_wiki_pages_attachments, {} diff --git a/test/fixtures/roles.yml b/test/fixtures/roles.yml index 22f6903280765fbc0c19688c60e4c22e38de6ae9..e3dc3645f1cf57447dc7373b0a1d13db67535bb3 100644 --- a/test/fixtures/roles.yml +++ b/test/fixtures/roles.yml @@ -33,6 +33,7 @@ roles_001: - :view_documents - :manage_documents - :view_wiki_pages + - :export_wiki_pages - :view_wiki_edits - :edit_wiki_pages - :delete_wiki_pages_attachments