diff --git a/app/api/mobile/apis/activities.rb b/app/api/mobile/apis/activities.rb index ed49c0ada..813b2232b 100644 --- a/app/api/mobile/apis/activities.rb +++ b/app/api/mobile/apis/activities.rb @@ -22,7 +22,7 @@ module Mobile activities = UserActivity.where("(container_type = 'Project' and container_id in #{user_project_ids} and act_type in #{project_types})" + "or (container_type = 'Course' and container_id in #{user_course_ids} and act_type in #{course_types}) "+ "or (container_type = 'Principal' and act_type= '#{principal_types}' and container_id = #{user.id}) " + - "or (container_type = 'Blog' and act_type= 'BlogComment' and container_id in #{blog_ids})").order('updated_at desc').limit(10).offset(page * 10) + "or (container_type = 'Blog' and act_type= 'BlogComment' and container_id in #{blog_ids})").order('updated_at desc').limit(200).offset(page * 10) present :data, activities, with: Mobile::Entities::Activity present :status, 0 end diff --git a/config/application.rb b/config/application.rb index 6fa98e9a7..0c55fc75f 100644 --- a/config/application.rb +++ b/config/application.rb @@ -1,96 +1,96 @@ -require File.expand_path('../boot', __FILE__) - -require 'rails/all' -require 'sprockets/railtie' -require 'elasticsearch/model' -if defined?(Bundler) - # If you precompile assets before deploying to production, use this line - Bundler.require(*Rails.groups(:assets => %w(development test))) - # If you want your assets lazily compiled in production, use this line - # Bundler.require(:default, :assets, Rails.env) -end - -module RedmineApp - class Application < Rails::Application - # Settings in config/environments/* take precedence over those specified here. - # Application configuration should go into files in config/initializers - # -- all .rb files in that directory are automatically loaded. - - #verifier if email is real - - - config.generators do |g| - g.test_framework :rspec, - fixtures: true, - view_specs: false, - helper_specs: false, - routing_specs: false, - controller_specs: true, - request_specs: false - g.fixture_replacement :factory_girl, dir: "spec/factories" - end - # Custom directories with classes and modules you want to be autoloadable. - config.autoload_paths += %W(#{config.root}/lib) - config.autoload_paths += %w(#{RAILS_ROOT}/app/sweepers) - # Only load the plugins named here, in the order given (default is alphabetical). - # :all can be used as a placeholder for all plugins not explicitly named. - # config.plugins = [ :exception_notification, :ssl_requirement, :all ] - - # Activate observers that should always be running. - config.active_record.observers = :journals_for_message_observer, :issue_observer, :journal_observer, :wiki_content_observer - - config.active_record.store_full_sti_class = true - config.active_record.default_timezone = :local - config.time_zone = 'Beijing' - # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. - # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. - # config.time_zone = 'Central Time (US & Canada)' - - # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. - # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] - config.i18n.default_locale = :zh - - #config.i18n.enforce_available_locales = true - #I18n.config.enforce_available_locales = true - # Configure the default encoding used in templates for Ruby 1.9. - config.encoding = "utf-8" - - # Configure sensitive parameters which will be filtered from the log file. - config.filter_parameters += [:password] - - # Enable the asset pipeline - config.assets.enabled = false - - # Version of your assets, change this if you want to expire all your assets - config.assets.version = '1.0' - - config.action_mailer.perform_deliveries = false - - # Do not include all helpers - config.action_controller.include_all_helpers = false - - config.action_view.sanitized_allowed_tags = 'div', 'p', 'span', 'img', 'embed' - - config.before_initialize do - end - - config.after_initialize do - if RbConfig::CONFIG['target_os'] == 'mingw32' - Elasticsearch::Client.new hosts: ['localhost:9200'], retry_on_failure: true,log:true - elsif RbConfig::CONFIG['target_os'] == 'linux' && ["fast76"].include?(`hostname`.gsub("\n","")) - Elasticsearch::Client.new hosts: ['localhost:9200'], retry_on_failure: true,log:true - elsif RbConfig::CONFIG['target_os'] == 'linux' && ["testtrustie11","agent12"].include?(`hostname`.gsub("\n","")) - Elasticsearch::Client.new hosts: ['localhost:9200','192.168.80.11:9200','192.168.80.12:9200'], retry_on_failure: true - elsif RbConfig::CONFIG['target_os'] == 'linux' && ["trustie168","trustieserver14","trustieserver16","Trustie18"].include?(`hostname`.gsub("\n","")) - Elasticsearch::Client.new hosts: ['localhost:9200','192.168.80.168:9200'], retry_on_failure: true - else - Elasticsearch::Client.new hosts: ['localhost:9200'], retry_on_failure: true - end - end - - if File.exists?(File.join(File.dirname(__FILE__), 'additional_environment.rb')) - instance_eval File.read(File.join(File.dirname(__FILE__), 'additional_environment.rb')) - end - - end -end +require File.expand_path('../boot', __FILE__) + +require 'rails/all' +require 'sprockets/railtie' +require 'elasticsearch/model' +if defined?(Bundler) + # If you precompile assets before deploying to production, use this line + Bundler.require(*Rails.groups(:assets => %w(development test))) + # If you want your assets lazily compiled in production, use this line + # Bundler.require(:default, :assets, Rails.env) +end + +module RedmineApp + class Application < Rails::Application + # Settings in config/environments/* take precedence over those specified here. + # Application configuration should go into files in config/initializers + # -- all .rb files in that directory are automatically loaded. + + #verifier if email is real + + + config.generators do |g| + g.test_framework :rspec, + fixtures: true, + view_specs: false, + helper_specs: false, + routing_specs: false, + controller_specs: true, + request_specs: false + g.fixture_replacement :factory_girl, dir: "spec/factories" + end + # Custom directories with classes and modules you want to be autoloadable. + config.autoload_paths += %W(#{config.root}/lib) + config.autoload_paths += %w(#{RAILS_ROOT}/app/sweepers) + # Only load the plugins named here, in the order given (default is alphabetical). + # :all can be used as a placeholder for all plugins not explicitly named. + # config.plugins = [ :exception_notification, :ssl_requirement, :all ] + + # Activate observers that should always be running. + config.active_record.observers = :journals_for_message_observer, :issue_observer, :journal_observer, :wiki_content_observer + + config.active_record.store_full_sti_class = true + config.active_record.default_timezone = :local + config.time_zone = 'Beijing' + # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. + # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. + # config.time_zone = 'Central Time (US & Canada)' + + # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. + # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] + # config.i18n.default_locale = :zh + + config.i18n.enforce_available_locales = false + I18n.config.enforce_available_locales = false + # Configure the default encoding used in templates for Ruby 1.9. + config.encoding = "utf-8" + + # Configure sensitive parameters which will be filtered from the log file. + config.filter_parameters += [:password] + + # Enable the asset pipeline + config.assets.enabled = false + + # Version of your assets, change this if you want to expire all your assets + config.assets.version = '1.0' + + config.action_mailer.perform_deliveries = false + + # Do not include all helpers + config.action_controller.include_all_helpers = false + + config.action_view.sanitized_allowed_tags = 'div', 'p', 'span', 'img', 'embed' + + config.before_initialize do + end + + config.after_initialize do + if RbConfig::CONFIG['target_os'] == 'mingw32' + Elasticsearch::Client.new hosts: ['localhost:9200'], retry_on_failure: true,log:true + elsif RbConfig::CONFIG['target_os'] == 'linux' && ["fast76"].include?(`hostname`.gsub("\n","")) + Elasticsearch::Client.new hosts: ['localhost:9200'], retry_on_failure: true,log:true + elsif RbConfig::CONFIG['target_os'] == 'linux' && ["testtrustie11","agent12"].include?(`hostname`.gsub("\n","")) + Elasticsearch::Client.new hosts: ['localhost:9200','192.168.80.11:9200','192.168.80.12:9200'], retry_on_failure: true + elsif RbConfig::CONFIG['target_os'] == 'linux' && ["trustie168","trustieserver14","trustieserver16","Trustie18"].include?(`hostname`.gsub("\n","")) + Elasticsearch::Client.new hosts: ['localhost:9200','192.168.80.168:9200'], retry_on_failure: true + else + Elasticsearch::Client.new hosts: ['localhost:9200'], retry_on_failure: true + end + end + + if File.exists?(File.join(File.dirname(__FILE__), 'additional_environment.rb')) + instance_eval File.read(File.join(File.dirname(__FILE__), 'additional_environment.rb')) + end + + end +end \ No newline at end of file diff --git a/public/assets/wechat/activities.html b/public/assets/wechat/activities.html index 398d0fc2f..22d642bde 100644 --- a/public/assets/wechat/activities.html +++ b/public/assets/wechat/activities.html @@ -43,7 +43,7 @@
-
回复 ()
+
回复 ()
赞 ()
@@ -55,7 +55,7 @@
- +
@@ -97,7 +97,7 @@
- +
@@ -112,11 +112,11 @@
- +

