# HG changeset patch # User Chris Cannam # Date 1301331025 -3600 # Node ID b9c2ba9e49b49a5578d4d093a7b540603e78b6b2 # Parent 2de308601155de912e7df6af4e9313eed0cd15d9# Parent defe55be97b9d9fb210123aa781221dd144a6e7e Merge from branch "feature_73" diff -r defe55be97b9 -r b9c2ba9e49b4 app/controllers/attachments_controller.rb --- a/app/controllers/attachments_controller.rb Thu Mar 24 15:48:36 2011 +0000 +++ b/app/controllers/attachments_controller.rb Mon Mar 28 17:50:25 2011 +0100 @@ -16,9 +16,11 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class AttachmentsController < ApplicationController + before_filter :find_project before_filter :file_readable, :read_authorize, :except => :destroy before_filter :delete_authorize, :only => :destroy + before_filter :active_authorize, :only => :toggle_active verify :method => :post, :only => :destroy @@ -54,6 +56,12 @@ redirect_to :controller => 'projects', :action => 'show', :id => @project end + def toggle_active + @attachment.active = !@attachment.active? + @attachment.save! + render :layout => false + end + private def find_project @attachment = Attachment.find(params[:id]) @@ -77,6 +85,10 @@ @attachment.deletable? ? true : deny_access end + def active_authorize + true + end + def detect_content_type(attachment) content_type = attachment.content_type if content_type.blank? diff -r defe55be97b9 -r b9c2ba9e49b4 app/controllers/files_controller.rb --- a/app/controllers/files_controller.rb Thu Mar 24 15:48:36 2011 +0000 +++ b/app/controllers/files_controller.rb Mon Mar 28 17:50:25 2011 +0100 @@ -8,8 +8,9 @@ include SortHelper def index - sort_init 'filename', 'asc' + sort_init 'active', 'asc' sort_update 'filename' => "#{Attachment.table_name}.filename", + 'active' => "#{Attachment.table_name}.active", 'created_on' => "#{Attachment.table_name}.created_on", 'size' => "#{Attachment.table_name}.filesize", 'downloads' => "#{Attachment.table_name}.downloads" @@ -33,4 +34,5 @@ end redirect_to project_files_path(@project) end + end diff -r defe55be97b9 -r b9c2ba9e49b4 app/controllers/members_controller.rb --- a/app/controllers/members_controller.rb Thu Mar 24 15:48:36 2011 +0000 +++ b/app/controllers/members_controller.rb Mon Mar 28 17:50:25 2011 +0100 @@ -54,8 +54,8 @@ errors = members.collect {|m| m.errors.full_messages }.flatten.uniq - - page.alert(l(:notice_failed_to_save_members, :errors => errors.join(', '))) + + # page.alert(l(:notice_failed_to_save_members, :errors => errors.join(', '))) } } diff -r defe55be97b9 -r b9c2ba9e49b4 app/views/attachments/toggle_active.rhtml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/attachments/toggle_active.rhtml Mon Mar 28 17:50:25 2011 +0100 @@ -0,0 +1,7 @@ +<%= +file = Attachment.find(params[:id]) +active_id = "active-" + file.id.to_s +link_to_remote image_tag(file.active? ? 'fav.png' : 'fav_off.png'), + :url => {:controller => 'attachments', :action => 'toggle_active', :project_id => @project.id, :id => file}, + :update => active_id +%> diff -r defe55be97b9 -r b9c2ba9e49b4 app/views/files/index.html.erb --- a/app/views/files/index.html.erb Thu Mar 24 15:48:36 2011 +0000 +++ b/app/views/files/index.html.erb Mon Mar 28 17:50:25 2011 +0100 @@ -5,29 +5,51 @@

<%=l(:label_attachment_plural)%>

