Merge branch 'guange_dev' into develop

This commit is contained in:
sw 2015-05-27 08:56:56 +08:00
commit 44d452cdb5
14 changed files with 202 additions and 90 deletions

View File

@ -6,6 +6,10 @@ unless RUBY_PLATFORM =~ /w32/
gem 'iconv' gem 'iconv'
end end
source 'http://rubygems.oneapm.com' do
gem 'oneapm_rpm'
end
gem "mysql2", "= 0.3.18" gem "mysql2", "= 0.3.18"
gem 'redis-rails' gem 'redis-rails'
gem 'rubyzip' gem 'rubyzip'

View File

@ -107,7 +107,7 @@ module Mobile
present :status,0 present :status,0
end end
desc "给用户留言或回复用户留言" desc "回复用户留言"
params do params do
requires :token, type: String requires :token, type: String
requires :user_id, type: Integer,desc: '被留言的用户id' requires :user_id, type: Integer,desc: '被留言的用户id'
@ -116,12 +116,23 @@ module Mobile
requires :parent_id,type:Integer,desc:'留言父id' requires :parent_id,type:Integer,desc:'留言父id'
requires :ref_message_id,type:Integer,desc:'引用消息id' requires :ref_message_id,type:Integer,desc:'引用消息id'
end end
post ':user_id/leave_message' do post ':user_id/reply_message' do
us = UsersService.new us = UsersService.new
jours = us.reply_user_messages params,current_user jours = us.reply_user_messages params,current_user
present :status,0 present :status,0
end end
desc "给用户留言"
params do
requires :token, type: String
requires :user_id, type: Integer,desc:'被留言的用户id'
requires :content, type: String,desc:'留言内容'
end
post ':user_id/leave_message' do
us = UsersService.new
us.leave_message params,current_user
present :data,0
end
end end
end end
end end

View File

@ -336,6 +336,7 @@ class AccountController < ApplicationController
:expires => 1.month.from_now, :expires => 1.month.from_now,
:path => (Redmine::Configuration['autologin_cookie_path'] || '/'), :path => (Redmine::Configuration['autologin_cookie_path'] || '/'),
:secure => (Redmine::Configuration['autologin_cookie_secure'] ? true : false), :secure => (Redmine::Configuration['autologin_cookie_secure'] ? true : false),
:domain => '.trustie.net',
:httponly => true :httponly => true
} }
cookies[autologin_cookie_name] = cookie_options cookies[autologin_cookie_name] = cookie_options

View File

@ -348,7 +348,7 @@ class ProjectsController < ApplicationController
if !params[:mail].blank? && User.find_by_mail(params[:mail].to_s).nil? if !params[:mail].blank? && User.find_by_mail(params[:mail].to_s).nil?
email = params[:mail] email = params[:mail]
Mailer.run.send_invite_in_project(email, @project, User.current) Mailer.run.send_invite_in_project(email, @project, User.current)
@is_zhuce =false @is_zhuce = false
flash[:notice] = l(:notice_email_sent, :value => email) flash[:notice] = l(:notice_email_sent, :value => email)
elsif !User.find_by_mail(params[:mail].to_s).nil? elsif !User.find_by_mail(params[:mail].to_s).nil?
user = User.find_by_mail(params[:mail].to_s) user = User.find_by_mail(params[:mail].to_s)

View File

@ -184,7 +184,11 @@ class UsersService
user.add_jour(nil, nil,nil,options) user.add_jour(nil, nil,nil,options)
end end
# 给用户留言
def leave_message params,current_user
obj = User.find(params[:user_id]).add_jour(current_user, params[:content], 0)
obj
end
#关注列表 #关注列表

View File

