Skip to content

Commit

Permalink
[webui] Add dialog to create change_devel requests.
Browse files Browse the repository at this point in the history
The link to the dialog is currently only shown if the package already
has a devel project, so that inexperienced users don't devel around w/o
knowing the implications.
  • Loading branch information
saschpe committed Mar 7, 2012
1 parent e9be269 commit 5ffa560
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 0 deletions.
22 changes: 22 additions & 0 deletions src/webui/app/controllers/request_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,28 @@ def add_role_request
redirect_to :controller => :request, :action => :show, :id => req.value("id")
end

def change_devel_request_dialog
@project = find_cached(Project, params[:project])
@package = find_cached(Package, params[:package], :project => params[:project])
if @package.has_element?(:devel)
@current_devel_package = @package.devel.value('package') || @package.value('name')
@current_devel_project = @package.devel.value('project')
end
end

def change_devel_request
begin
req = BsRequest.new(:type => 'change_devel', :project => params[:devel_project], :package => params[:package], :targetproject => params[:project], :targetpackage => params[:package], :description => params[:description])
req.save(:create => true)
Rails.cache.delete 'requests_new'
rescue ActiveXML::Transport::NotFoundError => e
message, _, _ = ActiveXML::Transport.extract_error_message e
flash[:error] = message
redirect_to :controller => 'package', :action => 'show', :project => params[:project], :package => params[:package] and return
end
redirect_to :controller => 'request', :action => 'show', :id => req.value("id")
end

private

def change_request(changestate, params)
Expand Down
7 changes: 7 additions & 0 deletions src/webui/app/views/package/show.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,13 @@
<%= link_to_remote 'Request deletion', :url => {:controller => :request, :action => :delete_request_dialog, :project => @project, :package => @package} %>
</li>
<% end %>
<%# TODO: only users w/o rights should see this, maintainers should get a different dialog: %>
<% if @package.has_element?(:devel) %>
<li>
<%= link_to_remote(image_tag('icons/arrow_switch.png', :title => 'Request devel project change'), :url => {:controller => 'request', :action => 'change_devel_request_dialog', :project => @project, :package => @package}) %>
<%= link_to_remote('Request devel project change', :url => {:controller => 'request', :action => 'change_devel_request_dialog', :project => @project, :package => @package}) %>
</li>
<% end %>
<% end %>
</ul>
</div>
Expand Down
46 changes: 46 additions & 0 deletions src/webui/app/views/request/_change_devel_request_dialog.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<% content_for :content_for_head do %>
<%= stylesheet_link_tag 'jquery.autocomplete' %>
<% end %>
<%= javascript_include_tag 'jquery.autocomplete.pack' %>

<div id="dialog_wrapper">
<div class="dialog" id="disable_mask"></div>
<div class="dialog darkgrey_box">
<div class="box box-shadow">
<div class="box-header aligncenter">
<b>Change Devel Project Request</b>
</div>

<% if @current_devel_project && @current_devel_package %>
<p>Do you want to request to change the devel project for <%= render :partial => 'shared/project_or_package_link', :locals => {:project => @project.value('name'), :package => @package.value('name')} %> from
<%= render :partial => 'shared/project_or_package_link', :locals => {:project => @current_devel_project} %>?</p>
<% else %>
<p>Do you want to request to set the devel project for <%= render :partial => 'shared/project_or_package_link', :locals => {:project => @project.value('name'), :package => @package.value('name')} %>?</p>
<% end %>
<% form_tag(:action => 'change_devel_request', :method => 'post') do %>
<%= hidden_field_tag(:project, @project.value('name')) %>
<%= hidden_field_tag(:package, @package.value('name')) %>
<p>
<% if @current_devel_project && @current_devel_package %>
<%= label_tag(:devel_project, 'New Devel project (leave free to delete the current one):') %><br/>
<% else %>
<%= label_tag(:devel_project, 'Devel project:') %><br/>
<% end %>
<%= text_field_tag(:devel_project, '', :size => 40) %><br/>
<%= label_tag(:description, 'Description:') %><br/>
<%= text_area_tag(:description, '', :size => '40x3') %>
</p>
<div class="buttons">
<%= submit_tag('Ok') %>
<%= link_to_function('Cancel', 'remove_dialog()') %>
</div>
<% end %>
</div>
</div>
</div>

<% javascript_tag do %>
$('#devel_project').autocomplete('<%= url_for :controller => :project, :action => :autocomplete_projects %>', {
minChars: 2, matchCase: true, max: 50
});
<% end %>
2 changes: 2 additions & 0 deletions src/webui/app/views/request/change_devel_request_dialog.rjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
page.replace 'dialog_wrapper', :partial => 'change_devel_request_dialog'

0 comments on commit 5ffa560

Please sign in to comment.