diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index cba836ed0..e3bd0ba91 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -192,6 +192,10 @@ class IssuesController < ApplicationController if saved render_attachment_warning_if_needed(@issue) + reply_id = params[:reference_user_id].to_i + if reply_id > 0 + JournalReply.add_reply(@issue.current_journal.id, reply_id, User.current.id) + end flash[:notice] = l(:notice_successful_update) unless @issue.current_journal.new_record? respond_to do |format| diff --git a/app/controllers/journals_controller.rb b/app/controllers/journals_controller.rb index ad6728e37..24784d26f 100644 --- a/app/controllers/journals_controller.rb +++ b/app/controllers/journals_controller.rb @@ -69,6 +69,7 @@ class JournalsController < ApplicationController text = text.to_s.strip.gsub(%r{
((.|\s)*?)}m, '[...]') @content = "#{ll(Setting.default_language, :text_user_wrote, user)}\n> " @content << text.gsub(/(\r?\n|\r\n?)/, "\n> ") + "\n\n" + @id = user.id rescue ActiveRecord::RecordNotFound render_404 end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index d6bf74da2..454d15f58 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -24,6 +24,7 @@ class UsersController < ApplicationController menu_item :user_newfeedback, :only => :user_newfeedback #Ended by young + before_filter :require_admin, :except => [:show, :index,:tag_save, :user_projects, :user_newfeedback, :user_comments, :watch_bids, :info, :user_watchlist, :user_fanslist,:edit] before_filter :find_user, :only => [:user_fanslist, :user_watchlist, :show, :edit, :update, :destroy, :edit_membership, :destroy_membership, :user_activities, :user_projects, :user_newfeedback, :user_comments, :watch_bids, :info] @@ -216,10 +217,20 @@ class UsersController < ApplicationController #### added by fq def info - @message = [] + + message = [] if @user == User.current - @message = JournalsForMessage.reference_message(@user.id) - end + + message = JournalsForMessage.reference_message(@user.id) + message += Journal.reference_message(@user.id) end + @offset, @limit = api_offset_and_limit({:limit => 10}) + @info_count = message.size + @info_pages = Paginator.new @info_count, @limit, params['page'] + @offset ||= @info_pages.offset + + messages = message.sort {|x,y| y.created_on <=> x.created_on } + + @message = messages[@offset, @limit] unless User.current.admin? if !@user.active? diff --git a/app/models/activity.rb b/app/models/activity.rb new file mode 100644 index 000000000..08cf22264 --- /dev/null +++ b/app/models/activity.rb @@ -0,0 +1,4 @@ +class Activity < ActiveRecord::Base + attr_accessible :act_id, :act_type, :user_id + belongs_to :act, :polymorphic => true +end diff --git a/app/models/bid.rb b/app/models/bid.rb index 7f5d8a472..1001ceb8c 100644 --- a/app/models/bid.rb +++ b/app/models/bid.rb @@ -6,6 +6,7 @@ class Bid < ActiveRecord::Base has_many :biding_projects, :dependent => :destroy has_many :projects, :through => :biding_projects has_many :journals_for_messages, :as => :jour, :dependent => :destroy + has_many :acts, :as => :act, :dependent => :destroy NAME_LENGTH_LIMIT = 60 DESCRIPTION_LENGTH_LIMIT = 250 @@ -17,6 +18,8 @@ class Bid < ActiveRecord::Base # validates_format_of :deadline, :with => validate :validate_user + # after_save :act_as_activity + scope :visible, lambda {|*args| nil } @@ -77,4 +80,8 @@ class Bid < ActiveRecord::Base def validate_user errors.add :author_id, :invalid if author.nil? || !author.active? end + + # def act_as_activity + # self.acts << Activity.new(:user_id => self.author_id) + # end end diff --git a/app/models/journal.rb b/app/models/journal.rb index a75c112db..b9d6bd78b 100644 --- a/app/models/journal.rb +++ b/app/models/journal.rb @@ -23,6 +23,9 @@ class Journal < ActiveRecord::Base belongs_to :user has_many :details, :class_name => "JournalDetail", :dependent => :delete_all + # added by fq + has_one :journal_reply + #end attr_accessor :indice acts_as_event :title => Proc.new {|o| status = ((s = o.new_status) ? " (#{s})" : nil); "#{o.issue.tracker} ##{o.issue.id}#{status}: #{o.issue.subject}" }, @@ -108,6 +111,14 @@ class Journal < ActiveRecord::Base end notified.map(&:mail) end + + ## added_by_fq + def self.reference_message(user_id) + message = Journal.find_by_sql("select id, journalized_id, user_id, notes, created_on from journals where id in (select journal_id from journal_replies where reply_id = #{user_id})") + message += Journal.find_by_sql("select id, journalized_id, user_id, notes, created_on from journals where journalized_id in (select id from issues where assigned_to_id = #{user_id})") + message + end + ## private diff --git a/app/models/journal_reply.rb b/app/models/journal_reply.rb new file mode 100644 index 000000000..814231776 --- /dev/null +++ b/app/models/journal_reply.rb @@ -0,0 +1,12 @@ +# added by fq + +class JournalReply < ActiveRecord::Base + attr_accessible :journal_id, :reply_id, :user_id + + belongs_to :user + belongs_to :journal + + def self.add_reply(journal_id, reply_id, user_id) + self.create(:journal_id => journal_id, :reply_id => reply_id, :user_id => user_id) + end +end diff --git a/app/models/journals_for_message.rb b/app/models/journals_for_message.rb index 2d53be81a..7f2d76478 100644 --- a/app/models/journals_for_message.rb +++ b/app/models/journals_for_message.rb @@ -16,7 +16,7 @@ class JournalsForMessage < ActiveRecord::Base def self.reference_message(user_id) @user = User.find(user_id) - message = JournalsForMessage.find_by_sql("select * from journals_for_messages where reply_id = #{@user.id} or (jour_type = 'Bid' and jour_id in (select id from bids where author_id = #{@user.id}))", ) + message = JournalsForMessage.find_by_sql("select * from journals_for_messages where reply_id = #{@user.id} or (jour_type = 'Bid' and jour_id in (select id from bids where author_id = #{@user.id}))") message end diff --git a/app/models/user.rb b/app/models/user.rb index f5c7e8337..5ebfde711 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -81,6 +81,7 @@ class User < Principal has_many :jours, :class_name => 'JournalsForMessage', :dependent => :destroy has_many :bids, :foreign_key => 'author_id', :dependent => :destroy has_many :journals_for_messages, :as => :jour, :dependent => :destroy + has_many :journal_replies ##### diff --git a/app/views/issues/_edit.html.erb b/app/views/issues/_edit.html.erb index f2052a27a..e915dbd79 100644 --- a/app/views/issues/_edit.html.erb +++ b/app/views/issues/_edit.html.erb @@ -44,6 +44,7 @@ <%= f.hidden_field :lock_version %> <%= hidden_field_tag 'last_journal_id', params[:last_journal_id] || @issue.last_journal_id %> + <%= hidden_field_tag 'reference_user_id', params[:reference_user_id]%> <%= submit_tag l(:button_submit) %> <%= preview_link preview_edit_issue_path(:project_id => @project, :id => @issue), 'issue-form' %> <% end %> diff --git a/app/views/journals/edit.js.erb b/app/views/journals/edit.js.erb index 96cf6b4f8..761029ddc 100644 --- a/app/views/journals/edit.js.erb +++ b/app/views/journals/edit.js.erb @@ -1,5 +1,5 @@ $("#journal-<%= @journal.id %>-notes").hide(); - +$('#new_form_reference_user_id').val(''); if ($("form#journal-<%= @journal.id %>-form").length > 0) { // journal edit form already loaded $("#journal-<%= @journal.id %>-form").show(); diff --git a/app/views/journals/new.js.erb b/app/views/journals/new.js.erb index 78ec5f360..ae2574595 100644 --- a/app/views/journals/new.js.erb +++ b/app/views/journals/new.js.erb @@ -8,3 +8,5 @@ $('#issue_private_notes').attr('checked', true); showAndScrollTo("update", "notes"); $('#notes').scrollTop = $('#notes').scrollHeight - $('#notes').clientHeight; + +$('#reference_user_id').val("<%= @id %>"); \ No newline at end of file diff --git a/app/views/journals/update.js.erb b/app/views/journals/update.js.erb index 65c198d59..ad051334e 100644 --- a/app/views/journals/update.js.erb +++ b/app/views/journals/update.js.erb @@ -5,5 +5,5 @@ $("#journal-<%= @journal.id %>-notes").show(); $("#journal-<%= @journal.id %>-form").remove(); <% end %> - +$('#new_form_reference_user_id').val(''); <%= call_hook(:view_journals_update_js_bottom, { :journal => @journal }) %> diff --git a/app/views/users/info.html.erb b/app/views/users/info.html.erb index 6a91e08b8..7966221c9 100644 --- a/app/views/users/info.html.erb +++ b/app/views/users/info.html.erb @@ -1,7 +1,7 @@ <% unless @message.empty? %>