@ -5,12 +5,10 @@
<li> <li>
<% if @issue.safe_attribute? 'tracker_id' %> <% if @issue.safe_attribute? 'tracker_id' %>
<label class="label"><span class="c_red f12">*</span>&nbsp;类型&nbsp;&nbsp;:&nbsp;</label> <label class="label"><span class="c_red f12">*</span>&nbsp;类型&nbsp;&nbsp;:&nbsp;</label>
<%= f.select :tracker_id, <%= f.select :tracker_id, @issue.project.trackers.collect { |t| [t.name, t.id] },
@issue.project.trackers.collect { |t| [t.name, t.id] }, {:required => true, :no_label => true},
{:required => true, :no_label => true}, :onchange => "updateIssueFrom('#{escape_javascript project_issue_form_path(@project, :id => @issue, :format => 'js')}')",
:onchange => "updateIssueFrom('#{escape_javascript project_issue_form_path(@project, :id => @issue, :format => 'js')}')", :class => "w90" %>
:class => "w90"
%>
<% end %> <% end %>
</li> </li>
<li> <li>
@ -31,11 +29,10 @@
<% if @issue.safe_attribute? 'subject' %> <% if @issue.safe_attribute? 'subject' %>
<label class="label"><span class="c_red f12">*</span>&nbsp;主题&nbsp;&nbsp;:&nbsp;</label> <label class="label"><span class="c_red f12">*</span>&nbsp;主题&nbsp;&nbsp;:&nbsp;</label>
<%= f.text_field :subject, <%= f.text_field :subject,
:class => "w583", :class => "w576",
:maxlength => 255, :maxlength => 255,
:style => "font-size:small", :style => "font-size:small",
:no_label => true :no_label => true %>
%>
<!--Added by young--> <!--Added by young-->
<%= javascript_tag do %> <%= javascript_tag do %>
observeAutocompleteField('issue_subject', observeAutocompleteField('issue_subject',
@ -55,15 +52,16 @@
<label class="label">&nbsp;描述&nbsp;&nbsp;:&nbsp;</label> <label class="label">&nbsp;描述&nbsp;&nbsp;:&nbsp;</label>
<%= f.label_for_field :description, :required => @issue.required_attribute?('description'), :no_label => true, :class => "label" %> <%= f.label_for_field :description, :required => @issue.required_attribute?('description'), :no_label => true, :class => "label" %>
<%= link_to_function image_tag('edit.png'), '$(this).hide(); $("#issue_description_and_toolbar").show()' unless @issue.new_record? %> <%= link_to_function image_tag('edit.png'), '$(this).hide(); $("#issue_description_and_toolbar").show()' unless @issue.new_record? %>
<%= content_tag 'span', :id => "issue_description_and_toolbar", :style => (@issue.new_record? ? nil : 'display:none') do %> <%= content_tag 'span', :id => "issue_description_and_toolbar" do %>
<%= f.text_area :description, <%= f.kindeditor :description,:editor_id => "issue_desc_editor",
:rows => (@issue.description.blank? ? 10 : [[10, @issue.description.length / 50].max, 100].min), # :rows => (@issue.description.blank? ? 10 : [[10, @issue.description.length / 50].max, 100].min),
:accesskey => accesskey(:edit), # :accesskey => accesskey(:edit),
:class => "w583", # :class => "w583",
:no_label => true %> :width=>'87%',
:resizeType => 0,
:no_label => true %>
<% end %> <% end %>
<%#= wikitoolbar_for 'issue_description' %>
<%= wikitoolbar_for 'issue_description' %>
<% end %> <% end %>
</li> </li>
<div class="cl"></div> <div class="cl"></div>
@ -96,20 +94,20 @@
</div> </div>
<div class="cl"></div> <div class="cl"></div>
<!--<div class="newpro_box02 ">--> <!--<div class="newpro_box02 ">-->
<!--<label class="label"> <%#= l(:label_issue_watchers) %></label>--> <!--<label class="label"> <%#= l(:label_issue_watchers) %></label>-->
<!--<input id="" name="" size="22" class="fl mb10 h26" type="text" placeholder="搜索添加跟踪者">--> <!--<input id="" name="" size="22" class="fl mb10 h26" type="text" placeholder="搜索添加跟踪者">-->
<!--<span class="search_for_watchers">--> <!--<span class="search_for_watchers">-->
<%#= link_to "", <%#= link_to "",
# {:controller => 'watchers', :action => 'new', :project_id => @issue.project}, # {:controller => 'watchers', :action => 'new', :project_id => @issue.project},
# :remote => true, # :remote => true,
# :method => 'get', # :method => 'get',
:class => "pic_sch mt5 ml5" %> :class => "pic_sch mt5 ml5" %>
<!--</span>--> <!--</span>-->
<%#= javascript_tag "observeSearchfield('user_search', 'users_for_watcher', '#{ escape_javascript watchers_autocomplete_for_user_path(:user => @available_watchers, :format => 'js', :flag => 'ture') }')" %> <%#= javascript_tag "observeSearchfield('user_search', 'users_for_watcher', '#{ escape_javascript watchers_autocomplete_for_user_path(:user => @available_watchers, :format => 'js', :flag => 'ture') }')" %>
<!--<div class="cl"></div>--> <!--<div class="cl"></div>-->
<!--<span id="watchers_inputs">--> <!--<span id="watchers_inputs">-->
<!--<%#= watchers_checkboxes(@issue, @available_watchers) %>--> <!--<%#= watchers_checkboxes(@issue, @available_watchers) %>-->
<!--</span>--> <!--</span>-->
<!--<div class="cl"></div>--> <!--<div class="cl"></div>-->
<!--</div>--> <!--</div>-->
<%= call_hook(:view_issues_form_details_bottom, {:issue => @issue, :form => f}) %> <%= call_hook(:view_issues_form_details_bottom, {:issue => @issue, :form => f}) %>

View File

@ -1,3 +1,4 @@
<%= javascript_include_tag "/assets/kindeditor/kindeditor" %>
<div class="project_r_h" xmlns="http://www.w3.org/1999/html"> <div class="project_r_h" xmlns="http://www.w3.org/1999/html">
<h2 class="project_h2"><%= l(:label_issue_new) %></h2> <h2 class="project_h2"><%= l(:label_issue_new) %></h2>
</div> </div>
@ -10,7 +11,7 @@
<%= render :partial => 'issues/form', :locals => {:f => f} %> <%= render :partial => 'issues/form', :locals => {:f => f} %>
</div> </div>
<!--<%= javascript_tag "$('#issue_subject').focus();" %>--> <!--<%= javascript_tag "$('#issue_subject').focus();" %>-->
<a href="#" class="blue_btn fl ml80" onclick="$('#issue-form').submit();"> <a href="#" class="blue_btn fl ml80" onclick="issue_desc_editor.sync();$('#issue-form').submit();">
<%= l(:button_create) %> <%= l(:button_create) %>
</a> </a>
<%#= preview_link preview_new_issue_path(:project_id => @project), 'issue-form', 'preview', {:class => "blue_btn fl ml10"} %> <%#= preview_link preview_new_issue_path(:project_id => @project), 'issue-form', 'preview', {:class => "blue_btn fl ml10"} %>

View File

@ -1,3 +1,4 @@
<%= javascript_include_tag "/assets/kindeditor/kindeditor" %>
<div class="project_r_h"> <div class="project_r_h">
<h2 class="project_h2"><%= l(:label_issue_edit) %></h2> <h2 class="project_h2"><%= l(:label_issue_edit) %></h2>
</div> </div>
@ -32,7 +33,7 @@
<% if @issue.description? || @issue.attachments.any? -%> <% if @issue.description? || @issue.attachments.any? -%>
<% if @issue.description? %> <% if @issue.description? %>
<%#= link_to l(:button_quote), quoted_issue_path(@issue.id), :remote => true, :method => 'post', :class => 'icon icon-comment' if authorize_for('issues', 'edit') %> <%#= link_to l(:button_quote), quoted_issue_path(@issue.id), :remote => true, :method => 'post', :class => 'icon icon-comment' if authorize_for('issues', 'edit') %>
<%= textilizable @issue, :description, :attachments => @issue.attachments %> <%= textAreailizable @issue, :description, :attachments => @issue.attachments %>
<% end %> <% end %>
</div> </div>
<div class="pro_pic_box mb10"> <div class="pro_pic_box mb10">
@ -108,7 +109,7 @@
</div> </div>
<!--留言--> <!--留言-->
<p style="padding-top: 5px"></p> <p style="padding-top: 5px"></p>
<a remote="true" href="javascript:void(0)" class="blue_btn fr mr80" onclick="$('#issue-form').submit();"> <a remote="true" href="javascript:void(0)" class="blue_btn fr mr80" onclick="issue_desc_editor.sync();$('#issue-form').submit();">
<%= l(:button_submit) %> <%= l(:button_submit) %>
</a> </a>
<% end %> <% end %>

View File

@ -144,10 +144,12 @@
<%= l(:label_member) %><%= link_to "#{@project.members.count}", project_member_path(@project), :class => 'info_foot_num c_blue' %> <%= l(:label_member) %><%= link_to "#{@project.members.count}", project_member_path(@project), :class => 'info_foot_num c_blue' %>
<span>|&nbsp;</span> <span>|&nbsp;</span>
<%= l(:label_user_watcher) %><%= link_to "#{@project.watcher_users.count}", {:controller=>"projects", :action=>"watcherlist", :id => @project.id}, :class => 'info_foot_num c_blue' %> <%= l(:label_user_watcher) %><%= link_to "#{@project.watcher_users.count}", {:controller=>"projects", :action=>"watcherlist", :id => @project.id}, :class => 'info_foot_num c_blue' %>
<span>|&nbsp;</span> <% unless @project.enabled_modules.where("name = 'files'").empty? %>
<%= l(:project_module_attachments) %> <span>|&nbsp;</span>
<% attaments_num = @project.attachments.count+Attachment.where(["`container_type` = 'Version' and `container_id` in (?)",@project.versions.map{ |v| v.id}]).all.count %> <%= l(:project_module_attachments) %>
<%= link_to "#{attaments_num}", project_files_path(@project), :class => 'info_foot_num c_blue' %></span> <% attaments_num = @project.attachments.count+Attachment.where(["`container_type` = 'Version' and `container_id` in (?)",@project.versions.map{ |v| v.id}]).all.count %>
<%= link_to "#{attaments_num}", project_files_path(@project), :class => 'info_foot_num c_blue' %></span>
<% end %>
</div> </div>
<div class="cl"></div> <div class="cl"></div>
</div><!--参数 end--> </div><!--参数 end-->

View File

@ -1,47 +0,0 @@
<% @nav_dispaly_project_label = 1
@nav_dispaly_forum_label = 1 %>
<!DOCTYPE html>
<html lang="<%= current_language %>">
<head>
<meta charset="utf-8" />
<title><%=h html_title %></title>
<meta name="description" content="<%= Redmine::Info.app_name %>" />
<meta name="keywords" content="issue,bug,tracker" />
<%= csrf_meta_tag %>
<%= favicon %>
<%= stylesheet_link_tag 'jquery/jquery-ui-1.9.2', 'application', 'nyan', :media => 'all' %>
<%= stylesheet_link_tag 'rtl', :media => 'all' if l(:direction) == 'rtl' %>
<%= javascript_heads %>
<%= javascript_include_tag "jquery.leanModal.min" %>
<%= javascript_include_tag 'seems_rateable/jRating', 'seems_rateable/rateable'%>
<%= heads_for_theme %>
<%= call_hook :view_layouts_base_html_head %>
<!-- page specific tags -->
<%= yield :header_tags -%>
</head>
<body class="<%=h body_css_classes %>">
<div id="wrapper">
<div id="wrapper2">
<div id="wrapper3">
<%=render :partial => 'layouts/base_header'%>
<div id="main" class="nosidebar">
<div id="content_">
<%= render_flash_messages %>
<%= yield %>
<%= call_hook :view_layouts_base_content %>
<div style="clear:both;"></div>
<%=render :partial => 'layouts/base_footer'%>
</div>
</div>
</div>
<div id="ajax-indicator" style="display:none;"><span><%= l(:label_loading) %></span></div>
<div id="ajax-modal" style="display:none;"></div>
</div>
</div>
<%= call_hook :view_layouts_base_body_bottom %>
</body>
</html>

View File

@ -8,9 +8,10 @@
<% unless @project.enabled_modules.where("name = 'issue_tracking'").empty? %> <% unless @project.enabled_modules.where("name = 'issue_tracking'").empty? %>
<div class="subNav"> <div class="subNav">
<%= link_to l(:label_issue_tracking), project_issues_path(@project), :class => "f14 c_blue02" %> <%= link_to l(:label_issue_tracking), project_issues_path(@project), :class => "f14 c_blue02" %>
<% unless @project.issues.visible.all.count == 0 %> <% if (issue_count = @project.issues.count) > 0 %>
<a class="subnav_num">(<%= @project.issues.visible.all.count %>)</a> <a class="subnav_num">(<%= issue_count %>)</a>
<% end %> <% end %>
<% if User.current.member_of?(@project) %> <% if User.current.member_of?(@project) %>
<%= link_to "+"+l(:label_release_issue), new_project_issue_path(@project) , :class => "subnav_green" %> <%= link_to "+"+l(:label_release_issue), new_project_issue_path(@project) , :class => "subnav_green" %>
<% end %> <% end %>

135
config/oneapm.yml Normal file
View File

@ -0,0 +1,135 @@
#
# OneApm RubyAgent Configuration
#
# Here are the settings that are common to all environments
common: &default_settings
# ============================== LICENSE KEY ===============================
#
# Get your license key from oneapm.com
#
license_key: 'BAQMBw8FUwR2542UFFpDXFgVVk66e2dZWB4EBlQHSf846wgBGwICFQoD0498BAEfBgNIAlQ='
# Agent Enabled (Ruby/Rails Only)
# Valid values are true, false and auto.
#
# agent_enabled: auto
# This app_name will be the application name in oneapm.com in your account.
#
# Caution: If you change this name, a new application will appear in the OneApm
# user interface with the new name, and data will stop reporting to the
# app with the old name.
#
app_name: trusite
# When "true", the agent collects performance data about your
# application and reports this data to the OneApm service at
# oneapm.com. This global switch is normally overridden for each
# environment below. (formerly called 'enabled')
monitor_mode: true
# Specify its log level here.
log_level: info
# log_file_path: 'log'
# log_file_name: 'oneapm_agent.log'
# The oneapm agent communicates with the service via https by default.
# ssl: true
# ======================== Browser Monitoring =============================
browser_monitoring:
# By default the agent automatically injects the monitoring JavaScript
# into web pages. Set this attribute to false to turn off this behavior.
auto_instrument: true
# Proxy settings for connecting to the OneApm server.
#
# proxy_host: hostname
# proxy_port: 8080
# proxy_user:
# proxy_pass:
# Tells transaction tracer and error collector (when enabled)
# whether or not to capture HTTP params. When true, frameworks can
# exclude HTTP parameters from being captured.
# Rails: the RoR filter_parameter_logging excludes parameters
capture_params: false
# Transaction tracer captures deep information about slow
# transactions and sends this to the OneApm service once a
# minute. Included in the transaction is the exact call sequence of
# the transactions including any SQL statements issued.
transaction_tracer:
# Transaction tracer is enabled by default.
enabled: true
# Threshold in seconds for when to collect a transaction
# trace. When the response time of a controller action exceeds
# this threshold, a transaction trace will be recorded and sent to
# OneApm. Valid values are any float value, or (default) "apdex_f",
# which will use the threshold for an dissatisfying Apdex
# controller action - four times the Apdex T value.
transaction_threshold: apdex_f
# When transaction tracer is on, SQL statements can optionally be
# recorded. The recorder has three modes, "off" which sends no
# SQL, "raw" which sends the SQL statement in its original form,
# and "obfuscated", which strips out numeric and string literals.
record_sql: obfuscated
# Threshold in seconds for when to collect stack trace for a SQL
# call. In other words, when SQL statements exceed this threshold,
# then capture and send to OneApm the current stack trace. This is
# helpful for pinpointing where long SQL calls originate from.
stack_trace_threshold: 0.500
# Determines whether the agent will capture query plans for slow
# SQL queries. Only supported in mysql and postgres. Should be
# set to false when using other adapters.
# explain_enabled: true
# Threshold for query execution time below which query plans will
# not be captured. Relevant only when `explain_enabled` is true.
# explain_threshold: 0.5
# Error collector captures information about uncaught exceptions and
# sends them to OneApm for viewing
error_collector:
# Error collector is enabled by default.
enabled: true
# Ignore the following errors, add your own.
ignore_errors: "ActionController::RoutingError,Sinatra::NotFound"
# ===================== Application Environments ========================
# Environment-specific settings are in this section.
# For Rails applications, RAILS_ENV is used to determine the environment.
# NOTE if your application has other named environments, you should
# provide oneapm configuration settings for these environments here.
development:
<<: *default_settings
# Turn on communication to OneApm service in development mode
monitor_mode: true
app_name: My Application (Development)
test:
<<: *default_settings
monitor_mode: false
# Turn on the agent in production for 24x7 monitoring.
production:
<<: *default_settings
monitor_mode: true
# Staging environment which behaves identically to production.
staging:
<<: *default_settings
monitor_mode: true
app_name: My Application (Staging)

View File

@ -93,6 +93,7 @@ h4{ font-size:14px; color:#3b3b3b;}
.w520{ width:520px;} .w520{ width:520px;}
.w543{ width:543px;} .w543{ width:543px;}
.w557{ width:557px;} .w557{ width:557px;}
.w576{ width:576px;}
.w583{ width:583px;} .w583{ width:583px;}
.w350{ width:350px;} .w350{ width:350px;}
.w610{ width:610px;} .w610{ width:610px;}