<% delete_allowed = User.current.allowed_to?(:manage_files, @project) %> +<% active_change_allowed = delete_allowed %> + <%= sort_header_tag('active', :caption => l(:field_active)) %> <%= sort_header_tag('filename', :caption => l(:field_filename)) %> <%= sort_header_tag('created_on', :caption => l(:label_date), :default_order => 'desc') %> <%= sort_header_tag('size', :caption => l(:field_filesize), :default_order => 'desc') %> - <%= sort_header_tag('downloads', :caption => l(:label_downloads_abbr), :default_order => 'desc') %> + <%= sort_header_tag('downloads', :caption => l(:field_downloads), :default_order => 'desc') %> +<% have_file = false %> <% @containers.each do |container| %> <% next if container.attachments.empty? -%> <% if container.is_a?(Version) -%> - <% end -%> <% container.attachments.each do |file| %> - "> - + <%= "active" if file.active? %>"> + + <% if file.active? %> + + <% else %> + @@ -43,4 +65,6 @@
MD5
+ <%= link_to(h(container), {:controller => 'versions', :action => 'show', :id => container}, :class => "icon icon-package") %>
<%= link_to_attachment file, :download => true, :title => file.description %>
+ <% have_file = true %> + <% if active_change_allowed + active_id = "active-" + file.id.to_s -%> +
+ <%= link_to_remote image_tag(file.active? ? 'fav.png' : 'fav_off.png'), + :url => {:controller => 'attachments', :action => 'toggle_active', :project_id => @project.id, :id => file}, + :update => active_id + %> +
+ <% else -%> + <%= image_tag('fav.png') if file.active? %> + <% end -%> +
<%= link_to_attachment file, :download => true %>
<%= h(file.description) %>
<%= link_to_attachment file, :download => true, :title => file.description %> + <% end %> + <%= format_time(file.created_on) %> <%= number_to_human_size(file.filesize) %> <%= file.downloads %>
+<%= l(:text_files_active_change) if active_change_allowed and have_file %> + <% html_title(l(:label_attachment_plural)) -%> diff -r defe55be97b9 -r b9c2ba9e49b4 app/views/projects/settings/_members.rhtml --- a/app/views/projects/settings/_members.rhtml Thu Mar 24 15:48:36 2011 +0000 +++ b/app/views/projects/settings/_members.rhtml Mon Mar 28 17:50:25 2011 +0100 @@ -2,6 +2,7 @@ <% roles = Role.find_all_givable members = @project.member_principals.find(:all, :include => [:roles, :principal]).sort %> +
<% if members.any? %> @@ -73,10 +74,10 @@ <% end %> -

<%= l(:label_role_plural) %>: +

<%= l(:label_set_role_plural) %>:

<% roles.each do |role| %> - - <% end %>

+
<%=l( 'label_' + role.name.downcase + "_description").to_sym %>
+ <% end %>

<%= submit_tag l(:button_add), :id => 'member-add-submit' %>

diff -r defe55be97b9 -r b9c2ba9e49b4 config/locales/en-GB.yml --- a/config/locales/en-GB.yml Thu Mar 24 15:48:36 2011 +0000 +++ b/config/locales/en-GB.yml Mon Mar 28 17:50:25 2011 +0100 @@ -904,6 +904,7 @@ text_wiki_page_reassign_children: "Reassign child pages to this parent page" text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?" text_settings_repo_creation: The repository for a project should be set up automatically within a few minutes of the project being created.
You should not have to adjust any settings here; please check again in ten minutes. + text_files_active_change:
Click the star to switch active status for a download on or off.
Active files will be shown more prominently in the download page. text_settings_repo_is_internal: The repository for this project is an internal Mercurial Repository, hosted by SoundSoftware.ac.uk. text_settings_repo_is_external: You are tracking an external repository, with a mirror Mercurial repository hosted by SoundSoftware.ac.uk. @@ -967,3 +968,9 @@ label_user_search: "Search for user:" field_visible: Visible setting_emails_header: Emails header + + label_manager_description: All powers including adding and removing members and adjusting project settings + label_developer_description: Can commit to repository and carry out most project editing tasks + label_reporter_description: Can submit bug reports; has read access for private projects + + label_set_role_plural: Choose roles for new member \ No newline at end of file diff -r defe55be97b9 -r b9c2ba9e49b4 config/locales/en.yml --- a/config/locales/en.yml Thu Mar 24 15:48:36 2011 +0000 +++ b/config/locales/en.yml Mon Mar 28 17:50:25 2011 +0100 @@ -865,6 +865,7 @@ version_status_closed: closed field_active: Active + field_current: Current text_select_mail_notifications: Select actions for which email notifications should be sent. text_regexp_info: eg. ^[A-Z0-9]+$ @@ -930,13 +931,14 @@ text_zoom_in: Zoom in text_zoom_out: Zoom out text_settings_repo_creation: Creating repository...

The source code repository for a project will be set up automatically within a few minutes of the project being created.

Please check again in five minutes, and contact us if there is any problem.

If you wish to use this project to track a repository that is already hosted somewhere else, please wait until the repository has been created here and then return to this settings page to configure it.

If you don't want a repository at all, go to the Modules tab and switch it off there. + text_files_active_change:
Click the star to switch active status for a download on or off.
Active files will be shown more prominently in the download page. text_settings_repo_explanation: External repositories

Normally your project's primary repository will be the Mercurial repository hosted at this site.