- 状态: 优先级:
指派给: 完成度:
+ 状态: 优先级:
指派给: 完成度:%
点击展开
@@ -124,7 +124,7 @@
-
回复 ()
+
回复 ()
赞 ()
@@ -136,7 +136,7 @@
- +
@@ -158,7 +158,7 @@
- +
@@ -211,11 +211,13 @@
+
更多
+ \ No newline at end of file diff --git a/public/assets/wechat/homework_detail.html b/public/assets/wechat/homework_detail.html new file mode 100644 index 000000000..4bc2d7c0e --- /dev/null +++ b/public/assets/wechat/homework_detail.html @@ -0,0 +1,75 @@ + + + + 作业详情 + + + + + + + + + + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/assets/wechat/issue_detail.html b/public/assets/wechat/issue_detail.html new file mode 100644 index 000000000..c06988ba6 --- /dev/null +++ b/public/assets/wechat/issue_detail.html @@ -0,0 +1,85 @@ + + + + 缺陷详情 + + + + + + + + + + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/public/javascripts/wechat/homework-detail.js b/public/javascripts/wechat/homework-detail.js new file mode 100644 index 000000000..a5fdfa694 --- /dev/null +++ b/public/javascripts/wechat/homework-detail.js @@ -0,0 +1,57 @@ +/** + * Created by root on 3/31/16. + */ +$(document).ready(function(){ + + var bt=baidu.template; + bt.LEFT_DELIMITER=''; + + + var apiUrl = '/api/v1/'; + + var setTemplate = function(data){ + console.log(data); + var html=bt('t:homework-detail',{homework: data}); + $('#homework-container').prepend(html); + $('.post-reply-submit').click(function(){ + replyInsert(); + }); + }; + + var loadDataFromServer = function(id){ + //getOpenId(function(openid){ + $.ajax({ + url: apiUrl + 'whomeworks/' + id, + dataType: 'json', + success: function(data){ + setTemplate(data.data); + }, + error: function(xhr,status,err){ + console.log(err); + } + }); + //}) + + + }; + + loadDataFromServer(808); + + //点击回复按钮,插入回复内容 + var replyInsert = function(){ + var replyContent = $("#postInput").val(); + if (!replyContent){ + alert("请输入回复"); + }else{ + $(".post-reply-wrap:last").after('
1分钟前
回复
'); + $(".post-reply-content:last").append(replyContent); + $("#postInput").val("");} + } + + var getID = function(){ + var homeworkID = $("#homework-id").html(); + alert(homeworkID); + return homeworkID; + } +}); \ No newline at end of file diff --git a/public/javascripts/wechat/wechat-dev.js b/public/javascripts/wechat/wechat-dev.js index 20c118b96..b7ed32332 100644 --- a/public/javascripts/wechat/wechat-dev.js +++ b/public/javascripts/wechat/wechat-dev.js @@ -9,12 +9,15 @@ $(document).ready(function(){ var apiUrl = '/api/v1/'; + var setTemplate = function(data){ console.log(data); var html=bt('t:result-list',{activities: data}); $('#container').prepend(html); descToggle(); - + $('.post-reply-submit').click(function(){ + replyInsert(); + }); }; var loadDataFromServer = function(id){ @@ -36,10 +39,8 @@ $(document).ready(function(){ loadDataFromServer(8686); + //内容全部显示与部分隐藏 var descToggle = function(){ - var postWidth = $(".post-wrapper").width(); - var titleWidth = postWidth - 80; - $(".post-title").css("maxWidth",titleWidth); $(".post-all-content").each(function(){ var postHeight = $(this).height(); if (postHeight > 90){ @@ -55,11 +56,14 @@ $(document).ready(function(){ }); } - var timeSpilt = function(){ - + //点击回复按钮,插入回复内容 + var replyInsert = function(){ + var replyContent = $("#postInput").val(); + if (!replyContent){ + alert("请输入回复"); + }else{ + $(".post-reply-wrap:last").after('
1分钟前
回复
'); + $(".post-reply-content:last").append(replyContent); + $("#postInput").val("");} } - - - - }); diff --git a/public/stylesheets/weui/weixin.css b/public/stylesheets/weui/weixin.css index b702e1d0d..837ff1abc 100644 --- a/public/stylesheets/weui/weixin.css +++ b/public/stylesheets/weui/weixin.css @@ -10,14 +10,17 @@ h1,h2,h3,h4,h5,p {padding:0px; margin:0px;} .mt5 {margin-top:5px;} .mt10 {margin-top:10px;} .mb5 {margin-bottom:5px;} +.mb10 {margin-bottom:10px;} .ml10 {margin-left:10px;} .mr10 {margin-right:10px;} .ml15 {margin-left:15px;} .mr15 {margin-right:15px;} +.ml55 {margin-left:55px;} .c-blue {color:#269ac9;} .c-grey {color:#9a9a9a;} .c-grey2 {color:#707070;} .c-grey3 {color:#555555;} +a.c-grey {color:#707070;} a:link,a:visited{text-decoration:none;} a:hover,a:active{cursor:pointer;} a.link-blue {color:#269ac9;} @@ -35,7 +38,21 @@ a.link-blue {color:#269ac9;} .post-avatar {width:45px; height:45px; margin-right:10px;} .post-title {font-size:13px; text-align:left;} .fl {float:left;} +.fr {float:right;} .cl {clear:both; overflow:hidden;} .post-content {width:100%; font-size:13px; line-height:18px; height:90px; overflow:hidden;} .post-interactive {width:100%; height:35px; line-height:35px; vertical-align:middle; border-top:1px solid #e6e6e6; background-color:#f8f9fb;} -.post-interactive-column {width:50%; text-align:center; float:left; font-size:13px;} \ No newline at end of file +.post-interactive-column {width:50%; text-align:center; float:left; font-size:13px;} +.more-wrap {width:100%;} +.more-events {width:98%; font-size:13px; text-align:center; margin:0px auto; padding: 5px 0px; border:1px solid #e6e6e6; border-radius:3px; background-color:#f8f9fb; } +.border-bottom {border-bottom:1px solid #e6e6e6;} +.post-reply-wrap {width:100%; line-height:18px; background-color:#f8f9fb;} +.post-input-wrap {width:100%; line-height:18px; background-color:#f8f9fb;} +.post-reply-row {padding:10px; color:#9a9a9a;} +.post-reply-avatar {width:45px; height:30px; text-align:center; margin-right:10px;} +.post-reply-user {font-size:13px; text-align:left; margin-bottom:10px;} +.post-reply-content {font-size:13px; text-align:left;} +.post-reply-date {font-size:13px;} +.post-reply-trigger {font-size:13px;} +.post-reply-input {width:100%; height:28px; line-height:28px; border:1px solid #e6e6e6; outline:none; border-radius:3px;} +.post-reply-submit {font-size:13px; padding:3px 8px; color:#fff; background-color:#269ac9; outline:none; border:none; display:inline-block;} \ No newline at end of file