diff --git a/app/controllers/at_controller.rb b/app/controllers/at_controller.rb new file mode 100644 index 000000000..92506d4e8 --- /dev/null +++ b/app/controllers/at_controller.rb @@ -0,0 +1,25 @@ +#coding=utf-8 + +class AtController < ApplicationController + respond_to :js + + def show + type = params[:type] + case type + when "Issue" + @users = find_issue(params) + else + end + end + + private + def find_issue(params) + #1. issues list persons + #2. project persons + issue = Issue.find(params[:id]) + journals = issue.journals + at_persons = journals.map(&:user) + issue.project.users + at_persons.uniq{|u| u.id}.delete_if{|u| u.id == User.current.id} + end + +end \ No newline at end of file diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 7cdc838e2..6f441c29a 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -142,24 +142,17 @@ class IssuesController < ApplicationController @project_base_tag = (params[:project_id] || @issue.project) ? 'base_projects':'base'#by young @available_watchers = (@issue.project.users.sort + @issue.watcher_users).uniq - #id name email - #1. issues list persons - #2. project persons - @at_persons = @journals.map(&:user) + @issue.project.users - @at_persons = @at_persons.uniq{|u| u.id}.delete_if{|u| u.id == User.current.id} - @at_persons = nil - - respond_to do |format|`` - format.html { - retrieve_previous_and_next_issue_ids - render :template => 'issues/show', :layout => @project_base_tag#by young - } - format.api - format.atom { render :template => 'journals/index', :layout => false, :content_type => 'application/atom+xml' } - format.pdf { - pdf = issue_to_pdf(@issue, :journals => @journals) - send_data(pdf, :type => 'application/pdf', :filename => filename_for_content_disposition("#{@project.identifier}-#{@issue.id}.pdf") ) - } + respond_to do |format| + format.html { + retrieve_previous_and_next_issue_ids + render :template => 'issues/show', :layout => @project_base_tag#by young + } + format.api + format.atom { render :template => 'journals/index', :layout => false, :content_type => 'application/atom+xml' } + format.pdf { + pdf = issue_to_pdf(@issue, :journals => @journals) + send_data(pdf, :type => 'application/pdf', :filename => filename_for_content_disposition("#{@project.identifier}-#{@issue.id}.pdf") ) + } end end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index ba8fe4f53..227de930f 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -2624,15 +2624,7 @@ int main(int argc, char** argv){ opt = {enable_at: true, prettify: false, init_activity: false}.merge default_opt ss = '' if opt[:enable_at] - ss = '" + ss += %Q|| end ss += javascript_include_tag("/assets/kindeditor/kindeditor",'/assets/kindeditor/pasteimg') diff --git a/app/views/at/show.js.erb b/app/views/at/show.js.erb new file mode 100644 index 000000000..df253f237 --- /dev/null +++ b/app/views/at/show.js.erb @@ -0,0 +1,8 @@ +(function(){ + window.atPersonLists = []; + <% @users && @users.each_with_index do |person,index| %> + var o = {id: <%=index%>, name: '<%=person.show_name%>', login: '<%=person.login%>', searchKey: '<%=person.get_at_show_name%>'}; + atPersonLists.push(o); + <% end %> + +})(); diff --git a/app/views/issues/show.html.erb b/app/views/issues/show.html.erb index 80d3aaac1..67d1186c4 100644 --- a/app/views/issues/show.html.erb +++ b/app/views/issues/show.html.erb @@ -1,5 +1,5 @@ <%= content_for(:header_tags) do %> -<%= import_ke(enable_at: true) %> +<%= import_ke(enable_at: {id: @issue.id, type: 'Issue'}) %> <% end %>
diff --git a/config/routes.rb b/config/routes.rb index 59eb29d70..656f55720 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1035,13 +1035,14 @@ RedmineApp::Application.routes.draw do match 'system_log/clear' ##ended by lizanle - resources :git_callback do collection do post 'post_update' end end + resources :at + Dir.glob File.expand_path("plugins/*", Rails.root) do |plugin_dir| file = File.join(plugin_dir, "config/routes.rb") if File.exists?(file) diff --git a/public/assets/kindeditor/at/config.js b/public/assets/kindeditor/at/config.js index b9769c42e..0a1bbf11a 100644 --- a/public/assets/kindeditor/at/config.js +++ b/public/assets/kindeditor/at/config.js @@ -1,4 +1,4 @@ -function enableAt(_editor) { +var enableAt = function(_editor) { var editor = _editor; if(editor.edit == undefined || editor.edit.iframe == undefined){ return; @@ -11,7 +11,7 @@ function enableAt(_editor) { console.log("enable at"); $.fn.atwho.debug = true; - if(!atPersonLists){ + if("undefined" === (typeof atPersonLists) || !atPersonLists){ return; } var names = atPersonLists; @@ -32,7 +32,6 @@ function enableAt(_editor) { } $inputor = $(ifrBody).atwho(at_config); - window.aaa= $inputor; $inputor.caret('pos', 47); $inputor.focus().atwho('run'); };