Merged r2563, r2566, r2567, r2568, r2569, r2582 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.8-stable@2650 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
37da5ba187
commit
b6600d5fe9
|
@ -38,6 +38,8 @@ module IssuesHelper
|
|||
s = "issue status-#{issue.status.position} priority-#{issue.priority.position}"
|
||||
s << ' closed' if issue.closed?
|
||||
s << ' overdue' if issue.overdue?
|
||||
s << ' created-by-me' if User.current.logged? && issue.author_id == User.current.id
|
||||
s << ' assigned-to-me' if User.current.logged? && issue.assigned_to_id == User.current.id
|
||||
s
|
||||
end
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ module QueriesHelper
|
|||
else
|
||||
case column.name
|
||||
when :subject
|
||||
h((@project.nil? || @project != issue.project) ? "#{issue.project.name} - " : '') +
|
||||
h((!@project.nil? && @project != issue.project) ? "#{issue.project.name} - " : '') +
|
||||
link_to(h(value), :controller => 'issues', :action => 'show', :id => issue)
|
||||
when :done_ratio
|
||||
progress_bar(value, :width => '80px')
|
||||
|
|
|
@ -33,7 +33,7 @@ class Attachment < ActiveRecord::Base
|
|||
:author_key => :author_id,
|
||||
:find_options => {:select => "#{Attachment.table_name}.*",
|
||||
:joins => "LEFT JOIN #{Version.table_name} ON #{Attachment.table_name}.container_type='Version' AND #{Version.table_name}.id = #{Attachment.table_name}.container_id " +
|
||||
"LEFT JOIN #{Project.table_name} ON #{Version.table_name}.project_id = #{Project.table_name}.id"}
|
||||
"LEFT JOIN #{Project.table_name} ON #{Version.table_name}.project_id = #{Project.table_name}.id OR ( #{Attachment.table_name}.container_type='Project' AND #{Attachment.table_name}.container_id = #{Project.table_name}.id )"}
|
||||
|
||||
acts_as_activity_provider :type => 'documents',
|
||||
:permission => :view_documents,
|
||||
|
|
|
@ -93,6 +93,7 @@ class Query < ActiveRecord::Base
|
|||
cattr_reader :operators_by_filter_type
|
||||
|
||||
@@available_columns = [
|
||||
QueryColumn.new(:project, :sortable => "#{Project.table_name}.name"),
|
||||
QueryColumn.new(:tracker, :sortable => "#{Tracker.table_name}.position"),
|
||||
QueryColumn.new(:status, :sortable => "#{IssueStatus.table_name}.position"),
|
||||
QueryColumn.new(:priority, :sortable => "#{Enumeration.table_name}.position", :default_order => 'desc'),
|
||||
|
@ -234,7 +235,10 @@ class Query < ActiveRecord::Base
|
|||
|
||||
def columns
|
||||
if has_default_columns?
|
||||
available_columns.select {|c| Setting.issue_list_default_columns.include?(c.name.to_s) }
|
||||
available_columns.select do |c|
|
||||
# Adds the project column by default for cross-project lists
|
||||
Setting.issue_list_default_columns.include?(c.name.to_s) || (c.name == :project && project.nil?)
|
||||
end
|
||||
else
|
||||
# preserve the column_names order
|
||||
column_names.collect {|name| available_columns.find {|col| col.name == name}}.compact
|
||||
|
|
|
@ -54,8 +54,8 @@ class Repository::Subversion < Repository
|
|||
# loads changesets by batches of 200
|
||||
identifier_to = [identifier_from + 199, scm_revision].min
|
||||
revisions = scm.revisions('', identifier_to, identifier_from, :with_paths => true)
|
||||
transaction do
|
||||
revisions.reverse_each do |revision|
|
||||
transaction do
|
||||
changeset = Changeset.create(:repository => self,
|
||||
:revision => revision.identifier,
|
||||
:committer => revision.author,
|
||||
|
@ -68,7 +68,7 @@ class Repository::Subversion < Repository
|
|||
:path => change[:path],
|
||||
:from_path => change[:from_path],
|
||||
:from_revision => change[:from_revision])
|
||||
end
|
||||
end unless changeset.new_record?
|
||||
end
|
||||
end unless revisions.nil?
|
||||
identifier_from = identifier_to + 1
|
||||
|
|
|
@ -11,7 +11,7 @@ while day <= calendar.enddt %>
|
|||
<p class="day-num"><%= day.day %></p>
|
||||
<% calendar.events_on(day).each do |i| %>
|
||||
<% if i.is_a? Issue %>
|
||||
<div class="tooltip">
|
||||
<div class="<%= css_issue_classes(i) %> tooltip">
|
||||
<%= if day == i.start_date && day == i.due_date
|
||||
image_tag('arrow_bw.png')
|
||||
elsif day == i.start_date
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
<h2><%= @issue.tracker.name %> #<%= @issue.id %></h2>
|
||||
|
||||
<div class="<%= css_issue_classes(@issue) %>">
|
||||
<div class="<%= css_issue_classes(@issue) %> details">
|
||||
<%= avatar(@issue.author, :size => "64") %>
|
||||
<h3><%=h @issue.subject %></h3>
|
||||
<p class="author">
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<h2><%= l(:label_spent_time) %></h2>
|
||||
|
||||
<% form_remote_tag( :url => {}, :method => :get, :update => 'content' ) do %>
|
||||
<%= hidden_field_tag 'project_id', params[:project_id] %>
|
||||
<%= hidden_field_tag('project_id', params[:project_id]) if @project %>
|
||||
<%= hidden_field_tag 'issue_id', params[:issue_id] if @issue %>
|
||||
<%= render :partial => 'date_range' %>
|
||||
<% end %>
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<% @criterias.each do |criteria| %>
|
||||
<%= hidden_field_tag 'criterias[]', criteria, :id => nil %>
|
||||
<% end %>
|
||||
<%= hidden_field_tag 'project_id', params[:project_id] %>
|
||||
<%= hidden_field_tag('project_id', params[:project_id]) if @project %>
|
||||
<%= render :partial => 'date_range' %>
|
||||
|
||||
<p><%= l(:label_details) %>: <%= select_tag 'columns', options_for_select([[l(:label_year), 'year'],
|
||||
|
|
|
@ -7,9 +7,13 @@ http://www.redmine.org/
|
|||
|
||||
== 2009-xx-xx v0.8.3
|
||||
|
||||
* Separate project field and subject in cross-project issue view
|
||||
* Ability to set language for redmine:load_default_data task using REDMINE_LANG environment variable
|
||||
* Rescue Redmine::DefaultData::DataAlreadyLoaded in redmine:load_default_data task
|
||||
* CSS classes to highlight own and assigned issues
|
||||
* Flush buffer when asking for language in redmine:load_default_data task
|
||||
* Fixed: Time entries csv export links for all projects are malformed
|
||||
* Fixed: Files without Version aren't visible in the Activity page
|
||||
|
||||
|
||||
== 2009-03-07 v0.8.2
|
||||
|
|
|
@ -51,6 +51,8 @@ class IssuesControllerTest < Test::Unit::TestCase
|
|||
end
|
||||
|
||||
def test_index
|
||||
Setting.default_language = 'en'
|
||||
|
||||
get :index
|
||||
assert_response :success
|
||||
assert_template 'index.rhtml'
|
||||
|
@ -61,6 +63,8 @@ class IssuesControllerTest < Test::Unit::TestCase
|
|||
# private projects hidden
|
||||
assert_no_tag :tag => 'a', :content => /Issue of a private subproject/
|
||||
assert_no_tag :tag => 'a', :content => /Issue on project 2/
|
||||
# project column
|
||||
assert_tag :tag => 'th', :content => /Project/
|
||||
end
|
||||
|
||||
def test_index_should_not_list_issues_when_module_disabled
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class ActivityTest < Test::Unit::TestCase
|
||||
fixtures :projects, :versions, :users, :roles, :members, :issues, :journals, :journal_details,
|
||||
fixtures :projects, :versions, :attachments, :users, :roles, :members, :issues, :journals, :journal_details,
|
||||
:trackers, :projects_trackers, :issue_statuses, :enabled_modules, :enumerations, :boards, :messages
|
||||
|
||||
def setup
|
||||
|
@ -72,6 +72,18 @@ class ActivityTest < Test::Unit::TestCase
|
|||
assert_nil(events.detect {|e| e.event_author != user})
|
||||
end
|
||||
|
||||
def test_files_activity
|
||||
f = Redmine::Activity::Fetcher.new(User.anonymous, :project => Project.find(1))
|
||||
f.scope = ['files']
|
||||
events = f.events
|
||||
|
||||
assert_kind_of Array, events
|
||||
assert events.include?(Attachment.find_by_container_type_and_container_id('Project', 1))
|
||||
assert events.include?(Attachment.find_by_container_type_and_container_id('Version', 1))
|
||||
assert_equal [Attachment], events.collect(&:class).uniq
|
||||
assert_equal %w(Project Version), events.collect(&:container_type).uniq.sort
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def find_events(user, options={})
|
||||
|
|
Loading…
Reference in New Issue