Feature #2009 » manual-changeset-relation-1.1.2.patch
app/helpers/changeset_relations_helper.rb (revision 0) | ||
---|---|---|
1 |
module ChangesetRelationsHelper |
|
2 |
end |
app/controllers/changeset_relations_controller.rb (revision 0) | ||
---|---|---|
1 |
class ChangesetRelationsController < ApplicationController |
|
2 |
|
|
3 |
|
|
4 |
before_filter :find_project, :authorize |
|
5 |
|
|
6 |
def new |
|
7 |
@changeset = Changeset.find(:first, :conditions => {:revision => params[:changeset][:revision], :repository_id => @project.repository}) |
|
8 |
if @changeset.nil? |
|
9 |
@changeset = Changeset.new(:revision => params[:changeset][:revision]) |
|
10 |
@changeset.errors.add('revision_not_found_error', '') |
|
11 |
else |
|
12 |
@changeset.issues << @issue |
|
13 |
@changeset.save if request.post? |
|
14 |
end |
|
15 |
@issue.reload |
|
16 |
respond_to do |format| |
|
17 |
format.html { redirect_to :controller => 'issues', :action => 'show', :id => @issue } |
|
18 |
format.js do |
|
19 |
render :update do |page| |
|
20 |
page.replace_html "issue-changesets-list", :partial => 'issues/changesets', :locals => { :changesets => @issue.changesets } |
|
21 |
if @changeset.errors.empty? |
|
22 |
page << "$('changeset_revision').value = ''" |
|
23 |
end |
|
24 |
end |
|
25 |
end |
|
26 |
end |
|
27 |
end |
|
28 |
|
|
29 |
def destroy |
|
30 |
changeset = Changeset.find(params[:id]) |
|
31 |
if request.post? && ! changeset.nil? && changeset.issues.include?(@issue) |
|
32 |
changeset.issues.delete(@issue) |
|
33 |
@issue.reload |
|
34 |
end |
|
35 |
respond_to do |format| |
|
36 |
format.html { redirect_to :controller => 'issues', :action => 'show', :id => @issue } |
|
37 |
format.js do |
|
38 |
render(:update) do |page| |
|
39 |
page.replace_html "issue-changesets-list", :partial => 'issues/changesets', :locals => { :changesets => @issue.changesets } |
|
40 |
end |
|
41 |
end |
|
42 |
end |
|
43 |
end |
|
44 |
|
|
45 |
|
|
46 |
private |
|
47 |
|
|
48 |
def find_project |
|
49 |
@issue = Issue.find(params[:issue_id]) |
|
50 |
@project = @issue.project |
|
51 |
rescue ActiveRecord::RecordNotFound |
|
52 |
render_404 |
|
53 |
end |
|
54 |
|
|
55 |
end |
app/views/changeset_relations/_form.html.erb (revision 0) | ||
---|---|---|
1 |
<%= error_messages_for 'changeset' %> |
|
2 | ||
3 |
<p><%= l(:label_revision) %> <%= f.text_field :revision, :size => 6 %> |
|
4 |
<%= submit_tag l(:button_add) %> |
|
5 |
<%= toggle_link l(:button_cancel), 'new-changeset-form'%> |
|
6 |
</p> |
|
7 | ||
8 |
<%= javascript_tag "setPredecessorFieldsVisibility();" %> |
app/views/issues/show.rhtml (working copy) | ||
---|---|---|
82 | 82 | |
83 | 83 |
</div> |
84 | 84 | |
85 |
<% if @changesets.present? %> |
|
86 |
<div id="issue-changesets"> |
|
87 |
<h3><%=l(:label_associated_revisions)%></h3> |
|
88 |
<%= render :partial => 'changesets', :locals => { :changesets => @changesets} %> |
|
89 |
</div> |
|
85 |
<% if !@project.repository.nil? && (@changesets.present? || authorize_for('changeset_relations', 'new')) %> |
|
86 |
<div id="issue-changesets"> |
|
87 |
<div class="contextual"> |
|
88 |
<% if authorize_for('changeset_relations', 'new') %> |
|
89 |
<%= toggle_link l(:button_add), 'new-changeset-form'%> |
|
90 |
<% end %> |
|
91 |
</div> |
|
92 |
<h3><%=l(:label_associated_revisions)%></h3> |
|
93 |
<div id="issue-changesets-list"> |
|
94 |
<%= render :partial => 'changesets', :locals => { :changesets => @changesets } %> |
|
95 |
</div> |
|
96 |
</div> |
|
90 | 97 |
<% end %> |
91 | 98 | |
92 | 99 |
<% if @journals.present? %> |
app/views/issues/_changesets.rhtml (working copy) | ||
---|---|---|
1 |
<% changesets.each do |changeset| %> |
|
1 |
<% remote_form_for(:changeset, @changeset, |
|
2 |
:url => {:controller => 'changeset_relations', :action => 'new', :issue_id => @issue}, |
|
3 |
:method => :post, |
|
4 |
:html => {:id => 'new-changeset-form', :style => (@changeset ? '' : 'display: none;')}) do |f| %> |
|
5 |
<%= render :partial => 'changeset_relations/form', :locals => {:f => f}%> |
|
6 |
<% end %> |
|
7 |
<% if !changesets.empty? %> |
|
8 |
<% changesets.each do |changeset| %> |
|
2 | 9 |
<div class="changeset <%= cycle('odd', 'even') %>"> |
3 |
<p><%= link_to_revision(changeset, changeset.project, |
|
4 |
:text => "#{l(:label_revision)} #{changeset.format_identifier}") %><br /> |
|
5 |
<span class="author"><%= authoring(changeset.committed_on, changeset.author) %></span></p> |
|
10 |
<p><%= link_to("#{l(:label_revision)} #{changeset.revision}", |
|
11 |
:controller => 'repositories', :action => 'revision', :id => changeset.project, :rev => changeset.revision) %> |
|
12 |
<span class="contextual"> |
|
13 |
<%= link_to_remote(image_tag('delete.png'), { :url => {:controller => 'changeset_relations', :action => 'destroy', :issue_id => @issue, :id => changeset}, |
|
14 |
:method => :post |
|
15 |
}, :title => l(:label_changeset_delete)) if authorize_for('changeset_relations', 'destroy') %> |
|
16 |
</span><br /> |
|
17 |
<span class="author"><%= authoring(changeset.committed_on, changeset.author) %></span> |
|
18 |
</p> |
|
19 | ||
6 | 20 |
<div class="changeset-changes"> |
7 | 21 |
<%= textilizable(changeset, :comments) %> |
8 | 22 |
</div> |
9 | 23 |
</div> |
24 |
<% end %> |
|
10 | 25 |
<% end %> |
26 |
db/migrate/20100531224709_add_manage_changeset_relations_permission.rb (revision 0) | ||
---|---|---|
1 |
class AddManageChangesetRelationsPermission < ActiveRecord::Migration |
|
2 |
def self.up |
|
3 |
Role.find(:all).each do |r| |
|
4 |
r.add_permission!(:manage_changeset_relations) if r.has_permission?(:manage_issue_relations) |
|
5 |
end |
|
6 |
end |
|
7 | ||
8 |
def self.down |
|
9 |
Role.find(:all).each do |r| |
|
10 |
r.remove_permission!(:manage_changeset_relations) |
|
11 |
end |
|
12 |
end |
|
13 |
end |
lib/redmine.rb (working copy) | ||
---|---|---|
68 | 68 |
map.permission :add_issues, {:issues => [:new, :create, :update_form]} |
69 | 69 |
map.permission :edit_issues, {:issues => [:edit, :update, :bulk_edit, :bulk_update, :update_form], :journals => [:new]} |
70 | 70 |
map.permission :manage_issue_relations, {:issue_relations => [:new, :destroy]} |
71 |
map.permission :manage_changeset_relations, {:changeset_relations => [:new, :destroy]} |
|
71 | 72 |
map.permission :manage_subtasks, {} |
72 | 73 |
map.permission :add_issue_notes, {:issues => [:edit, :update], :journals => [:new]} |
73 | 74 |
map.permission :edit_issue_notes, {:journals => :edit}, :require => :loggedin |
public/stylesheets/application.css (working copy) | ||
---|---|---|
289 | 289 |
fieldset#filters td.add-filter { text-align: right; vertical-align: top; } |
290 | 290 |
.buttons { font-size: 0.9em; margin-bottom: 1.4em; margin-top: 1em; } |
291 | 291 | |
292 |
div#issue-changesets {float:right; width:45%; margin-left: 1em; margin-bottom: 1em; background: #fff; padding-left: 1em; font-size: 90%;}
|
|
292 |
div#issue-changesets {float:right; width:45%; margin-left: 1em; margin-bottom: 0em; background: #fff; padding-left: 1em; font-size: 90%;}
|
|
293 | 293 |
div#issue-changesets div.changeset { padding: 4px;} |
294 | 294 |
div#issue-changesets div.changeset { border-bottom: 1px solid #ddd; } |
295 | 295 |
div#issue-changesets p { margin-top: 0; margin-bottom: 1em;} |
config/locales/en.yml (working copy) | ||
---|---|---|
935 | 935 |
enumeration_doc_categories: Document categories |
936 | 936 |
enumeration_activities: Activities (time tracking) |
937 | 937 |
enumeration_system_activity: System Activity |
938 | ||
938 |
|
|
939 |
label_changeset_delete: Delete associated revision |
|
940 |
field_revision_not_found_error: Revision not found in project repository |
- « Previous
- 1
- …
- 12
- 13
- 14
- Next »