Changesets can be listed by changeset number.
The Git repository is here.
Changeset 109
Miscellaneous bug fixes. Breadcrumb trail while browsing SVN.
Hub integration - see also Changeset #107 and Changeset #108.
- Comitted by: adh
- Date: Monday October 23 18:22:45 2006 (over 18 years ago)
Affected files:
- rool/rails/collaboa/trunk/app/views/repository/_breadcrumbs.rhtml
- rool/rails/collaboa/trunk/app/views/tickets/comment.rhtml
- rool/rails/collaboa/trunk/public/images/icon_file.gif
- rool/rails/collaboa/trunk/app/controllers/application.rb (diff)
- rool/rails/collaboa/trunk/app/controllers/tickets_controller.rb (diff)
- rool/rails/collaboa/trunk/app/helpers/application_helper.rb (diff)
- rool/rails/collaboa/trunk/app/helpers/tickets_helper.rb (diff)
- rool/rails/collaboa/trunk/app/views/layouts/application.rhtml (diff)
- rool/rails/collaboa/trunk/app/views/repository/browse.rhtml (diff)
- rool/rails/collaboa/trunk/app/views/repository/changesets.rhtml (diff)
- rool/rails/collaboa/trunk/app/views/repository/revisions.rhtml (diff)
- rool/rails/collaboa/trunk/app/views/repository/show_changeset.rhtml (diff)
- rool/rails/collaboa/trunk/app/views/repository/showfile.rhtml (diff)
- rool/rails/collaboa/trunk/app/views/repository/showimage.rhtml (diff)
- rool/rails/collaboa/trunk/app/views/repository/showunknown.rhtml (diff)
- rool/rails/collaboa/trunk/app/views/search/index.rhtml (diff)
- rool/rails/collaboa/trunk/app/views/tickets/show.rhtml (diff)
- rool/rails/collaboa/trunk/config/environment.rb (diff)
- rool/rails/collaboa/trunk/public/stylesheets/screen.css (diff)
rool/rails/collaboa/trunk/app/controllers/application.rb:
prev. | current | |
require_dependency "login_system" | ||
3 | ||
3 | class ApplicationController < ActionController::Base | |
4 | ||
5 | # Hub single sign-on support. | |
6 | ||
7 | require 'hub_sso_lib' | |
8 | include HubSsoLib::Core | |
9 | before_filter :hubssolib_update_state | |
10 | ||
11 | # Now Collaboa's own administrative login system. | |
12 | ||
include LoginSystem | ||
5 | | |
14 | ||
before_filter :set_headers, :sync_with_repos, :user_obj_required | ||
after_filter :remember_location | ||
... | ... | |
@current_user | ||
end | ||
helper_method :current_user | ||
25 | | |
34 | ||
def rescue_action_in_public(exception) | ||
@exception = exception | ||
render 'rescues/error' | ||
end | ||
31 | | |
40 | private | |
# Sets the headers for each request | ||
def set_headers | ||
34 | | |
43 | @headers['Content-Type'] = "text/html; charset=utf-8" | |
end | ||
36 | | |
45 | ||
# Remember where we are. | ||
38 | | |
47 | # Never return to one of these controllers: | |
@@remember_not = ['feed', 'login', 'user'] | ||
40 | | |
41 | | |
42 | | |
49 | def remember_location | |
50 | if @response.headers['Status'] == '200 OK' | |
51 | session['return_to'] = request.request_uri unless @@remember_not.include? controller_name | |
end | ||
end | ||
45 | | |
54 | ||
def sync_with_repos | ||
Changeset.sync_changesets | ||
end | ||
... | ... | |
@current_user = User.find session[:user_id] | ||
end | ||
end | ||
57 | | |
66 | ||
end |
rool/rails/collaboa/trunk/app/controllers/tickets_controller.rb:
prev. | current | |
include SortHelper | ||
before_filter :login_required | ||
6 | # Beyond Collboa's built in login stuff, account management for guests | |
7 | # done via Hub. Normally if you can read a ticket you can comment on it; | |
8 | # we want to limit that to prevent spam. | |
9 | ||
10 | @@hubssolib_permissions = HubSsoLib::Permissions.new({ | |
11 | :comment => [ :admin, :webmaster, :privileged, :normal ], | |
12 | :new => [ :admin, :webmaster, :privileged, :normal ], | |
13 | }) | |
14 | ||
15 | def TicketsController.hubssolib_permissions | |
16 | @@hubssolib_permissions | |
17 | end | |
18 | ||
def index | ||
# Redirect to a "default" filter once we've added so we can save filters | ||
redirect_to :action => 'filter', :status => 1 | ||
end | ||
10 | | |
23 | ||
def filter | ||
sort_init('created_at', 'desc') | ||
sort_update | ||
14 | | |
27 | ||
@milestones = Milestone.find(:all) | ||
@parts = Part.find(:all) | ||
@severities = Severity.find(:all, :order => 'position DESC') | ||
... | ... | |
@tickets = Ticket.find_by_filter(params, sort_clause) | ||
render :action => 'index' | ||
end | ||
23 | | |
36 | ||
def show | ||
@milestones = Milestone.find(:all) | ||
@parts = Part.find(:all) | ||
@severities = Severity.find(:all, :order => 'position DESC') | ||
@releases = Release.find(:all) | ||
@status = Status.find(:all) | ||
30 | | |
43 | ||
begin | ||
@ticket = Ticket.find(params[:id], :include => [ :severity, :part, :status, :milestone ]) | ||
rescue ActiveRecord::RecordNotFound | ||
render :text => "Unknown ticket number" and return | ||
end | ||
49 | end | |
51 | def comment | |
52 | @milestones = Milestone.find(:all) | |
53 | @parts = Part.find(:all) | |
54 | @severities = Severity.find(:all, :order => 'position DESC') | |
55 | @releases = Release.find(:all) | |
56 | @status = Status.find(:all) | |
57 | ||
58 | begin | |
59 | @ticket = Ticket.find(params[:id], :include => [ :severity, :part, :status, :milestone ]) | |
60 | rescue ActiveRecord::RecordNotFound | |
61 | render :text => "Unknown ticket number" and return | |
62 | end | |
63 | ||
@change = TicketChange.new | ||
38 | | |
39 | | |
65 | @change.author = hubssolib_unique_name | |
66 | ||
@change.attributes = params[:change] | ||
@ticket.attributes = params[:ticket] | ||
42 | | |
69 | ||
if request.post? && (@change.valid? && @ticket.valid?) | ||
@change.author = params[:change][:author] | ||
if @ticket.save(params) | ||
46 | | |
redirect_to :action => 'show', :id => @ticket.id | ||
end | ||
end | ||
end | ||
51 | | |
77 | ||
def attachment | ||
@change = TicketChange.find(params[:id]) | ||
unless @change.has_attachment? | ||
... | ... | |
begin | ||
fullpath = @change.attachment_fsname | ||
send_file(fullpath, :filename => @change.attachment,:type => @change.content_type, :disposition => 'inline') | ||
60 | | |
86 | rescue | |
render :text => "Could not find an attachment for this id" | ||
end | ||
end | ||
end | ||
65 | | |
91 | ||
def new | ||
@milestones = Milestone.find(:all, :conditions => "completed = 0") | ||
@parts = Part.find(:all) | ||
@severities = Severity.find(:all, :order => 'position DESC') | ||
@releases = Release.find(:all) | ||
71 | | |
97 | ||
@ticket = Ticket.new | ||
73 | | |
74 | | |
75 | | |
99 | @ticket.author ||= hubssolib_unique_name | |
100 | ||
101 | if request.post? | |
@ticket = Ticket.new(params[:ticket]) | ||
@ticket.author = params[:ticket][:author] | ||
@ticket.author_host = request.remote_ip | ||
@ticket.status = Status.find_by_name('Open') | ||
80 | | |
81 | | |
82 | | |
106 | ||
if @ticket.save | ||
redirect_to :action => 'show', :id => @ticket.id | ||
end | ||
end | ||
end | ||
88 | | |
112 | ||
private | ||
90 | | |
91 | | |
92 | | |
93 | ||
def authorize?(user) | ||
if action_name == 'new' | ||
user.create_tickets? | ||
... | ... | |
user.view_tickets? | ||
end | ||
end | ||
101 | | |
121 | ||
end |
rool/rails/collaboa/trunk/app/helpers/application_helper.rb:
prev. | current | |
# The methods added to this helper will be available to all templates in the application. | ||
3 | ||
4 | | |
3 | class Object::Array | |
4 | def cycle() | |
self.each_with_index {|o, i| yield(o, %w(odd even)[i % 2])} | ||
end | ||
end | ||
9 | ||
9 | module ApplicationHelper | |
def make_links(text) | ||
text.gsub!(/changeset\s#?([0-9]+)/i){|s| link_to("Changeset ##{$1}", :controller => 'repository', :action => 'show_changeset', :revision => $1)} | ||
text.gsub!(/ticket\s#?([0-9]+)/i){|s| link_to("Ticket ##{$1}", :controller => 'tickets', :action => 'show', :id => $1)} | ||
return text | ||
end | ||
15 | | |
15 | ||
def format_and_make_links(text) | ||
text = make_links(text) | ||
text = simple_format(text) | ||
... | ... | |
def htmlize(text) | ||
return if text.nil? | ||
text.gsub!("<", "<") | ||
25 | | |
26 | | |
25 | text.gsub!(">", ">") | |
26 | text = RedCloth.new(text).to_html(:textile) | |
return text | ||
end | ||
29 | | |
29 | ||
def request | ||
@request | ||
end |
rool/rails/collaboa/trunk/app/helpers/tickets_helper.rb:
prev. | current | |
address | ||
end | ||
end | ||
9 | | |
9 | ||
def format_changes(change_arr) | ||
"<strong>#{change_arr[0]}</strong> changed from <em>#{change_arr[1]}</em> to <em>#{change_arr[2]}</em>" | ||
end | ||
13 | | |
13 | ||
def link_to_add_filter(object) | ||
good_things = %w{milestone part severity release status} | ||
obj_name = object.class.to_s.downcase | ||
... | ... | |
add_params = params.merge({obj_name => object.id.to_s}).each{|p| p} | ||
# Reject the current filter | ||
del_params = params.reject{ |key, value| value == object.id.to_s && key == obj_name} | ||
21 | | |
21 | ||
out = '[' | ||
unless params == add_params | ||
out << link_to('+', add_params) | ||
... | ... | |
end | ||
out << ']' | ||
end | ||
30 | | |
30 | ||
def render_next_prev_links | ||
out = %{<div class="ticket-next-prev">} | ||
out << "<p><small>" | ||
... | ... | |
out << link_to('Next', :action => 'show', :id => @ticket.next) | ||
end | ||
out << "</small></p>\n</div>" | ||
42 | | |
42 | out | |
end | ||
end |
rool/rails/collaboa/trunk/app/views/layouts/application.rhtml:
prev. | current | |
<table width="85%" cellspacing="0" cellpadding="0" align="center"> | ||
<tr valign="top" align="left"> | ||
<td width="75%"> | ||
36 | | |
37 | ||
38 | | |
36 | <%= hubssolib_flash_tags -%> | |
<%= @content_for_layout %> | ||
</td> | ||
... | ... | |
<td width="25%"> | ||
<div id="sidebar"> | ||
46 | <div class="sidebar-node"> | |
47 | <h3>Search tickets</h3> | |
48 | ||
49 | <p /> | |
50 | <div class="sidebar_static"> | |
51 | <%= form_tag({:controller => 'search', :action => 'index'}, :method => 'get') %> | |
52 | <input name="q" type="text" value="<%= params[:q] -%>" size="15" /> | |
53 | <input type="submit" value="Go" /> | |
54 | <%= end_form_tag %> | |
55 | </div> | |
56 | </div> | |
57 | ||
<%= render 'shared/fixed_sidebar' %> | ||
60 | <% if hubssolib_privileged? -%> | |
<p /> | ||
<div class="sidebar-node"> | ||
<% if current_user.login == 'Public' %> | ||
53 | | |
64 | <h3>Collaboa admin</h3> | |
<p /> | ||
56 | | |
67 | <ul><li><%= link_to 'Log in', :controller => '/login', :action => 'login' -%></li></ul> | |
<% else %> | ||
58 | | |
69 | <h3>Collaboa admin</h3> | |
<p /> | ||
<ul><li>Logged in as <%= current_user.login %> <%= link_to '(Log out)', :controller => '/login', :action => 'logout' -%></li></ul> | ||
<% end %> | ||
</div> | ||
75 | <% end -%> | |
<p /> | ||
<div class="sidebar-node"> | ||
... | ... | |
<p /> | ||
<ul> | ||
71 | | |
72 | | |
83 | <% if current_user.view_tickets? -%> | |
84 | <li><%= link_to 'Tickets', :controller => '/tickets' -%></li> | |
<% end -%> | ||
74 | | |
75 | | |
86 | <% if current_user.create_tickets? -%> | |
87 | <li><%= link_to 'New ticket', :controller => '/tickets', :action => 'new' -%></li> | |
<% end -%> | ||
<% if current_user.view_milestones? -%> | ||
<li><%= link_to 'Milestones', :controller => '/milestones' -%></li> | ||
<% end -%> | ||
80 | | |
81 | | |
92 | <% if current_user.view_changesets? -%> | |
93 | <li>Subversion: <%= link_to 'Changesets', :controller => '/repository', :action => 'changesets' -%></li> | |
<% end -%> | ||
83 | | |
84 | | |
95 | <% if current_user.view_code? -%> | |
96 | <li>Subversion: <%= link_to 'Browse', :controller => '/repository', :action => 'browse', :path => nil -%></li> | |
<% end -%> | ||
98 | <% if current_user.view_changesets? -%> | |
99 | <li>CVS: <a href="/rails/rcvsweb/revisions/">Revisions</a></li> | |
100 | <% end -%> | |
101 | <% if current_user.view_code? -%> | |
102 | <li>CVS: <a href="/rails/rcvsweb/view/">Browse</a></li> | |
103 | <% end -%> | |
<% if current_user.view_tickets? -%> | ||
<li><%= link_to 'Search', :controller => '/search' -%></li> | ||
<% end -%> |
rool/rails/collaboa/trunk/app/views/repository/browse.rhtml:
prev. | current | |
<% @page_title = 'Browsing repository' %> | ||
<div id="content"> | ||
4 | ||
5 | ||
6 | ||
4 | <%= render :partial => 'breadcrumbs', :locals => { :trail => true, :last_clickable => false } %> | |
<% #TODO: styyyyyle me: %> | ||
<div id="filter-selector"> | ||
<dl> | ||
... | ... | |
<dd><%= @current_entry.revision -%></dd> | ||
</dl> | ||
<dl> | ||
14 | | |
12 | <dt>Log:</dt> | |
<dd><%= format_and_make_links(h(@current_entry.log)) -%></dd> | ||
</dl> | ||
<dl> | ||
... | ... | |
<dd><%= @current_entry.author -%></dd> | ||
</dl> | ||
<dl> | ||
22 | | |
20 | <dt>Date:</dt> | |
<dd><%= @current_entry.date -%></dd> | ||
</dl> | ||
<% unless @current_entry.proplist.empty? -%> | ||
<dl> | ||
27 | | |
25 | <dt>Properties:</dt> | |
<% @current_entry.proplist.each do |name, value| %> | ||
<dd>Property <%= name -%> is set <%= value.empty? ? '' : "to #{value}" -%></dd> | ||
<% end %> | ||
... | ... | |
</tr> | ||
<% end %> | ||
<% @node_entries.cycle do |entry, css| %> | ||
55 | | |
53 | ||
<tr class="<%= css -%>"> | ||
<td class="name <%= entry.type -%>"><%= link_to entry.name, url_for_svn_path(entry.path) -%></td> | ||
<td class="age"><%= distance_of_time_in_words(entry.date, Time.now) -%></td> | ||
... | ... | |
<% end_form_tag %> | ||
</div>--> | ||
72 | ||
71 | </div> |
rool/rails/collaboa/trunk/app/views/repository/changesets.rhtml:
prev. | current | |
<% @page_title = 'Showing changesets' %> | ||
<div id="content"> | ||
4 | <%= render :partial => 'breadcrumbs', :locals => { :trail => false } %> | |
5 | ||
6 | <div class="breadcrumbs"></div> | |
7 | <% @changesets.each do |changeset| %> | |
<h2><%= link_to 'Changeset ' + changeset.revision.to_s, :action => 'show_changeset', :revision => changeset.revision %>:</h2> | ||
7 | ||
8 | | |
9 | | |
10 | ||
9 | <ul class="changes"> | |
10 | <li><strong>Author:</strong> <%= changeset.author -%></li> | |
11 | <li><strong>Date:</strong> <%= changeset.revised_at.strftime('%a %b %d %H:%M %Y') -%></li> | |
12 | </ul> | |
<div class="log-small"><%= format_and_make_links(h(changeset.log)) -%></div> | ||
12 | ||
14 | <% end -%> | |
14 | ||
15 | | |
16 | ||
16 | <div class="pagination"> | |
17 | <p>Page: <%= pagination_links(@changeset_pages) -%></p> | |
18 | </div> | |
</div> | ||
rool/rails/collaboa/trunk/app/views/repository/revisions.rhtml:
prev. | current | |
<% @page_title = 'Path Revisions' %> | ||
<div id="content"> | ||
4 | | |
5 | | |
6 | | |
4 | <%= render :partial => 'breadcrumbs', :locals => { :trail => true, :last_clickable => true } %> | |
<h2>Revision log for <%= params[:path].to_s -%></h2> | ||
8 | | |
6 | ||
<table class="listing" id="revision-log"> | ||
<tr> | ||
<th>Date</th> | ||
... | ... | |
</tr> | ||
<% @changes.each do |change| %> | ||
<tr> | ||
18 | | |
16 | <td><%= link_to change.changeset.created_at.strftime("%m/%d/%Y %H:%M"), :action => 'view_file', | |
:path => params[:path], :rev => change.revision -%></td> | ||
20 | | |
18 | <td><%= link_to change.revision, :action => 'show_changeset', | |
:revision => change.revision -%></td> | ||
<td><%= change.changeset.author -%></td> | ||
<td style="width: 65%;"><%= change.changeset.log -%></td> |
rool/rails/collaboa/trunk/app/views/repository/show_changeset.rhtml:
prev. | current | |
<% @page_title = 'Showing changeset ' + @changeset.revision.to_s %> | ||
<div id="content"> | ||
4 | ||
5 | | |
6 | | |
7 | | |
8 | | |
9 | ||
4 | <%= render :partial => 'breadcrumbs', :locals => { :trail => false } %> | |
5 | <div class="breadcrumbs"> | |
6 | <ul> | |
7 | <li><%= link_to 'Changesets', :action => 'changesets' -%></li> | |
8 | <li>» Changeset <%= @changeset.revision -%></li> | |
9 | </ul> | |
10 | </div> | |
<h1>Changeset <%= @changeset.revision -%></h1> | ||
<div class="log"><%= format_and_make_links(h(@changeset.log)) -%></div> |
rool/rails/collaboa/trunk/app/views/repository/showfile.rhtml:
prev. | current | |
<% @page_title = 'Browsing repository' %> | ||
<div id="content"> | ||
4 | | |
5 | | |
4 | <%= render :partial => 'breadcrumbs', :locals => { :trail => true, :last_clickable => false } %> | |
<%= render :partial => 'meta', :locals => {:node => @file} %> | ||
7 | | |
6 | ||
<div id="html-preview"> | ||
<%= highlight(@file.contents, @file.mime_type) %> | ||
</div> | ||
11 | | |
10 | ||
<div id="download-alternate"> | ||
<h4>Download in other formats:</h4> | ||
<p><%= link_to "raw", :format => "raw", :path => params[:path] -%> |
rool/rails/collaboa/trunk/app/views/repository/showimage.rhtml:
prev. | current | |
<% @page_title = 'Browsing repository' %> | ||
<div id="content"> | ||
4 | | |
5 | | |
6 | | |
7 | ||
5 | <%= render :partial => 'breadcrumbs', :locals => { :trail => true, :last_clickable => false } %> | |
6 | <%= render :partial => 'meta', :locals => {:node => @file} %> | |
7 | ||
8 | <p /> | |
9 | <%# Cannot use "image_tag url_for"... because url_for inserts the asset host -%> | |
10 | <%# / RAILS_RELATIVE_URL_ROOT prefix, then image_tag does it again, creating -%> | |
11 | <%# a broken URL. Rails has plenty of glitches when running away from the -%> | |
12 | <%# document root! -%> | |
13 | <%= "<img src=\"#{url_for( :action => 'send_data_to_browser', :path => params[:path] )}\" alt=\"#{@file.name}\" />" %> | |
14 | </div> |
rool/rails/collaboa/trunk/app/views/repository/showunknown.rhtml:
prev. | current | |
<% @page_title = 'Browsing repository' %> | ||
<div id="content"> | ||
4 | | |
4 | <%= render :partial => 'breadcrumbs', :locals => { :trail => true, :last_clickable => false } %> | |
5 | <%= render :partial => 'meta', :locals => {:node => @file} %> | |
<h2>Unviewable file</h2> | ||
7 | | |
8 | | |
9 | <p> | |
10 | Couldn't find a mimetype with which to properly view this file. | |
11 | If you wish you can try the links below to download it in another format. | |
12 | </p> | |
13 | ||
<div id="download-alternate"> | ||
<h4>Download in other formats:</h4> | ||
<p><%= link_to "raw", :format => "raw", :path => params[:path] -%> | ||
| <%= link_to "text", :format => "txt", :path => params[:path] -%></p> | ||
</div> | ||
15 | ||
20 | </div> |
rool/rails/collaboa/trunk/app/views/search/index.rhtml:
prev. | current | |
<% @page_title = 'Search' %> | ||
<div id="content"> | ||
4 | | |
<%= form_tag({:action => 'index'}, :method => 'get') -%> | ||
6 | | |
7 | | |
8 | | |
9 | | |
10 | | |
11 | | |
12 | | |
5 | <table border="0" cellspacing="0" cellpadding="1"> | |
6 | <tr valign="middle" align="left"> | |
7 | <th>Search in tickets:</th> | |
8 | <td> </td> | |
9 | <td><input name="q" type="text" value="<%= params[:q] -%>" /></td> | |
10 | </tr> | |
11 | <% if current_user.view_changesets? %> | |
12 | <tr valign="middle" align="left"> | |
13 | <th>Search in Changesets too?</th> | |
14 | <td> </td> | |
15 | <td><%= check_box_tag 'changesets', 1, params[:changesets], {:class => 'checkbox'} -%></td> | |
16 | </tr> | |
17 | <% end %> | |
18 | <tr align="left"> | |
19 | <td colspan="3"><br /><input type="submit" value="Go!" /></td> | |
20 | </tr> | |
21 | </table> | |
<%= end_form_tag -%> | ||
14 | | |
23 | ||
<% @found_items.each do |items| -%> | ||
16 | | |
17 | | |
18 | | |
19 | | |
20 | | |
21 | | |
25 | <p /> | |
26 | <% items.each do |item| -%> | |
27 | <div class="search-result"> | |
28 | <h1><%= link_to item[:title], item[:link] -%></h1> | |
29 | <p> | |
30 | <%= hilight_search_terms(simple_format(item[:content]), @params["q"]) %> | |
31 | </p> | |
32 | </div> | |
<% end -%> | ||
34 | <% end -%> | |
</div> | ||
rool/rails/collaboa/trunk/app/views/tickets/show.rhtml:
prev. | current | |
<% @page_title = 'Ticket #' + @ticket.id.to_s %> | ||
<div id="content"> | ||
4 | ||
<%= render_next_prev_links -%> | ||
7 | ||
8 | | |
9 | | |
10 | | |
11 | | |
12 | ||
6 | <div class="breadcrumbs"> | |
7 | <ul> | |
8 | <li><%= link_to 'Tickets', :action => 'index' -%></li> | |
9 | <li>» Ticket #<%= @ticket.id -%></li> | |
10 | </ul> | |
11 | </div> | |
14 | ||
15 | ||
13 | <%= error_messages_for 'ticket' %> | |
14 | <%= error_messages_for 'change' %> | |
17 | ||
18 | | |
19 | ||
16 | <% if flash[:notice] %> | |
17 | <div class="notice"><p><%= flash[:notice] %></p></div> | |
18 | <% end %> | |
21 | ||
22 | | |
23 | | |
20 | <div id="ticket"> | |
21 | <h1>Ticket #<%= @ticket.id -%> (<%= @ticket.status.name -%>)<span class="date"><%= @ticket.created_at -%></span></h1> | |
22 | <h2><%=h @ticket.summary -%></h2> | |
25 | | |
26 | | |
27 | | |
28 | | |
29 | | |
30 | | |
31 | | |
32 | | |
33 | | |
34 | | |
35 | | |
36 | | |
37 | | |
38 | | |
39 | | |
40 | | |
41 | | |
42 | | |
43 | | |
44 | | |
24 | <table id="ticket-details"> | |
25 | <tr> | |
26 | <td class="info">Reported by:</td> | |
27 | <td><%= format_author @ticket.author -%></td> | |
28 | <td class="info">Severity:</td> | |
29 | <td><%= @ticket.severity.name -%></td> | |
30 | </tr> | |
31 | <tr> | |
32 | <td class="info">Part:</td> | |
33 | <td><%= @ticket.part.name unless @ticket.part.nil? -%></td> | |
34 | <td class="info">Release:</td> | |
35 | <td><%= @ticket.release.name unless @ticket.release.nil? -%></td> | |
36 | </tr> | |
37 | <tr> | |
38 | <td class="info">Milestone:</td> | |
39 | <td><%= @ticket.milestone.name unless @ticket.milestone.nil? -%></td> | |
40 | <td class="info">Status</td> | |
41 | <td><%= @ticket.status.name-%></td> | |
42 | </tr> | |
43 | </table> | |
46 | ||
47 | ||
48 | ||
45 | <h3>Details by <%= format_author @ticket.author -%>:</h3> | |
46 | <%= make_links(htmlize(@ticket.content)) %> | |
47 | </div> | |
50 | ||
51 | ||
52 | ||
49 | <% first = true %> | |
50 | <% @ticket.ticket_changes.each do |change| -%> | |
51 | <% if (first) -%> | |
52 | <h3>Changelog:</h3> | |
53 | <div id="ticket-changes"> | |
54 | <% first = false; end -%> | |
54 | | |
55 | | |
56 | | |
57 | | |
58 | | |
59 | | |
60 | | |
61 | | |
62 | | |
56 | <h4>Modified by <%= format_author change.author -%> <%= change.created_at.strftime('%a, %B %d %Y - %H:%M:%S %Z') -%></h4> | |
57 | <ul> | |
58 | <% change.each_log do |log_entry| -%> | |
59 | <li><%= format_changes log_entry %></li> | |
60 | <% end -%> | |
61 | <% if change.has_attachment? -%> | |
62 | <li><strong>Attachment</strong> added: <%= link_to(change.attachment, :action => "attachment", :id => change.id) %></li> | |
63 | <% end -%> | |
64 | </ul> | |
64 | | |
65 | | |
66 | <% unless change.comment.nil? -%> | |
67 | <div id="ticket-change-comment"><%= make_links(htmlize(change.comment)) %></div> | |
68 | <% end -%> | |
<% end -%> | ||
67 | ||
70 | <% unless first -%> | |
71 | </div> | |
<% end -%> | ||
70 | ||
71 | ||
72 | ||
73 | | |
74 | | |
75 | | |
76 | | |
77 | ||
78 | | |
79 | | |
80 | | |
81 | ||
82 | | |
83 | | |
84 | | |
85 | ||
86 | | |
87 | | |
88 | | |
89 | ||
90 | | |
91 | | |
92 | | |
93 | | |
94 | | |
95 | | |
96 | | |
97 | | |
98 | | |
99 | | |
100 | | |
101 | | |
102 | | |
103 | | |
104 | | |
105 | | |
106 | | |
107 | | |
108 | | |
109 | | |
110 | | |
111 | | |
112 | ||
113 | | |
114 | | |
115 | ||
116 | ||
74 | <p /> | |
75 | <ul> | |
76 | <li><%= link_to 'Comment on, or change status of, this ticket', :action => 'comment', :id => @ticket.id, :anchor => 'comment' %></li> | |
77 | </ul> | |
<%= render_next_prev_links -%> | ||
</div> |
rool/rails/collaboa/trunk/config/environment.rb:
prev. | current | |
# Allow multiple Rails applications by giving the session cookie a | ||
# unique prefix. | ||
65 | ||
65 | ActionController::Base.session_options[:session_key] = 'collaboaapp_session_id' | |
66 | ActionController::Base.session_options[:tmpdir] = "/home/adh/rails/collaboa/sessions/" | |
# Make ruby use utf8 | ||
$KCODE = 'u' |
rool/rails/collaboa/trunk/public/stylesheets/screen.css:
prev. | current | |
font-size: 80%; | ||
} | ||
88 | ||
89 | ||
90 | | |
91 | | |
92 | ||
93 | ||
LABEL.first | ||
{ | ||
padding-top: 10px; | ||
} | ||
99 | ||
93 | LABEL | |
{ | ||
95 | font-size: 80%; | |
display: block; | ||
} | ||
104 | ||
99 | FIELDSET TD { font-size: 80%; } | |
100 | FIELDSET BR { display: block; } | |
101 | ||
102 | FIELDSET INPUT, FIELDSET TEXTAREA | |
{ | ||
display: block; | ||
107 | | |
105 | width: 100%; | |
margin-bottom: 10px; | ||
} | ||
111 | ||
TEXTAREA.largetextarea { height: 350px; } | ||
TEXTAREA.smalltextarea { height: 150px; } | ||
TEXTAREA.bigtextarea { height: 450px; } | ||
116 | ||
117 | ||
118 | | |
119 | | |
120 | ||
121 | ||
122 | ||
123 | ||
124 | | |
125 | ||
126 | ||
127 | ||
128 | ||
129 | | |
130 | | |
131 | ||
132 | ||
133 | ||
134 | ||
135 | | |
136 | | |
137 | ||
138 | ||
FORM.button-to INPUT | ||
{ | ||
width: auto; | ||
... | ... | |
float: right; | ||
} | ||
134 | INPUT[type~=CHECKBOX] | |
135 | { | |
136 | margin: 0; | |
137 | } | |
138 | ||
/** | ||
* Main | ||
*/ | ||
... | ... | |
border-top: 1px solid #e5ffd4; | ||
} | ||
150 | DIV.breadcrumbs | |
151 | { | |
152 | margin-top: 5px; | |
153 | border-top: 1px solid #e5ffd4; | |
154 | } | |
155 | ||
.breadcrumbs UL | ||
{ | ||
173 | | |
174 | | |
158 | margin: 0 0 5px 0; | |
159 | padding: 0; | |
} | ||
.breadcrumbs UL LI | ||
... | ... | |
TABLE.codediff td.ins { background: #dfd; } | ||
/** | ||
577 | | |
578 | | |
579 | ||
580 | ||
581 | ||
582 | | |
583 | | |
584 | | |
585 | ||
586 | ||
587 | ||
588 | ||
589 | | |
590 | ||
591 | ||
592 | ||
593 | ||
594 | | |
595 | ||
596 | ||
597 | ||
598 | ||
599 | | |
600 | ||
601 | ||
602 | ||
603 | ||
604 | | |
605 | | |
606 | | |
607 | | |
608 | | |
609 | ||
610 | ||
611 | ||
612 | ||
613 | ||
* Search | ||
*/ | ||
... | ... | |
vertical-align: middle; | ||
} | ||
638 | ||
586 | INPUT[type~=HIDDEN] | |
587 | { | |
display: none; | ||
} | ||
... | ... | |
{ | ||
border-left: 5px solid #e33; | ||
} | ||
639 |