Feature #617 » redmine-mediawiki.patch
app/helpers/projects_helper.rb (working copy) | ||
---|---|---|
35 | 35 |
{:name => 'members', :action => :manage_members, :partial => 'projects/settings/members', :label => :label_member_plural}, |
36 | 36 |
{:name => 'versions', :action => :manage_versions, :partial => 'projects/settings/versions', :label => :label_version_plural}, |
37 | 37 |
{:name => 'categories', :action => :manage_categories, :partial => 'projects/settings/issue_categories', :label => :label_issue_category_plural}, |
38 |
{:name => 'mediawiki', :action => :manage_wiki, :partial => 'projects/settings/mediawiki', :label => :label_mediawiki}, |
|
38 | 39 |
{:name => 'wiki', :action => :manage_wiki, :partial => 'projects/settings/wiki', :label => :label_wiki}, |
39 | 40 |
{:name => 'repository', :action => :manage_repository, :partial => 'projects/settings/repository', :label => :label_repository}, |
40 | 41 |
{:name => 'boards', :action => :manage_boards, :partial => 'projects/settings/boards', :label => :label_board_plural} |
app/helpers/application_helper.rb (working copy) | ||
---|---|---|
507 | 507 |
def has_content?(name) |
508 | 508 |
(@has_content && @has_content[name]) || false |
509 | 509 |
end |
510 |
|
|
511 |
def mediawiki_url(project, issue = nil, discussion = false) |
|
512 |
url = project.mediawikiurl + "/" |
|
513 |
if discussion |
|
514 |
url += "Talk:" |
|
515 |
end |
|
516 |
if project.mediawikinamespace != "" |
|
517 |
url += project.mediawikinamespace + "/" |
|
518 |
end |
|
519 |
if issue != nil |
|
520 |
url += issue.tracker.name + "/" + issue.id.to_s |
|
521 |
end |
|
522 |
return url |
|
523 |
end |
|
510 | 524 |
end |
app/controllers/issues_controller.rb (working copy) | ||
---|---|---|
145 | 145 |
:value => (params[:custom_fields] ? params[:custom_fields][x.id.to_s] : nil)) } |
146 | 146 |
@issue.custom_values = @custom_values |
147 | 147 |
if @issue.save |
148 |
# if @issue.project.is_mediawiki |
|
149 |
# url = mediawiki_url(@issue.project, @issue, false) + "?action=submit" |
|
150 |
# logger.debug("Url for post: #{url}\n") |
|
151 |
# logger.debug("Content: #{@issue.description}\n") |
|
152 |
# end |
|
148 | 153 |
attach_files(@issue, params[:attachments]) |
149 | 154 |
flash[:notice] = l(:notice_successful_create) |
150 | 155 |
Mailer.deliver_issue_add(@issue) if Setting.notified_events.include?('issue_added') |
app/controllers/projects_controller.rb (working copy) | ||
---|---|---|
139 | 139 |
end |
140 | 140 |
end |
141 | 141 |
|
142 |
def editmediawiki |
|
143 |
if request.post? |
|
144 |
@project.attributes = params[:project] |
|
145 |
if @project.save |
|
146 |
flash[:notice] = l(:notice_successful_update) |
|
147 |
redirect_to :action => 'settings', :id => @project, :tab => 'mediawiki' |
|
148 |
else |
|
149 |
settings |
|
150 |
render :action => 'settings' |
|
151 |
end |
|
152 |
end |
|
153 |
end |
|
154 |
|
|
142 | 155 |
def modules |
143 | 156 |
@project.enabled_module_names = params[:enabled_modules] |
144 | 157 |
redirect_to :action => 'settings', :id => @project, :tab => 'modules' |
app/views/issues/_form.rhtml (working copy) | ||
---|---|---|
8 | 8 | |
9 | 9 |
<div id="issue_descr_fields" <%= 'style="display:none"' unless @issue.new_record? || @issue.errors.any? %>> |
10 | 10 |
<p><%= f.text_field :subject, :size => 80, :required => true %></p> |
11 |
<% if @project.is_mediawiki %> |
|
12 |
<p>Description will have to be filled out on MW when this bug is saved</p> |
|
13 |
<% else %> |
|
11 | 14 |
<p><%= f.text_area :description, :required => true, |
12 | 15 |
:cols => 60, |
13 | 16 |
:rows => (@issue.description.blank? ? 10 : [[10, @issue.description.length / 50].max, 100].min), |
14 | 17 |
:accesskey => accesskey(:edit), |
15 | 18 |
:class => 'wiki-edit' %></p> |
19 |
<% end %> |
|
16 | 20 |
</div> |
17 | 21 | |
18 | 22 |
<div class="splitcontentleft"> |
app/views/issues/show.rhtml (working copy) | ||
---|---|---|
56 | 56 |
</table> |
57 | 57 |
<hr /> |
58 | 58 | |
59 |
<% if @issue.project.is_mediawiki %> |
|
60 |
<p><strong><%= link_to(l(:field_description), mediawiki_url(@issue.project, @issue, false), {:target => "_tab" })%></strong></p> |
|
61 |
<div class="wiki"> |
|
62 |
<iframe src="<%= mediawiki_url(@issue.project, @issue, false) + "?action=render" %>" style="border:solid 1px #777"width="800" height="400" frameborder="0" scrolling="yes"></iframe> |
|
63 |
<%= link_to(image_tag("edit.png", :border=>0), mediawiki_url(@issue.project, @issue, false) + "&action=edit", {:target => "_tab"}) %> |
|
64 |
</div> |
|
65 |
<% else %> |
|
59 | 66 |
<p><strong><%=l(:field_description)%></strong></p> |
60 | 67 |
<div class="wiki"> |
61 | 68 |
<%= textilizable @issue, :description, :attachments => @issue.attachments %> |
62 | 69 |
</div> |
70 |
<% end %> |
|
63 | 71 | |
64 | 72 |
<% if @issue.attachments.any? %> |
65 | 73 |
<%= link_to_attachments @issue.attachments, :delete_url => (authorize_for('issues', 'destroy_attachment') ? {:controller => 'issues', :action => 'destroy_attachment', :id => @issue} : nil) %> |
... | ... | |
81 | 89 |
</div> |
82 | 90 |
<% end %> |
83 | 91 | |
92 |
<% if @issue.project.is_mediawiki %> |
|
93 |
<div id="history"> |
|
94 |
<h3><%= link_to(l(:field_discussion), mediawiki_url(@issue.project, @issue, true), {:target => "_tab"}) %></h3> |
|
95 |
<iframe src="<%= mediawiki_url(@issue.project, @issue, true) + "?action=render" %>" style="border:solid 1px #777"width="800" height="400" frameborder="0" scrolling="yes"></iframe> |
|
96 |
<%= link_to(image_tag("edit.png", :border=>0), mediawiki_url(@issue.project, @issue, true) + "&action=edit§ion=new", {:target => "_tab"}) %> |
|
97 |
</div> |
|
98 |
<% else %> |
|
84 | 99 |
<% if @journals.any? %> |
85 | 100 |
<div id="history"> |
86 | 101 |
<h3><%=l(:label_history)%></h3> |
87 | 102 |
<%= render :partial => 'history', :locals => { :journals => @journals } %> |
88 | 103 |
</div> |
89 | 104 |
<% end %> |
105 |
<% end %> |
|
90 | 106 |
<div style="clear: both;"></div> |
91 | 107 | |
92 | 108 |
<% if authorize_for('issues', 'edit') %> |
app/views/issues/_edit.rhtml (working copy) | ||
---|---|---|
28 | 28 |
</fieldset> |
29 | 29 |
<% end %> |
30 | 30 |
|
31 | ||
31 | 32 |
<fieldset><legend><%= l(:field_notes) %></legend> |
33 |
<% if @issue.project.is_mediawiki %> |
|
34 |
<%= link_to(l(:text_notesonwiki), mediawiki_url(@issue.project, @issue, true) + "&action=edit§ion=new", :target => "_tab") %> |
|
35 |
<% else %> |
|
32 | 36 |
<%= text_area_tag 'notes', @notes, :cols => 60, :rows => 10, :class => 'wiki-edit' %> |
33 |
<%= wikitoolbar_for 'notes' %> |
|
34 |
|
|
37 |
<%= wikitoolbar_for 'notes' %>
|
|
38 |
<% end %> |
|
35 | 39 |
<p><%=l(:label_attachment_plural)%><br /><%= render :partial => 'attachments/form' %></p> |
36 | 40 |
</fieldset> |
37 | 41 |
</div> |
lang/en.yml (working copy) | ||
---|---|---|
97 | 97 | |
98 | 98 |
field_name: Name |
99 | 99 |
field_description: Description |
100 |
field_discussion: Discussion |
|
100 | 101 |
field_summary: Summary |
101 | 102 |
field_is_required: Required |
102 | 103 |
field_firstname: Firstname |
... | ... | |
123 | 124 |
field_notes: Notes |
124 | 125 |
field_is_closed: Issue closed |
125 | 126 |
field_is_default: Default value |
127 |
field_is_mediawiki: Uses Mediawiki |
|
128 |
field_mediawikiurl: Base url for Mediawiki |
|
129 |
field_mediawikinamespace: Namespace for this project |
|
126 | 130 |
field_tracker: Tracker |
127 | 131 |
field_subject: Subject |
128 | 132 |
field_due_date: Due date |
... | ... | |
510 | 514 |
label_chronological_order: In chronological order |
511 | 515 |
label_reverse_chronological_order: In reverse chronological order |
512 | 516 |
label_planning: Planning |
517 |
label_mediawiki: MediaWiki |
|
513 | 518 | |
514 | 519 |
button_login: Login |
515 | 520 |
button_submit: Submit |
... | ... | |
553 | 558 |
status_registered: registered |
554 | 559 |
status_locked: locked |
555 | 560 | |
561 |
text_example: Example |
|
562 |
text_notesonwiki: Notes are implemented using MediaWiki discussion pages. |
|
563 |
text_mediawikiurl: e.g. http://wiki.redmine.com/index.php |
|
564 |
text_mediawikinamespace: If blank, issue namespaces (i.e. Bug / Feature / Support) will be directly under the root namespace |
|
556 | 565 |
text_select_mail_notifications: Select actions for which email notifications should be sent. |
557 | 566 |
text_regexp_info: eg. ^[A-Z0-9]+$ |
558 | 567 |
text_min_max_length_info: 0 means no restriction |
config/environment.rb (working copy) | ||
---|---|---|
100 | 100 | |
101 | 101 |
require 'redmine' |
102 | 102 | |
103 | ||
104 |
lib/redmine.rb (working copy) | ||
---|---|---|
17 | 17 |
Redmine::AccessControl.map do |map| |
18 | 18 |
map.permission :view_project, {:projects => [:show, :activity]}, :public => true |
19 | 19 |
map.permission :search_project, {:search => :index}, :public => true |
20 |
map.permission :edit_project, {:projects => [:settings, :edit]}, :require => :member |
|
20 |
map.permission :edit_project, {:projects => [:settings, :edit, :editmediawiki]}, :require => :member
|
|
21 | 21 |
map.permission :select_project_modules, {:projects => :modules}, :require => :member |
22 | 22 |
map.permission :manage_members, {:projects => :settings, :members => [:new, :edit, :destroy]}, :require => :member |
23 | 23 |
map.permission :manage_versions, {:projects => [:settings, :add_version], :versions => [:edit, :destroy]}, :require => :member |