However, if you already have your project hosted somewhere else, you can specify your existing external repository's URL here – then this site will track that repository in a read-only “mirror” copy. External Mercurial, git and Subversion repositories can be tracked. Note that you cannot switch to an external repository if you have already made any commits to the repository hosted here. text_settings_repo_is_internal: Currently the repository hosted at this site is the primary repository for this project. text_settings_repo_is_external: Currently the repository hosted at this site is a read-only copy of an external repository. text_settings_repo_need_help: Please contact us if you need help deciding how best to set this up.
We can also import complete revision history from other systems into a new primary repository for you if you wish. - + default_role_manager: Manager default_role_developer: Developer default_role_reporter: Reporter @@ -964,3 +966,9 @@ enumeration_activities: Activities (time tracking) enumeration_system_activity: System Activity + label_manager_description: All powers including adding and removing members and adjusting project settings + label_developer_description: Can commit to repository and carry out most project editing tasks + label_reporter_description: Can submit bug reports; has read access for private projects + + label_set_role_plural: Choose roles for new member + diff -r defe55be97b9 -r b9c2ba9e49b4 db/migrate/20110303152903_add_active_column_to_attachments.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/20110303152903_add_active_column_to_attachments.rb Mon Mar 28 17:50:25 2011 +0100 @@ -0,0 +1,9 @@ +class AddActiveColumnToAttachments < ActiveRecord::Migration + def self.up + add_column :attachments, :active, :boolean + end + + def self.down + remove_column :attachments, :active + end +end diff -r defe55be97b9 -r b9c2ba9e49b4 public/stylesheets/application.css --- a/public/stylesheets/application.css Thu Mar 24 15:48:36 2011 +0000 +++ b/public/stylesheets/application.css Mon Mar 28 17:50:25 2011 +0100 @@ -157,7 +157,7 @@ tr.changeset td.committed_on { text-align: center; width: 15%; } table.files tr.file td { text-align: center; } -table.files tr.file td.filename { text-align: left; padding-left: 24px; } +table.files tr.file td.filename { text-align: left; } table.files tr.file td.digest { font-size: 80%; } table.members td.roles, table.memberships td.roles { width: 45%; } diff -r defe55be97b9 -r b9c2ba9e49b4 public/themes/soundsoftware/stylesheets/application.css --- a/public/themes/soundsoftware/stylesheets/application.css Thu Mar 24 15:48:36 2011 +0000 +++ b/public/themes/soundsoftware/stylesheets/application.css Mon Mar 28 17:50:25 2011 +0100 @@ -37,16 +37,41 @@ body,p,h2,h3,h4,li,table,.wiki h1 { font-family: DroidSans, 'Liberation Sans', tahoma, verdana, sans-serif; + line-height: 1.34; } h2,h3,h4,.wiki h1 { color: #3e442c; + font-weight: bold; +} + +.wiki h2,.wiki h3,.wiki h4 { + color: #000; } h2,.wiki h1 { - font-size: 1.8em; + font-size: 1.8em; } +.wiki h2 { + margin-top: 1em; +} + +.splitcontentleft p:first-child { + margin-top: 0; +} + +div.attachments { + margin-top: 2em; +} +#wiki_add_attachment { + margin-top: 1.5em; +} + +/* Hide these (the paragraph markers that show anchors) -- they confuse more than they help */ +a.wiki-anchor:hover { display: none; } +h1:hover a.wiki-anchor, h2:hover a.wiki-anchor, h3:hover a.wiki-anchor { display: none; } + .box { padding: 6px; margin-bottom: 10px; @@ -81,6 +106,10 @@ ul.projects .public, ul.projects .private { padding-left: 0.5em; color: #3e442c; font-size: 0.95em } +table.files tr.active td { padding-top: 0.5em; padding-bottom: 0.5em; } +table.files .file .active { font-weight: bold; } +table.files .file .description { font-weight: normal; color: #3e442c; } + #top-menu { position: absolute; top: 0; z-index: 1; left: 0px; width: 100%; font-size: 90%; /* height: 2em; */ margin: 0; padding: 0; padding-top: 0.5em; background-color: #3e442c; } #top-menu ul { margin-left: 10px; } #top-menu a { font-weight: bold; } @@ -98,7 +127,7 @@ #project-jump-box { float: right; margin-right: 6px; margin-top: 5px; color: #000; } #project-ancestors-title { margin-bottom: 0px; - margin-left: 10px; + margin-left: 12px; margin-top: 6px; font-family: GilliusADFNo2, 'Gill Sans', Tahoma, sans-serif; font-weight: normal;