From 53ecf8718fa2992ae7c4333aa099d8f2cfc9f9f8 Mon Sep 17 00:00:00 2001 From: www Date: Thu, 27 Nov 2014 19:43:04 +0800 Subject: [PATCH 001/192] =?UTF-8?q?[api]=E7=94=A8=E6=88=B7=E8=AE=A4?= =?UTF-8?q?=E8=AF=81=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 2 + Gemfile.lock | 44 + app/api/mobile/api.rb | 39 + app/api/mobile/apis/auth.rb | 23 + app/api/mobile/apis/courses.rb | 39 + app/api/mobile/apis/users.rb | 30 + app/models/api_key.rb | 21 + config/routes.rb | 4 +- db/migrate/20141127015431_create_api_keys.rb | 14 + db/schema.rb | 2650 +++++++++--------- 10 files changed, 1545 insertions(+), 1321 deletions(-) create mode 100644 app/api/mobile/api.rb create mode 100644 app/api/mobile/apis/auth.rb create mode 100644 app/api/mobile/apis/courses.rb create mode 100644 app/api/mobile/apis/users.rb create mode 100644 app/models/api_key.rb create mode 100644 db/migrate/20141127015431_create_api_keys.rb diff --git a/Gemfile b/Gemfile index 91e72a745..5288edd52 100644 --- a/Gemfile +++ b/Gemfile @@ -8,6 +8,7 @@ unless RUBY_PLATFORM =~ /w32/ gem 'zip-zip' end +gem 'grape', '~> 0.9.0' gem 'seems_rateable', path: 'lib/seems_rateable' gem "rails", "3.2.13" gem "jquery-rails", "~> 2.0.2" @@ -18,6 +19,7 @@ gem "builder", "3.0.0" gem 'acts-as-taggable-on', '2.4.1' group :development do + gem 'puma' gem 'better_errors', path: 'lib/better_errors' gem 'rack-mini-profiler', path: 'lib/rack-mini-profiler' end diff --git a/Gemfile.lock b/Gemfile.lock index 6916219a9..58f069ac1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -52,6 +52,10 @@ GEM acts-as-taggable-on (2.4.1) rails (>= 3, < 5) arel (3.0.3) + axiom-types (0.1.1) + descendants_tracker (~> 0.0.4) + ice_nine (~> 0.11.0) + thread_safe (~> 0.3, >= 0.3.1) builder (3.0.0) capybara (2.4.1) mime-types (>= 1.16) @@ -68,6 +72,8 @@ GEM cocaine (0.5.4) climate_control (>= 0.0.3, < 1.0) coderay (1.0.9) + coercible (1.0.0) + descendants_tracker (~> 0.0.1) coffee-rails (3.2.2) coffee-script (>= 2.2.0) railties (~> 3.2.0) @@ -75,6 +81,9 @@ GEM coffee-script-source execjs coffee-script-source (1.7.1) + descendants_tracker (0.0.4) + thread_safe (~> 0.3, >= 0.3.1) + equalizer (0.0.9) erubis (2.7.0) execjs (2.2.1) factory_girl (4.4.0) @@ -83,6 +92,16 @@ GEM ffi (1.9.3) ffi (1.9.3-x86-mingw32) formatador (0.2.5) + grape (0.9.0) + activesupport + builder + hashie (>= 2.1.0) + multi_json (>= 1.3.2) + multi_xml (>= 0.5.2) + rack (>= 1.3.0) + rack-accept + rack-mount + virtus (>= 1.0.0) guard (2.6.1) formatador (>= 0.2.4) listen (~> 2.7) @@ -98,9 +117,12 @@ GEM guard-test (1.0.0) guard (>= 1.8) test-unit (~> 2.2) + hashie (3.3.1) hike (1.2.3) htmlentities (4.3.2) i18n (0.6.1) + ice_nine (0.11.0) + iconv (1.0.4) journey (1.0.4) jquery-rails (2.0.3) railties (>= 3.1.0, < 5.0) @@ -125,6 +147,7 @@ GEM mocha (1.1.0) metaclass (~> 0.0.1) multi_json (1.10.1) + multi_xml (0.5.5) mysql2 (0.3.11) mysql2 (0.3.11-x86-mingw32) net-ldap (0.3.1) @@ -149,9 +172,15 @@ GEM win32console (~> 1.3) pry-nav (0.2.3) pry (~> 0.9.10) + puma (2.10.1) + rack (>= 1.1, < 2.0) rack (1.4.5) + rack-accept (0.4.5) + rack (>= 0.4) rack-cache (1.2) rack (>= 0.4) + rack-mount (0.8.3) + rack (>= 1.0.0) rack-openid (1.4.2) rack (>= 1.1.0) ruby-openid (>= 2.1.8) @@ -193,6 +222,7 @@ GEM sass-rails rmagick (2.13.2) ruby-openid (2.1.8) + ruby-prof (0.15.2) rubyzip (1.1.6) sass (3.3.10) sass-rails (3.2.6) @@ -224,6 +254,7 @@ GEM libv8 (~> 3.16.14.0) ref thor (0.19.1) + thread_safe (0.3.4) tilt (1.4.1) timers (1.1.0) treetop (1.4.15) @@ -233,10 +264,17 @@ GEM uglifier (2.5.1) execjs (>= 0.3.0) json (>= 1.8.0) + virtus (1.0.3) + axiom-types (~> 0.1) + coercible (~> 1.0) + descendants_tracker (~> 0.0, >= 0.0.3) + equalizer (~> 0.0, >= 0.0.9) websocket (1.0.7) win32console (1.3.2-x86-mingw32) xpath (2.0.0) nokogiri (~> 1.3) + zip-zip (0.3) + rubyzip (>= 1.0.0) PLATFORMS ruby @@ -253,11 +291,13 @@ DEPENDENCIES coffee-rails (~> 3.2.1) factory_girl (~> 4.4.0) fastercsv (~> 1.5.0) + grape (~> 0.9.0) guard-rails (~> 0.5.3) guard-spork (~> 1.5.1) guard-test (~> 1.0.0) htmlentities i18n (~> 0.6.0) + iconv jquery-rails (~> 2.0.2) kaminari mocha (~> 1.1.0) @@ -267,12 +307,15 @@ DEPENDENCIES paperclip (~> 3.5.4) pry pry-nav + puma rack-mini-profiler! rack-openid rails (= 3.2.13) rich (= 1.4.6) rmagick (>= 2.0.0) ruby-openid (~> 2.1.4) + ruby-prof (~> 0.15.1) + rubyzip sass-rails (~> 3.2.3) seems_rateable! selenium-webdriver (~> 2.42.0) @@ -280,3 +323,4 @@ DEPENDENCIES spork-testunit (~> 0.0.8) therubyracer uglifier (>= 1.0.3) + zip-zip diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb new file mode 100644 index 000000000..a84ba559c --- /dev/null +++ b/app/api/mobile/api.rb @@ -0,0 +1,39 @@ +module Mobile + + $LOAD_PATH << File.expand_path('..',__FILE__) + + autoload :Auth, 'apis/auth' + autoload :Users, 'apis/users' + autoload :Courses, 'apis/courses' + + class API < Grape::API + version 'v1', using: :path + format :json + + helpers do + def logger + API.logger + end + + def authticate! + error!('Unauthorized. Invalid or expired token.', 401) unless current_user + end + + def current_user + token = ApiKey.where(access_token: params[:token]).first + if token && !token.expired? + @current_user = User.find(token.user_id) + else + nil + end + end + end + + mount Auth + mount Users + mount Courses + + end +end + + diff --git a/app/api/mobile/apis/auth.rb b/app/api/mobile/apis/auth.rb new file mode 100644 index 000000000..41b948a13 --- /dev/null +++ b/app/api/mobile/apis/auth.rb @@ -0,0 +1,23 @@ +module Mobile + class Auth < Grape::API + resource :auth do + desc "Creates and returns access_token if valid login" + params do + requires :login, type: String, desc: 'Username or email' + requires :password, type: String, desc: 'Password' + end + post :login do + user,last_logon = ::User.try_to_login(params[:login], params[:password]) + if user + ::ApiKey.delete_all(user_id: user.id) + key = ::ApiKey.create!(user_id: user.id) + {token: key.access_token}.merge(user.as_json).merge(user.extensions.as_json) + else + error!('Unauthorized.', 401) + end + end + end + end +end + + diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb new file mode 100644 index 000000000..7518e544b --- /dev/null +++ b/app/api/mobile/apis/courses.rb @@ -0,0 +1,39 @@ +module Mobile + class Courses < Grape::API + resource :courses do + desc "get all courses" + params do + requires :per_page_count, type: Integer + requires :page, type: Integer, desc: 'current page no' + end + get do + per_page_option = params[:per_page_count] || 10 + page_no = params[:page] || 1 + @courses_all = Course.active.visible. + joins("LEFT JOIN #{CourseStatus.table_name} ON #{Course.table_name}.id = #{CourseStatus.table_name}.course_id") + @course_count = @courses_all.count + @course_pages = Redmine::Pagination::Paginator.new @course_count, per_page_option,page_no + @course_activity_count=Hash.new + @courses_all.each do |course| + @course_activity_count[course.id]=0 + end + @courses = @courses_all.order("created_at desc") + @s_type = 0 + @courses = @courses.offset(@course_pages.offset).limit(@course_pages.per_page) + # @course_activity_count=get_course_activity @courses, @course_activity_count + end + + desc "Return a course" + params do + requires :id, type: Integer + end + route_param :id do + get do + Course.find(params[:id]) + end + end + + end + end +end + diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb new file mode 100644 index 000000000..1eaf7c87b --- /dev/null +++ b/app/api/mobile/apis/users.rb @@ -0,0 +1,30 @@ +module Mobile + class Users < Grape::API + resource :users do + desc "get all users" + get do + ['hello'] + end + desc "add a user" + params do + requires :login, type: String, desc: 'username' + requires :email, type: String, desc: 'email' + requires :password, type: String, desc: 'password' + end + post do + user = User.new + user.login = params[:login] + user.mail = params[:email] + user.password = params[:password] + user.password_confirmation = params[:password] + user.activate + if user.save! + UserStatus.create(:user_id => user.id, :changsets_count => 0, :watchers_count => 0) + end + user + end + end + end +end + + diff --git a/app/models/api_key.rb b/app/models/api_key.rb new file mode 100644 index 000000000..e71896bc0 --- /dev/null +++ b/app/models/api_key.rb @@ -0,0 +1,21 @@ +class ApiKey < ActiveRecord::Base + attr_accessible :access_token, :active, :expires_at, :user_id + before_create :generate_access_token + before_create :set_experation + + # validates_presence_of :user_id, :access_token + + def expired? + DateTime.now >= self.expires_at + end + + private + def generate_access_token + self.access_token = SecureRandom.hex + end + + def set_experation + self.expires_at = DateTime.now + 30 + end + +end diff --git a/config/routes.rb b/config/routes.rb index 1d28a9ae6..3d1fc4b81 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -26,10 +26,10 @@ # Example: :via => :get ====> :via => :get RedmineApp::Application.routes.draw do - - #match '/contests/:id/contestnotifications', :controller => 'contestnotifications', :action => 'index' + mount Mobile::API => '/api' + resources :homework_users resources :no_uses delete 'no_uses', :to => 'no_uses#delete' diff --git a/db/migrate/20141127015431_create_api_keys.rb b/db/migrate/20141127015431_create_api_keys.rb new file mode 100644 index 000000000..81a232848 --- /dev/null +++ b/db/migrate/20141127015431_create_api_keys.rb @@ -0,0 +1,14 @@ +class CreateApiKeys < ActiveRecord::Migration + def change + create_table :api_keys do |t| + t.string :access_token + t.datetime :expires_at + t.integer :user_id + t.boolean :active, default: true + + t.timestamps + end + add_index :api_keys, :user_id + add_index :api_keys, :access_token + end +end diff --git a/db/schema.rb b/db/schema.rb index 973e2afbe..8f168efba 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -1,1319 +1,1331 @@ -# encoding: UTF-8 -# This file is auto-generated from the current state of the database. Instead -# of editing this file, please use the migrations feature of Active Record to -# incrementally modify your database, and then regenerate this schema definition. -# -# Note that this schema.rb definition is the authoritative source for your -# database schema. If you need to create the application database on another -# system, you should be using db:schema:load, not running all the migrations -# from scratch. The latter is a flawed and unsustainable approach (the more migrations -# you'll amass, the slower it'll run and the greater likelihood for issues). -# -# It's strongly recommended to check this file into your version control system. - -ActiveRecord::Schema.define(:version => 20141120091234) do - - create_table "activities", :force => true do |t| - t.integer "act_id", :null => false - t.string "act_type", :null => false - t.integer "user_id", :null => false - end - - add_index "activities", ["act_id", "act_type"], :name => "index_activities_on_act_id_and_act_type" - add_index "activities", ["user_id", "act_type"], :name => "index_activities_on_user_id_and_act_type" - add_index "activities", ["user_id"], :name => "index_activities_on_user_id" - - create_table "applied_projects", :force => true do |t| - t.integer "project_id", :null => false - t.integer "user_id", :null => false - end - - create_table "apply_project_masters", :force => true do |t| - t.integer "user_id" - t.string "apply_type" - t.integer "apply_id" - t.integer "status" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "attachments", :force => true do |t| - t.integer "container_id" - t.string "container_type", :limit => 30 - t.string "filename", :default => "", :null => false - t.string "disk_filename", :default => "", :null => false - t.integer "filesize", :default => 0, :null => false - t.string "content_type", :default => "" - t.string "digest", :limit => 40, :default => "", :null => false - t.integer "downloads", :default => 0, :null => false - t.integer "author_id", :default => 0, :null => false - t.datetime "created_on" - t.string "description" - t.string "disk_directory" - t.integer "attachtype", :default => 1 - t.integer "is_public", :default => 1 - t.integer "copy_from" - end - - add_index "attachments", ["author_id"], :name => "index_attachments_on_author_id" - add_index "attachments", ["container_id", "container_type"], :name => "index_attachments_on_container_id_and_container_type" - add_index "attachments", ["created_on"], :name => "index_attachments_on_created_on" - - create_table "attachmentstypes", :force => true do |t| - t.integer "typeId", :null => false - t.string "typeName", :limit => 50 - end - - create_table "auth_sources", :force => true do |t| - t.string "type", :limit => 30, :default => "", :null => false - t.string "name", :limit => 60, :default => "", :null => false - t.string "host", :limit => 60 - t.integer "port" - t.string "account" - t.string "account_password", :default => "" - t.string "base_dn" - t.string "attr_login", :limit => 30 - t.string "attr_firstname", :limit => 30 - t.string "attr_lastname", :limit => 30 - t.string "attr_mail", :limit => 30 - t.boolean "onthefly_register", :default => false, :null => false - t.boolean "tls", :default => false, :null => false - t.string "filter" - t.integer "timeout" - end - - add_index "auth_sources", ["id", "type"], :name => "index_auth_sources_on_id_and_type" - - create_table "biding_projects", :force => true do |t| - t.integer "project_id" - t.integer "bid_id" - t.integer "user_id" - t.string "description" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "reward" - end - - create_table "bids", :force => true do |t| - t.string "name" - t.string "budget", :null => false - t.integer "author_id" - t.date "deadline" - t.text "description" - t.datetime "created_on", :null => false - t.datetime "updated_on", :null => false - t.integer "commit" - t.integer "reward_type" - t.integer "homework_type" - t.integer "parent_id" - t.string "password" - t.integer "is_evaluation" - t.integer "proportion", :default => 60 - t.integer "comment_status", :default => 0 - t.integer "evaluation_num", :default => 3 - t.integer "open_anonymous_evaluation", :default => 1 - end - - create_table "boards", :force => true do |t| - t.integer "project_id", :null => false - t.string "name", :default => "", :null => false - t.string "description" - t.integer "position", :default => 1 - t.integer "topics_count", :default => 0, :null => false - t.integer "messages_count", :default => 0, :null => false - t.integer "last_message_id" - t.integer "parent_id" - t.integer "course_id" - end - - add_index "boards", ["last_message_id"], :name => "index_boards_on_last_message_id" - add_index "boards", ["project_id"], :name => "boards_project_id" - - create_table "bug_to_osps", :force => true do |t| - t.integer "osp_id" - t.integer "relative_memo_id" - t.string "description" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "changes", :force => true do |t| - t.integer "changeset_id", :null => false - t.string "action", :limit => 1, :default => "", :null => false - t.text "path", :null => false - t.text "from_path" - t.string "from_revision" - t.string "revision" - t.string "branch" - end - - add_index "changes", ["changeset_id"], :name => "changesets_changeset_id" - - create_table "changeset_parents", :id => false, :force => true do |t| - t.integer "changeset_id", :null => false - t.integer "parent_id", :null => false - end - - add_index "changeset_parents", ["changeset_id"], :name => "changeset_parents_changeset_ids" - add_index "changeset_parents", ["parent_id"], :name => "changeset_parents_parent_ids" - - create_table "changesets", :force => true do |t| - t.integer "repository_id", :null => false - t.string "revision", :null => false - t.string "committer" - t.datetime "committed_on", :null => false - t.text "comments" - t.date "commit_date" - t.string "scmid" - t.integer "user_id" - end - - add_index "changesets", ["committed_on"], :name => "index_changesets_on_committed_on" - add_index "changesets", ["repository_id", "revision"], :name => "changesets_repos_rev", :unique => true - add_index "changesets", ["repository_id", "scmid"], :name => "changesets_repos_scmid" - add_index "changesets", ["repository_id"], :name => "index_changesets_on_repository_id" - add_index "changesets", ["user_id"], :name => "index_changesets_on_user_id" - - create_table "changesets_issues", :id => false, :force => true do |t| - t.integer "changeset_id", :null => false - t.integer "issue_id", :null => false - end - - add_index "changesets_issues", ["changeset_id", "issue_id"], :name => "changesets_issues_ids", :unique => true - - create_table "code_review_assignments", :force => true do |t| - t.integer "issue_id" - t.integer "change_id" - t.integer "attachment_id" - t.string "file_path" - t.string "rev" - t.string "rev_to" - t.string "action_type" - t.integer "changeset_id" - end - - create_table "code_review_project_settings", :force => true do |t| - t.integer "project_id" - t.integer "tracker_id" - t.datetime "created_at" - t.datetime "updated_at" - t.integer "updated_by" - t.boolean "hide_code_review_tab", :default => false - t.integer "auto_relation", :default => 1 - t.integer "assignment_tracker_id" - t.text "auto_assign" - t.integer "lock_version", :default => 0, :null => false - t.boolean "tracker_in_review_dialog", :default => false - end - - create_table "code_review_user_settings", :force => true do |t| - t.integer "user_id", :default => 0, :null => false - t.integer "mail_notification", :default => 0, :null => false - t.datetime "created_at" - t.datetime "updated_at" - end - - create_table "code_reviews", :force => true do |t| - t.integer "project_id" - t.integer "change_id" - t.datetime "created_at" - t.datetime "updated_at" - t.integer "line" - t.integer "updated_by_id" - t.integer "lock_version", :default => 0, :null => false - t.integer "status_changed_from" - t.integer "status_changed_to" - t.integer "issue_id" - t.string "action_type" - t.string "file_path" - t.string "rev" - t.string "rev_to" - t.integer "attachment_id" - t.integer "file_count", :default => 0, :null => false - t.boolean "diff_all" - end - - create_table "comments", :force => true do |t| - t.string "commented_type", :limit => 30, :default => "", :null => false - t.integer "commented_id", :default => 0, :null => false - t.integer "author_id", :default => 0, :null => false - t.text "comments" - t.datetime "created_on", :null => false - t.datetime "updated_on", :null => false - end - - add_index "comments", ["author_id"], :name => "index_comments_on_author_id" - add_index "comments", ["commented_id", "commented_type"], :name => "index_comments_on_commented_id_and_commented_type" - - create_table "contest_notifications", :force => true do |t| - t.text "title" - t.text "content" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "contesting_projects", :force => true do |t| - t.integer "project_id" - t.string "contest_id" - t.integer "user_id" - t.string "description" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "reward" - end - - create_table "contesting_softapplications", :force => true do |t| - t.integer "softapplication_id" - t.integer "contest_id" - t.integer "user_id" - t.string "description" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "reward" - end - - create_table "contestnotifications", :force => true do |t| - t.integer "contest_id" - t.string "title" - t.string "summary" - t.text "description" - t.integer "author_id" - t.integer "notificationcomments_count" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "contests", :force => true do |t| - t.string "name" - t.string "budget", :default => "" - t.integer "author_id" - t.date "deadline" - t.string "description" - t.integer "commit" - t.string "password" - t.datetime "created_on", :null => false - t.datetime "updated_on", :null => false - end - - create_table "course_attachments", :force => true do |t| - t.string "filename" - t.string "disk_filename" - t.integer "filesize" - t.string "content_type" - t.string "digest" - t.integer "downloads" - t.string "author_id" - t.string "integer" - t.string "description" - t.string "disk_directory" - t.integer "attachtype" - t.integer "is_public" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "container_id", :default => 0 - end - - create_table "course_infos", :force => true do |t| - t.integer "course_id" - t.integer "user_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "course_statuses", :force => true do |t| - t.integer "changesets_count" - t.integer "watchers_count" - t.integer "course_id" - t.float "grade", :default => 0.0 - t.integer "course_ac_para", :default => 0 - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "courses", :force => true do |t| - t.integer "tea_id" - t.string "name" - t.integer "state" - t.string "code" - t.integer "time" - t.string "extra" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "location" - t.string "term" - t.string "string" - t.string "password" - t.string "setup_time" - t.string "endup_time" - t.string "class_period" - t.integer "school_id" - t.text "description" - t.integer "status", :default => 1 - t.integer "attachmenttype", :default => 2 - t.integer "lft" - t.integer "rgt" - t.integer "is_public", :limit => 1, :default => 1 - t.integer "inherit_members", :limit => 1, :default => 1 - t.integer "open_student", :default => 0 - end - - create_table "custom_fields", :force => true do |t| - t.string "type", :limit => 30, :default => "", :null => false - t.string "name", :limit => 30, :default => "", :null => false - t.string "field_format", :limit => 30, :default => "", :null => false - t.text "possible_values" - t.string "regexp", :default => "" - t.integer "min_length", :default => 0, :null => false - t.integer "max_length", :default => 0, :null => false - t.boolean "is_required", :default => false, :null => false - t.boolean "is_for_all", :default => false, :null => false - t.boolean "is_filter", :default => false, :null => false - t.integer "position", :default => 1 - t.boolean "searchable", :default => false - t.text "default_value" - t.boolean "editable", :default => true - t.boolean "visible", :default => true, :null => false - t.boolean "multiple", :default => false - end - - add_index "custom_fields", ["id", "type"], :name => "index_custom_fields_on_id_and_type" - - create_table "custom_fields_projects", :id => false, :force => true do |t| - t.integer "custom_field_id", :default => 0, :null => false - t.integer "project_id", :default => 0, :null => false - end - - add_index "custom_fields_projects", ["custom_field_id", "project_id"], :name => "index_custom_fields_projects_on_custom_field_id_and_project_id", :unique => true - - create_table "custom_fields_trackers", :id => false, :force => true do |t| - t.integer "custom_field_id", :default => 0, :null => false - t.integer "tracker_id", :default => 0, :null => false - end - - add_index "custom_fields_trackers", ["custom_field_id", "tracker_id"], :name => "index_custom_fields_trackers_on_custom_field_id_and_tracker_id", :unique => true - - create_table "custom_values", :force => true do |t| - t.string "customized_type", :limit => 30, :default => "", :null => false - t.integer "customized_id", :default => 0, :null => false - t.integer "custom_field_id", :default => 0, :null => false - t.text "value" - end - - add_index "custom_values", ["custom_field_id"], :name => "index_custom_values_on_custom_field_id" - add_index "custom_values", ["customized_type", "customized_id"], :name => "custom_values_customized" - - create_table "documents", :force => true do |t| - t.integer "project_id", :default => 0, :null => false - t.integer "category_id", :default => 0, :null => false - t.string "title", :limit => 60, :default => "", :null => false - t.text "description" - t.datetime "created_on" - t.integer "user_id", :default => 0 - t.integer "is_public", :default => 1 - end - - add_index "documents", ["category_id"], :name => "index_documents_on_category_id" - add_index "documents", ["created_on"], :name => "index_documents_on_created_on" - add_index "documents", ["project_id"], :name => "documents_project_id" - - create_table "enabled_modules", :force => true do |t| - t.integer "project_id" - t.string "name", :null => false - t.integer "course_id" - end - - add_index "enabled_modules", ["project_id"], :name => "enabled_modules_project_id" - - create_table "enumerations", :force => true do |t| - t.string "name", :limit => 30, :default => "", :null => false - t.integer "position", :default => 1 - t.boolean "is_default", :default => false, :null => false - t.string "type" - t.boolean "active", :default => true, :null => false - t.integer "project_id" - t.integer "parent_id" - t.string "position_name", :limit => 30 - end - - add_index "enumerations", ["id", "type"], :name => "index_enumerations_on_id_and_type" - add_index "enumerations", ["project_id"], :name => "index_enumerations_on_project_id" - - create_table "first_pages", :force => true do |t| - t.string "web_title" - t.string "title" - t.text "description" - t.string "page_type" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "sort_type" - t.integer "image_width", :default => 107 - t.integer "image_height", :default => 63 - t.integer "show_course", :default => 1 - t.integer "show_contest", :default => 1 - end - - create_table "forums", :force => true do |t| - t.string "name", :null => false - t.text "description" - t.integer "topic_count", :default => 0 - t.integer "memo_count", :default => 0 - t.integer "last_memo_id", :default => 0 - t.integer "creator_id", :null => false - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "sticky" - t.integer "locked" - end - - create_table "groups_users", :id => false, :force => true do |t| - t.integer "group_id", :null => false - t.integer "user_id", :null => false - end - - add_index "groups_users", ["group_id", "user_id"], :name => "groups_users_ids", :unique => true - - create_table "homework_attaches", :force => true do |t| - t.integer "bid_id" - t.integer "user_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "reward" - t.string "name" - t.text "description" - t.integer "state" - t.integer "project_id", :default => 0 - end - - create_table "homework_evaluations", :force => true do |t| - t.string "user_id" - t.string "homework_attach_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "homework_for_courses", :force => true do |t| - t.integer "course_id" - t.integer "bid_id" - end - - create_table "homework_users", :force => true do |t| - t.string "homework_attach_id" - t.string "user_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "issue_categories", :force => true do |t| - t.integer "project_id", :default => 0, :null => false - t.string "name", :limit => 30, :default => "", :null => false - t.integer "assigned_to_id" - end - - add_index "issue_categories", ["assigned_to_id"], :name => "index_issue_categories_on_assigned_to_id" - add_index "issue_categories", ["project_id"], :name => "issue_categories_project_id" - - create_table "issue_relations", :force => true do |t| - t.integer "issue_from_id", :null => false - t.integer "issue_to_id", :null => false - t.string "relation_type", :default => "", :null => false - t.integer "delay" - end - - add_index "issue_relations", ["issue_from_id", "issue_to_id"], :name => "index_issue_relations_on_issue_from_id_and_issue_to_id", :unique => true - add_index "issue_relations", ["issue_from_id"], :name => "index_issue_relations_on_issue_from_id" - add_index "issue_relations", ["issue_to_id"], :name => "index_issue_relations_on_issue_to_id" - - create_table "issue_statuses", :force => true do |t| - t.string "name", :limit => 30, :default => "", :null => false - t.boolean "is_closed", :default => false, :null => false - t.boolean "is_default", :default => false, :null => false - t.integer "position", :default => 1 - t.integer "default_done_ratio" - end - - add_index "issue_statuses", ["is_closed"], :name => "index_issue_statuses_on_is_closed" - add_index "issue_statuses", ["is_default"], :name => "index_issue_statuses_on_is_default" - add_index "issue_statuses", ["position"], :name => "index_issue_statuses_on_position" - - create_table "issues", :force => true do |t| - t.integer "tracker_id", :null => false - t.integer "project_id", :null => false - t.string "subject", :default => "", :null => false - t.text "description" - t.date "due_date" - t.integer "category_id" - t.integer "status_id", :null => false - t.integer "assigned_to_id" - t.integer "priority_id", :null => false - t.integer "fixed_version_id" - t.integer "author_id", :null => false - t.integer "lock_version", :default => 0, :null => false - t.datetime "created_on" - t.datetime "updated_on" - t.date "start_date" - t.integer "done_ratio", :default => 0, :null => false - t.float "estimated_hours" - t.integer "parent_id" - t.integer "root_id" - t.integer "lft" - t.integer "rgt" - t.boolean "is_private", :default => false, :null => false - t.datetime "closed_on" - end - - add_index "issues", ["assigned_to_id"], :name => "index_issues_on_assigned_to_id" - add_index "issues", ["author_id"], :name => "index_issues_on_author_id" - add_index "issues", ["category_id"], :name => "index_issues_on_category_id" - add_index "issues", ["created_on"], :name => "index_issues_on_created_on" - add_index "issues", ["fixed_version_id"], :name => "index_issues_on_fixed_version_id" - add_index "issues", ["priority_id"], :name => "index_issues_on_priority_id" - add_index "issues", ["project_id"], :name => "issues_project_id" - add_index "issues", ["root_id", "lft", "rgt"], :name => "index_issues_on_root_id_and_lft_and_rgt" - add_index "issues", ["status_id"], :name => "index_issues_on_status_id" - add_index "issues", ["tracker_id"], :name => "index_issues_on_tracker_id" - - create_table "join_in_competitions", :force => true do |t| - t.integer "user_id" - t.integer "competition_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "join_in_contests", :force => true do |t| - t.integer "user_id" - t.integer "bid_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "journal_details", :force => true do |t| - t.integer "journal_id", :default => 0, :null => false - t.string "property", :limit => 30, :default => "", :null => false - t.string "prop_key", :limit => 30, :default => "", :null => false - t.text "old_value" - t.text "value" - end - - add_index "journal_details", ["journal_id"], :name => "journal_details_journal_id" - - create_table "journal_replies", :id => false, :force => true do |t| - t.integer "journal_id" - t.integer "user_id" - t.integer "reply_id" - end - - add_index "journal_replies", ["journal_id"], :name => "index_journal_replies_on_journal_id" - add_index "journal_replies", ["reply_id"], :name => "index_journal_replies_on_reply_id" - add_index "journal_replies", ["user_id"], :name => "index_journal_replies_on_user_id" - - create_table "journals", :force => true do |t| - t.integer "journalized_id", :default => 0, :null => false - t.string "journalized_type", :limit => 30, :default => "", :null => false - t.integer "user_id", :default => 0, :null => false - t.text "notes" - t.datetime "created_on", :null => false - t.boolean "private_notes", :default => false, :null => false - end - - add_index "journals", ["created_on"], :name => "index_journals_on_created_on" - add_index "journals", ["journalized_id", "journalized_type"], :name => "journals_journalized_id" - add_index "journals", ["journalized_id"], :name => "index_journals_on_journalized_id" - add_index "journals", ["user_id"], :name => "index_journals_on_user_id" - - create_table "journals_for_messages", :force => true do |t| - t.integer "jour_id" - t.string "jour_type" - t.integer "user_id" - t.text "notes" - t.integer "status" - t.integer "reply_id" - t.datetime "created_on", :null => false - t.datetime "updated_on", :null => false - t.string "m_parent_id" - t.boolean "is_readed" - t.integer "m_reply_count" - t.integer "m_reply_id" - t.integer "is_comprehensive_evaluation" - end - - create_table "member_roles", :force => true do |t| - t.integer "member_id", :null => false - t.integer "role_id", :null => false - t.integer "inherited_from" - end - - add_index "member_roles", ["member_id"], :name => "index_member_roles_on_member_id" - add_index "member_roles", ["role_id"], :name => "index_member_roles_on_role_id" - - create_table "members", :force => true do |t| - t.integer "user_id", :default => 0, :null => false - t.integer "project_id", :default => 0 - t.datetime "created_on" - t.boolean "mail_notification", :default => false, :null => false - t.integer "course_id", :default => -1 - end - - add_index "members", ["project_id"], :name => "index_members_on_project_id" - add_index "members", ["user_id", "project_id", "course_id"], :name => "index_members_on_user_id_and_project_id", :unique => true - add_index "members", ["user_id"], :name => "index_members_on_user_id" - - create_table "memos", :force => true do |t| - t.integer "forum_id", :null => false - t.integer "parent_id" - t.string "subject", :null => false - t.text "content", :null => false - t.integer "author_id", :null => false - t.integer "replies_count", :default => 0 - t.integer "last_reply_id" - t.boolean "lock", :default => false - t.boolean "sticky", :default => false - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "viewed_count", :default => 0 - end - - create_table "messages", :force => true do |t| - t.integer "board_id", :null => false - t.integer "parent_id" - t.string "subject", :default => "", :null => false - t.text "content" - t.integer "author_id" - t.integer "replies_count", :default => 0, :null => false - t.integer "last_reply_id" - t.datetime "created_on", :null => false - t.datetime "updated_on", :null => false - t.boolean "locked", :default => false - t.integer "sticky", :default => 0 - end - - add_index "messages", ["author_id"], :name => "index_messages_on_author_id" - add_index "messages", ["board_id"], :name => "messages_board_id" - add_index "messages", ["created_on"], :name => "index_messages_on_created_on" - add_index "messages", ["last_reply_id"], :name => "index_messages_on_last_reply_id" - add_index "messages", ["parent_id"], :name => "messages_parent_id" - - create_table "news", :force => true do |t| - t.integer "project_id" - t.string "title", :limit => 60, :default => "", :null => false - t.string "summary", :default => "" - t.text "description" - t.integer "author_id", :default => 0, :null => false - t.datetime "created_on" - t.integer "comments_count", :default => 0, :null => false - t.integer "course_id" - end - - add_index "news", ["author_id"], :name => "index_news_on_author_id" - add_index "news", ["created_on"], :name => "index_news_on_created_on" - add_index "news", ["project_id"], :name => "news_project_id" - - create_table "no_uses", :force => true do |t| - t.integer "user_id", :null => false - t.string "no_use_type" - t.integer "no_use_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "notificationcomments", :force => true do |t| - t.string "notificationcommented_type" - t.integer "notificationcommented_id" - t.integer "author_id" - t.text "notificationcomments" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "open_id_authentication_associations", :force => true do |t| - t.integer "issued" - t.integer "lifetime" - t.string "handle" - t.string "assoc_type" - t.binary "server_url" - t.binary "secret" - end - - create_table "open_id_authentication_nonces", :force => true do |t| - t.integer "timestamp", :null => false - t.string "server_url" - t.string "salt", :null => false - end - - create_table "open_source_projects", :force => true do |t| - t.string "name" - t.text "description" - t.integer "commit_count", :default => 0 - t.integer "code_line", :default => 0 - t.integer "users_count", :default => 0 - t.date "last_commit_time" - t.string "url" - t.date "date_collected" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "option_numbers", :force => true do |t| - t.integer "user_id" - t.integer "memo" - t.integer "messages_for_issues" - t.integer "issues_status" - t.integer "replay_for_message" - t.integer "replay_for_memo" - t.integer "follow" - t.integer "tread" - t.integer "praise_by_one" - t.integer "praise_by_two" - t.integer "praise_by_three" - t.integer "tread_by_one" - t.integer "tread_by_two" - t.integer "tread_by_three" - t.integer "changeset" - t.integer "document" - t.integer "attachment" - t.integer "issue_done_ratio" - t.integer "post_issue" - t.integer "score_type" - t.integer "total_score" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "project_id" - end - - create_table "praise_tread_caches", :force => true do |t| - t.integer "object_id", :null => false - t.string "object_type" - t.integer "praise_num" - t.integer "tread_num" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "praise_treads", :force => true do |t| - t.integer "user_id", :null => false - t.integer "praise_tread_object_id" - t.string "praise_tread_object_type" - t.integer "praise_or_tread" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "project_infos", :force => true do |t| - t.integer "project_id" - t.integer "user_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "project_scores", :force => true do |t| - t.string "project_id" - t.integer "score" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "issue_num", :default => 0 - t.integer "issue_journal_num", :default => 0 - t.integer "news_num", :default => 0 - t.integer "documents_num", :default => 0 - t.integer "changeset_num", :default => 0 - t.integer "board_message_num", :default => 0 - end - - create_table "project_statuses", :force => true do |t| - t.integer "changesets_count" - t.integer "watchers_count" - t.integer "project_id" - t.integer "project_type" - t.float "grade", :default => 0.0 - t.integer "course_ac_para", :default => 0 - end - - add_index "project_statuses", ["grade"], :name => "index_project_statuses_on_grade" - - create_table "projecting_softapplictions", :force => true do |t| - t.integer "user_id" - t.integer "softapplication_id" - t.integer "project_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "projects", :force => true do |t| - t.string "name", :default => "", :null => false - t.text "description" - t.string "homepage", :default => "" - t.boolean "is_public", :default => true, :null => false - t.integer "parent_id" - t.datetime "created_on" - t.datetime "updated_on" - t.string "identifier" - t.integer "status", :default => 1, :null => false - t.integer "lft" - t.integer "rgt" - t.boolean "inherit_members", :default => false, :null => false - t.integer "project_type" - t.boolean "hidden_repo", :default => false, :null => false - t.integer "attachmenttype", :default => 1 - t.integer "user_id" - t.integer "dts_test", :default => 0 - end - - add_index "projects", ["lft"], :name => "index_projects_on_lft" - add_index "projects", ["rgt"], :name => "index_projects_on_rgt" - - create_table "projects_trackers", :id => false, :force => true do |t| - t.integer "project_id", :default => 0, :null => false - t.integer "tracker_id", :default => 0, :null => false - end - - add_index "projects_trackers", ["project_id", "tracker_id"], :name => "projects_trackers_unique", :unique => true - add_index "projects_trackers", ["project_id"], :name => "projects_trackers_project_id" - - create_table "queries", :force => true do |t| - t.integer "project_id" - t.string "name", :default => "", :null => false - t.text "filters" - t.integer "user_id", :default => 0, :null => false - t.boolean "is_public", :default => false, :null => false - t.text "column_names" - t.text "sort_criteria" - t.string "group_by" - t.string "type" - end - - add_index "queries", ["project_id"], :name => "index_queries_on_project_id" - add_index "queries", ["user_id"], :name => "index_queries_on_user_id" - - create_table "relative_memo_to_open_source_projects", :force => true do |t| - t.integer "osp_id" - t.integer "relative_memo_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "relative_memos", :force => true do |t| - t.integer "osp_id" - t.integer "parent_id" - t.string "subject", :null => false - t.text "content", :limit => 16777215, :null => false - t.integer "author_id" - t.integer "replies_count", :default => 0 - t.integer "last_reply_id" - t.boolean "lock", :default => false - t.boolean "sticky", :default => false - t.boolean "is_quote", :default => false - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "viewed_count_crawl", :default => 0 - t.integer "viewed_count_local", :default => 0 - t.string "url" - t.string "username" - t.string "userhomeurl" - t.date "date_collected" - t.string "topic_resource" - end - - create_table "repositories", :force => true do |t| - t.integer "project_id", :default => 0, :null => false - t.string "url", :default => "", :null => false - t.string "login", :limit => 60, :default => "" - t.string "password", :default => "" - t.string "root_url", :default => "" - t.string "type" - t.string "path_encoding", :limit => 64 - t.string "log_encoding", :limit => 64 - t.text "extra_info" - t.string "identifier" - t.boolean "is_default", :default => false - end - - add_index "repositories", ["project_id"], :name => "index_repositories_on_project_id" - - create_table "rich_rich_files", :force => true do |t| - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "rich_file_file_name" - t.string "rich_file_content_type" - t.integer "rich_file_file_size" - t.datetime "rich_file_updated_at" - t.string "owner_type" - t.integer "owner_id" - t.text "uri_cache" - t.string "simplified_type", :default => "file" - end - - create_table "roles", :force => true do |t| - t.string "name", :limit => 30, :default => "", :null => false - t.integer "position", :default => 1 - t.boolean "assignable", :default => true - t.integer "builtin", :default => 0, :null => false - t.text "permissions" - t.string "issues_visibility", :limit => 30, :default => "default", :null => false - end - - create_table "schools", :force => true do |t| - t.string "name" - t.string "province" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "logo_link" - end - - create_table "seems_rateable_cached_ratings", :force => true do |t| - t.integer "cacheable_id", :limit => 8 - t.string "cacheable_type" - t.float "avg", :null => false - t.integer "cnt", :null => false - t.string "dimension" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "seems_rateable_rates", :force => true do |t| - t.integer "rater_id", :limit => 8 - t.integer "rateable_id" - t.string "rateable_type" - t.float "stars", :null => false - t.string "dimension" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "settings", :force => true do |t| - t.string "name", :default => "", :null => false - t.text "value" - t.datetime "updated_on" - end - - add_index "settings", ["name"], :name => "index_settings_on_name" - - create_table "shares", :force => true do |t| - t.date "created_on" - t.string "url" - t.string "title" - t.integer "share_type" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "project_id" - t.integer "user_id" - t.string "description" - end - - create_table "softapplications", :force => true do |t| - t.string "name" - t.text "description" - t.integer "app_type_id" - t.string "app_type_name" - t.string "android_min_version_available" - t.integer "user_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "contest_id" - t.integer "softapplication_id" - t.integer "is_public" - t.string "application_developers" - t.string "deposit_project_url" - t.string "deposit_project" - t.integer "project_id" - end - - create_table "students_for_courses", :force => true do |t| - t.integer "student_id" - t.integer "course_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "taggings", :force => true do |t| - t.integer "tag_id" - t.integer "taggable_id" - t.string "taggable_type" - t.integer "tagger_id" - t.string "tagger_type" - t.string "context", :limit => 128 - t.datetime "created_at" - end - - add_index "taggings", ["tag_id"], :name => "index_taggings_on_tag_id" - add_index "taggings", ["taggable_id", "taggable_type", "context"], :name => "index_taggings_on_taggable_id_and_taggable_type_and_context" - add_index "taggings", ["taggable_type"], :name => "index_taggings_on_taggable_type" - - create_table "tags", :force => true do |t| - t.string "name" - end - - create_table "teachers", :force => true do |t| - t.string "tea_name" - t.string "location" - t.integer "couurse_time" - t.integer "course_code" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "extra" - end - - create_table "time_entries", :force => true do |t| - t.integer "project_id", :null => false - t.integer "user_id", :null => false - t.integer "issue_id" - t.float "hours", :null => false - t.string "comments" - t.integer "activity_id", :null => false - t.date "spent_on", :null => false - t.integer "tyear", :null => false - t.integer "tmonth", :null => false - t.integer "tweek", :null => false - t.datetime "created_on", :null => false - t.datetime "updated_on", :null => false - end - - add_index "time_entries", ["activity_id"], :name => "index_time_entries_on_activity_id" - add_index "time_entries", ["created_on"], :name => "index_time_entries_on_created_on" - add_index "time_entries", ["issue_id"], :name => "time_entries_issue_id" - add_index "time_entries", ["project_id"], :name => "time_entries_project_id" - add_index "time_entries", ["user_id"], :name => "index_time_entries_on_user_id" - - create_table "tokens", :force => true do |t| - t.integer "user_id", :default => 0, :null => false - t.string "action", :limit => 30, :default => "", :null => false - t.string "value", :limit => 40, :default => "", :null => false - t.datetime "created_on", :null => false - end - - add_index "tokens", ["user_id"], :name => "index_tokens_on_user_id" - add_index "tokens", ["value"], :name => "tokens_value", :unique => true - - create_table "trackers", :force => true do |t| - t.string "name", :limit => 30, :default => "", :null => false - t.boolean "is_in_chlog", :default => false, :null => false - t.integer "position", :default => 1 - t.boolean "is_in_roadmap", :default => true, :null => false - t.integer "fields_bits", :default => 0 - end - - create_table "user_extensions", :force => true do |t| - t.integer "user_id", :null => false - t.date "birthday" - t.string "brief_introduction" - t.integer "gender" - t.string "location" - t.string "occupation" - t.integer "work_experience" - t.integer "zip_code" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "technical_title" - t.integer "identity" - t.string "student_id" - t.string "teacher_realname" - t.string "student_realname" - t.string "location_city" - t.integer "school_id" - end - - create_table "user_grades", :force => true do |t| - t.integer "user_id", :null => false - t.integer "project_id", :null => false - t.float "grade", :default => 0.0 - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - add_index "user_grades", ["grade"], :name => "index_user_grades_on_grade" - add_index "user_grades", ["project_id"], :name => "index_user_grades_on_project_id" - add_index "user_grades", ["user_id"], :name => "index_user_grades_on_user_id" - - create_table "user_levels", :force => true do |t| - t.integer "user_id" - t.integer "level" - end - - create_table "user_preferences", :force => true do |t| - t.integer "user_id", :default => 0, :null => false - t.text "others" - t.boolean "hide_mail", :default => false - t.string "time_zone" - end - - add_index "user_preferences", ["user_id"], :name => "index_user_preferences_on_user_id" - - create_table "user_score_details", :force => true do |t| - t.integer "current_user_id" - t.integer "target_user_id" - t.string "score_type" - t.string "score_action" - t.integer "user_id" - t.integer "old_score" - t.integer "new_score" - t.integer "current_user_level" - t.integer "target_user_level" - t.integer "score_changeable_obj_id" - t.string "score_changeable_obj_type" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "user_scores", :force => true do |t| - t.integer "user_id", :null => false - t.integer "collaboration" - t.integer "influence" - t.integer "skill" - t.integer "active" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "user_statuses", :force => true do |t| - t.integer "changesets_count" - t.integer "watchers_count" - t.integer "user_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.float "grade", :default => 0.0 - end - - add_index "user_statuses", ["changesets_count"], :name => "index_user_statuses_on_changesets_count" - add_index "user_statuses", ["grade"], :name => "index_user_statuses_on_grade" - add_index "user_statuses", ["watchers_count"], :name => "index_user_statuses_on_watchers_count" - - create_table "users", :force => true do |t| - t.string "login", :default => "", :null => false - t.string "hashed_password", :limit => 40, :default => "", :null => false - t.string "firstname", :limit => 30, :default => "", :null => false - t.string "lastname", :default => "", :null => false - t.string "mail", :limit => 60, :default => "", :null => false - t.boolean "admin", :default => false, :null => false - t.integer "status", :default => 1, :null => false - t.datetime "last_login_on" - t.string "language", :limit => 5, :default => "" - t.integer "auth_source_id" - t.datetime "created_on" - t.datetime "updated_on" - t.string "type" - t.string "identity_url" - t.string "mail_notification", :default => "", :null => false - t.string "salt", :limit => 64 - end - - add_index "users", ["auth_source_id"], :name => "index_users_on_auth_source_id" - add_index "users", ["id", "type"], :name => "index_users_on_id_and_type" - add_index "users", ["type"], :name => "index_users_on_type" - - create_table "versions", :force => true do |t| - t.integer "project_id", :default => 0, :null => false - t.string "name", :default => "", :null => false - t.string "description", :default => "" - t.date "effective_date" - t.datetime "created_on" - t.datetime "updated_on" - t.string "wiki_page_title" - t.string "status", :default => "open" - t.string "sharing", :default => "none", :null => false - end - - add_index "versions", ["project_id"], :name => "versions_project_id" - add_index "versions", ["sharing"], :name => "index_versions_on_sharing" - - create_table "watchers", :force => true do |t| - t.string "watchable_type", :default => "", :null => false - t.integer "watchable_id", :default => 0, :null => false - t.integer "user_id" - end - - add_index "watchers", ["user_id", "watchable_type"], :name => "watchers_user_id_type" - add_index "watchers", ["user_id"], :name => "index_watchers_on_user_id" - add_index "watchers", ["watchable_id", "watchable_type"], :name => "index_watchers_on_watchable_id_and_watchable_type" - - create_table "web_footer_companies", :force => true do |t| - t.string "name" - t.string "logo_size" - t.string "url" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "web_footer_oranizers", :force => true do |t| - t.string "name" - t.text "description" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "wiki_content_versions", :force => true do |t| - t.integer "wiki_content_id", :null => false - t.integer "page_id", :null => false - t.integer "author_id" - t.binary "data", :limit => 2147483647 - t.string "compression", :limit => 6, :default => "" - t.string "comments", :default => "" - t.datetime "updated_on", :null => false - t.integer "version", :null => false - end - - add_index "wiki_content_versions", ["updated_on"], :name => "index_wiki_content_versions_on_updated_on" - add_index "wiki_content_versions", ["wiki_content_id"], :name => "wiki_content_versions_wcid" - - create_table "wiki_contents", :force => true do |t| - t.integer "page_id", :null => false - t.integer "author_id" - t.text "text", :limit => 2147483647 - t.string "comments", :default => "" - t.datetime "updated_on", :null => false - t.integer "version", :null => false - end - - add_index "wiki_contents", ["author_id"], :name => "index_wiki_contents_on_author_id" - add_index "wiki_contents", ["page_id"], :name => "wiki_contents_page_id" - - create_table "wiki_pages", :force => true do |t| - t.integer "wiki_id", :null => false - t.string "title", :null => false - t.datetime "created_on", :null => false - t.boolean "protected", :default => false, :null => false - t.integer "parent_id" - end - - add_index "wiki_pages", ["parent_id"], :name => "index_wiki_pages_on_parent_id" - add_index "wiki_pages", ["wiki_id", "title"], :name => "wiki_pages_wiki_id_title" - add_index "wiki_pages", ["wiki_id"], :name => "index_wiki_pages_on_wiki_id" - - create_table "wiki_redirects", :force => true do |t| - t.integer "wiki_id", :null => false - t.string "title" - t.string "redirects_to" - t.datetime "created_on", :null => false - end - - add_index "wiki_redirects", ["wiki_id", "title"], :name => "wiki_redirects_wiki_id_title" - add_index "wiki_redirects", ["wiki_id"], :name => "index_wiki_redirects_on_wiki_id" - - create_table "wikis", :force => true do |t| - t.integer "project_id", :null => false - t.string "start_page", :null => false - t.integer "status", :default => 1, :null => false - end - - add_index "wikis", ["project_id"], :name => "wikis_project_id" - - create_table "workflows", :force => true do |t| - t.integer "tracker_id", :default => 0, :null => false - t.integer "old_status_id", :default => 0, :null => false - t.integer "new_status_id", :default => 0, :null => false - t.integer "role_id", :default => 0, :null => false - t.boolean "assignee", :default => false, :null => false - t.boolean "author", :default => false, :null => false - t.string "type", :limit => 30 - t.string "field_name", :limit => 30 - t.string "rule", :limit => 30 - end - - add_index "workflows", ["new_status_id"], :name => "index_workflows_on_new_status_id" - add_index "workflows", ["old_status_id"], :name => "index_workflows_on_old_status_id" - add_index "workflows", ["role_id", "tracker_id", "old_status_id"], :name => "wkfs_role_tracker_old_status" - add_index "workflows", ["role_id"], :name => "index_workflows_on_role_id" - - create_table "works_categories", :force => true do |t| - t.string "category" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - -end +# encoding: UTF-8 +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# Note that this schema.rb definition is the authoritative source for your +# database schema. If you need to create the application database on another +# system, you should be using db:schema:load, not running all the migrations +# from scratch. The latter is a flawed and unsustainable approach (the more migrations +# you'll amass, the slower it'll run and the greater likelihood for issues). +# +# It's strongly recommended to check this file into your version control system. + +ActiveRecord::Schema.define(:version => 20141127015431) do + + create_table "activities", :force => true do |t| + t.integer "act_id", :null => false + t.string "act_type", :null => false + t.integer "user_id", :null => false + end + + add_index "activities", ["act_id", "act_type"], :name => "index_activities_on_act_id_and_act_type" + add_index "activities", ["user_id", "act_type"], :name => "index_activities_on_user_id_and_act_type" + add_index "activities", ["user_id"], :name => "index_activities_on_user_id" + + create_table "api_keys", :force => true do |t| + t.string "access_token" + t.datetime "expires_at" + t.integer "user_id" + t.boolean "active", :default => true + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + add_index "api_keys", ["access_token"], :name => "index_api_keys_on_access_token" + add_index "api_keys", ["user_id"], :name => "index_api_keys_on_user_id" + + create_table "applied_projects", :force => true do |t| + t.integer "project_id", :null => false + t.integer "user_id", :null => false + end + + create_table "apply_project_masters", :force => true do |t| + t.integer "user_id" + t.string "apply_type" + t.integer "apply_id" + t.integer "status" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "attachments", :force => true do |t| + t.integer "container_id" + t.string "container_type", :limit => 30 + t.string "filename", :default => "", :null => false + t.string "disk_filename", :default => "", :null => false + t.integer "filesize", :default => 0, :null => false + t.string "content_type", :default => "" + t.string "digest", :limit => 40, :default => "", :null => false + t.integer "downloads", :default => 0, :null => false + t.integer "author_id", :default => 0, :null => false + t.datetime "created_on" + t.string "description" + t.string "disk_directory" + t.integer "attachtype", :default => 1 + t.integer "is_public", :default => 1 + t.integer "copy_from" + end + + add_index "attachments", ["author_id"], :name => "index_attachments_on_author_id" + add_index "attachments", ["container_id", "container_type"], :name => "index_attachments_on_container_id_and_container_type" + add_index "attachments", ["created_on"], :name => "index_attachments_on_created_on" + + create_table "attachmentstypes", :force => true do |t| + t.integer "typeId", :null => false + t.string "typeName", :limit => 50 + end + + create_table "auth_sources", :force => true do |t| + t.string "type", :limit => 30, :default => "", :null => false + t.string "name", :limit => 60, :default => "", :null => false + t.string "host", :limit => 60 + t.integer "port" + t.string "account" + t.string "account_password", :default => "" + t.string "base_dn" + t.string "attr_login", :limit => 30 + t.string "attr_firstname", :limit => 30 + t.string "attr_lastname", :limit => 30 + t.string "attr_mail", :limit => 30 + t.boolean "onthefly_register", :default => false, :null => false + t.boolean "tls", :default => false, :null => false + t.string "filter" + t.integer "timeout" + end + + add_index "auth_sources", ["id", "type"], :name => "index_auth_sources_on_id_and_type" + + create_table "biding_projects", :force => true do |t| + t.integer "project_id" + t.integer "bid_id" + t.integer "user_id" + t.string "description" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "reward" + end + + create_table "bids", :force => true do |t| + t.string "name" + t.string "budget", :null => false + t.integer "author_id" + t.date "deadline" + t.text "description" + t.datetime "created_on", :null => false + t.datetime "updated_on", :null => false + t.integer "commit" + t.integer "reward_type" + t.integer "homework_type" + t.integer "parent_id" + t.string "password" + t.integer "is_evaluation" + t.integer "proportion", :default => 60 + t.integer "comment_status", :default => 0 + t.integer "evaluation_num", :default => 3 + t.integer "open_anonymous_evaluation", :default => 1 + end + + create_table "boards", :force => true do |t| + t.integer "project_id", :null => false + t.string "name", :default => "", :null => false + t.string "description" + t.integer "position", :default => 1 + t.integer "topics_count", :default => 0, :null => false + t.integer "messages_count", :default => 0, :null => false + t.integer "last_message_id" + t.integer "parent_id" + t.integer "course_id" + end + + add_index "boards", ["last_message_id"], :name => "index_boards_on_last_message_id" + add_index "boards", ["project_id"], :name => "boards_project_id" + + create_table "bug_to_osps", :force => true do |t| + t.integer "osp_id" + t.integer "relative_memo_id" + t.string "description" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "changes", :force => true do |t| + t.integer "changeset_id", :null => false + t.string "action", :limit => 1, :default => "", :null => false + t.text "path", :null => false + t.text "from_path" + t.string "from_revision" + t.string "revision" + t.string "branch" + end + + add_index "changes", ["changeset_id"], :name => "changesets_changeset_id" + + create_table "changeset_parents", :id => false, :force => true do |t| + t.integer "changeset_id", :null => false + t.integer "parent_id", :null => false + end + + add_index "changeset_parents", ["changeset_id"], :name => "changeset_parents_changeset_ids" + add_index "changeset_parents", ["parent_id"], :name => "changeset_parents_parent_ids" + + create_table "changesets", :force => true do |t| + t.integer "repository_id", :null => false + t.string "revision", :null => false + t.string "committer" + t.datetime "committed_on", :null => false + t.text "comments" + t.date "commit_date" + t.string "scmid" + t.integer "user_id" + end + + add_index "changesets", ["committed_on"], :name => "index_changesets_on_committed_on" + add_index "changesets", ["repository_id", "revision"], :name => "changesets_repos_rev", :unique => true + add_index "changesets", ["repository_id", "scmid"], :name => "changesets_repos_scmid" + add_index "changesets", ["repository_id"], :name => "index_changesets_on_repository_id" + add_index "changesets", ["user_id"], :name => "index_changesets_on_user_id" + + create_table "changesets_issues", :id => false, :force => true do |t| + t.integer "changeset_id", :null => false + t.integer "issue_id", :null => false + end + + add_index "changesets_issues", ["changeset_id", "issue_id"], :name => "changesets_issues_ids", :unique => true + + create_table "code_review_assignments", :force => true do |t| + t.integer "issue_id" + t.integer "change_id" + t.integer "attachment_id" + t.string "file_path" + t.string "rev" + t.string "rev_to" + t.string "action_type" + t.integer "changeset_id" + end + + create_table "code_review_project_settings", :force => true do |t| + t.integer "project_id" + t.integer "tracker_id" + t.datetime "created_at" + t.datetime "updated_at" + t.integer "updated_by" + t.boolean "hide_code_review_tab", :default => false + t.integer "auto_relation", :default => 1 + t.integer "assignment_tracker_id" + t.text "auto_assign" + t.integer "lock_version", :default => 0, :null => false + t.boolean "tracker_in_review_dialog", :default => false + end + + create_table "code_review_user_settings", :force => true do |t| + t.integer "user_id", :default => 0, :null => false + t.integer "mail_notification", :default => 0, :null => false + t.datetime "created_at" + t.datetime "updated_at" + end + + create_table "code_reviews", :force => true do |t| + t.integer "project_id" + t.integer "change_id" + t.datetime "created_at" + t.datetime "updated_at" + t.integer "line" + t.integer "updated_by_id" + t.integer "lock_version", :default => 0, :null => false + t.integer "status_changed_from" + t.integer "status_changed_to" + t.integer "issue_id" + t.string "action_type" + t.string "file_path" + t.string "rev" + t.string "rev_to" + t.integer "attachment_id" + t.integer "file_count", :default => 0, :null => false + t.boolean "diff_all" + end + + create_table "comments", :force => true do |t| + t.string "commented_type", :limit => 30, :default => "", :null => false + t.integer "commented_id", :default => 0, :null => false + t.integer "author_id", :default => 0, :null => false + t.text "comments" + t.datetime "created_on", :null => false + t.datetime "updated_on", :null => false + end + + add_index "comments", ["author_id"], :name => "index_comments_on_author_id" + add_index "comments", ["commented_id", "commented_type"], :name => "index_comments_on_commented_id_and_commented_type" + + create_table "contest_notifications", :force => true do |t| + t.text "title" + t.text "content" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "contesting_projects", :force => true do |t| + t.integer "project_id" + t.string "contest_id" + t.integer "user_id" + t.string "description" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "reward" + end + + create_table "contesting_softapplications", :force => true do |t| + t.integer "softapplication_id" + t.integer "contest_id" + t.integer "user_id" + t.string "description" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "reward" + end + + create_table "contestnotifications", :force => true do |t| + t.integer "contest_id" + t.string "title" + t.string "summary" + t.text "description" + t.integer "author_id" + t.integer "notificationcomments_count" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "contests", :force => true do |t| + t.string "name" + t.string "budget", :default => "" + t.integer "author_id" + t.date "deadline" + t.string "description" + t.integer "commit" + t.string "password" + t.datetime "created_on", :null => false + t.datetime "updated_on", :null => false + end + + create_table "course_attachments", :force => true do |t| + t.string "filename" + t.string "disk_filename" + t.integer "filesize" + t.string "content_type" + t.string "digest" + t.integer "downloads" + t.string "author_id" + t.string "integer" + t.string "description" + t.string "disk_directory" + t.integer "attachtype" + t.integer "is_public" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "container_id", :default => 0 + end + + create_table "course_infos", :force => true do |t| + t.integer "course_id" + t.integer "user_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "course_statuses", :force => true do |t| + t.integer "changesets_count" + t.integer "watchers_count" + t.integer "course_id" + t.float "grade", :default => 0.0 + t.integer "course_ac_para", :default => 0 + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "courses", :force => true do |t| + t.integer "tea_id" + t.string "name" + t.integer "state" + t.string "code" + t.integer "time" + t.string "extra" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "location" + t.string "term" + t.string "string" + t.string "password" + t.string "setup_time" + t.string "endup_time" + t.string "class_period" + t.integer "school_id" + t.text "description" + t.integer "status", :default => 1 + t.integer "attachmenttype", :default => 2 + t.integer "lft" + t.integer "rgt" + t.integer "is_public", :limit => 1, :default => 1 + t.integer "inherit_members", :limit => 1, :default => 1 + t.integer "open_student", :default => 0 + end + + create_table "custom_fields", :force => true do |t| + t.string "type", :limit => 30, :default => "", :null => false + t.string "name", :limit => 30, :default => "", :null => false + t.string "field_format", :limit => 30, :default => "", :null => false + t.text "possible_values" + t.string "regexp", :default => "" + t.integer "min_length", :default => 0, :null => false + t.integer "max_length", :default => 0, :null => false + t.boolean "is_required", :default => false, :null => false + t.boolean "is_for_all", :default => false, :null => false + t.boolean "is_filter", :default => false, :null => false + t.integer "position", :default => 1 + t.boolean "searchable", :default => false + t.text "default_value" + t.boolean "editable", :default => true + t.boolean "visible", :default => true, :null => false + t.boolean "multiple", :default => false + end + + add_index "custom_fields", ["id", "type"], :name => "index_custom_fields_on_id_and_type" + + create_table "custom_fields_projects", :id => false, :force => true do |t| + t.integer "custom_field_id", :default => 0, :null => false + t.integer "project_id", :default => 0, :null => false + end + + add_index "custom_fields_projects", ["custom_field_id", "project_id"], :name => "index_custom_fields_projects_on_custom_field_id_and_project_id", :unique => true + + create_table "custom_fields_trackers", :id => false, :force => true do |t| + t.integer "custom_field_id", :default => 0, :null => false + t.integer "tracker_id", :default => 0, :null => false + end + + add_index "custom_fields_trackers", ["custom_field_id", "tracker_id"], :name => "index_custom_fields_trackers_on_custom_field_id_and_tracker_id", :unique => true + + create_table "custom_values", :force => true do |t| + t.string "customized_type", :limit => 30, :default => "", :null => false + t.integer "customized_id", :default => 0, :null => false + t.integer "custom_field_id", :default => 0, :null => false + t.text "value" + end + + add_index "custom_values", ["custom_field_id"], :name => "index_custom_values_on_custom_field_id" + add_index "custom_values", ["customized_type", "customized_id"], :name => "custom_values_customized" + + create_table "documents", :force => true do |t| + t.integer "project_id", :default => 0, :null => false + t.integer "category_id", :default => 0, :null => false + t.string "title", :limit => 60, :default => "", :null => false + t.text "description" + t.datetime "created_on" + t.integer "user_id", :default => 0 + t.integer "is_public", :default => 1 + end + + add_index "documents", ["category_id"], :name => "index_documents_on_category_id" + add_index "documents", ["created_on"], :name => "index_documents_on_created_on" + add_index "documents", ["project_id"], :name => "documents_project_id" + + create_table "enabled_modules", :force => true do |t| + t.integer "project_id" + t.string "name", :null => false + t.integer "course_id" + end + + add_index "enabled_modules", ["project_id"], :name => "enabled_modules_project_id" + + create_table "enumerations", :force => true do |t| + t.string "name", :limit => 30, :default => "", :null => false + t.integer "position", :default => 1 + t.boolean "is_default", :default => false, :null => false + t.string "type" + t.boolean "active", :default => true, :null => false + t.integer "project_id" + t.integer "parent_id" + t.string "position_name", :limit => 30 + end + + add_index "enumerations", ["id", "type"], :name => "index_enumerations_on_id_and_type" + add_index "enumerations", ["project_id"], :name => "index_enumerations_on_project_id" + + create_table "first_pages", :force => true do |t| + t.string "web_title" + t.string "title" + t.text "description" + t.string "page_type" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "sort_type" + t.integer "image_width", :default => 107 + t.integer "image_height", :default => 63 + t.integer "show_course", :default => 1 + t.integer "show_contest", :default => 1 + end + + create_table "forums", :force => true do |t| + t.string "name", :null => false + t.text "description" + t.integer "topic_count", :default => 0 + t.integer "memo_count", :default => 0 + t.integer "last_memo_id", :default => 0 + t.integer "creator_id", :null => false + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "sticky" + t.integer "locked" + end + + create_table "groups_users", :id => false, :force => true do |t| + t.integer "group_id", :null => false + t.integer "user_id", :null => false + end + + add_index "groups_users", ["group_id", "user_id"], :name => "groups_users_ids", :unique => true + + create_table "homework_attaches", :force => true do |t| + t.integer "bid_id" + t.integer "user_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "reward" + t.string "name" + t.text "description" + t.integer "state" + t.integer "project_id", :default => 0 + end + + create_table "homework_evaluations", :force => true do |t| + t.string "user_id" + t.string "homework_attach_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "homework_for_courses", :force => true do |t| + t.integer "course_id" + t.integer "bid_id" + end + + create_table "homework_users", :force => true do |t| + t.string "homework_attach_id" + t.string "user_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "issue_categories", :force => true do |t| + t.integer "project_id", :default => 0, :null => false + t.string "name", :limit => 30, :default => "", :null => false + t.integer "assigned_to_id" + end + + add_index "issue_categories", ["assigned_to_id"], :name => "index_issue_categories_on_assigned_to_id" + add_index "issue_categories", ["project_id"], :name => "issue_categories_project_id" + + create_table "issue_relations", :force => true do |t| + t.integer "issue_from_id", :null => false + t.integer "issue_to_id", :null => false + t.string "relation_type", :default => "", :null => false + t.integer "delay" + end + + add_index "issue_relations", ["issue_from_id", "issue_to_id"], :name => "index_issue_relations_on_issue_from_id_and_issue_to_id", :unique => true + add_index "issue_relations", ["issue_from_id"], :name => "index_issue_relations_on_issue_from_id" + add_index "issue_relations", ["issue_to_id"], :name => "index_issue_relations_on_issue_to_id" + + create_table "issue_statuses", :force => true do |t| + t.string "name", :limit => 30, :default => "", :null => false + t.boolean "is_closed", :default => false, :null => false + t.boolean "is_default", :default => false, :null => false + t.integer "position", :default => 1 + t.integer "default_done_ratio" + end + + add_index "issue_statuses", ["is_closed"], :name => "index_issue_statuses_on_is_closed" + add_index "issue_statuses", ["is_default"], :name => "index_issue_statuses_on_is_default" + add_index "issue_statuses", ["position"], :name => "index_issue_statuses_on_position" + + create_table "issues", :force => true do |t| + t.integer "tracker_id", :null => false + t.integer "project_id", :null => false + t.string "subject", :default => "", :null => false + t.text "description" + t.date "due_date" + t.integer "category_id" + t.integer "status_id", :null => false + t.integer "assigned_to_id" + t.integer "priority_id", :null => false + t.integer "fixed_version_id" + t.integer "author_id", :null => false + t.integer "lock_version", :default => 0, :null => false + t.datetime "created_on" + t.datetime "updated_on" + t.date "start_date" + t.integer "done_ratio", :default => 0, :null => false + t.float "estimated_hours" + t.integer "parent_id" + t.integer "root_id" + t.integer "lft" + t.integer "rgt" + t.boolean "is_private", :default => false, :null => false + t.datetime "closed_on" + end + + add_index "issues", ["assigned_to_id"], :name => "index_issues_on_assigned_to_id" + add_index "issues", ["author_id"], :name => "index_issues_on_author_id" + add_index "issues", ["category_id"], :name => "index_issues_on_category_id" + add_index "issues", ["created_on"], :name => "index_issues_on_created_on" + add_index "issues", ["fixed_version_id"], :name => "index_issues_on_fixed_version_id" + add_index "issues", ["priority_id"], :name => "index_issues_on_priority_id" + add_index "issues", ["project_id"], :name => "issues_project_id" + add_index "issues", ["root_id", "lft", "rgt"], :name => "index_issues_on_root_id_and_lft_and_rgt" + add_index "issues", ["status_id"], :name => "index_issues_on_status_id" + add_index "issues", ["tracker_id"], :name => "index_issues_on_tracker_id" + + create_table "join_in_competitions", :force => true do |t| + t.integer "user_id" + t.integer "competition_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "join_in_contests", :force => true do |t| + t.integer "user_id" + t.integer "bid_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "journal_details", :force => true do |t| + t.integer "journal_id", :default => 0, :null => false + t.string "property", :limit => 30, :default => "", :null => false + t.string "prop_key", :limit => 30, :default => "", :null => false + t.text "old_value" + t.text "value" + end + + add_index "journal_details", ["journal_id"], :name => "journal_details_journal_id" + + create_table "journal_replies", :id => false, :force => true do |t| + t.integer "journal_id" + t.integer "user_id" + t.integer "reply_id" + end + + add_index "journal_replies", ["journal_id"], :name => "index_journal_replies_on_journal_id" + add_index "journal_replies", ["reply_id"], :name => "index_journal_replies_on_reply_id" + add_index "journal_replies", ["user_id"], :name => "index_journal_replies_on_user_id" + + create_table "journals", :force => true do |t| + t.integer "journalized_id", :default => 0, :null => false + t.string "journalized_type", :limit => 30, :default => "", :null => false + t.integer "user_id", :default => 0, :null => false + t.text "notes" + t.datetime "created_on", :null => false + t.boolean "private_notes", :default => false, :null => false + end + + add_index "journals", ["created_on"], :name => "index_journals_on_created_on" + add_index "journals", ["journalized_id", "journalized_type"], :name => "journals_journalized_id" + add_index "journals", ["journalized_id"], :name => "index_journals_on_journalized_id" + add_index "journals", ["user_id"], :name => "index_journals_on_user_id" + + create_table "journals_for_messages", :force => true do |t| + t.integer "jour_id" + t.string "jour_type" + t.integer "user_id" + t.text "notes" + t.integer "status" + t.integer "reply_id" + t.datetime "created_on", :null => false + t.datetime "updated_on", :null => false + t.string "m_parent_id" + t.boolean "is_readed" + t.integer "m_reply_count" + t.integer "m_reply_id" + t.integer "is_comprehensive_evaluation" + end + + create_table "member_roles", :force => true do |t| + t.integer "member_id", :null => false + t.integer "role_id", :null => false + t.integer "inherited_from" + end + + add_index "member_roles", ["member_id"], :name => "index_member_roles_on_member_id" + add_index "member_roles", ["role_id"], :name => "index_member_roles_on_role_id" + + create_table "members", :force => true do |t| + t.integer "user_id", :default => 0, :null => false + t.integer "project_id", :default => 0 + t.datetime "created_on" + t.boolean "mail_notification", :default => false, :null => false + t.integer "course_id", :default => -1 + end + + add_index "members", ["project_id"], :name => "index_members_on_project_id" + add_index "members", ["user_id", "project_id", "course_id"], :name => "index_members_on_user_id_and_project_id", :unique => true + add_index "members", ["user_id"], :name => "index_members_on_user_id" + + create_table "memos", :force => true do |t| + t.integer "forum_id", :null => false + t.integer "parent_id" + t.string "subject", :null => false + t.text "content", :null => false + t.integer "author_id", :null => false + t.integer "replies_count", :default => 0 + t.integer "last_reply_id" + t.boolean "lock", :default => false + t.boolean "sticky", :default => false + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "viewed_count", :default => 0 + end + + create_table "messages", :force => true do |t| + t.integer "board_id", :null => false + t.integer "parent_id" + t.string "subject", :default => "", :null => false + t.text "content" + t.integer "author_id" + t.integer "replies_count", :default => 0, :null => false + t.integer "last_reply_id" + t.datetime "created_on", :null => false + t.datetime "updated_on", :null => false + t.boolean "locked", :default => false + t.integer "sticky", :default => 0 + end + + add_index "messages", ["author_id"], :name => "index_messages_on_author_id" + add_index "messages", ["board_id"], :name => "messages_board_id" + add_index "messages", ["created_on"], :name => "index_messages_on_created_on" + add_index "messages", ["last_reply_id"], :name => "index_messages_on_last_reply_id" + add_index "messages", ["parent_id"], :name => "messages_parent_id" + + create_table "news", :force => true do |t| + t.integer "project_id" + t.string "title", :limit => 60, :default => "", :null => false + t.string "summary", :default => "" + t.text "description" + t.integer "author_id", :default => 0, :null => false + t.datetime "created_on" + t.integer "comments_count", :default => 0, :null => false + t.integer "course_id" + end + + add_index "news", ["author_id"], :name => "index_news_on_author_id" + add_index "news", ["created_on"], :name => "index_news_on_created_on" + add_index "news", ["project_id"], :name => "news_project_id" + + create_table "no_uses", :force => true do |t| + t.integer "user_id", :null => false + t.string "no_use_type" + t.integer "no_use_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "notificationcomments", :force => true do |t| + t.string "notificationcommented_type" + t.integer "notificationcommented_id" + t.integer "author_id" + t.text "notificationcomments" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "open_id_authentication_associations", :force => true do |t| + t.integer "issued" + t.integer "lifetime" + t.string "handle" + t.string "assoc_type" + t.binary "server_url" + t.binary "secret" + end + + create_table "open_id_authentication_nonces", :force => true do |t| + t.integer "timestamp", :null => false + t.string "server_url" + t.string "salt", :null => false + end + + create_table "open_source_projects", :force => true do |t| + t.string "name" + t.text "description" + t.integer "commit_count", :default => 0 + t.integer "code_line", :default => 0 + t.integer "users_count", :default => 0 + t.date "last_commit_time" + t.string "url" + t.date "date_collected" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "option_numbers", :force => true do |t| + t.integer "user_id" + t.integer "memo" + t.integer "messages_for_issues" + t.integer "issues_status" + t.integer "replay_for_message" + t.integer "replay_for_memo" + t.integer "follow" + t.integer "tread" + t.integer "praise_by_one" + t.integer "praise_by_two" + t.integer "praise_by_three" + t.integer "tread_by_one" + t.integer "tread_by_two" + t.integer "tread_by_three" + t.integer "changeset" + t.integer "document" + t.integer "attachment" + t.integer "issue_done_ratio" + t.integer "post_issue" + t.integer "score_type" + t.integer "total_score" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "project_id" + end + + create_table "praise_tread_caches", :force => true do |t| + t.integer "object_id", :null => false + t.string "object_type" + t.integer "praise_num" + t.integer "tread_num" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "praise_treads", :force => true do |t| + t.integer "user_id", :null => false + t.integer "praise_tread_object_id" + t.string "praise_tread_object_type" + t.integer "praise_or_tread" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "project_infos", :force => true do |t| + t.integer "project_id" + t.integer "user_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "project_scores", :force => true do |t| + t.string "project_id" + t.integer "score" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "issue_num", :default => 0 + t.integer "issue_journal_num", :default => 0 + t.integer "news_num", :default => 0 + t.integer "documents_num", :default => 0 + t.integer "changeset_num", :default => 0 + t.integer "board_message_num", :default => 0 + end + + create_table "project_statuses", :force => true do |t| + t.integer "changesets_count" + t.integer "watchers_count" + t.integer "project_id" + t.integer "project_type" + t.float "grade", :default => 0.0 + t.integer "course_ac_para", :default => 0 + end + + add_index "project_statuses", ["grade"], :name => "index_project_statuses_on_grade" + + create_table "projecting_softapplictions", :force => true do |t| + t.integer "user_id" + t.integer "softapplication_id" + t.integer "project_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "projects", :force => true do |t| + t.string "name", :default => "", :null => false + t.text "description" + t.string "homepage", :default => "" + t.boolean "is_public", :default => true, :null => false + t.integer "parent_id" + t.datetime "created_on" + t.datetime "updated_on" + t.string "identifier" + t.integer "status", :default => 1, :null => false + t.integer "lft" + t.integer "rgt" + t.boolean "inherit_members", :default => false, :null => false + t.integer "project_type" + t.boolean "hidden_repo", :default => false, :null => false + t.integer "attachmenttype", :default => 1 + t.integer "user_id" + t.integer "dts_test", :default => 0 + end + + add_index "projects", ["lft"], :name => "index_projects_on_lft" + add_index "projects", ["rgt"], :name => "index_projects_on_rgt" + + create_table "projects_trackers", :id => false, :force => true do |t| + t.integer "project_id", :default => 0, :null => false + t.integer "tracker_id", :default => 0, :null => false + end + + add_index "projects_trackers", ["project_id", "tracker_id"], :name => "projects_trackers_unique", :unique => true + add_index "projects_trackers", ["project_id"], :name => "projects_trackers_project_id" + + create_table "queries", :force => true do |t| + t.integer "project_id" + t.string "name", :default => "", :null => false + t.text "filters" + t.integer "user_id", :default => 0, :null => false + t.boolean "is_public", :default => false, :null => false + t.text "column_names" + t.text "sort_criteria" + t.string "group_by" + t.string "type" + end + + add_index "queries", ["project_id"], :name => "index_queries_on_project_id" + add_index "queries", ["user_id"], :name => "index_queries_on_user_id" + + create_table "relative_memo_to_open_source_projects", :force => true do |t| + t.integer "osp_id" + t.integer "relative_memo_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "relative_memos", :force => true do |t| + t.integer "osp_id" + t.integer "parent_id" + t.string "subject", :null => false + t.text "content", :limit => 16777215, :null => false + t.integer "author_id" + t.integer "replies_count", :default => 0 + t.integer "last_reply_id" + t.boolean "lock", :default => false + t.boolean "sticky", :default => false + t.boolean "is_quote", :default => false + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "viewed_count_crawl", :default => 0 + t.integer "viewed_count_local", :default => 0 + t.string "url" + t.string "username" + t.string "userhomeurl" + t.date "date_collected" + t.string "topic_resource" + end + + create_table "repositories", :force => true do |t| + t.integer "project_id", :default => 0, :null => false + t.string "url", :default => "", :null => false + t.string "login", :limit => 60, :default => "" + t.string "password", :default => "" + t.string "root_url", :default => "" + t.string "type" + t.string "path_encoding", :limit => 64 + t.string "log_encoding", :limit => 64 + t.text "extra_info" + t.string "identifier" + t.boolean "is_default", :default => false + end + + add_index "repositories", ["project_id"], :name => "index_repositories_on_project_id" + + create_table "rich_rich_files", :force => true do |t| + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "rich_file_file_name" + t.string "rich_file_content_type" + t.integer "rich_file_file_size" + t.datetime "rich_file_updated_at" + t.string "owner_type" + t.integer "owner_id" + t.text "uri_cache" + t.string "simplified_type", :default => "file" + end + + create_table "roles", :force => true do |t| + t.string "name", :limit => 30, :default => "", :null => false + t.integer "position", :default => 1 + t.boolean "assignable", :default => true + t.integer "builtin", :default => 0, :null => false + t.text "permissions" + t.string "issues_visibility", :limit => 30, :default => "default", :null => false + end + + create_table "schools", :force => true do |t| + t.string "name" + t.string "province" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "logo_link" + end + + create_table "seems_rateable_cached_ratings", :force => true do |t| + t.integer "cacheable_id", :limit => 8 + t.string "cacheable_type" + t.float "avg", :null => false + t.integer "cnt", :null => false + t.string "dimension" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "seems_rateable_rates", :force => true do |t| + t.integer "rater_id", :limit => 8 + t.integer "rateable_id" + t.string "rateable_type" + t.float "stars", :null => false + t.string "dimension" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "settings", :force => true do |t| + t.string "name", :default => "", :null => false + t.text "value" + t.datetime "updated_on" + end + + add_index "settings", ["name"], :name => "index_settings_on_name" + + create_table "shares", :force => true do |t| + t.date "created_on" + t.string "url" + t.string "title" + t.integer "share_type" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "project_id" + t.integer "user_id" + t.string "description" + end + + create_table "softapplications", :force => true do |t| + t.string "name" + t.text "description" + t.integer "app_type_id" + t.string "app_type_name" + t.string "android_min_version_available" + t.integer "user_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "contest_id" + t.integer "softapplication_id" + t.integer "is_public" + t.string "application_developers" + t.string "deposit_project_url" + t.string "deposit_project" + t.integer "project_id" + end + + create_table "students_for_courses", :force => true do |t| + t.integer "student_id" + t.integer "course_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "taggings", :force => true do |t| + t.integer "tag_id" + t.integer "taggable_id" + t.string "taggable_type" + t.integer "tagger_id" + t.string "tagger_type" + t.string "context", :limit => 128 + t.datetime "created_at" + end + + add_index "taggings", ["tag_id"], :name => "index_taggings_on_tag_id" + add_index "taggings", ["taggable_id", "taggable_type", "context"], :name => "index_taggings_on_taggable_id_and_taggable_type_and_context" + add_index "taggings", ["taggable_type"], :name => "index_taggings_on_taggable_type" + + create_table "tags", :force => true do |t| + t.string "name" + end + + create_table "teachers", :force => true do |t| + t.string "tea_name" + t.string "location" + t.integer "couurse_time" + t.integer "course_code" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "extra" + end + + create_table "time_entries", :force => true do |t| + t.integer "project_id", :null => false + t.integer "user_id", :null => false + t.integer "issue_id" + t.float "hours", :null => false + t.string "comments" + t.integer "activity_id", :null => false + t.date "spent_on", :null => false + t.integer "tyear", :null => false + t.integer "tmonth", :null => false + t.integer "tweek", :null => false + t.datetime "created_on", :null => false + t.datetime "updated_on", :null => false + end + + add_index "time_entries", ["activity_id"], :name => "index_time_entries_on_activity_id" + add_index "time_entries", ["created_on"], :name => "index_time_entries_on_created_on" + add_index "time_entries", ["issue_id"], :name => "time_entries_issue_id" + add_index "time_entries", ["project_id"], :name => "time_entries_project_id" + add_index "time_entries", ["user_id"], :name => "index_time_entries_on_user_id" + + create_table "tokens", :force => true do |t| + t.integer "user_id", :default => 0, :null => false + t.string "action", :limit => 30, :default => "", :null => false + t.string "value", :limit => 40, :default => "", :null => false + t.datetime "created_on", :null => false + end + + add_index "tokens", ["user_id"], :name => "index_tokens_on_user_id" + add_index "tokens", ["value"], :name => "tokens_value", :unique => true + + create_table "trackers", :force => true do |t| + t.string "name", :limit => 30, :default => "", :null => false + t.boolean "is_in_chlog", :default => false, :null => false + t.integer "position", :default => 1 + t.boolean "is_in_roadmap", :default => true, :null => false + t.integer "fields_bits", :default => 0 + end + + create_table "user_extensions", :force => true do |t| + t.integer "user_id", :null => false + t.date "birthday" + t.string "brief_introduction" + t.integer "gender" + t.string "location" + t.string "occupation" + t.integer "work_experience" + t.integer "zip_code" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "technical_title" + t.integer "identity" + t.string "student_id" + t.string "teacher_realname" + t.string "student_realname" + t.string "location_city" + t.integer "school_id" + end + + create_table "user_grades", :force => true do |t| + t.integer "user_id", :null => false + t.integer "project_id", :null => false + t.float "grade", :default => 0.0 + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + add_index "user_grades", ["grade"], :name => "index_user_grades_on_grade" + add_index "user_grades", ["project_id"], :name => "index_user_grades_on_project_id" + add_index "user_grades", ["user_id"], :name => "index_user_grades_on_user_id" + + create_table "user_levels", :force => true do |t| + t.integer "user_id" + t.integer "level" + end + + create_table "user_preferences", :force => true do |t| + t.integer "user_id", :default => 0, :null => false + t.text "others" + t.boolean "hide_mail", :default => false + t.string "time_zone" + end + + add_index "user_preferences", ["user_id"], :name => "index_user_preferences_on_user_id" + + create_table "user_score_details", :force => true do |t| + t.integer "current_user_id" + t.integer "target_user_id" + t.string "score_type" + t.string "score_action" + t.integer "user_id" + t.integer "old_score" + t.integer "new_score" + t.integer "current_user_level" + t.integer "target_user_level" + t.integer "score_changeable_obj_id" + t.string "score_changeable_obj_type" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "user_scores", :force => true do |t| + t.integer "user_id", :null => false + t.integer "collaboration" + t.integer "influence" + t.integer "skill" + t.integer "active" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "user_statuses", :force => true do |t| + t.integer "changesets_count" + t.integer "watchers_count" + t.integer "user_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.float "grade", :default => 0.0 + end + + add_index "user_statuses", ["changesets_count"], :name => "index_user_statuses_on_changesets_count" + add_index "user_statuses", ["grade"], :name => "index_user_statuses_on_grade" + add_index "user_statuses", ["watchers_count"], :name => "index_user_statuses_on_watchers_count" + + create_table "users", :force => true do |t| + t.string "login", :default => "", :null => false + t.string "hashed_password", :limit => 40, :default => "", :null => false + t.string "firstname", :limit => 30, :default => "", :null => false + t.string "lastname", :default => "", :null => false + t.string "mail", :limit => 60, :default => "", :null => false + t.boolean "admin", :default => false, :null => false + t.integer "status", :default => 1, :null => false + t.datetime "last_login_on" + t.string "language", :limit => 5, :default => "" + t.integer "auth_source_id" + t.datetime "created_on" + t.datetime "updated_on" + t.string "type" + t.string "identity_url" + t.string "mail_notification", :default => "", :null => false + t.string "salt", :limit => 64 + end + + add_index "users", ["auth_source_id"], :name => "index_users_on_auth_source_id" + add_index "users", ["id", "type"], :name => "index_users_on_id_and_type" + add_index "users", ["type"], :name => "index_users_on_type" + + create_table "versions", :force => true do |t| + t.integer "project_id", :default => 0, :null => false + t.string "name", :default => "", :null => false + t.string "description", :default => "" + t.date "effective_date" + t.datetime "created_on" + t.datetime "updated_on" + t.string "wiki_page_title" + t.string "status", :default => "open" + t.string "sharing", :default => "none", :null => false + end + + add_index "versions", ["project_id"], :name => "versions_project_id" + add_index "versions", ["sharing"], :name => "index_versions_on_sharing" + + create_table "watchers", :force => true do |t| + t.string "watchable_type", :default => "", :null => false + t.integer "watchable_id", :default => 0, :null => false + t.integer "user_id" + end + + add_index "watchers", ["user_id", "watchable_type"], :name => "watchers_user_id_type" + add_index "watchers", ["user_id"], :name => "index_watchers_on_user_id" + add_index "watchers", ["watchable_id", "watchable_type"], :name => "index_watchers_on_watchable_id_and_watchable_type" + + create_table "web_footer_companies", :force => true do |t| + t.string "name" + t.string "logo_size" + t.string "url" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "web_footer_oranizers", :force => true do |t| + t.string "name" + t.text "description" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "wiki_content_versions", :force => true do |t| + t.integer "wiki_content_id", :null => false + t.integer "page_id", :null => false + t.integer "author_id" + t.binary "data", :limit => 2147483647 + t.string "compression", :limit => 6, :default => "" + t.string "comments", :default => "" + t.datetime "updated_on", :null => false + t.integer "version", :null => false + end + + add_index "wiki_content_versions", ["updated_on"], :name => "index_wiki_content_versions_on_updated_on" + add_index "wiki_content_versions", ["wiki_content_id"], :name => "wiki_content_versions_wcid" + + create_table "wiki_contents", :force => true do |t| + t.integer "page_id", :null => false + t.integer "author_id" + t.text "text", :limit => 2147483647 + t.string "comments", :default => "" + t.datetime "updated_on", :null => false + t.integer "version", :null => false + end + + add_index "wiki_contents", ["author_id"], :name => "index_wiki_contents_on_author_id" + add_index "wiki_contents", ["page_id"], :name => "wiki_contents_page_id" + + create_table "wiki_pages", :force => true do |t| + t.integer "wiki_id", :null => false + t.string "title", :null => false + t.datetime "created_on", :null => false + t.boolean "protected", :default => false, :null => false + t.integer "parent_id" + end + + add_index "wiki_pages", ["parent_id"], :name => "index_wiki_pages_on_parent_id" + add_index "wiki_pages", ["wiki_id", "title"], :name => "wiki_pages_wiki_id_title" + add_index "wiki_pages", ["wiki_id"], :name => "index_wiki_pages_on_wiki_id" + + create_table "wiki_redirects", :force => true do |t| + t.integer "wiki_id", :null => false + t.string "title" + t.string "redirects_to" + t.datetime "created_on", :null => false + end + + add_index "wiki_redirects", ["wiki_id", "title"], :name => "wiki_redirects_wiki_id_title" + add_index "wiki_redirects", ["wiki_id"], :name => "index_wiki_redirects_on_wiki_id" + + create_table "wikis", :force => true do |t| + t.integer "project_id", :null => false + t.string "start_page", :null => false + t.integer "status", :default => 1, :null => false + end + + add_index "wikis", ["project_id"], :name => "wikis_project_id" + + create_table "workflows", :force => true do |t| + t.integer "tracker_id", :default => 0, :null => false + t.integer "old_status_id", :default => 0, :null => false + t.integer "new_status_id", :default => 0, :null => false + t.integer "role_id", :default => 0, :null => false + t.boolean "assignee", :default => false, :null => false + t.boolean "author", :default => false, :null => false + t.string "type", :limit => 30 + t.string "field_name", :limit => 30 + t.string "rule", :limit => 30 + end + + add_index "workflows", ["new_status_id"], :name => "index_workflows_on_new_status_id" + add_index "workflows", ["old_status_id"], :name => "index_workflows_on_old_status_id" + add_index "workflows", ["role_id", "tracker_id", "old_status_id"], :name => "wkfs_role_tracker_old_status" + add_index "workflows", ["role_id"], :name => "index_workflows_on_role_id" + + create_table "works_categories", :force => true do |t| + t.string "category" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + +end From c303d2b4cadfc675db9287a36c9ae1458dae0d72 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Wed, 3 Dec 2014 17:28:19 +0800 Subject: [PATCH 002/192] =?UTF-8?q?=E5=B0=86=E6=B3=A8=E5=86=8C=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E7=A7=BB=E5=8A=A8=E5=88=B0UserService=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/api.rb | 1 + app/api/mobile/apis/auth.rb | 5 +++-- app/api/mobile/apis/courses.rb | 4 +++- app/api/mobile/apis/users.rb | 4 ++-- app/controllers/account_controller.rb | 5 +++++ app/services/users_service.rb | 31 +++++++++++++++++++++++++++ test/mobile/auth_test.rb | 24 +++++++++++++++++++++ test/mobile/users_test.rb | 12 +++++++++++ 8 files changed, 81 insertions(+), 5 deletions(-) create mode 100644 app/services/users_service.rb create mode 100644 test/mobile/auth_test.rb create mode 100644 test/mobile/users_test.rb diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb index a84ba559c..918c5d73c 100644 --- a/app/api/mobile/api.rb +++ b/app/api/mobile/api.rb @@ -9,6 +9,7 @@ module Mobile class API < Grape::API version 'v1', using: :path format :json + content_type :json, "application/json;charset=UTF-8" helpers do def logger diff --git a/app/api/mobile/apis/auth.rb b/app/api/mobile/apis/auth.rb index 41b948a13..acd5fe1e2 100644 --- a/app/api/mobile/apis/auth.rb +++ b/app/api/mobile/apis/auth.rb @@ -11,9 +11,10 @@ module Mobile if user ::ApiKey.delete_all(user_id: user.id) key = ::ApiKey.create!(user_id: user.id) - {token: key.access_token}.merge(user.as_json).merge(user.extensions.as_json) + data = {token: key.access_token}.merge(user.as_json).merge(user.extensions.as_json) + {status: 0, data: data} else - error!('Unauthorized.', 401) + {status: 1, message: 'Unauthorized.'} end end end diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index 7518e544b..bd146e235 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -20,6 +20,7 @@ module Mobile @courses = @courses_all.order("created_at desc") @s_type = 0 @courses = @courses.offset(@course_pages.offset).limit(@course_pages.per_page) + {status: 0, data: @courses} # @course_activity_count=get_course_activity @courses, @course_activity_count end @@ -29,7 +30,8 @@ module Mobile end route_param :id do get do - Course.find(params[:id]) + course = Course.find(params[:id]) + {status: 0, data: course} end end diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index 1eaf7c87b..8b7edd155 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -14,12 +14,12 @@ module Mobile post do user = User.new user.login = params[:login] - user.mail = params[:email] + user.mail = params[:mail] user.password = params[:password] user.password_confirmation = params[:password] user.activate if user.save! - UserStatus.create(:user_id => user.id, :changsets_count => 0, :watchers_count => 0) + UserStatus.create(:user_id => user.id, :changsets_course => 0, :watchers_count => 0) end user end diff --git a/app/controllers/account_controller.rb b/app/controllers/account_controller.rb index 279e89f13..2ca202191 100644 --- a/app/controllers/account_controller.rb +++ b/app/controllers/account_controller.rb @@ -192,6 +192,11 @@ class AccountController < ApplicationController redirect_to signin_url end + def api_register login,password,email + users_service = UsersService.new + users_service.register({login: login, password: password, email: eamil}) + end + def valid_ajax req = Hash.new(false) req[:message] = '' diff --git a/app/services/users_service.rb b/app/services/users_service.rb new file mode 100644 index 000000000..aa2c6bf71 --- /dev/null +++ b/app/services/users_service.rb @@ -0,0 +1,31 @@ +class UsersService + + #将用户注册的功能函数写这里 + #参数约定 + #成功返回注册后的User实例,失败直接抛异常 + def register(params) + @user = User.new + @user.admin = false + @user.register + @user.login = params[:login] + @user.mail = params[:email] + unless password.blank? + @user.password = params[:password] + end + case Setting.self_registration + when '1' + register_by_email_activation(@user) + when '3' + register_automatically(@user) + else + register_manully_by_administrator(@user) + end + if @user.id != nil + ue = @user.user_extensions ||= UserExtensions.new + ue.user_id = @user.id + ue.save + end + @user + end + +end diff --git a/test/mobile/auth_test.rb b/test/mobile/auth_test.rb new file mode 100644 index 000000000..afc5719e8 --- /dev/null +++ b/test/mobile/auth_test.rb @@ -0,0 +1,24 @@ +require File.expand_path('../../test_helper.rb',__FILE__) + +class AuthTest < ActionDispatch::IntegrationTest + def setup + ApiKey.delete_all + end + + test "login success when use correct password" do + post('/api/v1/auth/login.json', {login: 'guange', password: '123456'}) + o = ActiveSupport::JSON.decode response.body + puts o + puts o["token"] + assert_not_nil o["token"] + end + + test "login failure when incorrect password" do + post('/api/v1/auth/login.json', {login: 'guange', password: 'wrongpass'}) + o = ActiveSupport::JSON.decode response.body + assert_nil o["token"] + assert_equal o["error"], 'Unauthorized.' + end +end + + diff --git a/test/mobile/users_test.rb b/test/mobile/users_test.rb new file mode 100644 index 000000000..48b8010b4 --- /dev/null +++ b/test/mobile/users_test.rb @@ -0,0 +1,12 @@ +require File.expand_path('../../test_helper.rb',__FILE__) + +class UsersTest < ActionDispatch::IntegrationTest + test "register a user" do + end + test "get all users" do + get '/api/v1/users.json' + assert_response :success + end +end + + From 4214f39bae44b85595ec3f0c253a7df68cc1094f Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Thu, 4 Dec 2014 10:11:55 +0800 Subject: [PATCH 003/192] =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=B3=A8=E5=86=8Capi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/users.rb | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index 8b7edd155..33ea075a7 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -5,6 +5,7 @@ module Mobile get do ['hello'] end + desc "add a user" params do requires :login, type: String, desc: 'username' @@ -12,16 +13,13 @@ module Mobile requires :password, type: String, desc: 'password' end post do - user = User.new - user.login = params[:login] - user.mail = params[:mail] - user.password = params[:password] - user.password_confirmation = params[:password] - user.activate - if user.save! - UserStatus.create(:user_id => user.id, :changsets_course => 0, :watchers_count => 0) + user_service = UsersService.new + begin + user = user_service.register(params) + {status: 0, data: user} + rescue Exception => e + {status: 1, message: e.message} end - user end end end From 2a7e0365b895bb786885e3783415c6cc716bf75c Mon Sep 17 00:00:00 2001 From: z9hang Date: Thu, 4 Dec 2014 15:53:47 +0800 Subject: [PATCH 004/192] =?UTF-8?q?=E6=B3=A8=E5=86=8C=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/account_controller.rb | 108 ++++++++++++++------------ app/helpers/account_helper.rb | 41 ++++++++++ app/services/users_service.rb | 22 ++++-- 3 files changed, 113 insertions(+), 58 deletions(-) diff --git a/app/controllers/account_controller.rb b/app/controllers/account_controller.rb index 2ca202191..3de865d6a 100644 --- a/app/controllers/account_controller.rb +++ b/app/controllers/account_controller.rb @@ -101,33 +101,22 @@ class AccountController < ApplicationController # User self-registration def register - # @root_path="/home/pdl/redmine-2.3.2-0/apache2/" -# - #@cache_identityy = params[:identity]||"" #身份 - @cache_no = params[:no]||"" #学号 - @cache_technical_title = params[:technical_title]||"" #教师职称 - @cache_province = params[:province]||"" #省份 - @cache_city = params[:city]||"" #城市 - @cache_enterprise_name = params[:enterprise_name]||"" #企业 - - firstname_code = "" - lastname_code = "" (redirect_to(home_url); return) unless Setting.self_registration? || session[:auth_source_registration] if request.get? session[:auth_source_registration] = nil @user = User.new(:language => current_language.to_s) else user_params = params[:user] || {} - @user = User.new - @user.safe_attributes = user_params - if params[:identity] == "2" # 2 企业 - firstname_code = @user.firstname - lastname_code = @user.lastname - @user.firstname = params[:enterprise_name] - @user.lastname = l(:field_enterprise) - end - @user.admin = false - @user.register + #@user = User.new + #@user.safe_attributes = user_params + #if params[:identity] == "2" # 2 企业 + # firstname_code = @user.firstname + # lastname_code = @user.lastname + # @user.firstname = params[:enterprise_name] + # @user.lastname = l(:field_enterprise) + #end + #@user.admin = false + #@user.register if session[:auth_source_registration] @user.activate @user.login = session[:auth_source_registration][:login] @@ -139,42 +128,59 @@ class AccountController < ApplicationController redirect_to my_account_path end else - @user.login = params[:user][:login] - unless user_params[:identity_url].present? && user_params[:password].blank? && user_params[:password_confirmation].blank? - @user.password, @user.password_confirmation = user_params[:password], user_params[:password_confirmation] - end - - - - case Setting.self_registration + us = UsersService.new + @user = us.register user_params.merge(:should_confirmation_password => true) + case Setting.self_registration when '1' - register_by_email_activation(@user) + #register_by_email_activation(@user) + unless @user.new_record? + render action: 'email_valid', locals: {:mail => user.mail} + end when '3' - register_automatically(@user) + #register_automatically(@user) + unless @user.new_record? + self.logged_user = user + flash[:notice] = l(:notice_account_activated) + redirect_to my_account_url + end else - register_manually_by_administrator(@user) - end - - #added by bai - if @user.id != nil - ue = @user.user_extensions ||= UserExtensions.new - #ue = UserExtensions.create(:identity => params[:identity].to_i,:technical_title => params[:technical_title], :gender => params[:gender].to_i, :user_id => @user.id, :student_id => ) - ue.identity = params[:identity].to_i - ue.technical_title = params[:technical_title] - ue.gender = params[:gender].to_i - ue.user_id = @user.id - ue.student_id = params[:no] - ue.location = params[:province] if params[:province] != nil - ue.location_city = params[:city] if params[:city] != nil - ue.save - end + #register_manually_by_administrator(@user) + unless @user.new_record? + account_pending + end + end + # @user.login = params[:user][:login] + # unless user_params[:identity_url].present? && user_params[:password].blank? && user_params[:password_confirmation].blank? + # @user.password, @user.password_confirmation = user_params[:password], user_params[:password_confirmation] + # end + # + # + # + # case Setting.self_registration + # when '1' + # register_by_email_activation(@user) + # when '3' + # register_automatically(@user) + # else + # register_manually_by_administrator(@user) + # end + # + # #added by bai + # if @user.id != nil + # ue = @user.user_extensions ||= UserExtensions.new + # #ue = UserExtensions.create(:identity => params[:identity].to_i,:technical_title => params[:technical_title], :gender => params[:gender].to_i, :user_id => @user.id, :student_id => ) + # ue.identity = params[:identity].to_i + # ue.technical_title = params[:technical_title] + # ue.gender = params[:gender].to_i + # ue.user_id = @user.id + # ue.student_id = params[:no] + # ue.location = params[:province] if params[:province] != nil + # ue.location_city = params[:city] if params[:city] != nil + # ue.save + # end end end - if params[:identity] == "2" - @user.firstname = firstname_code - @user.lastname = lastname_code - end end # Token based account activation diff --git a/app/helpers/account_helper.rb b/app/helpers/account_helper.rb index 8beeac363..3be096492 100644 --- a/app/helpers/account_helper.rb +++ b/app/helpers/account_helper.rb @@ -18,4 +18,45 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module AccountHelper + + def email_activation_register(user, &block) + token = Token.new(:user => user, :action => "register") + if user.save and token.save + UserStatus.create(:user_id => user.id, :changsets_count => 0, :watchers_count => 0) + Mailer.register(token).deliver + flash[:notice] = l(:notice_account_register_done) + #render action: 'email_valid', locals: {:mail => user.mail} + else + yield if block_given? + end + user + end + + def automatically_register(user, &block) + # Automatic activation + user.activate + user.last_login_on = Time.now + if user.save + UserStatus.create(:user_id => user.id, :changsets_count => 0, :watchers_count => 0) + #self.logged_user = user + #flash[:notice] = l(:notice_account_activated) + #redirect_to my_account_url + else + yield if block_given? + end + user + end + + def administrator_manually__register(user, &block) + if user.save + UserStatus.create(:user_id => user.id ,:changsets_count => 0, :watchers_count => 0) + # Sends an email to the administrators + Mailer.account_activation_request(user).deliver + #account_pending + else + yield if block_given? + end + user + end + end diff --git a/app/services/users_service.rb b/app/services/users_service.rb index aa2c6bf71..f36cf3836 100644 --- a/app/services/users_service.rb +++ b/app/services/users_service.rb @@ -1,24 +1,32 @@ class UsersService - + include AccountHelper #将用户注册的功能函数写这里 #参数约定 #成功返回注册后的User实例,失败直接抛异常 + def register(params) @user = User.new @user.admin = false @user.register @user.login = params[:login] - @user.mail = params[:email] - unless password.blank? - @user.password = params[:password] + @user.mail = params[:mail] + password = params[:password] + password_confirmation = params[:password_confirmation] + should_confirmation_password = params[:should_confirmation_password] + if !password.blank? && !password_confirmation && should_confirmation_password + @user.password,@user.password_confirmation = password,password_confirmation + elsif !password.blank? && !should_confirmation_password + @user.password = password + else + @user.password = "" end case Setting.self_registration when '1' - register_by_email_activation(@user) + @user = email_activation_register(@user) when '3' - register_automatically(@user) + @user = automatically_register(@user) else - register_manully_by_administrator(@user) + @user = administrator_manually__register(@user) end if @user.id != nil ue = @user.user_extensions ||= UserExtensions.new From 4be329db118783157adfde6f6a14fe8bbbb1785a Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Thu, 4 Dec 2014 17:15:17 +0800 Subject: [PATCH 005/192] =?UTF-8?q?osx=E5=BF=BD=E7=95=A5.DS=5FStore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 0cd336786..061314adc 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ /lib/plugins/acts_as_versioned/test/debug.log /config/configuration.yml .rbenv-gemsets +.DS_Store From fa1e7c9a0458b68819e0f562e4d7616d0c8ea67c Mon Sep 17 00:00:00 2001 From: z9hang Date: Sat, 6 Dec 2014 11:27:52 +0800 Subject: [PATCH 006/192] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E9=95=BF=E5=BA=A6=E5=88=A4=E6=96=AD=E9=94=99=E8=AF=AF=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile.lock | 11 ------ app/controllers/account_controller.rb | 50 +++------------------------ app/services/users_service.rb | 2 +- 3 files changed, 6 insertions(+), 57 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 58f069ac1..43252793e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -122,7 +122,6 @@ GEM htmlentities (4.3.2) i18n (0.6.1) ice_nine (0.11.0) - iconv (1.0.4) journey (1.0.4) jquery-rails (2.0.3) railties (>= 3.1.0, < 5.0) @@ -172,8 +171,6 @@ GEM win32console (~> 1.3) pry-nav (0.2.3) pry (~> 0.9.10) - puma (2.10.1) - rack (>= 1.1, < 2.0) rack (1.4.5) rack-accept (0.4.5) rack (>= 0.4) @@ -222,7 +219,6 @@ GEM sass-rails rmagick (2.13.2) ruby-openid (2.1.8) - ruby-prof (0.15.2) rubyzip (1.1.6) sass (3.3.10) sass-rails (3.2.6) @@ -273,8 +269,6 @@ GEM win32console (1.3.2-x86-mingw32) xpath (2.0.0) nokogiri (~> 1.3) - zip-zip (0.3) - rubyzip (>= 1.0.0) PLATFORMS ruby @@ -297,7 +291,6 @@ DEPENDENCIES guard-test (~> 1.0.0) htmlentities i18n (~> 0.6.0) - iconv jquery-rails (~> 2.0.2) kaminari mocha (~> 1.1.0) @@ -307,15 +300,12 @@ DEPENDENCIES paperclip (~> 3.5.4) pry pry-nav - puma rack-mini-profiler! rack-openid rails (= 3.2.13) rich (= 1.4.6) rmagick (>= 2.0.0) ruby-openid (~> 2.1.4) - ruby-prof (~> 0.15.1) - rubyzip sass-rails (~> 3.2.3) seems_rateable! selenium-webdriver (~> 2.42.0) @@ -323,4 +313,3 @@ DEPENDENCIES spork-testunit (~> 0.0.8) therubyracer uglifier (>= 1.0.3) - zip-zip diff --git a/app/controllers/account_controller.rb b/app/controllers/account_controller.rb index 3de865d6a..6102160b3 100644 --- a/app/controllers/account_controller.rb +++ b/app/controllers/account_controller.rb @@ -107,16 +107,6 @@ class AccountController < ApplicationController @user = User.new(:language => current_language.to_s) else user_params = params[:user] || {} - #@user = User.new - #@user.safe_attributes = user_params - #if params[:identity] == "2" # 2 企业 - # firstname_code = @user.firstname - # lastname_code = @user.lastname - # @user.firstname = params[:enterprise_name] - # @user.lastname = l(:field_enterprise) - #end - #@user.admin = false - #@user.register if session[:auth_source_registration] @user.activate @user.login = session[:auth_source_registration][:login] @@ -128,9 +118,9 @@ class AccountController < ApplicationController redirect_to my_account_path end else - us = UsersService.new - @user = us.register user_params.merge(:should_confirmation_password => true) - case Setting.self_registration + us = UsersService.new + @user = us.register user_params.merge(:should_confirmation_password => true) + case Setting.self_registration when '1' #register_by_email_activation(@user) unless @user.new_record? @@ -139,7 +129,7 @@ class AccountController < ApplicationController when '3' #register_automatically(@user) unless @user.new_record? - self.logged_user = user + self.logged_user = @user flash[:notice] = l(:notice_account_activated) redirect_to my_account_url end @@ -148,37 +138,7 @@ class AccountController < ApplicationController unless @user.new_record? account_pending end - end - # @user.login = params[:user][:login] - # unless user_params[:identity_url].present? && user_params[:password].blank? && user_params[:password_confirmation].blank? - # @user.password, @user.password_confirmation = user_params[:password], user_params[:password_confirmation] - # end - # - # - # - # case Setting.self_registration - # when '1' - # register_by_email_activation(@user) - # when '3' - # register_automatically(@user) - # else - # register_manually_by_administrator(@user) - # end - # - # #added by bai - # if @user.id != nil - # ue = @user.user_extensions ||= UserExtensions.new - # #ue = UserExtensions.create(:identity => params[:identity].to_i,:technical_title => params[:technical_title], :gender => params[:gender].to_i, :user_id => @user.id, :student_id => ) - # ue.identity = params[:identity].to_i - # ue.technical_title = params[:technical_title] - # ue.gender = params[:gender].to_i - # ue.user_id = @user.id - # ue.student_id = params[:no] - # ue.location = params[:province] if params[:province] != nil - # ue.location_city = params[:city] if params[:city] != nil - # ue.save - # end - + end end end end diff --git a/app/services/users_service.rb b/app/services/users_service.rb index f36cf3836..0f79e8308 100644 --- a/app/services/users_service.rb +++ b/app/services/users_service.rb @@ -13,7 +13,7 @@ class UsersService password = params[:password] password_confirmation = params[:password_confirmation] should_confirmation_password = params[:should_confirmation_password] - if !password.blank? && !password_confirmation && should_confirmation_password + if !password.blank? && !password_confirmation.blank? && should_confirmation_password @user.password,@user.password_confirmation = password,password_confirmation elsif !password.blank? && !should_confirmation_password @user.password = password From db9eebbac7e3fbcfe98bbf828f0591b98ed2dd39 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Sun, 7 Dec 2014 10:48:05 +0800 Subject: [PATCH 007/192] =?UTF-8?q?[API]=E6=B3=A8=E5=86=8C=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile.lock | 11 +++++++++++ app/api/mobile/apis/users.rb | 10 ++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 43252793e..58f069ac1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -122,6 +122,7 @@ GEM htmlentities (4.3.2) i18n (0.6.1) ice_nine (0.11.0) + iconv (1.0.4) journey (1.0.4) jquery-rails (2.0.3) railties (>= 3.1.0, < 5.0) @@ -171,6 +172,8 @@ GEM win32console (~> 1.3) pry-nav (0.2.3) pry (~> 0.9.10) + puma (2.10.1) + rack (>= 1.1, < 2.0) rack (1.4.5) rack-accept (0.4.5) rack (>= 0.4) @@ -219,6 +222,7 @@ GEM sass-rails rmagick (2.13.2) ruby-openid (2.1.8) + ruby-prof (0.15.2) rubyzip (1.1.6) sass (3.3.10) sass-rails (3.2.6) @@ -269,6 +273,8 @@ GEM win32console (1.3.2-x86-mingw32) xpath (2.0.0) nokogiri (~> 1.3) + zip-zip (0.3) + rubyzip (>= 1.0.0) PLATFORMS ruby @@ -291,6 +297,7 @@ DEPENDENCIES guard-test (~> 1.0.0) htmlentities i18n (~> 0.6.0) + iconv jquery-rails (~> 2.0.2) kaminari mocha (~> 1.1.0) @@ -300,12 +307,15 @@ DEPENDENCIES paperclip (~> 3.5.4) pry pry-nav + puma rack-mini-profiler! rack-openid rails (= 3.2.13) rich (= 1.4.6) rmagick (>= 2.0.0) ruby-openid (~> 2.1.4) + ruby-prof (~> 0.15.1) + rubyzip sass-rails (~> 3.2.3) seems_rateable! selenium-webdriver (~> 2.42.0) @@ -313,3 +323,4 @@ DEPENDENCIES spork-testunit (~> 0.0.8) therubyracer uglifier (>= 1.0.3) + zip-zip diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index 33ea075a7..c9ecdd84f 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -9,15 +9,17 @@ module Mobile desc "add a user" params do requires :login, type: String, desc: 'username' - requires :email, type: String, desc: 'email' + requires :mail, type: String, desc: 'mail' requires :password, type: String, desc: 'password' end post do - user_service = UsersService.new + us = UsersService.new begin - user = user_service.register(params) + user = us.register params.merge(:password_confirmation => params[:password], + :should_confirmation_password => true) + raise "register failed." if user.new_record? {status: 0, data: user} - rescue Exception => e + rescue => e {status: 1, message: e.message} end end From 56767701009f3dc54c78e36057f751cfdf0e9925 Mon Sep 17 00:00:00 2001 From: z9hang Date: Mon, 8 Dec 2014 15:19:10 +0800 Subject: [PATCH 008/192] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/courses_service.rb | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 app/services/courses_service.rb diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb new file mode 100644 index 000000000..0a1fa553d --- /dev/null +++ b/app/services/courses_service.rb @@ -0,0 +1,29 @@ +class CoursesService + include ApplicationHelper + #参数school_id为0或不传时返回所有课程,否则返回对应学校的课程 + #参数per_page_count分页功能,每页显示的课程数 + #参数page分页功能,当前页码 + def course_list params + @school_id = params[:school_id] + per_page_option = params[:per_page_count] || 10 + page_no = params[:page] || 1 + if @school_id == "0" || @school_id.nil? + @courses_all = Course.active.visible. + joins("LEFT JOIN #{CourseStatus.table_name} ON #{Course.table_name}.id = #{CourseStatus.table_name}.course_id") + else + @courses_all = Course.active.visible. + joins("LEFT JOIN #{CourseStatus.table_name} ON #{Course.table_name}.id = #{CourseStatus.table_name}.course_id"). + where("#{Course.table_name}.school_id = ?", @school_id) + end + @course_count = @courses_all.count + @course_pages = Redmine::Pagination::Paginator.new @course_count, per_page_option,page_no + @courses = @courses_all.order("created_at desc") + @courses = @courses.offset(@course_pages.offset).limit(@course_pages.per_page) + course_list = [] + @courses.each do |course| + course_list << {:course => course,:img_url => url_to_avatar(course)} + end + course_list + end + +end \ No newline at end of file From c7c25edf17508e4d71fbf67bca4ef13e4dea2016 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Mon, 8 Dec 2014 15:27:18 +0800 Subject: [PATCH 009/192] =?UTF-8?q?=E5=8A=A0=E4=B8=8Apry=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 6 +++--- Gemfile.lock | 20 ++++++++++++++++---- app/api/mobile/apis/users.rb | 2 +- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/Gemfile b/Gemfile index 5288edd52..ab7a41a16 100644 --- a/Gemfile +++ b/Gemfile @@ -49,9 +49,9 @@ group :development, :test do gem 'guard-spork', '~> 1.5.1' gem 'guard-test', '~> 1.0.0' gem 'ruby-prof', '~> 0.15.1' unless RUBY_PLATFORM =~ /w32/ - gem 'pry' - gem 'pry-nav' - + gem 'pry-rails' + gem 'pry-byebug' + gem 'pry-remote' end diff --git a/Gemfile.lock b/Gemfile.lock index 58f069ac1..d2ae03453 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -57,6 +57,9 @@ GEM ice_nine (~> 0.11.0) thread_safe (~> 0.3, >= 0.3.1) builder (3.0.0) + byebug (2.7.0) + columnize (~> 0.3) + debugger-linecache (~> 1.2) capybara (2.4.1) mime-types (>= 1.16) nokogiri (>= 1.3.3) @@ -81,6 +84,8 @@ GEM coffee-script-source execjs coffee-script-source (1.7.1) + columnize (0.9.0) + debugger-linecache (1.2.0) descendants_tracker (0.0.4) thread_safe (~> 0.3, >= 0.3.1) equalizer (0.0.9) @@ -170,8 +175,14 @@ GEM method_source (~> 0.8) slop (~> 3.4) win32console (~> 1.3) - pry-nav (0.2.3) - pry (~> 0.9.10) + pry-byebug (1.3.2) + byebug (~> 2.7) + pry (~> 0.9.12) + pry-rails (0.3.2) + pry (>= 0.9.10) + pry-remote (0.1.8) + pry (~> 0.9) + slop (~> 3.0) puma (2.10.1) rack (>= 1.1, < 2.0) rack (1.4.5) @@ -305,8 +316,9 @@ DEPENDENCIES net-ldap (~> 0.3.1) nokogiri (~> 1.6.3) paperclip (~> 3.5.4) - pry - pry-nav + pry-byebug + pry-rails + pry-remote puma rack-mini-profiler! rack-openid diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index c9ecdd84f..489b3e419 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -17,7 +17,7 @@ module Mobile begin user = us.register params.merge(:password_confirmation => params[:password], :should_confirmation_password => true) - raise "register failed." if user.new_record? + raise "register failed #{user.errors.full_messages}" if user.new_record? {status: 0, data: user} rescue => e {status: 1, message: e.message} From ee3d998873326453d3c6141056e749a029e459d4 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Mon, 8 Dec 2014 16:51:21 +0800 Subject: [PATCH 010/192] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=8A=A0=E5=85=A5=E8=80=81=E5=B8=88=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 1 + Gemfile.lock | 4 +++ app/api/mobile/apis/courses.rb | 60 +++++++++++++++++++++++++--------- 3 files changed, 50 insertions(+), 15 deletions(-) diff --git a/Gemfile b/Gemfile index ab7a41a16..34a1a7956 100644 --- a/Gemfile +++ b/Gemfile @@ -9,6 +9,7 @@ unless RUBY_PLATFORM =~ /w32/ end gem 'grape', '~> 0.9.0' +gem 'grape-entity' gem 'seems_rateable', path: 'lib/seems_rateable' gem "rails", "3.2.13" gem "jquery-rails", "~> 2.0.2" diff --git a/Gemfile.lock b/Gemfile.lock index d2ae03453..377ded53e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -107,6 +107,9 @@ GEM rack-accept rack-mount virtus (>= 1.0.0) + grape-entity (0.4.4) + activesupport + multi_json (>= 1.3.2) guard (2.6.1) formatador (>= 0.2.4) listen (~> 2.7) @@ -303,6 +306,7 @@ DEPENDENCIES factory_girl (~> 4.4.0) fastercsv (~> 1.5.0) grape (~> 0.9.0) + grape-entity guard-rails (~> 0.5.3) guard-spork (~> 1.5.1) guard-test (~> 1.0.0) diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index bd146e235..9409fddd7 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -1,27 +1,57 @@ module Mobile + + module Entities + + class Course < Grape::Entity + def self.course_expose(field) + expose field do |f,opt| + f[:course][field] || f[:course].__send__(field) + end + end + expose :img_url + course_expose :attachmenttype + course_expose :class_period + course_expose :code + course_expose :created_at + course_expose :description + course_expose :endup_time + course_expose :extra + course_expose :id + course_expose :inherit_members + course_expose :is_public + course_expose :lft + course_expose :location + course_expose :name + course_expose :open_student + # course_expose :password + course_expose :rgt + course_expose :school_id + course_expose :setup_time + course_expose :state + course_expose :status + course_expose :string + course_expose :tea_id + course_expose :term + course_expose :time + course_expose :updated_at + course_expose :teacher + end + + end + class Courses < Grape::API resource :courses do desc "get all courses" params do + optional :school_id, type: Integer, desc: 'school number' requires :per_page_count, type: Integer requires :page, type: Integer, desc: 'current page no' end get do - per_page_option = params[:per_page_count] || 10 - page_no = params[:page] || 1 - @courses_all = Course.active.visible. - joins("LEFT JOIN #{CourseStatus.table_name} ON #{Course.table_name}.id = #{CourseStatus.table_name}.course_id") - @course_count = @courses_all.count - @course_pages = Redmine::Pagination::Paginator.new @course_count, per_page_option,page_no - @course_activity_count=Hash.new - @courses_all.each do |course| - @course_activity_count[course.id]=0 - end - @courses = @courses_all.order("created_at desc") - @s_type = 0 - @courses = @courses.offset(@course_pages.offset).limit(@course_pages.per_page) - {status: 0, data: @courses} - # @course_activity_count=get_course_activity @courses, @course_activity_count + cs = CoursesService.new + courses = cs.course_list(params) + present :data, courses, with: Entities::Course + present :status, 0 end desc "Return a course" From 41d9af1ab9e954331446a0f38316ce12a5b0331e Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 9 Dec 2014 15:16:47 +0800 Subject: [PATCH 011/192] auto reload api folder in development mode. --- app/api/mobile/api.rb | 12 +++------ app/api/mobile/apis/auth.rb | 34 +++++++++++++------------ app/api/mobile/apis/courses.rb | 3 +++ app/api/mobile/apis/users.rb | 8 ++++++ config/initializers/autoreload_grape.rb | 26 +++++++++++++++++++ 5 files changed, 58 insertions(+), 25 deletions(-) create mode 100644 config/initializers/autoreload_grape.rb diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb index 918c5d73c..4add19248 100644 --- a/app/api/mobile/api.rb +++ b/app/api/mobile/api.rb @@ -1,11 +1,5 @@ module Mobile - $LOAD_PATH << File.expand_path('..',__FILE__) - - autoload :Auth, 'apis/auth' - autoload :Users, 'apis/users' - autoload :Courses, 'apis/courses' - class API < Grape::API version 'v1', using: :path format :json @@ -30,9 +24,9 @@ module Mobile end end - mount Auth - mount Users - mount Courses + mount Apis::Auth + mount Apis::Users + mount Apis::Courses end end diff --git a/app/api/mobile/apis/auth.rb b/app/api/mobile/apis/auth.rb index acd5fe1e2..8281c4aa9 100644 --- a/app/api/mobile/apis/auth.rb +++ b/app/api/mobile/apis/auth.rb @@ -1,20 +1,22 @@ module Mobile - class Auth < Grape::API - resource :auth do - desc "Creates and returns access_token if valid login" - params do - requires :login, type: String, desc: 'Username or email' - requires :password, type: String, desc: 'Password' - end - post :login do - user,last_logon = ::User.try_to_login(params[:login], params[:password]) - if user - ::ApiKey.delete_all(user_id: user.id) - key = ::ApiKey.create!(user_id: user.id) - data = {token: key.access_token}.merge(user.as_json).merge(user.extensions.as_json) - {status: 0, data: data} - else - {status: 1, message: 'Unauthorized.'} + module Apis + class Auth < Grape::API + resource :auth do + desc "Creates and returns access_token if valid login" + params do + requires :login, type: String, desc: 'Username or email' + requires :password, type: String, desc: 'Password' + end + post :login do + user,last_logon = ::User.try_to_login(params[:login], params[:password]) + if user + ::ApiKey.delete_all(user_id: user.id) + key = ::ApiKey.create!(user_id: user.id) + data = {token: key.access_token}.merge(user.as_json).merge(user.extensions.as_json) + {status: 0, data: data} + else + {status: 1, message: 'Unauthorized.'} + end end end end diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index 9409fddd7..2dca9c220 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -1,5 +1,7 @@ module Mobile + module Apis + module Entities class Course < Grape::Entity @@ -67,5 +69,6 @@ module Mobile end end + end end diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index 489b3e419..e4544a09e 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -1,4 +1,5 @@ module Mobile + module Apis class Users < Grape::API resource :users do desc "get all users" @@ -23,8 +24,15 @@ module Mobile {status: 1, message: e.message} end end + + desc "test upload" + post "upload" do + puts "haha11" + end + end end + end end diff --git a/config/initializers/autoreload_grape.rb b/config/initializers/autoreload_grape.rb new file mode 100644 index 000000000..ceffb9425 --- /dev/null +++ b/config/initializers/autoreload_grape.rb @@ -0,0 +1,26 @@ +if Rails.env.development? + lib_ruby_files = Dir.glob(File.join("app/api/**", "*.rb")) + lib_reloader ||= ActiveSupport::FileUpdateChecker.new(lib_ruby_files) do + # lib_ruby_files.each do |lib_file| + # puts "start require #{lib_file}" + # require_dependency(lib_file) + # end + # + + # binding.pry + # if Object.const_defined?(:Mobile) + # Object.send(:remove_const, :Mobile) + # end + # + # $".delete_if {|s| s.include?('api/mobile') } + # require File.join(Rails.root,"app/api/mobile/api.rb") + Rails.application.reload_routes! + end + + ActionDispatch::Callbacks.to_prepare do + lib_reloader.execute_if_updated + end + +end + + From 4a6c26d499844c6cc4cdb086c01c1fa032745be6 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 9 Dec 2014 16:36:43 +0800 Subject: [PATCH 012/192] =?UTF-8?q?=E5=B0=86entities=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/auth.rb | 13 ++++- app/api/mobile/apis/courses.rb | 87 ++++++++----------------------- app/api/mobile/apis/users.rb | 50 ++++++++---------- app/api/mobile/entities/course.rb | 38 ++++++++++++++ app/api/mobile/entities/user.rb | 20 +++++++ 5 files changed, 115 insertions(+), 93 deletions(-) create mode 100644 app/api/mobile/entities/course.rb create mode 100644 app/api/mobile/entities/user.rb diff --git a/app/api/mobile/apis/auth.rb b/app/api/mobile/apis/auth.rb index 8281c4aa9..33eff26ad 100644 --- a/app/api/mobile/apis/auth.rb +++ b/app/api/mobile/apis/auth.rb @@ -1,4 +1,12 @@ module Mobile + + module Entities + class Auth < Grape::Entity + expose :token + expose :user, using: User + end + end + module Apis class Auth < Grape::API resource :auth do @@ -12,8 +20,9 @@ module Mobile if user ::ApiKey.delete_all(user_id: user.id) key = ::ApiKey.create!(user_id: user.id) - data = {token: key.access_token}.merge(user.as_json).merge(user.extensions.as_json) - {status: 0, data: data} + api_user = UserService.new.show_user(user.id) + present :data, {token: key, user: api_user}, using: Mobile:Entities::Auth + present :status, 0 else {status: 1, message: 'Unauthorized.'} end diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index 2dca9c220..1084e8cbc 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -1,74 +1,33 @@ module Mobile - module Apis - - module Entities - - class Course < Grape::Entity - def self.course_expose(field) - expose field do |f,opt| - f[:course][field] || f[:course].__send__(field) + class Courses < Grape::API + resource :courses do + desc "get all courses" + params do + optional :school_id, type: Integer, desc: 'school number' + requires :per_page_count, type: Integer + requires :page, type: Integer, desc: 'current page no' end - end - expose :img_url - course_expose :attachmenttype - course_expose :class_period - course_expose :code - course_expose :created_at - course_expose :description - course_expose :endup_time - course_expose :extra - course_expose :id - course_expose :inherit_members - course_expose :is_public - course_expose :lft - course_expose :location - course_expose :name - course_expose :open_student - # course_expose :password - course_expose :rgt - course_expose :school_id - course_expose :setup_time - course_expose :state - course_expose :status - course_expose :string - course_expose :tea_id - course_expose :term - course_expose :time - course_expose :updated_at - course_expose :teacher - end - - end - - class Courses < Grape::API - resource :courses do - desc "get all courses" - params do - optional :school_id, type: Integer, desc: 'school number' - requires :per_page_count, type: Integer - requires :page, type: Integer, desc: 'current page no' - end - get do - cs = CoursesService.new - courses = cs.course_list(params) - present :data, courses, with: Entities::Course - present :status, 0 - end - - desc "Return a course" - params do - requires :id, type: Integer - end - route_param :id do get do - course = Course.find(params[:id]) - {status: 0, data: course} + cs = CoursesService.new + courses = cs.course_list(params) + present :data, courses, with: Mobile::Entities::Course + present :status, 0 end - end + desc "Return a course" + params do + requires :id, type: Integer + end + route_param :id do + get do + course = Course.find(params[:id]) + {status: 0, data: course} + end + end + + end end end - end end diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index e4544a09e..df17782f2 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -1,38 +1,34 @@ module Mobile module Apis - class Users < Grape::API - resource :users do - desc "get all users" - get do - ['hello'] - end + class Users < Grape::API + resource :users do + desc "get all users" + get do + ['hello'] + end - desc "add a user" - params do - requires :login, type: String, desc: 'username' - requires :mail, type: String, desc: 'mail' - requires :password, type: String, desc: 'password' - end - post do - us = UsersService.new - begin - user = us.register params.merge(:password_confirmation => params[:password], - :should_confirmation_password => true) - raise "register failed #{user.errors.full_messages}" if user.new_record? - {status: 0, data: user} - rescue => e - {status: 1, message: e.message} + desc "add a user" + params do + requires :login, type: String, desc: 'username' + requires :mail, type: String, desc: 'mail' + requires :password, type: String, desc: 'password' + end + post do + us = UsersService.new + begin + user = us.register params.merge(:password_confirmation => params[:password], + :should_confirmation_password => true) + raise "register failed #{user.errors.full_messages}" if user.new_record? + present :data, user, with: Mobile::Entities::User + present :status, 0 + rescue => e + {status: 1, message: e.message} + end end - end - desc "test upload" - post "upload" do - puts "haha11" end - end end - end end diff --git a/app/api/mobile/entities/course.rb b/app/api/mobile/entities/course.rb new file mode 100644 index 000000000..b9823d9ac --- /dev/null +++ b/app/api/mobile/entities/course.rb @@ -0,0 +1,38 @@ +module Mobile + module Entities + class Course < Grape::Entity + def self.course_expose(field) + expose field do |f,opt| + f[:course][field] || f[:course].__send__(field) + end + end + expose :img_url + course_expose :attachmenttype + course_expose :class_period + course_expose :code + course_expose :created_at + course_expose :description + course_expose :endup_time + course_expose :extra + course_expose :id + course_expose :inherit_members + course_expose :is_public + course_expose :lft + course_expose :location + course_expose :name + course_expose :open_student + # course_expose :password + course_expose :rgt + course_expose :school_id + course_expose :setup_time + course_expose :state + course_expose :status + course_expose :string + course_expose :tea_id + course_expose :term + course_expose :time + course_expose :updated_at + course_expose :teacher + end + end +end diff --git a/app/api/mobile/entities/user.rb b/app/api/mobile/entities/user.rb new file mode 100644 index 000000000..33ae3f049 --- /dev/null +++ b/app/api/mobile/entities/user.rb @@ -0,0 +1,20 @@ +module Mobile + module Entities + class User < Grape::Entity + #头像 + #昵称 + expose :login + #性别 + expose :gender do |user, opt| + user.user_extentions.gender + end + #我的二维码 + #工作单位 + #邮箱地址 + expose :mail + #地区 + #签名 + end + end + +end From 890f49eb36719b3a873a2c764d7d3aa781d32683 Mon Sep 17 00:00:00 2001 From: z9hang Date: Tue, 9 Dec 2014 16:40:52 +0800 Subject: [PATCH 013/192] =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E6=96=B9=E6=B3=95=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile.lock | 11 ----------- app/services/users_service.rb | 27 +++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 58f069ac1..43252793e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -122,7 +122,6 @@ GEM htmlentities (4.3.2) i18n (0.6.1) ice_nine (0.11.0) - iconv (1.0.4) journey (1.0.4) jquery-rails (2.0.3) railties (>= 3.1.0, < 5.0) @@ -172,8 +171,6 @@ GEM win32console (~> 1.3) pry-nav (0.2.3) pry (~> 0.9.10) - puma (2.10.1) - rack (>= 1.1, < 2.0) rack (1.4.5) rack-accept (0.4.5) rack (>= 0.4) @@ -222,7 +219,6 @@ GEM sass-rails rmagick (2.13.2) ruby-openid (2.1.8) - ruby-prof (0.15.2) rubyzip (1.1.6) sass (3.3.10) sass-rails (3.2.6) @@ -273,8 +269,6 @@ GEM win32console (1.3.2-x86-mingw32) xpath (2.0.0) nokogiri (~> 1.3) - zip-zip (0.3) - rubyzip (>= 1.0.0) PLATFORMS ruby @@ -297,7 +291,6 @@ DEPENDENCIES guard-test (~> 1.0.0) htmlentities i18n (~> 0.6.0) - iconv jquery-rails (~> 2.0.2) kaminari mocha (~> 1.1.0) @@ -307,15 +300,12 @@ DEPENDENCIES paperclip (~> 3.5.4) pry pry-nav - puma rack-mini-profiler! rack-openid rails (= 3.2.13) rich (= 1.4.6) rmagick (>= 2.0.0) ruby-openid (~> 2.1.4) - ruby-prof (~> 0.15.1) - rubyzip sass-rails (~> 3.2.3) seems_rateable! selenium-webdriver (~> 2.42.0) @@ -323,4 +313,3 @@ DEPENDENCIES spork-testunit (~> 0.0.8) therubyracer uglifier (>= 1.0.3) - zip-zip diff --git a/app/services/users_service.rb b/app/services/users_service.rb index 0f79e8308..3579b8a87 100644 --- a/app/services/users_service.rb +++ b/app/services/users_service.rb @@ -1,4 +1,5 @@ class UsersService + include ApplicationHelper include AccountHelper #将用户注册的功能函数写这里 #参数约定 @@ -36,4 +37,30 @@ class UsersService @user end + #显示用户 + #id用户id + def show_user + @user = User.find(params[:id]) + img_url = url_to_avatar(@user) + gender = user.user_extensions.gender.nil? ? 0 : user.user_extensions.gender + work_unit = "" + if @user.user_extensions.identity == 0 || @user.user_extensions.identity == 1 + work_unit = @user.user_extensions.school.name unless @user.user_extensions.school.nil? + elsif @user.user_extensions.identity == 3 + work_unit = @user.user_extensions.occupation + elsif @user.user_extensions.identity == 2 + work_unit = @user.firstname + end + location = "" + location << @user.user_extensions.location + location << @user.user_extensions.location_city + {:id => @user.id,:img_url =>img_url,:nickname => @user.login,:gender => gender,:work_unit => work_unit,:mail => @user.mail,:location => location,:brief_introduction => @user.user_extensions.brief_introduction} + end + + #编辑用户 + def edit_user params + @user = User.find(params[:id]) + file = params[:file] + + end end From c054852b4e914d0855ed2e9a407e47b0eba83d0b Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 9 Dec 2014 16:57:08 +0800 Subject: [PATCH 014/192] =?UTF-8?q?=E7=99=BB=E5=BD=95=E5=90=8E=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E7=94=A8=E6=88=B7=E8=B5=84=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/auth.rb | 4 ++-- app/api/mobile/entities/user.rb | 11 +++++++---- app/services/users_service.rb | 8 ++++---- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/app/api/mobile/apis/auth.rb b/app/api/mobile/apis/auth.rb index 33eff26ad..fa6fec6e2 100644 --- a/app/api/mobile/apis/auth.rb +++ b/app/api/mobile/apis/auth.rb @@ -20,8 +20,8 @@ module Mobile if user ::ApiKey.delete_all(user_id: user.id) key = ::ApiKey.create!(user_id: user.id) - api_user = UserService.new.show_user(user.id) - present :data, {token: key, user: api_user}, using: Mobile:Entities::Auth + api_user = ::UsersService.new.show_user({id:user.id}) + present :data, {token: key.access_token, user: api_user}, using: Entities::Auth present :status, 0 else {status: 1, message: 'Unauthorized.'} diff --git a/app/api/mobile/entities/user.rb b/app/api/mobile/entities/user.rb index 33ae3f049..38230b7a0 100644 --- a/app/api/mobile/entities/user.rb +++ b/app/api/mobile/entities/user.rb @@ -1,19 +1,22 @@ module Mobile module Entities class User < Grape::Entity + expose :id #头像 + expose :img_url #昵称 - expose :login + expose :nickname #性别 - expose :gender do |user, opt| - user.user_extentions.gender - end + expose :gender #我的二维码 #工作单位 + expose :work_unit #邮箱地址 expose :mail #地区 + expose :location #签名 + expose :brief_introduction end end diff --git a/app/services/users_service.rb b/app/services/users_service.rb index 3579b8a87..17ecc1598 100644 --- a/app/services/users_service.rb +++ b/app/services/users_service.rb @@ -39,10 +39,10 @@ class UsersService #显示用户 #id用户id - def show_user + def show_user(params) @user = User.find(params[:id]) img_url = url_to_avatar(@user) - gender = user.user_extensions.gender.nil? ? 0 : user.user_extensions.gender + gender = @user.user_extensions.gender.nil? ? 0 : @user.user_extensions.gender work_unit = "" if @user.user_extensions.identity == 0 || @user.user_extensions.identity == 1 work_unit = @user.user_extensions.school.name unless @user.user_extensions.school.nil? @@ -52,8 +52,8 @@ class UsersService work_unit = @user.firstname end location = "" - location << @user.user_extensions.location - location << @user.user_extensions.location_city + location << (@user.user_extensions.location || '') + location << (@user.user_extensions.location_city || '') {:id => @user.id,:img_url =>img_url,:nickname => @user.login,:gender => gender,:work_unit => work_unit,:mail => @user.mail,:location => location,:brief_introduction => @user.user_extensions.brief_introduction} end From 7efd2375ff940cb74e3aef6a7bcdd22f6cad9e83 Mon Sep 17 00:00:00 2001 From: z9hang Date: Wed, 10 Dec 2014 11:21:23 +0800 Subject: [PATCH 015/192] =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/users_service.rb | 46 ++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/app/services/users_service.rb b/app/services/users_service.rb index 17ecc1598..cd955e18d 100644 --- a/app/services/users_service.rb +++ b/app/services/users_service.rb @@ -1,6 +1,7 @@ class UsersService include ApplicationHelper include AccountHelper + include AvatarHelper #将用户注册的功能函数写这里 #参数约定 #成功返回注册后的User实例,失败直接抛异常 @@ -60,7 +61,50 @@ class UsersService #编辑用户 def edit_user params @user = User.find(params[:id]) - file = params[:file] + fileio = params[:file] + @se = @user.extensions + if @user.user_extensions.identity == 0 || @user.user_extensions.identity == 1 + @se.school_id = params[:occupation] + elsif @user.user_extensions.identity == 3 + @se.occupation = params[:occupation] + elsif @user.user_extensions.identity == 2 + @user.firstname = params[:occupation] + end + @se.brief_introduction = params[:brief_introduction] + @se.gender = params[:gender] + @se.location = params[:province] if params[:province] + @se.location_city = params[:city] if params[:city] + if @se.save + unless fileio.nil? + file = fileio[:tempfile] + diskfile=disk_filename(@user.class.to_s,@user.id) + @image_file = fileio[:name] + @urlfile='/' << File.join("images","avatars",avatar_directory(@user.class.to_s),avatar_filename(@user.id,@image_file)) + + path = File.dirname(diskfile) + unless File.directory?(path) + FileUtils.mkdir_p(path) + end + File.rename(file.path, @urlfile) + begin + f = Magick::ImageList.new(diskfile) + # gif格式不再做大小处理 + if f.format != 'GIF' + width = 300.0 + proportion = (width/f[0].columns) + height = (f[0].rows*proportion) + f.resize_to_fill!(width,height) + f.write(diskfile) + end + + rescue Exception => e + logger.error "[Error] avatar : users_service#edit_user ===> #{e}" + end + end + return true + else + @se + end end end From 70bc6acbd2301e99b70b527756d2410659ba0d17 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Wed, 10 Dec 2014 11:56:33 +0800 Subject: [PATCH 016/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile.lock | 11 +++++++ app/api/mobile/api.rb | 2 +- app/api/mobile/apis/users.rb | 21 +++++++++++++ app/services/users_service.rb | 55 +++++++++++++++++------------------ 4 files changed, 59 insertions(+), 30 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index a7239fc80..377ded53e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -130,6 +130,7 @@ GEM htmlentities (4.3.2) i18n (0.6.1) ice_nine (0.11.0) + iconv (1.0.4) journey (1.0.4) jquery-rails (2.0.3) railties (>= 3.1.0, < 5.0) @@ -185,6 +186,8 @@ GEM pry-remote (0.1.8) pry (~> 0.9) slop (~> 3.0) + puma (2.10.1) + rack (>= 1.1, < 2.0) rack (1.4.5) rack-accept (0.4.5) rack (>= 0.4) @@ -233,6 +236,7 @@ GEM sass-rails rmagick (2.13.2) ruby-openid (2.1.8) + ruby-prof (0.15.2) rubyzip (1.1.6) sass (3.3.10) sass-rails (3.2.6) @@ -283,6 +287,8 @@ GEM win32console (1.3.2-x86-mingw32) xpath (2.0.0) nokogiri (~> 1.3) + zip-zip (0.3) + rubyzip (>= 1.0.0) PLATFORMS ruby @@ -306,6 +312,7 @@ DEPENDENCIES guard-test (~> 1.0.0) htmlentities i18n (~> 0.6.0) + iconv jquery-rails (~> 2.0.2) kaminari mocha (~> 1.1.0) @@ -316,12 +323,15 @@ DEPENDENCIES pry-byebug pry-rails pry-remote + puma rack-mini-profiler! rack-openid rails (= 3.2.13) rich (= 1.4.6) rmagick (>= 2.0.0) ruby-openid (~> 2.1.4) + ruby-prof (~> 0.15.1) + rubyzip sass-rails (~> 3.2.3) seems_rateable! selenium-webdriver (~> 2.42.0) @@ -329,3 +339,4 @@ DEPENDENCIES spork-testunit (~> 0.0.8) therubyracer uglifier (>= 1.0.3) + zip-zip diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb index 4add19248..b540c73d3 100644 --- a/app/api/mobile/api.rb +++ b/app/api/mobile/api.rb @@ -10,7 +10,7 @@ module Mobile API.logger end - def authticate! + def authenticate! error!('Unauthorized. Invalid or expired token.', 401) unless current_user end diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index df17782f2..9b5bf8c73 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -26,6 +26,27 @@ module Mobile end end + + desc "modify user" + params do + #optional :file, type: File, desc: 'avatar' + optional :occupation, type: String + optional :brief_introduction, type: String + optional :province, type: String + optional :city, type: String + optional :gender, type: Integer + end + put ':id' do + authenticate! + us = UsersService.new + begin + ue = us.edit_user params + {status: 0, data: ue} + rescue => e + {status: 1, message: e.message} + end + end + end end end diff --git a/app/services/users_service.rb b/app/services/users_service.rb index cd955e18d..b47bf6a28 100644 --- a/app/services/users_service.rb +++ b/app/services/users_service.rb @@ -16,7 +16,7 @@ class UsersService password_confirmation = params[:password_confirmation] should_confirmation_password = params[:should_confirmation_password] if !password.blank? && !password_confirmation.blank? && should_confirmation_password - @user.password,@user.password_confirmation = password,password_confirmation + @user.password, @user.password_confirmation = password, password_confirmation elsif !password.blank? && !should_confirmation_password @user.password = password else @@ -42,7 +42,7 @@ class UsersService #id用户id def show_user(params) @user = User.find(params[:id]) - img_url = url_to_avatar(@user) + img_url = url_to_avatar(@user) gender = @user.user_extensions.gender.nil? ? 0 : @user.user_extensions.gender work_unit = "" if @user.user_extensions.identity == 0 || @user.user_extensions.identity == 1 @@ -55,7 +55,7 @@ class UsersService location = "" location << (@user.user_extensions.location || '') location << (@user.user_extensions.location_city || '') - {:id => @user.id,:img_url =>img_url,:nickname => @user.login,:gender => gender,:work_unit => work_unit,:mail => @user.mail,:location => location,:brief_introduction => @user.user_extensions.brief_introduction} + {:id => @user.id, :img_url => img_url, :nickname => @user.login, :gender => gender, :work_unit => work_unit, :mail => @user.mail, :location => location, :brief_introduction => @user.user_extensions.brief_introduction} end #编辑用户 @@ -75,36 +75,33 @@ class UsersService @se.gender = params[:gender] @se.location = params[:province] if params[:province] @se.location_city = params[:city] if params[:city] - if @se.save - unless fileio.nil? - file = fileio[:tempfile] - diskfile=disk_filename(@user.class.to_s,@user.id) - @image_file = fileio[:name] - @urlfile='/' << File.join("images","avatars",avatar_directory(@user.class.to_s),avatar_filename(@user.id,@image_file)) + raise @se.errors.full_message unless @se.save + unless fileio.nil? + file = fileio[:tempfile] + diskfile=disk_filename(@user.class.to_s, @user.id) + @image_file = fileio[:name] + @urlfile='/' << File.join("images", "avatars", avatar_directory(@user.class.to_s), avatar_filename(@user.id, @image_file)) - path = File.dirname(diskfile) - unless File.directory?(path) - FileUtils.mkdir_p(path) + path = File.dirname(diskfile) + unless File.directory?(path) + FileUtils.mkdir_p(path) + end + File.rename(file.path, @urlfile) + begin + f = Magick::ImageList.new(diskfile) + # gif格式不再做大小处理 + if f.format != 'GIF' + width = 300.0 + proportion = (width/f[0].columns) + height = (f[0].rows*proportion) + f.resize_to_fill!(width, height) + f.write(diskfile) end - File.rename(file.path, @urlfile) - begin - f = Magick::ImageList.new(diskfile) - # gif格式不再做大小处理 - if f.format != 'GIF' - width = 300.0 - proportion = (width/f[0].columns) - height = (f[0].rows*proportion) - f.resize_to_fill!(width,height) - f.write(diskfile) - end - rescue Exception => e - logger.error "[Error] avatar : users_service#edit_user ===> #{e}" - end + rescue Exception => e + logger.error "[Error] avatar : users_service#edit_user ===> #{e}" end - return true - else - @se end + @se end end From fbd38b4a5352c5afff03f2672987fe21ec37228b Mon Sep 17 00:00:00 2001 From: z9hang Date: Wed, 10 Dec 2014 14:33:05 +0800 Subject: [PATCH 017/192] =?UTF-8?q?=E5=85=B3=E6=B3=A8=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E4=B8=8E=E5=85=B3=E6=B3=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/watchers_controller.rb | 1 + app/services/service.rb | 51 ++++++++++++++++++++++++++ app/services/users_service.rb | 7 ++++ 3 files changed, 59 insertions(+) create mode 100644 app/services/service.rb diff --git a/app/controllers/watchers_controller.rb b/app/controllers/watchers_controller.rb index 50bb2ccd8..6c61f1970 100644 --- a/app/controllers/watchers_controller.rb +++ b/app/controllers/watchers_controller.rb @@ -162,4 +162,5 @@ class WatchersController < ApplicationController format.js { render :partial => 'set_watcher', :locals => {:user => user, :watched => watchables} } end end + end diff --git a/app/services/service.rb b/app/services/service.rb new file mode 100644 index 000000000..c4eb4bc1c --- /dev/null +++ b/app/services/service.rb @@ -0,0 +1,51 @@ +class Service + def watch params + @watchables = find_watchables params + if @watchables.nil? + + end + set_watcher(@watchables, User.current, true) + end + + def unwatch params + find_watchables params + set_watcher(@watchables, User.current, false) + end + + def find_watchables params + #根据参数获取关注对象的类型(user、project) + klass = Object.const_get(params[:object_type].camelcase) rescue nil + #判断获取的对象类型能否响应‘watched_by’方法 + if klass && klass.respond_to?('watched_by') + @watchables = klass.find_all_by_id(Array.wrap(params[:object_id])) + raise Unauthorized if @watchables.any? {|w| w.respond_to?(:visible?) && !w.visible?} + end + @watchables.present? ? @watchables : nil + end + + def set_watcher(watchables, user, watching) + watchables.each do |watchable| + watchable.set_watcher(user, watching) + # @user = watchable # added by william + if watching + # 修改 user和project的状态 + if watchable.instance_of?(User) + #写user_statuses表 + UserStatus.find_by_user_id(watchable.id).update_watchers_count(1) + elsif watchable.instance_of?(Project) + #写project_statuese表 + ProjectStatus.find_by_project_id(watchable.id).update_watchers_count(1) + end + else + # 修改 user和project的状态 + if watchable.instance_of?(User) + #写user_statuses表 + UserStatus.find_by_user_id(watchable.id).update_watchers_count(-1) + elsif watchable.instance_of?(Project) + #写project_statuese表 :project_status + ProjectStatus.find_by_project_id(watchable.id).update_watchers_count(-1) + end + end + end + end +end \ No newline at end of file diff --git a/app/services/users_service.rb b/app/services/users_service.rb index cd955e18d..da1d61d36 100644 --- a/app/services/users_service.rb +++ b/app/services/users_service.rb @@ -107,4 +107,11 @@ class UsersService @se end end + + #关注列表 + def user_watcher params + @user = User.find(params[:id]) + User.watched_by(@user.id) + end + end From 41fa6f02f17888e3645cd79a87175bcc30f28d7b Mon Sep 17 00:00:00 2001 From: z9hang Date: Wed, 10 Dec 2014 15:07:41 +0800 Subject: [PATCH 018/192] =?UTF-8?q?=E5=85=B3=E6=B3=A8=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E3=80=81=E5=85=B3=E6=B3=A8=E4=B8=8E=E5=8F=96=E6=B6=88=E5=85=B3?= =?UTF-8?q?=E6=B3=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/watchers_controller.rb | 30 +++++++++++++++++++++++--- app/services/service.rb | 14 ++++++++---- 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/app/controllers/watchers_controller.rb b/app/controllers/watchers_controller.rb index 6c61f1970..096e44f06 100644 --- a/app/controllers/watchers_controller.rb +++ b/app/controllers/watchers_controller.rb @@ -15,13 +15,37 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class WatchersController < ApplicationController - before_filter :require_login, :find_watchables, :only => [:watch, :unwatch] + before_filter :require_login#, :find_watchables, :only => [:watch, :unwatch] def watch - set_watcher(@watchables, User.current, true) + s = Service.new + watchables = s.watch params.merge(:current_user_id => User.current.id) + respond_to do |format| + format.html { redirect_to_referer_or {render :text => (true ? 'Watcher added.' : 'Watcher removed.'), :layout => true}} + format.js { render :partial => 'set_watcher', :locals => {:user => User.current, :watched => watchables} } + end + rescue Exception => e + if e.message == "404" + render_404 + else + raise e + end + #set_watcher(@watchables, User.current, true) end def unwatch - set_watcher(@watchables, User.current, false) + s = Service.new + watchables = s.unwatch params.merge(:current_user_id => User.current.id) + respond_to do |format| + format.html { redirect_to_referer_or {render :text => (false ? 'Watcher added.' : 'Watcher removed.'), :layout => true}} + format.js { render :partial => 'set_watcher', :locals => {:user => User.current, :watched => watchables} } + end + rescue Exception => e + if e.message == "404" + render_404 + else + raise e + end + #set_watcher(@watchables, User.current, false) end def join diff --git a/app/services/service.rb b/app/services/service.rb index c4eb4bc1c..413d9bfb8 100644 --- a/app/services/service.rb +++ b/app/services/service.rb @@ -1,15 +1,20 @@ class Service def watch params + @current_user = User.find(params[:current_user_id]) @watchables = find_watchables params if @watchables.nil? - + raise '404' end - set_watcher(@watchables, User.current, true) + set_watcher(@watchables, @current_user, true) end def unwatch params - find_watchables params - set_watcher(@watchables, User.current, false) + @current_user = User.find(params[:current_user_id]) + @watchables = find_watchables params + if @watchables.nil? + raise '404' + end + set_watcher(@watchables, @current_user, false) end def find_watchables params @@ -47,5 +52,6 @@ class Service end end end + watchables end end \ No newline at end of file From 5eba06ddf9f056ef973059461b47cd040731febb Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Wed, 10 Dec 2014 15:11:10 +0800 Subject: [PATCH 019/192] =?UTF-8?q?=E5=8A=A0=E5=85=A5api=E5=9C=A8=E7=BA=BF?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + Gemfile | 1 + Gemfile.lock | 4 ++++ app/api/mobile/api.rb | 1 + app/api/mobile/apis/auth.rb | 14 ++++++++++++-- app/api/mobile/apis/users.rb | 2 +- 6 files changed, 20 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 061314adc..f1eed7367 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ /config/configuration.yml .rbenv-gemsets .DS_Store +public/api_doc/ diff --git a/Gemfile b/Gemfile index 34a1a7956..1fe5b6c0f 100644 --- a/Gemfile +++ b/Gemfile @@ -20,6 +20,7 @@ gem "builder", "3.0.0" gem 'acts-as-taggable-on', '2.4.1' group :development do + gem 'grape-swagger' gem 'puma' gem 'better_errors', path: 'lib/better_errors' gem 'rack-mini-profiler', path: 'lib/rack-mini-profiler' diff --git a/Gemfile.lock b/Gemfile.lock index 377ded53e..95ea5b6e2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -110,6 +110,9 @@ GEM grape-entity (0.4.4) activesupport multi_json (>= 1.3.2) + grape-swagger (0.8.0) + grape + grape-entity guard (2.6.1) formatador (>= 0.2.4) listen (~> 2.7) @@ -307,6 +310,7 @@ DEPENDENCIES fastercsv (~> 1.5.0) grape (~> 0.9.0) grape-entity + grape-swagger guard-rails (~> 0.5.3) guard-spork (~> 1.5.1) guard-test (~> 1.0.0) diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb index b540c73d3..548793f3e 100644 --- a/app/api/mobile/api.rb +++ b/app/api/mobile/api.rb @@ -28,6 +28,7 @@ module Mobile mount Apis::Users mount Apis::Courses + add_swagger_documentation ({api_version: 'v1', base_path: '/api'}) end end diff --git a/app/api/mobile/apis/auth.rb b/app/api/mobile/apis/auth.rb index fa6fec6e2..136e5b171 100644 --- a/app/api/mobile/apis/auth.rb +++ b/app/api/mobile/apis/auth.rb @@ -10,12 +10,12 @@ module Mobile module Apis class Auth < Grape::API resource :auth do - desc "Creates and returns access_token if valid login" + desc "用户登录" params do requires :login, type: String, desc: 'Username or email' requires :password, type: String, desc: 'Password' end - post :login do + post do user,last_logon = ::User.try_to_login(params[:login], params[:password]) if user ::ApiKey.delete_all(user_id: user.id) @@ -27,6 +27,16 @@ module Mobile {status: 1, message: 'Unauthorized.'} end end + + desc "用户登出" + params do + end + delete do + authenticate! + ::ApiKey.delete_all(user_id: current_user.id) + {status: 0} + end + end end end diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index 9b5bf8c73..5dc25d401 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -40,7 +40,7 @@ module Mobile authenticate! us = UsersService.new begin - ue = us.edit_user params + ue = us.edit_user params.merge(id: current_user.id) {status: 0, data: ue} rescue => e {status: 1, message: e.message} From 6a3ebb5e94d5c40bed8bac0c4d15504bbb4447a2 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Wed, 10 Dec 2014 16:23:56 +0800 Subject: [PATCH 020/192] =?UTF-8?q?=E5=85=B3=E6=B3=A8=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/api.rb | 1 + app/api/mobile/apis/auth.rb | 1 + app/api/mobile/apis/courses.rb | 10 ++-- app/api/mobile/apis/users.rb | 9 ++-- app/api/mobile/apis/watches.rb | 53 +++++++++++++++++++ app/controllers/watchers_controller.rb | 4 +- .../{service.rb => watches_service.rb} | 2 +- 7 files changed, 66 insertions(+), 14 deletions(-) create mode 100644 app/api/mobile/apis/watches.rb rename app/services/{service.rb => watches_service.rb} (96%) diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb index 548793f3e..64016458e 100644 --- a/app/api/mobile/api.rb +++ b/app/api/mobile/api.rb @@ -27,6 +27,7 @@ module Mobile mount Apis::Auth mount Apis::Users mount Apis::Courses + mount Apis::Watches add_swagger_documentation ({api_version: 'v1', base_path: '/api'}) end diff --git a/app/api/mobile/apis/auth.rb b/app/api/mobile/apis/auth.rb index 136e5b171..ae233a853 100644 --- a/app/api/mobile/apis/auth.rb +++ b/app/api/mobile/apis/auth.rb @@ -30,6 +30,7 @@ module Mobile desc "用户登出" params do + requires :token, type: String end delete do authenticate! diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index 1084e8cbc..9aeea5176 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -2,11 +2,11 @@ module Mobile module Apis class Courses < Grape::API resource :courses do - desc "get all courses" + desc "获取所有课程" params do - optional :school_id, type: Integer, desc: 'school number' - requires :per_page_count, type: Integer - requires :page, type: Integer, desc: 'current page no' + optional :school_id, type: Integer, desc: '传入学校id,返回该学校课程列表' + requires :per_page_count, type: Integer, desc: '每页总数' + requires :page, type: Integer, desc: '当前页码' end get do cs = CoursesService.new @@ -15,7 +15,7 @@ module Mobile present :status, 0 end - desc "Return a course" + desc "返回单个课程" params do requires :id, type: Integer end diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index 5dc25d401..d05809726 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -2,12 +2,8 @@ module Mobile module Apis class Users < Grape::API resource :users do - desc "get all users" - get do - ['hello'] - end - desc "add a user" + desc "注册用户" params do requires :login, type: String, desc: 'username' requires :mail, type: String, desc: 'mail' @@ -27,8 +23,9 @@ module Mobile end - desc "modify user" + desc "修改用户" params do + requires :token, type: String #optional :file, type: File, desc: 'avatar' optional :occupation, type: String optional :brief_introduction, type: String diff --git a/app/api/mobile/apis/watches.rb b/app/api/mobile/apis/watches.rb new file mode 100644 index 000000000..0715ff4a2 --- /dev/null +++ b/app/api/mobile/apis/watches.rb @@ -0,0 +1,53 @@ +module Mobile + module Apis + class Watches < Grape::API + resource :watches do + + desc "获取所有关注" + params do + requires :token, type: String + end + get do + authenticate! + ws = UsersService.new + ws.user_watcher(id: current_user.id) + end + + + desc "关注某人" + params do + requires :token, type: String + requires :object_id, type: Integer, desc: '关注的用户的id' + end + post do + authenticate! + ws = WatchesService.new + begin + o = ws.watch(params.merge({current_user_id:current_user.id, object_type:'user' }) ) + {status:0 , data: o} + rescue =>e + {status:1, message: e.message} + end + end + + + desc "取消关注" + params do + requires :token, type: String + requires :object_id, type: Integer, desc: '取消关注的用户的id' + end + delete do + authenticate! + ws = WatchesService.new + begin + ws.unwatch(params.merge({current_user_id:current_user.id, object_type:'user' }) ) + {status:0} + rescue =>e + {status:1, message: e.message} + end + end + + end + end + end +end \ No newline at end of file diff --git a/app/controllers/watchers_controller.rb b/app/controllers/watchers_controller.rb index 096e44f06..f6d01a03d 100644 --- a/app/controllers/watchers_controller.rb +++ b/app/controllers/watchers_controller.rb @@ -17,7 +17,7 @@ class WatchersController < ApplicationController before_filter :require_login#, :find_watchables, :only => [:watch, :unwatch] def watch - s = Service.new + s = WatchesService.new watchables = s.watch params.merge(:current_user_id => User.current.id) respond_to do |format| format.html { redirect_to_referer_or {render :text => (true ? 'Watcher added.' : 'Watcher removed.'), :layout => true}} @@ -33,7 +33,7 @@ class WatchersController < ApplicationController end def unwatch - s = Service.new + s = WatchesService.new watchables = s.unwatch params.merge(:current_user_id => User.current.id) respond_to do |format| format.html { redirect_to_referer_or {render :text => (false ? 'Watcher added.' : 'Watcher removed.'), :layout => true}} diff --git a/app/services/service.rb b/app/services/watches_service.rb similarity index 96% rename from app/services/service.rb rename to app/services/watches_service.rb index 413d9bfb8..2b9bed3cd 100644 --- a/app/services/service.rb +++ b/app/services/watches_service.rb @@ -1,4 +1,4 @@ -class Service +class WatchesService def watch params @current_user = User.find(params[:current_user_id]) @watchables = find_watchables params From 96004b327028d7abe4d51c370daa18e413526eb8 Mon Sep 17 00:00:00 2001 From: z9hang Date: Wed, 10 Dec 2014 16:26:09 +0800 Subject: [PATCH 021/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/my_controller.rb | 36 ++++++++++++++++++++++++-------- app/services/users_service.rb | 15 +++++++++++++ 2 files changed, 42 insertions(+), 9 deletions(-) diff --git a/app/controllers/my_controller.rb b/app/controllers/my_controller.rb index 308cb62ca..88c59f9d7 100644 --- a/app/controllers/my_controller.rb +++ b/app/controllers/my_controller.rb @@ -179,17 +179,35 @@ class MyController < ApplicationController return end if request.post? - if @user.check_password?(params[:password]) - @user.password, @user.password_confirmation = params[:new_password], params[:new_password_confirmation] - - if @user.save - flash.now[:notice] = l(:notice_account_password_updated) - redirect_to my_account_url - end - else - flash.now[:error] = l(:notice_account_wrong_password) + us = UsersService.new + @user = us.change_password params.merge(:current_user_id => @user.id) + if @user.errors.full_messages.count <= 0 + flash.now[:notice] = l(:notice_account_password_updated) + redirect_to my_account_url end end + rescue Exception => e + if e.message == 'wrong password' + flash.now[:error] = l(:notice_account_wrong_password) + end + # @user = User.current + # unless @user.change_password_allowed? + # flash.now[:error] = l(:notice_can_t_change_password) + # redirect_to my_account_url + # return + # end + # if request.post? + # if @user.check_password?(params[:password]) + # @user.password, @user.password_confirmation = params[:new_password], params[:new_password_confirmation] + # + # if @user.save + # flash.now[:notice] = l(:notice_account_password_updated) + # redirect_to my_account_url + # end + # else + # flash.now[:error] = l(:notice_account_wrong_password) + # end + # end end # Create a new feeds key diff --git a/app/services/users_service.rb b/app/services/users_service.rb index b6e831e32..9587427b5 100644 --- a/app/services/users_service.rb +++ b/app/services/users_service.rb @@ -111,4 +111,19 @@ class UsersService User.watched_by(@user.id) end + #修改密码 + def change_password params + @current_user = User.find(params[:current_user_id]) + if @current_user.check_password?(params[:password]) + @current_user.password, @current_user.password_confirmation = params[:new_password], params[:new_password_confirmation] + @current_user.save + #raise @current_user.errors.full_message + #return @current_user + + else + raise 'wrong password' + end + @current_user + end + end From 40d0c03751de0e8a61a89f7c0e908002e9b63df7 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Wed, 10 Dec 2014 16:51:19 +0800 Subject: [PATCH 022/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=AF=86=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/users.rb | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index d05809726..e80808c5d 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -38,7 +38,27 @@ module Mobile us = UsersService.new begin ue = us.edit_user params.merge(id: current_user.id) - {status: 0, data: ue} + present :data, user, with: Mobile::Entities::User + present :status, 0 + rescue => e + {status: 1, message: e.message} + end + end + + + desc '修改密码' + params do + requires :token, type: String + requires :password, type:String , desc: '原密码' + requires :new_password, type: String, desc: '新密码' + end + post 'password' do + authenticate! + us = UsersService.new + begin + ue = us.change_password params.merge(new_password_confirmation: params[:new_password]) + present :data, user, with: Mobile::Entities::User + present :status, 0 rescue => e {status: 1, message: e.message} end From 236968d946fe31f27257f4b9248e3d7c56466d34 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Wed, 10 Dec 2014 17:29:39 +0800 Subject: [PATCH 023/192] =?UTF-8?q?=E9=94=99=E8=AF=AF=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/api.rb | 1 + app/api/mobile/apis/auth.rb | 2 +- app/api/mobile/apis/users.rb | 34 +++++++--------------- app/api/mobile/apis/watches.rb | 19 ++++-------- app/api/mobile/middleware/error_handler.rb | 18 ++++++++++++ 5 files changed, 37 insertions(+), 37 deletions(-) create mode 100644 app/api/mobile/middleware/error_handler.rb diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb index 64016458e..d3fe414a4 100644 --- a/app/api/mobile/api.rb +++ b/app/api/mobile/api.rb @@ -4,6 +4,7 @@ module Mobile version 'v1', using: :path format :json content_type :json, "application/json;charset=UTF-8" + use Mobile::Middleware::ErrorHandler helpers do def logger diff --git a/app/api/mobile/apis/auth.rb b/app/api/mobile/apis/auth.rb index ae233a853..05b0a793b 100644 --- a/app/api/mobile/apis/auth.rb +++ b/app/api/mobile/apis/auth.rb @@ -24,7 +24,7 @@ module Mobile present :data, {token: key.access_token, user: api_user}, using: Entities::Auth present :status, 0 else - {status: 1, message: 'Unauthorized.'} + raise 'Unauthorized.' end end diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index e80808c5d..61859904f 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -11,15 +11,11 @@ module Mobile end post do us = UsersService.new - begin - user = us.register params.merge(:password_confirmation => params[:password], - :should_confirmation_password => true) - raise "register failed #{user.errors.full_messages}" if user.new_record? - present :data, user, with: Mobile::Entities::User - present :status, 0 - rescue => e - {status: 1, message: e.message} - end + user = us.register params.merge(:password_confirmation => params[:password], + :should_confirmation_password => true) + raise "register failed #{user.errors.full_messages}" if user.new_record? + present :data, user, with: Mobile::Entities::User + present :status, 0 end @@ -36,13 +32,9 @@ module Mobile put ':id' do authenticate! us = UsersService.new - begin - ue = us.edit_user params.merge(id: current_user.id) - present :data, user, with: Mobile::Entities::User - present :status, 0 - rescue => e - {status: 1, message: e.message} - end + ue = us.edit_user params.merge(id: current_user.id) + present :data, user, with: Mobile::Entities::User + present :status, 0 end @@ -55,13 +47,9 @@ module Mobile post 'password' do authenticate! us = UsersService.new - begin - ue = us.change_password params.merge(new_password_confirmation: params[:new_password]) - present :data, user, with: Mobile::Entities::User - present :status, 0 - rescue => e - {status: 1, message: e.message} - end + ue = us.change_password params.merge(new_password_confirmation: params[:new_password]) + present :data, user, with: Mobile::Entities::User + present :status, 0 end end diff --git a/app/api/mobile/apis/watches.rb b/app/api/mobile/apis/watches.rb index 0715ff4a2..0ee454c25 100644 --- a/app/api/mobile/apis/watches.rb +++ b/app/api/mobile/apis/watches.rb @@ -9,8 +9,9 @@ module Mobile end get do authenticate! - ws = UsersService.new - ws.user_watcher(id: current_user.id) + us = UsersService.new + ws = us.user_watcher(id: current_user.id) + {status: 0, data: ws } end @@ -22,12 +23,8 @@ module Mobile post do authenticate! ws = WatchesService.new - begin o = ws.watch(params.merge({current_user_id:current_user.id, object_type:'user' }) ) - {status:0 , data: o} - rescue =>e - {status:1, message: e.message} - end + {status:0, data: o} end @@ -39,12 +36,8 @@ module Mobile delete do authenticate! ws = WatchesService.new - begin - ws.unwatch(params.merge({current_user_id:current_user.id, object_type:'user' }) ) - {status:0} - rescue =>e - {status:1, message: e.message} - end + ws.unwatch(params.merge({current_user_id:current_user.id, object_type:'user' }) ) + {status: 0} end end diff --git a/app/api/mobile/middleware/error_handler.rb b/app/api/mobile/middleware/error_handler.rb new file mode 100644 index 000000000..3cbc74bd6 --- /dev/null +++ b/app/api/mobile/middleware/error_handler.rb @@ -0,0 +1,18 @@ +module Mobile + module Middleware + class ErrorHandler < Grape::Middleware::Base + def call!(env) + @env = env + begin + @app.call(@env) + rescue =>e + message = {status: 1, message: e.message }.to_json + status = 200 + headers = { 'Content-Type' => content_type } + Rack::Response.new([message], status, headers).finish + # throw :error, :message => e.message || options[:default_message], :status => 500 + end + end + end + end +end \ No newline at end of file From 2ab2abe9e553ed598456fbdb7c6c8f1e833f4ad8 Mon Sep 17 00:00:00 2001 From: z9hang Date: Wed, 10 Dec 2014 18:26:38 +0800 Subject: [PATCH 024/192] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/auth.rb | 2 ++ app/api/mobile/apis/courses.rb | 1 + app/api/mobile/apis/users.rb | 1 + app/api/mobile/apis/watches.rb | 1 + app/controllers/courses_controller.rb | 26 +++++++++++++++++--------- app/services/courses_service.rb | 21 +++++++++++++++++++++ 6 files changed, 43 insertions(+), 9 deletions(-) diff --git a/app/api/mobile/apis/auth.rb b/app/api/mobile/apis/auth.rb index ae233a853..5a6c0f34f 100644 --- a/app/api/mobile/apis/auth.rb +++ b/app/api/mobile/apis/auth.rb @@ -1,3 +1,5 @@ +#coding=utf-8 + module Mobile module Entities diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index 9aeea5176..515ebce77 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -1,3 +1,4 @@ +#coding=utf-8 module Mobile module Apis class Courses < Grape::API diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index d05809726..52932b883 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -1,3 +1,4 @@ +#coding=utf-8 module Mobile module Apis class Users < Grape::API diff --git a/app/api/mobile/apis/watches.rb b/app/api/mobile/apis/watches.rb index 0715ff4a2..ce846debd 100644 --- a/app/api/mobile/apis/watches.rb +++ b/app/api/mobile/apis/watches.rb @@ -1,3 +1,4 @@ +#coding=utf-8 module Mobile module Apis class Watches < Grape::API diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index bd389ff68..ac25d59cf 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -126,18 +126,21 @@ class CoursesController < ApplicationController # 课程搜索 # add by nwb def search - courses_all = Course.all_course - name = params[:name] - (redirect_to courses_url, :notice => l(:label_sumbit_empty);return) if name.blank? - @courses = courses_all.visible - if params[:name].present? - @courses_all = @courses.like(params[:name]) - else - @courses_all = @courses; - end + #courses_all = Course.all_course + #name = params[:name] + #(redirect_to courses_url, :notice => l(:label_sumbit_empty);return) if name.blank? + #@courses = courses_all.visible + #if params[:name].present? + # @courses_all = @courses.like(params[:name]) + #else + # @courses_all = @courses; + #end + cs = CoursesService.new + @courses_all = cs.search_course params @course_count = @courses_all.count @course_pages = Paginator.new @course_count, per_page_option, params['page'] + # 课程的动态数 @course_activity_count=Hash.new @courses_all.each do |course| @@ -194,6 +197,11 @@ class CoursesController < ApplicationController render_feed(courses, :title => "#{Setting.app_title}: #{l(:label_course_latest)}") } end + + rescue Exception => e + if e.message == 'sumbit empty' + (redirect_to courses_url, :notice => l(:label_sumbit_empty);return) + end end def member diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index 0a1fa553d..f1c2babbe 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -26,4 +26,25 @@ class CoursesService course_list end + #搜索课程 + def search_course params + courses_all = Course.all_course + name = params[:name] + if name.blank? + raise 'sumbit empty' + end + @courses = courses_all.visible + if params[:name].present? + @courses_all = @courses.like(params[:name]) + else + @courses_all = @courses; + end + @courses_all + end + + #获取头像 + def get_img obj + url_to_avatar(obj) + end + end \ No newline at end of file From 1494821b675989ac27b2aa09dbfb3f06e79240e1 Mon Sep 17 00:00:00 2001 From: z9hang Date: Wed, 10 Dec 2014 20:27:41 +0800 Subject: [PATCH 025/192] =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 52 +++++++++++++++-------------- app/services/users_service.rb | 12 +++++++ 2 files changed, 39 insertions(+), 25 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 4049c2ae8..084e720d8 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -364,33 +364,35 @@ class UsersController < ApplicationController sort_init 'login', 'asc' sort_update %w(login firstname lastname mail admin created_on last_login_on) (redirect_to user_url, :notice => l(:label_sumbit_empty);return) if params[:name].blank? - case params[:format] - when 'xml', 'json' - @offset, @limit = api_offset_and_limit({:limit => 15}) + case params[:format] + when 'xml', 'json' + @offset, @limit = api_offset_and_limit({:limit => 15}) + else + @limit = 15#per_page_option + end + # + #@status = params[:status] || 1 + #has = { + # "show_changesets" => true + #} + # scope = User.logged.status(@status) + # @search_by = params[:search_by] ? params[:search_by][:id] : 0 + # scope = scope.like(params[:name],@search_by) if params[:name].present? + us = UsersService.new + scope = us.search_user params + @user_count = scope.count + @user_pages = Paginator.new @user_count, @limit, params['page'] + @user_base_tag = params[:id] ? 'base_users':'users_base' + @offset ||= @user_pages.reverse_offset + unless @offset == 0 + @users = scope.offset(@offset).limit(@limit).all.reverse else - @limit = 15#per_page_option + limit = @user_count % @limit + if limit == 0 + limit = @limit + end + @users = scope.offset(@offset).limit(limit).all.reverse end - - @status = params[:status] || 1 - has = { - "show_changesets" => true - } - scope = User.logged.status(@status) - @search_by = params[:search_by] ? params[:search_by][:id] : 0 - scope = scope.like(params[:name],@search_by) if params[:name].present? - @user_count = scope.count - @user_pages = Paginator.new @user_count, @limit, params['page'] - @user_base_tag = params[:id] ? 'base_users':'users_base' - @offset ||= @user_pages.reverse_offset - unless @offset == 0 - @users = scope.offset(@offset).limit(@limit).all.reverse - else - limit = @user_count % @limit - if limit == 0 - limit = @limit - end - @users = scope.offset(@offset).limit(limit).all.reverse - end respond_to do |format| format.html { diff --git a/app/services/users_service.rb b/app/services/users_service.rb index 9587427b5..d281edb19 100644 --- a/app/services/users_service.rb +++ b/app/services/users_service.rb @@ -126,4 +126,16 @@ class UsersService @current_user end + #搜索用户 + def search_user params + @status = params[:status] || 1 + has = { + "show_changesets" => true + } + scope = User.logged.status(@status) + @search_by = params[:search_by] ? params[:search_by][:id] : 0 + scope = scope.like(params[:name],@search_by) if params[:name].present? + scope + end + end From 6dc057d03ca28bbb3e837a2af9d759d004d41f3c Mon Sep 17 00:00:00 2001 From: z9hang Date: Wed, 10 Dec 2014 20:53:41 +0800 Subject: [PATCH 026/192] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E8=80=81=E5=B8=88?= =?UTF-8?q?=E3=80=81=E5=AD=A6=E7=94=9F=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/courses_controller.rb | 10 ++++++---- app/services/courses_service.rb | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index ac25d59cf..26b96eaf3 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -207,19 +207,21 @@ class CoursesController < ApplicationController def member ## 有角色参数的才是课程,没有的就是项目 @render_file = 'member_list' - @teachers= searchTeacherAndAssistant(@course) + #@teachers= searchTeacherAndAssistant(@course) @canShowCode = isCourseTeacher(User.current.id,@course) && params[:role] != '1' case params[:role] when '1' @subPage_title = l :label_teacher_list - @members = searchTeacherAndAssistant(@course) + #@members = searchTeacherAndAssistant(@course) when '2' @subPage_title = l :label_student_list - @members = searchStudent(@course) + #@members = searchStudent(@course) else @subPage_title = '' - @members = @course.member_principals.includes(:roles, :principal).all.sort + #@members = @course.member_principals.includes(:roles, :principal).all.sort end + cs = CoursesService.new + @members = cs.course_teacher_or_student_list(params,@course) @members = paginateHelper @members render :layout => 'base_courses' end diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index f1c2babbe..0468de367 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -1,5 +1,6 @@ class CoursesService include ApplicationHelper + include CoursesHelper #参数school_id为0或不传时返回所有课程,否则返回对应学校的课程 #参数per_page_count分页功能,每页显示的课程数 #参数page分页功能,当前页码 @@ -47,4 +48,22 @@ class CoursesService url_to_avatar(obj) end + #课程老师或课程学生列表 + def course_teacher_or_student_list params,course + @teachers= searchTeacherAndAssistant(course) + #@canShowCode = isCourseTeacher(User.current.id,course) && params[:role] != '1' + case params[:role] + when '1' + #@subPage_title = l :label_teacher_list + @members = searchTeacherAndAssistant(course) + when '2' + #@subPage_title = l :label_student_list + @members = searchStudent(course) + else + #@subPage_title = '' + @members = @course.member_principals.includes(:roles, :principal).all.sort + end + @members + end + end \ No newline at end of file From e7060b7e007c797feaf8cee9a9ca483c376ad051 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Thu, 11 Dec 2014 11:11:30 +0800 Subject: [PATCH 027/192] =?UTF-8?q?=E5=BC=80=E5=90=AFassets?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 1 + Gemfile.lock | 8 ++++++++ config/application.rb | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index 1fe5b6c0f..e6de496ea 100644 --- a/Gemfile +++ b/Gemfile @@ -21,6 +21,7 @@ gem 'acts-as-taggable-on', '2.4.1' group :development do gem 'grape-swagger' + gem 'grape-swagger-ui', git: 'https://github.com/guange2015/grape-swagger-ui.git' gem 'puma' gem 'better_errors', path: 'lib/better_errors' gem 'rack-mini-profiler', path: 'lib/rack-mini-profiler' diff --git a/Gemfile.lock b/Gemfile.lock index 95ea5b6e2..4ac0ba2a3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,3 +1,10 @@ +GIT + remote: https://github.com/guange2015/grape-swagger-ui.git + revision: 4c33439f236c174ae0e774b3435ef2547995c21d + specs: + grape-swagger-ui (0.0.4) + railties (>= 3.1) + PATH remote: lib/better_errors specs: @@ -311,6 +318,7 @@ DEPENDENCIES grape (~> 0.9.0) grape-entity grape-swagger + grape-swagger-ui! guard-rails (~> 0.5.3) guard-spork (~> 1.5.1) guard-test (~> 1.0.0) diff --git a/config/application.rb b/config/application.rb index d37a9eae2..23d0c8a14 100644 --- a/config/application.rb +++ b/config/application.rb @@ -44,7 +44,7 @@ module RedmineApp config.filter_parameters += [:password] # Enable the asset pipeline - config.assets.enabled = false + config.assets.enabled = true # Version of your assets, change this if you want to expire all your assets config.assets.version = '1.0' From a8358a89db900e4cbf52e8a374b4b9905947fa93 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Thu, 11 Dec 2014 11:53:38 +0800 Subject: [PATCH 028/192] =?UTF-8?q?=E5=BC=80=E5=90=AFassets=E5=87=BA?= =?UTF-8?q?=E9=94=99,=E8=BF=98=E5=8E=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/application.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/application.rb b/config/application.rb index 23d0c8a14..d37a9eae2 100644 --- a/config/application.rb +++ b/config/application.rb @@ -44,7 +44,7 @@ module RedmineApp config.filter_parameters += [:password] # Enable the asset pipeline - config.assets.enabled = true + config.assets.enabled = false # Version of your assets, change this if you want to expire all your assets config.assets.version = '1.0' From 73ac2e562d85e0c5b2d5d96201c366a394d5639a Mon Sep 17 00:00:00 2001 From: z9hang Date: Thu, 11 Dec 2014 15:39:14 +0800 Subject: [PATCH 029/192] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/courses_controller.rb | 2 +- app/services/courses_service.rb | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 26b96eaf3..b7ff5364e 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -281,7 +281,7 @@ class CoursesController < ApplicationController @issue_custom_fields = IssueCustomField.sorted.all @trackers = Tracker.sorted.all - if @course.save + if @course.save #unless User.current.admin? r = Role.givable.find_by_id(Setting.new_project_user_role_id.to_i) || Role.givable.first m = Member.new(:user => User.current, :roles => [r]) diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index 0468de367..7e3302c5b 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -66,4 +66,21 @@ class CoursesService @members end + #课程通知列表 + def course_news_list params + if params[:course_id] && @course==nil + @course = Course.find(params[:course_id]) + end + scope = @course ? @course.news.course_visible : News.course_visible + end + + def show_course params + course = Course.find(params[:id]) + course + end + + def create_course + + end + end \ No newline at end of file From 18511817682f08f109c9719763046d5b0c5e63c5 Mon Sep 17 00:00:00 2001 From: z9hang Date: Thu, 11 Dec 2014 17:11:05 +0800 Subject: [PATCH 030/192] =?UTF-8?q?=E6=96=B0=E5=BB=BA=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/courses_controller.rb | 122 +++++++++++++++----------- app/services/courses_service.rb | 33 ++++++- 2 files changed, 104 insertions(+), 51 deletions(-) diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index b7ff5364e..375c6c06e 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -263,57 +263,79 @@ class CoursesController < ApplicationController end def create - if User.current.user_extensions.identity - @course = Course.new - @course.extra='course' + DateTime.parse(Time.now.to_s).strftime('%Y-%m-%d_%H-%M-%S').to_s - @course.safe_attributes = params[:course] - @course.tea_id = User.current.id - # added by bai - @course.term = params[:term] - @course.time = params[:time] - #@course.school_id = params[:occupation] - @course.school_id = User.current.user_extensions.school_id - @course.setup_time = params[:setup_time] - @course.endup_time = params[:endup_time] - @course.class_period = params[:class_period] - end - - @issue_custom_fields = IssueCustomField.sorted.all - @trackers = Tracker.sorted.all - - if @course.save - #unless User.current.admin? - r = Role.givable.find_by_id(Setting.new_project_user_role_id.to_i) || Role.givable.first - m = Member.new(:user => User.current, :roles => [r]) - m.project_id = -1 - course = CourseInfos.new(:user_id => User.current.id, :course_id => @course.id) - #user_grades = UserGrade.create(:user_id => User.current.id, :course_id => @course.id) - if params[:course][:is_public] == '1' - course_status = CourseStatus.create(:course_id => @course.id, :watchers_count => 0, :changesets_count => 0, :grade => 0, :course_type => @course_tag) - end - @course.members << m - @course.course_infos << course - #end - respond_to do |format| - format.html { - flash[:notice] = l(:notice_successful_create) - if params[:continue] - redirect_to new_course_url(attrs, :course => '0') - elsif params[:course_continue] - redirect_to new_course_url(:course => '1') - else - redirect_to settings_course_url(@course, :course_type => 1) + cs = CoursesService.new + @course = cs.create_course params + if @course.new_record? + respond_to do |format| + format.html { render :action => 'new', :layout => 'base' } #Added by young + format.api { render_validation_errors(@course) } + end + else + respond_to do |format| + format.html { + flash[:notice] = l(:notice_successful_create) + if params[:continue] + redirect_to new_course_url(attrs, :course => '0') + elsif params[:course_continue] + redirect_to new_course_url(:course => '1') + else + redirect_to settings_course_url(@course, :course_type => 1) + end + } + format.api { render :action => 'show', :status => :created, :location => url_for(:controller => 'courses', :action => 'show', :id => @course.id) } end - } - format.api { render :action => 'show', :status => :created, :location => url_for(:controller => 'courses', :action => 'show', :id => @course.id) } - end - else - #@course.destroy - respond_to do |format| - format.html { render :action => 'new', :layout => 'base' } #Added by young - format.api { render_validation_errors(@course) } - end - end + end + #if User.current.user_extensions.identity + # @course = Course.new + # @course.extra='course' + DateTime.parse(Time.now.to_s).strftime('%Y-%m-%d_%H-%M-%S').to_s + # @course.safe_attributes = params[:course] + # @course.tea_id = User.current.id + # # added by bai + # @course.term = params[:term] + # @course.time = params[:time] + # #@course.school_id = params[:occupation] + # @course.school_id = User.current.user_extensions.school_id + # @course.setup_time = params[:setup_time] + # @course.endup_time = params[:endup_time] + # @course.class_period = params[:class_period] + #end + # + #@issue_custom_fields = IssueCustomField.sorted.all + #@trackers = Tracker.sorted.all + # + #if @course.save + # #unless User.current.admin? + # r = Role.givable.find_by_id(Setting.new_project_user_role_id.to_i) || Role.givable.first + # m = Member.new(:user => User.current, :roles => [r]) + # m.project_id = -1 + # course = CourseInfos.new(:user_id => User.current.id, :course_id => @course.id) + # #user_grades = UserGrade.create(:user_id => User.current.id, :course_id => @course.id) + # if params[:course][:is_public] == '1' + # course_status = CourseStatus.create(:course_id => @course.id, :watchers_count => 0, :changesets_count => 0, :grade => 0, :course_type => @course_tag) + # end + # @course.members << m + # @course.course_infos << course + # #end + # respond_to do |format| + # format.html { + # flash[:notice] = l(:notice_successful_create) + # if params[:continue] + # redirect_to new_course_url(attrs, :course => '0') + # elsif params[:course_continue] + # redirect_to new_course_url(:course => '1') + # else + # redirect_to settings_course_url(@course, :course_type => 1) + # end + # } + # format.api { render :action => 'show', :status => :created, :location => url_for(:controller => 'courses', :action => 'show', :id => @course.id) } + # end + # else + # #@course.destroy + # respond_to do |format| + # format.html { render :action => 'new', :layout => 'base' } #Added by young + # format.api { render_validation_errors(@course) } + # end + # end end def course diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index 7e3302c5b..8d15a9671 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -79,8 +79,39 @@ class CoursesService course end - def create_course + #创建课程 + def create_course params + if User.current.user_extensions.identity + @course = Course.new + @course.extra = 'course' + DateTime.parse(Time.now.to_s).strftime('%Y-%m-%d_%H-%M-%S').to_s + @course.safe_attributes = params[:course] + @course.tea_id = User.current.id + @course.term = params[:term] + @course.time = params[:time] + #@course.school_id = params[:occupation] + @course.school_id = User.current.user_extensions.school_id + @course.setup_time = params[:setup_time] + @course.endup_time = params[:endup_time] + @course.class_period = params[:class_period] + end + + @issue_custom_fields = IssueCustomField.sorted.all + @trackers = Tracker.sorted.all + if @course.save + #unless User.current.admin? + r = Role.givable.find_by_id(Setting.new_project_user_role_id.to_i) || Role.givable.first + m = Member.new(:user => User.current, :roles => [r]) + m.project_id = -1 + course = CourseInfos.new(:user_id => User.current.id, :course_id => @course.id) + #user_grades = UserGrade.create(:user_id => User.current.id, :course_id => @course.id) + if params[:course][:is_public] == '1' + course_status = CourseStatus.create(:course_id => @course.id, :watchers_count => 0, :changesets_count => 0, :grade => 0, :course_type => @course_tag) + end + @course.members << m + @course.course_infos << course + end + @course end end \ No newline at end of file From 6c4d358b7e5f139e7659c7fad159e5bcd436ba30 Mon Sep 17 00:00:00 2001 From: z9hang Date: Fri, 12 Dec 2014 14:54:01 +0800 Subject: [PATCH 031/192] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E3=80=81=E9=80=80=E5=87=BA=E8=AF=BE=E7=A8=8B=E3=80=81=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E8=AF=BE=E7=A8=8B=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/courses_controller.rb | 130 +++++++++++++++----------- app/services/courses_service.rb | 64 +++++++++++++ 2 files changed, 141 insertions(+), 53 deletions(-) diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 375c6c06e..c1a7d9237 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -26,36 +26,38 @@ class CoursesController < ApplicationController def join if User.current.logged? - course = Course.find_by_id params[:object_id] - if course - if course_endTime_timeout? course - @state = 2 - else - if User.current.member_of_course?(course) - @state = 3 - else - if params[:course_password] == course.password - members = [] - members << Member.new(:role_ids => [10], :user_id => User.current.id) - course.members << members - StudentsForCourse.create(:student_id => User.current.id, :course_id => params[:object_id]) - @state = 0 - else - @state = 1 - end - end - end - else - @state = 4 - end + cs = CoursesService.new + @state,course = cs.join_course params + #course = Course.find_by_id params[:object_id] + #if course + # if course_endTime_timeout? course + # @state = 2 + # else + # if User.current.member_of_course?(course) + # @state = 3 + # else + # if params[:course_password] == course.password + # members = [] + # members << Member.new(:role_ids => [10], :user_id => User.current.id) + # course.members << members + # StudentsForCourse.create(:student_id => User.current.id, :course_id => params[:object_id]) + # @state = 0 + # else + # @state = 1 + # end + # end + # end + #else + # @state = 4 + #end else - @state = 5 + @state = 5 #未登录 end respond_to do |format| format.js { render :partial => 'set_join', :locals => {:user => User.current, :course => course, :object_id => params[:object_id]} } end rescue Exception => e - @state = 4 + @state = 4 #已经加入了课程 respond_to do |format| # format.html { redirect_to_referer_or {render :text => (watching ? 'Watcher added.' : 'Watcher removed.'), :layout => true}} format.js { render :partial => 'set_join', :locals => {:user => User.current, :course => nil, :object_id => nil} } @@ -64,15 +66,18 @@ class CoursesController < ApplicationController def unjoin if User.current.logged? - - @member = Member.where('course_id = ? and user_id = ?', params[:object_id], User.current.id) - @member.first.destroy - - joined = StudentsForCourse.where('student_id = ? and course_id = ?', User.current.id, params[:object_id]) - joined.each do |join| - join.delete - end + # + # @member = Member.where('course_id = ? and user_id = ?', params[:object_id], User.current.id) + # @member.first.destroy + # + # joined = StudentsForCourse.where('student_id = ? and course_id = ?', User.current.id, params[:object_id]) + # joined.each do |join| + # join.delete + # end + cs = CoursesService.new + cs.exit_course params,User.current end + respond_to do |format| # format.html { redirect_to_referer_or {render :text => (watching ? 'Watcher added.' : 'Watcher removed.'), :layout => true}} format.js { render :partial => 'set_join', :locals => {:user => User.current, :course => Course.find(params[:object_id]), :object_id => params[:object_id]} } @@ -87,27 +92,16 @@ class CoursesController < ApplicationController #更新课程信息 def update - @course.safe_attributes = params[:course] - @course.time = params[:time] - @course.term = params[:term] - @course.class_period = params[:class_period] - if @course.save - if params[:course][:is_public] == '0' - course_status = CourseStatus.find_by_course_id(@course.id) - course_status.destroy if course_status - elsif params[:course][:is_public] == '1' - course_status = CourseStatus.find_by_course_id(@course.id) - course_status.destroy if course_status - course_status = CourseStatus.create(:course_id => @course.id, :grade => 0) - end - - respond_to do |format| - format.html { - flash[:notice] = l(:notice_successful_update) - redirect_to settings_course_url(@course) - } - format.api { render_api_ok } - end + cs = CoursesService.new + @course = cs.edit_course params,@course + if @course.errors.full_messages.count <= 0 + respond_to do |format| + format.html { + flash[:notice] = l(:notice_successful_update) + redirect_to settings_course_url(@course) + } + format.api { render_api_ok } + end else respond_to do |format| format.html { @@ -117,6 +111,36 @@ class CoursesController < ApplicationController format.api { render_validation_errors(@course) } end end + #@course.safe_attributes = params[:course] + #@course.time = params[:time] + #@course.term = params[:term] + #@course.class_period = params[:class_period] + #if @course.save + # if params[:course][:is_public] == '0' + # course_status = CourseStatus.find_by_course_id(@course.id) + # course_status.destroy if course_status + # elsif params[:course][:is_public] == '1' + # course_status = CourseStatus.find_by_course_id(@course.id) + # course_status.destroy if course_status + # course_status = CourseStatus.create(:course_id => @course.id, :grade => 0) + # end + # + # respond_to do |format| + # format.html { + # flash[:notice] = l(:notice_successful_update) + # redirect_to settings_course_url(@course) + # } + # format.api { render_api_ok } + # end + #else + # respond_to do |format| + # format.html { + # settings + # render :action => 'settings' + # } + # format.api { render_validation_errors(@course) } + # end + #end end def new_join diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index 8d15a9671..4b1428b5f 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -114,4 +114,68 @@ class CoursesService @course end + #编辑课程 + def edit_course params,course + course.safe_attributes = params[:course] + course.time = params[:time] + course.term = params[:term] + course.class_period = params[:class_period] + if course.save + if params[:course][:is_public] == '0' + course_status = CourseStatus.find_by_course_id(course.id) + course_status.destroy if course_status + elsif params[:course][:is_public] == '1' + course_status = CourseStatus.find_by_course_id(course.id) + course_status.destroy if course_status + course_status = CourseStatus.create(:course_id => course.id, :grade => 0) + end + end + course + end + + #退出课程 + def exit_course params,user + @member = Member.where('course_id = ? and user_id = ?', params[:object_id], user.id) + @member.first.destroy + + joined = StudentsForCourse.where('student_id = ? and course_id = ?', user.id, params[:object_id]) + joined.each do |join| + join.delete + end + end + + #加入课程 + #@state == 0 加入成功 + #@state == 1 密码错误 + #@state == 2 课程已过期 请联系课程管理员重启课程。(在配置课程处) + #@state == 3 您已经加入了课程 + #@state == 4 您加入的课程不存在 + #@state == 5 您还未登录 + #@state 其他 未知错误,请稍后再试 + def join_course params + course = Course.find_by_id params[:object_id] + if course + if course_endTime_timeout? course + @state = 2 + else + if User.current.member_of_course?(course) + @state = 3 + else + if params[:course_password] == course.password + members = [] + members << Member.new(:role_ids => [10], :user_id => User.current.id) + course.members << members + StudentsForCourse.create(:student_id => User.current.id, :course_id => params[:object_id]) + @state = 0 + else + @state = 1 + end + end + end + else + @state = 4 + end + [@state,course] + end + end \ No newline at end of file From ee988b6ec5708ed169cf9005eddd3bb93776cbc5 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Sat, 13 Dec 2014 21:52:26 +0800 Subject: [PATCH 032/192] =?UTF-8?q?=E8=A1=A5=E5=85=A8=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E5=92=8C=E7=94=A8=E6=88=B7=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/courses.rb | 73 ++++++++++++++++++++++++++++++++++ app/api/mobile/apis/users.rb | 11 +++++ 2 files changed, 84 insertions(+) diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index 515ebce77..4920f6f30 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -16,6 +16,79 @@ module Mobile present :status, 0 end + desc "新建课程[TODO,参数没弄清]" + params do + end + post do + end + + desc "编辑课程[TODO,参数没弄清]" + params do + end + post do + end + + desc "加入课程" + params do + end + post ":id" do + authenticate! + cs = CoursesService.new + status = cs.join_course({"object_id" => params[:id]},current_user.id) + out = {status: status} + message = case status + when 0; "加入成功" + when 1; "密码错误" + when 2; "课程已过期 请联系课程管理员重启课程。(在配置课程处)" + when 3; "您已经加入了课程" + when 4; "您加入的课程不存在" + when 5; "您还未登录" + else; "未知错误,请稍后再试" + end + out.merge(message: message) + end + + desc "退出课程" + params do + end + delete ":id" do + authenticate! + cs = CoursesService.new + cs.exit_course({"object_id" => params[:id]}, current_user.id) + {status: 0} + end + + desc "搜索课程" + params do + requires :name, type: String, desc: "课程名" + end + get 'search' do + cs = CoursesService.new + courses = cs.search_course(params) + present :data, courses, with: Mobile::Entities::Course + present :status, 0 + end + + desc "课程老师列表" + params do + requires :course_id, type: Integer, desc: "课程id" + end + get 'teachers' do + cs = CoursesService.new + teachers = cs.course_teacher_or_student_list({role: 1}, params[:course_id]) + {status: 0, data: teachers} + end + + desc "课程学生列表" + params do + requires :course_id, type: Integer, desc: "课程id" + end + get 'teachers' do + cs = CoursesService.new + teachers = cs.course_teacher_or_student_list({role: 2}, params[:course_id]) + {status: 0, data: teachers} + end + desc "返回单个课程" params do requires :id, type: Integer diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index 6e2952290..f31f1d834 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -53,6 +53,17 @@ module Mobile present :status, 0 end + desc "用户搜索" + params do + requires :name, type: String, desc: '用户名关键字' + end + get 'search' do + us = UsersService.new + user = us.search_user params + present :data, user, with: Mobile::Entities::User + present :status, 0 + end + end end end From efa08adf4ee9c02e8bca48bee6dd5139b45b37b9 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Sun, 14 Dec 2014 21:01:23 +0800 Subject: [PATCH 033/192] =?UTF-8?q?=E8=AE=A4=E8=AF=81=E7=94=A8=E6=99=AE?= =?UTF-8?q?=E9=80=9A=E6=A8=A1=E5=BC=8F=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/api.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb index d3fe414a4..8a64673e0 100644 --- a/app/api/mobile/api.rb +++ b/app/api/mobile/api.rb @@ -12,7 +12,7 @@ module Mobile end def authenticate! - error!('Unauthorized. Invalid or expired token.', 401) unless current_user + raise 'Unauthorized. Invalid or expired token.' unless current_user end def current_user From 95d8c1a09d2b95764c5ef5beae1b9db3b10adeb9 Mon Sep 17 00:00:00 2001 From: z9hang Date: Mon, 15 Dec 2014 10:41:09 +0800 Subject: [PATCH 034/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E6=88=90=E5=91=98=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=9D=83=E9=99=90=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/courses.rb | 4 ++-- app/controllers/courses_controller.rb | 7 ++++++- app/services/courses_service.rb | 18 +++++++++++++----- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index 4920f6f30..1b863cd22 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -75,7 +75,7 @@ module Mobile end get 'teachers' do cs = CoursesService.new - teachers = cs.course_teacher_or_student_list({role: 1}, params[:course_id]) + teachers = cs.course_teacher_or_student_list({role: 1}, params[:course_id],current_user) {status: 0, data: teachers} end @@ -85,7 +85,7 @@ module Mobile end get 'teachers' do cs = CoursesService.new - teachers = cs.course_teacher_or_student_list({role: 2}, params[:course_id]) + teachers = cs.course_teacher_or_student_list({role: 2}, params[:course_id],current_user) {status: 0, data: teachers} end diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index c1a7d9237..564033627 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -245,9 +245,14 @@ class CoursesController < ApplicationController #@members = @course.member_principals.includes(:roles, :principal).all.sort end cs = CoursesService.new - @members = cs.course_teacher_or_student_list(params,@course) + @members = cs.course_teacher_or_student_list(params,@course,User.current) @members = paginateHelper @members render :layout => 'base_courses' + + rescue Exception => e + if e.message == '403' + render_403 + end end #判断指定用户是否为课程教师 diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index 4b1428b5f..acd8793cb 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -49,19 +49,27 @@ class CoursesService end #课程老师或课程学生列表 - def course_teacher_or_student_list params,course - @teachers= searchTeacherAndAssistant(course) + def course_teacher_or_student_list params,course,current_user + if course.is_a?(Course) + c = course + else + c = Course.find(course) + end + if !(current_user.admin? || c.is_public == 1 || (c.is_public == 0 && current_user.member_of_course?(c))) + raise '403' + end + @teachers= searchTeacherAndAssistant(c) #@canShowCode = isCourseTeacher(User.current.id,course) && params[:role] != '1' case params[:role] when '1' #@subPage_title = l :label_teacher_list - @members = searchTeacherAndAssistant(course) + @members = searchTeacherAndAssistant(c) when '2' #@subPage_title = l :label_student_list - @members = searchStudent(course) + @members = searchStudent(c) else #@subPage_title = '' - @members = @course.member_principals.includes(:roles, :principal).all.sort + @members = c.member_principals.includes(:roles, :principal).all.sort end @members end From 36967eeec0aee269a8417b562f45488029f0051c Mon Sep 17 00:00:00 2001 From: z9hang Date: Mon, 15 Dec 2014 13:44:26 +0800 Subject: [PATCH 035/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E3=80=81=E6=B7=BB=E5=8A=A0=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/account_controller.rb | 1 + app/helpers/account_helper.rb | 2 +- app/services/courses_service.rb | 21 ++++++++++++++++++++- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/app/controllers/account_controller.rb b/app/controllers/account_controller.rb index 6102160b3..c0322e0cb 100644 --- a/app/controllers/account_controller.rb +++ b/app/controllers/account_controller.rb @@ -124,6 +124,7 @@ class AccountController < ApplicationController when '1' #register_by_email_activation(@user) unless @user.new_record? + flash[:notice] = l(:notice_account_register_done) render action: 'email_valid', locals: {:mail => user.mail} end when '3' diff --git a/app/helpers/account_helper.rb b/app/helpers/account_helper.rb index 3be096492..8ef2d6095 100644 --- a/app/helpers/account_helper.rb +++ b/app/helpers/account_helper.rb @@ -24,7 +24,7 @@ module AccountHelper if user.save and token.save UserStatus.create(:user_id => user.id, :changsets_count => 0, :watchers_count => 0) Mailer.register(token).deliver - flash[:notice] = l(:notice_account_register_done) + #flash[:notice] = l(:notice_account_register_done) #render action: 'email_valid', locals: {:mail => user.mail} else yield if block_given? diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index acd8793cb..bb36f3cb3 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -1,6 +1,7 @@ class CoursesService include ApplicationHelper include CoursesHelper + #TODO:尚未整合权限系统 #参数school_id为0或不传时返回所有课程,否则返回对应学校的课程 #参数per_page_count分页功能,每页显示的课程数 #参数page分页功能,当前页码 @@ -48,7 +49,7 @@ class CoursesService url_to_avatar(obj) end - #课程老师或课程学生列表 + #课程老师或课程学生列表 TODO:更新业务逻辑,当前版本未包含分班功能 def course_teacher_or_student_list params,course,current_user if course.is_a?(Course) c = course @@ -82,6 +83,11 @@ class CoursesService scope = @course ? @course.news.course_visible : News.course_visible end + #显示课程通知 + def show_course_news + + end + def show_course params course = Course.find(params[:id]) course @@ -186,4 +192,17 @@ class CoursesService [@state,course] end + #作业列表 + #已提交的作业数量获取 bid.homeworks.count + #学生提问数量获取 bid.commit.nil? ? 0 : bid.commit + def homework_list params,current_user + if @course.is_public != 0 || current_user.member_of_course?(@course) + @offset, @limit = api_offset_and_limit({:limit => 10}) + @bids = @course.homeworks.order('deadline DESC') + @bids = @bids.like(params[:name]) if params[:name].present? + else + raise '403' + end + end + end \ No newline at end of file From 6cb3f9e53c7244d7cb99e7b1a5759bdd69046783 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Mon, 15 Dec 2014 14:06:00 +0800 Subject: [PATCH 036/192] =?UTF-8?q?=E6=B3=A8=E5=86=8C=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=97=B6=E5=A5=BD=E5=A4=9A=E7=94=A8=E6=88=B7=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=EF=BC=8C=E9=BB=98=E8=AE=A4=E4=B8=BAnull?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/api.rb | 2 +- app/api/mobile/apis/users.rb | 2 ++ app/api/mobile/entities/user.rb | 20 +++++++++++++------- app/api/mobile/middleware/error_handler.rb | 3 ++- 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb index 8a64673e0..064641de3 100644 --- a/app/api/mobile/api.rb +++ b/app/api/mobile/api.rb @@ -12,7 +12,7 @@ module Mobile end def authenticate! - raise 'Unauthorized. Invalid or expired token.' unless current_user + raise('Unauthorized. Invalid or expired token.') unless current_user end def current_user diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index f31f1d834..8cf37e66a 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -14,7 +14,9 @@ module Mobile us = UsersService.new user = us.register params.merge(:password_confirmation => params[:password], :should_confirmation_password => true) + binding.pry raise "register failed #{user.errors.full_messages}" if user.new_record? + present :data, user, with: Mobile::Entities::User present :status, 0 end diff --git a/app/api/mobile/entities/user.rb b/app/api/mobile/entities/user.rb index 38230b7a0..3c3356b46 100644 --- a/app/api/mobile/entities/user.rb +++ b/app/api/mobile/entities/user.rb @@ -1,22 +1,28 @@ module Mobile module Entities class User < Grape::Entity - expose :id + def self.user_expose(f) + expose f do |u,opt| + u.send(f) if u.respond_to?(f) + end + end + + expose :id #头像 - expose :img_url + user_expose :img_url #昵称 expose :nickname #性别 - expose :gender + user_expose :gender #我的二维码 #工作单位 - expose :work_unit + user_expose :work_unit #邮箱地址 - expose :mail + user_expose :mail #地区 - expose :location + user_expose :location #签名 - expose :brief_introduction + user_expose :brief_introduction end end diff --git a/app/api/mobile/middleware/error_handler.rb b/app/api/mobile/middleware/error_handler.rb index 3cbc74bd6..d0db6ebf1 100644 --- a/app/api/mobile/middleware/error_handler.rb +++ b/app/api/mobile/middleware/error_handler.rb @@ -7,6 +7,7 @@ module Mobile @app.call(@env) rescue =>e message = {status: 1, message: e.message }.to_json + puts(detail: e.backtrace.join("\n")) if Rails.env.development? status = 200 headers = { 'Content-Type' => content_type } Rack::Response.new([message], status, headers).finish @@ -15,4 +16,4 @@ module Mobile end end end -end \ No newline at end of file +end From 7f9386180db2df94400bc83e814016081a6e2ecb Mon Sep 17 00:00:00 2001 From: z9han Date: Mon, 15 Dec 2014 16:53:20 +0800 Subject: [PATCH 037/192] =?UTF-8?q?=E9=83=A8=E5=88=86=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9D=83=E9=99=90=E9=AA=8C=E8=AF=81=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E3=80=81=E6=96=B0=E9=97=BB=E8=AF=A6=E6=83=85=E5=8F=8A?= =?UTF-8?q?=E5=AF=B9=E5=BA=94=E8=AF=84=E8=AE=BA=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/courses.rb | 4 +++- app/controllers/news_controller.rb | 6 ++++-- app/services/courses_service.rb | 31 ++++++++++++++++++++++++++---- app/services/users_service.rb | 1 + 4 files changed, 35 insertions(+), 7 deletions(-) diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index 1b863cd22..21fec6241 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -95,7 +95,9 @@ module Mobile end route_param :id do get do - course = Course.find(params[:id]) + cs = CoursesService.new + course = cs.show_course params,current_user + #course = Course.find(params[:id]) {status: 0, data: course} end end diff --git a/app/controllers/news_controller.rb b/app/controllers/news_controller.rb index f1d97cbe7..868540b64 100644 --- a/app/controllers/news_controller.rb +++ b/app/controllers/news_controller.rb @@ -87,8 +87,10 @@ class NewsController < ApplicationController end def show - @comments = @news.comments - @comments.reverse! if User.current.wants_comments_in_reverse_order? + cs = CoursesService.new + @news,@comments = cs.show_course_news params,User.current + #@comments = @news.comments + #@comments.reverse! if User.current.wants_comments_in_reverse_order? #modify by nwb if @news.course_id @course = Course.find(@news.course_id) diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index bb36f3cb3..09e4289b5 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -83,13 +83,29 @@ class CoursesService scope = @course ? @course.news.course_visible : News.course_visible end - #显示课程通知 - def show_course_news + #查看新闻权限验证 + def show_course_news_authorize(current_user,course) + unless current_user.allowed_to?({:controller => 'news', :action => 'show'}, course) + raise '403' + end + end + #显示课程通知(包括评论) 需验证权限 + def show_course_news params,current_user + @news = News.find(params[:id]) + @comments = @news.comments + @comments.reverse! if current_user.wants_comments_in_reverse_order? + [@news,@comments] end - def show_course params + + + #显示课程 + def show_course(params,currnet_user) course = Course.find(params[:id]) + unless (course.is_public == 1 || currnet_user.member_of_course?(@course)|| currnet_user.admin?) + raise '403' + end course end @@ -128,7 +144,14 @@ class CoursesService @course end - #编辑课程 + #验证编辑课程的权限 + def edit_course_authorize(current_user,course) + unless current_user.allowed_to?({:controller => 'courses', :action => 'update'}, course) + raise '403' + end + end + + #编辑课程 需验证权限 def edit_course params,course course.safe_attributes = params[:course] course.time = params[:time] diff --git a/app/services/users_service.rb b/app/services/users_service.rb index d281edb19..928ae99ad 100644 --- a/app/services/users_service.rb +++ b/app/services/users_service.rb @@ -59,6 +59,7 @@ class UsersService end #编辑用户 + #gender 1:female 0:male 其他:male def edit_user params @user = User.find(params[:id]) fileio = params[:file] From 4df9544770d48e6598132e96722e9744c54296ab Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Mon, 15 Dec 2014 20:17:35 +0800 Subject: [PATCH 038/192] =?UTF-8?q?=E5=85=B3=E6=B3=A8=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/users.rb | 1 - app/api/mobile/apis/watches.rb | 5 +++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index 8cf37e66a..ab74c16e6 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -14,7 +14,6 @@ module Mobile us = UsersService.new user = us.register params.merge(:password_confirmation => params[:password], :should_confirmation_password => true) - binding.pry raise "register failed #{user.errors.full_messages}" if user.new_record? present :data, user, with: Mobile::Entities::User diff --git a/app/api/mobile/apis/watches.rb b/app/api/mobile/apis/watches.rb index 4e8510d89..bbe48cccf 100644 --- a/app/api/mobile/apis/watches.rb +++ b/app/api/mobile/apis/watches.rb @@ -12,7 +12,8 @@ module Mobile authenticate! us = UsersService.new ws = us.user_watcher(id: current_user.id) - {status: 0, data: ws } + present :data, ws, with: Mobile::Entities::User + present :status, 0 end @@ -44,4 +45,4 @@ module Mobile end end end -end \ No newline at end of file +end From 428d1b6415e9263236f59869931df5128f6d5703 Mon Sep 17 00:00:00 2001 From: = Date: Wed, 17 Dec 2014 14:50:57 +0800 Subject: [PATCH 039/192] =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E3=80=81=E4=BD=9C=E4=B8=9A=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E3=80=81=E4=BD=9C=E5=93=81=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/homework_service.rb | 63 +++++++ app/services/users_service.rb | 300 ++++++++++++++++--------------- 2 files changed, 221 insertions(+), 142 deletions(-) create mode 100644 app/services/homework_service.rb diff --git a/app/services/homework_service.rb b/app/services/homework_service.rb new file mode 100644 index 000000000..f40c4f0ef --- /dev/null +++ b/app/services/homework_service.rb @@ -0,0 +1,63 @@ +class HomeworkService + + #作业详情(老师才显示启动匿评,学生不显示 ) + #bid.comment_status=0 启动匿评 + #bid.comment_status=1 关闭匿评 + #many_times 第几次(作业) + #is_teacher 判断是否为该课程老师 + def show_homework params + @bid = Bid.find(params[:id]) + course = @bid.courses.first + is_teacher = is_course_teacher(User.current,course) + author = @bid.author.firstname + @bid.author.lastname + many_times = course.homeworks.index(@bid) + 1 + name = @bid.name + homework_count = @bid.homeworks.count + description = @bid.description + if is_teacher && bid.open_anonymous_evaluation == 1 && bid.homeworks.count >= 2 + case bid.comment_status + when 0 + alert_anonymous_comment_bid_path(bid) + when 1 + alert_anonymous_comment_bid_path(bid) + when 2 + raise '匿评结束' + end + end + end + + #启动作业匿评 + def alert_homework_anonymous_comment params + @bid = Bid.find params[:id] + @course = @bid.courses.first + if @bid.comment_status == 0 + @totle_size = searchStudent(@course).size + @cur_size = @bid.homeworks.size + elsif @bid.comment_status == 1 + @totle_size = 0 + @bid.homeworks.map { |homework| @totle_size += homework.homework_evaluations.count} + teachers = "(" + teacher_members = searchTeacherAndAssistant(@course) + teacher_members.each do |member| + if member == teacher_members.last + teachers += member.user_id.to_s + ")" + else + teachers += member.user_id.to_s + "," + end + end + @cur_size = 0 + @bid.homeworks.map { |homework| @cur_size += homework.rates(:quality).where("seems_rateable_rates.rater_id not in #{teachers}").count} + end + @percent = format("%.2f",(@cur_size.to_f / ( @totle_size == 0 ? 1 : @totle_size)) * 100) + end + + #匿评作品详情 + def anonymous_works_show params + @homework = HomeworkAttach.find(params[:id]) + if User.current.admin? || User.current.member_of_course?(@homework.bid.courses.first) + + end + end + + # +end \ No newline at end of file diff --git a/app/services/users_service.rb b/app/services/users_service.rb index 928ae99ad..9fb698056 100644 --- a/app/services/users_service.rb +++ b/app/services/users_service.rb @@ -1,142 +1,158 @@ -class UsersService - include ApplicationHelper - include AccountHelper - include AvatarHelper - #将用户注册的功能函数写这里 - #参数约定 - #成功返回注册后的User实例,失败直接抛异常 - - def register(params) - @user = User.new - @user.admin = false - @user.register - @user.login = params[:login] - @user.mail = params[:mail] - password = params[:password] - password_confirmation = params[:password_confirmation] - should_confirmation_password = params[:should_confirmation_password] - if !password.blank? && !password_confirmation.blank? && should_confirmation_password - @user.password, @user.password_confirmation = password, password_confirmation - elsif !password.blank? && !should_confirmation_password - @user.password = password - else - @user.password = "" - end - case Setting.self_registration - when '1' - @user = email_activation_register(@user) - when '3' - @user = automatically_register(@user) - else - @user = administrator_manually__register(@user) - end - if @user.id != nil - ue = @user.user_extensions ||= UserExtensions.new - ue.user_id = @user.id - ue.save - end - @user - end - - #显示用户 - #id用户id - def show_user(params) - @user = User.find(params[:id]) - img_url = url_to_avatar(@user) - gender = @user.user_extensions.gender.nil? ? 0 : @user.user_extensions.gender - work_unit = "" - if @user.user_extensions.identity == 0 || @user.user_extensions.identity == 1 - work_unit = @user.user_extensions.school.name unless @user.user_extensions.school.nil? - elsif @user.user_extensions.identity == 3 - work_unit = @user.user_extensions.occupation - elsif @user.user_extensions.identity == 2 - work_unit = @user.firstname - end - location = "" - location << (@user.user_extensions.location || '') - location << (@user.user_extensions.location_city || '') - {:id => @user.id, :img_url => img_url, :nickname => @user.login, :gender => gender, :work_unit => work_unit, :mail => @user.mail, :location => location, :brief_introduction => @user.user_extensions.brief_introduction} - end - - #编辑用户 - #gender 1:female 0:male 其他:male - def edit_user params - @user = User.find(params[:id]) - fileio = params[:file] - - @se = @user.extensions - if @user.user_extensions.identity == 0 || @user.user_extensions.identity == 1 - @se.school_id = params[:occupation] - elsif @user.user_extensions.identity == 3 - @se.occupation = params[:occupation] - elsif @user.user_extensions.identity == 2 - @user.firstname = params[:occupation] - end - @se.brief_introduction = params[:brief_introduction] - @se.gender = params[:gender] - @se.location = params[:province] if params[:province] - @se.location_city = params[:city] if params[:city] - raise @se.errors.full_message unless @se.save - unless fileio.nil? - file = fileio[:tempfile] - diskfile=disk_filename(@user.class.to_s, @user.id) - @image_file = fileio[:name] - @urlfile='/' << File.join("images", "avatars", avatar_directory(@user.class.to_s), avatar_filename(@user.id, @image_file)) - - path = File.dirname(diskfile) - unless File.directory?(path) - FileUtils.mkdir_p(path) - end - File.rename(file.path, @urlfile) - begin - f = Magick::ImageList.new(diskfile) - # gif格式不再做大小处理 - if f.format != 'GIF' - width = 300.0 - proportion = (width/f[0].columns) - height = (f[0].rows*proportion) - f.resize_to_fill!(width, height) - f.write(diskfile) - end - - rescue Exception => e - logger.error "[Error] avatar : users_service#edit_user ===> #{e}" - end - end - @se - end - - #关注列表 - def user_watcher params - @user = User.find(params[:id]) - User.watched_by(@user.id) - end - - #修改密码 - def change_password params - @current_user = User.find(params[:current_user_id]) - if @current_user.check_password?(params[:password]) - @current_user.password, @current_user.password_confirmation = params[:new_password], params[:new_password_confirmation] - @current_user.save - #raise @current_user.errors.full_message - #return @current_user - - else - raise 'wrong password' - end - @current_user - end - - #搜索用户 - def search_user params - @status = params[:status] || 1 - has = { - "show_changesets" => true - } - scope = User.logged.status(@status) - @search_by = params[:search_by] ? params[:search_by][:id] : 0 - scope = scope.like(params[:name],@search_by) if params[:name].present? - scope - end - -end +class UsersService + include ApplicationHelper + include AccountHelper + include AvatarHelper + include CoursesHelper + #将用户注册的功能函数写这里 + #参数约定 + #成功返回注册后的User实例,失败直接抛异常 + + def register(params) + @user = User.new + @user.admin = false + @user.register + @user.login = params[:login] + @user.mail = params[:mail] + password = params[:password] + password_confirmation = params[:password_confirmation] + should_confirmation_password = params[:should_confirmation_password] + if !password.blank? && !password_confirmation.blank? && should_confirmation_password + @user.password, @user.password_confirmation = password, password_confirmation + elsif !password.blank? && !should_confirmation_password + @user.password = password + else + @user.password = "" + end + case Setting.self_registration + when '1' + @user = email_activation_register(@user) + when '3' + @user = automatically_register(@user) + else + @user = administrator_manually__register(@user) + end + if @user.id != nil + ue = @user.user_extensions ||= UserExtensions.new + ue.user_id = @user.id + ue.save + end + @user + end + + #显示用户 + #id用户id + def show_user(params) + @user = User.find(params[:id]) + img_url = url_to_avatar(@user) + gender = @user.user_extensions.gender.nil? ? 0 : @user.user_extensions.gender + work_unit = "" + if @user.user_extensions.identity == 0 || @user.user_extensions.identity == 1 + work_unit = @user.user_extensions.school.name unless @user.user_extensions.school.nil? + elsif @user.user_extensions.identity == 3 + work_unit = @user.user_extensions.occupation + elsif @user.user_extensions.identity == 2 + work_unit = @user.firstname + end + location = "" + location << (@user.user_extensions.location || '') + location << (@user.user_extensions.location_city || '') + {:id => @user.id, :img_url => img_url, :nickname => @user.login, :gender => gender, :work_unit => work_unit, :mail => @user.mail, :location => location, :brief_introduction => @user.user_extensions.brief_introduction} + end + + #编辑用户 + #gender 1:female 0:male 其他:male + def edit_user params + @user = User.find(params[:id]) + fileio = params[:file] + + @se = @user.extensions + if @user.user_extensions.identity == 0 || @user.user_extensions.identity == 1 + @se.school_id = params[:occupation] + elsif @user.user_extensions.identity == 3 + @se.occupation = params[:occupation] + elsif @user.user_extensions.identity == 2 + @user.firstname = params[:occupation] + end + @se.brief_introduction = params[:brief_introduction] + @se.gender = params[:gender] + @se.location = params[:province] if params[:province] + @se.location_city = params[:city] if params[:city] + raise @se.errors.full_message unless @se.save + unless fileio.nil? + file = fileio[:tempfile] + diskfile=disk_filename(@user.class.to_s, @user.id) + @image_file = fileio[:name] + @urlfile='/' << File.join("images", "avatars", avatar_directory(@user.class.to_s), avatar_filename(@user.id, @image_file)) + + path = File.dirname(diskfile) + unless File.directory?(path) + FileUtils.mkdir_p(path) + end + File.rename(file.path, @urlfile) + begin + f = Magick::ImageList.new(diskfile) + # gif格式不再做大小处理 + if f.format != 'GIF' + width = 300.0 + proportion = (width/f[0].columns) + height = (f[0].rows*proportion) + f.resize_to_fill!(width, height) + f.write(diskfile) + end + + rescue Exception => e + logger.error "[Error] avatar : users_service#edit_user ===> #{e}" + end + end + @se + end + + #关注列表 + def user_watcher params + @user = User.find(params[:id]) + User.watched_by(@user.id) + end + + #用户课程列表 + def user_courses_list params + if !User.current.admin? && !@user.active? + raise '404' + return + end + if User.current == @user || User.current.admin? + membership = @user.coursememberships.all + else + membership = @user.coursememberships.all(:conditions => Course.visible_condition(User.current)) + end + membership.sort! {|older, newer| newer.created_on <=> older.created_on } + membership + end + + #修改密码 + def change_password params + @current_user = User.find(params[:current_user_id]) + if @current_user.check_password?(params[:password]) + @current_user.password, @current_user.password_confirmation = params[:new_password], params[:new_password_confirmation] + @current_user.save + #raise @current_user.errors.full_message + #return @current_user + + else + raise 'wrong password' + end + @current_user + end + + #搜索用户 + def search_user params + @status = params[:status] || 1 + has = { + "show_changesets" => true + } + scope = User.logged.status(@status) + @search_by = params[:search_by] ? params[:search_by][:id] : 0 + scope = scope.like(params[:name],@search_by) if params[:name].present? + scope + end + +end From 03f2c9c19247e8d489c0f66236f00be61126abd2 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Thu, 18 Dec 2014 13:37:23 +0800 Subject: [PATCH 040/192] =?UTF-8?q?=E5=85=B3=E6=B3=A8=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E8=A7=84=E8=8C=83=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/watches.rb | 5 +- db/schema.rb | 2668 ++++++++++++++++---------------- 2 files changed, 1343 insertions(+), 1330 deletions(-) diff --git a/app/api/mobile/apis/watches.rb b/app/api/mobile/apis/watches.rb index bbe48cccf..1603b311a 100644 --- a/app/api/mobile/apis/watches.rb +++ b/app/api/mobile/apis/watches.rb @@ -25,8 +25,9 @@ module Mobile post do authenticate! ws = WatchesService.new - o = ws.watch(params.merge({current_user_id:current_user.id, object_type:'user' }) ) - {status:0, data: o} + o = ws.watch(params.merge({current_user_id:current_user.id, object_type:'user' }) ) + present :data, o, with: Mobile::Entities::User + present :status, 0 end diff --git a/db/schema.rb b/db/schema.rb index f12d6ad0a..c63ebb981 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -1,1328 +1,1340 @@ -# encoding: UTF-8 -# This file is auto-generated from the current state of the database. Instead -# of editing this file, please use the migrations feature of Active Record to -# incrementally modify your database, and then regenerate this schema definition. -# -# Note that this schema.rb definition is the authoritative source for your -# database schema. If you need to create the application database on another -# system, you should be using db:schema:load, not running all the migrations -# from scratch. The latter is a flawed and unsustainable approach (the more migrations -# you'll amass, the slower it'll run and the greater likelihood for issues). -# -# It's strongly recommended to check this file into your version control system. - -ActiveRecord::Schema.define(:version => 20141201085218) do - - create_table "activities", :force => true do |t| - t.integer "act_id", :null => false - t.string "act_type", :null => false - t.integer "user_id", :null => false - end - - add_index "activities", ["act_id", "act_type"], :name => "index_activities_on_act_id_and_act_type" - add_index "activities", ["user_id", "act_type"], :name => "index_activities_on_user_id_and_act_type" - add_index "activities", ["user_id"], :name => "index_activities_on_user_id" - - create_table "applied_projects", :force => true do |t| - t.integer "project_id", :null => false - t.integer "user_id", :null => false - end - - create_table "apply_project_masters", :force => true do |t| - t.integer "user_id" - t.string "apply_type" - t.integer "apply_id" - t.integer "status" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "attachments", :force => true do |t| - t.integer "container_id" - t.string "container_type", :limit => 30 - t.string "filename", :default => "", :null => false - t.string "disk_filename", :default => "", :null => false - t.integer "filesize", :default => 0, :null => false - t.string "content_type", :default => "" - t.string "digest", :limit => 40, :default => "", :null => false - t.integer "downloads", :default => 0, :null => false - t.integer "author_id", :default => 0, :null => false - t.datetime "created_on" - t.string "description" - t.string "disk_directory" - t.integer "attachtype", :default => 1 - t.integer "is_public", :default => 1 - t.integer "copy_from" - t.integer "quotes" - end - - add_index "attachments", ["author_id"], :name => "index_attachments_on_author_id" - add_index "attachments", ["container_id", "container_type"], :name => "index_attachments_on_container_id_and_container_type" - add_index "attachments", ["created_on"], :name => "index_attachments_on_created_on" - - create_table "attachmentstypes", :force => true do |t| - t.integer "typeId", :null => false - t.string "typeName", :limit => 50 - end - - create_table "auth_sources", :force => true do |t| - t.string "type", :limit => 30, :default => "", :null => false - t.string "name", :limit => 60, :default => "", :null => false - t.string "host", :limit => 60 - t.integer "port" - t.string "account" - t.string "account_password", :default => "" - t.string "base_dn" - t.string "attr_login", :limit => 30 - t.string "attr_firstname", :limit => 30 - t.string "attr_lastname", :limit => 30 - t.string "attr_mail", :limit => 30 - t.boolean "onthefly_register", :default => false, :null => false - t.boolean "tls", :default => false, :null => false - t.string "filter" - t.integer "timeout" - end - - add_index "auth_sources", ["id", "type"], :name => "index_auth_sources_on_id_and_type" - - create_table "biding_projects", :force => true do |t| - t.integer "project_id" - t.integer "bid_id" - t.integer "user_id" - t.string "description" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "reward" - end - - create_table "bids", :force => true do |t| - t.string "name" - t.string "budget", :null => false - t.integer "author_id" - t.date "deadline" - t.text "description" - t.datetime "created_on", :null => false - t.datetime "updated_on", :null => false - t.integer "commit" - t.integer "reward_type" - t.integer "homework_type" - t.integer "parent_id" - t.string "password" - t.integer "is_evaluation" - t.integer "proportion", :default => 60 - t.integer "comment_status", :default => 0 - t.integer "evaluation_num", :default => 3 - t.integer "open_anonymous_evaluation", :default => 1 - end - - create_table "boards", :force => true do |t| - t.integer "project_id", :null => false - t.string "name", :default => "", :null => false - t.string "description" - t.integer "position", :default => 1 - t.integer "topics_count", :default => 0, :null => false - t.integer "messages_count", :default => 0, :null => false - t.integer "last_message_id" - t.integer "parent_id" - t.integer "course_id" - end - - add_index "boards", ["last_message_id"], :name => "index_boards_on_last_message_id" - add_index "boards", ["project_id"], :name => "boards_project_id" - - create_table "bug_to_osps", :force => true do |t| - t.integer "osp_id" - t.integer "relative_memo_id" - t.string "description" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "changes", :force => true do |t| - t.integer "changeset_id", :null => false - t.string "action", :limit => 1, :default => "", :null => false - t.text "path", :null => false - t.text "from_path" - t.string "from_revision" - t.string "revision" - t.string "branch" - end - - add_index "changes", ["changeset_id"], :name => "changesets_changeset_id" - - create_table "changeset_parents", :id => false, :force => true do |t| - t.integer "changeset_id", :null => false - t.integer "parent_id", :null => false - end - - add_index "changeset_parents", ["changeset_id"], :name => "changeset_parents_changeset_ids" - add_index "changeset_parents", ["parent_id"], :name => "changeset_parents_parent_ids" - - create_table "changesets", :force => true do |t| - t.integer "repository_id", :null => false - t.string "revision", :null => false - t.string "committer" - t.datetime "committed_on", :null => false - t.text "comments" - t.date "commit_date" - t.string "scmid" - t.integer "user_id" - end - - add_index "changesets", ["committed_on"], :name => "index_changesets_on_committed_on" - add_index "changesets", ["repository_id", "revision"], :name => "changesets_repos_rev", :unique => true - add_index "changesets", ["repository_id", "scmid"], :name => "changesets_repos_scmid" - add_index "changesets", ["repository_id"], :name => "index_changesets_on_repository_id" - add_index "changesets", ["user_id"], :name => "index_changesets_on_user_id" - - create_table "changesets_issues", :id => false, :force => true do |t| - t.integer "changeset_id", :null => false - t.integer "issue_id", :null => false - end - - add_index "changesets_issues", ["changeset_id", "issue_id"], :name => "changesets_issues_ids", :unique => true - - create_table "code_review_assignments", :force => true do |t| - t.integer "issue_id" - t.integer "change_id" - t.integer "attachment_id" - t.string "file_path" - t.string "rev" - t.string "rev_to" - t.string "action_type" - t.integer "changeset_id" - end - - create_table "code_review_project_settings", :force => true do |t| - t.integer "project_id" - t.integer "tracker_id" - t.datetime "created_at" - t.datetime "updated_at" - t.integer "updated_by" - t.boolean "hide_code_review_tab", :default => false - t.integer "auto_relation", :default => 1 - t.integer "assignment_tracker_id" - t.text "auto_assign" - t.integer "lock_version", :default => 0, :null => false - t.boolean "tracker_in_review_dialog", :default => false - end - - create_table "code_review_user_settings", :force => true do |t| - t.integer "user_id", :default => 0, :null => false - t.integer "mail_notification", :default => 0, :null => false - t.datetime "created_at" - t.datetime "updated_at" - end - - create_table "code_reviews", :force => true do |t| - t.integer "project_id" - t.integer "change_id" - t.datetime "created_at" - t.datetime "updated_at" - t.integer "line" - t.integer "updated_by_id" - t.integer "lock_version", :default => 0, :null => false - t.integer "status_changed_from" - t.integer "status_changed_to" - t.integer "issue_id" - t.string "action_type" - t.string "file_path" - t.string "rev" - t.string "rev_to" - t.integer "attachment_id" - t.integer "file_count", :default => 0, :null => false - t.boolean "diff_all" - end - - create_table "comments", :force => true do |t| - t.string "commented_type", :limit => 30, :default => "", :null => false - t.integer "commented_id", :default => 0, :null => false - t.integer "author_id", :default => 0, :null => false - t.text "comments" - t.datetime "created_on", :null => false - t.datetime "updated_on", :null => false - end - - add_index "comments", ["author_id"], :name => "index_comments_on_author_id" - add_index "comments", ["commented_id", "commented_type"], :name => "index_comments_on_commented_id_and_commented_type" - - create_table "contest_notifications", :force => true do |t| - t.text "title" - t.text "content" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "contesting_projects", :force => true do |t| - t.integer "project_id" - t.string "contest_id" - t.integer "user_id" - t.string "description" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "reward" - end - - create_table "contesting_softapplications", :force => true do |t| - t.integer "softapplication_id" - t.integer "contest_id" - t.integer "user_id" - t.string "description" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "reward" - end - - create_table "contestnotifications", :force => true do |t| - t.integer "contest_id" - t.string "title" - t.string "summary" - t.text "description" - t.integer "author_id" - t.integer "notificationcomments_count" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "contests", :force => true do |t| - t.string "name" - t.string "budget", :default => "" - t.integer "author_id" - t.date "deadline" - t.string "description" - t.integer "commit" - t.string "password" - t.datetime "created_on", :null => false - t.datetime "updated_on", :null => false - end - - create_table "course_attachments", :force => true do |t| - t.string "filename" - t.string "disk_filename" - t.integer "filesize" - t.string "content_type" - t.string "digest" - t.integer "downloads" - t.string "author_id" - t.string "integer" - t.string "description" - t.string "disk_directory" - t.integer "attachtype" - t.integer "is_public" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "container_id", :default => 0 - end - - create_table "course_groups", :force => true do |t| - t.string "name" - t.integer "course_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "course_infos", :force => true do |t| - t.integer "course_id" - t.integer "user_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "course_statuses", :force => true do |t| - t.integer "changesets_count" - t.integer "watchers_count" - t.integer "course_id" - t.float "grade", :default => 0.0 - t.integer "course_ac_para", :default => 0 - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "courses", :force => true do |t| - t.integer "tea_id" - t.string "name" - t.integer "state" - t.string "code" - t.integer "time" - t.string "extra" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "location" - t.string "term" - t.string "string" - t.string "password" - t.string "setup_time" - t.string "endup_time" - t.string "class_period" - t.integer "school_id" - t.text "description" - t.integer "status", :default => 1 - t.integer "attachmenttype", :default => 2 - t.integer "lft" - t.integer "rgt" - t.integer "is_public", :limit => 1, :default => 1 - t.integer "inherit_members", :limit => 1, :default => 1 - t.integer "open_student", :default => 0 - end - - create_table "custom_fields", :force => true do |t| - t.string "type", :limit => 30, :default => "", :null => false - t.string "name", :limit => 30, :default => "", :null => false - t.string "field_format", :limit => 30, :default => "", :null => false - t.text "possible_values" - t.string "regexp", :default => "" - t.integer "min_length", :default => 0, :null => false - t.integer "max_length", :default => 0, :null => false - t.boolean "is_required", :default => false, :null => false - t.boolean "is_for_all", :default => false, :null => false - t.boolean "is_filter", :default => false, :null => false - t.integer "position", :default => 1 - t.boolean "searchable", :default => false - t.text "default_value" - t.boolean "editable", :default => true - t.boolean "visible", :default => true, :null => false - t.boolean "multiple", :default => false - end - - add_index "custom_fields", ["id", "type"], :name => "index_custom_fields_on_id_and_type" - - create_table "custom_fields_projects", :id => false, :force => true do |t| - t.integer "custom_field_id", :default => 0, :null => false - t.integer "project_id", :default => 0, :null => false - end - - add_index "custom_fields_projects", ["custom_field_id", "project_id"], :name => "index_custom_fields_projects_on_custom_field_id_and_project_id", :unique => true - - create_table "custom_fields_trackers", :id => false, :force => true do |t| - t.integer "custom_field_id", :default => 0, :null => false - t.integer "tracker_id", :default => 0, :null => false - end - - add_index "custom_fields_trackers", ["custom_field_id", "tracker_id"], :name => "index_custom_fields_trackers_on_custom_field_id_and_tracker_id", :unique => true - - create_table "custom_values", :force => true do |t| - t.string "customized_type", :limit => 30, :default => "", :null => false - t.integer "customized_id", :default => 0, :null => false - t.integer "custom_field_id", :default => 0, :null => false - t.text "value" - end - - add_index "custom_values", ["custom_field_id"], :name => "index_custom_values_on_custom_field_id" - add_index "custom_values", ["customized_type", "customized_id"], :name => "custom_values_customized" - - create_table "documents", :force => true do |t| - t.integer "project_id", :default => 0, :null => false - t.integer "category_id", :default => 0, :null => false - t.string "title", :limit => 60, :default => "", :null => false - t.text "description" - t.datetime "created_on" - t.integer "user_id", :default => 0 - t.integer "is_public", :default => 1 - end - - add_index "documents", ["category_id"], :name => "index_documents_on_category_id" - add_index "documents", ["created_on"], :name => "index_documents_on_created_on" - add_index "documents", ["project_id"], :name => "documents_project_id" - - create_table "enabled_modules", :force => true do |t| - t.integer "project_id" - t.string "name", :null => false - t.integer "course_id" - end - - add_index "enabled_modules", ["project_id"], :name => "enabled_modules_project_id" - - create_table "enumerations", :force => true do |t| - t.string "name", :limit => 30, :default => "", :null => false - t.integer "position", :default => 1 - t.boolean "is_default", :default => false, :null => false - t.string "type" - t.boolean "active", :default => true, :null => false - t.integer "project_id" - t.integer "parent_id" - t.string "position_name", :limit => 30 - end - - add_index "enumerations", ["id", "type"], :name => "index_enumerations_on_id_and_type" - add_index "enumerations", ["project_id"], :name => "index_enumerations_on_project_id" - - create_table "first_pages", :force => true do |t| - t.string "web_title" - t.string "title" - t.text "description" - t.string "page_type" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "sort_type" - t.integer "image_width", :default => 107 - t.integer "image_height", :default => 63 - t.integer "show_course", :default => 1 - t.integer "show_contest", :default => 1 - end - - create_table "forums", :force => true do |t| - t.string "name", :null => false - t.text "description" - t.integer "topic_count", :default => 0 - t.integer "memo_count", :default => 0 - t.integer "last_memo_id", :default => 0 - t.integer "creator_id", :null => false - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "sticky" - t.integer "locked" - end - - create_table "groups_users", :id => false, :force => true do |t| - t.integer "group_id", :null => false - t.integer "user_id", :null => false - end - - add_index "groups_users", ["group_id", "user_id"], :name => "groups_users_ids", :unique => true - - create_table "homework_attaches", :force => true do |t| - t.integer "bid_id" - t.integer "user_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "reward" - t.string "name" - t.text "description" - t.integer "state" - t.integer "project_id", :default => 0 - end - - create_table "homework_evaluations", :force => true do |t| - t.string "user_id" - t.string "homework_attach_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "homework_for_courses", :force => true do |t| - t.integer "course_id" - t.integer "bid_id" - end - - create_table "homework_users", :force => true do |t| - t.string "homework_attach_id" - t.string "user_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "issue_categories", :force => true do |t| - t.integer "project_id", :default => 0, :null => false - t.string "name", :limit => 30, :default => "", :null => false - t.integer "assigned_to_id" - end - - add_index "issue_categories", ["assigned_to_id"], :name => "index_issue_categories_on_assigned_to_id" - add_index "issue_categories", ["project_id"], :name => "issue_categories_project_id" - - create_table "issue_relations", :force => true do |t| - t.integer "issue_from_id", :null => false - t.integer "issue_to_id", :null => false - t.string "relation_type", :default => "", :null => false - t.integer "delay" - end - - add_index "issue_relations", ["issue_from_id", "issue_to_id"], :name => "index_issue_relations_on_issue_from_id_and_issue_to_id", :unique => true - add_index "issue_relations", ["issue_from_id"], :name => "index_issue_relations_on_issue_from_id" - add_index "issue_relations", ["issue_to_id"], :name => "index_issue_relations_on_issue_to_id" - - create_table "issue_statuses", :force => true do |t| - t.string "name", :limit => 30, :default => "", :null => false - t.boolean "is_closed", :default => false, :null => false - t.boolean "is_default", :default => false, :null => false - t.integer "position", :default => 1 - t.integer "default_done_ratio" - end - - add_index "issue_statuses", ["is_closed"], :name => "index_issue_statuses_on_is_closed" - add_index "issue_statuses", ["is_default"], :name => "index_issue_statuses_on_is_default" - add_index "issue_statuses", ["position"], :name => "index_issue_statuses_on_position" - - create_table "issues", :force => true do |t| - t.integer "tracker_id", :null => false - t.integer "project_id", :null => false - t.string "subject", :default => "", :null => false - t.text "description" - t.date "due_date" - t.integer "category_id" - t.integer "status_id", :null => false - t.integer "assigned_to_id" - t.integer "priority_id", :null => false - t.integer "fixed_version_id" - t.integer "author_id", :null => false - t.integer "lock_version", :default => 0, :null => false - t.datetime "created_on" - t.datetime "updated_on" - t.date "start_date" - t.integer "done_ratio", :default => 0, :null => false - t.float "estimated_hours" - t.integer "parent_id" - t.integer "root_id" - t.integer "lft" - t.integer "rgt" - t.boolean "is_private", :default => false, :null => false - t.datetime "closed_on" - end - - add_index "issues", ["assigned_to_id"], :name => "index_issues_on_assigned_to_id" - add_index "issues", ["author_id"], :name => "index_issues_on_author_id" - add_index "issues", ["category_id"], :name => "index_issues_on_category_id" - add_index "issues", ["created_on"], :name => "index_issues_on_created_on" - add_index "issues", ["fixed_version_id"], :name => "index_issues_on_fixed_version_id" - add_index "issues", ["priority_id"], :name => "index_issues_on_priority_id" - add_index "issues", ["project_id"], :name => "issues_project_id" - add_index "issues", ["root_id", "lft", "rgt"], :name => "index_issues_on_root_id_and_lft_and_rgt" - add_index "issues", ["status_id"], :name => "index_issues_on_status_id" - add_index "issues", ["tracker_id"], :name => "index_issues_on_tracker_id" - - create_table "join_in_competitions", :force => true do |t| - t.integer "user_id" - t.integer "competition_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "join_in_contests", :force => true do |t| - t.integer "user_id" - t.integer "bid_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "journal_details", :force => true do |t| - t.integer "journal_id", :default => 0, :null => false - t.string "property", :limit => 30, :default => "", :null => false - t.string "prop_key", :limit => 30, :default => "", :null => false - t.text "old_value" - t.text "value" - end - - add_index "journal_details", ["journal_id"], :name => "journal_details_journal_id" - - create_table "journal_replies", :id => false, :force => true do |t| - t.integer "journal_id" - t.integer "user_id" - t.integer "reply_id" - end - - add_index "journal_replies", ["journal_id"], :name => "index_journal_replies_on_journal_id" - add_index "journal_replies", ["reply_id"], :name => "index_journal_replies_on_reply_id" - add_index "journal_replies", ["user_id"], :name => "index_journal_replies_on_user_id" - - create_table "journals", :force => true do |t| - t.integer "journalized_id", :default => 0, :null => false - t.string "journalized_type", :limit => 30, :default => "", :null => false - t.integer "user_id", :default => 0, :null => false - t.text "notes" - t.datetime "created_on", :null => false - t.boolean "private_notes", :default => false, :null => false - end - - add_index "journals", ["created_on"], :name => "index_journals_on_created_on" - add_index "journals", ["journalized_id", "journalized_type"], :name => "journals_journalized_id" - add_index "journals", ["journalized_id"], :name => "index_journals_on_journalized_id" - add_index "journals", ["user_id"], :name => "index_journals_on_user_id" - - create_table "journals_for_messages", :force => true do |t| - t.integer "jour_id" - t.string "jour_type" - t.integer "user_id" - t.text "notes" - t.integer "status" - t.integer "reply_id" - t.datetime "created_on", :null => false - t.datetime "updated_on", :null => false - t.string "m_parent_id" - t.boolean "is_readed" - t.integer "m_reply_count" - t.integer "m_reply_id" - t.integer "is_comprehensive_evaluation" - end - - create_table "member_roles", :force => true do |t| - t.integer "member_id", :null => false - t.integer "role_id", :null => false - t.integer "inherited_from" - end - - add_index "member_roles", ["member_id"], :name => "index_member_roles_on_member_id" - add_index "member_roles", ["role_id"], :name => "index_member_roles_on_role_id" - - create_table "members", :force => true do |t| - t.integer "user_id", :default => 0, :null => false - t.integer "project_id", :default => 0 - t.datetime "created_on" - t.boolean "mail_notification", :default => false, :null => false - t.integer "course_id", :default => -1 - t.integer "course_group_id", :default => 0 - end - - add_index "members", ["project_id"], :name => "index_members_on_project_id" - add_index "members", ["user_id", "project_id", "course_id"], :name => "index_members_on_user_id_and_project_id", :unique => true - add_index "members", ["user_id"], :name => "index_members_on_user_id" - - create_table "memos", :force => true do |t| - t.integer "forum_id", :null => false - t.integer "parent_id" - t.string "subject", :null => false - t.text "content", :null => false - t.integer "author_id", :null => false - t.integer "replies_count", :default => 0 - t.integer "last_reply_id" - t.boolean "lock", :default => false - t.boolean "sticky", :default => false - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "viewed_count", :default => 0 - end - - create_table "messages", :force => true do |t| - t.integer "board_id", :null => false - t.integer "parent_id" - t.string "subject", :default => "", :null => false - t.text "content" - t.integer "author_id" - t.integer "replies_count", :default => 0, :null => false - t.integer "last_reply_id" - t.datetime "created_on", :null => false - t.datetime "updated_on", :null => false - t.boolean "locked", :default => false - t.integer "sticky", :default => 0 - end - - add_index "messages", ["author_id"], :name => "index_messages_on_author_id" - add_index "messages", ["board_id"], :name => "messages_board_id" - add_index "messages", ["created_on"], :name => "index_messages_on_created_on" - add_index "messages", ["last_reply_id"], :name => "index_messages_on_last_reply_id" - add_index "messages", ["parent_id"], :name => "messages_parent_id" - - create_table "news", :force => true do |t| - t.integer "project_id" - t.string "title", :limit => 60, :default => "", :null => false - t.string "summary", :default => "" - t.text "description" - t.integer "author_id", :default => 0, :null => false - t.datetime "created_on" - t.integer "comments_count", :default => 0, :null => false - t.integer "course_id" - end - - add_index "news", ["author_id"], :name => "index_news_on_author_id" - add_index "news", ["created_on"], :name => "index_news_on_created_on" - add_index "news", ["project_id"], :name => "news_project_id" - - create_table "no_uses", :force => true do |t| - t.integer "user_id", :null => false - t.string "no_use_type" - t.integer "no_use_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "notificationcomments", :force => true do |t| - t.string "notificationcommented_type" - t.integer "notificationcommented_id" - t.integer "author_id" - t.text "notificationcomments" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "open_id_authentication_associations", :force => true do |t| - t.integer "issued" - t.integer "lifetime" - t.string "handle" - t.string "assoc_type" - t.binary "server_url" - t.binary "secret" - end - - create_table "open_id_authentication_nonces", :force => true do |t| - t.integer "timestamp", :null => false - t.string "server_url" - t.string "salt", :null => false - end - - create_table "open_source_projects", :force => true do |t| - t.string "name" - t.text "description" - t.integer "commit_count", :default => 0 - t.integer "code_line", :default => 0 - t.integer "users_count", :default => 0 - t.date "last_commit_time" - t.string "url" - t.date "date_collected" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "option_numbers", :force => true do |t| - t.integer "user_id" - t.integer "memo" - t.integer "messages_for_issues" - t.integer "issues_status" - t.integer "replay_for_message" - t.integer "replay_for_memo" - t.integer "follow" - t.integer "tread" - t.integer "praise_by_one" - t.integer "praise_by_two" - t.integer "praise_by_three" - t.integer "tread_by_one" - t.integer "tread_by_two" - t.integer "tread_by_three" - t.integer "changeset" - t.integer "document" - t.integer "attachment" - t.integer "issue_done_ratio" - t.integer "post_issue" - t.integer "score_type" - t.integer "total_score" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "project_id" - end - - create_table "praise_tread_caches", :force => true do |t| - t.integer "object_id", :null => false - t.string "object_type" - t.integer "praise_num" - t.integer "tread_num" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "praise_treads", :force => true do |t| - t.integer "user_id", :null => false - t.integer "praise_tread_object_id" - t.string "praise_tread_object_type" - t.integer "praise_or_tread" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "project_infos", :force => true do |t| - t.integer "project_id" - t.integer "user_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "project_scores", :force => true do |t| - t.string "project_id" - t.integer "score" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "issue_num", :default => 0 - t.integer "issue_journal_num", :default => 0 - t.integer "news_num", :default => 0 - t.integer "documents_num", :default => 0 - t.integer "changeset_num", :default => 0 - t.integer "board_message_num", :default => 0 - end - - create_table "project_statuses", :force => true do |t| - t.integer "changesets_count" - t.integer "watchers_count" - t.integer "project_id" - t.integer "project_type" - t.float "grade", :default => 0.0 - t.integer "course_ac_para", :default => 0 - end - - add_index "project_statuses", ["grade"], :name => "index_project_statuses_on_grade" - - create_table "projecting_softapplictions", :force => true do |t| - t.integer "user_id" - t.integer "softapplication_id" - t.integer "project_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "projects", :force => true do |t| - t.string "name", :default => "", :null => false - t.text "description" - t.string "homepage", :default => "" - t.boolean "is_public", :default => true, :null => false - t.integer "parent_id" - t.datetime "created_on" - t.datetime "updated_on" - t.string "identifier" - t.integer "status", :default => 1, :null => false - t.integer "lft" - t.integer "rgt" - t.boolean "inherit_members", :default => false, :null => false - t.integer "project_type" - t.boolean "hidden_repo", :default => false, :null => false - t.integer "attachmenttype", :default => 1 - t.integer "user_id" - t.integer "dts_test", :default => 0 - end - - add_index "projects", ["lft"], :name => "index_projects_on_lft" - add_index "projects", ["rgt"], :name => "index_projects_on_rgt" - - create_table "projects_trackers", :id => false, :force => true do |t| - t.integer "project_id", :default => 0, :null => false - t.integer "tracker_id", :default => 0, :null => false - end - - add_index "projects_trackers", ["project_id", "tracker_id"], :name => "projects_trackers_unique", :unique => true - add_index "projects_trackers", ["project_id"], :name => "projects_trackers_project_id" - - create_table "queries", :force => true do |t| - t.integer "project_id" - t.string "name", :default => "", :null => false - t.text "filters" - t.integer "user_id", :default => 0, :null => false - t.boolean "is_public", :default => false, :null => false - t.text "column_names" - t.text "sort_criteria" - t.string "group_by" - t.string "type" - end - - add_index "queries", ["project_id"], :name => "index_queries_on_project_id" - add_index "queries", ["user_id"], :name => "index_queries_on_user_id" - - create_table "relative_memo_to_open_source_projects", :force => true do |t| - t.integer "osp_id" - t.integer "relative_memo_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "relative_memos", :force => true do |t| - t.integer "osp_id" - t.integer "parent_id" - t.string "subject", :null => false - t.text "content", :limit => 16777215, :null => false - t.integer "author_id" - t.integer "replies_count", :default => 0 - t.integer "last_reply_id" - t.boolean "lock", :default => false - t.boolean "sticky", :default => false - t.boolean "is_quote", :default => false - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "viewed_count_crawl", :default => 0 - t.integer "viewed_count_local", :default => 0 - t.string "url" - t.string "username" - t.string "userhomeurl" - t.date "date_collected" - t.string "topic_resource" - end - - create_table "repositories", :force => true do |t| - t.integer "project_id", :default => 0, :null => false - t.string "url", :default => "", :null => false - t.string "login", :limit => 60, :default => "" - t.string "password", :default => "" - t.string "root_url", :default => "" - t.string "type" - t.string "path_encoding", :limit => 64 - t.string "log_encoding", :limit => 64 - t.text "extra_info" - t.string "identifier" - t.boolean "is_default", :default => false - end - - add_index "repositories", ["project_id"], :name => "index_repositories_on_project_id" - - create_table "rich_rich_files", :force => true do |t| - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "rich_file_file_name" - t.string "rich_file_content_type" - t.integer "rich_file_file_size" - t.datetime "rich_file_updated_at" - t.string "owner_type" - t.integer "owner_id" - t.text "uri_cache" - t.string "simplified_type", :default => "file" - end - - create_table "roles", :force => true do |t| - t.string "name", :limit => 30, :default => "", :null => false - t.integer "position", :default => 1 - t.boolean "assignable", :default => true - t.integer "builtin", :default => 0, :null => false - t.text "permissions" - t.string "issues_visibility", :limit => 30, :default => "default", :null => false - end - - create_table "schools", :force => true do |t| - t.string "name" - t.string "province" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "logo_link" - end - - create_table "seems_rateable_cached_ratings", :force => true do |t| - t.integer "cacheable_id", :limit => 8 - t.string "cacheable_type" - t.float "avg", :null => false - t.integer "cnt", :null => false - t.string "dimension" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "seems_rateable_rates", :force => true do |t| - t.integer "rater_id", :limit => 8 - t.integer "rateable_id" - t.string "rateable_type" - t.float "stars", :null => false - t.string "dimension" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "settings", :force => true do |t| - t.string "name", :default => "", :null => false - t.text "value" - t.datetime "updated_on" - end - - add_index "settings", ["name"], :name => "index_settings_on_name" - - create_table "shares", :force => true do |t| - t.date "created_on" - t.string "url" - t.string "title" - t.integer "share_type" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "project_id" - t.integer "user_id" - t.string "description" - end - - create_table "softapplications", :force => true do |t| - t.string "name" - t.text "description" - t.integer "app_type_id" - t.string "app_type_name" - t.string "android_min_version_available" - t.integer "user_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "contest_id" - t.integer "softapplication_id" - t.integer "is_public" - t.string "application_developers" - t.string "deposit_project_url" - t.string "deposit_project" - t.integer "project_id" - end - - create_table "students_for_courses", :force => true do |t| - t.integer "student_id" - t.integer "course_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "taggings", :force => true do |t| - t.integer "tag_id" - t.integer "taggable_id" - t.string "taggable_type" - t.integer "tagger_id" - t.string "tagger_type" - t.string "context", :limit => 128 - t.datetime "created_at" - end - - add_index "taggings", ["tag_id"], :name => "index_taggings_on_tag_id" - add_index "taggings", ["taggable_id", "taggable_type", "context"], :name => "index_taggings_on_taggable_id_and_taggable_type_and_context" - add_index "taggings", ["taggable_type"], :name => "index_taggings_on_taggable_type" - - create_table "tags", :force => true do |t| - t.string "name" - end - - create_table "teachers", :force => true do |t| - t.string "tea_name" - t.string "location" - t.integer "couurse_time" - t.integer "course_code" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "extra" - end - - create_table "time_entries", :force => true do |t| - t.integer "project_id", :null => false - t.integer "user_id", :null => false - t.integer "issue_id" - t.float "hours", :null => false - t.string "comments" - t.integer "activity_id", :null => false - t.date "spent_on", :null => false - t.integer "tyear", :null => false - t.integer "tmonth", :null => false - t.integer "tweek", :null => false - t.datetime "created_on", :null => false - t.datetime "updated_on", :null => false - end - - add_index "time_entries", ["activity_id"], :name => "index_time_entries_on_activity_id" - add_index "time_entries", ["created_on"], :name => "index_time_entries_on_created_on" - add_index "time_entries", ["issue_id"], :name => "time_entries_issue_id" - add_index "time_entries", ["project_id"], :name => "time_entries_project_id" - add_index "time_entries", ["user_id"], :name => "index_time_entries_on_user_id" - - create_table "tokens", :force => true do |t| - t.integer "user_id", :default => 0, :null => false - t.string "action", :limit => 30, :default => "", :null => false - t.string "value", :limit => 40, :default => "", :null => false - t.datetime "created_on", :null => false - end - - add_index "tokens", ["user_id"], :name => "index_tokens_on_user_id" - add_index "tokens", ["value"], :name => "tokens_value", :unique => true - - create_table "trackers", :force => true do |t| - t.string "name", :limit => 30, :default => "", :null => false - t.boolean "is_in_chlog", :default => false, :null => false - t.integer "position", :default => 1 - t.boolean "is_in_roadmap", :default => true, :null => false - t.integer "fields_bits", :default => 0 - end - - create_table "user_extensions", :force => true do |t| - t.integer "user_id", :null => false - t.date "birthday" - t.string "brief_introduction" - t.integer "gender" - t.string "location" - t.string "occupation" - t.integer "work_experience" - t.integer "zip_code" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "technical_title" - t.integer "identity" - t.string "student_id" - t.string "teacher_realname" - t.string "student_realname" - t.string "location_city" - t.integer "school_id" - end - - create_table "user_grades", :force => true do |t| - t.integer "user_id", :null => false - t.integer "project_id", :null => false - t.float "grade", :default => 0.0 - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - add_index "user_grades", ["grade"], :name => "index_user_grades_on_grade" - add_index "user_grades", ["project_id"], :name => "index_user_grades_on_project_id" - add_index "user_grades", ["user_id"], :name => "index_user_grades_on_user_id" - - create_table "user_levels", :force => true do |t| - t.integer "user_id" - t.integer "level" - end - - create_table "user_preferences", :force => true do |t| - t.integer "user_id", :default => 0, :null => false - t.text "others" - t.boolean "hide_mail", :default => false - t.string "time_zone" - end - - add_index "user_preferences", ["user_id"], :name => "index_user_preferences_on_user_id" - - create_table "user_score_details", :force => true do |t| - t.integer "current_user_id" - t.integer "target_user_id" - t.string "score_type" - t.string "score_action" - t.integer "user_id" - t.integer "old_score" - t.integer "new_score" - t.integer "current_user_level" - t.integer "target_user_level" - t.integer "score_changeable_obj_id" - t.string "score_changeable_obj_type" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "user_scores", :force => true do |t| - t.integer "user_id", :null => false - t.integer "collaboration" - t.integer "influence" - t.integer "skill" - t.integer "active" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "user_statuses", :force => true do |t| - t.integer "changesets_count" - t.integer "watchers_count" - t.integer "user_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.float "grade", :default => 0.0 - end - - add_index "user_statuses", ["changesets_count"], :name => "index_user_statuses_on_changesets_count" - add_index "user_statuses", ["grade"], :name => "index_user_statuses_on_grade" - add_index "user_statuses", ["watchers_count"], :name => "index_user_statuses_on_watchers_count" - - create_table "users", :force => true do |t| - t.string "login", :default => "", :null => false - t.string "hashed_password", :limit => 40, :default => "", :null => false - t.string "firstname", :limit => 30, :default => "", :null => false - t.string "lastname", :default => "", :null => false - t.string "mail", :limit => 60, :default => "", :null => false - t.boolean "admin", :default => false, :null => false - t.integer "status", :default => 1, :null => false - t.datetime "last_login_on" - t.string "language", :limit => 5, :default => "" - t.integer "auth_source_id" - t.datetime "created_on" - t.datetime "updated_on" - t.string "type" - t.string "identity_url" - t.string "mail_notification", :default => "", :null => false - t.string "salt", :limit => 64 - end - - add_index "users", ["auth_source_id"], :name => "index_users_on_auth_source_id" - add_index "users", ["id", "type"], :name => "index_users_on_id_and_type" - add_index "users", ["type"], :name => "index_users_on_type" - - create_table "versions", :force => true do |t| - t.integer "project_id", :default => 0, :null => false - t.string "name", :default => "", :null => false - t.string "description", :default => "" - t.date "effective_date" - t.datetime "created_on" - t.datetime "updated_on" - t.string "wiki_page_title" - t.string "status", :default => "open" - t.string "sharing", :default => "none", :null => false - end - - add_index "versions", ["project_id"], :name => "versions_project_id" - add_index "versions", ["sharing"], :name => "index_versions_on_sharing" - - create_table "watchers", :force => true do |t| - t.string "watchable_type", :default => "", :null => false - t.integer "watchable_id", :default => 0, :null => false - t.integer "user_id" - end - - add_index "watchers", ["user_id", "watchable_type"], :name => "watchers_user_id_type" - add_index "watchers", ["user_id"], :name => "index_watchers_on_user_id" - add_index "watchers", ["watchable_id", "watchable_type"], :name => "index_watchers_on_watchable_id_and_watchable_type" - - create_table "web_footer_companies", :force => true do |t| - t.string "name" - t.string "logo_size" - t.string "url" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "web_footer_oranizers", :force => true do |t| - t.string "name" - t.text "description" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "wiki_content_versions", :force => true do |t| - t.integer "wiki_content_id", :null => false - t.integer "page_id", :null => false - t.integer "author_id" - t.binary "data", :limit => 2147483647 - t.string "compression", :limit => 6, :default => "" - t.string "comments", :default => "" - t.datetime "updated_on", :null => false - t.integer "version", :null => false - end - - add_index "wiki_content_versions", ["updated_on"], :name => "index_wiki_content_versions_on_updated_on" - add_index "wiki_content_versions", ["wiki_content_id"], :name => "wiki_content_versions_wcid" - - create_table "wiki_contents", :force => true do |t| - t.integer "page_id", :null => false - t.integer "author_id" - t.text "text", :limit => 2147483647 - t.string "comments", :default => "" - t.datetime "updated_on", :null => false - t.integer "version", :null => false - end - - add_index "wiki_contents", ["author_id"], :name => "index_wiki_contents_on_author_id" - add_index "wiki_contents", ["page_id"], :name => "wiki_contents_page_id" - - create_table "wiki_pages", :force => true do |t| - t.integer "wiki_id", :null => false - t.string "title", :null => false - t.datetime "created_on", :null => false - t.boolean "protected", :default => false, :null => false - t.integer "parent_id" - end - - add_index "wiki_pages", ["parent_id"], :name => "index_wiki_pages_on_parent_id" - add_index "wiki_pages", ["wiki_id", "title"], :name => "wiki_pages_wiki_id_title" - add_index "wiki_pages", ["wiki_id"], :name => "index_wiki_pages_on_wiki_id" - - create_table "wiki_redirects", :force => true do |t| - t.integer "wiki_id", :null => false - t.string "title" - t.string "redirects_to" - t.datetime "created_on", :null => false - end - - add_index "wiki_redirects", ["wiki_id", "title"], :name => "wiki_redirects_wiki_id_title" - add_index "wiki_redirects", ["wiki_id"], :name => "index_wiki_redirects_on_wiki_id" - - create_table "wikis", :force => true do |t| - t.integer "project_id", :null => false - t.string "start_page", :null => false - t.integer "status", :default => 1, :null => false - end - - add_index "wikis", ["project_id"], :name => "wikis_project_id" - - create_table "workflows", :force => true do |t| - t.integer "tracker_id", :default => 0, :null => false - t.integer "old_status_id", :default => 0, :null => false - t.integer "new_status_id", :default => 0, :null => false - t.integer "role_id", :default => 0, :null => false - t.boolean "assignee", :default => false, :null => false - t.boolean "author", :default => false, :null => false - t.string "type", :limit => 30 - t.string "field_name", :limit => 30 - t.string "rule", :limit => 30 - end - - add_index "workflows", ["new_status_id"], :name => "index_workflows_on_new_status_id" - add_index "workflows", ["old_status_id"], :name => "index_workflows_on_old_status_id" - add_index "workflows", ["role_id", "tracker_id", "old_status_id"], :name => "wkfs_role_tracker_old_status" - add_index "workflows", ["role_id"], :name => "index_workflows_on_role_id" - - create_table "works_categories", :force => true do |t| - t.string "category" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - -end +# encoding: UTF-8 +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# Note that this schema.rb definition is the authoritative source for your +# database schema. If you need to create the application database on another +# system, you should be using db:schema:load, not running all the migrations +# from scratch. The latter is a flawed and unsustainable approach (the more migrations +# you'll amass, the slower it'll run and the greater likelihood for issues). +# +# It's strongly recommended to check this file into your version control system. + +ActiveRecord::Schema.define(:version => 20141210070327) do + + create_table "activities", :force => true do |t| + t.integer "act_id", :null => false + t.string "act_type", :null => false + t.integer "user_id", :null => false + end + + add_index "activities", ["act_id", "act_type"], :name => "index_activities_on_act_id_and_act_type" + add_index "activities", ["user_id", "act_type"], :name => "index_activities_on_user_id_and_act_type" + add_index "activities", ["user_id"], :name => "index_activities_on_user_id" + + create_table "api_keys", :force => true do |t| + t.string "access_token" + t.datetime "expires_at" + t.integer "user_id" + t.boolean "active", :default => true + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + add_index "api_keys", ["access_token"], :name => "index_api_keys_on_access_token" + add_index "api_keys", ["user_id"], :name => "index_api_keys_on_user_id" + + create_table "applied_projects", :force => true do |t| + t.integer "project_id", :null => false + t.integer "user_id", :null => false + end + + create_table "apply_project_masters", :force => true do |t| + t.integer "user_id" + t.string "apply_type" + t.integer "apply_id" + t.integer "status" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "attachments", :force => true do |t| + t.integer "container_id" + t.string "container_type", :limit => 30 + t.string "filename", :default => "", :null => false + t.string "disk_filename", :default => "", :null => false + t.integer "filesize", :default => 0, :null => false + t.string "content_type", :default => "" + t.string "digest", :limit => 40, :default => "", :null => false + t.integer "downloads", :default => 0, :null => false + t.integer "author_id", :default => 0, :null => false + t.datetime "created_on" + t.string "description" + t.string "disk_directory" + t.integer "attachtype", :default => 1 + t.integer "is_public", :default => 1 + t.integer "copy_from" + t.integer "quotes" + end + + add_index "attachments", ["author_id"], :name => "index_attachments_on_author_id" + add_index "attachments", ["container_id", "container_type"], :name => "index_attachments_on_container_id_and_container_type" + add_index "attachments", ["created_on"], :name => "index_attachments_on_created_on" + + create_table "attachmentstypes", :force => true do |t| + t.integer "typeId", :null => false + t.string "typeName", :limit => 50 + end + + create_table "auth_sources", :force => true do |t| + t.string "type", :limit => 30, :default => "", :null => false + t.string "name", :limit => 60, :default => "", :null => false + t.string "host", :limit => 60 + t.integer "port" + t.string "account" + t.string "account_password", :default => "" + t.string "base_dn" + t.string "attr_login", :limit => 30 + t.string "attr_firstname", :limit => 30 + t.string "attr_lastname", :limit => 30 + t.string "attr_mail", :limit => 30 + t.boolean "onthefly_register", :default => false, :null => false + t.boolean "tls", :default => false, :null => false + t.string "filter" + t.integer "timeout" + end + + add_index "auth_sources", ["id", "type"], :name => "index_auth_sources_on_id_and_type" + + create_table "biding_projects", :force => true do |t| + t.integer "project_id" + t.integer "bid_id" + t.integer "user_id" + t.string "description" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "reward" + end + + create_table "bids", :force => true do |t| + t.string "name" + t.string "budget", :null => false + t.integer "author_id" + t.date "deadline" + t.text "description" + t.datetime "created_on", :null => false + t.datetime "updated_on", :null => false + t.integer "commit" + t.integer "reward_type" + t.integer "homework_type" + t.integer "parent_id" + t.string "password" + t.integer "is_evaluation" + t.integer "proportion", :default => 60 + t.integer "comment_status", :default => 0 + t.integer "evaluation_num", :default => 3 + t.integer "open_anonymous_evaluation", :default => 1 + end + + create_table "boards", :force => true do |t| + t.integer "project_id", :null => false + t.string "name", :default => "", :null => false + t.string "description" + t.integer "position", :default => 1 + t.integer "topics_count", :default => 0, :null => false + t.integer "messages_count", :default => 0, :null => false + t.integer "last_message_id" + t.integer "parent_id" + t.integer "course_id" + end + + add_index "boards", ["last_message_id"], :name => "index_boards_on_last_message_id" + add_index "boards", ["project_id"], :name => "boards_project_id" + + create_table "bug_to_osps", :force => true do |t| + t.integer "osp_id" + t.integer "relative_memo_id" + t.string "description" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "changes", :force => true do |t| + t.integer "changeset_id", :null => false + t.string "action", :limit => 1, :default => "", :null => false + t.text "path", :null => false + t.text "from_path" + t.string "from_revision" + t.string "revision" + t.string "branch" + end + + add_index "changes", ["changeset_id"], :name => "changesets_changeset_id" + + create_table "changeset_parents", :id => false, :force => true do |t| + t.integer "changeset_id", :null => false + t.integer "parent_id", :null => false + end + + add_index "changeset_parents", ["changeset_id"], :name => "changeset_parents_changeset_ids" + add_index "changeset_parents", ["parent_id"], :name => "changeset_parents_parent_ids" + + create_table "changesets", :force => true do |t| + t.integer "repository_id", :null => false + t.string "revision", :null => false + t.string "committer" + t.datetime "committed_on", :null => false + t.text "comments" + t.date "commit_date" + t.string "scmid" + t.integer "user_id" + end + + add_index "changesets", ["committed_on"], :name => "index_changesets_on_committed_on" + add_index "changesets", ["repository_id", "revision"], :name => "changesets_repos_rev", :unique => true + add_index "changesets", ["repository_id", "scmid"], :name => "changesets_repos_scmid" + add_index "changesets", ["repository_id"], :name => "index_changesets_on_repository_id" + add_index "changesets", ["user_id"], :name => "index_changesets_on_user_id" + + create_table "changesets_issues", :id => false, :force => true do |t| + t.integer "changeset_id", :null => false + t.integer "issue_id", :null => false + end + + add_index "changesets_issues", ["changeset_id", "issue_id"], :name => "changesets_issues_ids", :unique => true + + create_table "code_review_assignments", :force => true do |t| + t.integer "issue_id" + t.integer "change_id" + t.integer "attachment_id" + t.string "file_path" + t.string "rev" + t.string "rev_to" + t.string "action_type" + t.integer "changeset_id" + end + + create_table "code_review_project_settings", :force => true do |t| + t.integer "project_id" + t.integer "tracker_id" + t.datetime "created_at" + t.datetime "updated_at" + t.integer "updated_by" + t.boolean "hide_code_review_tab", :default => false + t.integer "auto_relation", :default => 1 + t.integer "assignment_tracker_id" + t.text "auto_assign" + t.integer "lock_version", :default => 0, :null => false + t.boolean "tracker_in_review_dialog", :default => false + end + + create_table "code_review_user_settings", :force => true do |t| + t.integer "user_id", :default => 0, :null => false + t.integer "mail_notification", :default => 0, :null => false + t.datetime "created_at" + t.datetime "updated_at" + end + + create_table "code_reviews", :force => true do |t| + t.integer "project_id" + t.integer "change_id" + t.datetime "created_at" + t.datetime "updated_at" + t.integer "line" + t.integer "updated_by_id" + t.integer "lock_version", :default => 0, :null => false + t.integer "status_changed_from" + t.integer "status_changed_to" + t.integer "issue_id" + t.string "action_type" + t.string "file_path" + t.string "rev" + t.string "rev_to" + t.integer "attachment_id" + t.integer "file_count", :default => 0, :null => false + t.boolean "diff_all" + end + + create_table "comments", :force => true do |t| + t.string "commented_type", :limit => 30, :default => "", :null => false + t.integer "commented_id", :default => 0, :null => false + t.integer "author_id", :default => 0, :null => false + t.text "comments" + t.datetime "created_on", :null => false + t.datetime "updated_on", :null => false + end + + add_index "comments", ["author_id"], :name => "index_comments_on_author_id" + add_index "comments", ["commented_id", "commented_type"], :name => "index_comments_on_commented_id_and_commented_type" + + create_table "contest_notifications", :force => true do |t| + t.text "title" + t.text "content" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "contesting_projects", :force => true do |t| + t.integer "project_id" + t.string "contest_id" + t.integer "user_id" + t.string "description" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "reward" + end + + create_table "contesting_softapplications", :force => true do |t| + t.integer "softapplication_id" + t.integer "contest_id" + t.integer "user_id" + t.string "description" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "reward" + end + + create_table "contestnotifications", :force => true do |t| + t.integer "contest_id" + t.string "title" + t.string "summary" + t.text "description" + t.integer "author_id" + t.integer "notificationcomments_count" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "contests", :force => true do |t| + t.string "name" + t.string "budget", :default => "" + t.integer "author_id" + t.date "deadline" + t.string "description" + t.integer "commit" + t.string "password" + t.datetime "created_on", :null => false + t.datetime "updated_on", :null => false + end + + create_table "course_attachments", :force => true do |t| + t.string "filename" + t.string "disk_filename" + t.integer "filesize" + t.string "content_type" + t.string "digest" + t.integer "downloads" + t.string "author_id" + t.string "integer" + t.string "description" + t.string "disk_directory" + t.integer "attachtype" + t.integer "is_public" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "container_id", :default => 0 + end + + create_table "course_groups", :force => true do |t| + t.string "name" + t.integer "course_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "course_infos", :force => true do |t| + t.integer "course_id" + t.integer "user_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "course_statuses", :force => true do |t| + t.integer "changesets_count" + t.integer "watchers_count" + t.integer "course_id" + t.float "grade", :default => 0.0 + t.integer "course_ac_para", :default => 0 + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "courses", :force => true do |t| + t.integer "tea_id" + t.string "name" + t.integer "state" + t.string "code" + t.integer "time" + t.string "extra" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "location" + t.string "term" + t.string "string" + t.string "password" + t.string "setup_time" + t.string "endup_time" + t.string "class_period" + t.integer "school_id" + t.text "description" + t.integer "status", :default => 1 + t.integer "attachmenttype", :default => 2 + t.integer "lft" + t.integer "rgt" + t.integer "is_public", :limit => 1, :default => 1 + t.integer "inherit_members", :limit => 1, :default => 1 + t.integer "open_student", :default => 0 + end + + create_table "custom_fields", :force => true do |t| + t.string "type", :limit => 30, :default => "", :null => false + t.string "name", :limit => 30, :default => "", :null => false + t.string "field_format", :limit => 30, :default => "", :null => false + t.text "possible_values" + t.string "regexp", :default => "" + t.integer "min_length", :default => 0, :null => false + t.integer "max_length", :default => 0, :null => false + t.boolean "is_required", :default => false, :null => false + t.boolean "is_for_all", :default => false, :null => false + t.boolean "is_filter", :default => false, :null => false + t.integer "position", :default => 1 + t.boolean "searchable", :default => false + t.text "default_value" + t.boolean "editable", :default => true + t.boolean "visible", :default => true, :null => false + t.boolean "multiple", :default => false + end + + add_index "custom_fields", ["id", "type"], :name => "index_custom_fields_on_id_and_type" + + create_table "custom_fields_projects", :id => false, :force => true do |t| + t.integer "custom_field_id", :default => 0, :null => false + t.integer "project_id", :default => 0, :null => false + end + + add_index "custom_fields_projects", ["custom_field_id", "project_id"], :name => "index_custom_fields_projects_on_custom_field_id_and_project_id", :unique => true + + create_table "custom_fields_trackers", :id => false, :force => true do |t| + t.integer "custom_field_id", :default => 0, :null => false + t.integer "tracker_id", :default => 0, :null => false + end + + add_index "custom_fields_trackers", ["custom_field_id", "tracker_id"], :name => "index_custom_fields_trackers_on_custom_field_id_and_tracker_id", :unique => true + + create_table "custom_values", :force => true do |t| + t.string "customized_type", :limit => 30, :default => "", :null => false + t.integer "customized_id", :default => 0, :null => false + t.integer "custom_field_id", :default => 0, :null => false + t.text "value" + end + + add_index "custom_values", ["custom_field_id"], :name => "index_custom_values_on_custom_field_id" + add_index "custom_values", ["customized_type", "customized_id"], :name => "custom_values_customized" + + create_table "documents", :force => true do |t| + t.integer "project_id", :default => 0, :null => false + t.integer "category_id", :default => 0, :null => false + t.string "title", :limit => 60, :default => "", :null => false + t.text "description" + t.datetime "created_on" + t.integer "user_id", :default => 0 + t.integer "is_public", :default => 1 + end + + add_index "documents", ["category_id"], :name => "index_documents_on_category_id" + add_index "documents", ["created_on"], :name => "index_documents_on_created_on" + add_index "documents", ["project_id"], :name => "documents_project_id" + + create_table "enabled_modules", :force => true do |t| + t.integer "project_id" + t.string "name", :null => false + t.integer "course_id" + end + + add_index "enabled_modules", ["project_id"], :name => "enabled_modules_project_id" + + create_table "enumerations", :force => true do |t| + t.string "name", :limit => 30, :default => "", :null => false + t.integer "position", :default => 1 + t.boolean "is_default", :default => false, :null => false + t.string "type" + t.boolean "active", :default => true, :null => false + t.integer "project_id" + t.integer "parent_id" + t.string "position_name", :limit => 30 + end + + add_index "enumerations", ["id", "type"], :name => "index_enumerations_on_id_and_type" + add_index "enumerations", ["project_id"], :name => "index_enumerations_on_project_id" + + create_table "first_pages", :force => true do |t| + t.string "web_title" + t.string "title" + t.text "description" + t.string "page_type" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "sort_type" + t.integer "image_width", :default => 107 + t.integer "image_height", :default => 63 + t.integer "show_course", :default => 1 + t.integer "show_contest", :default => 1 + end + + create_table "forums", :force => true do |t| + t.string "name", :null => false + t.text "description" + t.integer "topic_count", :default => 0 + t.integer "memo_count", :default => 0 + t.integer "last_memo_id", :default => 0 + t.integer "creator_id", :null => false + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "sticky" + t.integer "locked" + end + + create_table "groups_users", :id => false, :force => true do |t| + t.integer "group_id", :null => false + t.integer "user_id", :null => false + end + + add_index "groups_users", ["group_id", "user_id"], :name => "groups_users_ids", :unique => true + + create_table "homework_attaches", :force => true do |t| + t.integer "bid_id" + t.integer "user_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "reward" + t.string "name" + t.text "description" + t.integer "state" + t.integer "project_id", :default => 0 + end + + create_table "homework_evaluations", :force => true do |t| + t.string "user_id" + t.string "homework_attach_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "homework_for_courses", :force => true do |t| + t.integer "course_id" + t.integer "bid_id" + end + + create_table "homework_users", :force => true do |t| + t.string "homework_attach_id" + t.string "user_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "issue_categories", :force => true do |t| + t.integer "project_id", :default => 0, :null => false + t.string "name", :limit => 30, :default => "", :null => false + t.integer "assigned_to_id" + end + + add_index "issue_categories", ["assigned_to_id"], :name => "index_issue_categories_on_assigned_to_id" + add_index "issue_categories", ["project_id"], :name => "issue_categories_project_id" + + create_table "issue_relations", :force => true do |t| + t.integer "issue_from_id", :null => false + t.integer "issue_to_id", :null => false + t.string "relation_type", :default => "", :null => false + t.integer "delay" + end + + add_index "issue_relations", ["issue_from_id", "issue_to_id"], :name => "index_issue_relations_on_issue_from_id_and_issue_to_id", :unique => true + add_index "issue_relations", ["issue_from_id"], :name => "index_issue_relations_on_issue_from_id" + add_index "issue_relations", ["issue_to_id"], :name => "index_issue_relations_on_issue_to_id" + + create_table "issue_statuses", :force => true do |t| + t.string "name", :limit => 30, :default => "", :null => false + t.boolean "is_closed", :default => false, :null => false + t.boolean "is_default", :default => false, :null => false + t.integer "position", :default => 1 + t.integer "default_done_ratio" + end + + add_index "issue_statuses", ["is_closed"], :name => "index_issue_statuses_on_is_closed" + add_index "issue_statuses", ["is_default"], :name => "index_issue_statuses_on_is_default" + add_index "issue_statuses", ["position"], :name => "index_issue_statuses_on_position" + + create_table "issues", :force => true do |t| + t.integer "tracker_id", :null => false + t.integer "project_id", :null => false + t.string "subject", :default => "", :null => false + t.text "description" + t.date "due_date" + t.integer "category_id" + t.integer "status_id", :null => false + t.integer "assigned_to_id" + t.integer "priority_id", :null => false + t.integer "fixed_version_id" + t.integer "author_id", :null => false + t.integer "lock_version", :default => 0, :null => false + t.datetime "created_on" + t.datetime "updated_on" + t.date "start_date" + t.integer "done_ratio", :default => 0, :null => false + t.float "estimated_hours" + t.integer "parent_id" + t.integer "root_id" + t.integer "lft" + t.integer "rgt" + t.boolean "is_private", :default => false, :null => false + t.datetime "closed_on" + end + + add_index "issues", ["assigned_to_id"], :name => "index_issues_on_assigned_to_id" + add_index "issues", ["author_id"], :name => "index_issues_on_author_id" + add_index "issues", ["category_id"], :name => "index_issues_on_category_id" + add_index "issues", ["created_on"], :name => "index_issues_on_created_on" + add_index "issues", ["fixed_version_id"], :name => "index_issues_on_fixed_version_id" + add_index "issues", ["priority_id"], :name => "index_issues_on_priority_id" + add_index "issues", ["project_id"], :name => "issues_project_id" + add_index "issues", ["root_id", "lft", "rgt"], :name => "index_issues_on_root_id_and_lft_and_rgt" + add_index "issues", ["status_id"], :name => "index_issues_on_status_id" + add_index "issues", ["tracker_id"], :name => "index_issues_on_tracker_id" + + create_table "join_in_competitions", :force => true do |t| + t.integer "user_id" + t.integer "competition_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "join_in_contests", :force => true do |t| + t.integer "user_id" + t.integer "bid_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "journal_details", :force => true do |t| + t.integer "journal_id", :default => 0, :null => false + t.string "property", :limit => 30, :default => "", :null => false + t.string "prop_key", :limit => 30, :default => "", :null => false + t.text "old_value" + t.text "value" + end + + add_index "journal_details", ["journal_id"], :name => "journal_details_journal_id" + + create_table "journal_replies", :id => false, :force => true do |t| + t.integer "journal_id" + t.integer "user_id" + t.integer "reply_id" + end + + add_index "journal_replies", ["journal_id"], :name => "index_journal_replies_on_journal_id" + add_index "journal_replies", ["reply_id"], :name => "index_journal_replies_on_reply_id" + add_index "journal_replies", ["user_id"], :name => "index_journal_replies_on_user_id" + + create_table "journals", :force => true do |t| + t.integer "journalized_id", :default => 0, :null => false + t.string "journalized_type", :limit => 30, :default => "", :null => false + t.integer "user_id", :default => 0, :null => false + t.text "notes" + t.datetime "created_on", :null => false + t.boolean "private_notes", :default => false, :null => false + end + + add_index "journals", ["created_on"], :name => "index_journals_on_created_on" + add_index "journals", ["journalized_id", "journalized_type"], :name => "journals_journalized_id" + add_index "journals", ["journalized_id"], :name => "index_journals_on_journalized_id" + add_index "journals", ["user_id"], :name => "index_journals_on_user_id" + + create_table "journals_for_messages", :force => true do |t| + t.integer "jour_id" + t.string "jour_type" + t.integer "user_id" + t.text "notes" + t.integer "status" + t.integer "reply_id" + t.datetime "created_on", :null => false + t.datetime "updated_on", :null => false + t.string "m_parent_id" + t.boolean "is_readed" + t.integer "m_reply_count" + t.integer "m_reply_id" + t.integer "is_comprehensive_evaluation" + end + + create_table "member_roles", :force => true do |t| + t.integer "member_id", :null => false + t.integer "role_id", :null => false + t.integer "inherited_from" + end + + add_index "member_roles", ["member_id"], :name => "index_member_roles_on_member_id" + add_index "member_roles", ["role_id"], :name => "index_member_roles_on_role_id" + + create_table "members", :force => true do |t| + t.integer "user_id", :default => 0, :null => false + t.integer "project_id", :default => 0 + t.datetime "created_on" + t.boolean "mail_notification", :default => false, :null => false + t.integer "course_id", :default => -1 + t.integer "course_group_id", :default => 0 + end + + add_index "members", ["project_id"], :name => "index_members_on_project_id" + add_index "members", ["user_id", "project_id", "course_id"], :name => "index_members_on_user_id_and_project_id", :unique => true + add_index "members", ["user_id"], :name => "index_members_on_user_id" + + create_table "memos", :force => true do |t| + t.integer "forum_id", :null => false + t.integer "parent_id" + t.string "subject", :null => false + t.text "content", :null => false + t.integer "author_id", :null => false + t.integer "replies_count", :default => 0 + t.integer "last_reply_id" + t.boolean "lock", :default => false + t.boolean "sticky", :default => false + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "viewed_count", :default => 0 + end + + create_table "messages", :force => true do |t| + t.integer "board_id", :null => false + t.integer "parent_id" + t.string "subject", :default => "", :null => false + t.text "content" + t.integer "author_id" + t.integer "replies_count", :default => 0, :null => false + t.integer "last_reply_id" + t.datetime "created_on", :null => false + t.datetime "updated_on", :null => false + t.boolean "locked", :default => false + t.integer "sticky", :default => 0 + end + + add_index "messages", ["author_id"], :name => "index_messages_on_author_id" + add_index "messages", ["board_id"], :name => "messages_board_id" + add_index "messages", ["created_on"], :name => "index_messages_on_created_on" + add_index "messages", ["last_reply_id"], :name => "index_messages_on_last_reply_id" + add_index "messages", ["parent_id"], :name => "messages_parent_id" + + create_table "news", :force => true do |t| + t.integer "project_id" + t.string "title", :limit => 60, :default => "", :null => false + t.string "summary", :default => "" + t.text "description" + t.integer "author_id", :default => 0, :null => false + t.datetime "created_on" + t.integer "comments_count", :default => 0, :null => false + t.integer "course_id" + end + + add_index "news", ["author_id"], :name => "index_news_on_author_id" + add_index "news", ["created_on"], :name => "index_news_on_created_on" + add_index "news", ["project_id"], :name => "news_project_id" + + create_table "no_uses", :force => true do |t| + t.integer "user_id", :null => false + t.string "no_use_type" + t.integer "no_use_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "notificationcomments", :force => true do |t| + t.string "notificationcommented_type" + t.integer "notificationcommented_id" + t.integer "author_id" + t.text "notificationcomments" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "open_id_authentication_associations", :force => true do |t| + t.integer "issued" + t.integer "lifetime" + t.string "handle" + t.string "assoc_type" + t.binary "server_url" + t.binary "secret" + end + + create_table "open_id_authentication_nonces", :force => true do |t| + t.integer "timestamp", :null => false + t.string "server_url" + t.string "salt", :null => false + end + + create_table "open_source_projects", :force => true do |t| + t.string "name" + t.text "description" + t.integer "commit_count", :default => 0 + t.integer "code_line", :default => 0 + t.integer "users_count", :default => 0 + t.date "last_commit_time" + t.string "url" + t.date "date_collected" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "option_numbers", :force => true do |t| + t.integer "user_id" + t.integer "memo" + t.integer "messages_for_issues" + t.integer "issues_status" + t.integer "replay_for_message" + t.integer "replay_for_memo" + t.integer "follow" + t.integer "tread" + t.integer "praise_by_one" + t.integer "praise_by_two" + t.integer "praise_by_three" + t.integer "tread_by_one" + t.integer "tread_by_two" + t.integer "tread_by_three" + t.integer "changeset" + t.integer "document" + t.integer "attachment" + t.integer "issue_done_ratio" + t.integer "post_issue" + t.integer "score_type" + t.integer "total_score" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "project_id" + end + + create_table "praise_tread_caches", :force => true do |t| + t.integer "object_id", :null => false + t.string "object_type" + t.integer "praise_num" + t.integer "tread_num" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "praise_treads", :force => true do |t| + t.integer "user_id", :null => false + t.integer "praise_tread_object_id" + t.string "praise_tread_object_type" + t.integer "praise_or_tread" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "project_infos", :force => true do |t| + t.integer "project_id" + t.integer "user_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "project_scores", :force => true do |t| + t.string "project_id" + t.integer "score" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "issue_num", :default => 0 + t.integer "issue_journal_num", :default => 0 + t.integer "news_num", :default => 0 + t.integer "documents_num", :default => 0 + t.integer "changeset_num", :default => 0 + t.integer "board_message_num", :default => 0 + end + + create_table "project_statuses", :force => true do |t| + t.integer "changesets_count" + t.integer "watchers_count" + t.integer "project_id" + t.integer "project_type" + t.float "grade", :default => 0.0 + t.integer "course_ac_para", :default => 0 + end + + add_index "project_statuses", ["grade"], :name => "index_project_statuses_on_grade" + + create_table "projecting_softapplictions", :force => true do |t| + t.integer "user_id" + t.integer "softapplication_id" + t.integer "project_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "projects", :force => true do |t| + t.string "name", :default => "", :null => false + t.text "description" + t.string "homepage", :default => "" + t.boolean "is_public", :default => true, :null => false + t.integer "parent_id" + t.datetime "created_on" + t.datetime "updated_on" + t.string "identifier" + t.integer "status", :default => 1, :null => false + t.integer "lft" + t.integer "rgt" + t.boolean "inherit_members", :default => false, :null => false + t.integer "project_type" + t.boolean "hidden_repo", :default => false, :null => false + t.integer "attachmenttype", :default => 1 + t.integer "user_id" + t.integer "dts_test", :default => 0 + end + + add_index "projects", ["lft"], :name => "index_projects_on_lft" + add_index "projects", ["rgt"], :name => "index_projects_on_rgt" + + create_table "projects_trackers", :id => false, :force => true do |t| + t.integer "project_id", :default => 0, :null => false + t.integer "tracker_id", :default => 0, :null => false + end + + add_index "projects_trackers", ["project_id", "tracker_id"], :name => "projects_trackers_unique", :unique => true + add_index "projects_trackers", ["project_id"], :name => "projects_trackers_project_id" + + create_table "queries", :force => true do |t| + t.integer "project_id" + t.string "name", :default => "", :null => false + t.text "filters" + t.integer "user_id", :default => 0, :null => false + t.boolean "is_public", :default => false, :null => false + t.text "column_names" + t.text "sort_criteria" + t.string "group_by" + t.string "type" + end + + add_index "queries", ["project_id"], :name => "index_queries_on_project_id" + add_index "queries", ["user_id"], :name => "index_queries_on_user_id" + + create_table "relative_memo_to_open_source_projects", :force => true do |t| + t.integer "osp_id" + t.integer "relative_memo_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "relative_memos", :force => true do |t| + t.integer "osp_id" + t.integer "parent_id" + t.string "subject", :null => false + t.text "content", :limit => 16777215, :null => false + t.integer "author_id" + t.integer "replies_count", :default => 0 + t.integer "last_reply_id" + t.boolean "lock", :default => false + t.boolean "sticky", :default => false + t.boolean "is_quote", :default => false + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "viewed_count_crawl", :default => 0 + t.integer "viewed_count_local", :default => 0 + t.string "url" + t.string "username" + t.string "userhomeurl" + t.date "date_collected" + t.string "topic_resource" + end + + create_table "repositories", :force => true do |t| + t.integer "project_id", :default => 0, :null => false + t.string "url", :default => "", :null => false + t.string "login", :limit => 60, :default => "" + t.string "password", :default => "" + t.string "root_url", :default => "" + t.string "type" + t.string "path_encoding", :limit => 64 + t.string "log_encoding", :limit => 64 + t.text "extra_info" + t.string "identifier" + t.boolean "is_default", :default => false + end + + add_index "repositories", ["project_id"], :name => "index_repositories_on_project_id" + + create_table "rich_rich_files", :force => true do |t| + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "rich_file_file_name" + t.string "rich_file_content_type" + t.integer "rich_file_file_size" + t.datetime "rich_file_updated_at" + t.string "owner_type" + t.integer "owner_id" + t.text "uri_cache" + t.string "simplified_type", :default => "file" + end + + create_table "roles", :force => true do |t| + t.string "name", :limit => 30, :default => "", :null => false + t.integer "position", :default => 1 + t.boolean "assignable", :default => true + t.integer "builtin", :default => 0, :null => false + t.text "permissions" + t.string "issues_visibility", :limit => 30, :default => "default", :null => false + end + + create_table "schools", :force => true do |t| + t.string "name" + t.string "province" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "logo_link" + end + + create_table "seems_rateable_cached_ratings", :force => true do |t| + t.integer "cacheable_id", :limit => 8 + t.string "cacheable_type" + t.float "avg", :null => false + t.integer "cnt", :null => false + t.string "dimension" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "seems_rateable_rates", :force => true do |t| + t.integer "rater_id", :limit => 8 + t.integer "rateable_id" + t.string "rateable_type" + t.float "stars", :null => false + t.string "dimension" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "settings", :force => true do |t| + t.string "name", :default => "", :null => false + t.text "value" + t.datetime "updated_on" + end + + add_index "settings", ["name"], :name => "index_settings_on_name" + + create_table "shares", :force => true do |t| + t.date "created_on" + t.string "url" + t.string "title" + t.integer "share_type" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "project_id" + t.integer "user_id" + t.string "description" + end + + create_table "softapplications", :force => true do |t| + t.string "name" + t.text "description" + t.integer "app_type_id" + t.string "app_type_name" + t.string "android_min_version_available" + t.integer "user_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "contest_id" + t.integer "softapplication_id" + t.integer "is_public" + t.string "application_developers" + t.string "deposit_project_url" + t.string "deposit_project" + t.integer "project_id" + end + + create_table "students_for_courses", :force => true do |t| + t.integer "student_id" + t.integer "course_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "taggings", :force => true do |t| + t.integer "tag_id" + t.integer "taggable_id" + t.string "taggable_type" + t.integer "tagger_id" + t.string "tagger_type" + t.string "context", :limit => 128 + t.datetime "created_at" + end + + add_index "taggings", ["tag_id"], :name => "index_taggings_on_tag_id" + add_index "taggings", ["taggable_id", "taggable_type", "context"], :name => "index_taggings_on_taggable_id_and_taggable_type_and_context" + add_index "taggings", ["taggable_type"], :name => "index_taggings_on_taggable_type" + + create_table "tags", :force => true do |t| + t.string "name" + end + + create_table "teachers", :force => true do |t| + t.string "tea_name" + t.string "location" + t.integer "couurse_time" + t.integer "course_code" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "extra" + end + + create_table "time_entries", :force => true do |t| + t.integer "project_id", :null => false + t.integer "user_id", :null => false + t.integer "issue_id" + t.float "hours", :null => false + t.string "comments" + t.integer "activity_id", :null => false + t.date "spent_on", :null => false + t.integer "tyear", :null => false + t.integer "tmonth", :null => false + t.integer "tweek", :null => false + t.datetime "created_on", :null => false + t.datetime "updated_on", :null => false + end + + add_index "time_entries", ["activity_id"], :name => "index_time_entries_on_activity_id" + add_index "time_entries", ["created_on"], :name => "index_time_entries_on_created_on" + add_index "time_entries", ["issue_id"], :name => "time_entries_issue_id" + add_index "time_entries", ["project_id"], :name => "time_entries_project_id" + add_index "time_entries", ["user_id"], :name => "index_time_entries_on_user_id" + + create_table "tokens", :force => true do |t| + t.integer "user_id", :default => 0, :null => false + t.string "action", :limit => 30, :default => "", :null => false + t.string "value", :limit => 40, :default => "", :null => false + t.datetime "created_on", :null => false + end + + add_index "tokens", ["user_id"], :name => "index_tokens_on_user_id" + add_index "tokens", ["value"], :name => "tokens_value", :unique => true + + create_table "trackers", :force => true do |t| + t.string "name", :limit => 30, :default => "", :null => false + t.boolean "is_in_chlog", :default => false, :null => false + t.integer "position", :default => 1 + t.boolean "is_in_roadmap", :default => true, :null => false + t.integer "fields_bits", :default => 0 + end + + create_table "user_extensions", :force => true do |t| + t.integer "user_id", :null => false + t.date "birthday" + t.string "brief_introduction" + t.integer "gender" + t.string "location" + t.string "occupation" + t.integer "work_experience" + t.integer "zip_code" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "technical_title" + t.integer "identity" + t.string "student_id" + t.string "teacher_realname" + t.string "student_realname" + t.string "location_city" + t.integer "school_id" + end + + create_table "user_grades", :force => true do |t| + t.integer "user_id", :null => false + t.integer "project_id", :null => false + t.float "grade", :default => 0.0 + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + add_index "user_grades", ["grade"], :name => "index_user_grades_on_grade" + add_index "user_grades", ["project_id"], :name => "index_user_grades_on_project_id" + add_index "user_grades", ["user_id"], :name => "index_user_grades_on_user_id" + + create_table "user_levels", :force => true do |t| + t.integer "user_id" + t.integer "level" + end + + create_table "user_preferences", :force => true do |t| + t.integer "user_id", :default => 0, :null => false + t.text "others" + t.boolean "hide_mail", :default => false + t.string "time_zone" + end + + add_index "user_preferences", ["user_id"], :name => "index_user_preferences_on_user_id" + + create_table "user_score_details", :force => true do |t| + t.integer "current_user_id" + t.integer "target_user_id" + t.string "score_type" + t.string "score_action" + t.integer "user_id" + t.integer "old_score" + t.integer "new_score" + t.integer "current_user_level" + t.integer "target_user_level" + t.integer "score_changeable_obj_id" + t.string "score_changeable_obj_type" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "user_scores", :force => true do |t| + t.integer "user_id", :null => false + t.integer "collaboration" + t.integer "influence" + t.integer "skill" + t.integer "active" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "user_statuses", :force => true do |t| + t.integer "changesets_count" + t.integer "watchers_count" + t.integer "user_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.float "grade", :default => 0.0 + end + + add_index "user_statuses", ["changesets_count"], :name => "index_user_statuses_on_changesets_count" + add_index "user_statuses", ["grade"], :name => "index_user_statuses_on_grade" + add_index "user_statuses", ["watchers_count"], :name => "index_user_statuses_on_watchers_count" + + create_table "users", :force => true do |t| + t.string "login", :default => "", :null => false + t.string "hashed_password", :limit => 40, :default => "", :null => false + t.string "firstname", :limit => 30, :default => "", :null => false + t.string "lastname", :default => "", :null => false + t.string "mail", :limit => 60, :default => "", :null => false + t.boolean "admin", :default => false, :null => false + t.integer "status", :default => 1, :null => false + t.datetime "last_login_on" + t.string "language", :limit => 5, :default => "" + t.integer "auth_source_id" + t.datetime "created_on" + t.datetime "updated_on" + t.string "type" + t.string "identity_url" + t.string "mail_notification", :default => "", :null => false + t.string "salt", :limit => 64 + end + + add_index "users", ["auth_source_id"], :name => "index_users_on_auth_source_id" + add_index "users", ["id", "type"], :name => "index_users_on_id_and_type" + add_index "users", ["type"], :name => "index_users_on_type" + + create_table "versions", :force => true do |t| + t.integer "project_id", :default => 0, :null => false + t.string "name", :default => "", :null => false + t.string "description", :default => "" + t.date "effective_date" + t.datetime "created_on" + t.datetime "updated_on" + t.string "wiki_page_title" + t.string "status", :default => "open" + t.string "sharing", :default => "none", :null => false + end + + add_index "versions", ["project_id"], :name => "versions_project_id" + add_index "versions", ["sharing"], :name => "index_versions_on_sharing" + + create_table "watchers", :force => true do |t| + t.string "watchable_type", :default => "", :null => false + t.integer "watchable_id", :default => 0, :null => false + t.integer "user_id" + end + + add_index "watchers", ["user_id", "watchable_type"], :name => "watchers_user_id_type" + add_index "watchers", ["user_id"], :name => "index_watchers_on_user_id" + add_index "watchers", ["watchable_id", "watchable_type"], :name => "index_watchers_on_watchable_id_and_watchable_type" + + create_table "web_footer_companies", :force => true do |t| + t.string "name" + t.string "logo_size" + t.string "url" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "web_footer_oranizers", :force => true do |t| + t.string "name" + t.text "description" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "wiki_content_versions", :force => true do |t| + t.integer "wiki_content_id", :null => false + t.integer "page_id", :null => false + t.integer "author_id" + t.binary "data", :limit => 2147483647 + t.string "compression", :limit => 6, :default => "" + t.string "comments", :default => "" + t.datetime "updated_on", :null => false + t.integer "version", :null => false + end + + add_index "wiki_content_versions", ["updated_on"], :name => "index_wiki_content_versions_on_updated_on" + add_index "wiki_content_versions", ["wiki_content_id"], :name => "wiki_content_versions_wcid" + + create_table "wiki_contents", :force => true do |t| + t.integer "page_id", :null => false + t.integer "author_id" + t.text "text", :limit => 2147483647 + t.string "comments", :default => "" + t.datetime "updated_on", :null => false + t.integer "version", :null => false + end + + add_index "wiki_contents", ["author_id"], :name => "index_wiki_contents_on_author_id" + add_index "wiki_contents", ["page_id"], :name => "wiki_contents_page_id" + + create_table "wiki_pages", :force => true do |t| + t.integer "wiki_id", :null => false + t.string "title", :null => false + t.datetime "created_on", :null => false + t.boolean "protected", :default => false, :null => false + t.integer "parent_id" + end + + add_index "wiki_pages", ["parent_id"], :name => "index_wiki_pages_on_parent_id" + add_index "wiki_pages", ["wiki_id", "title"], :name => "wiki_pages_wiki_id_title" + add_index "wiki_pages", ["wiki_id"], :name => "index_wiki_pages_on_wiki_id" + + create_table "wiki_redirects", :force => true do |t| + t.integer "wiki_id", :null => false + t.string "title" + t.string "redirects_to" + t.datetime "created_on", :null => false + end + + add_index "wiki_redirects", ["wiki_id", "title"], :name => "wiki_redirects_wiki_id_title" + add_index "wiki_redirects", ["wiki_id"], :name => "index_wiki_redirects_on_wiki_id" + + create_table "wikis", :force => true do |t| + t.integer "project_id", :null => false + t.string "start_page", :null => false + t.integer "status", :default => 1, :null => false + end + + add_index "wikis", ["project_id"], :name => "wikis_project_id" + + create_table "workflows", :force => true do |t| + t.integer "tracker_id", :default => 0, :null => false + t.integer "old_status_id", :default => 0, :null => false + t.integer "new_status_id", :default => 0, :null => false + t.integer "role_id", :default => 0, :null => false + t.boolean "assignee", :default => false, :null => false + t.boolean "author", :default => false, :null => false + t.string "type", :limit => 30 + t.string "field_name", :limit => 30 + t.string "rule", :limit => 30 + end + + add_index "workflows", ["new_status_id"], :name => "index_workflows_on_new_status_id" + add_index "workflows", ["old_status_id"], :name => "index_workflows_on_old_status_id" + add_index "workflows", ["role_id", "tracker_id", "old_status_id"], :name => "wkfs_role_tracker_old_status" + add_index "workflows", ["role_id"], :name => "index_workflows_on_role_id" + + create_table "works_categories", :force => true do |t| + t.string "category" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + +end From 53d85136a3df36b4cd041695d7b4679397f548ff Mon Sep 17 00:00:00 2001 From: = Date: Thu, 18 Dec 2014 14:48:14 +0800 Subject: [PATCH 041/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E4=B8=AD=E4=B8=80=E4=B8=AA=E9=94=99=E8=AF=AF=EF=BC=8C=E5=AE=8C?= =?UTF-8?q?=E5=96=84=E5=8C=BF=E8=AF=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/courses_controller.rb | 3 +-- app/services/homework_service.rb | 31 ++++++++++++++++++++++----- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 2b0e51722..519afb6a8 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -265,8 +265,7 @@ class CoursesController < ApplicationController @members = cs.course_teacher_or_student_list(params,@course,User.current) @members = paginateHelper @members render :layout => 'base_courses' - - rescue Exception => e + end if e.message == '403' render_403 end diff --git a/app/services/homework_service.rb b/app/services/homework_service.rb index f40c4f0ef..f11e859d1 100644 --- a/app/services/homework_service.rb +++ b/app/services/homework_service.rb @@ -8,7 +8,7 @@ class HomeworkService def show_homework params @bid = Bid.find(params[:id]) course = @bid.courses.first - is_teacher = is_course_teacher(User.current,course) + is_teacher = is_course_teacher(User.current, course) author = @bid.author.firstname + @bid.author.lastname many_times = course.homeworks.index(@bid) + 1 name = @bid.name @@ -53,11 +53,32 @@ class HomeworkService #匿评作品详情 def anonymous_works_show params - @homework = HomeworkAttach.find(params[:id]) - if User.current.admin? || User.current.member_of_course?(@homework.bid.courses.first) - + @homework = HomeworkAttach.find(params[:homework_id]) + name = @homework.name + desc = @homework.description + datetime = @homework.created_at + unless @homework.attachments.empty? + attachs = @homework.attachments + attachs.each do |attach| + filename = attach.name + filedesc = attach.description unless attachment.description.blank? + end + end + end + + #作品打分 + def add_score_and_jour + @is_teacher,@is_anonymous_comments,@m_score = params[:is_teacher]=="true",params[:is_anonymous_comments]=="true",params[:stars_value] + @cur_page,@cur_type = params[:cur_page] || 1,params[:cur_type] || 5 + @homework = HomeworkAttach.find(params[:homework_id]) + #保存评分 + @homework.rate(@m_score.to_i,User.current.id,:quality) if @m_score + #保存评论 + @is_comprehensive_evaluation = @is_teacher ? 1 : (@is_anonymous_comments ? 2 : 3) #判断当前评论是老师评论?匿评?留言 + if params[:new_form] && params[:new_form][:user_message] && params[:new_form][:user_message] != "" #有没有留言 + @homework.addjours User.current.id, params[:new_form][:user_message],0,@is_comprehensive_evaluation end end - # + end \ No newline at end of file From 226d5e98899a1bdd783f69fca2bdc454fb78c9b6 Mon Sep 17 00:00:00 2001 From: = Date: Thu, 18 Dec 2014 17:20:21 +0800 Subject: [PATCH 042/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E8=AF=A6=E3=80=81=E5=8C=BF=E8=AF=84=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E4=BD=9C=E5=93=81=E7=95=99=E8=A8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/bids_controller.rb | 23 ++-------------- app/services/homework_service.rb | 42 +++++++++++++++++++----------- 2 files changed, 29 insertions(+), 36 deletions(-) diff --git a/app/controllers/bids_controller.rb b/app/controllers/bids_controller.rb index 2997f4205..023c9da69 100644 --- a/app/controllers/bids_controller.rb +++ b/app/controllers/bids_controller.rb @@ -1048,27 +1048,8 @@ class BidsController < ApplicationController end def alert_anonymous_comment - @bid = Bid.find params[:id] - @course = @bid.courses.first - if @bid.comment_status == 0 - @totle_size = searchStudent(@course).size - @cur_size = @bid.homeworks.size - elsif @bid.comment_status == 1 - @totle_size = 0 - @bid.homeworks.map { |homework| @totle_size += homework.homework_evaluations.count} - teachers = "(" - teacher_members = searchTeacherAndAssistant(@course) - teacher_members.each do |member| - if member == teacher_members.last - teachers += member.user_id.to_s + ")" - else - teachers += member.user_id.to_s + "," - end - end - @cur_size = 0 - @bid.homeworks.map { |homework| @cur_size += homework.rates(:quality).where("seems_rateable_rates.rater_id not in #{teachers}").count} - end - @percent = format("%.2f",(@cur_size.to_f / ( @totle_size == 0 ? 1 : @totle_size)) * 100) + hws = HomeworkService.new + @bid,@totle_size,@cur_size,@percent = hws.alert_homework_anonymous_comment(params) respond_to do |format| format.js end diff --git a/app/services/homework_service.rb b/app/services/homework_service.rb index f11e859d1..dd5fb9dca 100644 --- a/app/services/homework_service.rb +++ b/app/services/homework_service.rb @@ -1,28 +1,23 @@ +#coding=utf-8 class HomeworkService + include CoursesHelper + include AttachmentsHelper #作业详情(老师才显示启动匿评,学生不显示 ) - #bid.comment_status=0 启动匿评 - #bid.comment_status=1 关闭匿评 #many_times 第几次(作业) - #is_teacher 判断是否为该课程老师 + #@state=0 启动匿评 + #@state=1 关闭匿评 + #@state=2 匿评结束 def show_homework params @bid = Bid.find(params[:id]) course = @bid.courses.first - is_teacher = is_course_teacher(User.current, course) author = @bid.author.firstname + @bid.author.lastname many_times = course.homeworks.index(@bid) + 1 name = @bid.name homework_count = @bid.homeworks.count description = @bid.description - if is_teacher && bid.open_anonymous_evaluation == 1 && bid.homeworks.count >= 2 - case bid.comment_status - when 0 - alert_anonymous_comment_bid_path(bid) - when 1 - alert_anonymous_comment_bid_path(bid) - when 2 - raise '匿评结束' - end + if is_course_teacher(User.current, course) && @bid.open_anonymous_evaluation == 1 && @bid.homeworks.count >= 2 + @state = bid.comment_status end end @@ -49,6 +44,7 @@ class HomeworkService @bid.homeworks.map { |homework| @cur_size += homework.rates(:quality).where("seems_rateable_rates.rater_id not in #{teachers}").count} end @percent = format("%.2f",(@cur_size.to_f / ( @totle_size == 0 ? 1 : @totle_size)) * 100) + [@bid,@totle_size,@cur_size,@percent] end #匿评作品详情 @@ -66,8 +62,8 @@ class HomeworkService end end - #作品打分 - def add_score_and_jour + #作品打分/留言 + def add_score_and_jour params @is_teacher,@is_anonymous_comments,@m_score = params[:is_teacher]=="true",params[:is_anonymous_comments]=="true",params[:stars_value] @cur_page,@cur_type = params[:cur_page] || 1,params[:cur_type] || 5 @homework = HomeworkAttach.find(params[:homework_id]) @@ -80,5 +76,21 @@ class HomeworkService end end + #作品留言 + def get_works_jours params + @bid = Bid.find params[:id] + @user = @bid.author + @jours = @bid.journals_for_messages.where('m_parent_id IS NULL').order('created_on DESC') + @jour = paginateHelper @jours,10 + end + + #匿评作品老师评论 + #匿评作品学生评论列表TODO:未完成,需继续 + def anonmous_works_list + @is_teacher,@is_anonymous_comments,@m_score = params[:is_teacher]=="true",params[:is_anonymous_comments]=="true",params[:stars_value] + @cur_page,@cur_type = params[:cur_page] || 1,params[:cur_type] || 5 + @homework = HomeworkAttach.find(params[:homework_id]) + @stars_reates = @homework.rates(:quality) + end end \ No newline at end of file From ddba71decf5d5edee2ffa11aecaef0ac05eff902 Mon Sep 17 00:00:00 2001 From: z9han Date: Fri, 19 Dec 2014 17:37:37 +0800 Subject: [PATCH 043/192] =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E7=9A=84=E6=89=80?= =?UTF-8?q?=E6=9C=89=E8=AF=BE=E7=A8=8B=E6=8E=A5=E5=8F=A3=E3=80=81=E8=AF=BE?= =?UTF-8?q?=E7=A8=8B=E7=9A=84=E6=89=80=E6=9C=89=E8=AF=BE=E7=A8=8B=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=8F=8A=E7=95=99=E8=A8=80=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/courses_service.rb | 63 ++++++++++++++++++++++++++++++++ app/services/homework_service.rb | 2 +- 2 files changed, 64 insertions(+), 1 deletion(-) diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index 09e4289b5..96766acfd 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -228,4 +228,67 @@ class CoursesService end end + #我的课程列表 + def my_course_list params,current_user + unless current_user.admin? + if !current_user.active? + raise '404' #当前账户不可访问,返回404(可视为当前用户不存在) + end + end + membership = @user.coursememberships.all + membership.sort! {|older, newer| newer.created_on <=> older.created_on } + + end + + #课程作业列表 + def course_homework_list course,current_user + if course.is_public != 0 || current_user.member_of_course?(course) || current_user.admin? + @bids = course.homeworks.order('deadline DESC') + else + raise '403' + end + end + + #obj 回复所属父留言的留言对象 + def create_reply params,obj + parent_id = params[:reference_id] + author_id = User.current.id + reply_user_id = params[:reference_user_id] + reply_id = params[:reference_message_id] # 暂时不实现 + content = params[:user_notes] + @show_name = params[:show_name] == "true" + options = {:user_id => author_id, + :status => true, + :m_parent_id => parent_id, + :m_reply_id => reply_id, + :reply_id => reply_user_id, + :notes => content, + :is_readed => false} + @jfm = add_reply_adapter options,obj + [@show_name,@jfm] + end + + def add_reply_adapter options,obj + #添加对课程留言的支持 + #留言回复应该不关系其所属的Class,而关心的是其所属的父留言 + #obj = obj_distinguish_url_origin || User.find_by_id(2) + if obj.kind_of? User + obj.add_jour(nil, nil, nil, options) + elsif obj.kind_of? Project + Project.add_new_jour(nil, nil, obj.id, options) + elsif obj.kind_of? Course + Course.add_new_jour(nil, nil, obj.id, options) + elsif obj.kind_of? Bid + obj.add_jour(nil, nil, nil, options) + elsif obj.kind_of? Contest + obj.add_jour(nil, nil, obj.id, options) #new added + elsif obj.kind_of? Softapplication + obj.add_jour(nil, nil, obj.id, options) #new added + elsif obj.kind_of? HomeworkAttach + obj.add_jour(nil, nil, obj.id, options) #new added + else + raise "create reply obj unknow type.#{obj.class}" + end + end + end \ No newline at end of file diff --git a/app/services/homework_service.rb b/app/services/homework_service.rb index dd5fb9dca..a27757917 100644 --- a/app/services/homework_service.rb +++ b/app/services/homework_service.rb @@ -18,7 +18,7 @@ class HomeworkService description = @bid.description if is_course_teacher(User.current, course) && @bid.open_anonymous_evaluation == 1 && @bid.homeworks.count >= 2 @state = bid.comment_status - end + end end #启动作业匿评 From 57091b34f4b5e5885189ea33cef0174e435699ae Mon Sep 17 00:00:00 2001 From: = Date: Sat, 20 Dec 2014 13:00:13 +0800 Subject: [PATCH 044/192] =?UTF-8?q?=E8=80=81=E5=B8=88=E3=80=81=E5=AD=A6?= =?UTF-8?q?=E7=94=9F=E5=8C=BF=E8=AF=84=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/homework_service.rb | 92 ++++++++++++++++++++++++++------ 1 file changed, 75 insertions(+), 17 deletions(-) diff --git a/app/services/homework_service.rb b/app/services/homework_service.rb index dd5fb9dca..914889c68 100644 --- a/app/services/homework_service.rb +++ b/app/services/homework_service.rb @@ -2,12 +2,14 @@ class HomeworkService include CoursesHelper include AttachmentsHelper - - #作业详情(老师才显示启动匿评,学生不显示 ) - #many_times 第几次(作业) - #@state=0 启动匿评 - #@state=1 关闭匿评 - #@state=2 匿评结束 + include ApplicationHelper + include WordsHelper + + # 作业详情(老师才显示启动匿评,学生不显示 ) + # many_times 第几次(作业) + # state=0 启动匿评 + # state=1 关闭匿评 + # state=2 匿评结束 def show_homework params @bid = Bid.find(params[:id]) course = @bid.courses.first @@ -17,11 +19,13 @@ class HomeworkService homework_count = @bid.homeworks.count description = @bid.description if is_course_teacher(User.current, course) && @bid.open_anonymous_evaluation == 1 && @bid.homeworks.count >= 2 - @state = bid.comment_status - end + state = bid.comment_status + end + {:course => 'course', :atuthor => 'author', :many_times => 'many_times', :name => 'name', :homework_count => 'homework_count', + :descriptiong => 'description', :state => 'state'} end - #启动作业匿评 + # 启动作业匿评 def alert_homework_anonymous_comment params @bid = Bid.find params[:id] @course = @bid.courses.first @@ -47,7 +51,10 @@ class HomeworkService [@bid,@totle_size,@cur_size,@percent] end - #匿评作品详情 + # 匿评作品详情 + # attachs 该作品的所有附件 + # filename 文件名 + # filedesc 文件描述 def anonymous_works_show params @homework = HomeworkAttach.find(params[:homework_id]) name = @homework.name @@ -60,6 +67,8 @@ class HomeworkService filedesc = attach.description unless attachment.description.blank? end end + {:name => 'name', :description => 'desc', :datetime => 'datetime', + :attchs => 'attachs', :filename => 'filename', :filedesc => 'filedesc'} end #作品打分/留言 @@ -76,21 +85,70 @@ class HomeworkService end end - #作品留言 - def get_works_jours params + #作品留言列表 + def get_works_jours_list params @bid = Bid.find params[:id] @user = @bid.author @jours = @bid.journals_for_messages.where('m_parent_id IS NULL').order('created_on DESC') @jour = paginateHelper @jours,10 + @jour end - #匿评作品老师评论 - #匿评作品学生评论列表TODO:未完成,需继续 - def anonmous_works_list - @is_teacher,@is_anonymous_comments,@m_score = params[:is_teacher]=="true",params[:is_anonymous_comments]=="true",params[:stars_value] - @cur_page,@cur_type = params[:cur_page] || 1,params[:cur_type] || 5 + # 学生匿评留言列表 + def anonymous_jour_list params + #jours留言 is null条件用以兼容历史数据 + jours = @homework.journals_for_messages.where("is_comprehensive_evaluation = 3 or is_comprehensive_evaluation is null").order("created_on DESC") + jours.each do |jour| + user = jour.user + img_url = url_to_avatar(jour.user) + datetime = jour.created_on + content = jour.notes + end + {:user => 'user', :img_url => 'img_url', :datetime => 'datetime', :content => 'content'} + end + + # 匿评教师留言/回复列表 + # 图像img_url = url_to_avatar(user) + # massage_user 留言者 + # parent_jour被回复的留言 + def teacher_jour_list params @homework = HomeworkAttach.find(params[:homework_id]) @stars_reates = @homework.rates(:quality) + @teacher_stars = @stars_reates.where("rater_id in (#{teachers})") #老师评分列表 + @teacher_stars.each do |ts| + #留言参数 + jour = get_homework_review @homework,true,massage_user + massage_content = jour.notes unless jour.nil? + massage_user = ts.rater + massage_score = ts.stars + #回复参数 + anonymous_repy(jour) + end end + # 学生匿评列表 + def student_jour_list params + @homework = HomeworkAttach.find(params[:homework_id]) + @stars_reates = @homework.rates(:quality) + @student_stars = @stars_reates.where("rater_id not in (#{teachers})") #学生评分列表 + @student_stars.each do |ss| + #留言参数 + massage_user = ss.rater + jour = get_homework_review @homework,false,massage_user + massage_score = ss.stars + massage_content = jour.notes unless jour.nil? + #回复参数 + anonymous_repy(jour) + end + end + + def anonymous_repy jour + fetch_user_leaveWord_reply(jour).each do |fulr| + parent_jour = JournalsForMessage.where("id = #{fulr.m_reply_id}").first + reply_name = fulr.user.name + parent_name = parent_jour.user.name if parent_jour + reply_content = fulr.notes + reply_time = fulr.created_on + end + end end \ No newline at end of file From 8fe5fee0f0da968d04e9ad6b66e58fdf2bfc9aff Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 23 Dec 2014 09:44:31 +0800 Subject: [PATCH 045/192] =?UTF-8?q?=E6=90=9C=E7=B4=A2=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/entities/course.rb | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/app/api/mobile/entities/course.rb b/app/api/mobile/entities/course.rb index b9823d9ac..8e5609f32 100644 --- a/app/api/mobile/entities/course.rb +++ b/app/api/mobile/entities/course.rb @@ -3,10 +3,17 @@ module Mobile class Course < Grape::Entity def self.course_expose(field) expose field do |f,opt| - f[:course][field] || f[:course].__send__(field) + o = nil + o = f.img_url if f.respond_to?(:img_url) + if f.is_a? ::Course + o = f.send(field) if f.respond_to?(field) + else + f[:course][field] || f[:course].__send__(field) + end + o end end - expose :img_url + course_expose :img_url course_expose :attachmenttype course_expose :class_period course_expose :code From d6aadc1624c399d140fe53d468e31770ba825054 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 23 Dec 2014 10:05:29 +0800 Subject: [PATCH 046/192] =?UTF-8?q?=E6=90=9C=E7=B4=A2=E5=92=8C=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E4=B8=AD=E7=9A=84=E8=AF=BE=E7=A8=8B=E8=80=81=E5=B8=88?= =?UTF-8?q?=E8=BE=93=E5=87=BA=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/entities/course.rb | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/app/api/mobile/entities/course.rb b/app/api/mobile/entities/course.rb index 8e5609f32..0dd0d6aeb 100644 --- a/app/api/mobile/entities/course.rb +++ b/app/api/mobile/entities/course.rb @@ -3,14 +3,17 @@ module Mobile class Course < Grape::Entity def self.course_expose(field) expose field do |f,opt| - o = nil - o = f.img_url if f.respond_to?(:img_url) + c = nil if f.is_a? ::Course - o = f.send(field) if f.respond_to?(field) + c = f else - f[:course][field] || f[:course].__send__(field) + c = f[:course] + end + if field == :img_url + f.img_url if f.respond_to?(:img_url) + else + (c[field] if (c.is_a?(Hash) && c.key?(field))) || (c.send(field) if c.respond_to?(field)) end - o end end course_expose :img_url @@ -39,7 +42,13 @@ module Mobile course_expose :term course_expose :time course_expose :updated_at - course_expose :teacher + expose :teacher, using: Mobile::Entities::User do |c, opt| + if c.is_a? ::Course + c.teacher + else + c[:course].teacher + end + end end end end From 9d99eee92eb33963b5a28f352e0cf0318a34ce36 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 23 Dec 2014 10:16:23 +0800 Subject: [PATCH 047/192] =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B2=A1=E4=BC=A0userid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/users.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index ab74c16e6..975ac6c2c 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -49,7 +49,8 @@ module Mobile post 'password' do authenticate! us = UsersService.new - ue = us.change_password params.merge(new_password_confirmation: params[:new_password]) + ue = us.change_password params.merge(current_user_id: current_user.id, + new_password_confirmation: params[:new_password]) present :data, user, with: Mobile::Entities::User present :status, 0 end From 7f1826ebf2e83603cc98bd2edace738f372df5ea Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 23 Dec 2014 10:22:05 +0800 Subject: [PATCH 048/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=AA=E4=BA=BA?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/users.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index 975ac6c2c..b47d8f61e 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -35,7 +35,7 @@ module Mobile authenticate! us = UsersService.new ue = us.edit_user params.merge(id: current_user.id) - present :data, user, with: Mobile::Entities::User + present :data, ue.user, with: Mobile::Entities::User present :status, 0 end From 93762e89d37895fb627fcdbd0b932f5ef01a8f2c Mon Sep 17 00:00:00 2001 From: z9han Date: Tue, 23 Dec 2014 11:07:17 +0800 Subject: [PATCH 049/192] =?UTF-8?q?=20=E4=BF=AE=E6=94=B9=E5=8A=A0=E5=85=A5?= =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E3=80=81=E9=80=80=E5=87=BA=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=B0=83=E7=94=A8=EF=BC=8C=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E8=AF=BE=E7=A8=8B=EF=BC=8C=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E7=9A=84=E5=8F=82=E6=95=B0=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/courses.rb | 4 ++-- app/controllers/courses_controller.rb | 2 +- app/services/courses_service.rb | 32 ++++++++++++++++++++++++--- 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index 21fec6241..69848a1f4 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -34,7 +34,7 @@ module Mobile post ":id" do authenticate! cs = CoursesService.new - status = cs.join_course({"object_id" => params[:id]},current_user.id) + status = cs.join_course({"object_id" => params[:id]},current_user) out = {status: status} message = case status when 0; "加入成功" @@ -54,7 +54,7 @@ module Mobile delete ":id" do authenticate! cs = CoursesService.new - cs.exit_course({"object_id" => params[:id]}, current_user.id) + cs.exit_course({"object_id" => params[:id]}, current_user) {status: 0} end diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 519afb6a8..985c33aab 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -428,7 +428,7 @@ class CoursesController < ApplicationController def create cs = CoursesService.new - @course = cs.create_course params + @course = cs.create_course params,User.current if @course.new_record? respond_to do |format| format.html { render :action => 'new', :layout => 'base' } #Added by young diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index 09e4289b5..6e2c84e65 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -49,7 +49,7 @@ class CoursesService url_to_avatar(obj) end - #课程老师或课程学生列表 TODO:更新业务逻辑,当前版本未包含分班功能 + #课程老师或课程学生列表 def course_teacher_or_student_list params,course,current_user if course.is_a?(Course) c = course @@ -110,8 +110,20 @@ class CoursesService end #创建课程 - def create_course params - if User.current.user_extensions.identity + #current_user当前用户对象(不是id) + # params[:course][:name]:课程名称 + #params[:course][:password]:密码 + #params[:course][:description]:描述 + #params[:course][:is_public]:是否公开1公开,0私有 + #params[:course][:open_student]:是否公开学生列表1公开,0不公开,不公开时非课程成员无法看到学生列表 + #params[:course][:course_type]:暂时默认给1值。 + #params[:term]:学期(秋季学期或春季学期) + #params[:time]: 年份(例:2014) + #params[:setup_time]:暂不传(貌似已经没用了) + #params[:endup_time]: 暂不传(貌似已经没用了) + #params[:class_period]:学时总数 + def create_course params,current_user + if current_user.user_extensions.identity @course = Course.new @course.extra = 'course' + DateTime.parse(Time.now.to_s).strftime('%Y-%m-%d_%H-%M-%S').to_s @course.safe_attributes = params[:course] @@ -145,6 +157,7 @@ class CoursesService end #验证编辑课程的权限 + #当前 def edit_course_authorize(current_user,course) unless current_user.allowed_to?({:controller => 'courses', :action => 'update'}, course) raise '403' @@ -152,6 +165,15 @@ class CoursesService end #编辑课程 需验证权限 + # params[:course][:name]:课程名称 + #params[:course][:password]:密码 + #params[:course][:description]:描述 + #params[:course][:is_public]:是否公开1公开,0私有 + #params[:course][:open_student]:是否公开学生列表1公开,0不公开,不公开时非课程成员无法看到学生列表 + #params[:course][:course_type]:暂时默认给1值。 + #params[:term]:学期(秋季学期或春季学期) + #params[:time]: 年份(例:2014) + #params[:class_period]:学时总数 def edit_course params,course course.safe_attributes = params[:course] course.time = params[:time] @@ -171,6 +193,8 @@ class CoursesService end #退出课程 + #object_id: 课程id + #user:当前用户 def exit_course params,user @member = Member.where('course_id = ? and user_id = ?', params[:object_id], user.id) @member.first.destroy @@ -182,6 +206,8 @@ class CoursesService end #加入课程 + #object_id:课程id + #course_password :加入课程的密码 #@state == 0 加入成功 #@state == 1 密码错误 #@state == 2 课程已过期 请联系课程管理员重启课程。(在配置课程处) From d7557e2839557549a61a7a26805d64268770c49c Mon Sep 17 00:00:00 2001 From: z9han Date: Tue, 23 Dec 2014 14:46:23 +0800 Subject: [PATCH 050/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E9=94=99=E8=AF=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/users.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index b47d8f61e..a566b702d 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -49,7 +49,7 @@ module Mobile post 'password' do authenticate! us = UsersService.new - ue = us.change_password params.merge(current_user_id: current_user.id, + user = us.change_password params.merge(current_user_id: current_user.id, new_password_confirmation: params[:new_password]) present :data, user, with: Mobile::Entities::User present :status, 0 From 5ee37f32e25ae7aa7736d624aaded80a49a2ef1b Mon Sep 17 00:00:00 2001 From: z9han Date: Tue, 23 Dec 2014 15:24:18 +0800 Subject: [PATCH 051/192] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E5=AD=A6=E7=94=9F?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E3=80=81=E6=95=99=E5=B8=88=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/courses_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index 6e2c84e65..dee7af56d 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -56,7 +56,7 @@ class CoursesService else c = Course.find(course) end - if !(current_user.admin? || c.is_public == 1 || (c.is_public == 0 && current_user.member_of_course?(c))) + if current_user.nil? || !(current_user.admin? || c.is_public == 1 || (c.is_public == 0 && current_user.member_of_course?(c))) raise '403' end @teachers= searchTeacherAndAssistant(c) From 4518fe43554b4b19ec8ed6b3cb137a1c462d6f91 Mon Sep 17 00:00:00 2001 From: z9han Date: Tue, 23 Dec 2014 15:35:22 +0800 Subject: [PATCH 052/192] test --- app/api/mobile/api.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb index 064641de3..7d6aec11e 100644 --- a/app/api/mobile/api.rb +++ b/app/api/mobile/api.rb @@ -15,6 +15,7 @@ module Mobile raise('Unauthorized. Invalid or expired token.') unless current_user end + def current_user token = ApiKey.where(access_token: params[:token]).first if token && !token.expired? From 50a242a56b6b678d2c616f4523c73a643f149be1 Mon Sep 17 00:00:00 2001 From: z9hang Date: Tue, 23 Dec 2014 15:38:45 +0800 Subject: [PATCH 053/192] test --- app/api/mobile/api.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb index 7d6aec11e..064641de3 100644 --- a/app/api/mobile/api.rb +++ b/app/api/mobile/api.rb @@ -15,7 +15,6 @@ module Mobile raise('Unauthorized. Invalid or expired token.') unless current_user end - def current_user token = ApiKey.where(access_token: params[:token]).first if token && !token.expired? From 40d06011f82cf236333138cf192fd3b7566360df Mon Sep 17 00:00:00 2001 From: z9hang Date: Tue, 23 Dec 2014 15:38:45 +0800 Subject: [PATCH 054/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=9A=84=E8=AF=BE=E7=A8=8B=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/api.rb | 1 - app/services/users_service.rb | 7 ++++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb index 7d6aec11e..064641de3 100644 --- a/app/api/mobile/api.rb +++ b/app/api/mobile/api.rb @@ -15,7 +15,6 @@ module Mobile raise('Unauthorized. Invalid or expired token.') unless current_user end - def current_user token = ApiKey.where(access_token: params[:token]).first if token && !token.expired? diff --git a/app/services/users_service.rb b/app/services/users_service.rb index 9fb698056..2996bc91d 100644 --- a/app/services/users_service.rb +++ b/app/services/users_service.rb @@ -114,12 +114,13 @@ class UsersService end #用户课程列表 - def user_courses_list params - if !User.current.admin? && !@user.active? + def user_courses_list params,current_user + @user = User.find(params[:id]) + if !current_user.admin? && !@user.active? raise '404' return end - if User.current == @user || User.current.admin? + if current_user == @user || current_user.admin? membership = @user.coursememberships.all else membership = @user.coursememberships.all(:conditions => Course.visible_condition(User.current)) From 550577e9423cc20242d922c09f4179369a8ced0c Mon Sep 17 00:00:00 2001 From: z9hang Date: Tue, 23 Dec 2014 17:43:53 +0800 Subject: [PATCH 055/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=8E=A5=E5=8F=A3=E7=9A=84=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/users_service.rb | 36 +++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/app/services/users_service.rb b/app/services/users_service.rb index 2996bc91d..c1ac062df 100644 --- a/app/services/users_service.rb +++ b/app/services/users_service.rb @@ -45,17 +45,8 @@ class UsersService @user = User.find(params[:id]) img_url = url_to_avatar(@user) gender = @user.user_extensions.gender.nil? ? 0 : @user.user_extensions.gender - work_unit = "" - if @user.user_extensions.identity == 0 || @user.user_extensions.identity == 1 - work_unit = @user.user_extensions.school.name unless @user.user_extensions.school.nil? - elsif @user.user_extensions.identity == 3 - work_unit = @user.user_extensions.occupation - elsif @user.user_extensions.identity == 2 - work_unit = @user.firstname - end - location = "" - location << (@user.user_extensions.location || '') - location << (@user.user_extensions.location_city || '') + work_unit = get_user_work_unit @user + location = get_user_location @user {:id => @user.id, :img_url => img_url, :nickname => @user.login, :gender => gender, :work_unit => work_unit, :mail => @user.mail, :location => location, :brief_introduction => @user.user_extensions.brief_introduction} end @@ -104,7 +95,28 @@ class UsersService logger.error "[Error] avatar : users_service#edit_user ===> #{e}" end end - @se + [:user_extensions =>@se,:img_url => url_to_avatar(@user),:work_unit => get_user_work_unit(@user),:location => get_user_location(user)] + end + + #获取用户的工作单位 + def get_user_work_unit user + work_unit = "" + if user.user_extensions.identity == 0 || user.user_extensions.identity == 1 + work_unit = user.user_extensions.school.name unless user.user_extensions.school.nil? + elsif user.user_extensions.identity == 3 + work_unit = user.user_extensions.occupation + elsif user.user_extensions.identity == 2 + work_unit = user.firstname + end + work_unit + end + + #获取用户地区 + def get_user_location user + location = "" + location << (user.user_extensions.location || '') + location << (user.user_extensions.location_city || '') + location end #关注列表 From d1846e630312a4f1fab58f4dcfec677834d09f14 Mon Sep 17 00:00:00 2001 From: hhuai <8863824@gmail.com> Date: Sun, 4 Jan 2015 11:53:16 +0800 Subject: [PATCH 056/192] for update --- app/api/mobile/api.rb | 3 +- app/api/mobile/apis/courses.rb | 64 ++++++++++++++++++++- app/api/mobile/apis/upgrade.rb | 22 +++++++ app/api/mobile/middleware/error_handler.rb | 2 +- app/services/users_service.rb | 2 +- public/Trustie_Beta1.0.0_201412310917.apk | Bin 0 -> 1149718 bytes 6 files changed, 88 insertions(+), 5 deletions(-) create mode 100644 app/api/mobile/apis/upgrade.rb create mode 100644 public/Trustie_Beta1.0.0_201412310917.apk diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb index 064641de3..11552881a 100644 --- a/app/api/mobile/api.rb +++ b/app/api/mobile/api.rb @@ -29,8 +29,9 @@ module Mobile mount Apis::Users mount Apis::Courses mount Apis::Watches + mount Apis::Upgrade - add_swagger_documentation ({api_version: 'v1', base_path: '/api'}) + add_swagger_documentation ({api_version: 'v1', base_path: 'http://u06.shellinfo.cn/trustie/api'}) end end diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index 69848a1f4..faa060193 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -16,20 +16,79 @@ module Mobile present :status, 0 end - desc "新建课程[TODO,参数没弄清]" + desc "新建课程[TODO,待测试]" + #current_user当前用户对象(不是id) + # params[:course][:name]:课程名称 + #params[:course][:password]:密码 + #params[:course][:description]:描述 + #params[:course][:is_public]:是否公开1公开,0私有 + #params[:course][:open_student]:是否公开学生列表1公开,0不公开,不公开时非课程成员无法看到学生列表 + #params[:course][:course_type]:暂时默认给1值。 + #params[:term]:学期(秋季学期或春季学期) + #params[:time]: 年份(例:2014) + #params[:setup_time]:暂不传(貌似已经没用了) + #params[:endup_time]: 暂不传(貌似已经没用了) + #params[:class_period]:学时总数 params do + requires :token, type: String + requires :name, type: String, desc: '课程名称' + requires :password, type: String, desc: '密码' + requires :description, type: String, desc: '描述' + requires :is_public, type: Integer, desc: '是否公开 1公开 0私有' + requires :open_student, type: Integer, desc: '是否公开学生列表1公开,0不公开,不公开时非课程成员无法看到学生列表' + requires :course_type, type:Integer, desc: '暂时传1' + requires :term, type: String, desc: '学期(秋秀学期或春秀学期)' + requires :time, type: String, desc: '年份' + requires :class_period, type: String, desc: '学时总数' end post do + authenticate! + cs = CoursesService.new + cs_params = { + course: params.reject{|k,v| [:term,:time,:class_period].include?(k)}, + term: params[:term], + time: params[:time], + class_period: params[:class_period] + } + courses = cs.create_course(cs_params, current_user) + present :data, courses, with: Mobile::Entities::Course + present :status, 0 end - desc "编辑课程[TODO,参数没弄清]" + desc "编辑课程[TODO,待测试]" params do + requires :token, type: String + requires :course_id, type: Integer, desc: '课程id' + requires :name, type: String, desc: '课程名称' + requires :password, type: String, desc: '密码' + requires :description, type: String, desc: '描述' + requires :is_public, type: Integer, desc: '是否公开 1公开 0私有' + requires :open_student, type: Integer, desc: '是否公开学生列表1公开,0不公开,不公开时非课程成员无法看到学生列表' + requires :course_type, type:Integer, desc: '暂时传1' + requires :term, type: String, desc: '学期(秋秀学期或春秀学期)' + requires :time, type: String, desc: '年份' + requires :class_period, type: String, desc: '学时总数' + end + post do + authenticate! + cs_params = { + course: params.reject{|k,v| [:term,:time,:class_period].include?(k)}, + term: params[:term], + time: params[:time], + class_period: params[:class_period] + } + course = ::Course.find(params[:course_id]) + cs.edit_course_authorize(current_user,course) + course = cs.edit_course(cs_params, course) + present :data, course, with: Mobile::Entities::Course + present :status, 0 end post do end desc "加入课程" params do + requires :token, type: String end post ":id" do authenticate! @@ -50,6 +109,7 @@ module Mobile desc "退出课程" params do + requires :token, type: String end delete ":id" do authenticate! diff --git a/app/api/mobile/apis/upgrade.rb b/app/api/mobile/apis/upgrade.rb new file mode 100644 index 000000000..02ff97185 --- /dev/null +++ b/app/api/mobile/apis/upgrade.rb @@ -0,0 +1,22 @@ +#coding=utf-8 + +module Mobile + module Apis + class Upgrade < Grape::API + resource :upgrade do + desc "get update info" + params do + requires :platform, type: String, desc: '平台名,android, ios' + end + get do + { + version: '2', + url: 'http://u06.shellinfo.cn/trustie/Trustie_Beta1.0.0_201412310917.apk', + desc: '更新了什么功能' + } + end + end + + end + end +end diff --git a/app/api/mobile/middleware/error_handler.rb b/app/api/mobile/middleware/error_handler.rb index d0db6ebf1..018191d8d 100644 --- a/app/api/mobile/middleware/error_handler.rb +++ b/app/api/mobile/middleware/error_handler.rb @@ -7,7 +7,7 @@ module Mobile @app.call(@env) rescue =>e message = {status: 1, message: e.message }.to_json - puts(detail: e.backtrace.join("\n")) if Rails.env.development? + puts(e.backtrace.join("\n")) if Rails.env.development? status = 200 headers = { 'Content-Type' => content_type } Rack::Response.new([message], status, headers).finish diff --git a/app/services/users_service.rb b/app/services/users_service.rb index c1ac062df..c58956994 100644 --- a/app/services/users_service.rb +++ b/app/services/users_service.rb @@ -95,7 +95,7 @@ class UsersService logger.error "[Error] avatar : users_service#edit_user ===> #{e}" end end - [:user_extensions =>@se,:img_url => url_to_avatar(@user),:work_unit => get_user_work_unit(@user),:location => get_user_location(user)] + [:user_extensions =>@se,:img_url => url_to_avatar(@user),:work_unit => get_user_work_unit(@user),:location => get_user_location(@user)] end #获取用户的工作单位 diff --git a/public/Trustie_Beta1.0.0_201412310917.apk b/public/Trustie_Beta1.0.0_201412310917.apk new file mode 100644 index 0000000000000000000000000000000000000000..0218f66a0211e3c89a8296972184117bcdc6d68b GIT binary patch literal 1149718 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

bl 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�QB-zGgZcozoTF#9R_ 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�`h=6KrSmAl& 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

ZbmomoPE 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�sfQm**8?$Y~gKu)~ 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

gOtR22%>KEp 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 Date: Sun, 4 Jan 2015 14:55:45 +0800 Subject: [PATCH 057/192] =?UTF-8?q?=E5=8A=A0=E4=B8=8A=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/homeworks.rb | 29 ++++++++++++++++++++++ app/api/mobile/middleware/error_handler.rb | 2 +- 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 app/api/mobile/apis/homeworks.rb diff --git a/app/api/mobile/apis/homeworks.rb b/app/api/mobile/apis/homeworks.rb new file mode 100644 index 000000000..99acfd87f --- /dev/null +++ b/app/api/mobile/apis/homeworks.rb @@ -0,0 +1,29 @@ +#coding=utf-8 + +module Mobile + module Apis + class Homeworks < Grape::API + + def self.get_servcie + new HomeworkService + end + + resources :homeworks do + + desc "作业详情" + params do + requires :id, type: Integer, desc: "作业ID" + end + route_param :id do + get do + get_service.show_homework params + end + end + + + + + end + end + end +end diff --git a/app/api/mobile/middleware/error_handler.rb b/app/api/mobile/middleware/error_handler.rb index d0db6ebf1..018191d8d 100644 --- a/app/api/mobile/middleware/error_handler.rb +++ b/app/api/mobile/middleware/error_handler.rb @@ -7,7 +7,7 @@ module Mobile @app.call(@env) rescue =>e message = {status: 1, message: e.message }.to_json - puts(detail: e.backtrace.join("\n")) if Rails.env.development? + puts(e.backtrace.join("\n")) if Rails.env.development? status = 200 headers = { 'Content-Type' => content_type } Rack::Response.new([message], status, headers).finish From b5da95d5ce33ba3f88366e8341372ae6ed57c356 Mon Sep 17 00:00:00 2001 From: z9hang Date: Mon, 5 Jan 2015 10:15:14 +0800 Subject: [PATCH 058/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/api.rb | 4 +- app/api/mobile/apis/courses.rb | 2 +- app/services/courses_service.rb | 2 +- db/schema.rb | 2683 ++++++++++++++++--------------- 4 files changed, 1348 insertions(+), 1343 deletions(-) diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb index 11552881a..a2286181b 100644 --- a/app/api/mobile/api.rb +++ b/app/api/mobile/api.rb @@ -31,7 +31,9 @@ module Mobile mount Apis::Watches mount Apis::Upgrade - add_swagger_documentation ({api_version: 'v1', base_path: 'http://u06.shellinfo.cn/trustie/api'}) + #add_swagger_documentation ({api_version: 'v1', base_path: 'http://u06.shellinfo.cn/trustie/api'}) + add_swagger_documentation ({api_version: 'v1', base_path: '/api'}) + end end diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index faa060193..2e514b6e9 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -37,7 +37,7 @@ module Mobile requires :is_public, type: Integer, desc: '是否公开 1公开 0私有' requires :open_student, type: Integer, desc: '是否公开学生列表1公开,0不公开,不公开时非课程成员无法看到学生列表' requires :course_type, type:Integer, desc: '暂时传1' - requires :term, type: String, desc: '学期(秋秀学期或春秀学期)' + requires :term, type: String, desc: '学期(秋季学期或春季学期)' requires :time, type: String, desc: '年份' requires :class_period, type: String, desc: '学时总数' end diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index dee7af56d..d1b5e8be5 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -126,7 +126,7 @@ class CoursesService if current_user.user_extensions.identity @course = Course.new @course.extra = 'course' + DateTime.parse(Time.now.to_s).strftime('%Y-%m-%d_%H-%M-%S').to_s - @course.safe_attributes = params[:course] + @course.safe_attributes = params[:course],current_user @course.tea_id = User.current.id @course.term = params[:term] @course.time = params[:time] diff --git a/db/schema.rb b/db/schema.rb index c63ebb981..8693503b0 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -1,1340 +1,1343 @@ -# encoding: UTF-8 -# This file is auto-generated from the current state of the database. Instead -# of editing this file, please use the migrations feature of Active Record to -# incrementally modify your database, and then regenerate this schema definition. -# -# Note that this schema.rb definition is the authoritative source for your -# database schema. If you need to create the application database on another -# system, you should be using db:schema:load, not running all the migrations -# from scratch. The latter is a flawed and unsustainable approach (the more migrations -# you'll amass, the slower it'll run and the greater likelihood for issues). -# -# It's strongly recommended to check this file into your version control system. - -ActiveRecord::Schema.define(:version => 20141210070327) do - - create_table "activities", :force => true do |t| - t.integer "act_id", :null => false - t.string "act_type", :null => false - t.integer "user_id", :null => false - end - - add_index "activities", ["act_id", "act_type"], :name => "index_activities_on_act_id_and_act_type" - add_index "activities", ["user_id", "act_type"], :name => "index_activities_on_user_id_and_act_type" - add_index "activities", ["user_id"], :name => "index_activities_on_user_id" - - create_table "api_keys", :force => true do |t| - t.string "access_token" - t.datetime "expires_at" - t.integer "user_id" - t.boolean "active", :default => true - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - add_index "api_keys", ["access_token"], :name => "index_api_keys_on_access_token" - add_index "api_keys", ["user_id"], :name => "index_api_keys_on_user_id" - - create_table "applied_projects", :force => true do |t| - t.integer "project_id", :null => false - t.integer "user_id", :null => false - end - - create_table "apply_project_masters", :force => true do |t| - t.integer "user_id" - t.string "apply_type" - t.integer "apply_id" - t.integer "status" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "attachments", :force => true do |t| - t.integer "container_id" - t.string "container_type", :limit => 30 - t.string "filename", :default => "", :null => false - t.string "disk_filename", :default => "", :null => false - t.integer "filesize", :default => 0, :null => false - t.string "content_type", :default => "" - t.string "digest", :limit => 40, :default => "", :null => false - t.integer "downloads", :default => 0, :null => false - t.integer "author_id", :default => 0, :null => false - t.datetime "created_on" - t.string "description" - t.string "disk_directory" - t.integer "attachtype", :default => 1 - t.integer "is_public", :default => 1 - t.integer "copy_from" - t.integer "quotes" - end - - add_index "attachments", ["author_id"], :name => "index_attachments_on_author_id" - add_index "attachments", ["container_id", "container_type"], :name => "index_attachments_on_container_id_and_container_type" - add_index "attachments", ["created_on"], :name => "index_attachments_on_created_on" - - create_table "attachmentstypes", :force => true do |t| - t.integer "typeId", :null => false - t.string "typeName", :limit => 50 - end - - create_table "auth_sources", :force => true do |t| - t.string "type", :limit => 30, :default => "", :null => false - t.string "name", :limit => 60, :default => "", :null => false - t.string "host", :limit => 60 - t.integer "port" - t.string "account" - t.string "account_password", :default => "" - t.string "base_dn" - t.string "attr_login", :limit => 30 - t.string "attr_firstname", :limit => 30 - t.string "attr_lastname", :limit => 30 - t.string "attr_mail", :limit => 30 - t.boolean "onthefly_register", :default => false, :null => false - t.boolean "tls", :default => false, :null => false - t.string "filter" - t.integer "timeout" - end - - add_index "auth_sources", ["id", "type"], :name => "index_auth_sources_on_id_and_type" - - create_table "biding_projects", :force => true do |t| - t.integer "project_id" - t.integer "bid_id" - t.integer "user_id" - t.string "description" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "reward" - end - - create_table "bids", :force => true do |t| - t.string "name" - t.string "budget", :null => false - t.integer "author_id" - t.date "deadline" - t.text "description" - t.datetime "created_on", :null => false - t.datetime "updated_on", :null => false - t.integer "commit" - t.integer "reward_type" - t.integer "homework_type" - t.integer "parent_id" - t.string "password" - t.integer "is_evaluation" - t.integer "proportion", :default => 60 - t.integer "comment_status", :default => 0 - t.integer "evaluation_num", :default => 3 - t.integer "open_anonymous_evaluation", :default => 1 - end - - create_table "boards", :force => true do |t| - t.integer "project_id", :null => false - t.string "name", :default => "", :null => false - t.string "description" - t.integer "position", :default => 1 - t.integer "topics_count", :default => 0, :null => false - t.integer "messages_count", :default => 0, :null => false - t.integer "last_message_id" - t.integer "parent_id" - t.integer "course_id" - end - - add_index "boards", ["last_message_id"], :name => "index_boards_on_last_message_id" - add_index "boards", ["project_id"], :name => "boards_project_id" - - create_table "bug_to_osps", :force => true do |t| - t.integer "osp_id" - t.integer "relative_memo_id" - t.string "description" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "changes", :force => true do |t| - t.integer "changeset_id", :null => false - t.string "action", :limit => 1, :default => "", :null => false - t.text "path", :null => false - t.text "from_path" - t.string "from_revision" - t.string "revision" - t.string "branch" - end - - add_index "changes", ["changeset_id"], :name => "changesets_changeset_id" - - create_table "changeset_parents", :id => false, :force => true do |t| - t.integer "changeset_id", :null => false - t.integer "parent_id", :null => false - end - - add_index "changeset_parents", ["changeset_id"], :name => "changeset_parents_changeset_ids" - add_index "changeset_parents", ["parent_id"], :name => "changeset_parents_parent_ids" - - create_table "changesets", :force => true do |t| - t.integer "repository_id", :null => false - t.string "revision", :null => false - t.string "committer" - t.datetime "committed_on", :null => false - t.text "comments" - t.date "commit_date" - t.string "scmid" - t.integer "user_id" - end - - add_index "changesets", ["committed_on"], :name => "index_changesets_on_committed_on" - add_index "changesets", ["repository_id", "revision"], :name => "changesets_repos_rev", :unique => true - add_index "changesets", ["repository_id", "scmid"], :name => "changesets_repos_scmid" - add_index "changesets", ["repository_id"], :name => "index_changesets_on_repository_id" - add_index "changesets", ["user_id"], :name => "index_changesets_on_user_id" - - create_table "changesets_issues", :id => false, :force => true do |t| - t.integer "changeset_id", :null => false - t.integer "issue_id", :null => false - end - - add_index "changesets_issues", ["changeset_id", "issue_id"], :name => "changesets_issues_ids", :unique => true - - create_table "code_review_assignments", :force => true do |t| - t.integer "issue_id" - t.integer "change_id" - t.integer "attachment_id" - t.string "file_path" - t.string "rev" - t.string "rev_to" - t.string "action_type" - t.integer "changeset_id" - end - - create_table "code_review_project_settings", :force => true do |t| - t.integer "project_id" - t.integer "tracker_id" - t.datetime "created_at" - t.datetime "updated_at" - t.integer "updated_by" - t.boolean "hide_code_review_tab", :default => false - t.integer "auto_relation", :default => 1 - t.integer "assignment_tracker_id" - t.text "auto_assign" - t.integer "lock_version", :default => 0, :null => false - t.boolean "tracker_in_review_dialog", :default => false - end - - create_table "code_review_user_settings", :force => true do |t| - t.integer "user_id", :default => 0, :null => false - t.integer "mail_notification", :default => 0, :null => false - t.datetime "created_at" - t.datetime "updated_at" - end - - create_table "code_reviews", :force => true do |t| - t.integer "project_id" - t.integer "change_id" - t.datetime "created_at" - t.datetime "updated_at" - t.integer "line" - t.integer "updated_by_id" - t.integer "lock_version", :default => 0, :null => false - t.integer "status_changed_from" - t.integer "status_changed_to" - t.integer "issue_id" - t.string "action_type" - t.string "file_path" - t.string "rev" - t.string "rev_to" - t.integer "attachment_id" - t.integer "file_count", :default => 0, :null => false - t.boolean "diff_all" - end - - create_table "comments", :force => true do |t| - t.string "commented_type", :limit => 30, :default => "", :null => false - t.integer "commented_id", :default => 0, :null => false - t.integer "author_id", :default => 0, :null => false - t.text "comments" - t.datetime "created_on", :null => false - t.datetime "updated_on", :null => false - end - - add_index "comments", ["author_id"], :name => "index_comments_on_author_id" - add_index "comments", ["commented_id", "commented_type"], :name => "index_comments_on_commented_id_and_commented_type" - - create_table "contest_notifications", :force => true do |t| - t.text "title" - t.text "content" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "contesting_projects", :force => true do |t| - t.integer "project_id" - t.string "contest_id" - t.integer "user_id" - t.string "description" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "reward" - end - - create_table "contesting_softapplications", :force => true do |t| - t.integer "softapplication_id" - t.integer "contest_id" - t.integer "user_id" - t.string "description" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "reward" - end - - create_table "contestnotifications", :force => true do |t| - t.integer "contest_id" - t.string "title" - t.string "summary" - t.text "description" - t.integer "author_id" - t.integer "notificationcomments_count" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "contests", :force => true do |t| - t.string "name" - t.string "budget", :default => "" - t.integer "author_id" - t.date "deadline" - t.string "description" - t.integer "commit" - t.string "password" - t.datetime "created_on", :null => false - t.datetime "updated_on", :null => false - end - - create_table "course_attachments", :force => true do |t| - t.string "filename" - t.string "disk_filename" - t.integer "filesize" - t.string "content_type" - t.string "digest" - t.integer "downloads" - t.string "author_id" - t.string "integer" - t.string "description" - t.string "disk_directory" - t.integer "attachtype" - t.integer "is_public" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "container_id", :default => 0 - end - - create_table "course_groups", :force => true do |t| - t.string "name" - t.integer "course_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "course_infos", :force => true do |t| - t.integer "course_id" - t.integer "user_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "course_statuses", :force => true do |t| - t.integer "changesets_count" - t.integer "watchers_count" - t.integer "course_id" - t.float "grade", :default => 0.0 - t.integer "course_ac_para", :default => 0 - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "courses", :force => true do |t| - t.integer "tea_id" - t.string "name" - t.integer "state" - t.string "code" - t.integer "time" - t.string "extra" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "location" - t.string "term" - t.string "string" - t.string "password" - t.string "setup_time" - t.string "endup_time" - t.string "class_period" - t.integer "school_id" - t.text "description" - t.integer "status", :default => 1 - t.integer "attachmenttype", :default => 2 - t.integer "lft" - t.integer "rgt" - t.integer "is_public", :limit => 1, :default => 1 - t.integer "inherit_members", :limit => 1, :default => 1 - t.integer "open_student", :default => 0 - end - - create_table "custom_fields", :force => true do |t| - t.string "type", :limit => 30, :default => "", :null => false - t.string "name", :limit => 30, :default => "", :null => false - t.string "field_format", :limit => 30, :default => "", :null => false - t.text "possible_values" - t.string "regexp", :default => "" - t.integer "min_length", :default => 0, :null => false - t.integer "max_length", :default => 0, :null => false - t.boolean "is_required", :default => false, :null => false - t.boolean "is_for_all", :default => false, :null => false - t.boolean "is_filter", :default => false, :null => false - t.integer "position", :default => 1 - t.boolean "searchable", :default => false - t.text "default_value" - t.boolean "editable", :default => true - t.boolean "visible", :default => true, :null => false - t.boolean "multiple", :default => false - end - - add_index "custom_fields", ["id", "type"], :name => "index_custom_fields_on_id_and_type" - - create_table "custom_fields_projects", :id => false, :force => true do |t| - t.integer "custom_field_id", :default => 0, :null => false - t.integer "project_id", :default => 0, :null => false - end - - add_index "custom_fields_projects", ["custom_field_id", "project_id"], :name => "index_custom_fields_projects_on_custom_field_id_and_project_id", :unique => true - - create_table "custom_fields_trackers", :id => false, :force => true do |t| - t.integer "custom_field_id", :default => 0, :null => false - t.integer "tracker_id", :default => 0, :null => false - end - - add_index "custom_fields_trackers", ["custom_field_id", "tracker_id"], :name => "index_custom_fields_trackers_on_custom_field_id_and_tracker_id", :unique => true - - create_table "custom_values", :force => true do |t| - t.string "customized_type", :limit => 30, :default => "", :null => false - t.integer "customized_id", :default => 0, :null => false - t.integer "custom_field_id", :default => 0, :null => false - t.text "value" - end - - add_index "custom_values", ["custom_field_id"], :name => "index_custom_values_on_custom_field_id" - add_index "custom_values", ["customized_type", "customized_id"], :name => "custom_values_customized" - - create_table "documents", :force => true do |t| - t.integer "project_id", :default => 0, :null => false - t.integer "category_id", :default => 0, :null => false - t.string "title", :limit => 60, :default => "", :null => false - t.text "description" - t.datetime "created_on" - t.integer "user_id", :default => 0 - t.integer "is_public", :default => 1 - end - - add_index "documents", ["category_id"], :name => "index_documents_on_category_id" - add_index "documents", ["created_on"], :name => "index_documents_on_created_on" - add_index "documents", ["project_id"], :name => "documents_project_id" - - create_table "enabled_modules", :force => true do |t| - t.integer "project_id" - t.string "name", :null => false - t.integer "course_id" - end - - add_index "enabled_modules", ["project_id"], :name => "enabled_modules_project_id" - - create_table "enumerations", :force => true do |t| - t.string "name", :limit => 30, :default => "", :null => false - t.integer "position", :default => 1 - t.boolean "is_default", :default => false, :null => false - t.string "type" - t.boolean "active", :default => true, :null => false - t.integer "project_id" - t.integer "parent_id" - t.string "position_name", :limit => 30 - end - - add_index "enumerations", ["id", "type"], :name => "index_enumerations_on_id_and_type" - add_index "enumerations", ["project_id"], :name => "index_enumerations_on_project_id" - - create_table "first_pages", :force => true do |t| - t.string "web_title" - t.string "title" - t.text "description" - t.string "page_type" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "sort_type" - t.integer "image_width", :default => 107 - t.integer "image_height", :default => 63 - t.integer "show_course", :default => 1 - t.integer "show_contest", :default => 1 - end - - create_table "forums", :force => true do |t| - t.string "name", :null => false - t.text "description" - t.integer "topic_count", :default => 0 - t.integer "memo_count", :default => 0 - t.integer "last_memo_id", :default => 0 - t.integer "creator_id", :null => false - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "sticky" - t.integer "locked" - end - - create_table "groups_users", :id => false, :force => true do |t| - t.integer "group_id", :null => false - t.integer "user_id", :null => false - end - - add_index "groups_users", ["group_id", "user_id"], :name => "groups_users_ids", :unique => true - - create_table "homework_attaches", :force => true do |t| - t.integer "bid_id" - t.integer "user_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "reward" - t.string "name" - t.text "description" - t.integer "state" - t.integer "project_id", :default => 0 - end - - create_table "homework_evaluations", :force => true do |t| - t.string "user_id" - t.string "homework_attach_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "homework_for_courses", :force => true do |t| - t.integer "course_id" - t.integer "bid_id" - end - - create_table "homework_users", :force => true do |t| - t.string "homework_attach_id" - t.string "user_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "issue_categories", :force => true do |t| - t.integer "project_id", :default => 0, :null => false - t.string "name", :limit => 30, :default => "", :null => false - t.integer "assigned_to_id" - end - - add_index "issue_categories", ["assigned_to_id"], :name => "index_issue_categories_on_assigned_to_id" - add_index "issue_categories", ["project_id"], :name => "issue_categories_project_id" - - create_table "issue_relations", :force => true do |t| - t.integer "issue_from_id", :null => false - t.integer "issue_to_id", :null => false - t.string "relation_type", :default => "", :null => false - t.integer "delay" - end - - add_index "issue_relations", ["issue_from_id", "issue_to_id"], :name => "index_issue_relations_on_issue_from_id_and_issue_to_id", :unique => true - add_index "issue_relations", ["issue_from_id"], :name => "index_issue_relations_on_issue_from_id" - add_index "issue_relations", ["issue_to_id"], :name => "index_issue_relations_on_issue_to_id" - - create_table "issue_statuses", :force => true do |t| - t.string "name", :limit => 30, :default => "", :null => false - t.boolean "is_closed", :default => false, :null => false - t.boolean "is_default", :default => false, :null => false - t.integer "position", :default => 1 - t.integer "default_done_ratio" - end - - add_index "issue_statuses", ["is_closed"], :name => "index_issue_statuses_on_is_closed" - add_index "issue_statuses", ["is_default"], :name => "index_issue_statuses_on_is_default" - add_index "issue_statuses", ["position"], :name => "index_issue_statuses_on_position" - - create_table "issues", :force => true do |t| - t.integer "tracker_id", :null => false - t.integer "project_id", :null => false - t.string "subject", :default => "", :null => false - t.text "description" - t.date "due_date" - t.integer "category_id" - t.integer "status_id", :null => false - t.integer "assigned_to_id" - t.integer "priority_id", :null => false - t.integer "fixed_version_id" - t.integer "author_id", :null => false - t.integer "lock_version", :default => 0, :null => false - t.datetime "created_on" - t.datetime "updated_on" - t.date "start_date" - t.integer "done_ratio", :default => 0, :null => false - t.float "estimated_hours" - t.integer "parent_id" - t.integer "root_id" - t.integer "lft" - t.integer "rgt" - t.boolean "is_private", :default => false, :null => false - t.datetime "closed_on" - end - - add_index "issues", ["assigned_to_id"], :name => "index_issues_on_assigned_to_id" - add_index "issues", ["author_id"], :name => "index_issues_on_author_id" - add_index "issues", ["category_id"], :name => "index_issues_on_category_id" - add_index "issues", ["created_on"], :name => "index_issues_on_created_on" - add_index "issues", ["fixed_version_id"], :name => "index_issues_on_fixed_version_id" - add_index "issues", ["priority_id"], :name => "index_issues_on_priority_id" - add_index "issues", ["project_id"], :name => "issues_project_id" - add_index "issues", ["root_id", "lft", "rgt"], :name => "index_issues_on_root_id_and_lft_and_rgt" - add_index "issues", ["status_id"], :name => "index_issues_on_status_id" - add_index "issues", ["tracker_id"], :name => "index_issues_on_tracker_id" - - create_table "join_in_competitions", :force => true do |t| - t.integer "user_id" - t.integer "competition_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "join_in_contests", :force => true do |t| - t.integer "user_id" - t.integer "bid_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "journal_details", :force => true do |t| - t.integer "journal_id", :default => 0, :null => false - t.string "property", :limit => 30, :default => "", :null => false - t.string "prop_key", :limit => 30, :default => "", :null => false - t.text "old_value" - t.text "value" - end - - add_index "journal_details", ["journal_id"], :name => "journal_details_journal_id" - - create_table "journal_replies", :id => false, :force => true do |t| - t.integer "journal_id" - t.integer "user_id" - t.integer "reply_id" - end - - add_index "journal_replies", ["journal_id"], :name => "index_journal_replies_on_journal_id" - add_index "journal_replies", ["reply_id"], :name => "index_journal_replies_on_reply_id" - add_index "journal_replies", ["user_id"], :name => "index_journal_replies_on_user_id" - - create_table "journals", :force => true do |t| - t.integer "journalized_id", :default => 0, :null => false - t.string "journalized_type", :limit => 30, :default => "", :null => false - t.integer "user_id", :default => 0, :null => false - t.text "notes" - t.datetime "created_on", :null => false - t.boolean "private_notes", :default => false, :null => false - end - - add_index "journals", ["created_on"], :name => "index_journals_on_created_on" - add_index "journals", ["journalized_id", "journalized_type"], :name => "journals_journalized_id" - add_index "journals", ["journalized_id"], :name => "index_journals_on_journalized_id" - add_index "journals", ["user_id"], :name => "index_journals_on_user_id" - - create_table "journals_for_messages", :force => true do |t| - t.integer "jour_id" - t.string "jour_type" - t.integer "user_id" - t.text "notes" - t.integer "status" - t.integer "reply_id" - t.datetime "created_on", :null => false - t.datetime "updated_on", :null => false - t.string "m_parent_id" - t.boolean "is_readed" - t.integer "m_reply_count" - t.integer "m_reply_id" - t.integer "is_comprehensive_evaluation" - end - - create_table "member_roles", :force => true do |t| - t.integer "member_id", :null => false - t.integer "role_id", :null => false - t.integer "inherited_from" - end - - add_index "member_roles", ["member_id"], :name => "index_member_roles_on_member_id" - add_index "member_roles", ["role_id"], :name => "index_member_roles_on_role_id" - - create_table "members", :force => true do |t| - t.integer "user_id", :default => 0, :null => false - t.integer "project_id", :default => 0 - t.datetime "created_on" - t.boolean "mail_notification", :default => false, :null => false - t.integer "course_id", :default => -1 - t.integer "course_group_id", :default => 0 - end - - add_index "members", ["project_id"], :name => "index_members_on_project_id" - add_index "members", ["user_id", "project_id", "course_id"], :name => "index_members_on_user_id_and_project_id", :unique => true - add_index "members", ["user_id"], :name => "index_members_on_user_id" - - create_table "memos", :force => true do |t| - t.integer "forum_id", :null => false - t.integer "parent_id" - t.string "subject", :null => false - t.text "content", :null => false - t.integer "author_id", :null => false - t.integer "replies_count", :default => 0 - t.integer "last_reply_id" - t.boolean "lock", :default => false - t.boolean "sticky", :default => false - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "viewed_count", :default => 0 - end - - create_table "messages", :force => true do |t| - t.integer "board_id", :null => false - t.integer "parent_id" - t.string "subject", :default => "", :null => false - t.text "content" - t.integer "author_id" - t.integer "replies_count", :default => 0, :null => false - t.integer "last_reply_id" - t.datetime "created_on", :null => false - t.datetime "updated_on", :null => false - t.boolean "locked", :default => false - t.integer "sticky", :default => 0 - end - - add_index "messages", ["author_id"], :name => "index_messages_on_author_id" - add_index "messages", ["board_id"], :name => "messages_board_id" - add_index "messages", ["created_on"], :name => "index_messages_on_created_on" - add_index "messages", ["last_reply_id"], :name => "index_messages_on_last_reply_id" - add_index "messages", ["parent_id"], :name => "messages_parent_id" - - create_table "news", :force => true do |t| - t.integer "project_id" - t.string "title", :limit => 60, :default => "", :null => false - t.string "summary", :default => "" - t.text "description" - t.integer "author_id", :default => 0, :null => false - t.datetime "created_on" - t.integer "comments_count", :default => 0, :null => false - t.integer "course_id" - end - - add_index "news", ["author_id"], :name => "index_news_on_author_id" - add_index "news", ["created_on"], :name => "index_news_on_created_on" - add_index "news", ["project_id"], :name => "news_project_id" - - create_table "no_uses", :force => true do |t| - t.integer "user_id", :null => false - t.string "no_use_type" - t.integer "no_use_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "notificationcomments", :force => true do |t| - t.string "notificationcommented_type" - t.integer "notificationcommented_id" - t.integer "author_id" - t.text "notificationcomments" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "open_id_authentication_associations", :force => true do |t| - t.integer "issued" - t.integer "lifetime" - t.string "handle" - t.string "assoc_type" - t.binary "server_url" - t.binary "secret" - end - - create_table "open_id_authentication_nonces", :force => true do |t| - t.integer "timestamp", :null => false - t.string "server_url" - t.string "salt", :null => false - end - - create_table "open_source_projects", :force => true do |t| - t.string "name" - t.text "description" - t.integer "commit_count", :default => 0 - t.integer "code_line", :default => 0 - t.integer "users_count", :default => 0 - t.date "last_commit_time" - t.string "url" - t.date "date_collected" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "option_numbers", :force => true do |t| - t.integer "user_id" - t.integer "memo" - t.integer "messages_for_issues" - t.integer "issues_status" - t.integer "replay_for_message" - t.integer "replay_for_memo" - t.integer "follow" - t.integer "tread" - t.integer "praise_by_one" - t.integer "praise_by_two" - t.integer "praise_by_three" - t.integer "tread_by_one" - t.integer "tread_by_two" - t.integer "tread_by_three" - t.integer "changeset" - t.integer "document" - t.integer "attachment" - t.integer "issue_done_ratio" - t.integer "post_issue" - t.integer "score_type" - t.integer "total_score" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "project_id" - end - - create_table "praise_tread_caches", :force => true do |t| - t.integer "object_id", :null => false - t.string "object_type" - t.integer "praise_num" - t.integer "tread_num" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "praise_treads", :force => true do |t| - t.integer "user_id", :null => false - t.integer "praise_tread_object_id" - t.string "praise_tread_object_type" - t.integer "praise_or_tread" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "project_infos", :force => true do |t| - t.integer "project_id" - t.integer "user_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "project_scores", :force => true do |t| - t.string "project_id" - t.integer "score" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "issue_num", :default => 0 - t.integer "issue_journal_num", :default => 0 - t.integer "news_num", :default => 0 - t.integer "documents_num", :default => 0 - t.integer "changeset_num", :default => 0 - t.integer "board_message_num", :default => 0 - end - - create_table "project_statuses", :force => true do |t| - t.integer "changesets_count" - t.integer "watchers_count" - t.integer "project_id" - t.integer "project_type" - t.float "grade", :default => 0.0 - t.integer "course_ac_para", :default => 0 - end - - add_index "project_statuses", ["grade"], :name => "index_project_statuses_on_grade" - - create_table "projecting_softapplictions", :force => true do |t| - t.integer "user_id" - t.integer "softapplication_id" - t.integer "project_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "projects", :force => true do |t| - t.string "name", :default => "", :null => false - t.text "description" - t.string "homepage", :default => "" - t.boolean "is_public", :default => true, :null => false - t.integer "parent_id" - t.datetime "created_on" - t.datetime "updated_on" - t.string "identifier" - t.integer "status", :default => 1, :null => false - t.integer "lft" - t.integer "rgt" - t.boolean "inherit_members", :default => false, :null => false - t.integer "project_type" - t.boolean "hidden_repo", :default => false, :null => false - t.integer "attachmenttype", :default => 1 - t.integer "user_id" - t.integer "dts_test", :default => 0 - end - - add_index "projects", ["lft"], :name => "index_projects_on_lft" - add_index "projects", ["rgt"], :name => "index_projects_on_rgt" - - create_table "projects_trackers", :id => false, :force => true do |t| - t.integer "project_id", :default => 0, :null => false - t.integer "tracker_id", :default => 0, :null => false - end - - add_index "projects_trackers", ["project_id", "tracker_id"], :name => "projects_trackers_unique", :unique => true - add_index "projects_trackers", ["project_id"], :name => "projects_trackers_project_id" - - create_table "queries", :force => true do |t| - t.integer "project_id" - t.string "name", :default => "", :null => false - t.text "filters" - t.integer "user_id", :default => 0, :null => false - t.boolean "is_public", :default => false, :null => false - t.text "column_names" - t.text "sort_criteria" - t.string "group_by" - t.string "type" - end - - add_index "queries", ["project_id"], :name => "index_queries_on_project_id" - add_index "queries", ["user_id"], :name => "index_queries_on_user_id" - - create_table "relative_memo_to_open_source_projects", :force => true do |t| - t.integer "osp_id" - t.integer "relative_memo_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "relative_memos", :force => true do |t| - t.integer "osp_id" - t.integer "parent_id" - t.string "subject", :null => false - t.text "content", :limit => 16777215, :null => false - t.integer "author_id" - t.integer "replies_count", :default => 0 - t.integer "last_reply_id" - t.boolean "lock", :default => false - t.boolean "sticky", :default => false - t.boolean "is_quote", :default => false - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "viewed_count_crawl", :default => 0 - t.integer "viewed_count_local", :default => 0 - t.string "url" - t.string "username" - t.string "userhomeurl" - t.date "date_collected" - t.string "topic_resource" - end - - create_table "repositories", :force => true do |t| - t.integer "project_id", :default => 0, :null => false - t.string "url", :default => "", :null => false - t.string "login", :limit => 60, :default => "" - t.string "password", :default => "" - t.string "root_url", :default => "" - t.string "type" - t.string "path_encoding", :limit => 64 - t.string "log_encoding", :limit => 64 - t.text "extra_info" - t.string "identifier" - t.boolean "is_default", :default => false - end - - add_index "repositories", ["project_id"], :name => "index_repositories_on_project_id" - - create_table "rich_rich_files", :force => true do |t| - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "rich_file_file_name" - t.string "rich_file_content_type" - t.integer "rich_file_file_size" - t.datetime "rich_file_updated_at" - t.string "owner_type" - t.integer "owner_id" - t.text "uri_cache" - t.string "simplified_type", :default => "file" - end - - create_table "roles", :force => true do |t| - t.string "name", :limit => 30, :default => "", :null => false - t.integer "position", :default => 1 - t.boolean "assignable", :default => true - t.integer "builtin", :default => 0, :null => false - t.text "permissions" - t.string "issues_visibility", :limit => 30, :default => "default", :null => false - end - - create_table "schools", :force => true do |t| - t.string "name" - t.string "province" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "logo_link" - end - - create_table "seems_rateable_cached_ratings", :force => true do |t| - t.integer "cacheable_id", :limit => 8 - t.string "cacheable_type" - t.float "avg", :null => false - t.integer "cnt", :null => false - t.string "dimension" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "seems_rateable_rates", :force => true do |t| - t.integer "rater_id", :limit => 8 - t.integer "rateable_id" - t.string "rateable_type" - t.float "stars", :null => false - t.string "dimension" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "settings", :force => true do |t| - t.string "name", :default => "", :null => false - t.text "value" - t.datetime "updated_on" - end - - add_index "settings", ["name"], :name => "index_settings_on_name" - - create_table "shares", :force => true do |t| - t.date "created_on" - t.string "url" - t.string "title" - t.integer "share_type" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "project_id" - t.integer "user_id" - t.string "description" - end - - create_table "softapplications", :force => true do |t| - t.string "name" - t.text "description" - t.integer "app_type_id" - t.string "app_type_name" - t.string "android_min_version_available" - t.integer "user_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "contest_id" - t.integer "softapplication_id" - t.integer "is_public" - t.string "application_developers" - t.string "deposit_project_url" - t.string "deposit_project" - t.integer "project_id" - end - - create_table "students_for_courses", :force => true do |t| - t.integer "student_id" - t.integer "course_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "taggings", :force => true do |t| - t.integer "tag_id" - t.integer "taggable_id" - t.string "taggable_type" - t.integer "tagger_id" - t.string "tagger_type" - t.string "context", :limit => 128 - t.datetime "created_at" - end - - add_index "taggings", ["tag_id"], :name => "index_taggings_on_tag_id" - add_index "taggings", ["taggable_id", "taggable_type", "context"], :name => "index_taggings_on_taggable_id_and_taggable_type_and_context" - add_index "taggings", ["taggable_type"], :name => "index_taggings_on_taggable_type" - - create_table "tags", :force => true do |t| - t.string "name" - end - - create_table "teachers", :force => true do |t| - t.string "tea_name" - t.string "location" - t.integer "couurse_time" - t.integer "course_code" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "extra" - end - - create_table "time_entries", :force => true do |t| - t.integer "project_id", :null => false - t.integer "user_id", :null => false - t.integer "issue_id" - t.float "hours", :null => false - t.string "comments" - t.integer "activity_id", :null => false - t.date "spent_on", :null => false - t.integer "tyear", :null => false - t.integer "tmonth", :null => false - t.integer "tweek", :null => false - t.datetime "created_on", :null => false - t.datetime "updated_on", :null => false - end - - add_index "time_entries", ["activity_id"], :name => "index_time_entries_on_activity_id" - add_index "time_entries", ["created_on"], :name => "index_time_entries_on_created_on" - add_index "time_entries", ["issue_id"], :name => "time_entries_issue_id" - add_index "time_entries", ["project_id"], :name => "time_entries_project_id" - add_index "time_entries", ["user_id"], :name => "index_time_entries_on_user_id" - - create_table "tokens", :force => true do |t| - t.integer "user_id", :default => 0, :null => false - t.string "action", :limit => 30, :default => "", :null => false - t.string "value", :limit => 40, :default => "", :null => false - t.datetime "created_on", :null => false - end - - add_index "tokens", ["user_id"], :name => "index_tokens_on_user_id" - add_index "tokens", ["value"], :name => "tokens_value", :unique => true - - create_table "trackers", :force => true do |t| - t.string "name", :limit => 30, :default => "", :null => false - t.boolean "is_in_chlog", :default => false, :null => false - t.integer "position", :default => 1 - t.boolean "is_in_roadmap", :default => true, :null => false - t.integer "fields_bits", :default => 0 - end - - create_table "user_extensions", :force => true do |t| - t.integer "user_id", :null => false - t.date "birthday" - t.string "brief_introduction" - t.integer "gender" - t.string "location" - t.string "occupation" - t.integer "work_experience" - t.integer "zip_code" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "technical_title" - t.integer "identity" - t.string "student_id" - t.string "teacher_realname" - t.string "student_realname" - t.string "location_city" - t.integer "school_id" - end - - create_table "user_grades", :force => true do |t| - t.integer "user_id", :null => false - t.integer "project_id", :null => false - t.float "grade", :default => 0.0 - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - add_index "user_grades", ["grade"], :name => "index_user_grades_on_grade" - add_index "user_grades", ["project_id"], :name => "index_user_grades_on_project_id" - add_index "user_grades", ["user_id"], :name => "index_user_grades_on_user_id" - - create_table "user_levels", :force => true do |t| - t.integer "user_id" - t.integer "level" - end - - create_table "user_preferences", :force => true do |t| - t.integer "user_id", :default => 0, :null => false - t.text "others" - t.boolean "hide_mail", :default => false - t.string "time_zone" - end - - add_index "user_preferences", ["user_id"], :name => "index_user_preferences_on_user_id" - - create_table "user_score_details", :force => true do |t| - t.integer "current_user_id" - t.integer "target_user_id" - t.string "score_type" - t.string "score_action" - t.integer "user_id" - t.integer "old_score" - t.integer "new_score" - t.integer "current_user_level" - t.integer "target_user_level" - t.integer "score_changeable_obj_id" - t.string "score_changeable_obj_type" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "user_scores", :force => true do |t| - t.integer "user_id", :null => false - t.integer "collaboration" - t.integer "influence" - t.integer "skill" - t.integer "active" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "user_statuses", :force => true do |t| - t.integer "changesets_count" - t.integer "watchers_count" - t.integer "user_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.float "grade", :default => 0.0 - end - - add_index "user_statuses", ["changesets_count"], :name => "index_user_statuses_on_changesets_count" - add_index "user_statuses", ["grade"], :name => "index_user_statuses_on_grade" - add_index "user_statuses", ["watchers_count"], :name => "index_user_statuses_on_watchers_count" - - create_table "users", :force => true do |t| - t.string "login", :default => "", :null => false - t.string "hashed_password", :limit => 40, :default => "", :null => false - t.string "firstname", :limit => 30, :default => "", :null => false - t.string "lastname", :default => "", :null => false - t.string "mail", :limit => 60, :default => "", :null => false - t.boolean "admin", :default => false, :null => false - t.integer "status", :default => 1, :null => false - t.datetime "last_login_on" - t.string "language", :limit => 5, :default => "" - t.integer "auth_source_id" - t.datetime "created_on" - t.datetime "updated_on" - t.string "type" - t.string "identity_url" - t.string "mail_notification", :default => "", :null => false - t.string "salt", :limit => 64 - end - - add_index "users", ["auth_source_id"], :name => "index_users_on_auth_source_id" - add_index "users", ["id", "type"], :name => "index_users_on_id_and_type" - add_index "users", ["type"], :name => "index_users_on_type" - - create_table "versions", :force => true do |t| - t.integer "project_id", :default => 0, :null => false - t.string "name", :default => "", :null => false - t.string "description", :default => "" - t.date "effective_date" - t.datetime "created_on" - t.datetime "updated_on" - t.string "wiki_page_title" - t.string "status", :default => "open" - t.string "sharing", :default => "none", :null => false - end - - add_index "versions", ["project_id"], :name => "versions_project_id" - add_index "versions", ["sharing"], :name => "index_versions_on_sharing" - - create_table "watchers", :force => true do |t| - t.string "watchable_type", :default => "", :null => false - t.integer "watchable_id", :default => 0, :null => false - t.integer "user_id" - end - - add_index "watchers", ["user_id", "watchable_type"], :name => "watchers_user_id_type" - add_index "watchers", ["user_id"], :name => "index_watchers_on_user_id" - add_index "watchers", ["watchable_id", "watchable_type"], :name => "index_watchers_on_watchable_id_and_watchable_type" - - create_table "web_footer_companies", :force => true do |t| - t.string "name" - t.string "logo_size" - t.string "url" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "web_footer_oranizers", :force => true do |t| - t.string "name" - t.text "description" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - - create_table "wiki_content_versions", :force => true do |t| - t.integer "wiki_content_id", :null => false - t.integer "page_id", :null => false - t.integer "author_id" - t.binary "data", :limit => 2147483647 - t.string "compression", :limit => 6, :default => "" - t.string "comments", :default => "" - t.datetime "updated_on", :null => false - t.integer "version", :null => false - end - - add_index "wiki_content_versions", ["updated_on"], :name => "index_wiki_content_versions_on_updated_on" - add_index "wiki_content_versions", ["wiki_content_id"], :name => "wiki_content_versions_wcid" - - create_table "wiki_contents", :force => true do |t| - t.integer "page_id", :null => false - t.integer "author_id" - t.text "text", :limit => 2147483647 - t.string "comments", :default => "" - t.datetime "updated_on", :null => false - t.integer "version", :null => false - end - - add_index "wiki_contents", ["author_id"], :name => "index_wiki_contents_on_author_id" - add_index "wiki_contents", ["page_id"], :name => "wiki_contents_page_id" - - create_table "wiki_pages", :force => true do |t| - t.integer "wiki_id", :null => false - t.string "title", :null => false - t.datetime "created_on", :null => false - t.boolean "protected", :default => false, :null => false - t.integer "parent_id" - end - - add_index "wiki_pages", ["parent_id"], :name => "index_wiki_pages_on_parent_id" - add_index "wiki_pages", ["wiki_id", "title"], :name => "wiki_pages_wiki_id_title" - add_index "wiki_pages", ["wiki_id"], :name => "index_wiki_pages_on_wiki_id" - - create_table "wiki_redirects", :force => true do |t| - t.integer "wiki_id", :null => false - t.string "title" - t.string "redirects_to" - t.datetime "created_on", :null => false - end - - add_index "wiki_redirects", ["wiki_id", "title"], :name => "wiki_redirects_wiki_id_title" - add_index "wiki_redirects", ["wiki_id"], :name => "index_wiki_redirects_on_wiki_id" - - create_table "wikis", :force => true do |t| - t.integer "project_id", :null => false - t.string "start_page", :null => false - t.integer "status", :default => 1, :null => false - end - - add_index "wikis", ["project_id"], :name => "wikis_project_id" - - create_table "workflows", :force => true do |t| - t.integer "tracker_id", :default => 0, :null => false - t.integer "old_status_id", :default => 0, :null => false - t.integer "new_status_id", :default => 0, :null => false - t.integer "role_id", :default => 0, :null => false - t.boolean "assignee", :default => false, :null => false - t.boolean "author", :default => false, :null => false - t.string "type", :limit => 30 - t.string "field_name", :limit => 30 - t.string "rule", :limit => 30 - end - - add_index "workflows", ["new_status_id"], :name => "index_workflows_on_new_status_id" - add_index "workflows", ["old_status_id"], :name => "index_workflows_on_old_status_id" - add_index "workflows", ["role_id", "tracker_id", "old_status_id"], :name => "wkfs_role_tracker_old_status" - add_index "workflows", ["role_id"], :name => "index_workflows_on_role_id" - - create_table "works_categories", :force => true do |t| - t.string "category" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - -end +# encoding: UTF-8 +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# Note that this schema.rb definition is the authoritative source for your +# database schema. If you need to create the application database on another +# system, you should be using db:schema:load, not running all the migrations +# from scratch. The latter is a flawed and unsustainable approach (the more migrations +# you'll amass, the slower it'll run and the greater likelihood for issues). +# +# It's strongly recommended to check this file into your version control system. + +ActiveRecord::Schema.define(:version => 20141231020031) do + + create_table "activities", :force => true do |t| + t.integer "act_id", :null => false + t.string "act_type", :null => false + t.integer "user_id", :null => false + end + + add_index "activities", ["act_id", "act_type"], :name => "index_activities_on_act_id_and_act_type" + add_index "activities", ["user_id", "act_type"], :name => "index_activities_on_user_id_and_act_type" + add_index "activities", ["user_id"], :name => "index_activities_on_user_id" + + create_table "api_keys", :force => true do |t| + t.string "access_token" + t.datetime "expires_at" + t.integer "user_id" + t.boolean "active", :default => true + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + add_index "api_keys", ["access_token"], :name => "index_api_keys_on_access_token" + add_index "api_keys", ["user_id"], :name => "index_api_keys_on_user_id" + + create_table "applied_projects", :force => true do |t| + t.integer "project_id", :null => false + t.integer "user_id", :null => false + end + + create_table "apply_project_masters", :force => true do |t| + t.integer "user_id" + t.string "apply_type" + t.integer "apply_id" + t.integer "status" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "attachments", :force => true do |t| + t.integer "container_id" + t.string "container_type", :limit => 30 + t.string "filename", :default => "", :null => false + t.string "disk_filename", :default => "", :null => false + t.integer "filesize", :default => 0, :null => false + t.string "content_type", :default => "" + t.string "digest", :limit => 40, :default => "", :null => false + t.integer "downloads", :default => 0, :null => false + t.integer "author_id", :default => 0, :null => false + t.datetime "created_on" + t.string "description" + t.string "disk_directory" + t.integer "attachtype", :default => 1 + t.integer "is_public", :default => 1 + t.integer "copy_from" + t.integer "quotes" + end + + add_index "attachments", ["author_id"], :name => "index_attachments_on_author_id" + add_index "attachments", ["container_id", "container_type"], :name => "index_attachments_on_container_id_and_container_type" + add_index "attachments", ["created_on"], :name => "index_attachments_on_created_on" + + create_table "attachmentstypes", :force => true do |t| + t.integer "typeId", :null => false + t.string "typeName", :limit => 50 + end + + create_table "auth_sources", :force => true do |t| + t.string "type", :limit => 30, :default => "", :null => false + t.string "name", :limit => 60, :default => "", :null => false + t.string "host", :limit => 60 + t.integer "port" + t.string "account" + t.string "account_password", :default => "" + t.string "base_dn" + t.string "attr_login", :limit => 30 + t.string "attr_firstname", :limit => 30 + t.string "attr_lastname", :limit => 30 + t.string "attr_mail", :limit => 30 + t.boolean "onthefly_register", :default => false, :null => false + t.boolean "tls", :default => false, :null => false + t.string "filter" + t.integer "timeout" + end + + add_index "auth_sources", ["id", "type"], :name => "index_auth_sources_on_id_and_type" + + create_table "biding_projects", :force => true do |t| + t.integer "project_id" + t.integer "bid_id" + t.integer "user_id" + t.string "description" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "reward" + end + + create_table "bids", :force => true do |t| + t.string "name" + t.string "budget", :null => false + t.integer "author_id" + t.date "deadline" + t.text "description" + t.datetime "created_on", :null => false + t.datetime "updated_on", :null => false + t.integer "commit" + t.integer "reward_type" + t.integer "homework_type" + t.integer "parent_id" + t.string "password" + t.integer "is_evaluation" + t.integer "proportion", :default => 60 + t.integer "comment_status", :default => 0 + t.integer "evaluation_num", :default => 3 + t.integer "open_anonymous_evaluation", :default => 1 + end + + create_table "boards", :force => true do |t| + t.integer "project_id", :null => false + t.string "name", :default => "", :null => false + t.string "description" + t.integer "position", :default => 1 + t.integer "topics_count", :default => 0, :null => false + t.integer "messages_count", :default => 0, :null => false + t.integer "last_message_id" + t.integer "parent_id" + t.integer "course_id" + end + + add_index "boards", ["last_message_id"], :name => "index_boards_on_last_message_id" + add_index "boards", ["project_id"], :name => "boards_project_id" + + create_table "bug_to_osps", :force => true do |t| + t.integer "osp_id" + t.integer "relative_memo_id" + t.string "description" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "changes", :force => true do |t| + t.integer "changeset_id", :null => false + t.string "action", :limit => 1, :default => "", :null => false + t.text "path", :null => false + t.text "from_path" + t.string "from_revision" + t.string "revision" + t.string "branch" + end + + add_index "changes", ["changeset_id"], :name => "changesets_changeset_id" + + create_table "changeset_parents", :id => false, :force => true do |t| + t.integer "changeset_id", :null => false + t.integer "parent_id", :null => false + end + + add_index "changeset_parents", ["changeset_id"], :name => "changeset_parents_changeset_ids" + add_index "changeset_parents", ["parent_id"], :name => "changeset_parents_parent_ids" + + create_table "changesets", :force => true do |t| + t.integer "repository_id", :null => false + t.string "revision", :null => false + t.string "committer" + t.datetime "committed_on", :null => false + t.text "comments" + t.date "commit_date" + t.string "scmid" + t.integer "user_id" + end + + add_index "changesets", ["committed_on"], :name => "index_changesets_on_committed_on" + add_index "changesets", ["repository_id", "revision"], :name => "changesets_repos_rev", :unique => true + add_index "changesets", ["repository_id", "scmid"], :name => "changesets_repos_scmid" + add_index "changesets", ["repository_id"], :name => "index_changesets_on_repository_id" + add_index "changesets", ["user_id"], :name => "index_changesets_on_user_id" + + create_table "changesets_issues", :id => false, :force => true do |t| + t.integer "changeset_id", :null => false + t.integer "issue_id", :null => false + end + + add_index "changesets_issues", ["changeset_id", "issue_id"], :name => "changesets_issues_ids", :unique => true + + create_table "code_review_assignments", :force => true do |t| + t.integer "issue_id" + t.integer "change_id" + t.integer "attachment_id" + t.string "file_path" + t.string "rev" + t.string "rev_to" + t.string "action_type" + t.integer "changeset_id" + end + + create_table "code_review_project_settings", :force => true do |t| + t.integer "project_id" + t.integer "tracker_id" + t.datetime "created_at" + t.datetime "updated_at" + t.integer "updated_by" + t.boolean "hide_code_review_tab", :default => false + t.integer "auto_relation", :default => 1 + t.integer "assignment_tracker_id" + t.text "auto_assign" + t.integer "lock_version", :default => 0, :null => false + t.boolean "tracker_in_review_dialog", :default => false + end + + create_table "code_review_user_settings", :force => true do |t| + t.integer "user_id", :default => 0, :null => false + t.integer "mail_notification", :default => 0, :null => false + t.datetime "created_at" + t.datetime "updated_at" + end + + create_table "code_reviews", :force => true do |t| + t.integer "project_id" + t.integer "change_id" + t.datetime "created_at" + t.datetime "updated_at" + t.integer "line" + t.integer "updated_by_id" + t.integer "lock_version", :default => 0, :null => false + t.integer "status_changed_from" + t.integer "status_changed_to" + t.integer "issue_id" + t.string "action_type" + t.string "file_path" + t.string "rev" + t.string "rev_to" + t.integer "attachment_id" + t.integer "file_count", :default => 0, :null => false + t.boolean "diff_all" + end + + create_table "comments", :force => true do |t| + t.string "commented_type", :limit => 30, :default => "", :null => false + t.integer "commented_id", :default => 0, :null => false + t.integer "author_id", :default => 0, :null => false + t.text "comments" + t.datetime "created_on", :null => false + t.datetime "updated_on", :null => false + end + + add_index "comments", ["author_id"], :name => "index_comments_on_author_id" + add_index "comments", ["commented_id", "commented_type"], :name => "index_comments_on_commented_id_and_commented_type" + + create_table "contest_notifications", :force => true do |t| + t.text "title" + t.text "content" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "contesting_projects", :force => true do |t| + t.integer "project_id" + t.string "contest_id" + t.integer "user_id" + t.string "description" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "reward" + end + + create_table "contesting_softapplications", :force => true do |t| + t.integer "softapplication_id" + t.integer "contest_id" + t.integer "user_id" + t.string "description" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "reward" + end + + create_table "contestnotifications", :force => true do |t| + t.integer "contest_id" + t.string "title" + t.string "summary" + t.text "description" + t.integer "author_id" + t.integer "notificationcomments_count" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "contests", :force => true do |t| + t.string "name" + t.string "budget", :default => "" + t.integer "author_id" + t.date "deadline" + t.string "description" + t.integer "commit" + t.string "password" + t.datetime "created_on", :null => false + t.datetime "updated_on", :null => false + end + + create_table "course_attachments", :force => true do |t| + t.string "filename" + t.string "disk_filename" + t.integer "filesize" + t.string "content_type" + t.string "digest" + t.integer "downloads" + t.string "author_id" + t.string "integer" + t.string "description" + t.string "disk_directory" + t.integer "attachtype" + t.integer "is_public" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "container_id", :default => 0 + end + + create_table "course_groups", :force => true do |t| + t.string "name" + t.integer "course_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "course_infos", :force => true do |t| + t.integer "course_id" + t.integer "user_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "course_statuses", :force => true do |t| + t.integer "changesets_count" + t.integer "watchers_count" + t.integer "course_id" + t.float "grade", :default => 0.0 + t.integer "course_ac_para", :default => 0 + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "courses", :force => true do |t| + t.integer "tea_id" + t.string "name" + t.integer "state" + t.string "code" + t.integer "time" + t.string "extra" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "location" + t.string "term" + t.string "string" + t.string "password" + t.string "setup_time" + t.string "endup_time" + t.string "class_period" + t.integer "school_id" + t.text "description" + t.integer "status", :default => 1 + t.integer "attachmenttype", :default => 2 + t.integer "lft" + t.integer "rgt" + t.integer "is_public", :limit => 1, :default => 1 + t.integer "inherit_members", :limit => 1, :default => 1 + t.integer "open_student", :default => 0 + end + + create_table "custom_fields", :force => true do |t| + t.string "type", :limit => 30, :default => "", :null => false + t.string "name", :limit => 30, :default => "", :null => false + t.string "field_format", :limit => 30, :default => "", :null => false + t.text "possible_values" + t.string "regexp", :default => "" + t.integer "min_length", :default => 0, :null => false + t.integer "max_length", :default => 0, :null => false + t.boolean "is_required", :default => false, :null => false + t.boolean "is_for_all", :default => false, :null => false + t.boolean "is_filter", :default => false, :null => false + t.integer "position", :default => 1 + t.boolean "searchable", :default => false + t.text "default_value" + t.boolean "editable", :default => true + t.boolean "visible", :default => true, :null => false + t.boolean "multiple", :default => false + end + + add_index "custom_fields", ["id", "type"], :name => "index_custom_fields_on_id_and_type" + + create_table "custom_fields_projects", :id => false, :force => true do |t| + t.integer "custom_field_id", :default => 0, :null => false + t.integer "project_id", :default => 0, :null => false + end + + add_index "custom_fields_projects", ["custom_field_id", "project_id"], :name => "index_custom_fields_projects_on_custom_field_id_and_project_id", :unique => true + + create_table "custom_fields_trackers", :id => false, :force => true do |t| + t.integer "custom_field_id", :default => 0, :null => false + t.integer "tracker_id", :default => 0, :null => false + end + + add_index "custom_fields_trackers", ["custom_field_id", "tracker_id"], :name => "index_custom_fields_trackers_on_custom_field_id_and_tracker_id", :unique => true + + create_table "custom_values", :force => true do |t| + t.string "customized_type", :limit => 30, :default => "", :null => false + t.integer "customized_id", :default => 0, :null => false + t.integer "custom_field_id", :default => 0, :null => false + t.text "value" + end + + add_index "custom_values", ["custom_field_id"], :name => "index_custom_values_on_custom_field_id" + add_index "custom_values", ["customized_type", "customized_id"], :name => "custom_values_customized" + + create_table "documents", :force => true do |t| + t.integer "project_id", :default => 0, :null => false + t.integer "category_id", :default => 0, :null => false + t.string "title", :limit => 60, :default => "", :null => false + t.text "description" + t.datetime "created_on" + t.integer "user_id", :default => 0 + t.integer "is_public", :default => 1 + end + + add_index "documents", ["category_id"], :name => "index_documents_on_category_id" + add_index "documents", ["created_on"], :name => "index_documents_on_created_on" + add_index "documents", ["project_id"], :name => "documents_project_id" + + create_table "enabled_modules", :force => true do |t| + t.integer "project_id" + t.string "name", :null => false + t.integer "course_id" + end + + add_index "enabled_modules", ["project_id"], :name => "enabled_modules_project_id" + + create_table "enumerations", :force => true do |t| + t.string "name", :limit => 30, :default => "", :null => false + t.integer "position", :default => 1 + t.boolean "is_default", :default => false, :null => false + t.string "type" + t.boolean "active", :default => true, :null => false + t.integer "project_id" + t.integer "parent_id" + t.string "position_name", :limit => 30 + end + + add_index "enumerations", ["id", "type"], :name => "index_enumerations_on_id_and_type" + add_index "enumerations", ["project_id"], :name => "index_enumerations_on_project_id" + + create_table "first_pages", :force => true do |t| + t.string "web_title" + t.string "title" + t.text "description" + t.string "page_type" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "sort_type" + t.integer "image_width", :default => 107 + t.integer "image_height", :default => 63 + t.integer "show_course", :default => 1 + t.integer "show_contest", :default => 1 + end + + create_table "forums", :force => true do |t| + t.string "name", :null => false + t.text "description" + t.integer "topic_count", :default => 0 + t.integer "memo_count", :default => 0 + t.integer "last_memo_id", :default => 0 + t.integer "creator_id", :null => false + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "sticky" + t.integer "locked" + end + + create_table "groups_users", :id => false, :force => true do |t| + t.integer "group_id", :null => false + t.integer "user_id", :null => false + end + + add_index "groups_users", ["group_id", "user_id"], :name => "groups_users_ids", :unique => true + + create_table "homework_attaches", :force => true do |t| + t.integer "bid_id" + t.integer "user_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "reward" + t.string "name" + t.text "description" + t.integer "state" + t.integer "project_id", :default => 0 + t.float "score", :default => 0.0 + t.integer "is_teacher_score", :default => 0 + end + + create_table "homework_evaluations", :force => true do |t| + t.string "user_id" + t.string "homework_attach_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "homework_for_courses", :force => true do |t| + t.integer "course_id" + t.integer "bid_id" + end + + create_table "homework_users", :force => true do |t| + t.string "homework_attach_id" + t.string "user_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "issue_categories", :force => true do |t| + t.integer "project_id", :default => 0, :null => false + t.string "name", :limit => 30, :default => "", :null => false + t.integer "assigned_to_id" + end + + add_index "issue_categories", ["assigned_to_id"], :name => "index_issue_categories_on_assigned_to_id" + add_index "issue_categories", ["project_id"], :name => "issue_categories_project_id" + + create_table "issue_relations", :force => true do |t| + t.integer "issue_from_id", :null => false + t.integer "issue_to_id", :null => false + t.string "relation_type", :default => "", :null => false + t.integer "delay" + end + + add_index "issue_relations", ["issue_from_id", "issue_to_id"], :name => "index_issue_relations_on_issue_from_id_and_issue_to_id", :unique => true + add_index "issue_relations", ["issue_from_id"], :name => "index_issue_relations_on_issue_from_id" + add_index "issue_relations", ["issue_to_id"], :name => "index_issue_relations_on_issue_to_id" + + create_table "issue_statuses", :force => true do |t| + t.string "name", :limit => 30, :default => "", :null => false + t.boolean "is_closed", :default => false, :null => false + t.boolean "is_default", :default => false, :null => false + t.integer "position", :default => 1 + t.integer "default_done_ratio" + end + + add_index "issue_statuses", ["is_closed"], :name => "index_issue_statuses_on_is_closed" + add_index "issue_statuses", ["is_default"], :name => "index_issue_statuses_on_is_default" + add_index "issue_statuses", ["position"], :name => "index_issue_statuses_on_position" + + create_table "issues", :force => true do |t| + t.integer "tracker_id", :null => false + t.integer "project_id", :null => false + t.string "subject", :default => "", :null => false + t.text "description" + t.date "due_date" + t.integer "category_id" + t.integer "status_id", :null => false + t.integer "assigned_to_id" + t.integer "priority_id", :null => false + t.integer "fixed_version_id" + t.integer "author_id", :null => false + t.integer "lock_version", :default => 0, :null => false + t.datetime "created_on" + t.datetime "updated_on" + t.date "start_date" + t.integer "done_ratio", :default => 0, :null => false + t.float "estimated_hours" + t.integer "parent_id" + t.integer "root_id" + t.integer "lft" + t.integer "rgt" + t.boolean "is_private", :default => false, :null => false + t.datetime "closed_on" + end + + add_index "issues", ["assigned_to_id"], :name => "index_issues_on_assigned_to_id" + add_index "issues", ["author_id"], :name => "index_issues_on_author_id" + add_index "issues", ["category_id"], :name => "index_issues_on_category_id" + add_index "issues", ["created_on"], :name => "index_issues_on_created_on" + add_index "issues", ["fixed_version_id"], :name => "index_issues_on_fixed_version_id" + add_index "issues", ["priority_id"], :name => "index_issues_on_priority_id" + add_index "issues", ["project_id"], :name => "issues_project_id" + add_index "issues", ["root_id", "lft", "rgt"], :name => "index_issues_on_root_id_and_lft_and_rgt" + add_index "issues", ["status_id"], :name => "index_issues_on_status_id" + add_index "issues", ["tracker_id"], :name => "index_issues_on_tracker_id" + + create_table "join_in_competitions", :force => true do |t| + t.integer "user_id" + t.integer "competition_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "join_in_contests", :force => true do |t| + t.integer "user_id" + t.integer "bid_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "journal_details", :force => true do |t| + t.integer "journal_id", :default => 0, :null => false + t.string "property", :limit => 30, :default => "", :null => false + t.string "prop_key", :limit => 30, :default => "", :null => false + t.text "old_value" + t.text "value" + end + + add_index "journal_details", ["journal_id"], :name => "journal_details_journal_id" + + create_table "journal_replies", :id => false, :force => true do |t| + t.integer "journal_id" + t.integer "user_id" + t.integer "reply_id" + end + + add_index "journal_replies", ["journal_id"], :name => "index_journal_replies_on_journal_id" + add_index "journal_replies", ["reply_id"], :name => "index_journal_replies_on_reply_id" + add_index "journal_replies", ["user_id"], :name => "index_journal_replies_on_user_id" + + create_table "journals", :force => true do |t| + t.integer "journalized_id", :default => 0, :null => false + t.string "journalized_type", :limit => 30, :default => "", :null => false + t.integer "user_id", :default => 0, :null => false + t.text "notes" + t.datetime "created_on", :null => false + t.boolean "private_notes", :default => false, :null => false + end + + add_index "journals", ["created_on"], :name => "index_journals_on_created_on" + add_index "journals", ["journalized_id", "journalized_type"], :name => "journals_journalized_id" + add_index "journals", ["journalized_id"], :name => "index_journals_on_journalized_id" + add_index "journals", ["user_id"], :name => "index_journals_on_user_id" + + create_table "journals_for_messages", :force => true do |t| + t.integer "jour_id" + t.string "jour_type" + t.integer "user_id" + t.text "notes" + t.integer "status" + t.integer "reply_id" + t.datetime "created_on", :null => false + t.datetime "updated_on", :null => false + t.string "m_parent_id" + t.boolean "is_readed" + t.integer "m_reply_count" + t.integer "m_reply_id" + t.integer "is_comprehensive_evaluation" + end + + create_table "member_roles", :force => true do |t| + t.integer "member_id", :null => false + t.integer "role_id", :null => false + t.integer "inherited_from" + end + + add_index "member_roles", ["member_id"], :name => "index_member_roles_on_member_id" + add_index "member_roles", ["role_id"], :name => "index_member_roles_on_role_id" + + create_table "members", :force => true do |t| + t.integer "user_id", :default => 0, :null => false + t.integer "project_id", :default => 0 + t.datetime "created_on" + t.boolean "mail_notification", :default => false, :null => false + t.integer "course_id", :default => -1 + t.integer "course_group_id", :default => 0 + end + + add_index "members", ["project_id"], :name => "index_members_on_project_id" + add_index "members", ["user_id", "project_id", "course_id"], :name => "index_members_on_user_id_and_project_id", :unique => true + add_index "members", ["user_id"], :name => "index_members_on_user_id" + + create_table "memos", :force => true do |t| + t.integer "forum_id", :null => false + t.integer "parent_id" + t.string "subject", :null => false + t.text "content", :null => false + t.integer "author_id", :null => false + t.integer "replies_count", :default => 0 + t.integer "last_reply_id" + t.boolean "lock", :default => false + t.boolean "sticky", :default => false + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "viewed_count", :default => 0 + end + + create_table "messages", :force => true do |t| + t.integer "board_id", :null => false + t.integer "parent_id" + t.string "subject", :default => "", :null => false + t.text "content" + t.integer "author_id" + t.integer "replies_count", :default => 0, :null => false + t.integer "last_reply_id" + t.datetime "created_on", :null => false + t.datetime "updated_on", :null => false + t.boolean "locked", :default => false + t.integer "sticky", :default => 0 + end + + add_index "messages", ["author_id"], :name => "index_messages_on_author_id" + add_index "messages", ["board_id"], :name => "messages_board_id" + add_index "messages", ["created_on"], :name => "index_messages_on_created_on" + add_index "messages", ["last_reply_id"], :name => "index_messages_on_last_reply_id" + add_index "messages", ["parent_id"], :name => "messages_parent_id" + + create_table "news", :force => true do |t| + t.integer "project_id" + t.string "title", :limit => 60, :default => "", :null => false + t.string "summary", :default => "" + t.text "description" + t.integer "author_id", :default => 0, :null => false + t.datetime "created_on" + t.integer "comments_count", :default => 0, :null => false + t.integer "course_id" + end + + add_index "news", ["author_id"], :name => "index_news_on_author_id" + add_index "news", ["created_on"], :name => "index_news_on_created_on" + add_index "news", ["project_id"], :name => "news_project_id" + + create_table "no_uses", :force => true do |t| + t.integer "user_id", :null => false + t.string "no_use_type" + t.integer "no_use_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "notificationcomments", :force => true do |t| + t.string "notificationcommented_type" + t.integer "notificationcommented_id" + t.integer "author_id" + t.text "notificationcomments" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "open_id_authentication_associations", :force => true do |t| + t.integer "issued" + t.integer "lifetime" + t.string "handle" + t.string "assoc_type" + t.binary "server_url" + t.binary "secret" + end + + create_table "open_id_authentication_nonces", :force => true do |t| + t.integer "timestamp", :null => false + t.string "server_url" + t.string "salt", :null => false + end + + create_table "open_source_projects", :force => true do |t| + t.string "name" + t.text "description" + t.integer "commit_count", :default => 0 + t.integer "code_line", :default => 0 + t.integer "users_count", :default => 0 + t.date "last_commit_time" + t.string "url" + t.date "date_collected" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "option_numbers", :force => true do |t| + t.integer "user_id" + t.integer "memo" + t.integer "messages_for_issues" + t.integer "issues_status" + t.integer "replay_for_message" + t.integer "replay_for_memo" + t.integer "follow" + t.integer "tread" + t.integer "praise_by_one" + t.integer "praise_by_two" + t.integer "praise_by_three" + t.integer "tread_by_one" + t.integer "tread_by_two" + t.integer "tread_by_three" + t.integer "changeset" + t.integer "document" + t.integer "attachment" + t.integer "issue_done_ratio" + t.integer "post_issue" + t.integer "score_type" + t.integer "total_score" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "project_id" + end + + create_table "praise_tread_caches", :force => true do |t| + t.integer "object_id", :null => false + t.string "object_type" + t.integer "praise_num" + t.integer "tread_num" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "praise_treads", :force => true do |t| + t.integer "user_id", :null => false + t.integer "praise_tread_object_id" + t.string "praise_tread_object_type" + t.integer "praise_or_tread" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "project_infos", :force => true do |t| + t.integer "project_id" + t.integer "user_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "project_scores", :force => true do |t| + t.string "project_id" + t.integer "score" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "issue_num", :default => 0 + t.integer "issue_journal_num", :default => 0 + t.integer "news_num", :default => 0 + t.integer "documents_num", :default => 0 + t.integer "changeset_num", :default => 0 + t.integer "board_message_num", :default => 0 + end + + create_table "project_statuses", :force => true do |t| + t.integer "changesets_count" + t.integer "watchers_count" + t.integer "project_id" + t.integer "project_type" + t.float "grade", :default => 0.0 + t.integer "course_ac_para", :default => 0 + end + + add_index "project_statuses", ["grade"], :name => "index_project_statuses_on_grade" + + create_table "projecting_softapplictions", :force => true do |t| + t.integer "user_id" + t.integer "softapplication_id" + t.integer "project_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "projects", :force => true do |t| + t.string "name", :default => "", :null => false + t.text "description" + t.string "homepage", :default => "" + t.boolean "is_public", :default => true, :null => false + t.integer "parent_id" + t.datetime "created_on" + t.datetime "updated_on" + t.string "identifier" + t.integer "status", :default => 1, :null => false + t.integer "lft" + t.integer "rgt" + t.boolean "inherit_members", :default => false, :null => false + t.integer "project_type" + t.boolean "hidden_repo", :default => false, :null => false + t.integer "attachmenttype", :default => 1 + t.integer "user_id" + t.integer "dts_test", :default => 0 + end + + add_index "projects", ["lft"], :name => "index_projects_on_lft" + add_index "projects", ["rgt"], :name => "index_projects_on_rgt" + + create_table "projects_trackers", :id => false, :force => true do |t| + t.integer "project_id", :default => 0, :null => false + t.integer "tracker_id", :default => 0, :null => false + end + + add_index "projects_trackers", ["project_id", "tracker_id"], :name => "projects_trackers_unique", :unique => true + add_index "projects_trackers", ["project_id"], :name => "projects_trackers_project_id" + + create_table "queries", :force => true do |t| + t.integer "project_id" + t.string "name", :default => "", :null => false + t.text "filters" + t.integer "user_id", :default => 0, :null => false + t.boolean "is_public", :default => false, :null => false + t.text "column_names" + t.text "sort_criteria" + t.string "group_by" + t.string "type" + end + + add_index "queries", ["project_id"], :name => "index_queries_on_project_id" + add_index "queries", ["user_id"], :name => "index_queries_on_user_id" + + create_table "relative_memo_to_open_source_projects", :force => true do |t| + t.integer "osp_id" + t.integer "relative_memo_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "relative_memos", :force => true do |t| + t.integer "osp_id" + t.integer "parent_id" + t.string "subject", :null => false + t.text "content", :limit => 16777215, :null => false + t.integer "author_id" + t.integer "replies_count", :default => 0 + t.integer "last_reply_id" + t.boolean "lock", :default => false + t.boolean "sticky", :default => false + t.boolean "is_quote", :default => false + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "viewed_count_crawl", :default => 0 + t.integer "viewed_count_local", :default => 0 + t.string "url" + t.string "username" + t.string "userhomeurl" + t.date "date_collected" + t.string "topic_resource" + end + + create_table "repositories", :force => true do |t| + t.integer "project_id", :default => 0, :null => false + t.string "url", :default => "", :null => false + t.string "login", :limit => 60, :default => "" + t.string "password", :default => "" + t.string "root_url", :default => "" + t.string "type" + t.string "path_encoding", :limit => 64 + t.string "log_encoding", :limit => 64 + t.text "extra_info" + t.string "identifier" + t.boolean "is_default", :default => false + end + + add_index "repositories", ["project_id"], :name => "index_repositories_on_project_id" + + create_table "rich_rich_files", :force => true do |t| + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "rich_file_file_name" + t.string "rich_file_content_type" + t.integer "rich_file_file_size" + t.datetime "rich_file_updated_at" + t.string "owner_type" + t.integer "owner_id" + t.text "uri_cache" + t.string "simplified_type", :default => "file" + end + + create_table "roles", :force => true do |t| + t.string "name", :limit => 30, :default => "", :null => false + t.integer "position", :default => 1 + t.boolean "assignable", :default => true + t.integer "builtin", :default => 0, :null => false + t.text "permissions" + t.string "issues_visibility", :limit => 30, :default => "default", :null => false + end + + create_table "schools", :force => true do |t| + t.string "name" + t.string "province" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "logo_link" + end + + create_table "seems_rateable_cached_ratings", :force => true do |t| + t.integer "cacheable_id", :limit => 8 + t.string "cacheable_type" + t.float "avg", :null => false + t.integer "cnt", :null => false + t.string "dimension" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "seems_rateable_rates", :force => true do |t| + t.integer "rater_id", :limit => 8 + t.integer "rateable_id" + t.string "rateable_type" + t.float "stars", :null => false + t.string "dimension" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "is_teacher_score", :default => 0 + end + + create_table "settings", :force => true do |t| + t.string "name", :default => "", :null => false + t.text "value" + t.datetime "updated_on" + end + + add_index "settings", ["name"], :name => "index_settings_on_name" + + create_table "shares", :force => true do |t| + t.date "created_on" + t.string "url" + t.string "title" + t.integer "share_type" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "project_id" + t.integer "user_id" + t.string "description" + end + + create_table "softapplications", :force => true do |t| + t.string "name" + t.text "description" + t.integer "app_type_id" + t.string "app_type_name" + t.string "android_min_version_available" + t.integer "user_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "contest_id" + t.integer "softapplication_id" + t.integer "is_public" + t.string "application_developers" + t.string "deposit_project_url" + t.string "deposit_project" + t.integer "project_id" + end + + create_table "students_for_courses", :force => true do |t| + t.integer "student_id" + t.integer "course_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "taggings", :force => true do |t| + t.integer "tag_id" + t.integer "taggable_id" + t.string "taggable_type" + t.integer "tagger_id" + t.string "tagger_type" + t.string "context", :limit => 128 + t.datetime "created_at" + end + + add_index "taggings", ["tag_id"], :name => "index_taggings_on_tag_id" + add_index "taggings", ["taggable_id", "taggable_type", "context"], :name => "index_taggings_on_taggable_id_and_taggable_type_and_context" + add_index "taggings", ["taggable_type"], :name => "index_taggings_on_taggable_type" + + create_table "tags", :force => true do |t| + t.string "name" + end + + create_table "teachers", :force => true do |t| + t.string "tea_name" + t.string "location" + t.integer "couurse_time" + t.integer "course_code" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "extra" + end + + create_table "time_entries", :force => true do |t| + t.integer "project_id", :null => false + t.integer "user_id", :null => false + t.integer "issue_id" + t.float "hours", :null => false + t.string "comments" + t.integer "activity_id", :null => false + t.date "spent_on", :null => false + t.integer "tyear", :null => false + t.integer "tmonth", :null => false + t.integer "tweek", :null => false + t.datetime "created_on", :null => false + t.datetime "updated_on", :null => false + end + + add_index "time_entries", ["activity_id"], :name => "index_time_entries_on_activity_id" + add_index "time_entries", ["created_on"], :name => "index_time_entries_on_created_on" + add_index "time_entries", ["issue_id"], :name => "time_entries_issue_id" + add_index "time_entries", ["project_id"], :name => "time_entries_project_id" + add_index "time_entries", ["user_id"], :name => "index_time_entries_on_user_id" + + create_table "tokens", :force => true do |t| + t.integer "user_id", :default => 0, :null => false + t.string "action", :limit => 30, :default => "", :null => false + t.string "value", :limit => 40, :default => "", :null => false + t.datetime "created_on", :null => false + end + + add_index "tokens", ["user_id"], :name => "index_tokens_on_user_id" + add_index "tokens", ["value"], :name => "tokens_value", :unique => true + + create_table "trackers", :force => true do |t| + t.string "name", :limit => 30, :default => "", :null => false + t.boolean "is_in_chlog", :default => false, :null => false + t.integer "position", :default => 1 + t.boolean "is_in_roadmap", :default => true, :null => false + t.integer "fields_bits", :default => 0 + end + + create_table "user_extensions", :force => true do |t| + t.integer "user_id", :null => false + t.date "birthday" + t.string "brief_introduction" + t.integer "gender" + t.string "location" + t.string "occupation" + t.integer "work_experience" + t.integer "zip_code" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.string "technical_title" + t.integer "identity" + t.string "student_id" + t.string "teacher_realname" + t.string "student_realname" + t.string "location_city" + t.integer "school_id" + end + + create_table "user_grades", :force => true do |t| + t.integer "user_id", :null => false + t.integer "project_id", :null => false + t.float "grade", :default => 0.0 + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + add_index "user_grades", ["grade"], :name => "index_user_grades_on_grade" + add_index "user_grades", ["project_id"], :name => "index_user_grades_on_project_id" + add_index "user_grades", ["user_id"], :name => "index_user_grades_on_user_id" + + create_table "user_levels", :force => true do |t| + t.integer "user_id" + t.integer "level" + end + + create_table "user_preferences", :force => true do |t| + t.integer "user_id", :default => 0, :null => false + t.text "others" + t.boolean "hide_mail", :default => false + t.string "time_zone" + end + + add_index "user_preferences", ["user_id"], :name => "index_user_preferences_on_user_id" + + create_table "user_score_details", :force => true do |t| + t.integer "current_user_id" + t.integer "target_user_id" + t.string "score_type" + t.string "score_action" + t.integer "user_id" + t.integer "old_score" + t.integer "new_score" + t.integer "current_user_level" + t.integer "target_user_level" + t.integer "score_changeable_obj_id" + t.string "score_changeable_obj_type" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "user_scores", :force => true do |t| + t.integer "user_id", :null => false + t.integer "collaboration" + t.integer "influence" + t.integer "skill" + t.integer "active" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "user_statuses", :force => true do |t| + t.integer "changesets_count" + t.integer "watchers_count" + t.integer "user_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.float "grade", :default => 0.0 + end + + add_index "user_statuses", ["changesets_count"], :name => "index_user_statuses_on_changesets_count" + add_index "user_statuses", ["grade"], :name => "index_user_statuses_on_grade" + add_index "user_statuses", ["watchers_count"], :name => "index_user_statuses_on_watchers_count" + + create_table "users", :force => true do |t| + t.string "login", :default => "", :null => false + t.string "hashed_password", :limit => 40, :default => "", :null => false + t.string "firstname", :limit => 30, :default => "", :null => false + t.string "lastname", :default => "", :null => false + t.string "mail", :limit => 60, :default => "", :null => false + t.boolean "admin", :default => false, :null => false + t.integer "status", :default => 1, :null => false + t.datetime "last_login_on" + t.string "language", :limit => 5, :default => "" + t.integer "auth_source_id" + t.datetime "created_on" + t.datetime "updated_on" + t.string "type" + t.string "identity_url" + t.string "mail_notification", :default => "", :null => false + t.string "salt", :limit => 64 + end + + add_index "users", ["auth_source_id"], :name => "index_users_on_auth_source_id" + add_index "users", ["id", "type"], :name => "index_users_on_id_and_type" + add_index "users", ["type"], :name => "index_users_on_type" + + create_table "versions", :force => true do |t| + t.integer "project_id", :default => 0, :null => false + t.string "name", :default => "", :null => false + t.string "description", :default => "" + t.date "effective_date" + t.datetime "created_on" + t.datetime "updated_on" + t.string "wiki_page_title" + t.string "status", :default => "open" + t.string "sharing", :default => "none", :null => false + end + + add_index "versions", ["project_id"], :name => "versions_project_id" + add_index "versions", ["sharing"], :name => "index_versions_on_sharing" + + create_table "watchers", :force => true do |t| + t.string "watchable_type", :default => "", :null => false + t.integer "watchable_id", :default => 0, :null => false + t.integer "user_id" + end + + add_index "watchers", ["user_id", "watchable_type"], :name => "watchers_user_id_type" + add_index "watchers", ["user_id"], :name => "index_watchers_on_user_id" + add_index "watchers", ["watchable_id", "watchable_type"], :name => "index_watchers_on_watchable_id_and_watchable_type" + + create_table "web_footer_companies", :force => true do |t| + t.string "name" + t.string "logo_size" + t.string "url" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "web_footer_oranizers", :force => true do |t| + t.string "name" + t.text "description" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "wiki_content_versions", :force => true do |t| + t.integer "wiki_content_id", :null => false + t.integer "page_id", :null => false + t.integer "author_id" + t.binary "data", :limit => 2147483647 + t.string "compression", :limit => 6, :default => "" + t.string "comments", :default => "" + t.datetime "updated_on", :null => false + t.integer "version", :null => false + end + + add_index "wiki_content_versions", ["updated_on"], :name => "index_wiki_content_versions_on_updated_on" + add_index "wiki_content_versions", ["wiki_content_id"], :name => "wiki_content_versions_wcid" + + create_table "wiki_contents", :force => true do |t| + t.integer "page_id", :null => false + t.integer "author_id" + t.text "text", :limit => 2147483647 + t.string "comments", :default => "" + t.datetime "updated_on", :null => false + t.integer "version", :null => false + end + + add_index "wiki_contents", ["author_id"], :name => "index_wiki_contents_on_author_id" + add_index "wiki_contents", ["page_id"], :name => "wiki_contents_page_id" + + create_table "wiki_pages", :force => true do |t| + t.integer "wiki_id", :null => false + t.string "title", :null => false + t.datetime "created_on", :null => false + t.boolean "protected", :default => false, :null => false + t.integer "parent_id" + end + + add_index "wiki_pages", ["parent_id"], :name => "index_wiki_pages_on_parent_id" + add_index "wiki_pages", ["wiki_id", "title"], :name => "wiki_pages_wiki_id_title" + add_index "wiki_pages", ["wiki_id"], :name => "index_wiki_pages_on_wiki_id" + + create_table "wiki_redirects", :force => true do |t| + t.integer "wiki_id", :null => false + t.string "title" + t.string "redirects_to" + t.datetime "created_on", :null => false + end + + add_index "wiki_redirects", ["wiki_id", "title"], :name => "wiki_redirects_wiki_id_title" + add_index "wiki_redirects", ["wiki_id"], :name => "index_wiki_redirects_on_wiki_id" + + create_table "wikis", :force => true do |t| + t.integer "project_id", :null => false + t.string "start_page", :null => false + t.integer "status", :default => 1, :null => false + end + + add_index "wikis", ["project_id"], :name => "wikis_project_id" + + create_table "workflows", :force => true do |t| + t.integer "tracker_id", :default => 0, :null => false + t.integer "old_status_id", :default => 0, :null => false + t.integer "new_status_id", :default => 0, :null => false + t.integer "role_id", :default => 0, :null => false + t.boolean "assignee", :default => false, :null => false + t.boolean "author", :default => false, :null => false + t.string "type", :limit => 30 + t.string "field_name", :limit => 30 + t.string "rule", :limit => 30 + end + + add_index "workflows", ["new_status_id"], :name => "index_workflows_on_new_status_id" + add_index "workflows", ["old_status_id"], :name => "index_workflows_on_old_status_id" + add_index "workflows", ["role_id", "tracker_id", "old_status_id"], :name => "wkfs_role_tracker_old_status" + add_index "workflows", ["role_id"], :name => "index_workflows_on_role_id" + + create_table "works_categories", :force => true do |t| + t.string "category" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + +end From f55d8fe3033bad20c4ed11804e4b4ae3b89f450f Mon Sep 17 00:00:00 2001 From: z9hang Date: Mon, 5 Jan 2015 16:58:11 +0800 Subject: [PATCH 059/192] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E6=AD=A3=E6=96=B0?= =?UTF-8?q?=E5=BB=BA=E8=AF=BE=E7=A8=8B=E6=8E=A5=E5=8F=A3=E6=97=A0=E6=95=88?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E3=80=822=E3=80=81=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=E6=96=B0=E5=BB=BA=E8=AF=BE=E7=A8=8B=E6=8E=A5=E5=8F=A3=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E7=9A=84=E6=95=B0=E6=8D=AE=E4=B8=AD=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E9=94=99=E8=AF=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/course.rb | 4 ++-- app/services/courses_service.rb | 13 +++++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/app/models/course.rb b/app/models/course.rb index ef42d91e8..30bbaeba3 100644 --- a/app/models/course.rb +++ b/app/models/course.rb @@ -207,8 +207,8 @@ class Course < ActiveRecord::Base # 创建课程讨论区 def create_board_sync @board = self.boards.build - self.name=" #{l(:label_borad_course) }" - @board.name = self.name + #self.name=" #{l(:label_borad_course) }" + @board.name = " #{l(:label_borad_course) }"#self.name @board.description = self.name.to_s @board.project_id = -1 if @board.save diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index d1b5e8be5..3f025c892 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -122,16 +122,17 @@ class CoursesService #params[:setup_time]:暂不传(貌似已经没用了) #params[:endup_time]: 暂不传(貌似已经没用了) #params[:class_period]:学时总数 - def create_course params,current_user + def create_course(params,current_user) if current_user.user_extensions.identity @course = Course.new @course.extra = 'course' + DateTime.parse(Time.now.to_s).strftime('%Y-%m-%d_%H-%M-%S').to_s - @course.safe_attributes = params[:course],current_user - @course.tea_id = User.current.id + @course.send(:safe_attributes=, params[:course], current_user) + #@course.safe_attributes(current_user,params[:course]) + @course.tea_id = current_user.id @course.term = params[:term] @course.time = params[:time] #@course.school_id = params[:occupation] - @course.school_id = User.current.user_extensions.school_id + @course.school_id = current_user.user_extensions.school_id @course.setup_time = params[:setup_time] @course.endup_time = params[:endup_time] @course.class_period = params[:class_period] @@ -143,9 +144,9 @@ class CoursesService if @course.save #unless User.current.admin? r = Role.givable.find_by_id(Setting.new_project_user_role_id.to_i) || Role.givable.first - m = Member.new(:user => User.current, :roles => [r]) + m = Member.new(:user => current_user, :roles => [r]) m.project_id = -1 - course = CourseInfos.new(:user_id => User.current.id, :course_id => @course.id) + course = CourseInfos.new(:user_id => current_user.id, :course_id => @course.id) #user_grades = UserGrade.create(:user_id => User.current.id, :course_id => @course.id) if params[:course][:is_public] == '1' course_status = CourseStatus.create(:course_id => @course.id, :watchers_count => 0, :changesets_count => 0, :grade => 0, :course_type => @course_tag) From b1125e7d7e6d347adf47813b7f51de2a2465961d Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Mon, 5 Jan 2015 17:45:47 +0800 Subject: [PATCH 060/192] =?UTF-8?q?=E7=BC=96=E8=BE=91=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E6=94=B9=E4=B8=BAput?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/courses.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index 2e514b6e9..3b2f4dd4c 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -69,7 +69,7 @@ module Mobile requires :time, type: String, desc: '年份' requires :class_period, type: String, desc: '学时总数' end - post do + put do authenticate! cs_params = { course: params.reject{|k,v| [:term,:time,:class_period].include?(k)}, From f252438f853ec5ceae7395c0cbe9be810d35de81 Mon Sep 17 00:00:00 2001 From: z9hang Date: Mon, 5 Jan 2015 17:47:04 +0800 Subject: [PATCH 061/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/courses.rb | 5 +++-- app/controllers/courses_controller.rb | 2 +- app/services/courses_service.rb | 5 +++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index 2e514b6e9..c36abbd8d 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -65,12 +65,13 @@ module Mobile requires :is_public, type: Integer, desc: '是否公开 1公开 0私有' requires :open_student, type: Integer, desc: '是否公开学生列表1公开,0不公开,不公开时非课程成员无法看到学生列表' requires :course_type, type:Integer, desc: '暂时传1' - requires :term, type: String, desc: '学期(秋秀学期或春秀学期)' + requires :term, type: String, desc: '学期(秋季学期或春季学期)' requires :time, type: String, desc: '年份' requires :class_period, type: String, desc: '学时总数' end post do authenticate! + cs = CoursesService.new cs_params = { course: params.reject{|k,v| [:term,:time,:class_period].include?(k)}, term: params[:term], @@ -79,7 +80,7 @@ module Mobile } course = ::Course.find(params[:course_id]) cs.edit_course_authorize(current_user,course) - course = cs.edit_course(cs_params, course) + course = cs.edit_course(cs_params, course,current_user) present :data, course, with: Mobile::Entities::Course present :status, 0 end diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 985c33aab..19cca8e70 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -95,7 +95,7 @@ class CoursesController < ApplicationController #更新课程信息 def update cs = CoursesService.new - @course = cs.edit_course params,@course + @course = cs.edit_course params,@course,User.current if @course.errors.full_messages.count <= 0 respond_to do |format| format.html { diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index 3f025c892..b9489be4e 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -175,8 +175,9 @@ class CoursesService #params[:term]:学期(秋季学期或春季学期) #params[:time]: 年份(例:2014) #params[:class_period]:学时总数 - def edit_course params,course - course.safe_attributes = params[:course] + def edit_course(params,course,current_user) + course.send(:safe_attributes=, params[:course], current_user) + #course.safe_attributes = params[:course] course.time = params[:time] course.term = params[:term] course.class_period = params[:class_period] From 59f687bb6a65148923c5e7679db3bef5093aafec Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Mon, 5 Jan 2015 19:53:25 +0800 Subject: [PATCH 062/192] added homework --- app/api/mobile/api.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb index a2286181b..a386a57eb 100644 --- a/app/api/mobile/api.rb +++ b/app/api/mobile/api.rb @@ -30,6 +30,7 @@ module Mobile mount Apis::Courses mount Apis::Watches mount Apis::Upgrade + mount Apis::Homeworks #add_swagger_documentation ({api_version: 'v1', base_path: 'http://u06.shellinfo.cn/trustie/api'}) add_swagger_documentation ({api_version: 'v1', base_path: '/api'}) From ed776fa9b9149e562a77d9aa7d30bc7a74c142a9 Mon Sep 17 00:00:00 2001 From: z9hang Date: Tue, 6 Jan 2015 16:51:44 +0800 Subject: [PATCH 063/192] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E6=AD=A3=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E7=BC=96=E8=BE=91=E6=8E=A5=E5=8F=A3=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E3=80=822=E3=80=81=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=B3=A8=E5=86=8C=EF=BC=8C=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=8E=A5=E5=8F=A3=E8=BF=94=E5=9B=9E=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E4=B8=8D=E6=AD=A3=E7=A1=AE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/users.rb | 2 +- app/api/mobile/entities/user.rb | 7 ++++++- app/services/users_service.rb | 12 ++++++++++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index a566b702d..5d1455a78 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -35,7 +35,7 @@ module Mobile authenticate! us = UsersService.new ue = us.edit_user params.merge(id: current_user.id) - present :data, ue.user, with: Mobile::Entities::User + present :data, ue,with: Mobile::Entities::User present :status, 0 end diff --git a/app/api/mobile/entities/user.rb b/app/api/mobile/entities/user.rb index 3c3356b46..2a4c0cdaa 100644 --- a/app/api/mobile/entities/user.rb +++ b/app/api/mobile/entities/user.rb @@ -3,7 +3,12 @@ module Mobile class User < Grape::Entity def self.user_expose(f) expose f do |u,opt| - u.send(f) if u.respond_to?(f) + if u.is_a?(Hash) && u.key?(f) + u[f] + #else + # u.send(f) if u.respond_to?(f) + end + end end diff --git a/app/services/users_service.rb b/app/services/users_service.rb index c58956994..82b88befb 100644 --- a/app/services/users_service.rb +++ b/app/services/users_service.rb @@ -36,7 +36,11 @@ class UsersService ue.user_id = @user.id ue.save end - @user + img_url = url_to_avatar(@user) + gender = @user.user_extensions.gender.nil? ? 0 : @user.user_extensions.gender + work_unit = get_user_work_unit @user + location = get_user_location @user + {:id => @user.id, :img_url => img_url, :nickname => @user.login, :gender => gender, :work_unit => work_unit, :mail => @user.mail, :location => location, :brief_introduction => @user.user_extensions.brief_introduction} end #显示用户 @@ -95,7 +99,11 @@ class UsersService logger.error "[Error] avatar : users_service#edit_user ===> #{e}" end end - [:user_extensions =>@se,:img_url => url_to_avatar(@user),:work_unit => get_user_work_unit(@user),:location => get_user_location(@user)] + img_url = url_to_avatar(@user) + gender = @user.user_extensions.gender.nil? ? 0 : @user.user_extensions.gender + work_unit = get_user_work_unit @user + location = get_user_location @user + {:id => @user.id, :img_url => img_url, :nickname => @user.login, :gender => gender, :work_unit => work_unit, :mail => @user.mail, :location => location, :brief_introduction => @user.user_extensions.brief_introduction} end #获取用户的工作单位 From 1686ed4fbdadfe3c9ec531e8b6f2d93e48ea69eb Mon Sep 17 00:00:00 2001 From: z9hang Date: Tue, 6 Jan 2015 16:59:22 +0800 Subject: [PATCH 064/192] =?UTF-8?q?=E8=A1=A5=E4=B8=8A=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/users.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index 5d1455a78..e15fdb16b 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -20,6 +20,16 @@ module Mobile present :status, 0 end + desc "显示用户" + params do + + end + get ':id' do + us = UsersService.new + ue = us.show_user params + present :data, ue,with: Mobile::Entities::User + present :status, 0 + end desc "修改用户" params do From d407f8656d518544f9f3d859990f9278724219e1 Mon Sep 17 00:00:00 2001 From: z9hang Date: Tue, 6 Jan 2015 17:46:16 +0800 Subject: [PATCH 065/192] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E5=A4=8D=E8=AF=BE?= =?UTF-8?q?=E7=A8=8Bimg=5Furl=E4=B8=BA=E7=A9=BA=E9=97=AE=E9=A2=98=E3=80=82?= =?UTF-8?q?2=E3=80=81=E8=A1=A5=E4=B8=8A=E7=94=A8=E6=88=B7=E8=AF=BE?= =?UTF-8?q?=E7=A8=8B=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/users.rb | 12 ++++++++++++ app/api/mobile/entities/course.rb | 3 ++- app/services/users_service.rb | 6 +++++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index e15fdb16b..878748793 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -49,6 +49,18 @@ module Mobile present :status, 0 end + desc '获取用户课程' + params do + + end + + get ':id/courses' do + us = UsersService.new + ue = us.user_courses_list params,current_user.nil? ? User.find(2):current_user + present :data, ue,with: Mobile::Entities::Course + present :status, 0 + end + desc '修改密码' params do diff --git a/app/api/mobile/entities/course.rb b/app/api/mobile/entities/course.rb index 0dd0d6aeb..ffae1db1f 100644 --- a/app/api/mobile/entities/course.rb +++ b/app/api/mobile/entities/course.rb @@ -10,7 +10,8 @@ module Mobile c = f[:course] end if field == :img_url - f.img_url if f.respond_to?(:img_url) + f[field] if f.is_a?(Hash) && f.key?(field) + #f.img_url if f.respond_to?(:img_url) else (c[field] if (c.is_a?(Hash) && c.key?(field))) || (c.send(field) if c.respond_to?(field)) end diff --git a/app/services/users_service.rb b/app/services/users_service.rb index 82b88befb..c1074c1c0 100644 --- a/app/services/users_service.rb +++ b/app/services/users_service.rb @@ -146,7 +146,11 @@ class UsersService membership = @user.coursememberships.all(:conditions => Course.visible_condition(User.current)) end membership.sort! {|older, newer| newer.created_on <=> older.created_on } - membership + course_list = [] + membership.each do |mp| + course_list << {:course => mp.course,:img_url => url_to_avatar(mp.course)} + end + course_list end #修改密码 From 10cde37582b6751463d8bd3e12054c2a481b46ce Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Wed, 7 Jan 2015 09:27:44 +0800 Subject: [PATCH 066/192] cache using version --- .metadata/.log | 108 ++++++++ .../{connections.9 => connections.15} | 2 +- ...faultConnection.9 => defaultConnection.15} | 12 +- .../{sites.9 => sites.15} | 2 +- .../{webservers.8 => webservers.12} | 10 +- .../{.root/2.tree => .projects/demo/6.tree} | Bin 4837 -> 4750 bytes .../.root/.indexes/properties.index | Bin 104 -> 104 bytes .../org.eclipse.core.resources/.root/4.tree | Bin 0 -> 94 bytes .../.safetable/com.aptana.core.io.15 | 3 + .../.safetable/com.aptana.core.io.9 | 3 - .../.safetable/com.aptana.syncing.core.15 | 4 + .../.safetable/com.aptana.syncing.core.9 | 4 - .../.safetable/com.aptana.webserver.core.12 | 3 + .../.safetable/com.aptana.webserver.core.8 | 3 - .../.safetable/org.eclipse.core.resources | Bin 866 -> 908 bytes .../.settings/com.aptana.portal.ui.prefs | 2 +- .../.settings/com.aptana.theme.prefs | 2 +- .../.settings/org.eclipse.ui.ide.prefs | 2 +- .../.workspace/2015/1/2/refactorings.history | 3 + .../.workspace/2015/1/2/refactorings.index | 2 + .../dialog_settings.xml | 7 + .../org.eclipse.ui.ide/dialog_settings.xml | 22 +- .../dialog_settings.xml | 4 +- .../org.eclipse.ui.workbench/workbench.xml | 30 +- 0) | 1 - Gemfile | 261 +++++++++--------- app/models/bid.rb | 10 +- app/models/changeset.rb | 11 +- app/models/contest_notification.rb | 7 + app/models/document.rb | 8 +- app/models/forum.rb | 12 +- app/models/issue.rb | 6 + app/models/journals_for_message.rb | 8 +- app/models/memo.rb | 10 +- app/models/message.rb | 9 +- app/models/news.rb | 7 + app/models/project.rb | 11 +- app/views/welcome/index.html.erb | 23 +- config/environments/development.rb | 4 +- .../acts_as_event/lib/acts_as_event.rb | 1 + ...lesheets%2Fapplication.css%3F1420357855%3D | Bin 0 -> 2125 bytes ...calhost%3A3000%2Fimages%2Flist-icon.png%3F | Bin 0 -> 2009 bytes ...3A3000%2Fimages%2Flogo.png%3F1420357778%3D | Bin 0 -> 1987 bytes ...0%2Fstylesheets%2Fnyan.css%3F1420357855%3D | Bin 0 -> 2005 bytes ...%3A3000%2Fstylesheets%2Fapplication.css%3F | Bin 0 -> 2000 bytes public/cache/568/F80/views%2Fforums | 145 ++++++++++ ...mages%2Favatars%2FUser%2F0%3F1420357778%3D | Bin 0 -> 2001 bytes ...2Fimages%2Ftransparent.png%3F1420357778%3D | Bin 0 -> 2014 bytes ...2Fjavascripts%2Fwelcome.js%3F1420357855%3D | Bin 0 -> 2044 bytes public/cache/636/EF0/views%2Fprojects | 185 +++++++++++++ ...Fstylesheets%2Fwelcome.css%3F1420357855%3D | Bin 0 -> 2050 bytes public/cache/6CA/670/views%2Fissues%2F2210 | 22 ++ public/cache/6CB/680/views%2Fissues%2F2211 | 22 ++ public/cache/6D1/6D0/views%2Fissues%2F2208 | 22 ++ public/cache/6D2/6E0/views%2Fissues%2F2209 | 22 ++ ...es%2Favatars%2FProject%2F0%3F1420357778%3D | Bin 0 -> 2003 bytes public/cache/701/020/views%2Factivities | 127 +++++++++ public/cache/705/AF0/views%2Fprojects%2F2 | 21 ++ public/cache/73B/E90/views%2Fprojects%2F17 | 19 ++ public/cache/73D/EC0/views%2Fprojects%2F28 | 19 ++ public/cache/73E/ED0/views%2Fprojects%2F29 | 21 ++ public/cache/766/4C0/views%2Fprojects%2F300 | 19 ++ public/cache/769/520/views%2Fprojects%2F330 | 19 ++ public/cache/76B/500/views%2Fprojects%2F134 | 19 ++ public/cache/76C/530/views%2Fprojects%2F315 | 19 ++ public/cache/76E/5B0/views%2Fprojects%2F290 | 19 ++ public/cache/777/640/views%2Fprojects%2F299 | 19 ++ ...vascripts%2Fapplication.js%3F1420357855%3D | Bin 0 -> 2026 bytes public/cache/7AC/380/views%2Fjournals%2F5295 | 22 ++ public/cache/7AD/390/views%2Fjournals%2F5296 | 22 ++ public/cache/7AE/3A0/views%2Fjournals%2F5297 | 22 ++ public/cache/7AF/3B0/views%2Fjournals%2F5298 | 22 ++ .../800/views%2Fmemos%2F427-20150106032234 | 25 ++ .../A60/views%2Fmemos%2F427-20150106082740 | 25 ++ .../DB0/views%2Fmemos%2F582-20141129071403 | 25 ++ .../D00/views%2Fmemos%2F574-20141125104842 | 25 ++ .../E50/views%2Fmemos%2F565-20141128054331 | 25 ++ .../EF0/views%2Fmemos%2F576-20141126222236 | 25 ++ .../170/views%2Fmemos%2F579-20141127101435 | 23 ++ .../D30/views%2Fmemos%2F582-20150106082842 | 25 ++ .../320/views%2Fmemos%2F579-20150106082907 | 25 ++ .../cae6965b71862532cc646d5995119a5821980260 | Bin 0 -> 6735 bytes .../0906d39339d5f71e61207417e8c95f43c783442e | Bin 0 -> 3017 bytes ...s%2Fjquery.colorbox-min.js%3F1420357855%3D | Bin 0 -> 2059 bytes .../f06dd67d6627069f7f7215df57898d9b29c4b869 | Bin 0 -> 10539 bytes .../e8d35b3dc5255332a9a7f5c7d92c79635729fb41 | 25 ++ ...%2Fjquery.leanModal.min.js%3F1420357778%3D | Bin 0 -> 2062 bytes .../4cea7ff935690a5e00f53017e2452eee8a0e6254 | 232 ++++++++++++++++ .../60567173164aa1f75c0f9517835ebc2fd5eb0ec5 | Bin 0 -> 12051 bytes .../bbefbac7540e09e1955cb47321965813266c7a8e | 69 +++++ .../57a7c6d86d2ad09012bac99d46b38f9f33a970a8 | 6 + .../88eae75bf7b81a196ba38d86bf54e7162ab274c1 | Bin 0 -> 338091 bytes .../e9938e23e7a85ff3d431e045384ccd84dea93ce8 | Bin 0 -> 20153 bytes .../afc8c0ba867511cd69e8b5d43542aad5a2e716c6 | Bin 0 -> 37249 bytes .../213cd47b5ee47b691425e1fcb6dffb207c707d8c | Bin 0 -> 27657 bytes .../6d2710e981a7dd596afcc77e54ff43b9d7f75cb2 | Bin 0 -> 41860 bytes ...uery%2Fjquery-ui-1.9.2.css%3F1420357855%3D | Bin 0 -> 2075 bytes ....8.3-ui-1.9.2-ujs-2.0.3.js%3F1420357855%3D | Bin 0 -> 2108 bytes .../0e09a16c714ce54739affa1a4e945aa699b4baae | Bin 0 -> 2979 bytes .../dd147f7301bf4217fcb61f9e99d343f4f6ffbb1a | Bin 0 -> 11948 bytes .../f743173130fefc074fc3faadc21911a5f8ed7eff | Bin 0 -> 84782 bytes .../0917fc42cb8dfbd8bc5add2088e60feb41c28e0f | Bin 0 -> 4321 bytes ...eems_rateable%2FjRating.js%3F1420357855%3D | Bin 0 -> 2104 bytes ...ems_rateable%2Frateable.js%3F1420357855%3D | Bin 0 -> 2108 bytes 104 files changed, 1788 insertions(+), 211 deletions(-) rename .metadata/.plugins/com.aptana.core.io/{connections.9 => connections.15} (72%) rename .metadata/.plugins/com.aptana.syncing.core/{defaultConnection.9 => defaultConnection.15} (62%) rename .metadata/.plugins/com.aptana.syncing.core/{sites.9 => sites.15} (81%) rename .metadata/.plugins/com.aptana.webserver.core/{webservers.8 => webservers.12} (92%) rename .metadata/.plugins/org.eclipse.core.resources/{.root/2.tree => .projects/demo/6.tree} (95%) create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.root/4.tree create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.core.io.15 delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.core.io.9 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.syncing.core.15 delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.syncing.core.9 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.webserver.core.12 delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.webserver.core.8 create mode 100644 .metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2015/1/2/refactorings.history create mode 100644 .metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2015/1/2/refactorings.index create mode 100644 .metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml delete mode 100644 0) create mode 100644 public/cache/1DB/8A2/http%3A%2F%2Flocalhost%3A3000%2Fthemes%2Fredpenny-master%2Fstylesheets%2Fapplication.css%3F1420357855%3D create mode 100644 public/cache/20C/451/http%3A%2F%2Flocalhost%3A3000%2Fimages%2Flist-icon.png%3F create mode 100644 public/cache/2D3/CC1/http%3A%2F%2Flocalhost%3A3000%2Fimages%2Flogo.png%3F1420357778%3D create mode 100644 public/cache/51F/CA1/http%3A%2F%2Flocalhost%3A3000%2Fstylesheets%2Fnyan.css%3F1420357855%3D create mode 100644 public/cache/559/261/http%3A%2F%2Flocalhost%3A3000%2Fstylesheets%2Fapplication.css%3F create mode 100644 public/cache/568/F80/views%2Fforums create mode 100644 public/cache/5AA/681/http%3A%2F%2Flocalhost%3A3000%2Fimages%2Favatars%2FUser%2F0%3F1420357778%3D create mode 100644 public/cache/5D4/CE1/http%3A%2F%2Flocalhost%3A3000%2Fimages%2Ftransparent.png%3F1420357778%3D create mode 100644 public/cache/5D6/771/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fwelcome.js%3F1420357855%3D create mode 100644 public/cache/636/EF0/views%2Fprojects create mode 100644 public/cache/655/921/http%3A%2F%2Flocalhost%3A3000%2Fstylesheets%2Fwelcome.css%3F1420357855%3D create mode 100644 public/cache/6CA/670/views%2Fissues%2F2210 create mode 100644 public/cache/6CB/680/views%2Fissues%2F2211 create mode 100644 public/cache/6D1/6D0/views%2Fissues%2F2208 create mode 100644 public/cache/6D2/6E0/views%2Fissues%2F2209 create mode 100644 public/cache/6E2/DF1/http%3A%2F%2Flocalhost%3A3000%2Fimages%2Favatars%2FProject%2F0%3F1420357778%3D create mode 100644 public/cache/701/020/views%2Factivities create mode 100644 public/cache/705/AF0/views%2Fprojects%2F2 create mode 100644 public/cache/73B/E90/views%2Fprojects%2F17 create mode 100644 public/cache/73D/EC0/views%2Fprojects%2F28 create mode 100644 public/cache/73E/ED0/views%2Fprojects%2F29 create mode 100644 public/cache/766/4C0/views%2Fprojects%2F300 create mode 100644 public/cache/769/520/views%2Fprojects%2F330 create mode 100644 public/cache/76B/500/views%2Fprojects%2F134 create mode 100644 public/cache/76C/530/views%2Fprojects%2F315 create mode 100644 public/cache/76E/5B0/views%2Fprojects%2F290 create mode 100644 public/cache/777/640/views%2Fprojects%2F299 create mode 100644 public/cache/77E/D81/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fapplication.js%3F1420357855%3D create mode 100644 public/cache/7AC/380/views%2Fjournals%2F5295 create mode 100644 public/cache/7AD/390/views%2Fjournals%2F5296 create mode 100644 public/cache/7AE/3A0/views%2Fjournals%2F5297 create mode 100644 public/cache/7AF/3B0/views%2Fjournals%2F5298 create mode 100644 public/cache/911/800/views%2Fmemos%2F427-20150106032234 create mode 100644 public/cache/918/A60/views%2Fmemos%2F427-20150106082740 create mode 100644 public/cache/919/DB0/views%2Fmemos%2F582-20141129071403 create mode 100644 public/cache/91A/D00/views%2Fmemos%2F574-20141125104842 create mode 100644 public/cache/91A/E50/views%2Fmemos%2F565-20141128054331 create mode 100644 public/cache/91B/EF0/views%2Fmemos%2F576-20141126222236 create mode 100644 public/cache/91C/170/views%2Fmemos%2F579-20141127101435 create mode 100644 public/cache/91D/D30/views%2Fmemos%2F582-20150106082842 create mode 100644 public/cache/925/320/views%2Fmemos%2F579-20150106082907 create mode 100644 public/cache/9B3/1B0/cae6965b71862532cc646d5995119a5821980260 create mode 100644 public/cache/9E6/E80/0906d39339d5f71e61207417e8c95f43c783442e create mode 100644 public/cache/A91/6A1/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fjquery.colorbox-min.js%3F1420357855%3D create mode 100644 public/cache/A95/AE0/f06dd67d6627069f7f7215df57898d9b29c4b869 create mode 100644 public/cache/AA5/BD0/e8d35b3dc5255332a9a7f5c7d92c79635729fb41 create mode 100644 public/cache/ABB/FD1/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fjquery.leanModal.min.js%3F1420357778%3D create mode 100644 public/cache/AC2/540/4cea7ff935690a5e00f53017e2452eee8a0e6254 create mode 100644 public/cache/AC2/A80/60567173164aa1f75c0f9517835ebc2fd5eb0ec5 create mode 100644 public/cache/AC9/C70/bbefbac7540e09e1955cb47321965813266c7a8e create mode 100644 public/cache/AFF/300/57a7c6d86d2ad09012bac99d46b38f9f33a970a8 create mode 100644 public/cache/B2D/650/88eae75bf7b81a196ba38d86bf54e7162ab274c1 create mode 100644 public/cache/B3B/DA0/e9938e23e7a85ff3d431e045384ccd84dea93ce8 create mode 100644 public/cache/B4F/E50/afc8c0ba867511cd69e8b5d43542aad5a2e716c6 create mode 100644 public/cache/B54/AB0/213cd47b5ee47b691425e1fcb6dffb207c707d8c create mode 100644 public/cache/B6B/0E0/6d2710e981a7dd596afcc77e54ff43b9d7f75cb2 create mode 100644 public/cache/B76/7F1/http%3A%2F%2Flocalhost%3A3000%2Fstylesheets%2Fjquery%2Fjquery-ui-1.9.2.css%3F1420357855%3D create mode 100644 public/cache/B7C/511/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fjquery-1.8.3-ui-1.9.2-ujs-2.0.3.js%3F1420357855%3D create mode 100644 public/cache/B7E/7C0/0e09a16c714ce54739affa1a4e945aa699b4baae create mode 100644 public/cache/B8A/F50/dd147f7301bf4217fcb61f9e99d343f4f6ffbb1a create mode 100644 public/cache/BB1/DF0/f743173130fefc074fc3faadc21911a5f8ed7eff create mode 100644 public/cache/BE0/BD0/0917fc42cb8dfbd8bc5add2088e60feb41c28e0f create mode 100644 public/cache/C12/DE1/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fseems_rateable%2FjRating.js%3F1420357855%3D create mode 100644 public/cache/C83/011/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fseems_rateable%2Frateable.js%3F1420357855%3D diff --git a/.metadata/.log b/.metadata/.log index 0cb16378c..fbbe00cbe 100644 --- a/.metadata/.log +++ b/.metadata/.log @@ -209,3 +209,111 @@ java.lang.UnsupportedOperationException: Not supported yet. at com.aptana.index.core.IndexRequestJob.indexFileStores(IndexRequestJob.java:205) at com.aptana.index.core.IndexContainerJob.run(IndexContainerJob.java:114) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) +!SESSION 2015-01-05 10:21:34.093 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.6.0_24 +java.vendor=Sun Microsystems Inc. +BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=zh_CN +Command-line arguments: -os win32 -ws win32 -arch x86 + +!ENTRY org.eclipse.core.resources 4 567 2015-01-05 10:21:56.435 +!MESSAGE Workspace restored, but some problems occurred. +!SUBENTRY 1 org.eclipse.core.resources 4 567 2015-01-05 10:21:56.435 +!MESSAGE Could not read metadata for 'demo'. +!STACK 1 +org.eclipse.core.internal.resources.ResourceException: The project description file (.project) for 'demo' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:851) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:874) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:854) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:703) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1528) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2503) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2251) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:439) + at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711) + at java.security.AccessController.doPrivileged(Native Method) + at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702) + at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683) + at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381) + at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:299) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:440) + at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:268) + at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107) + at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:463) + at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400) + at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:35) + at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:473) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417) + at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) + at java.lang.ClassLoader.loadClass(Unknown Source) + at com.aptana.rcp.IDEApplication.start(IDEApplication.java:125) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) + at java.lang.reflect.Method.invoke(Unknown Source) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577) + at org.eclipse.equinox.launcher.Main.run(Main.java:1410) +!SUBENTRY 2 org.eclipse.core.resources 4 567 2015-01-05 10:21:56.435 +!MESSAGE The project description file (.project) for 'demo' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + +!ENTRY com.aptana.terminal 1 0 2015-01-05 10:22:03.546 +!MESSAGE Starting terminal process failed. +!STACK 1 +org.eclipse.core.runtime.CoreException: Shell executable could not be found. + at com.aptana.core.ShellExecutable.getPath(ShellExecutable.java:113) + at com.aptana.terminal.internal.configurations.WindowsMingwConfiguration.getCommandLine(WindowsMingwConfiguration.java:40) + at com.aptana.terminal.internal.ProcessLauncher.launch(ProcessLauncher.java:38) + at com.aptana.terminal.connector.LocalTerminalConnector.startProcess(LocalTerminalConnector.java:220) + at com.aptana.terminal.connector.LocalTerminalConnector.access$0(LocalTerminalConnector.java:208) + at com.aptana.terminal.connector.LocalTerminalConnector$1.run(LocalTerminalConnector.java:102) +!SUBENTRY 1 com.aptana.core 4 0 2015-01-05 10:22:03.546 +!MESSAGE Shell executable could not be found. + +!ENTRY org.eclipse.core.jobs 2 2 2015-01-05 10:27:30.988 +!MESSAGE Job found still running after platform shutdown. Jobs should be canceled by the plugin that scheduled them during shutdown: org.eclipse.tm.internal.terminal.emulator.VT100TerminalControl$1 + +!ENTRY org.eclipse.core.jobs 2 2 2015-01-05 10:27:30.989 +!MESSAGE Job found still running after platform shutdown. Jobs should be canceled by the plugin that scheduled them during shutdown: com.aptana.usage.internal.DefaultAnalyticsEventHandler$1 +!SESSION 2015-01-05 10:27:31.720 ----------------------------------------------- +eclipse.buildId=3.4.2.201308081805 +java.version=1.6.0_24 +java.vendor=Sun Microsystems Inc. +BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=zh_CN +Command-line arguments: -os win32 -ws win32 -arch x86 + +!ENTRY com.aptana.terminal 1 0 2015-01-05 10:27:34.915 +!MESSAGE Starting terminal process failed. +!STACK 1 +org.eclipse.core.runtime.CoreException: Shell executable could not be found. + at com.aptana.core.ShellExecutable.getPath(ShellExecutable.java:113) + at com.aptana.terminal.internal.configurations.WindowsMingwConfiguration.getCommandLine(WindowsMingwConfiguration.java:40) + at com.aptana.terminal.internal.ProcessLauncher.launch(ProcessLauncher.java:38) + at com.aptana.terminal.connector.LocalTerminalConnector.startProcess(LocalTerminalConnector.java:220) + at com.aptana.terminal.connector.LocalTerminalConnector.access$0(LocalTerminalConnector.java:208) + at com.aptana.terminal.connector.LocalTerminalConnector$1.run(LocalTerminalConnector.java:102) +!SUBENTRY 1 com.aptana.core 4 0 2015-01-05 10:27:34.915 +!MESSAGE Shell executable could not be found. + +!ENTRY com.aptana.terminal 1 0 2015-01-05 10:27:37.984 +!MESSAGE Starting terminal process failed. +!STACK 1 +org.eclipse.core.runtime.CoreException: Shell executable could not be found. + at com.aptana.core.ShellExecutable.getPath(ShellExecutable.java:113) + at com.aptana.terminal.internal.configurations.WindowsMingwConfiguration.getCommandLine(WindowsMingwConfiguration.java:40) + at com.aptana.terminal.internal.ProcessLauncher.launch(ProcessLauncher.java:38) + at com.aptana.terminal.connector.LocalTerminalConnector.startProcess(LocalTerminalConnector.java:220) + at com.aptana.terminal.connector.LocalTerminalConnector.access$0(LocalTerminalConnector.java:208) + at com.aptana.terminal.connector.LocalTerminalConnector$1.run(LocalTerminalConnector.java:102) +!SUBENTRY 1 com.aptana.core 4 0 2015-01-05 10:27:37.984 +!MESSAGE Shell executable could not be found. + +!ENTRY org.eclipse.core.jobs 2 2 2015-01-05 10:27:55.438 +!MESSAGE Job found still running after platform shutdown. Jobs should be canceled by the plugin that scheduled them during shutdown: org.eclipse.tm.internal.terminal.emulator.VT100TerminalControl$1 diff --git a/.metadata/.plugins/com.aptana.core.io/connections.9 b/.metadata/.plugins/com.aptana.core.io/connections.15 similarity index 72% rename from .metadata/.plugins/com.aptana.core.io/connections.9 rename to .metadata/.plugins/com.aptana.core.io/connections.15 index 4371c4759..46f15223a 100644 --- a/.metadata/.plugins/com.aptana.core.io/connections.9 +++ b/.metadata/.plugins/com.aptana.core.io/connections.15 @@ -1,2 +1,2 @@ - + \ No newline at end of file diff --git a/.metadata/.plugins/com.aptana.syncing.core/defaultConnection.9 b/.metadata/.plugins/com.aptana.syncing.core/defaultConnection.15 similarity index 62% rename from .metadata/.plugins/com.aptana.syncing.core/defaultConnection.9 rename to .metadata/.plugins/com.aptana.syncing.core/defaultConnection.15 index 375897785..7f1a49fed 100644 --- a/.metadata/.plugins/com.aptana.syncing.core/defaultConnection.9 +++ b/.metadata/.plugins/com.aptana.syncing.core/defaultConnection.15 @@ -1,7 +1,7 @@ - - - -Default -file:/C:/Users/nudt - + + + +Default +file:/C:/Users/Administrator + \ No newline at end of file diff --git a/.metadata/.plugins/com.aptana.syncing.core/sites.9 b/.metadata/.plugins/com.aptana.syncing.core/sites.15 similarity index 81% rename from .metadata/.plugins/com.aptana.syncing.core/sites.9 rename to .metadata/.plugins/com.aptana.syncing.core/sites.15 index d9b475695..dc24d7a57 100644 --- a/.metadata/.plugins/com.aptana.syncing.core/sites.9 +++ b/.metadata/.plugins/com.aptana.syncing.core/sites.15 @@ -1,2 +1,2 @@ - + \ No newline at end of file diff --git a/.metadata/.plugins/com.aptana.webserver.core/webservers.8 b/.metadata/.plugins/com.aptana.webserver.core/webservers.12 similarity index 92% rename from .metadata/.plugins/com.aptana.webserver.core/webservers.8 rename to .metadata/.plugins/com.aptana.webserver.core/webservers.12 index 5c07542b1..2979c56a7 100644 --- a/.metadata/.plugins/com.aptana.webserver.core/webservers.8 +++ b/.metadata/.plugins/com.aptana.webserver.core/webservers.12 @@ -1,6 +1,6 @@ - - - -demo - + + + +demo + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/2.tree b/.metadata/.plugins/org.eclipse.core.resources/.projects/demo/6.tree similarity index 95% rename from .metadata/.plugins/org.eclipse.core.resources/.root/2.tree rename to .metadata/.plugins/org.eclipse.core.resources/.projects/demo/6.tree index 5b2529389243f247a5e2c6f799eb40d3d01d5bfa..215d06c77a1d8bb9bd121ea677fc75348036022d 100644 GIT binary patch delta 23 acmaE=+Na9N!py|P00fL1BN~NRKr8?>&;xS- delta 110 zcmeBEeX1J4!py|P00G%h8XLvPz><=ho6n$>oS&nwOcD dnVRBMnwgW5S_IP0$h48OQHX~T$O2+8005dS5~%x$ delta 22 dcmd1Em|(+bG|^U`$Jo-u)X2=(+{nbp6aYh?1w8-& diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/4.tree b/.metadata/.plugins/org.eclipse.core.resources/.root/4.tree new file mode 100644 index 0000000000000000000000000000000000000000..942a97c51c5361c1dcf3226e7dccf9f1ed93bd2b GIT binary patch literal 94 zcmZQ!W@2Ih1EzBj8av6z$iN7c0a7d}sk!+e4vP?w@3JBJ>k+6H77+a(3cz9jF literal 0 HcmV?d00001 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.core.io.15 b/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.core.io.15 new file mode 100644 index 000000000..971c3ef7e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.core.io.15 @@ -0,0 +1,3 @@ +#safe table +#Mon Jan 05 10:27:54 CST 2015 +connections=connections.15 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.core.io.9 b/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.core.io.9 deleted file mode 100644 index 0b4ef3b47..000000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.core.io.9 +++ /dev/null @@ -1,3 +0,0 @@ -#safe table -#Tue Mar 11 17:27:27 CST 2014 -connections=connections.9 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.syncing.core.15 b/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.syncing.core.15 new file mode 100644 index 000000000..01bf076fe --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.syncing.core.15 @@ -0,0 +1,4 @@ +#safe table +#Mon Jan 05 10:27:54 CST 2015 +defaultConnection=defaultConnection.15 +sites=sites.15 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.syncing.core.9 b/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.syncing.core.9 deleted file mode 100644 index 371e94161..000000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.syncing.core.9 +++ /dev/null @@ -1,4 +0,0 @@ -#safe table -#Tue Mar 11 17:27:27 CST 2014 -defaultConnection=defaultConnection.9 -sites=sites.9 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.webserver.core.12 b/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.webserver.core.12 new file mode 100644 index 000000000..26cede301 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.webserver.core.12 @@ -0,0 +1,3 @@ +#safe table +#Mon Jan 05 10:27:28 CST 2015 +webservers=webservers.12 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.webserver.core.8 b/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.webserver.core.8 deleted file mode 100644 index 1af4b85d6..000000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.webserver.core.8 +++ /dev/null @@ -1,3 +0,0 @@ -#safe table -#Tue Mar 11 17:27:27 CST 2014 -webservers=webservers.8 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources index b3b591e284d378d05220aa1d474a6235416d77f8..de5f19a7c6b8129e072d20a4e6511eb094f80a19 100644 GIT binary patch delta 200 zcmaFF*26wQLB=;fPr)lOPr<-c!O+0U$lS`*M8P>YM8U|w&~&1W`easSp^0;ZCYv&) zFq%vjV3e4|$j@YG1Z1fS8k+EO>8GUT=IiT~6s4xxnoYEkn8fVQWN0#Z4x + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2015/1/2/refactorings.index b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2015/1/2/refactorings.index new file mode 100644 index 000000000..d5428a792 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2015/1/2/refactorings.index @@ -0,0 +1,2 @@ +1420424676858 Delete resource 'trustie2' +1420424775104 Delete resource 'trustie2' diff --git a/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml new file mode 100644 index 000000000..27eb4040f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml @@ -0,0 +1,7 @@ + +

+
+ + +
+
diff --git a/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml index 4868ecd96..09856e2e7 100644 --- a/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml +++ b/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml @@ -1,14 +1,26 @@
- - - - + + + + - + +
+ + +
+
+ + +
+
+ + +
diff --git a/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml index f7e4d66f0..c8c1e4f77 100644 --- a/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml +++ b/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml @@ -1,7 +1,9 @@
+
+
- + diff --git a/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml b/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml index 88eaacee1..3467fd0f7 100644 --- a/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml +++ b/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml @@ -1,5 +1,5 @@ - + @@ -8,14 +8,14 @@ - + - - - + + + - + @@ -37,7 +37,7 @@ demo -E:\code\demo +C:\Users\Administrator @@ -46,7 +46,7 @@ Terminal -C:\Users\nudt +C:\Users\Administrator @@ -66,19 +66,13 @@ - - - - - - - + - + @@ -150,7 +144,7 @@ - + @@ -166,7 +160,7 @@ - + diff --git a/0) b/0) deleted file mode 100644 index 70d77d63e..000000000 --- a/0) +++ /dev/null @@ -1 +0,0 @@ -ֹ(Y/N)? ֹ(Y/N)? ֹ(Y/N)? ֹ(Y/N)? \ No newline at end of file diff --git a/Gemfile b/Gemfile index f462133c3..318b8dcf0 100644 --- a/Gemfile +++ b/Gemfile @@ -1,136 +1,125 @@ -source 'http://ruby.taobao.org' -#source 'http://ruby.sdutlinux.org/' - -unless RUBY_PLATFORM =~ /w32/ - # unix-like only - gem 'iconv' - gem 'rubyzip' - gem 'zip-zip' -end - -gem 'seems_rateable', path: 'lib/seems_rateable' -gem "rails", "3.2.13" -gem "jquery-rails", "~> 2.0.2" -gem "i18n", "~> 0.6.0" -gem "coderay", "~> 1.0.6" -gem "fastercsv", "~> 1.5.0", :platforms => [:mri_18, :mingw_18, :jruby] -gem "builder", "3.0.0" -gem 'acts-as-taggable-on', '2.4.1' -gem 'spreadsheet' -gem 'ruby-ole' - -group :development do - gem 'better_errors', path: 'lib/better_errors' - gem 'rack-mini-profiler', path: 'lib/rack-mini-profiler' -end - -group :test do - gem "shoulda", "~> 3.5.0" - gem "mocha", "~> 1.1.0" - gem 'capybara', '~> 2.4.1' - gem 'nokogiri', '~> 1.6.3' - gem 'factory_girl', '~> 4.4.0' - gem 'selenium-webdriver', '~> 2.42.0' - - - platforms :mri, :mingw do - group :rmagick do - # RMagick 2 supports ruby 1.9 - # RMagick 1 would be fine for ruby 1.8 but Bundler does not support - # different requirements for the same gem on different platforms - gem "rmagick", ">= 2.0.0" - end - end -end - -group :development, :test do - gem "guard-rails", '~> 0.5.3' - gem 'spork-testunit', '~> 0.0.8' - gem 'guard-spork', '~> 1.5.1' - gem 'guard-test', '~> 1.0.0' - gem 'ruby-prof', '~> 0.15.1' unless RUBY_PLATFORM =~ /w32/ - gem 'pry' - gem 'pry-nav' - -end - - -# Gems used only for assets and not required -# in production environments by default. -group :assets do - gem 'sass-rails', '~> 3.2.3' - gem 'coffee-rails', '~> 3.2.1' - - # See https://github.com/sstephenson/execjs#readme for more supported runtimes - gem 'therubyracer', :platforms => :ruby - - gem 'uglifier', '>= 1.0.3' -end - -# Optional gem for LDAP authentication -group :ldap do - gem "net-ldap", "~> 0.3.1" -end - - -# Optional gem for OpenID authentication -group :openid do - gem "ruby-openid", "~> 2.1.4", :require => "openid" - gem "rack-openid" -end - -# Optional gem for exporting the gantt to a PNG file, not supported with jruby -platforms :jruby do - # jruby-openssl is bundled with JRuby 1.7.0 - gem "jruby-openssl" if Object.const_defined?(:JRUBY_VERSION) && JRUBY_VERSION < '1.7.0' - gem "activerecord-jdbc-adapter", "1.2.5" -end - -# Include database gems for the adapters found in the database -# configuration file -require 'erb' -require 'yaml' -database_file = File.join(File.dirname(__FILE__), "config/database.yml") -if File.exist?(database_file) - database_config = YAML::load(ERB.new(IO.read(database_file)).result) - adapters = database_config.values.map {|c| c['adapter']}.compact.uniq - if adapters.any? - adapters.each do |adapter| - case adapter - when 'mysql2' - gem "mysql2", "= 0.3.11", :platforms => [:mri, :mingw] - gem "activerecord-jdbcmysql-adapter", :platforms => :jruby - when 'mysql' - gem "mysql", "~> 2.8.1", :platforms => [:mri, :mingw] - gem "activerecord-jdbcmysql-adapter", :platforms => :jruby - when /postgresql/ - gem "pg", ">= 0.11.0", :platforms => [:mri, :mingw] - gem "activerecord-jdbcpostgresql-adapter", :platforms => :jruby - when /sqlite3/ - gem "sqlite3", :platforms => [:mri, :mingw] - gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby - when /sqlserver/ - gem "tiny_tds", "~> 0.5.1", :platforms => [:mri, :mingw] - gem "activerecord-sqlserver-adapter", :platforms => [:mri, :mingw] - else - warn("Unknown database adapter `#{adapter}` found in config/database.yml, use Gemfile.local to load your own database gems") - end - end - else - warn("No adapter found in config/database.yml, please configure it first") - end -else - warn("Please configure your config/database.yml first") -end - -local_gemfile = File.join(File.dirname(__FILE__), "Gemfile.local") -if File.exists?(local_gemfile) - puts "Loading Gemfile.local ..." if $DEBUG # `ruby -d` or `bundle -v` - instance_eval File.read(local_gemfile) -end - -# Load plugins' Gemfiles -Dir.glob File.expand_path("../plugins/*/Gemfile", __FILE__) do |file| - puts "Loading #{file} ..." if $DEBUG # `ruby -d` or `bundle -v` - instance_eval File.read(file) -end +source 'https://rubygems.org' + +unless RUBY_PLATFORM =~ /w32/ + # unix-like only + gem 'iconv' + gem 'rubyzip' + gem 'zip-zip' +end + +gem 'seems_rateable', path: 'lib/seems_rateable' +gem "rails", "3.2.13" +gem "jquery-rails", "~> 2.0.2" +gem "i18n", "~> 0.6.0" +gem "coderay", "~> 1.0.6" +gem "fastercsv", "~> 1.5.0", :platforms => [:mri_18, :mingw_18, :jruby] +gem "builder", "3.0.0" +gem 'acts-as-taggable-on', '2.4.1' + +group :development do + gem 'better_errors', path: 'lib/better_errors' + gem 'rack-mini-profiler', path: 'lib/rack-mini-profiler' + if ENV['PRY'] + gem 'pry' + gem 'pry-nav' + end +end + +# group :test do +# # shoulda的版本做了改动 +# #gem "shoulda", "~> 3.3.2" +# gem "shoulda", "> 3.3.2" +# gem "mocha", "~> 0.13.3" +# gem 'capybara', '~> 2.0.0' +# gem 'nokogiri', '< 1.6.0' +# end + + +# Gems used only for assets and not required +# in production environments by default. +group :assets do + gem 'sass-rails', '~> 3.2.3' + gem 'coffee-rails', '~> 3.2.1' + + # See https://github.com/sstephenson/execjs#readme for more supported runtimes + gem 'therubyracer', :platforms => :ruby + + gem 'uglifier', '>= 1.0.3' +end + +# Optional gem for LDAP authentication +group :ldap do + gem "net-ldap", "~> 0.3.1" +end + + +# platforms :mri, :mingw do +# group :rmagick do +# # RMagick 2 supports ruby 1.9 +# # RMagick 1 would be fine for ruby 1.8 but Bundler does not support +# # different requirements for the same gem on different platforms +# gem "rmagick", ">= 2.0.0" +# end +# end + +# Optional gem for OpenID authentication +group :openid do + gem "ruby-openid", "~> 2.1.4", :require => "openid" + gem "rack-openid" +end + +# Optional gem for exporting the gantt to a PNG file, not supported with jruby +platforms :jruby do + # jruby-openssl is bundled with JRuby 1.7.0 + gem "jruby-openssl" if Object.const_defined?(:JRUBY_VERSION) && JRUBY_VERSION < '1.7.0' + gem "activerecord-jdbc-adapter", "1.2.5" +end + +# Include database gems for the adapters found in the database +# configuration file +require 'erb' +require 'yaml' +database_file = File.join(File.dirname(__FILE__), "config/database.yml") +if File.exist?(database_file) + database_config = YAML::load(ERB.new(IO.read(database_file)).result) + adapters = database_config.values.map {|c| c['adapter']}.compact.uniq + if adapters.any? + adapters.each do |adapter| + case adapter + when 'mysql2' + gem "mysql2", "= 0.3.11", :platforms => [:mri, :mingw] + gem "activerecord-jdbcmysql-adapter", :platforms => :jruby + when 'mysql' + gem "mysql", "~> 2.8.1", :platforms => [:mri, :mingw] + gem "activerecord-jdbcmysql-adapter", :platforms => :jruby + when /postgresql/ + gem "pg", ">= 0.11.0", :platforms => [:mri, :mingw] + gem "activerecord-jdbcpostgresql-adapter", :platforms => :jruby + when /sqlite3/ + gem "sqlite3", :platforms => [:mri, :mingw] + gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby + when /sqlserver/ + gem "tiny_tds", "~> 0.5.1", :platforms => [:mri, :mingw] + gem "activerecord-sqlserver-adapter", :platforms => [:mri, :mingw] + else + warn("Unknown database adapter `#{adapter}` found in config/database.yml, use Gemfile.local to load your own database gems") + end + end + else + warn("No adapter found in config/database.yml, please configure it first") + end +else + warn("Please configure your config/database.yml first") +end + +local_gemfile = File.join(File.dirname(__FILE__), "Gemfile.local") +if File.exists?(local_gemfile) + puts "Loading Gemfile.local ..." if $DEBUG # `ruby -d` or `bundle -v` + instance_eval File.read(local_gemfile) +end + +# Load plugins' Gemfiles +Dir.glob File.expand_path("../plugins/*/Gemfile", __FILE__) do |file| + puts "Loading #{file} ..." if $DEBUG # `ruby -d` or `bundle -v` + instance_eval File.read(file) +end diff --git a/app/models/bid.rb b/app/models/bid.rb index 88014477b..3f21c451f 100644 --- a/app/models/bid.rb +++ b/app/models/bid.rb @@ -32,7 +32,11 @@ class Bid < ActiveRecord::Base has_many :join_in_contests, :dependent => :destroy has_many :praise_tread, as: :praise_tread_object, dependent: :destroy # has_many :fork_homework, :class_name => 'Bid', :conditions => "#{Bid.table_name}.parent_id = #{id}" - + + + after_create :expire_cache + after_update :expire_cache + before_destroy :expire_cache acts_as_attachable @@ -149,4 +153,8 @@ class Bid < ActiveRecord::Base end end end + + def expire_cache + ActionController::Base.new.expire_fragment('activities') + end end diff --git a/app/models/changeset.rb b/app/models/changeset.rb index e05a7d2da..5f3f2e03d 100644 --- a/app/models/changeset.rb +++ b/app/models/changeset.rb @@ -64,8 +64,9 @@ class Changeset < ActiveRecord::Base includes(:repository => :project).where(Project.allowed_to_condition(args.shift || User.current, :view_changesets, *args)) } - after_create :scan_for_issues,:refresh_changests#:be_user_score # user_score - after_update :be_user_score + after_create :scan_for_issues,:refresh_changests,:expire_cache#:be_user_score # user_score + after_update :be_user_score,:expire_cache + before_destroy :expire_cache after_destroy :down_user_score before_create :before_create_cs @@ -328,5 +329,9 @@ class Changeset < ActiveRecord::Base self.repository.fetch_changesets if Setting.autofetch_changesets? end end - + #added by lizanle + #设置活动过期 + def expire_cache + ActionController::Base.new.expire_fragment('activities') + end end diff --git a/app/models/contest_notification.rb b/app/models/contest_notification.rb index 1613f1378..cc23cffe0 100644 --- a/app/models/contest_notification.rb +++ b/app/models/contest_notification.rb @@ -1,4 +1,11 @@ class ContestNotification < ActiveRecord::Base attr_accessible :content, :title validates :title, length: {maximum: 30} + after_create :expire_cache + after_update :expire_cache + before_destroy :expire_cache + + def expire_cache + ActionController::Base.new.expire_fragment('forums') + end end diff --git a/app/models/document.rb b/app/models/document.rb index 7c2fa5a6d..29a761827 100644 --- a/app/models/document.rb +++ b/app/models/document.rb @@ -23,7 +23,9 @@ class Document < ActiveRecord::Base include UserScoreHelper after_save :be_user_score # user_score after_destroy :down_user_score - + after_create :expire_cache + after_update :expire_cache + before_destroy :expire_cache acts_as_attachable :delete_permission => :delete_documents acts_as_searchable :columns => ['title', "#{table_name}.description"], :include => :project @@ -76,4 +78,8 @@ class Document < ActiveRecord::Base update_document(self.user,1) update_document(self.user,2,self.project) end + + def expire_cache + ActionController::Base.new.expire_fragment('activities') + end end diff --git a/app/models/forum.rb b/app/models/forum.rb index 61ba528a0..2157e638d 100644 --- a/app/models/forum.rb +++ b/app/models/forum.rb @@ -2,7 +2,11 @@ class Forum < ActiveRecord::Base include Redmine::SafeAttributes has_many :topics, :class_name => 'Memo', :conditions => "#{Memo.table_name}.parent_id IS NULL", :order => "#{Memo.table_name}.created_at DESC", :dependent => :destroy has_many :memos, :dependent => :destroy, conditions: "parent_id IS NULL" - belongs_to :creator, :class_name => "User", :foreign_key => 'creator_id' + belongs_to :creator, :class_name => "User", :foreign_key => 'creator_id' + + after_create :expire_cache + after_update :expire_cache + before_destroy :expire_cache safe_attributes 'name', 'description', 'topic_count', @@ -40,5 +44,9 @@ class Forum < ActiveRecord::Base " memo_count = (SELECT COUNT(*) FROM #{Memo.table_name} WHERE forum_id=#{forum_id} AND parent_id IS NOT NULL)," + " last_memo_id = (SELECT MAX(id) FROM #{Memo.table_name} WHERE forum_id=#{forum_id})", ["id = ?", forum_id]) - end + end + + def expire_cache + ActionController::Base.new.expire_fragment('forums') + end end diff --git a/app/models/issue.rb b/app/models/issue.rb index 4dc685b3b..17ef7b577 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -80,6 +80,9 @@ class Issue < ActiveRecord::Base after_create :act_as_activity,:be_user_score_new_issue after_update :be_user_score after_destroy :down_user_score + after_create :expire_cache + after_update :expire_cache + before_destroy :expire_cache # after_create :be_user_score # end @@ -1552,5 +1555,8 @@ class Issue < ActiveRecord::Base end + def expire_cache + ActionController::Base.new.expire_fragment('activities') + end end diff --git a/app/models/journals_for_message.rb b/app/models/journals_for_message.rb index 4819cd253..720b0d914 100644 --- a/app/models/journals_for_message.rb +++ b/app/models/journals_for_message.rb @@ -54,7 +54,9 @@ class JournalsForMessage < ActiveRecord::Base has_many :acts, :class_name => 'Activity', :as => :act, :dependent => :destroy validates :notes, presence: true - after_create :act_as_activity #huang + after_create :act_as_activity ,:expire_cache#huang + after_update :expire_cache + before_destroy :expire_cache after_create :reset_counters! after_destroy :reset_counters! after_save :be_user_score @@ -162,4 +164,8 @@ class JournalsForMessage < ActiveRecord::Base end end end + + def expire_cache + ActionController::Base.new.expire_fragment('activities') + end end diff --git a/app/models/memo.rb b/app/models/memo.rb index cfc509923..491f4e4a1 100644 --- a/app/models/memo.rb +++ b/app/models/memo.rb @@ -2,8 +2,11 @@ class Memo < ActiveRecord::Base include Redmine::SafeAttributes include UserScoreHelper belongs_to :forum - belongs_to :author, :class_name => "User", :foreign_key => 'author_id' + belongs_to :author, :class_name => "User", :foreign_key => 'author_id' + after_create :expire_cache + after_update :expire_cache + before_destroy :expire_cache validates_presence_of :author_id, :forum_id, :subject,:content # 若是主题帖,则内容可以是空 #validates :content, presence: true, if: Proc.new{|o| !o.parent_id.nil? } @@ -164,5 +167,8 @@ class Memo < ActiveRecord::Base update_memo_number(User.current,1) update_replay_for_memo(User.current,1) end - + def expire_cache + ActionController::Base.new.expire_fragment('forums') + ActionController::Base.new.expire_fragment('activities') + end end diff --git a/app/models/message.rb b/app/models/message.rb index 8af3265cc..21f34add2 100644 --- a/app/models/message.rb +++ b/app/models/message.rb @@ -59,8 +59,9 @@ class Message < ActiveRecord::Base validates_length_of :subject, :maximum => 255 validate :cannot_reply_to_locked_topic, :on => :create - after_create :add_author_as_watcher, :reset_counters! - after_update :update_messages_board + after_create :add_author_as_watcher, :reset_counters!,:expire_cache + after_update :update_messages_board,:expire_cache + before_destroy :expire_cache after_destroy :reset_counters!,:down_user_score # fq @@ -195,4 +196,8 @@ class Message < ActiveRecord::Base end end end + + def expire_cache + ActionController::Base.new.expire_fragment('activities') + end end diff --git a/app/models/news.rb b/app/models/news.rb index 4d153e81f..6567c4028 100644 --- a/app/models/news.rb +++ b/app/models/news.rb @@ -47,6 +47,9 @@ class News < ActiveRecord::Base # fq after_create :act_as_activity # end + after_create :expire_cache + after_update :expire_cache + before_destroy :expire_cache scope :visible, lambda {|*args| includes(:project).where(Project.allowed_to_condition(args.shift || User.current, :view_news, *args)) @@ -91,4 +94,8 @@ class News < ActiveRecord::Base def act_as_activity self.acts << Activity.new(:user_id => self.author_id) end + + def expire_cache + ActionController::Base.new.expire_fragment('activities') + end end diff --git a/app/models/project.rb b/app/models/project.rb index 14763347f..aa24eb96d 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -127,8 +127,9 @@ class Project < ActiveRecord::Base #after_save :update_position_under_parent, :if => Proc.new {|project| project.name_changed?} after_save :update_inherited_members, :if => Proc.new {|project| project.inherit_members_changed?} # 创建project之后默认创建一个board,之后的board去掉了board的概念 - after_create :create_board_sync - before_destroy :delete_all_members + after_create :create_board_sync,:expire_cache + after_update :expire_cache + before_destroy :delete_all_members,:expire_cache def remove_references_before_destroy return if self.id.nil? Watcher.delete_all ['watchable_id = ?', id] @@ -1148,7 +1149,9 @@ class Project < ActiveRecord::Base logger.error "[Project Model] ===> Auto create board when Project saved, because #{@board.full_messages}" end end - - + + def expire_cache + ActionController::Base.new.expire_fragment('projects') + end end diff --git a/app/views/welcome/index.html.erb b/app/views/welcome/index.html.erb index 4dd58641b..11a7f44fa 100644 --- a/app/views/welcome/index.html.erb +++ b/app/views/welcome/index.html.erb @@ -70,7 +70,9 @@
    + <% cache("projects") do %> <% @projects.map do |project| %> + <% cache project do %>
  • <%= image_tag(get_project_avatar(project), :class => "avatar-4") %> @@ -98,8 +100,9 @@ :id => "tooltip-#{project.id}" %>
  • - + <% end %> <% end; reset_cycle %> + <% end %>
@@ -112,8 +115,10 @@
+ <% cache("activities") do %> <%activities = find_all_activities%> <% activities.each do |event| %> + <% cache event do %>
  • <%= image_tag url_to_avatar(event.event_author), :class => "avatar-3" %> @@ -127,7 +132,7 @@

    <%= l(:field_updated_on) %> - <%= time_tag_welcome event.event_datetime %>前 + <%= format_time event.event_datetime %>       @@ -136,7 +141,9 @@

  • + <% end %> <% end %> + <% end %>
    @@ -157,9 +164,10 @@
    + <% cache("forums") do %> <% topics = find_new_forum_topics(6) %> <% topics.includes(:forum, :last_reply, :author).each do |topic|%> - + <% cache topic do %>
  • <%= link_to '['+topic.forum.name + ']',forum_path(topic.forum),:class => 'memo_Bar_title' %> @@ -167,7 +175,9 @@
    - <%= "#{l(:label_updated_time, value: time_tag_welcome(topic_last_time topic))}".html_safe %> + <%#= "#{l(:field_updated_on, value: format_time(topic_last_time topic))}" %> + <%= l(:field_updated_on) %> + <%= format_time topic_last_time topic %> <%= l(:label_question_sponsor)%>: @@ -185,8 +195,9 @@
  • - - <% end %> + <%end %> + <% end %> + <% end %>
    diff --git a/config/environments/development.rb b/config/environments/development.rb index 9d3cbf244..869e9a9a6 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -10,8 +10,8 @@ RedmineApp::Application.configure do # Show full error reports and disable caching config.consider_all_requests_local = true - config.action_controller.perform_caching = false - + config.action_controller.perform_caching = true + config.cache_store = :file_store, "#{Rails.root }/public/cache/" # Don't care if the mailer can't send config.action_mailer.raise_delivery_errors = false diff --git a/lib/plugins/acts_as_event/lib/acts_as_event.rb b/lib/plugins/acts_as_event/lib/acts_as_event.rb index e323c2b3e..42673cde7 100644 --- a/lib/plugins/acts_as_event/lib/acts_as_event.rb +++ b/lib/plugins/acts_as_event/lib/acts_as_event.rb @@ -43,6 +43,7 @@ module Redmine base.extend ClassMethods end + %w(datetime title description author type).each do |attr| src = <<-END_SRC def event_#{attr} diff --git a/public/cache/1DB/8A2/http%3A%2F%2Flocalhost%3A3000%2Fthemes%2Fredpenny-master%2Fstylesheets%2Fapplication.css%3F1420357855%3D b/public/cache/1DB/8A2/http%3A%2F%2Flocalhost%3A3000%2Fthemes%2Fredpenny-master%2Fstylesheets%2Fapplication.css%3F1420357855%3D new file mode 100644 index 0000000000000000000000000000000000000000..5dc67c6c1f954ad7950b43f0c554f5085c2133b3 GIT binary patch literal 2125 zcmb_dTaTMo5RO*SCTW^Y(oM6is#XXoQWC9gF2>kiMGb~yjMsn{V`DoHh|9sS#y|{S zU-Db~)IZW=u#@!i6jhcmXXcxkZ-$vU_aDYhjB~Q!4h~jH5-+o6leZinHk%;ImfJ_o zXYZYOkt|`FLbr`haFYb+WCjtj*DaxyLD#f0?}DsS1VhsdRV@=$imelk=HvHwR=9%r z$)6AIKg3V|K+g}SA0B-AO~PM_oDK|bVoHh*v^K|s)8;8?OZfM^C{@TZd3tpZozD84 z-a(kQTAb^Z%!dn@R+i9BU=(dj3oFgwvXW-o5T-taSz57@Bn%uY3*xBkq-kOK{ALKW zi8;_UNf8Ut(>-OHVe1T22%c#`R&`)OjwxFZz6mB1ncH ziRw*%GL-Oh4WK9k-IRgeQH31!Py~8zTxf=xRKyzlS(Y>_l`wX!(2vusNfQL|4e9;< zuPg?x)?8vtztw67FrpQHaB(O0!RM+twlXH_U)9L)Qgs;j)(E2K|4 zy59ft!H%GT+SUzDI}mtlfYvf_<_JfZN$j<@vbX5HQKl=Xf^>-_OBD5{aCo+NXnwBp z`DcoGfh7DzuIE)n0lY4$%H9fpI)^YRSs`jnTh!DskoZQ~5m0h@yDTz`RGNTG%IK2fs<+dA61&5S%Kuq-E zb}Aqi>()NX&6rYl&SL7hVq-Zqs(Cad-zam^mpk2--EQ@4-635u-3)~}GhHZxDz>*; z80rco-60G^cC0xR_)Y)cX z85;ssX9w3)RFTcjHM$?ChC;M%Q%;N0jyfan9C5To6}fZf^Pm+KJk?o7O^gjW9V>PV z$vJLc#Ys&t+^tQI)?=#6$U>}5s7C4<!6jikxn({2yvk8}>Awzo5rK=9ZLY8XO9r_A0&14yS zK^R2ul2^2l9lIE9mcd~h-~Wn)$6dJJ;KgKr`|^INYLX}^T+eI|d%Z6n`Tt{I{*sT8 z)HY=_Ky3*K=0H-=eUx87ht+v;#3-r)OqtX9Lr%H=(_;z$p@%M_k{r8%7eKc##s{nD z5+kZu*NU+HRe=#~lOdW6gNgEC!9M5XD1%W}(zgjL%$^+ARdGB&B6={IWqu+2u1d00 zt$6=&TslI8UW|qFis%^=7sDh4PbeX^>gj>Tt6@q>3BjF91Pl$p8QV literal 0 HcmV?d00001 diff --git a/public/cache/20C/451/http%3A%2F%2Flocalhost%3A3000%2Fimages%2Flist-icon.png%3F b/public/cache/20C/451/http%3A%2F%2Flocalhost%3A3000%2Fimages%2Flist-icon.png%3F new file mode 100644 index 0000000000000000000000000000000000000000..69b6cab42e65ae7cc15e45c80c9517b8bce0379c GIT binary patch literal 2009 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 BE_(m~ literal 0 HcmV?d00001 diff --git a/public/cache/51F/CA1/http%3A%2F%2Flocalhost%3A3000%2Fstylesheets%2Fnyan.css%3F1420357855%3D b/public/cache/51F/CA1/http%3A%2F%2Flocalhost%3A3000%2Fstylesheets%2Fnyan.css%3F1420357855%3D new file mode 100644 index 0000000000000000000000000000000000000000..f5ad1a5994060d5cf7c59a1152af7cf8bdf1f6e8 GIT binary patch literal 2005 zcma)7`;Xd25Ux(q<z z@Dqr>Kb(Ge_~{P`e<^Z0Ft~{+DLT;F91l*}Q_z<1A9zu!kY)1p`a85b?{j(wVcKf3 z{J5e|49_$mt2!__LD2RV z{G6ofWdeOj2|qeJ>Ojw(FZz6mB1ncHiRx{CGL-NO4WL~Hx+w#_qY63dOayu!TzH0> zRP4oiS(dPsN*Fs<=*4Nq(gZ<#^8kPTi|2sXq`qz{oD7O=-xWX420$AD?JLLm=lp+1 z^i?fCg@ixa?^`%u9K!pWs;j)(E38jCy59dH`Vllx+q%JN2Lf*m&|3OVfN*q~#9nJF zdyD=z%X9^4M3+diL{V>wgy;K&=4Tx*K2yvkknk6|pH~$H@VcZb`zZWr0AW(HLR5@M z&K$w>cbSRS(fl?qp%JI$*L#x7+3GB7uM{c}M zF-6B}W%3#`RHIgXgKzj@)_pY$e4v$PR_%C0b(*z2y z3Wwswf1dCBiQJqiQ+9Kfnme-Z$$(<{P+4Oc&=fE_* zS-bk;CL0b0(#>S7CAKjX)pbj>`LqL)S5#{`+GnGc(4m#YrkEllLZFCna(BB{cHu&% zBuZJxj4FiT^bYKlyKXoY98%T+G0}(Hseo9lTl-yZ$CR>j7Sow4HkVVQn(v0}8zmq; zxzlag?N-m$9nuxk%}@xK=|T}yvAxy8P**7F9`Vpeq8r%+dGB_-m97)V95>E*6gp9m zui-kV33O{~Q%N|XHN;y>xP)t|^UcCCHUv^<2iH@i$Y$pn-H%g4AzF7Sr$uQ;os;*D zINBmb?wug;TT#JNooCd<*pSn)Vz-c;9S_ooY55`WiFMWEs!=(2w3FuV^7VRxz3^gF`#M{~Z~R({4Y7i_ZS9 z0sKj>ZkiMU5fyL|MePrSFArfwpn~g{ z{`2<)ZJWy_cNY_NWw%R>uUVU)l zWwL^43f(r6;5G@6WCjs&u&tn#LD#f0?bdd7fGbf1NfRVdy&FtN5`L`-DE3e{WkK(#e2%&h1wD5zEF(=S z&Z_xYmNYAsFm|lakJGFP2!i-`_E$qrlLoq}u(D7@I*}g=+E~!OF!6+h=Ho* z8A$k(!w~Y=K7od6TQ^wkNZ_3zv{r$$KsZn)u{YY<-l6}E zGN_>XfD%cTDC%ty@bVDQ{8Gc~FBJ3iCHzHh=Tt=zI9*begBSke0>Y$Zg{TQpDRTtN zal)XuhgTWgW)*b3H}5L%Za=-xZ>xwiLP?pdC@2N;lN|4ZFtjRknZVu{LFC4p6jOAp zRwi#TLp5sEw-}3h1{%=r1zCj#Oc~U$H@%K7_iwN;SU^mK&LVz`asDb^!U|}h?x08p zrAuQ&%d=L&(M!Ug=S(%BEoef~Pvw8UbSGY~QkYii^@@*zZsOHK!hiiHPg77hl|QyC z{>ywHBsZ7~y%5dT4VJo&|2KS}Rm2fWJTKq%-Y;>=&EC(8Q$LlEQ`MeSAkJQ$nJefn zg9w_4NQ&m=eT(%OURVTtXS|!p#zk}rsyIfLLiTDdVjZ3_Tf^dBuZJz zw91F!>|WR__uX*DJEW`e;cW;|lCX&p|vn^4N$S1MtMYem_=zf|R3embxSuILC>YRLV#PJSQ zu=UROcBrHMZnzqS!5@XW2s)r#0SicQzPrCRCS}`B}}93&P1_zFd*{is7BoZx0q=rtJn*|AbOv?27GqvVzgO?$8r4dJ5ruD-C_L}ll>ny?@Lva zL`h-$W_#4{|1a0y@@bITri|vGEeX6iloa$P +
    +
    + + 更新于 + 2015-01-06 16:29 + + + 楼主: + net + + + 最后回复: + lzl + + + 回复 + (1) + +
    + +
  • + +
    + + 更新于 + 2015-01-06 16:28 + + + 楼主: + xDong + + + 最后回复: + lzl + + + 回复 + (2) + +
    +
  • +
  • + +
    + + 更新于 + 2015-01-06 16:27 + + + 楼主: + jacknudt + + + 最后回复: + lzl + + + 回复 + (9) + +
    +
  • +
  • + +
    + + 更新于 + 2014-11-28 13:43 + + + 楼主: + jacknudt + + + 最后回复: + jacknudt + + + 回复 + (3) + +
    +
  • +
  • + +
    + + 更新于 + 2014-11-27 06:22 + + + 楼主: + gaoli + + + 最后回复: + jacknudt + + + 回复 + (2) + +
    +
  • +
  • + +
    + + 更新于 + 2014-11-25 18:48 + + + 楼主: + freedom + + + 最后回复: + jacknudt + + + 回复 + (1) + +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/5AA/681/http%3A%2F%2Flocalhost%3A3000%2Fimages%2Favatars%2FUser%2F0%3F1420357778%3D b/public/cache/5AA/681/http%3A%2F%2Flocalhost%3A3000%2Fimages%2Favatars%2FUser%2F0%3F1420357778%3D new file mode 100644 index 0000000000000000000000000000000000000000..c07b3d1fcdd7ba7bf97e75ee0e863d28381ffb6d GIT binary patch literal 2001 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 literal 0 HcmV?d00001 diff --git a/public/cache/636/EF0/views%2Fprojects b/public/cache/636/EF0/views%2Fprojects new file mode 100644 index 000000000..231045423 --- /dev/null +++ b/public/cache/636/EF0/views%2Fprojects @@ -0,0 +1,185 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420531897.9176939: @value"3I"3

  • +
    + 0?1420357778 +
    + + +
    + + SocialForge是TrustieForge的升级版,支持社交化协同开发与合作。 +SocialForge aims to provide a socialized an... + +
    +
    + 项目评分:28736 +
    +
  • +
  • +
    + 0?1420357778 +
    + +
    + Bench4Q + (7人) +
    +
    + + Bench4Q is a Cloud-Based software + +
    +
    + 项目评分:8158 +
    +
  • +
  • +
    + 0?1420357778 +
    + +
    + haflow + (5人) +
    +
    + + Hadoop has become the defacto standard of big data analysis, due to its scalability, fa... + +
    +
    + 项目评分:1535 +
    +
  • +
  • +
    + 0?1420357778 +
    + + +
    + + Btrplace is the flexible VM placement algorithm inside Entropy. It allows to compute th... + +
    +
    + 项目评分:1036 +
    +
  • +
  • +
    + 0?1420357778 +
    + + +
    + + This project is to build an platform for OSS Evaluating, Analying and Networking. This ... + +
    +
    + 项目评分:884 +
    +
  • +
  • +
    + 0?1420357778 +
    + + +
    + + To improve the performance of Service4All, we will employ the widely-used cache tools s... + +
    +
    + 项目评分:420 +
    +
  • +
  • +
    + 0?1420357778 +
    + +
    + WDMVC + (10人) +
    +
    + + 基于工作流的分布式MVC软件体系结构,支撑软件开发的“三线”工程(生产线、流水线和产品线)。 +详见项目Wiki。 + +
    +
    + 项目评分:359 +
    +
  • +
  • +
    + 0?1420357778 +
    + +
    + VMThunder + (1人) +
    +
    + + 数据中心中大规模快速部署虚拟机,达到秒级启动上千台虚拟机的目标 + +
    +
    + 项目评分:340 +
    +
  • +
  • +
    + 0?1420357778 +
    + + +
    + + forked 4rom webmagic + +
    +
    + 项目评分:284 +
    +
  • +
  • +
    + 0?1420357778 +
    + +
    + WSCRP + (5人) +
    +
    + + In order to meet the requirements of users, sorts of Web services coordination and reco... + +
    +
    + 项目评分:284 +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/655/921/http%3A%2F%2Flocalhost%3A3000%2Fstylesheets%2Fwelcome.css%3F1420357855%3D b/public/cache/655/921/http%3A%2F%2Flocalhost%3A3000%2Fstylesheets%2Fwelcome.css%3F1420357855%3D new file mode 100644 index 0000000000000000000000000000000000000000..53fc3675aeb31284a9c016b0823359bc7b5d613f GIT binary patch literal 2050 zcma)7Yj4_E5UrvrO}E>$-Sn}mRkfC-mC`7HAK1o3QEO~tOt4Li!9YJ)eq6x87#ExH z=+D?s`)~K+3vKtMT_J_snKLuz9%kk~JegN9!Oy~b&{-zQe34bFqU%pUwJOKiV)MBA z{DVKAB@2+IAgIF=SSKMoIblrfd<)=aAaLAl^qMSF1Vhthnk-Uff@bLIlMnZ9v;_Fk z?~fjy;77l~zaNi3KKlHNioaF_OSXl9qw1Dy)&)^Mt{%&E75`pT)Dl@FkFOrU(`j3< z8W2-A(D`jC%{CE8Cjew=X$2xk4ix<~MeY~3UD+Hs9m`a81(}}hXweK;VHjk1ZpxZr z$&MgN=FWnjk`z}Y;D=Q4gR^0DtlassEfy$(WC)Td-?j%`6+bg&Sfyh*nrt-;DMy_s zvXuuTPuEmYt?NmaCDl?Xn)_}vnWtHmCJ5r+?(qI^R6C-nwk<~&G#Mp)fWDr0WV0um z-#AXcl=w5EZJ7B*RQ&O-G;+S&hqq0`GDM?=tWO)3)&45|0n{<-mMxfj0vEPiTZH}; z;^-oYotsN<1OMlXbP38t7f7-|QSVT~(_KR6i z?Xce*x%RDMjE8k|HWkC#q^XXRyFiJu;q8DEUYg(DEXvj$;80w zZiW)%u&V89-1aGb>(7RxK;aidyPVg8_O(7GCt9Of^Xj#hXZd8Hr0cFUWrj0dGL-tp zj3P^?)O*Oo>M23&5#)W)m@F-eIOMqT`@P7Ir}-JIrmRHQHXfBk1KNbV%|u9qnlWC_ zTzgGGZMI-FgnF#Ef!+Kxv~{9(mkMT_HjFWO?<>6x)Z^ZtPQzM^cpBr38rW-c*w?)p zv_XJTaQAff1N-4EG#*ysZd;?-|Bpre+Avi`)rFQ*@3vZB!_NQrZu~hP z2es~Ka1iRMEIA!jhp$NfZ0y%0S|1Rj8@lXhf+gkxVdxFBo45c#q=!vR7ewxX>jy l?I^GDvRhp}k +
    + 0?1420357778 +
    +
    + + lzl + +  发表了缺陷缺陷 缓存测试1#1 (新增): 多发点 +

    + + 更新于 + 2015-01-06 16:11 + +       + + 回复(0) + +

    +
    + +:ET \ No newline at end of file diff --git a/public/cache/6CB/680/views%2Fissues%2F2211 b/public/cache/6CB/680/views%2Fissues%2F2211 new file mode 100644 index 000000000..28133a2c0 --- /dev/null +++ b/public/cache/6CB/680/views%2Fissues%2F2211 @@ -0,0 +1,22 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420531979.264571: @value"I"
  • +
    + 0?1420357778 +
    +
    + + lzl + +  发表了缺陷缺陷 缓存测试1#2 (新增): 哈哈哈 +

    + + 更新于 + 2015-01-06 16:12 + +       + + 回复(0) + +

    +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/6D1/6D0/views%2Fissues%2F2208 b/public/cache/6D1/6D0/views%2Fissues%2F2208 new file mode 100644 index 000000000..031a3fd44 --- /dev/null +++ b/public/cache/6D1/6D0/views%2Fissues%2F2208 @@ -0,0 +1,22 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.359701: @value"I"
  • +
    + 0?1420357778 +
    +
    + + lizanle + +  发表了缺陷缺陷 缓存测试#1 (新增): 多发点 +

    + + 更新于 + 2015-01-05 14:20 + +       + + 回复(0) + +

    +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/6D2/6E0/views%2Fissues%2F2209 b/public/cache/6D2/6E0/views%2Fissues%2F2209 new file mode 100644 index 000000000..59eb90bdf --- /dev/null +++ b/public/cache/6D2/6E0/views%2Fissues%2F2209 @@ -0,0 +1,22 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.3486998: @value"I"
  • +
    + 0?1420357778 +
    +
    + + lizanle + +  发表了缺陷缺陷 缓存测试#2 (新增): 发货 +

    + + 更新于 + 2015-01-05 14:28 + +       + + 回复(3) + +

    +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/6E2/DF1/http%3A%2F%2Flocalhost%3A3000%2Fimages%2Favatars%2FProject%2F0%3F1420357778%3D b/public/cache/6E2/DF1/http%3A%2F%2Flocalhost%3A3000%2Fimages%2Favatars%2FProject%2F0%3F1420357778%3D new file mode 100644 index 0000000000000000000000000000000000000000..b83e413aa031a3b6736d0ee3aa1f2bc08d74ae37 GIT binary patch literal 2003 zcma)7`;VGf6mBNXbh_P6AJcZXX|^FGn{=8{xm=OaNq38Yh$G-2irOCtkE=2wP{Hxh ze}1o^ZTFSkm;-`T0XNJ^bWbc@`yMCJZxH$71wT3thzRVg<;+3|u5%d(fb;i)bvnju=8 zAm}>_c?xK@NZ}ul$%C`0b&bsVqQe(x3NRF)$~T>1PbSZF5m)INmLeKWO~_Cul4xYX zxu>Vgd9B~3X&To`r66+cU>YT94N?^KubcS&Z(O^)E_Vz|pzS@eiP`)-X&?-xGLmiuHx>&M*!Z z0r5^>Ivf06Ey5Dk2^Ih-(DZqp@N}2Z`l{vGSBjYoGWjC&^O~xPydi7qE{c3ILntoT z0X~yh(hR}zyx7UV$Ls6>lvc=zFW#5lUw!^S6)z8&dU#tFCy8o~{j5Y=KM3p+Q>2J@ zrXPCIDj`&Zs1(5!VQOZjd`@t293T@p*M3@JAX|hL;@x%AP}&zn;Li{tA$Jy?6Z~`$ z%~1(f@j0OZi#N;=U3+XV{C$*6KFhf3Vnfu${A9iP=g%*bufN-tC91q8?9VIt^JMGC z7len#0q(2|BJtemU+`^Cm3nxWnObMtX@OTSw$p)nq#qaF(snYE}_oedEw^ zFoZhht;bx<)wRibZkuZgYqLeG5!Pe9^~~1ik*QMk+l14@q^V87oh$V>SdTk*HuLLY z&QqJD^w3;`(Li!E!(|Q^)LY6|7-n9&BBR z`GIQe%=G{@s#^!P@|rl8AO$lG+g)18_!n@mK^xlR%QB=Xn{gf2K@iz23xI=w<3Ttc zBM8~?6=7NNA{zUFAAX2`g+h8buy~Ag_r3S=7i>I?x83N?+xWkx?ki1~C0XU#R-@N$ ze~UZ+|AX#L)(~>TQgACYWKpoXvWhQ->=xM1yq^vjRZ~Sv;S7GyFY|wSB$LnEc9Is9 z$n(cO^73G^y9_S~s!X)(kl0Off?{jsY7JfzlCqzS&-f@zQJ5BtO^oueCn;K|r8uzt zFgKhXFl`i0(rIq|0e~tj=kG5Eg#$$J@g0@!%w(ZLF%=fD5LC*x4aO|vQsXKE*h|PD y$EC*}eo)9|@O&0<$LG07V~Km8s(eTKvIfgF8hj)Dcu?r3cDhXRkP|u|?tcLOoHaH8 literal 0 HcmV?d00001 diff --git a/public/cache/701/020/views%2Factivities b/public/cache/701/020/views%2Factivities new file mode 100644 index 000000000..3e6a324ff --- /dev/null +++ b/public/cache/701/020/views%2Factivities @@ -0,0 +1,127 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420532949.9541981: @value"!I"!
  • +
    + 0?1420357778 +
    +
    + + lzl + +  发表了缺陷缺陷 缓存测试1#2 (新增): 哈哈哈 +

    + + 更新于 + 2015-01-06 16:12 + +       + + 回复(0) + +

    +
    +
  • +
  • +
    + 0?1420357778 +
    +
    + + lzl + +  发表了缺陷缺陷 缓存测试1#1 (新增): 多发点 +

    + + 更新于 + 2015-01-06 16:11 + +       + + 回复(0) + +

    +
    +
  • +
  • +
    + 0?1420357778 +
    +
    + + lizanle + +  更新了问题说明缺陷 #2: 发货 +

    + + 更新于 + 2015-01-06 11:42 + +       + + + +

    +
    +
  • +
  • +
    + 0?1420357778 +
    +
    + + lizanle + +  更新了问题说明缺陷 #2: 发货 +

    + + 更新于 + 2015-01-06 11:17 + +       + + + +

    +
    +
  • +
  • +
    + 0?1420357778 +
    +
    + + lizanle + +  更新了问题说明缺陷 #2: 发货 +

    + + 更新于 + 2015-01-05 15:25 + +       + + + +

    +
    +
  • +
  • +
    + 0?1420357778 +
    +
    + + lizanle + +  发表了缺陷缺陷 缓存测试#2 (新增): 发货 +

    + + 更新于 + 2015-01-05 14:28 + +       + + 回复(3) + +

    +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/705/AF0/views%2Fprojects%2F2 b/public/cache/705/AF0/views%2Fprojects%2F2 new file mode 100644 index 000000000..90f86c1c2 --- /dev/null +++ b/public/cache/705/AF0/views%2Fprojects%2F2 @@ -0,0 +1,21 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530700.9076748: @value"~I"r
  • +
    + 0?1420357778 +
    + + +
    + + SocialForge是TrustieForge的升级版,支持社交化协同开发与合作。 +SocialForge aims to provide a socialized an... + +
    +
    + 项目评分:28736 +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/73B/E90/views%2Fprojects%2F17 b/public/cache/73B/E90/views%2Fprojects%2F17 new file mode 100644 index 000000000..50230b720 --- /dev/null +++ b/public/cache/73B/E90/views%2Fprojects%2F17 @@ -0,0 +1,19 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530700.956678: @value""I"
  • +
    + 0?1420357778 +
    + +
    + Bench4Q + (7人) +
    +
    + + Bench4Q is a Cloud-Based software + +
    +
    + 项目评分:8158 +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/73D/EC0/views%2Fprojects%2F28 b/public/cache/73D/EC0/views%2Fprojects%2F28 new file mode 100644 index 000000000..43fd553d6 --- /dev/null +++ b/public/cache/73D/EC0/views%2Fprojects%2F28 @@ -0,0 +1,19 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530700.988679: @value"DI"8
  • +
    + 0?1420357778 +
    + + +
    + + Btrplace is the flexible VM placement algorithm inside Entropy. It allows to compute th... + +
    +
    + 项目评分:1036 +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/73E/ED0/views%2Fprojects%2F29 b/public/cache/73E/ED0/views%2Fprojects%2F29 new file mode 100644 index 000000000..c1b2bf3fb --- /dev/null +++ b/public/cache/73E/ED0/views%2Fprojects%2F29 @@ -0,0 +1,21 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.036682: @value" I"
  • +
    + 0?1420357778 +
    + +
    + WDMVC + (10人) +
    +
    + + 基于工作流的分布式MVC软件体系结构,支撑软件开发的“三线”工程(生产线、流水线和产品线)。 +详见项目Wiki。 + +
    +
    + 项目评分:359 +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/766/4C0/views%2Fprojects%2F300 b/public/cache/766/4C0/views%2Fprojects%2F300 new file mode 100644 index 000000000..2b128443f --- /dev/null +++ b/public/cache/766/4C0/views%2Fprojects%2F300 @@ -0,0 +1,19 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.1366882: @value"I"
  • +
    + 0?1420357778 +
    + + +
    + + forked 4rom webmagic + +
    +
    + 项目评分:284 +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/769/520/views%2Fprojects%2F330 b/public/cache/769/520/views%2Fprojects%2F330 new file mode 100644 index 000000000..6f0b5a3bf --- /dev/null +++ b/public/cache/769/520/views%2Fprojects%2F330 @@ -0,0 +1,19 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.159689: @value"YI"M
  • +
    + 0?1420357778 +
    + +
    + WSCRP + (5人) +
    +
    + + In order to meet the requirements of users, sorts of Web services coordination and reco... + +
    +
    + 项目评分:284 +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/76B/500/views%2Fprojects%2F134 b/public/cache/76B/500/views%2Fprojects%2F134 new file mode 100644 index 000000000..9499b1df1 --- /dev/null +++ b/public/cache/76B/500/views%2Fprojects%2F134 @@ -0,0 +1,19 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.057683: @value"I"
  • +
    + 0?1420357778 +
    + +
    + VMThunder + (1人) +
    +
    + + 数据中心中大规模快速部署虚拟机,达到秒级启动上千台虚拟机的目标 + +
    +
    + 项目评分:340 +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/76C/530/views%2Fprojects%2F315 b/public/cache/76C/530/views%2Fprojects%2F315 new file mode 100644 index 000000000..05c521a66 --- /dev/null +++ b/public/cache/76C/530/views%2Fprojects%2F315 @@ -0,0 +1,19 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530700.970678: @value"QI"E
  • +
    + 0?1420357778 +
    + +
    + haflow + (5人) +
    +
    + + Hadoop has become the defacto standard of big data analysis, due to its scalability, fa... + +
    +
    + 项目评分:1535 +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/76E/5B0/views%2Fprojects%2F290 b/public/cache/76E/5B0/views%2Fprojects%2F290 new file mode 100644 index 000000000..1c565e3c4 --- /dev/null +++ b/public/cache/76E/5B0/views%2Fprojects%2F290 @@ -0,0 +1,19 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.020681: @value"I"
  • +
    + 0?1420357778 +
    + + +
    + + To improve the performance of Service4All, we will employ the widely-used cache tools s... + +
    +
    + 项目评分:420 +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/777/640/views%2Fprojects%2F299 b/public/cache/777/640/views%2Fprojects%2F299 new file mode 100644 index 000000000..2fcdf1bcf --- /dev/null +++ b/public/cache/777/640/views%2Fprojects%2F299 @@ -0,0 +1,19 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.00468: @value"%I"
  • +
    + 0?1420357778 +
    + + +
    + + This project is to build an platform for OSS Evaluating, Analying and Networking. This ... + +
    +
    + 项目评分:884 +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/77E/D81/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fapplication.js%3F1420357855%3D b/public/cache/77E/D81/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fapplication.js%3F1420357855%3D new file mode 100644 index 0000000000000000000000000000000000000000..ca5d797b7d468438dc9b632e9332ef8df31492b6 GIT binary patch literal 2026 zcmb7F>yO$-5RXpL<{Tu zLHenGc^4a!>qD(7Bw%NLGxM9-nc4d%VU^&V#9N`xGK#`QQmyiqGeOlV43fp>VfE>i z6V9Urieu!~@d@2V9zK~~K<#u3WF^Qotz`6qE;1Ag0Lv8f6jLgdtB7{DeSCQjpHADH-oTi; znw^Ql)LL1wv+$xME?80IdybWOVUVB38RFSZ7it5uqid2PW}+uMVt_4`SvC_q)u62E z(BuR`+eye%nknTe{GlcCplqleJykw$^Erm1S&F8LH|;@JBF{94qjYprhI&I4Qq+kE z_0%}ibTui9bu~$ns9Grap=0@zFixs~qNsmK4E)d9{^EA2)Qp{p|t{ppIJC4Nlt=cyGYk!gFRA z2l6!WR$JN|{J)Y11zahRqv;&OyvrP(?i`w5t9ka7Vp<4^e4grgRZ$?XORBQ7BA?6< zigK2Z+Y%QwMQ}V1+u4nryf3^z7^nzfz4CITf+<7a2*qhPF&>a zOTti%i{d+i!+nDcWM6wpfd!>JxFFtMH*~pmPWavo5h8MC;X8t#EW$Y|fC_F5hA!d! zSfXQ%tcAC?lE`N%H4WCG2D4Vm|MPu2;c^k9xKJ(^CfMmZT+Af$r#p$6P~lZ!-?QY8 zdGGXcW_ESbnR_=!x8D z*6ez%W$O;@it%k%n6bmTBB)}0qxrtBFwzS1(0igA*c82T80w{7Ygo>4yDAPY1jF6fpttTbO;#2{ZNOAw*PxeuhMm|( zZ!6;(*604#0hk|MiR`)Nqk3g)gJu>J`w~Qdree9n$SMC^&b_c*Fk+aZ~=aqm8vXNWm!U$_Z#vV9|j2ulAOMY zP-gb}&O>u2kxY4Zz_(B^P9~Y~JBFgb{tbK4&mACwH%4)?gOE8?sem$K04iB!b~FNR z5zvS#vY=da9JgF_kyQZ>!n6EPz&jxGOX^F!4XBGd36!g#TrC#ACGfbP>m*jP+&_pX In99!h4?jvm*Z=?k literal 0 HcmV?d00001 diff --git a/public/cache/7AC/380/views%2Fjournals%2F5295 b/public/cache/7AC/380/views%2Fjournals%2F5295 new file mode 100644 index 000000000..6c1f6f32d --- /dev/null +++ b/public/cache/7AC/380/views%2Fjournals%2F5295 @@ -0,0 +1,22 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.596714: @value"I"
  • +
    + 0?1420357778 +
    +
    + + sw + +  更新了issue-edit缺陷 #1639 (已解决): 课程--加入课程:“加入课程”按钮显示问题 +

    + + 更新于 + 2014-12-02 17:36 + +       + + + +

    +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/7AD/390/views%2Fjournals%2F5296 b/public/cache/7AD/390/views%2Fjournals%2F5296 new file mode 100644 index 000000000..fe3157fbe --- /dev/null +++ b/public/cache/7AD/390/views%2Fjournals%2F5296 @@ -0,0 +1,22 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.330699: @value"iI"]
  • +
    + 0?1420357778 +
    +
    + + lizanle + +  更新了问题说明缺陷 #2: 发货 +

    + + 更新于 + 2015-01-05 15:25 + +       + + + +

    +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/7AE/3A0/views%2Fjournals%2F5297 b/public/cache/7AE/3A0/views%2Fjournals%2F5297 new file mode 100644 index 000000000..20cf23406 --- /dev/null +++ b/public/cache/7AE/3A0/views%2Fjournals%2F5297 @@ -0,0 +1,22 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.240694: @value"iI"]
  • +
    + 0?1420357778 +
    +
    + + lizanle + +  更新了问题说明缺陷 #2: 发货 +

    + + 更新于 + 2015-01-06 11:17 + +       + + + +

    +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/7AF/3B0/views%2Fjournals%2F5298 b/public/cache/7AF/3B0/views%2Fjournals%2F5298 new file mode 100644 index 000000000..562aa84ca --- /dev/null +++ b/public/cache/7AF/3B0/views%2Fjournals%2F5298 @@ -0,0 +1,22 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.232693: @value"iI"]
  • +
    + 0?1420357778 +
    +
    + + lizanle + +  更新了问题说明缺陷 #2: 发货 +

    + + 更新于 + 2015-01-06 11:42 + +       + + + +

    +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/911/800/views%2Fmemos%2F427-20150106032234 b/public/cache/911/800/views%2Fmemos%2F427-20150106032234 new file mode 100644 index 000000000..a16d8d491 --- /dev/null +++ b/public/cache/911/800/views%2Fmemos%2F427-20150106032234 @@ -0,0 +1,25 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.628716: @value"I"
  • + +
    + + 更新于 + 2015-01-06 11:22 + + + 楼主: + jacknudt + + + 最后回复: + lizanle + + + 回复 + (8) + +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/918/A60/views%2Fmemos%2F427-20150106082740 b/public/cache/918/A60/views%2Fmemos%2F427-20150106082740 new file mode 100644 index 000000000..f389b06fb --- /dev/null +++ b/public/cache/918/A60/views%2Fmemos%2F427-20150106082740 @@ -0,0 +1,25 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420532863.155922: @value"I"
  • + +
    + + 更新于 + 2015-01-06 16:27 + + + 楼主: + jacknudt + + + 最后回复: + lzl + + + 回复 + (9) + +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/919/DB0/views%2Fmemos%2F582-20141129071403 b/public/cache/919/DB0/views%2Fmemos%2F582-20141129071403 new file mode 100644 index 000000000..26cb4e5e4 --- /dev/null +++ b/public/cache/919/DB0/views%2Fmemos%2F582-20141129071403 @@ -0,0 +1,25 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.640717: @value"I"
  • + +
    + + 更新于 + 2014-11-29 15:14 + + + 楼主: + xDong + + + 最后回复: + jacknudt + + + 回复 + (1) + +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/91A/D00/views%2Fmemos%2F574-20141125104842 b/public/cache/91A/D00/views%2Fmemos%2F574-20141125104842 new file mode 100644 index 000000000..e101b51fd --- /dev/null +++ b/public/cache/91A/D00/views%2Fmemos%2F574-20141125104842 @@ -0,0 +1,25 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.720721: @value"I"
  • + +
    + + 更新于 + 2014-11-25 18:48 + + + 楼主: + freedom + + + 最后回复: + jacknudt + + + 回复 + (1) + +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/91A/E50/views%2Fmemos%2F565-20141128054331 b/public/cache/91A/E50/views%2Fmemos%2F565-20141128054331 new file mode 100644 index 000000000..2bcd02c79 --- /dev/null +++ b/public/cache/91A/E50/views%2Fmemos%2F565-20141128054331 @@ -0,0 +1,25 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.649717: @value"I"
  • + +
    + + 更新于 + 2014-11-28 13:43 + + + 楼主: + jacknudt + + + 最后回复: + jacknudt + + + 回复 + (3) + +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/91B/EF0/views%2Fmemos%2F576-20141126222236 b/public/cache/91B/EF0/views%2Fmemos%2F576-20141126222236 new file mode 100644 index 000000000..9615a9e21 --- /dev/null +++ b/public/cache/91B/EF0/views%2Fmemos%2F576-20141126222236 @@ -0,0 +1,25 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.710721: @value"I"
  • + +
    + + 更新于 + 2014-11-27 06:22 + + + 楼主: + gaoli + + + 最后回复: + jacknudt + + + 回复 + (2) + +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/91C/170/views%2Fmemos%2F579-20141127101435 b/public/cache/91C/170/views%2Fmemos%2F579-20141127101435 new file mode 100644 index 000000000..931c245b2 --- /dev/null +++ b/public/cache/91C/170/views%2Fmemos%2F579-20141127101435 @@ -0,0 +1,23 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.70172: @value"I" 
  • + +
    + + 更新于 + 2014-11-27 18:14 + + + 楼主: + net + + + + + 回复 + (0) + +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/91D/D30/views%2Fmemos%2F582-20150106082842 b/public/cache/91D/D30/views%2Fmemos%2F582-20150106082842 new file mode 100644 index 000000000..6532134a1 --- /dev/null +++ b/public/cache/91D/D30/views%2Fmemos%2F582-20150106082842 @@ -0,0 +1,25 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420532924.8643541: @value"I"
  • + +
    + + 更新于 + 2015-01-06 16:28 + + + 楼主: + xDong + + + 最后回复: + lzl + + + 回复 + (2) + +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/925/320/views%2Fmemos%2F579-20150106082907 b/public/cache/925/320/views%2Fmemos%2F579-20150106082907 new file mode 100644 index 000000000..c21c69db0 --- /dev/null +++ b/public/cache/925/320/views%2Fmemos%2F579-20150106082907 @@ -0,0 +1,25 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420532950.004201: @value"I"
  • + +
    + + 更新于 + 2015-01-06 16:29 + + + 楼主: + net + + + 最后回复: + lzl + + + 回复 + (1) + +
    +
  • +:ET \ No newline at end of file diff --git a/public/cache/9B3/1B0/cae6965b71862532cc646d5995119a5821980260 b/public/cache/9B3/1B0/cae6965b71862532cc646d5995119a5821980260 new file mode 100644 index 0000000000000000000000000000000000000000..41e21d0e5f6262729bd1b98cd0aafedb568057b6 GIT binary patch literal 6735 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 literal 0 HcmV?d00001 diff --git a/public/cache/9E6/E80/0906d39339d5f71e61207417e8c95f43c783442e b/public/cache/9E6/E80/0906d39339d5f71e61207417e8c95f43c783442e new file mode 100644 index 0000000000000000000000000000000000000000..e9b89fb59a817ffa929b5b728f2ab9f1c9cea3d1 GIT binary patch literal 3017 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 p)Ccth6m>OH0tul1I{y+7sor(Ye literal 0 HcmV?d00001 diff --git a/public/cache/A91/6A1/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fjquery.colorbox-min.js%3F1420357855%3D b/public/cache/A91/6A1/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fjquery.colorbox-min.js%3F1420357855%3D new file mode 100644 index 0000000000000000000000000000000000000000..168798e848cf86f7f723752762b188b7e42c77af GIT binary patch literal 2059 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 literal 0 HcmV?d00001 diff --git a/public/cache/AA5/BD0/e8d35b3dc5255332a9a7f5c7d92c79635729fb41 b/public/cache/AA5/BD0/e8d35b3dc5255332a9a7f5c7d92c79635729fb41 new file mode 100644 index 000000000..6b24ea5e4 --- /dev/null +++ b/public/cache/AA5/BD0/e8d35b3dc5255332a9a7f5c7d92c79635729fb41 @@ -0,0 +1,25 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420532735.173789: @value"["$(document).ready(function(){ + $(".rateable").jRating({ + //default options displayed below -> + + rateMax: 5, //Maximal rate + length : 5, //Number of stars + //decimalLength : 0, //Number of decimals in the rate + //type : 'big', //Big or small + //step : true, //If set to true, filling of the stars is done star by star (step by step). + //isDisabled: false, //Set true to display static rating + //showRateInfo:false, //Rate info panel, set true to display + //rateInfosX : 45, //In pixel - Absolute left position of the information box during mousemove. + //rateInfosY : 5, //In pixel - Absolute top position of the information box during mousemove. + path : '/rateable/ratings', + onSuccess : function(element, rate){ + //something like -> + //alert('本次打分成功!'); + //$('Thanks for rating!').insertAfter(element) + }, + onError : function(element, rate) { + $('You have already rated!').insertAfter(element) + } + }); + +}); diff --git a/public/cache/ABB/FD1/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fjquery.leanModal.min.js%3F1420357778%3D b/public/cache/ABB/FD1/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fjquery.leanModal.min.js%3F1420357778%3D new file mode 100644 index 0000000000000000000000000000000000000000..8cb8c8bd223d40104b182d3c054a45992406ea5b GIT binary patch literal 2062 zcmbVNZI7B*6mBNXbSB+S+nsK^n`SqJq)De4l@}3p(rgi~h$G-2irNo^m#d-(4B$B0 zAG4qKf9@5uoqhSRyCDJYInO!gIp^MU?&FiNj&V-v-ND`}io!Up*LlmC!FnA8X}meD zzxd>Y%P59P0^KHB!TZQVE7J>zoi2t}3SHAmC$GseMKCnYP~{>~W!NfRfBNap@>dW) z`u)k{6a45m^!|MO`N@}GB>c6=>A>JdrljaVYjQj|t{;P@gn!42Qi&{*$5)Tg>a5G@ zEre;R`TC+Xx9+UOiM=RIO7q(lj5kFeT7ew8mS0?YL2;hs(3dxTppDF)u1SiRi=OW& z(hSS8)m-pG1G1_ElM@7OC&AB1iY*f8Atn5vY^gmxQ@-l*1&SaUf+Wf}-BDk{&ozLe z^mJ1OdP@~D)QJf6%sAKdH7SoJ&C)cgmr8!#f0B8>sXJ5np8PQd>EGY>;-OSeZsl<6`MyWUuM)a&;%OD&s6cBH{J9;y+HeUUZ4MaN?tmyTlULnf(Rd;S{lt63^;&zMU0#<#Ic_y8TELtB0EL zs(LNuh@&@0W(-}_Gtfjt5-$usHnv*()DPlMYhow)pbL(`J@G+cT^)D?7Y#6@6bwQQ%vp=A&`YX zn%}IIt-q8hiBgs_qYA!1o`bD2Z~J4xA!Qv9BfY;F3y8(Kv5Rsuq?E0*98X-a7LSc` z77fYol?6GITkVG3Y;=ms`H-np&WO4o^l zk85W*@SR|ht>Jo65$MLorXqhtYlycNaS_*0r}sdx$sJ10_!kOp#dhfl zMU^dwrY4p!5m_12Bmq>PN?5E+I z14dC5V9K1%?^$R1FHa@>`;L{Q1$1|K6A!w%G2UARml#pT+E#$=#yv)`^>VFFS20oE z&&-#67^E;r3;HI4x!GF_jS$bVQq)EdGRl?b2Yd$x({z>#Pf3ERR;$%C?+Z%`I1Kx;m*%Xxgf=goT>>R6s)^_l4^#G#-e`1O8P+ YzFsbW<{9 literal 0 HcmV?d00001 diff --git a/public/cache/AC2/540/4cea7ff935690a5e00f53017e2452eee8a0e6254 b/public/cache/AC2/540/4cea7ff935690a5e00f53017e2452eee8a0e6254 new file mode 100644 index 000000000..16ec306e0 --- /dev/null +++ b/public/cache/AC2/540/4cea7ff935690a5e00f53017e2452eee8a0e6254 @@ -0,0 +1,232 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420532735.166788: @value"["/************************************************************************ +************************************************************************* +@Name : jRating - jQuery Plugin +@Revison : 3.0 +@Date : 28/01/2013 +@Author: ALPIXEL - (www.myjqueryplugins.com - www.alpixel.fr) +@License : Open Source - MIT License : http://www.opensource.org/licenses/mit-license.php + +************************************************************************** +*************************************************************************/ +(function($) { + $.fn.jRating = function(op) { + var defaults = { + /** String vars **/ + bigStarsPath : '/images/seems_rateable/stars.png', // path of the icon stars.png + smallStarsPath : '/images/seems_rateable/small.png', // path of the icon small.png + path : '/rateable/ratings', + type : 'big', // can be set to 'small' or 'big' + + /** Boolean vars **/ + step: true, // if true, mouseover binded star by star, + isDisabled:false, + showRateInfo: false, + canRateAgain : false, + + /** Integer vars **/ + length:5, // number of star to display + decimalLength : 0, // number of decimals.. Max 3, but you can complete the function 'getNote' + rateMax : 20, // maximal rate - integer from 0 to 9999 (or more) + rateInfosX : -45, // relative position in X axis of the info box when mouseover + rateInfosY : 5, // relative position in Y axis of the info box when mouseover + nbRates : 1, + + /** Functions **/ + onSuccess : null, + onError : null + }; + + if(this.length>0) + return this.each(function() { + /*vars*/ + var opts = $.extend(defaults, op), + newWidth = 0, + starWidth = 0, + starHeight = 0, + bgPath = '', + hasRated = false, + globalWidth = 0, + nbOfRates = opts.nbRates; + + if($(this).hasClass('jDisabled') || opts.isDisabled) + var jDisabled = true; + else + var jDisabled = false; + + getStarWidth(); + $(this).height(starHeight); + + + + var average = parseFloat($(this).attr('data-average')), // get the average of all rates + idBox = parseInt($(this).attr('data-id')), // get the id of the box + kls = $(this).attr('data-kls'), + dimension = $(this).attr('data-dimension'), + widthRatingContainer = starWidth*opts.length, // Width of the Container + widthColor = average/opts.rateMax*widthRatingContainer, // Width of the color Container + quotient = + $('
    ', + { + 'class' : 'jRatingColor', + css:{ + width:widthColor + } + }).appendTo($(this)), + + average = + $('
    ', + { + 'class' : 'jRatingAverage', + css:{ + width:0, + top:- starHeight + } + }).appendTo($(this)), + + jstar = + $('
    ', + { + 'class' : 'jStar', + css:{ + width:widthRatingContainer, + height:starHeight, + top:- (starHeight*2), + background: 'url('+bgPath+') repeat-x' + } + }).appendTo($(this)); + + $(this).css({width: widthRatingContainer,overflow:'hidden',zIndex:1,position:'relative'}); + + if(!jDisabled) + $(this).unbind().bind({ + mouseenter : function(e){ + var realOffsetLeft = findRealLeft(this); + var relativeX = e.pageX - realOffsetLeft; + if (opts.showRateInfo) + var tooltip = + $('

    ',{ + 'class' : 'jRatingInfos', + html : getNote(relativeX)+' / '+opts.rateMax+'', + css : { + top: (e.pageY + opts.rateInfosY), + left: (e.pageX + opts.rateInfosX) + } + }).appendTo('body').show(); + }, + mouseover : function(e){ + $(this).css('cursor','pointer'); + }, + mouseout : function(){ + $(this).css('cursor','default'); + if(hasRated) average.width(globalWidth); + else average.width(0); + }, + mousemove : function(e){ + var realOffsetLeft = findRealLeft(this); + var relativeX = e.pageX - realOffsetLeft; + if(opts.step) newWidth = Math.floor(relativeX/starWidth)*starWidth + starWidth; + else newWidth = relativeX; + average.width(newWidth); + if (opts.showRateInfo) + $("p.jRatingInfos") + .css({ + left: (e.pageX + opts.rateInfosX) + }) + .html(getNote(newWidth) +' / '+opts.rateMax+''); + }, + mouseleave : function(){ + $("p.jRatingInfos").remove(); + }, + click : function(e){ + var flag = confirm("确定评分?"); + if(!flag) + { + e.cancel(); + } + + + var element = this; + + /*set vars*/ + hasRated = true; + globalWidth = newWidth; + nbOfRates--; + + if(!opts.canRateAgain || parseInt(nbOfRates) <= 0) $(this).unbind().css('cursor','default').addClass('jDisabled'); + + if (opts.showRateInfo) $("p.jRatingInfos").fadeOut('fast',function(){$(this).remove();}); + e.preventDefault(); + var rate = getNote(newWidth); + average.width(newWidth); + + + $.post(defaults.path, + { + idBox : idBox, + rate : rate, + kls : kls, + dimension : dimension + /** action : 'rating' **/ + }, + function(data) { + if(!data.error) + { + /** Here you can display an alert box, + or use the jNotify Plugin :) http://www.myqjqueryplugins.com/jNotify + exemple : */ + if(opts.onSuccess) opts.onSuccess( element, rate ); + } + else + { + + /** Here you can display an alert box, + or use the jNotify Plugin :) http://www.myqjqueryplugins.com/jNotify + exemple : */ + if(opts.onError) opts.onError( element, rate ); + } + }, + 'json' + ); + } + }); + + function getNote(relativeX) { + var noteBrut = parseFloat((relativeX*100/widthRatingContainer)*opts.rateMax/100); + switch(opts.decimalLength) { + case 1 : + var note = Math.round(noteBrut*10)/10; + break; + case 2 : + var note = Math.round(noteBrut*100)/100; + break; + case 3 : + var note = Math.round(noteBrut*1000)/1000; + break; + default : + var note = Math.round(noteBrut*1)/1; + } + return note; + }; + + function getStarWidth(){ + switch(opts.type) { + case 'small' : + starWidth = 12; // width of the picture small.png + starHeight = 10; // height of the picture small.png + bgPath = opts.smallStarsPath; + break; + default : + starWidth = 23; // width of the picture stars.png + starHeight = 20; // height of the picture stars.png + bgPath = opts.bigStarsPath; + } + }; + + function findRealLeft(obj) { + if( !obj ) return 0; + return obj.offsetLeft + findRealLeft( obj.offsetParent ); + }; + }); + + } +})(jQuery); diff --git a/public/cache/AC2/A80/60567173164aa1f75c0f9517835ebc2fd5eb0ec5 b/public/cache/AC2/A80/60567173164aa1f75c0f9517835ebc2fd5eb0ec5 new file mode 100644 index 0000000000000000000000000000000000000000..3b564199a5be58b7aa880c8fa6951bb2dabdafaf GIT binary patch literal 12051 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 literal 0 HcmV?d00001 diff --git a/public/cache/AC9/C70/bbefbac7540e09e1955cb47321965813266c7a8e b/public/cache/AC9/C70/bbefbac7540e09e1955cb47321965813266c7a8e new file mode 100644 index 000000000..866f94664 --- /dev/null +++ b/public/cache/AC9/C70/bbefbac7540e09e1955cb47321965813266c7a8e @@ -0,0 +1,69 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420532735.222791: @value"6[".(function () { + window.onload = function(){ + function fixedBar(id, options){ + var ele = document.getElementById(id); + if(!ele) return; + if(/msie (\d+\.\d+)/i.test(navigator.userAgent)){ + var pageHeight=window.innerHeight; + var d=document; + if(typeof pageHeight!="number"){ + if(document.compatMode=="CSS1Compat"){ + pageHeight=document.documentElement.clientHeight; + }else{ + pageHeight=document.body.clientHeight; + } + } + var ieScrollTop=window.pageYOffset || d.documentElement.scrollTop || d.body.scrollTop; + if(options.addclass) ele.className = options.addclass; + ele.style.position= 'absolute'; + + if(options.show){ + ele.style.top = 0 + "px"; + ele.style.display= 'block'; + } + + window.attachEvent('onscroll' , function (){ + + var ieScrollTop=window.pageYOffset || d.documentElement.scrollTop || d.body.scrollTop; + + ele.style.top = 0 + "px"; + if(options.autoHidden){ + if(ieScrollTop==0){ + ele.style.display="none"; + }else{ + ele.style.display="block"; + } + } + }); + }else{ + var ele = document.getElementById(id); + if(typeof pageHeight!="number"){ + if(document.compatMode=="CSS1Compat"){ + pageHeight=document.documentElement.clientHeight; + }else{ + pageHeight=document.body.clientHeight; + } + } + if(options.show) ele.style.display= 'block'; + ele.style.top = 0 +'px'; + window.addEventListener('scroll',function (){ + if(options.autoHidden){ + if(baidu.page.getScrollTop()==0){ + ele.style.display="none"; + }else{ + ele.style.display="block"; + } + } + },false); + } + } + + fixedBar('backTopBtn' , {autoHidden: true, top : 186}); + fixedBar('identifier-pannel' , {autoHidden: false , top : 956 , show : true}); + //修改微信扫码样式布局后添加微信扫码跟随滚动处理 + $(window).scroll(function(){ + var vtop=$(document).scrollTop(); + $("#identifier-pannel").css('top',vtop+"px"); + }) + } +})(); \ No newline at end of file diff --git a/public/cache/AFF/300/57a7c6d86d2ad09012bac99d46b38f9f33a970a8 b/public/cache/AFF/300/57a7c6d86d2ad09012bac99d46b38f9f33a970a8 new file mode 100644 index 000000000..1e70f7d5d --- /dev/null +++ b/public/cache/AFF/300/57a7c6d86d2ad09012bac99d46b38f9f33a970a8 @@ -0,0 +1,6 @@ +o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420532735.051782: @value" +["// leanModal v1.1 by Ray Stone - http://finelysliced.com.au +// Dual licensed under the MIT and GPL + +(function($){$.fn.extend({leanModal:function(options){var defaults={top:100,overlay:0.5,closeButton:null};var overlay=$("

    ");$("body").append(overlay);options=$.extend(defaults,options);return this.each(function(){var o=options;$(this).click(function(e){var modal_id=$(this).attr("href");$("#lean_overlay").click(function(){close_modal(modal_id)});$(o.closeButton).click(function(){close_modal(modal_id)});var modal_height=$(modal_id).outerHeight();var modal_width=$(modal_id).outerWidth(); +$("#lean_overlay").css({"display":"block",opacity:0});$("#lean_overlay").fadeTo(200,o.overlay);$(modal_id).css({"display":"block","position":"fixed","opacity":0,"z-index":100,"left":50+"%","margin-left":-(modal_width/2)+"px","top":o.top+"px"});$(modal_id).fadeTo(200,1);e.preventDefault()})});function close_modal(modal_id){$("#lean_overlay").fadeOut(200);$(modal_id).css({"display":"none"})}}})})(jQuery); diff --git a/public/cache/B2D/650/88eae75bf7b81a196ba38d86bf54e7162ab274c1 b/public/cache/B2D/650/88eae75bf7b81a196ba38d86bf54e7162ab274c1 new file mode 100644 index 0000000000000000000000000000000000000000..fdbb7004038f559959e84d0f38032c11968fc944 GIT binary patch literal 338091 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

    !7?l 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%0Dm;u9@@% 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 z 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 literal 0 HcmV?d00001 diff --git a/public/cache/B3B/DA0/e9938e23e7a85ff3d431e045384ccd84dea93ce8 b/public/cache/B3B/DA0/e9938e23e7a85ff3d431e045384ccd84dea93ce8 new file mode 100644 index 0000000000000000000000000000000000000000..675388492f7e15b1a508ed815c0a3fba569b9d2c GIT binary patch literal 20153 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 Gt^WfBy%mZ8 literal 0 HcmV?d00001 diff --git a/public/cache/B4F/E50/afc8c0ba867511cd69e8b5d43542aad5a2e716c6 b/public/cache/B4F/E50/afc8c0ba867511cd69e8b5d43542aad5a2e716c6 new file mode 100644 index 0000000000000000000000000000000000000000..800a1f0bdd7e365cbda72e44d64a72c4d084c747 GIT binary patch literal 37249 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 literal 0 HcmV?d00001 diff --git a/public/cache/B6B/0E0/6d2710e981a7dd596afcc77e54ff43b9d7f75cb2 b/public/cache/B6B/0E0/6d2710e981a7dd596afcc77e54ff43b9d7f75cb2 new file mode 100644 index 0000000000000000000000000000000000000000..d6cb37900acc45b0ed519cbb8d9e3a4db9ee5b97 GIT binary patch literal 41860 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 literal 0 HcmV?d00001 diff --git a/public/cache/B76/7F1/http%3A%2F%2Flocalhost%3A3000%2Fstylesheets%2Fjquery%2Fjquery-ui-1.9.2.css%3F1420357855%3D b/public/cache/B76/7F1/http%3A%2F%2Flocalhost%3A3000%2Fstylesheets%2Fjquery%2Fjquery-ui-1.9.2.css%3F1420357855%3D new file mode 100644 index 0000000000000000000000000000000000000000..b5d794c2977ea30c3b3a86a0dd4df785a9b41127 GIT binary patch literal 2075 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 literal 0 HcmV?d00001 diff --git a/public/cache/B7E/7C0/0e09a16c714ce54739affa1a4e945aa699b4baae b/public/cache/B7E/7C0/0e09a16c714ce54739affa1a4e945aa699b4baae new file mode 100644 index 0000000000000000000000000000000000000000..de9fe3690bf71b69748345ab65678bce70e86f40 GIT binary patch literal 2979 zcmV;U3taRB2yZ$dL1T1jc4bp_aBy#ObUHdiVPj}zIyyyebaHtKIuJl(Z*6dLWpi_7 zWJWp=KxKGvX>w(AUukYIIuJl(a%Ew3Wn^DrbY>MXG%_$XGcq?bH7+Z zY;|QK0y_%?2wMgs0y7JVP)pPO=&|zP*7-ZbZ>KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAP zk55R%$-RIA6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z z9H|HZjR63eC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoX znL;eg03bL507D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVp zu|i=NDG+7}l4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04 zJRKYg3k&TfVxhe-O!X{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^j zz)rRYwaaY4e(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJ zT&R>6OvVTR07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;F ziC7vY#};GdST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_ z2v-S%gfYS=B9o|3v?Y2H`NVi)In z3rTB8+ej^>Q=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJ zloCocWk2NvrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A z$W$=bG8>s^m=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn> zP~)iy)E2ANsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB` zSVGovRs-uSYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^#)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#i zbhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}Hnw zgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|> z>;~;Q_F?uV_HFjh9n2gO9o9Q^JA86v({ zH5aB!kjoO6c9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6 zJ?}yE@b_5aam?eLr<8@mESk|3$_SkmS{wQ>%qC18 z))9_|&j{ZTes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv= zMZThqqEWH8xJo>d=ABlR_Bh=;eM9Tw| zIh34~oTE|=X_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX z+Sb3_cYE^=gB=w+-tUy`ytONMS8KgRef4hA?t0jufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp z&EJ`SxAh3?NO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6 zw@a-(u02P7aQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI z-5j_jy7l;W_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBk zl>gI*;nGLUN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd z`HRoLu6e2Ra__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLL zKIeS?{4e)}^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e z7jKeZ#YO-C0ANW(K~#9!V*LOAKLd$?iGg%Ljvf{WA&C8Ju?6((X}~O$pq%5XQrpS=jmtgm%kQa@8P7@r|Mw2SQKR)hP&}3RbjZ7 z*X70E!vFbkQp^{nsw$N{!J9f?XuO^1d_Z-jiffge#P#%lhxhLdzWMszcVFKRzP~^G z?z?Zo|N8MX&X!7iu^as5ugCu>zW9&c_T7!IzWm#6krm~*IPaYfgKvW2px5u+8w~IF z2jBMZeT(`JzbsXG(aZEKt*Kd@C%t)*#98l5=SgwaTV%_b&e77F_}sPkb3FOjdr=gn zg0Qr%7vc8y+1Xj}0p;18$^$H9dtygM*Gx}TUa7F#x>%s7Se6qN6yuDd z=DmD#(<=j=M89w4zAX5ysxLD1sH#JCUPpy5Yp?XL8`*{DU)tU}(0Q)Pr;7A6T6qg; zlpy6AuhYBqc&2(Iie8OBs0lU0s5-j5#z3jAf(dOuUd@}zB4wUODl~QSEV=%KRX%>(UcRT*v(hHnuOelrK$J%qSnNbdK_{snQU3qn3)= z2EUonRs~R@-(45p?ZRfNzO@)_CeJIy0^QQ;Kvz%PR%;)Mp2S(^7RB1}Lw((DQR>x3 zJ1RN~GL_HjRO-n4v{n26P)_RLfgY(XjgC&Iy_gKC+1(d$od#vG%oESs{>OGus|uR* zN1iwr(6but1!p>`Q_l}!6aMyaFbIeK-9=nh>KUx8mcxPH+4^cldL2Lmo>-(sT?qf` zs{8&%&D6Q@&4{Wa0*mfU&~||_>O6j1W&)O^gG8Oev0m$QmA#4K9S?>h6_jd`#S`VN z8AYy$Iap4o8e{vRYW0$kKEsaTN(0T9TcmUhlpdYxkDTnYnF0m?1!#%>NPPr*6 ztGZacE{jDxqiN-yFE4^=FIx+7{vPVy-lNVU1CAZ=r~xhe8uT4Y&qCQzV8-VwY*1Y)aJelXQpt;#m4 z7#o672IMeoZ}Ocl^C(wmz0$mQLW$YXQehv+JmAltV19^~>fAdC;C-?`M8zkp=?E3H zDpO3&jFt9>P&`eED_W&25hX5bEGMW-J)2>Y+Ly6%Z%+}QGcIhqOsNZnzhXyEy^Wvz zOZ*fNjj+Va!Aef-N;E>HoMBKlNnU|3H}3eCccMR{je(rFstGCoWjt3f5bPdeq<49$ zD?Qekt}jB7>LgLQkcqBfZzvdN#pI)q*z^fE5YWnglzWwuV!wzJmF&WL5R-)z>`dWc zr)Q!jJz>AgDK;xKf_HkI!R%PR9GiKV?m|f0U0|#rUf@7UynSCjjt-k}y!Ekt90$b` zyKZ8*w=wYh)cCa>}5QVAEti) zW&eXb3DU@$-e^~$-INFP!^-bJ>_3+K>(!0!*xR3jMNwff?A}XH;dHUnEb>>_3QYVJ zTmCZ~jyh4@AmCcoWxRMoae?BQqSkw-u#kOS!BA8Q_qko@363PNJc$h<*C=x3l}ftU zjzgQGAVrWBX{#NtVb+Zo5I|_=u~wq>Qy0aq{p(Ys9B1!*7Cgy{m|C)P*&6uI)fH@Y zvMj5j3|%G69d5Im6%{;eBo>8+bCe=P%Z}v>e$Esbc$F4sP@)wup`MSHbzMNyqenqn z&oehN*I``i6NiO2_QOZ*oA@Eor`r#(LlD?GOczky#s%%fxJdBp{fa;;_c)Ts3-)Em zBwTT+lklAs93(`DfNv0OVAqV;w=o?3z9pXR@rueKQ=v#;_{B`fIv#VV3`KuP3$xa7 zYJGFA-2Q?Bc~+q znXNd~HT3PvH?HBbEGcUF@-^o1&mYFD^ImqT!4Iy7T47db#f!$Ye8D`wq$=|giUf_7hl$AS{PgjcnoG3H$qXH&Aw}L)eF{bdw z98IBf^0c9u7e*wl$HlWS9#=(%qhbd+5Kv$EJ^n4u z*BnVZ5N(dX96@NOhXCC-UHBa;eHA_DAov$!$=V};1BC+Nj}#;T35@FiK`JlZ;D7_W?fl9mQJK;GPH{l4YTZ6=K5;aK2l`y0rIN^@IP9jZv(R5fT zH^_$ojU9m9sw>|XFtQ<3vm*Y8{PwnVTWnz0NiZkrXIRFZ){(lSwS`&OTW;0Nv8`&x zrS2?;?Ck6ZdK=*Z)0v+&r#1RHlxAdhAYrGj(N!}i5}K0G6hc!Hn)*^XrKF{rVjq5q zDpeoqxdOiJ`s#tj4A)3c0hO#Kb)M;*U_G0_1g8n*-}qrz090VlUF0*BD(gpT3PuOy zkAqt23e+lH!g-{TA5X}9`A21y>bVi8B_|T2)Du17yPYD)f*nmAY%%XZpWX>l-;t*x zAR0W$x178@o5wQ{B;H$&p(Yumqt>L=fr$zVj#`Q~Ao!Q5XAY7*uEF9uKuOPMwwU~m zfuz9skgNzu;IsHr>B4AyS{jVblV1aLK z;uE=t?b{9ITayN%4g1=fCe5f7Xd1;k!B8IAr#r6@Y1|n7X0*G?38ylaepg+yC(-h_ z-~l-hrm7;$mP`8VQrq@T5);FILS0O>p+2eWV~VI#>Z6l+=o~mG zGFekhS^PZhH=PFl_Ps5!pk&QNe`m5;Q7nkkIXeEdHGB_!H!=;}j~ZZ)1s6F-?yhP& zr>UC^FV$&<2SryiPqTzZi>5M#L%_kw1kkRWL<)q?=H`ol3>g%pwF@EwF#Tp**!G-h z!!M2Fz|{5V^Zs(4md;;r;t&A{SY@($rgo4O!J2_&+ot>^E0c}^lmfoP<%TW2+1eU5kox)bupeA z8;y6mJ!P6V6!*Vz{cMTp*uHc;A_S6x|AUJ{>OwCrXAHiVICp8EY(+!5(1^r{xD=6k z8Tdj^4vo+=m^NxWW|&M*1Z?RS>`}@OAo-vVl#mHn7FRN)GU+2pnL>BZtb%ENDrXU@ zfy8J-woYv;myS@A=H=nCE>>y}cpL70gMDZk9e_2gLs8LBuPMcrIgtmn9Ml(!ZZ+Eg zGo|77zXETjr&o)7cJ*Q5sjJzQn)z4b`Ql1XimNjvui;+$f;f^ z+>?+5kwZcMLkNM_5TK1Red#Gho^_tyG}f6)dUeqwYY1SH_GGf{%mi+=GLW5_ z3$_JEr_hUGVQ6thz7L`1X%{z4nW~k2Lk5>G*?@|CmuAS#V3T1JC>oNS`F>PgOM)Hi z8rXl4^}(}0&qydl3Xmf)}ja1Dc>m>H1@Sv}>8@FUR43181l zR5xZj&Ge83U2+cWpjX;qq>-;&e*To8#4GKhHggcTVBPuyIT4^*N3e$ACo3qXZ4JLc z<6xOH7(#F+YODf2Ane9vxdNavj~ZZ#sNF8v9&d?a3P?%GszF#(0*0y09l+*;pJs`6 z93#`d7^$C~ARK?)44qCP+Z~A#3&ojsdw!VB>hx&B?fd`>E=$T>Fb6|B{@dB!9%DM~ zi7mHuI@6FP$(W4hz=f(4ge@4V%f;MXQ)eY5AUiXG%?1%v@URtDSA`-ro^XtV#GRI# zn-*$dF$npF<}^KSilx{KAPt3ubl394!hTSDp1)Hczk82SYi|M07J2bBM?plTtx>l? zRN~$Mj!8M7iqzE=T~2nh(ZcuXW_6!`K$e^Nve+x&9@p=&@I>Kv zw(tdq zjhwH;(U3>)5Fx?PrW+}nDv%QV&2q`I5b>-mH|OJua}*NI7-=t%@mIvXV} z$rfRbt0=TE&D)seh)|+Gy*jFGByJ z3`)#*NThoFU0v-P?Q?{rB4Rt}f3SVTAkK+GBy#fX+Swz%T4_9i)`ve5;}*$lCgOtS z5Nk-J;hb1Q;x^N3#CP2E)2W)sS@i!};Lg6qiJ0#CTYWf|xq-(~jyW;(vPHOneBm%j z*KnW}&T{$Q->SJul%Zv_na#HbINA9Q$8I&0ffCX=&VIh*lrLJy2bOU4!iTpLo4)=F zhos%NmAe+YYFT%=xw+Xn#|?sR895wZ^mz$TDd`$trvW;;?>^WeSLm^o6yg_L@wr7T zy&NWK_0nP`h?UP)5&+Jk2v*xGVi>i#D~|C+kcV`-1it`NraMcdu2!PWW+@cCSrOM% zIBM4uP3kKoh%Wj-$9!ZYnlw0Whkt%-M{w*|+#f#pG!lG;$-AkuWQ(E1!bn|k={2K@BU@364OBfz3YN5_OH-va}i&wg?QH3phF zJ_aJBQyA=MQrjK)S>+Wn#QhZGT@=9SxGt0=>55je`% zbhqre6#Ve0C==KgzRaR88uOr27=h#m1C6g}4v828E>!vCqHTJsDiU>xk477aQvw6_pBIQ|eOd)9l5$&gIQ zxoMV9mRWXy?=^{S8m#i~g$pNeY<$vV)1TF=2h0z2r`X<($GG?i$61_zG@+lfu9nkc z6QHTPPpS;bkBy)RB#0*bT%gByYpBH}W^zdPY&dw~et)(Lh&A^yBPF)(^!I?hVFzKS zWJV=)kdq^HW6{PRO(J;1t6I+aQ$!|>n_LtjmEkM~tkj)#MKEL4l>sQR z@e>;VL<#8~b2(V7L?}zQ__9qSOagK0)M(dWnOVw*2f(AiXTYPNStWEW5h cXwO*{{f3o#=HqXf;1ewRT3VVyM<_c^{TI{@~eQ0e{FJ@Ma6lawlCiUDfvwm@07EQPW}#}Xmfh741J06P+8%HQ&jgtO#+%D<4`@41}I`@U6O zvz#R<#oIf((^cp4oaa3E^PK1W^}n$=FWw)or%$V|+}_+Qmh1EL$L08{IzRt#zFxk# zcm6kjX1ut*Syro6HTej?RnKpx_-#0y@AJE5Rj#Yauv}mK7yZM*{?WnU_-~Y{j`q%%)&;QML{@Q<1T&=HX#mmLhYI!kRJnOzVUyYZG+3exh z-+pVfn7k-n78i^8x_ePxPiHUA-+lEL-}&M9{^--+{iRR;{2#x&SNz>-IVtDmUa>0Y ztL~~=PA?v6ht>3J)p^lBxOx7t7%ygv<$34uls^xP>vDNHou3!`4~v^}GMUaVyyydjqK`iWC4gM)>lgb(P-hI(RP%LF zheQ`#bdHXW*p5Khsx3H}aTc1EKSTRpgcbz9CaiO>i4$G6KRmvggNP1ni5;bzY8Ei`nhEddN?oPFK^>bT(bTIG4Z9^y5)EesZ~7+|DQG zoeTL#TI(kF55Iul0K(gE^~%X`JzdW#nZl9xk^J+p-~_U@&#LL=6%a65%qD49+Xd;o zuAZ;E)A578LE+)s?y{UrZ&$J@+!+6ZY43rb%Jun@Fb62si<@o)_g+L0J|&M7or@Fxu)hOz zbc_wf@6H>C1Q5T27pkr|>i2Z9_ncNR(|KV%m3ku?=m3KH$@FQ@x4V1s62tlcN^GZ? zi^$T&6#OuOWpKdn>#*$ij(~Xff>c>g$K|YB&Zd{(`0MFpBD8T&KDfp%b<4@ew<~Pc zPT#e_T-@|X9kQjF1bFAmQ;4$F;$mI=kLAx+({~7H8zJe3Ca?@;z8$vX_pqAg+$-X% z9W#dqZM&qHX&uU!fe~wSw?f?t&zkV~{s{qy{M`uTw(T<@AKb6zlcG&9Jh(rvo)xR< zq#Bh=$`6u~{o1{SDriBD!xm`^u(b#&Ww*d@E+(e)3mLgPy)G{++3{>dBSsU}wgC+u zqbMRNIO~+R>xHnikLBXhhD$eC(ca4eDW=z#z4B?fE|&u?I?i}rEH6i292_3)75<<1 zIJM1mUK}d>w1}GOXmT+YIgrkezLV+dW>&s{7@RG}Pm+b4+Ja3^_^*yU-*HC&b0oYLVAL_)=yU#T!;zY5oYz~)Cy>&_B|n$(*X3wdIS#~}RO5{}sL5VeF+#E& zAgYF7@Ks0Epc)WW2K}b-i?ym$x??p{IHBR9?>Z$I-z`&pHp5H+%qg^hc|a=diTdl( zh$0?*;U~FHvR?zI1k2N{|J^u}vJ+r2hc2%xSEpw}=oi zxl9teL+FHcd=&e0=Ih&4_hPzSt-FCKUJu)1{19B{4az#TM8ZdA;_}n5o#FtQodjG2 zZQXlT%@A>_R3(vKoqWznP6Y?p)#yOe?xHJBdNfF?*=%~Vny#=1_cnj^bzj@0H zoY{0GM#}~xqsFEZiP>nZ0189#v6%=6gcYI}x-k70w{Vv)rq3&hf&eW*j6!mapddY? zxD5AY+(vjUI50E_fq2*9HFgrAJ2G*SNH6zYO{?h$VSt>X&Eqz4<2?~GW7rI{IQ^<@ zw`TsKDDbWu8L3V@+}}rU;bwz-RfUPYyW^#8)E@y?aixo!=@^Qac1N<5%GCkB&((Db0OH&6mlHsu@(`LGoQfUdI}tz0(OHwJz6@EL;j=k} zw~C9c(S}-5lj-GDjsL)M!J=u4-H22`fU#N%e^*bJ)eE;Efr2;8jc&(rR{X2t2%!Ytdhm76{FQ zyM-YY%Si8wC6kSkXly_MgDlybXZ3np6(Sa2-tH^NQJK4M1TBv0ef&CCr)~nG%Ba! zxiD5a3?gJTUMv#@dfo@Mxg^zJ6#5glrH$C3(b+Q6n|WPMboee9A`&+gEJh!4GspM z4;*Id-3`j%aIiNx1StKpHw{XU2pLT$y8v;#*FT{%ad7bF@iDr^0p7g(|3f*fOcHz% z=-gDYP^fI?mB9e}F*sx#@aRZ3#RSg)E?4AgI~Oa?-JETcsVf*?8sV+Gan4L;u(_IV z8^nb>K{m@o^)`rxo>cx%e)4V7>Yg~czzY5qmNjEwsLtw;A@zdeduRnm5Y-Iv+@}?n zENa*^DIM^8_m~5KFZ@)&4;9S%D0`s()sQklMorattJ|;YDG_>cMh{HMC$#_;l%Knq z!`b3eq9V1(q2oEVbX+jg^ulqkh~RXnDbI-{)Z;r}liG+7tF2)6bcvJhi^XECr&qR^ za$Hs;(F4h1!eoHl_W)3cryuMP$ssTs%k;ZNi(G7*+E8k6!=**`cgBEXTyhVC8u3Uz zJ~L_(G?@D$^WDyRv<8M7&L_-&W0US`{bE*i*Dr3W^Z8;f)M7x&0U0LAT?fr3*y6)x z)C_1qu{~OolA$6bs>vU^c?QZI+~udL!d+P0da;gMw2&xSs~B?C?y& zsVze~WgKJ{mJ1GzSXq7pWm62O`5u<^Z?OLf5edpD#SPad6@So%_^}-vUVuzmT}kJH znuPS75`%WJzJghc+^I@V4~<8#1Ug6lhd^a=)#6<#FQ7@&6zxp*CudcRvvA)vg=aWf zjBlCPK|DtS)J!n{s44xO;lz_3B0!JsyHTsmVFSL2&?kt)8TY6>MV8e42iPd=OAaEp z`m@7W$GaqzrMp2%{+cn{jex5tTV3P)Iw*qAh+DvI$VvUr9+5G8)=VE#aw1LhC>6O^ z61^p5IMwBW1h%wj^H6j*n>yPMPDH=E_vlQZJR<~XT|d*d+$Ht^i3=Zvj zi6o|}aH|lc^Zr*$*r?@RtF4q$ZtL{MjV&0jPrn*pQ4<1NZ)|oC4cY9~>B-6dgu*Rh z1z-K+JS6xU#Fg2ifx3`6Ip&WXF0{BWnO{;~ajUQ9vB%Px|i z7MDo8xQci|YLJ-AM!%HtPU~X1+MXsh3tBV;>}%yH>7FntDVg~%M^aMCw!?H+C6Owl zWsMRRF-(}{90Q5cTIoq>SB~tIdW+6SAMN8GNdsx$U(&36bLSSk; zXOc6Sz?Wwu6`iw^KcKP}TE9R(_pOAaUW2V_3O2<}K6hvTY&003lE9rz#fdOqSm6O> zEf4}>go+}@8wx!aO3<$l+vk^~70!WS_=_#1pbu9_rr*U`sQ208IB?miu_X8cfe6MV zJBkQ<-E(ZG1C9cBG(ST6sl|Gth>`7kr9Sj-bYVKC)zMZf2#8fP#)ck}5;?dz_8}bm z`a@CFycU>&TNAc22P@%U2Q(TbZaTFt^EG`alTt$_h7?~an0P=+YnN?qGWj7w1DTdy z!V#F>gCh^KU()LyFof~F;r9%|*0aNh_#lckPd3iwgL#KRYFL~snudO3Wie0P%k6_S z%|?PTOeHZjZvvZTMWtB)Mcw0*&l;T|STZ zS-xOn@k2Lg&v^3y7hH-Te&;WK@V)PR@~vNd^#}j*)px%4>bw8q)o*;`(|`Tj_=_a@ zBvh45HIP_SvPAP2T9(+bLfqd7OOQayu6&TpX=rsd+b{V;vdH&OlYMj@lCnxE_A>Qf zoskD}aFMhWdau%Y z{TzImO2|Li)B_Lonk~osOmX3Ir3t^<6odswjT%D8fz|~Ixn^LSWIH?~?ci(e6|B5# zUg`m<<(SUR%PsCcwfx32tI_GWuSS8>swc?=&JUflFqM6iDz5W1`2pZQ7DMQ%*=^Y*Nl-gdcO#v)P8kPJ?=EN~|rH8NSjmlX7D}Y4`FnqW*bzW{%~T?t$slx$%dh8>P8g0XX-Nnth!Z!dkccGruy7Z^^BestJt9U&g{KgB=BP8piQWJrOK2ScTw+$TCmW^XD5gR34!zJz z*V85ZQ^FrUv^jOzkrNN%q`b);CoFqcZum5quINmvYILzruEW136t>*FHi(3cdBsvx zt$8XY|Mv@eOUkq*uDo6Hnlg@i#X@k_t|q5v15@e1iP?v#3&x}f`g-CKdCb2p*dH1- z(io+y$LlO;fR(a?!;zj2LcSOr?k%tGjA_Xcc)eF~i@FcKce11X-mxB-x3`~7eYG1- z(Fw9i*toGcjZNwEE|w7QPXn>LasUP1C;#wYzWV$B&cx@Zzw(Vw|Jk>df?xgeFTMKC zpZ&l8{u|%_(_j4LAO6M<|LD&@`K>>8aboSYC3aHd1-=)}0HvSOYdhQScTfof{Pzy2 zQ#Y)0baqmmiIRA5zs}5&mkEWl)VXAefc><(L{x}a+He2G5B}i00RQ`c`iHN+@!ePd z{GVerIN|>O_bB4^kh>^8`J>-_^)LR{Pk;Zws zV$(4@`ldV)W*ENo1gsKU;6ah-}>P{ z_!DeNWDf~&5Pv_S zAmLAb-;_FB;m?qXQ4EYhT$cqe?M<(MsxVC+LA-T-DRoM+D^Hd|vVl^Bnga_ zCocIcTM$$^1n{r@R$%q-|LL!N`cMDSr@!?d5L*;6Sk92_g=M|DRS{=$fsMI{uB2Xa z+eJu21i$)~?}G46`hN0zzw+s~e_N%Mh{P6xh=_70DSmSB#;I2s`tx0e0lk4@eiSms zkoY%-Xa~mZsSI@0R##4*_-A^IN2Y$6id#BaXIomI$s_%rVWxin`1tHhq?C+G2*v7+#NA0@HuNQ!oRxp8P{QD#sz=SHNnxJx1>0rdkpZSh}DuUS&BoYSPlT={G$&&COjwWo6! zVpD5~_zM0h{*K(fE#wyJ!@0%7fLhq=X3*v}U4|O3yShlnK4Ge!Dp3 zPeO<=Ex0`e&2cF<7wZFtTPH-9O&#{RV5~wz+${;|KO}DY1LRtTN+6*>DyjXkx2_)o0GkbfTd2EMkcu9Cabw4Ibi2k)Onex z>zo{&ef0PvmvnOM+U(d{RWsaZt|og$ZOHIV+t?y3j5b*_00RT2azY9hGPq-lla}1$ zxb|e_G;csh6s4`Au`wsMr$`tn-ox7e0tyL%l9Ml&)eW-ySiY;Pe+|54wLZnq^=*i^ zoWdur@MwS$t;vc?zm~Mh0h;noRK3288=_WOrZE(cZFd=m?KX|UN}xBp3?dCTje_E| z)h>ffP>yfJ>s(K&7n{afFJWTrwlG{we^RYC4K!V?ZsA0)k*T@b2|68aSWTuI$K+*c zD3oWrEY^m*TxS14Rtp~I%JZf3WrGrY@C+H%u4OvBuPhpwvG&88v17LbfXn6NmSWRU|F zB-&w2>zC26iQQDpy1M>Q{xLb|NqvQxB~*!iMurF)BvF)2L0cDJ(=tD(!5m}}J>*0& z;A}0`sQ0ymbSF&bt_)|OAh9n{ra9B=L5Y~JmP}!A9bAB8L@d~AD2C4n4DqD^gL}z1Wmizva6!uOa zNG!tQSRzvd(lAtS?CzL1WCG*QeJEK>Mwz`i>PJgi*uppeWi(gB0FjNQ@sPHyuUL20 z+<3zvC{gf-sq~&MTn8H&9oY(@45%b@jAJPv@f#9({E1C5}yD3*I zrn-ZsO$KOeR(Fi`_i!CixWe~Ti)RbIqg5oe!XE}fgu{zK)C^?;{5aIrK~HWB7BAf# z7V^s4-1M}30u+G+u6)v<+s@eskIs$@YxaYv_RvI zTRj-=j2gOh%Jmu#UBGc$4-0d0QKcy+S|-f$1>qLDs9B4qKc!7XxOsX;UVZ8z^q0Ia z@q+J5U~&dgIc&~}65+_AhiMx|U zOj+PGuX(D28+0wBGw2_efdJ?w&M+ZquW#UBRFf_Y?iH+Th<#<64jCS6wovX@S;jX? zIyvQ)Vi}b7mIg>>G3{F&@&_iV=`M%soJ>LdRl&ASt<#X>NYzDglFYM45Gx~JgVU^d zr$DU|uTf>I_l?(IP#_Fp^!kX@y|n|A0>l~hikeYk4L17r@We$>-L&2lby=7ZR9nHM zhZj}GPezO9v8P;eh`^KD7({_G+T2+*ZlFG?#o1^aw76RreOkmV(d7(o)AJigW4Ojy z-EBxZY#1sRs{BTiPFNYJVVC!diM9Zt6i3zoq@rruN61W;ou|gU3NF zGn{N{f3|6c(@j14bWK{OINR7^;B&}ch&fhc4fmQ-28D8vcM62JmTI7J3KTYDMN1)7 z9Sa{KNK#!cmM`$>qzBgmFUa6stMwvpwOTI`FUmh7hvuJXd_$B$#&ZB@iMkjnn(hK9 z9i%A)6nz2u3DasMK&EaX+5eJ{b^%SP54h0dVyj^yd}x1K@Xms zoTQI*$u&gxQ5oO&Kax3;iaV8d>CA?{J0^y@DqgmCi{u0CqY}r6f$}jLe|5{_N0&H) zBbij?jZeEp9a6EAbP=Jmp-YrI zNe7WS8#<(dC+Q+$XG51n@+3V(?riFjiyn9jOTJRqVzT*hrE-!sWHh8M0aB6Vt&r|C ztF)M&n;XnsH^J3tHJmSoa6XV)z~S`~J0{rI+w(vZEmG-W21=65Bn+7Y-CI_40T*)- zYhii_k1IJXO$T(rTN?qVKJ7Cn?PS#y8)5ad6HHv`xVXeB@y~6&5^N;>HRKg~lk?@? zde8ia?BGzJc-p}AYU&RWwfA!bx8QURiJGKBmc}REu)F2g&_?pCv$?izx)5@(lR?)*d8YA`7rPE@R)d|BCZP(v>PfC^2EoIA zSTrH^$MTQFpL3T=Vv7o?wIYb7PjX=;+tkPv6!MOrhNST=xK1WYtiG30d`1gf*b8U4 z$(DiETV0h)-5rB)%hn(k+}M~e6p5}&!GHxX3M=_c56K&!0s@%vpvX49P8Xec5W**n zk^;AZi~0va>)Kbn3I|OTvMO)-r}YNg`5+0y3e@uZvbw}!c15f;{bB*7~aA;EYjWktzDQz0cQy}dy?g@|%NL2Db=AI%AU=rt;ccGY&dd!K8rV$v7zh^Z)`?iS(~d_Bfwif*;#C#IWddZI z+_x~VFE)t;`-#6o+%}`&z%oa}p+!uwpq1AZePaP%$zzLH(dcXh4 zZk~j3K{`5uY2yM@B+Xls0tv|wZAIS;KCM5^i(UJ(Z5+V21V??#DFXVEEa!dz*AX@? zX(8t%b=fGV8ciYJ+Mi0gwZEVocXWkJMvHQZSHqtr$zu@xU;~bkKy}c=$h6He4yY3ap5=W4BWgFI2%egz zwup7J0{v~BL32J|a{|enG3WG-@naTl>L;0`ap_d^G&wx0ZQKPr+k6Jd?F8-4;l15! zPJvT)t7*29;s|Q*NcN+PWBvjPjO~~=PQ}!CJ|T2QKwXYNc??Ru?5ad=?@*E3pL|?B z;YZY5V~LWI=xWp~p$v`^HW!b*i*n4 zkwG<#sU&sDhb;b>8xumw8)wJyseD%(6y96L0vgqf3bif{{J3J$NRqIFQDA^Sy(?V* zmkI?L@0%%sGRBWT`rz~f;yJd2=6F)gafp#=bhqg)klNVRe9+#!yl8Kp%c1~JSzhR- zLuvAzjF2{SPJ4yF*PI5iZAGR>Q^u{};|u&qC;KGSF5tDaxNEU&XG_rE@-$4IQy{H= z;TGYIRL^8@zR{s3KxvkA1pK_9hfwgnP*A!(8(OrzJP}IKYM9QWcJiA*Lzj&PizEi? zZ02L8@r~g3<}2oVrCGg78WQ&(xHPfYrC`?y(_KGG9sf)M%wmH?Ghdxj(ntcJuhD5^|pdkZ|vJAGTK{AB%x($dQaJukW~UYz6^`lxN8f%Nrvtt6}hS zXjgl(yR;U1=op5583G`rw6h6iAzlwb*0JaES%+P=MBSZ$(NGDI`0xn@Z%0xlFh^{P z#m~MMbZY|uKTVtQ_FIsWc5hj!0>6gxw1#9UH{h7ktuZ0htPfFi9^;=!k3^*gzixA_ zHfGT(#^rg-qtm_O6n{_=@VzvOO@$n73o)4))6$QXm(H2iY@fKvh-W%Pje5yv4wBL` zgK#>AL=qZF?D}2(-T22jFCffH1(B!WB#rvIsL>*DtSy= z7^WV-3B28|!}f};56I|Tkt!g80!${KtYkRnajH%pKZyoMd}vw+-3Vh5g$byobNzbN-=&j_<#Sr%>fRRDBc` zdkM8{!wR5AuF{8x6!Mo%11I0t2DTwvMWe|;E ztiHRc022H+u9dV}!EJlG> zocI!bDDDlfj;R`WQu^W@U(yS?56 zIcZ!ySXL+uh<0m1j&Kd}1|UCb;hD(^e>gNQF9X8KczJt00ud($ish0RTS*XJL-7)* zxM8B5U5(z-i?s|8*QBw-99bQn4?#!v5FmKhey)792?WCj7F3Vmv6-;XtI^ase(O(g1K7KM4X1jF%t!ZdNuPEjd2_=uGxEE)) z%>@N!mS|p&(_^p;%|7(~M~*rw1yJ@HQcWHRAT?RQ&$4yl{O|d?iyI$Lc|#Fb$vtAz zK)HnSdbM+Y75%JEl8xGI3+-WTk#--jhz29J4ziS!mSF02~4&H;Vmi-<7%u z9JvmfFlS7RYa8TCZZEjw<;NW&AQG$XwJs1N+eGSdnO^XF0Yq9G5WcEv62Xa6x8GN2 zxgTwk&}Zl{u@b=sR5GG!F^<#A5jEc=Zm~?9S87!{!i@h7TYxd$8YC+$N}tfbup8%1)uRF|59ov7s$4WZ>4E zTx!wg`ex9T5@B&Ao%ZG9vRVziYfei&vOfVy}3K>P_M3 zb;B`r{eDfJ079mzpFB2h+<>NPdvP}`OZ$gv+EBky^Riae+mJgL^ml3%glO33ZtwS6t(5VgE_sU>tM zCVW7|zeN>yX)|JHY$>t>G&LS;6q*Mn zCl)SPb=F9m-C!tUZzR7k`K~?bvj!b<2@4cW!heJE2&;};Lu;*xy>;m6hIH*Nv8D_+ zv0kJp;Vt-?WDNkB;<@38WNR@KdcmvX=TaD{IdZcN29MQ~italt%baM=PjYzE92it1 zV<(L;vL8I@fs>zXb?iK)1)-Xb%xfg6l(O5s*=mtGBq@3Iw!Bdw4ALOF-RN40E}cE| z*J`8UG#weJHDPP}o%5BqWDQoQ{iZ9mVR+>GpjT^RU6!ch11GXwa4}iCL!P)t?KWDH zN2#P>T`eH6WB*zyPoKZ5C91HNgiTwMtrd)+lvA-{H#s=we(yLATTA+*50a{*yT%A@ zvk@e*^X`R&+)kg_bA#^gYAv%_C9QY|{CTQ&);U~M+F=06XUGe(Vi(gy!aMgcHqM~% zcLH_*!kcFOE#qW|?pfli<3G6~b@vvqahx3PW6sot6Sm!h+ySOdgsqx+xj(Rtn%yHtoc*dYugtv|$HE?`s?_v`PL!jQ!XpnV(SyS`+}M4!_lC+qnB7ET`9`U zyP)pjnvW%i0UJhGU+oF9>hORd)(eFByIU^!3HD^Jj&KSD4sYO~t8}uf4*7RiJ$R|p z1&qm-j#oM-aM0qcxxp7g>>gHZ8OX1(F_Ozw1X9Y)A~nT2w8XHMUB>aXVLTV~UANu_3*Rnc4nS{fP@>r$Vg&E8@4`o&;-X*q+%`S(++RvqJ(qQs9+h zHnnZ0ybC!ha#3%}nIwq}9lwbikl|^xR%?HlcX5i_Zi~%`j*#Ze-hDz-ry4^k&owzdPKa|#tO@dke276S#qY8E;S@LV^!0{%@A$Bi_rL#uBh>UGs8K>0PzkU=!fkiE z1t#z+;X#tGrwmdUF31lFGR@0R{atjkZS5GfdenkLvPCm z`NpGP)=RunQC;9KN~3fTw^VvOf0qcZ$twRM&*v&$ef$4>^{c=4{qO$rC%=dXR{!t8e`=Um^XCZ{StI?|<*t@Q$CpGA+mGo$D8PB28RGUgEhfRP=3}ZBu&`0I>@B z2Hrtm%$!F1-eNqyz42=L*7)dH&9RW|#=JK~QQ{*_r4FKaGVIQ`}|ZqFd? zK0mjD_)gK#yTRlOv7VllDMJRSq-RSxZ^Sv|m+*e0f56M6tQ6qCv!n+8-oD@7C?Ns= z2zBA{{=xc%mDRQ#)5f9TrB|1TR+)n|E77ypV*Zx-(0Fn%B{S8nSbHuMf#8iUdIq-Di#+~ zhlU;(?!8M48t-3-qkB~q`U(S%=(K(fACpWUS>db6C^YAW6f(A0oROg7`h>iHK_eO9 z30DX3`Iir-Ph}DHWo%gpa{$8EpU-l(EvRit@!gWJI2?4j$~(WBLcPy55)v8+PG#*) zvx$h);D}ZS;_pp&ou6*nKt;YuLUmEPdRE=&#TPbKz2Ymd$`E84RfXJ>V%;h{VU$q? z(w4Q#0$d%O&`6ZP$WIKcaLKfPLZ4Aq!DqrP8=2WSP6I4Fr(|W@-;RVP8a5%~E>t*y z8NqbzMO7x&W;lG4*l58=e#0llh%>d&MNf7g?AIiaBzHU8UY?88>BQJBz%h`d1K)#u zMmZFEt?BA1+bM;HnT?Dk%1Q7-2vZNC_>rk|yH%0P2*rk8l-dfM&J(7|P{TC%T9SIp zoH`XAyBo6%av)y!XT0=|d?9xo!(_?A!@5%dd~0;lxK54FFs?V0!efbv<4Cb{eDUH@ zWED4@VieP+2)=%D0#NsjCrg|_ig%o$7msq-gJw5%Z#zDY;}R=2R?+1_RFf{&!4Nw* z^Qcj?yPJa1Vm=MECBq~=Gn0p_ad^5&$7bR+R7%g(w_wCzE| z5gI>%oR!cH2wvKW2`N7wyeDa3sd~s^%d@T%q0oWlYzJdy|ZI0NZO!F#)FcxXmXls@flokKAq*R@cDh$o^ zw3w&$KNas7rtnBOUb4*yqi%{_RL$3->MF!Ctbr$@r zY@}#1`$^3w-z!z;K$H#MtMJwq7$UQT)DVg+Qq!o_^YN_29wDKiE{rvK5W|Ncx!a6A z{$)76a7h^LV|X**L3wx(*Wo9(tjX@STf7&=i=$vCVJan|oSG7!nR zBsLqPhrqubcD5ip?xtS2*Z~kkFL;zxYgvQGuWtx1}D;Zia9hoGf zoPGGH{}}h?EZ@MY)rjQ~+#TlWNLZ%{Z*J&ITq6SCo^+ZT`8sR}Nq+=aiL-3mN z+5d=v%5UqUf+&z^OcG<1n?4C1#c&d1!xuthMgR)_v6y1?FN9RW_o~ytP4z`JDIj;r z8j1~L(?g78AYdoE;DLdQi|U{{&~G)n#J`zLBxJyq`A4Ux_E8ON<~fXEpa>SC+gPK} z_43y0zY27K5RorU(cc8!gr%#s%7@XSgK~B;zBtow{GrEV@$ND$1Us7NhZJ(#wOg<%6-4ykwZ z_FG@mqt$c7D)0}+Npkp(@T=@nJOt|0*B>uX>x#`=sJ9b0<0aM?xHi2|qZdN6Z<|+Y zvaefH`D?;Gv)GFP^J?FItCp4o)w70M;|sOje_SH|HbE%Iw;guLtir>H$o7cxK^~t? z?|tfaAnA(^hl+Hhfr(X)$#GcOvb(Y3K%4_!9^yQ#zV0K!cx^i59nbXiJ*8d|{5OZ{ zJ*%oG-8mdxI`=lLTQ*5^OMQ*jkjAh;1xX{upqg}QD{1)apxiV*f(ik4b0!@zhi~V# z8W_suiO{fHo#_n4O>a`ZAPPJQOs?Da^#W}o?8J_t!c2S18w1G*t_#SV^`>js0=2{x zs25hGXm6Pen=&y-6OVypUGVBsiKICMQDJJ_kRE$x;>T~&gqWIQv|`B3SD2*Ul)gcp zF^z`+BPMWmAyL)F{Py|Xv!h|%Cw`6T9RVBRs5iJ9pvknnUc5d~8TwVcxz-6GgkW2K zb+N!rU_3r10)_S@QU~RumqC4KU4f^}0jM6jSRNdb0=%)tUSEbUj~*%=vh+^cPH)Iz z!f;3dMZ~)p37LxpfUz|~XV6%1SK?^w&M)EJmoLtBO^LP(%1(7tU#xb~P5OMP=_Wgt zHAYQrf1XxkBHfk(PQmAyNHgW8XYKNi3|d(8P^wy%g1{N0@x0rQM;)FZScc~=E-xwb z#3-sgMaa+U3L$x}z^rmvl*m?7ho&X|TYp%VLH}G+_;G-ls=?r`tBk~C0?xrxpA7GLV?P<3$vrVjy-n5M7ckv{ev1UO5Q(u^!V{dlwD1b zm>5`~d{~3JTd$|GUCUW+y%5SIpW zU2f*tF~kvv7I~Z;qN$kXH|b^czC4!2PhBiR*a~0U{~s!v;*#8{P+{thb?11WKQeP_ zX^5f0;ccHl)Uv-`ievvSWiq!N*+_F> zaSf&%-!Zl+puDuF&|b2#5UPy?TEk$!-v=tTEHyynYi?{x(fM%j(cwoz^rn2lXx;FJ zPNc%fe@eQ%Nn)n^A%i+WjHt$qGo33Zkn!l=rkZ(h-dpP8f+2qUI52bb@<#jl*t(w#C0*(k7RK#qKhb5<%(=PScf5_(iT z81vc=CQGB{)Rh^kW7j~hPK1jDB#N48G%0KCg?Nf>S}oDG z@E@6i8wnxE>bn)4O!!%q9VV7Lqeffm<=?5g{mwkt(Xtlgjn>N=6vXb6jYtTe@_ z6tfRq0D3?@aexXlpG|i*0~%(VaE?2-8I9P^jKI&RXTv_Izd#w0v7>+g;6CfY%f%`s zhLkx zywIn-CBC#-OVm3<4%{VR5u4e7PSb3 zC{hmf<51xnG-eCxT{Y!`BdDkGq&z4mB352cIk!v|)Zs=weRgrUf20ouHuZGirMMq$ zu3XKZ-m0j#0qKZo>g)hWLun`D{q*VY6_rK`VO^Iu8vIq&>y3r}R66GkD3k5@$?E%H z_-|AC!+KEpK)u`Cv-?azWgq&pYVpj^zEg*H%uUp~yAsR*4QUrP_R#FaOJO`gK-8#f-D|-Om+tF!4zrYo&nLrt~_j^~5?Dqv4T z(fQ!WBUbDrV}{RA*R%a&Olml_*GvLDJ?va1W%3oQ7@H1<5(Q4ySQ4_fk!{JN0eDSa zi0@1$B;T4<>QG1w4m0J8F7fWpGrtOopu@?*(ZNxS7YmkeQL!tmYJnWme5Wi~Q3K4< z;fA;HxF&6gt*EZ!AA8w8Ea*JEhM6oSoUMZuzziGqwHok8zSV;#tKd+Cv$Rmuj3am^ z2?_wlXLNIXpe_?Glo%n!9Sh*VZbBmDCU6ePOY&`v((=O}l;QEypB$BOSM782#3VZ{ zBGgDg8YQ;W6Ght5)-OadntA;gD3yeo{0h z*-;j4=z>!})RXC+f*ZaYd^qFOUDA@u%*~sD}Lsq7>b!ww%ik=~c?Ikb3jx#q6 zEX5!L9U_k)Yz+S1ghT4bx8~=hV>d>o_6S~yqg{D>Cs3m% zY-R}H;bwC{Z3v*Up&9^{Wtm>j-!cwrb6=6ui)_HX;%czr^Mkg}L5pE6dN*QFF=E+J&deW8X2xHdy=7wdp_f8DmT~@8N>9)2`*|OPpC8A=a0x3 zL#_vfL&`@W@jlBlpo**f4_$y{SQOVUI6s1$C|VF@iaa#UA?%n($;K}nvt6Fj74EfR zL{y`i@KGsGpkcWOCl7hZpgV;%tFt*$Jt5bXggiRq5das|UZ0E8E29TVXvaI@_e6KJ ztIyiALW15X;8k@pF(!FzQedaveD^)YUa3i>vK*(-Wa7<(46jhESjLe(FoWrDm-F?y zz^e(U8y@K3k{=GQCYJLXY=tagh{*y<1da#K98hCKpYTc2l@qeD7EU%>8@c`gSy;wn zGLXoI=5yL%^J+S_7gpArKdW6a2nm1v3;ZbUSbHmv%>oUXM3gKVV6)zg+KW$s%qy>Y zCn*Ifo&toHQQDGsDQgSu3S==O{e8L$R(ZL4qVyd0r^q(Qrem5LDJ??o`QPEBhQ%D% z#JM)*ZQJ950E*BuK``pF83PS@JXKJEY#!UT4q^jskW!3p=6dhI;p!PZJU|ZxEe6VL0H?sY`l43?U#(*OtG;7M$(IJr{X=(d?}(e^bj~WV&9H%FRj>z0dR}2>=B$ z)R`P?zk&0UhS_b_2GHOh|_%i81v-&`7%Zv0AG81*92 zmd(E_vqTVfOnYzyqxe9qK{wW09`^f31z z>i(v^5F{0xgch>4k7R40K3yE({skX$_=!P4$FDq8>?e!MCwcuzLJr&AYGu;yXY5-XDGXyTA15pa0``dB)w!IoleDw|Q+J<@g{J;*tvsr!S35xZxWJ7LRw@)70HU_B>qTK=d zq}t*`#QOsL^xk)XpUvu1uTWxdhpuc^?>a^ZNdQl1xHX=w4eQOuFMq={ZC>N$)iW8M13Kl8k}-v`-i(N}a5BO0bso0a)*8hu&;f z?`qnEKKEVQ;Z5s9TvanxGP$ceo7KC7Q2eQJ-1qxO}=xZ-3t@?a3T~ z@@aPgUtkCLF~Sf{>np&e9hQvUVE}De?~nI@p6t?_?b63nbq8o6K>P*b(<=yBQ)mW#1JfHf|kCtjq4@6d67{0wq1RjP>zNb@|2yL%8gXjfH0( z-^41*8+DVQ1G+bp-A6>*R;;DteQmls?W66T<2~IO)wLs z&W;BO{Cq*r=XjdenH=#)PL-m9#BDuK`h_Y@-?l75%^)y~re>&iY|fshXD|w)kx(RJ zNa8gQ2>7WVWfgiQx;CmNgf++ZxU*bg<1lvA5PlEC`qDQ;BRTkhitxzvR|7ulnc&hP zXW1|*Xvz}{v`6c!gH3JOgnyE@hnw26Zc*MA@BY!*l9w^sfdRn0#vp(}SN8c$c?C2Kq{ zMg^Y;B}ofX<2X`f%dA$bhU+KDInaoAevGFv=B!4T)+myO{#6%eo;YE(u{F_18t6ts zBGri4Xjs!Skdd$g-AV!ke)UrBmZe7?cny^vFy(4r>?w_3FjzH~~zLK;ST4-*WBt8u8);b#x5`9oIH zT8wrS6ek%2;6hUFLV}w<zM7Ekp6CmpH)S=+r7pB}Gl^V6sd1 zX}O%TK4{wl?bls2kAJrBGe*%vonm6cVcy@Lt>YGa&%@A;_k3K~{7Nl*mH~V~h zL((}m@9Tsaq>hfWllora>+TACA%>Nc<{|2c-#zU5#Z3as!QrR|Fr8y)hA=q_QQtYN zJrLpWe#9^|F-XGM_Oar_ogiunu1|-Ve%x)o?!)81>JiHS| zO*KTH#tsx$t6BNQ{k{D!$iKb)6L>eedKB(&(yl!yloEPMUpV4Mc~&2w)7-nM@a(v1 z!Pmh-oel9~INozuCdAO(Gz4KFlPQ@UBLynDUDU89tx}+EiJim!!P3QJn0b+&RHwyr!|_FdgoHSQ{7T z2TLjR{j&B2%mR^+tT5-@p$Ua|yLy;!U@d>_~M@7;%U&u2!p5 z)E}MHb>Pjax}D$+$Xw6vqdNRuGb}-y&u>}`g42eo@}^A+Y#~5zY*nrzVRs%69@kcB zZCe;y_!@6C?)8zRw}&I>z5U+)v4t+8!L_U;n3-(k{^{MciKJn?@y^=uYv_hZ1cOI| z8i3ZaW#RqferwxJYv~W}T8nAFx->XEF6$Ginry&dbT+qbu3%g1#@@9yesK-LZ9(JY zpw8keYubdOv$1ht&1MUDWO38>8+t0|wu2qyTW(z!9kFL}`#LDdWab00>@zbQ3IcHi zw27(;*J`MwY6Q?9yjR;+Ag8Jwa$DDoa+)2XKIU>J>RMqmLdIAM01`$aQ1b;zJ$gqn z!XT&hKB&Un)}_aoVdl7aVM=jD6PLsm)T>@pIGe!14`o3F%e^{N;R&M;n2ILX;?i`$ zwB6wm1;P>9g^-2hoYm5}^%{kJh){u~n0O&X3B=euOrpu_vgx-u%4~CYT2O7fw=5~N z9Bf~dWWi)B(gc{zi?Z(}P>`>>zE!@mK)y~&yjGFy+4*`|&Y`UNlI)!t#`ixEwhuba zt?Abq)QFu@GAH`e)4J6p6yB@T`JprmiC$kuzDkKm0gN@=I<3Zd25FpyIS}6Xnd_vH z

    #CFASI9u@X*DE%BFY9MbrQmTiSkFBS_p(TML@l;yU>&B5A(eeqgNxcF1(cp1l7 zw31wjucP|1nBdtNigP+F`oKT+V;MKEmZH!!? z#YE~Y)_Aii>A(W$zUt&U2Q$^t6aSI~iucE~v8JQxj4on>02tfS`w)Dg5ii5zDAo%T zhxEVfj)P=(cOlHAOqnbK5X((G4d1@=*Zz;UChMzn$}4_i5nlh5xruP~p2b@}1}cz` znQ?IRY>ImqoaztZ4lOmxPWBF&-<)@ho*uuPqjpZc8}Nbd`zIXOnSAfK8Lj)pYp29=4mfLZ*P9F z2Ztu9j2(REKp6&#?Jxp~rOfZ5YossOJ4tA>u9SRT2zf`UqK-v53KXP>glSZNN)p6O zPOp}EZDdme3N#`FD;(0(0;gT1X;w2JhMCg!_DbLU#t16tjG!ZmL2Q(9f1XCZ_da6h zv%R0KW=|^~Y3{9HvvuK@O!dvX^yXc>T<>@9#3t}V(E#Q-)j^^7CyW`w`bVSj*vGDE z5uSGGf?Jevt>g19azrN3eR8Nn#^a>mI)?ZP`?oiE4}Zt!{6l3UTzPZ^uC)KW2lcY5 z^uZM?aGZ|I`&QC<)4<91U-U6$bh0}azd_01WDAB0Zo0sNT3;oP6q!!g@U~Za(GoEu zJsb3kh$|Dp6vloQd~k%NgRXkGE`bM!T3W~}sc6xOuelB_Cv`Z*F{gx|-+s#|(deyz zmQbub%=z;YR{Ed+*1L~xQEGqwc(#}=-~D@gJ^Pi%FBrmbB5yGZ@r;nqkQk8q{e$~K ziIIr)X2Vumr!ip&e`CZR`A1BM<~`k3%5JX4X_+(_UOgcbIK*!0Sio5>cANOgQG0!G u)87YDi=O;V^BIyH0>eN+9yx**Koce>k8nXGmX@pATSCNf!<5^<{{I1)@xD?3 literal 0 HcmV?d00001 diff --git a/public/cache/BE0/BD0/0917fc42cb8dfbd8bc5add2088e60feb41c28e0f b/public/cache/BE0/BD0/0917fc42cb8dfbd8bc5add2088e60feb41c28e0f new file mode 100644 index 0000000000000000000000000000000000000000..50be99779f68332178079fd3e9ee162bd227e640 GIT binary patch literal 4321 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 P00000NkvXXu0mjfoy1#p literal 0 HcmV?d00001 diff --git a/public/cache/C12/DE1/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fseems_rateable%2FjRating.js%3F1420357855%3D b/public/cache/C12/DE1/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fseems_rateable%2FjRating.js%3F1420357855%3D new file mode 100644 index 0000000000000000000000000000000000000000..98b7931ca395d909f1575dd81afd138818cc02d2 GIT binary patch literal 2104 zcmbVNZI9YU5ROjO<)So~q?e?vqNzy)TAV3SHAmC$B)6Bxs5%Q=nJ|B*jp*#~b%S9 zO@wKv`TEz=+`6+8C-$N=DJ2jt6Ej8(EZc{rxn`waFfGoL9Q^#YFK8pPr)!cT=BB56 zk`!IJqUqf5OcP{P7fhDtwY>#D2V|v4pbwDnqqC{@^vwC9%N0lh&;%gLx7|@+!Y?!d zozl}ySu)V9Py2`1Y-1?-c>)o%{as>6% zhHkLhfxtUMsK=hOKsc%hus7Pu-lG52B2_{~qY3~NNb+qS@O&T8{8HG9FBG$yNcfA) z(caJr-_`(60c1%y$-@=>=+`1d)2<(h(taJrUr#m|@4reICs4T0_;!>}ADbn^>5 zdsljQ4BkhXnye@&x$Bc0?mXYON_3IH-WXoshU)}Vbc`v2Ys^p$ru-ITqsWH_wA)@< zqNz%eVz4*urY?6bG2dH2OoYxNe2a0jI9$RKRYiS7f(ohujrFXF6?=zW68=1+rU?x} z6Y|b0{&Rc0cfwViz+xJ&lGKC60HzZDDen_YjpA&OVWnsKVymU6_&%M&w(?$QgOnIIkT!r-RP&MLgH z@c8CnHy*YomT@bp({V#vE;z3~Ye~~+?uvdoz8zIqVVtzruD)!i{a#OMkA_-g8+}n- z*F~F4nrXzugMBPY@f}KuY?997AwR*Y{`K4oPL_EXNa9tj1%boSlX28)X4zafMzOInc9pa%6L^rSraOXB>D_tj!G1|^>;5)%0Tf_B&;i>x8CL@1DX^6KLu@PHW zr<ukZjR1A8I4Anz#m74M}=t8-tyUYS>u%JBLF2KsBU?wiCG5|VPR<&HNxI`I%YLx^QV_j7$6OyDRqrFi9 z=9}@}D!9amGS;#JY(Ew-qEe%Y8ck!Od{EZsTo|MQI>2T z*Peg$7V|iPX$t)Y+QD@kpq(8=)J~T`CxgE2WaHPMOj9hwlo?Pg1CFUMwI?6%oNx)r zqu(DrJRy&ML*GxwpB{brMIm3yyeV1y&{i~4G8()f9oLSfhC+TP$Vv$m!SUq-v^(wa zW)oo=I^Lg`Zk;W z3zo%#=Z2)}reyP?XzV29DWJI`g?>OG56Y(AHFM?5j!>W}z*2xJ-*kpOg*-DPVn?J(x*++?0mbJ1E{MvOp7=6 z1m0UxJqf%S!ZAfayfv2Y2Cb__ri8M_6aXmD^gC?ubZ5~1n%T3j6!WAgDhK#5VZ5{^z!o+RlGRlOwjdf1tX4L9oY%==RpMR6m^1N5na{!DJM#^Ky3E6 zqd{xzSU0jh88wXgObF`JmNJQNeL2iVH$#q>M(Op+H|N(`uiI6whXW&at)8r}>ar`O z%`C1Y{hcjF3q3}QU7E%AkRIW~;qA>z+lF(MR%mUmvbq?Cqg!dK-L}G!=mFJ~sG-^0 zj6}p?Rp0rz8PM9+n~%o6Tunw+IroL+Yi$OmYO_^$8}+tpdcc>{bx)kJqq!#Pa${qJ zp{dcz9pYj3Wj}H$aOXFtOVgwdHmMP%w5myW|BV<6r}%*T9PpRDJO zwWd&Rws18<`B-m#tMz$gX;l3-<&7w9>JxD1$^8w=$DKEu1@#E?)F&A|wANrW(A+wb z^ZYJ{!-{D68<**?26T&6#f34XtEq2+<$z|VuGQbFD2I)Cxb+ys4^(4!ZiKK=-MUN* z`$V=xIh^T8?$K(_zffQ}P#OEMS^?0zaH{1p=Tl_>s#O{|73YHE#x%{0Y4?(_?KoMC zgD{A$;$ImNRUxin)NH!@7y9vMBs{dlUGv6|{lE3?*Sev|ipIC?Mz7ueW`+B|t@2I& zSd@mXqG!@jB+>3F8X7tIjM;Zh+)WTh(>2Lfc~jVP&-GuPDCGBTC(R1#!Vks)^zmV` zyNu2Ws!X(;h}caAg5qi{RbyE~R`6GMFLjf2`q;5iw3O80`o%CiH$ z4Wmgm#lpvcW@)^9H7FbqVlaVewiA;Dc;Pdw%lIBkvuF;}PSxSYtjGCP+T*GfH1z1| t*e#>6_E Date: Wed, 7 Jan 2015 09:53:52 +0800 Subject: [PATCH 067/192] change cache files sites --- .gitignore | 1 + config/environments/development.rb | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 0cd336786..d5a0e5f2f 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ /files/* /log/* /tmp/* +/cache/* .gitignore /public/images/avatars/* /Gemfile diff --git a/config/environments/development.rb b/config/environments/development.rb index 869e9a9a6..765fda433 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -11,7 +11,7 @@ RedmineApp::Application.configure do # Show full error reports and disable caching config.consider_all_requests_local = true config.action_controller.perform_caching = true - config.cache_store = :file_store, "#{Rails.root }/public/cache/" + config.cache_store = :file_store, "#{Rails.root }/public/tmp/" # Don't care if the mailer can't send config.action_mailer.raise_delivery_errors = false From b711793d7ce468db39f3ebeeca1eafa54f3d7fd3 Mon Sep 17 00:00:00 2001 From: z9hang Date: Wed, 7 Jan 2015 11:20:27 +0800 Subject: [PATCH 068/192] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=8A=A0=E5=85=A5?= =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E6=8E=A5=E5=8F=A3=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/courses.rb | 7 ++++--- app/controllers/courses_controller.rb | 4 +++- app/services/courses_service.rb | 11 ++++++----- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index 79a5c215e..0ae3bba1d 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -90,13 +90,14 @@ module Mobile desc "加入课程" params do requires :token, type: String + requires :course_password, type: String end post ":id" do authenticate! cs = CoursesService.new - status = cs.join_course({"object_id" => params[:id]},current_user) - out = {status: status} - message = case status + status = cs.join_course({:object_id => params[:id],:course_password => params[:course_password]},current_user) + out = {status: status[:state]} + message = case status[:state] when 0; "加入成功" when 1; "密码错误" when 2; "课程已过期 请联系课程管理员重启课程。(在配置课程处)" diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 19cca8e70..fa76bd0e5 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -27,7 +27,9 @@ class CoursesController < ApplicationController def join if User.current.logged? cs = CoursesService.new - @state,course = cs.join_course params + join = cs.join_course params,User.current + @state = join[:state] + course = join[:course] #course = Course.find_by_id params[:object_id] #if course # if course_endTime_timeout? course diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index b9489be4e..23c25d302 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -217,20 +217,21 @@ class CoursesService #@state == 4 您加入的课程不存在 #@state == 5 您还未登录 #@state 其他 未知错误,请稍后再试 - def join_course params + def join_course params,current_user course = Course.find_by_id params[:object_id] + @state = 10 if course if course_endTime_timeout? course @state = 2 else - if User.current.member_of_course?(course) + if current_user.member_of_course?(course) @state = 3 else if params[:course_password] == course.password members = [] - members << Member.new(:role_ids => [10], :user_id => User.current.id) + members << Member.new(:role_ids => [10], :user_id => current_user.id) course.members << members - StudentsForCourse.create(:student_id => User.current.id, :course_id => params[:object_id]) + StudentsForCourse.create(:student_id => current_user.id, :course_id => params[:object_id]) @state = 0 else @state = 1 @@ -240,7 +241,7 @@ class CoursesService else @state = 4 end - [@state,course] + {:state => @state,:course => course} end #作业列表 From 303752fc7e0a5f2360d6cdc7863d9d0eb9e331c4 Mon Sep 17 00:00:00 2001 From: z9hang Date: Wed, 7 Jan 2015 11:37:48 +0800 Subject: [PATCH 069/192] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=80=80=E5=87=BA?= =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/courses.rb | 11 +++++++++-- app/services/courses_service.rb | 15 ++++++++++++++- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index 0ae3bba1d..d3f0e8cef 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -116,8 +116,15 @@ module Mobile delete ":id" do authenticate! cs = CoursesService.new - cs.exit_course({"object_id" => params[:id]}, current_user) - {status: 0} + status = cs.exit_course({:object_id => params[:id]}, current_user) + out = {status: status} + message = case status + when 0; "退出成功" + when 1; "您不在课程中" + when 2; "您还未登录" + else; "未知错误,请稍后再试" + end + out.merge(message: message) end desc "搜索课程" diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index 23c25d302..d8dd8299b 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -197,14 +197,27 @@ class CoursesService #退出课程 #object_id: 课程id #user:当前用户 + #@state == 0 退出成功 + #@state == 1 不在课程中 + #@state == 2 您还未登录 + #@state 其他 未知错误,请稍后再试 def exit_course params,user + if user.nil? + @state = 2 + return @state + end @member = Member.where('course_id = ? and user_id = ?', params[:object_id], user.id) + if @member.nil? || @member.count == 0 + @state = 1 + return @state + end @member.first.destroy - joined = StudentsForCourse.where('student_id = ? and course_id = ?', user.id, params[:object_id]) joined.each do |join| join.delete + @state = 0 end + @state end #加入课程 From fdb38c1b87043b11c3a146b7b01eaf71e23c18d5 Mon Sep 17 00:00:00 2001 From: z9hang Date: Wed, 7 Jan 2015 15:24:43 +0800 Subject: [PATCH 070/192] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E6=95=99=E5=B8=88=EF=BC=8C=E8=AF=BE=E7=A8=8B=E5=AD=A6=E7=94=9F?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/courses.rb | 14 +++++++++----- app/services/courses_service.rb | 31 ++++++++++++++++++++++++++++++- 2 files changed, 39 insertions(+), 6 deletions(-) diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index d3f0e8cef..4130ea902 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -140,22 +140,26 @@ module Mobile desc "课程老师列表" params do + requires :token, type: String requires :course_id, type: Integer, desc: "课程id" end get 'teachers' do cs = CoursesService.new - teachers = cs.course_teacher_or_student_list({role: 1}, params[:course_id],current_user) - {status: 0, data: teachers} + teachers = cs.course_teacher_or_student_list({role: '1'}, params[:course_id],current_user) + present :data, teachers, with: Mobile::Entities::User + present :status, 0 end desc "课程学生列表" params do + requires :token, type: String requires :course_id, type: Integer, desc: "课程id" end - get 'teachers' do + get 'students' do cs = CoursesService.new - teachers = cs.course_teacher_or_student_list({role: 2}, params[:course_id],current_user) - {status: 0, data: teachers} + students = cs.course_teacher_or_student_list({role: '2'}, params[:course_id],current_user) + present :data, students, with: Mobile::Entities::User + present :status, 0 end desc "返回单个课程" diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index d8dd8299b..485126ac4 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -72,7 +72,36 @@ class CoursesService #@subPage_title = '' @members = c.member_principals.includes(:roles, :principal).all.sort end - @members + users = [] + @members.each do |m| + img_url = url_to_avatar(m.user) + gender = m.user.user_extensions.gender.nil? ? 0 : m.user.user_extensions.gender + work_unit = get_user_work_unit m.user + location = get_user_location m.user + users << {:id => m.user.id, :img_url => img_url, :nickname => m.user.login, :gender => gender, :work_unit => work_unit, :mail => m.user.mail, :location => location, :brief_introduction => m.user.user_extensions.brief_introduction} + end + users + end + + #获取用户的工作单位 + def get_user_work_unit user + work_unit = "" + if user.user_extensions.identity == 0 || user.user_extensions.identity == 1 + work_unit = user.user_extensions.school.name unless user.user_extensions.school.nil? + elsif user.user_extensions.identity == 3 + work_unit = user.user_extensions.occupation + elsif user.user_extensions.identity == 2 + work_unit = user.firstname + end + work_unit + end + + #获取用户地区 + def get_user_location user + location = "" + location << (user.user_extensions.location || '') + location << (user.user_extensions.location_city || '') + location end #课程通知列表 From fd1dc80bf0760fa35cc9a8f372ee1f3c74dda8e7 Mon Sep 17 00:00:00 2001 From: z9hang Date: Wed, 7 Jan 2015 16:02:16 +0800 Subject: [PATCH 071/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/homeworks.rb | 3 ++- app/services/homework_service.rb | 9 +++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/app/api/mobile/apis/homeworks.rb b/app/api/mobile/apis/homeworks.rb index 99acfd87f..0b86fef7b 100644 --- a/app/api/mobile/apis/homeworks.rb +++ b/app/api/mobile/apis/homeworks.rb @@ -16,7 +16,8 @@ module Mobile end route_param :id do get do - get_service.show_homework params + hs = HomeworkService.new + hs.show_homework params end end diff --git a/app/services/homework_service.rb b/app/services/homework_service.rb index 914889c68..c0a669bca 100644 --- a/app/services/homework_service.rb +++ b/app/services/homework_service.rb @@ -13,16 +13,17 @@ class HomeworkService def show_homework params @bid = Bid.find(params[:id]) course = @bid.courses.first - author = @bid.author.firstname + @bid.author.lastname + author = @bid.author.lastname + @bid.author.firstname many_times = course.homeworks.index(@bid) + 1 name = @bid.name - homework_count = @bid.homeworks.count + homework_count = @bid.homeworks.count #已提交的作业数量 + student_questions_count = @bid.commit.nil? ? 0 : @bid.commit description = @bid.description if is_course_teacher(User.current, course) && @bid.open_anonymous_evaluation == 1 && @bid.homeworks.count >= 2 state = bid.comment_status end - {:course => 'course', :atuthor => 'author', :many_times => 'many_times', :name => 'name', :homework_count => 'homework_count', - :descriptiong => 'description', :state => 'state'} + {:course => course, :atuthor => author, :many_times => many_times, :name => name, :homework_count => homework_count,:student_questions_count => student_questions_count, + :descriptiong => description, :state => state} end # 启动作业匿评 From 3047b523b0dd7d071a4c088bd8699987685f3979 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Fri, 9 Jan 2015 15:28:43 +0800 Subject: [PATCH 072/192] add expire_helper and change the code way of set cache expire! --- .gitignore | 4 +- app/helpers/expire_helper.rb | 16 ++ app/models/bid.rb | 11 +- app/models/changeset.rb | 13 +- app/models/contest_notification.rb | 11 +- app/models/document.rb | 7 +- app/models/forum.rb | 11 +- app/models/issue.rb | 12 +- app/models/journals_for_message.rb | 11 +- app/models/memo.rb | 5 +- app/models/message.rb | 12 +- app/models/news.rb | 11 +- app/models/project.rb | 11 +- ...lesheets%2Fapplication.css%3F1420357855%3D | Bin 2125 -> 0 bytes ...calhost%3A3000%2Fimages%2Flist-icon.png%3F | Bin 2009 -> 0 bytes ...3A3000%2Fimages%2Flogo.png%3F1420357778%3D | Bin 1987 -> 0 bytes ...0%2Fstylesheets%2Fnyan.css%3F1420357855%3D | Bin 2005 -> 0 bytes ...%3A3000%2Fstylesheets%2Fapplication.css%3F | Bin 2000 -> 0 bytes public/cache/568/F80/views%2Fforums | 145 ----------- ...mages%2Favatars%2FUser%2F0%3F1420357778%3D | Bin 2001 -> 0 bytes ...2Fimages%2Ftransparent.png%3F1420357778%3D | Bin 2014 -> 0 bytes ...2Fjavascripts%2Fwelcome.js%3F1420357855%3D | Bin 2044 -> 0 bytes public/cache/636/EF0/views%2Fprojects | 185 -------------- ...Fstylesheets%2Fwelcome.css%3F1420357855%3D | Bin 2050 -> 0 bytes public/cache/6CA/670/views%2Fissues%2F2210 | 22 -- public/cache/6CB/680/views%2Fissues%2F2211 | 22 -- public/cache/6D1/6D0/views%2Fissues%2F2208 | 22 -- public/cache/6D2/6E0/views%2Fissues%2F2209 | 22 -- ...es%2Favatars%2FProject%2F0%3F1420357778%3D | Bin 2003 -> 0 bytes public/cache/701/020/views%2Factivities | 127 ---------- public/cache/705/AF0/views%2Fprojects%2F2 | 21 -- public/cache/73B/E90/views%2Fprojects%2F17 | 19 -- public/cache/73D/EC0/views%2Fprojects%2F28 | 19 -- public/cache/73E/ED0/views%2Fprojects%2F29 | 21 -- public/cache/766/4C0/views%2Fprojects%2F300 | 19 -- public/cache/769/520/views%2Fprojects%2F330 | 19 -- public/cache/76B/500/views%2Fprojects%2F134 | 19 -- public/cache/76C/530/views%2Fprojects%2F315 | 19 -- public/cache/76E/5B0/views%2Fprojects%2F290 | 19 -- public/cache/777/640/views%2Fprojects%2F299 | 19 -- ...vascripts%2Fapplication.js%3F1420357855%3D | Bin 2026 -> 0 bytes public/cache/7AC/380/views%2Fjournals%2F5295 | 22 -- public/cache/7AD/390/views%2Fjournals%2F5296 | 22 -- public/cache/7AE/3A0/views%2Fjournals%2F5297 | 22 -- public/cache/7AF/3B0/views%2Fjournals%2F5298 | 22 -- .../800/views%2Fmemos%2F427-20150106032234 | 25 -- .../A60/views%2Fmemos%2F427-20150106082740 | 25 -- .../DB0/views%2Fmemos%2F582-20141129071403 | 25 -- .../D00/views%2Fmemos%2F574-20141125104842 | 25 -- .../E50/views%2Fmemos%2F565-20141128054331 | 25 -- .../EF0/views%2Fmemos%2F576-20141126222236 | 25 -- .../170/views%2Fmemos%2F579-20141127101435 | 23 -- .../D30/views%2Fmemos%2F582-20150106082842 | 25 -- .../320/views%2Fmemos%2F579-20150106082907 | 25 -- .../cae6965b71862532cc646d5995119a5821980260 | Bin 6735 -> 0 bytes .../0906d39339d5f71e61207417e8c95f43c783442e | Bin 3017 -> 0 bytes ...s%2Fjquery.colorbox-min.js%3F1420357855%3D | Bin 2059 -> 0 bytes .../f06dd67d6627069f7f7215df57898d9b29c4b869 | Bin 10539 -> 0 bytes .../e8d35b3dc5255332a9a7f5c7d92c79635729fb41 | 25 -- ...%2Fjquery.leanModal.min.js%3F1420357778%3D | Bin 2062 -> 0 bytes .../4cea7ff935690a5e00f53017e2452eee8a0e6254 | 232 ------------------ .../60567173164aa1f75c0f9517835ebc2fd5eb0ec5 | Bin 12051 -> 0 bytes .../bbefbac7540e09e1955cb47321965813266c7a8e | 69 ------ .../57a7c6d86d2ad09012bac99d46b38f9f33a970a8 | 6 - .../88eae75bf7b81a196ba38d86bf54e7162ab274c1 | Bin 338091 -> 0 bytes .../e9938e23e7a85ff3d431e045384ccd84dea93ce8 | Bin 20153 -> 0 bytes .../afc8c0ba867511cd69e8b5d43542aad5a2e716c6 | Bin 37249 -> 0 bytes .../213cd47b5ee47b691425e1fcb6dffb207c707d8c | Bin 27657 -> 0 bytes .../6d2710e981a7dd596afcc77e54ff43b9d7f75cb2 | Bin 41860 -> 0 bytes ...uery%2Fjquery-ui-1.9.2.css%3F1420357855%3D | Bin 2075 -> 0 bytes ....8.3-ui-1.9.2-ujs-2.0.3.js%3F1420357855%3D | Bin 2108 -> 0 bytes .../0e09a16c714ce54739affa1a4e945aa699b4baae | Bin 2979 -> 0 bytes .../dd147f7301bf4217fcb61f9e99d343f4f6ffbb1a | Bin 11948 -> 0 bytes .../f743173130fefc074fc3faadc21911a5f8ed7eff | Bin 84782 -> 0 bytes .../0917fc42cb8dfbd8bc5add2088e60feb41c28e0f | Bin 4321 -> 0 bytes ...eems_rateable%2FjRating.js%3F1420357855%3D | Bin 2104 -> 0 bytes ...ems_rateable%2Frateable.js%3F1420357855%3D | Bin 2108 -> 0 bytes test/unit/helpers/expire_helper_test.rb | 4 + tmp/plugins/README | 1 - 79 files changed, 74 insertions(+), 1448 deletions(-) create mode 100644 app/helpers/expire_helper.rb delete mode 100644 public/cache/1DB/8A2/http%3A%2F%2Flocalhost%3A3000%2Fthemes%2Fredpenny-master%2Fstylesheets%2Fapplication.css%3F1420357855%3D delete mode 100644 public/cache/20C/451/http%3A%2F%2Flocalhost%3A3000%2Fimages%2Flist-icon.png%3F delete mode 100644 public/cache/2D3/CC1/http%3A%2F%2Flocalhost%3A3000%2Fimages%2Flogo.png%3F1420357778%3D delete mode 100644 public/cache/51F/CA1/http%3A%2F%2Flocalhost%3A3000%2Fstylesheets%2Fnyan.css%3F1420357855%3D delete mode 100644 public/cache/559/261/http%3A%2F%2Flocalhost%3A3000%2Fstylesheets%2Fapplication.css%3F delete mode 100644 public/cache/568/F80/views%2Fforums delete mode 100644 public/cache/5AA/681/http%3A%2F%2Flocalhost%3A3000%2Fimages%2Favatars%2FUser%2F0%3F1420357778%3D delete mode 100644 public/cache/5D4/CE1/http%3A%2F%2Flocalhost%3A3000%2Fimages%2Ftransparent.png%3F1420357778%3D delete mode 100644 public/cache/5D6/771/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fwelcome.js%3F1420357855%3D delete mode 100644 public/cache/636/EF0/views%2Fprojects delete mode 100644 public/cache/655/921/http%3A%2F%2Flocalhost%3A3000%2Fstylesheets%2Fwelcome.css%3F1420357855%3D delete mode 100644 public/cache/6CA/670/views%2Fissues%2F2210 delete mode 100644 public/cache/6CB/680/views%2Fissues%2F2211 delete mode 100644 public/cache/6D1/6D0/views%2Fissues%2F2208 delete mode 100644 public/cache/6D2/6E0/views%2Fissues%2F2209 delete mode 100644 public/cache/6E2/DF1/http%3A%2F%2Flocalhost%3A3000%2Fimages%2Favatars%2FProject%2F0%3F1420357778%3D delete mode 100644 public/cache/701/020/views%2Factivities delete mode 100644 public/cache/705/AF0/views%2Fprojects%2F2 delete mode 100644 public/cache/73B/E90/views%2Fprojects%2F17 delete mode 100644 public/cache/73D/EC0/views%2Fprojects%2F28 delete mode 100644 public/cache/73E/ED0/views%2Fprojects%2F29 delete mode 100644 public/cache/766/4C0/views%2Fprojects%2F300 delete mode 100644 public/cache/769/520/views%2Fprojects%2F330 delete mode 100644 public/cache/76B/500/views%2Fprojects%2F134 delete mode 100644 public/cache/76C/530/views%2Fprojects%2F315 delete mode 100644 public/cache/76E/5B0/views%2Fprojects%2F290 delete mode 100644 public/cache/777/640/views%2Fprojects%2F299 delete mode 100644 public/cache/77E/D81/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fapplication.js%3F1420357855%3D delete mode 100644 public/cache/7AC/380/views%2Fjournals%2F5295 delete mode 100644 public/cache/7AD/390/views%2Fjournals%2F5296 delete mode 100644 public/cache/7AE/3A0/views%2Fjournals%2F5297 delete mode 100644 public/cache/7AF/3B0/views%2Fjournals%2F5298 delete mode 100644 public/cache/911/800/views%2Fmemos%2F427-20150106032234 delete mode 100644 public/cache/918/A60/views%2Fmemos%2F427-20150106082740 delete mode 100644 public/cache/919/DB0/views%2Fmemos%2F582-20141129071403 delete mode 100644 public/cache/91A/D00/views%2Fmemos%2F574-20141125104842 delete mode 100644 public/cache/91A/E50/views%2Fmemos%2F565-20141128054331 delete mode 100644 public/cache/91B/EF0/views%2Fmemos%2F576-20141126222236 delete mode 100644 public/cache/91C/170/views%2Fmemos%2F579-20141127101435 delete mode 100644 public/cache/91D/D30/views%2Fmemos%2F582-20150106082842 delete mode 100644 public/cache/925/320/views%2Fmemos%2F579-20150106082907 delete mode 100644 public/cache/9B3/1B0/cae6965b71862532cc646d5995119a5821980260 delete mode 100644 public/cache/9E6/E80/0906d39339d5f71e61207417e8c95f43c783442e delete mode 100644 public/cache/A91/6A1/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fjquery.colorbox-min.js%3F1420357855%3D delete mode 100644 public/cache/A95/AE0/f06dd67d6627069f7f7215df57898d9b29c4b869 delete mode 100644 public/cache/AA5/BD0/e8d35b3dc5255332a9a7f5c7d92c79635729fb41 delete mode 100644 public/cache/ABB/FD1/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fjquery.leanModal.min.js%3F1420357778%3D delete mode 100644 public/cache/AC2/540/4cea7ff935690a5e00f53017e2452eee8a0e6254 delete mode 100644 public/cache/AC2/A80/60567173164aa1f75c0f9517835ebc2fd5eb0ec5 delete mode 100644 public/cache/AC9/C70/bbefbac7540e09e1955cb47321965813266c7a8e delete mode 100644 public/cache/AFF/300/57a7c6d86d2ad09012bac99d46b38f9f33a970a8 delete mode 100644 public/cache/B2D/650/88eae75bf7b81a196ba38d86bf54e7162ab274c1 delete mode 100644 public/cache/B3B/DA0/e9938e23e7a85ff3d431e045384ccd84dea93ce8 delete mode 100644 public/cache/B4F/E50/afc8c0ba867511cd69e8b5d43542aad5a2e716c6 delete mode 100644 public/cache/B54/AB0/213cd47b5ee47b691425e1fcb6dffb207c707d8c delete mode 100644 public/cache/B6B/0E0/6d2710e981a7dd596afcc77e54ff43b9d7f75cb2 delete mode 100644 public/cache/B76/7F1/http%3A%2F%2Flocalhost%3A3000%2Fstylesheets%2Fjquery%2Fjquery-ui-1.9.2.css%3F1420357855%3D delete mode 100644 public/cache/B7C/511/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fjquery-1.8.3-ui-1.9.2-ujs-2.0.3.js%3F1420357855%3D delete mode 100644 public/cache/B7E/7C0/0e09a16c714ce54739affa1a4e945aa699b4baae delete mode 100644 public/cache/B8A/F50/dd147f7301bf4217fcb61f9e99d343f4f6ffbb1a delete mode 100644 public/cache/BB1/DF0/f743173130fefc074fc3faadc21911a5f8ed7eff delete mode 100644 public/cache/BE0/BD0/0917fc42cb8dfbd8bc5add2088e60feb41c28e0f delete mode 100644 public/cache/C12/DE1/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fseems_rateable%2FjRating.js%3F1420357855%3D delete mode 100644 public/cache/C83/011/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fseems_rateable%2Frateable.js%3F1420357855%3D create mode 100644 test/unit/helpers/expire_helper_test.rb delete mode 100644 tmp/plugins/README diff --git a/.gitignore b/.gitignore index d5a0e5f2f..0ac235089 100644 --- a/.gitignore +++ b/.gitignore @@ -6,8 +6,8 @@ /config/database.yml /files/* /log/* -/tmp/* -/cache/* +/public/tmp/* +/public/cache/* .gitignore /public/images/avatars/* /Gemfile diff --git a/app/helpers/expire_helper.rb b/app/helpers/expire_helper.rb new file mode 100644 index 000000000..0a9cab69c --- /dev/null +++ b/app/helpers/expire_helper.rb @@ -0,0 +1,16 @@ +module ExpireHelper + #index.html 中 “projects”塊 緩存過期 + def expire_project_cache + ActionController::Base.new.expire_fragment('projects') + end + + #index.html 中 “activities”塊 緩存過期 + def expire_activitie_cache + ActionController::Base.new.expire_fragment('activities') + end + + #welcome/index.html 中 “forums”塊 緩存過期 + def expire_forum_cache + ActionController::Base.new.expire_fragment('forums') + end +end diff --git a/app/models/bid.rb b/app/models/bid.rb index 3f21c451f..f423266b8 100644 --- a/app/models/bid.rb +++ b/app/models/bid.rb @@ -17,6 +17,7 @@ class Bid < ActiveRecord::Base HomeworkProject = 2 attr_accessible :author_id, :budget, :deadline, :name, :description, :homework_type, :password include Redmine::SafeAttributes + include ExpireHelper belongs_to :author, :class_name => 'User', :foreign_key => :author_id belongs_to :course @@ -34,9 +35,9 @@ class Bid < ActiveRecord::Base # has_many :fork_homework, :class_name => 'Bid', :conditions => "#{Bid.table_name}.parent_id = #{id}" - after_create :expire_cache - after_update :expire_cache - before_destroy :expire_cache + after_create :expire_activitie_cache + after_update :expire_activitie_cache + before_destroy :expire_activitie_cache acts_as_attachable @@ -154,7 +155,5 @@ class Bid < ActiveRecord::Base end end - def expire_cache - ActionController::Base.new.expire_fragment('activities') - end + end diff --git a/app/models/changeset.rb b/app/models/changeset.rb index 5f3f2e03d..101647824 100644 --- a/app/models/changeset.rb +++ b/app/models/changeset.rb @@ -16,6 +16,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Changeset < ActiveRecord::Base + include ExpireHelper belongs_to :repository belongs_to :user include UserScoreHelper @@ -64,9 +65,9 @@ class Changeset < ActiveRecord::Base includes(:repository => :project).where(Project.allowed_to_condition(args.shift || User.current, :view_changesets, *args)) } - after_create :scan_for_issues,:refresh_changests,:expire_cache#:be_user_score # user_score - after_update :be_user_score,:expire_cache - before_destroy :expire_cache + after_create :scan_for_issues,:refresh_changests,:expire_activitie_cache#:be_user_score # user_score + after_update :be_user_score,:expire_activitie_cache + before_destroy :expire_activitie_cache after_destroy :down_user_score before_create :before_create_cs @@ -329,9 +330,5 @@ class Changeset < ActiveRecord::Base self.repository.fetch_changesets if Setting.autofetch_changesets? end end - #added by lizanle - #设置活动过期 - def expire_cache - ActionController::Base.new.expire_fragment('activities') - end + end diff --git a/app/models/contest_notification.rb b/app/models/contest_notification.rb index cc23cffe0..0ccd0d5a7 100644 --- a/app/models/contest_notification.rb +++ b/app/models/contest_notification.rb @@ -1,11 +1,10 @@ class ContestNotification < ActiveRecord::Base + include ExpireHelper attr_accessible :content, :title validates :title, length: {maximum: 30} - after_create :expire_cache - after_update :expire_cache - before_destroy :expire_cache + after_create :expire_forum_cache + after_update :expire_forum_cache + before_destroy :expire_forum_cache + - def expire_cache - ActionController::Base.new.expire_fragment('forums') - end end diff --git a/app/models/document.rb b/app/models/document.rb index 29a761827..e607b9292 100644 --- a/app/models/document.rb +++ b/app/models/document.rb @@ -17,15 +17,16 @@ class Document < ActiveRecord::Base include Redmine::SafeAttributes + include ExpireHelper belongs_to :project belongs_to :user belongs_to :category, :class_name => "DocumentCategory", :foreign_key => "category_id" include UserScoreHelper after_save :be_user_score # user_score after_destroy :down_user_score - after_create :expire_cache - after_update :expire_cache - before_destroy :expire_cache + after_create :expire_activitie_cache + after_update :expire_activitie_cache + before_destroy :expire_activitie_cache acts_as_attachable :delete_permission => :delete_documents acts_as_searchable :columns => ['title', "#{table_name}.description"], :include => :project diff --git a/app/models/forum.rb b/app/models/forum.rb index 2157e638d..dc1603288 100644 --- a/app/models/forum.rb +++ b/app/models/forum.rb @@ -1,12 +1,13 @@ class Forum < ActiveRecord::Base include Redmine::SafeAttributes + include ExpireHelper has_many :topics, :class_name => 'Memo', :conditions => "#{Memo.table_name}.parent_id IS NULL", :order => "#{Memo.table_name}.created_at DESC", :dependent => :destroy has_many :memos, :dependent => :destroy, conditions: "parent_id IS NULL" belongs_to :creator, :class_name => "User", :foreign_key => 'creator_id' - after_create :expire_cache - after_update :expire_cache - before_destroy :expire_cache + after_create :expire_forum_cache + after_update :expire_forum_cache + before_destroy :expire_forum_cache safe_attributes 'name', 'description', 'topic_count', @@ -46,7 +47,5 @@ class Forum < ActiveRecord::Base ["id = ?", forum_id]) end - def expire_cache - ActionController::Base.new.expire_fragment('forums') - end + end diff --git a/app/models/issue.rb b/app/models/issue.rb index 17ef7b577..a7b1a5943 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -19,7 +19,7 @@ class Issue < ActiveRecord::Base include Redmine::SafeAttributes include Redmine::Utils::DateCalculation include UserScoreHelper - + include ExpireHelper belongs_to :project belongs_to :tracker belongs_to :status, :class_name => 'IssueStatus', :foreign_key => 'status_id' @@ -80,9 +80,9 @@ class Issue < ActiveRecord::Base after_create :act_as_activity,:be_user_score_new_issue after_update :be_user_score after_destroy :down_user_score - after_create :expire_cache - after_update :expire_cache - before_destroy :expire_cache + after_create :expire_activitie_cache + after_update :expire_activitie_cache + before_destroy :expire_activitie_cache # after_create :be_user_score # end @@ -1555,8 +1555,6 @@ class Issue < ActiveRecord::Base end - def expire_cache - ActionController::Base.new.expire_fragment('activities') - end + end diff --git a/app/models/journals_for_message.rb b/app/models/journals_for_message.rb index 720b0d914..c71fbaf47 100644 --- a/app/models/journals_for_message.rb +++ b/app/models/journals_for_message.rb @@ -4,6 +4,7 @@ class JournalsForMessage < ActiveRecord::Base include Redmine::SafeAttributes include UserScoreHelper + include ExpireHelper safe_attributes "jour_type", # 留言所属类型 "jour_id", # 留言所属类型的id "notes", # 留言内容 @@ -54,9 +55,9 @@ class JournalsForMessage < ActiveRecord::Base has_many :acts, :class_name => 'Activity', :as => :act, :dependent => :destroy validates :notes, presence: true - after_create :act_as_activity ,:expire_cache#huang - after_update :expire_cache - before_destroy :expire_cache + after_create :act_as_activity ,:expire_activitie_cache#huang + after_update :expire_activitie_cache + before_destroy :expire_activitie_cache after_create :reset_counters! after_destroy :reset_counters! after_save :be_user_score @@ -165,7 +166,5 @@ class JournalsForMessage < ActiveRecord::Base end end - def expire_cache - ActionController::Base.new.expire_fragment('activities') - end + end diff --git a/app/models/memo.rb b/app/models/memo.rb index 491f4e4a1..495f97ad3 100644 --- a/app/models/memo.rb +++ b/app/models/memo.rb @@ -1,6 +1,7 @@ class Memo < ActiveRecord::Base include Redmine::SafeAttributes include UserScoreHelper + include ExpireHelper belongs_to :forum belongs_to :author, :class_name => "User", :foreign_key => 'author_id' @@ -168,7 +169,7 @@ class Memo < ActiveRecord::Base update_replay_for_memo(User.current,1) end def expire_cache - ActionController::Base.new.expire_fragment('forums') - ActionController::Base.new.expire_fragment('activities') + expire_forum_cache + expire_activitie_cache end end diff --git a/app/models/message.rb b/app/models/message.rb index 21f34add2..9ce4d583a 100644 --- a/app/models/message.rb +++ b/app/models/message.rb @@ -18,7 +18,7 @@ class Message < ActiveRecord::Base include Redmine::SafeAttributes include UserScoreHelper - + include ExpireHelper belongs_to :board belongs_to :author, :class_name => 'User', :foreign_key => 'author_id' has_many :praise_tread, as: :praise_tread_object, dependent: :destroy @@ -59,9 +59,9 @@ class Message < ActiveRecord::Base validates_length_of :subject, :maximum => 255 validate :cannot_reply_to_locked_topic, :on => :create - after_create :add_author_as_watcher, :reset_counters!,:expire_cache - after_update :update_messages_board,:expire_cache - before_destroy :expire_cache + after_create :add_author_as_watcher, :reset_counters!,:expire_activitie_cache + after_update :update_messages_board,:expire_activitie_cache + before_destroy :expire_activitie_cache after_destroy :reset_counters!,:down_user_score # fq @@ -197,7 +197,5 @@ class Message < ActiveRecord::Base end end - def expire_cache - ActionController::Base.new.expire_fragment('activities') - end + end diff --git a/app/models/news.rb b/app/models/news.rb index 6567c4028..9c37719f3 100644 --- a/app/models/news.rb +++ b/app/models/news.rb @@ -17,6 +17,7 @@ class News < ActiveRecord::Base include Redmine::SafeAttributes + include ExpireHelper belongs_to :project #added by nwb belongs_to :course @@ -47,9 +48,9 @@ class News < ActiveRecord::Base # fq after_create :act_as_activity # end - after_create :expire_cache - after_update :expire_cache - before_destroy :expire_cache + after_create :expire_activitie_cache + after_update :expire_activitie_cache + before_destroy :expire_activitie_cache scope :visible, lambda {|*args| includes(:project).where(Project.allowed_to_condition(args.shift || User.current, :view_news, *args)) @@ -95,7 +96,5 @@ class News < ActiveRecord::Base self.acts << Activity.new(:user_id => self.author_id) end - def expire_cache - ActionController::Base.new.expire_fragment('activities') - end + end diff --git a/app/models/project.rb b/app/models/project.rb index aa24eb96d..c4d07a1ad 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -17,6 +17,7 @@ class Project < ActiveRecord::Base include Redmine::SafeAttributes + include ExpireHelper ProjectType_project = 0 ProjectType_course = 1 @@ -127,9 +128,9 @@ class Project < ActiveRecord::Base #after_save :update_position_under_parent, :if => Proc.new {|project| project.name_changed?} after_save :update_inherited_members, :if => Proc.new {|project| project.inherit_members_changed?} # 创建project之后默认创建一个board,之后的board去掉了board的概念 - after_create :create_board_sync,:expire_cache - after_update :expire_cache - before_destroy :delete_all_members,:expire_cache + after_create :create_board_sync,:expire_project_cache + after_update :expire_project_cache + before_destroy :delete_all_members,:expire_project_cache def remove_references_before_destroy return if self.id.nil? Watcher.delete_all ['watchable_id = ?', id] @@ -1150,8 +1151,6 @@ class Project < ActiveRecord::Base end end - def expire_cache - ActionController::Base.new.expire_fragment('projects') - end + end diff --git a/public/cache/1DB/8A2/http%3A%2F%2Flocalhost%3A3000%2Fthemes%2Fredpenny-master%2Fstylesheets%2Fapplication.css%3F1420357855%3D b/public/cache/1DB/8A2/http%3A%2F%2Flocalhost%3A3000%2Fthemes%2Fredpenny-master%2Fstylesheets%2Fapplication.css%3F1420357855%3D deleted file mode 100644 index 5dc67c6c1f954ad7950b43f0c554f5085c2133b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2125 zcmb_dTaTMo5RO*SCTW^Y(oM6is#XXoQWC9gF2>kiMGb~yjMsn{V`DoHh|9sS#y|{S zU-Db~)IZW=u#@!i6jhcmXXcxkZ-$vU_aDYhjB~Q!4h~jH5-+o6leZinHk%;ImfJ_o zXYZYOkt|`FLbr`haFYb+WCjtj*DaxyLD#f0?}DsS1VhsdRV@=$imelk=HvHwR=9%r z$)6AIKg3V|K+g}SA0B-AO~PM_oDK|bVoHh*v^K|s)8;8?OZfM^C{@TZd3tpZozD84 z-a(kQTAb^Z%!dn@R+i9BU=(dj3oFgwvXW-o5T-taSz57@Bn%uY3*xBkq-kOK{ALKW zi8;_UNf8Ut(>-OHVe1T22%c#`R&`)OjwxFZz6mB1ncH ziRw*%GL-Oh4WK9k-IRgeQH31!Py~8zTxf=xRKyzlS(Y>_l`wX!(2vusNfQL|4e9;< zuPg?x)?8vtztw67FrpQHaB(O0!RM+twlXH_U)9L)Qgs;j)(E2K|4 zy59ft!H%GT+SUzDI}mtlfYvf_<_JfZN$j<@vbX5HQKl=Xf^>-_OBD5{aCo+NXnwBp z`DcoGfh7DzuIE)n0lY4$%H9fpI)^YRSs`jnTh!DskoZQ~5m0h@yDTz`RGNTG%IK2fs<+dA61&5S%Kuq-E zb}Aqi>()NX&6rYl&SL7hVq-Zqs(Cad-zam^mpk2--EQ@4-635u-3)~}GhHZxDz>*; z80rco-60G^cC0xR_)Y)cX z85;ssX9w3)RFTcjHM$?ChC;M%Q%;N0jyfan9C5To6}fZf^Pm+KJk?o7O^gjW9V>PV z$vJLc#Ys&t+^tQI)?=#6$U>}5s7C4<!6jikxn({2yvk8}>Awzo5rK=9ZLY8XO9r_A0&14yS zK^R2ul2^2l9lIE9mcd~h-~Wn)$6dJJ;KgKr`|^INYLX}^T+eI|d%Z6n`Tt{I{*sT8 z)HY=_Ky3*K=0H-=eUx87ht+v;#3-r)OqtX9Lr%H=(_;z$p@%M_k{r8%7eKc##s{nD z5+kZu*NU+HRe=#~lOdW6gNgEC!9M5XD1%W}(zgjL%$^+ARdGB&B6={IWqu+2u1d00 zt$6=&TslI8UW|qFis%^=7sDh4PbeX^>gj>Tt6@q>3BjF91Pl$p8QV diff --git a/public/cache/20C/451/http%3A%2F%2Flocalhost%3A3000%2Fimages%2Flist-icon.png%3F b/public/cache/20C/451/http%3A%2F%2Flocalhost%3A3000%2Fimages%2Flist-icon.png%3F deleted file mode 100644 index 69b6cab42e65ae7cc15e45c80c9517b8bce0379c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2009 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 BE_(m~ diff --git a/public/cache/51F/CA1/http%3A%2F%2Flocalhost%3A3000%2Fstylesheets%2Fnyan.css%3F1420357855%3D b/public/cache/51F/CA1/http%3A%2F%2Flocalhost%3A3000%2Fstylesheets%2Fnyan.css%3F1420357855%3D deleted file mode 100644 index f5ad1a5994060d5cf7c59a1152af7cf8bdf1f6e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2005 zcma)7`;Xd25Ux(q<z z@Dqr>Kb(Ge_~{P`e<^Z0Ft~{+DLT;F91l*}Q_z<1A9zu!kY)1p`a85b?{j(wVcKf3 z{J5e|49_$mt2!__LD2RV z{G6ofWdeOj2|qeJ>Ojw(FZz6mB1ncHiRx{CGL-NO4WL~Hx+w#_qY63dOayu!TzH0> zRP4oiS(dPsN*Fs<=*4Nq(gZ<#^8kPTi|2sXq`qz{oD7O=-xWX420$AD?JLLm=lp+1 z^i?fCg@ixa?^`%u9K!pWs;j)(E38jCy59dH`Vllx+q%JN2Lf*m&|3OVfN*q~#9nJF zdyD=z%X9^4M3+diL{V>wgy;K&=4Tx*K2yvkknk6|pH~$H@VcZb`zZWr0AW(HLR5@M z&K$w>cbSRS(fl?qp%JI$*L#x7+3GB7uM{c}M zF-6B}W%3#`RHIgXgKzj@)_pY$e4v$PR_%C0b(*z2y z3Wwswf1dCBiQJqiQ+9Kfnme-Z$$(<{P+4Oc&=fE_* zS-bk;CL0b0(#>S7CAKjX)pbj>`LqL)S5#{`+GnGc(4m#YrkEllLZFCna(BB{cHu&% zBuZJxj4FiT^bYKlyKXoY98%T+G0}(Hseo9lTl-yZ$CR>j7Sow4HkVVQn(v0}8zmq; zxzlag?N-m$9nuxk%}@xK=|T}yvAxy8P**7F9`Vpeq8r%+dGB_-m97)V95>E*6gp9m zui-kV33O{~Q%N|XHN;y>xP)t|^UcCCHUv^<2iH@i$Y$pn-H%g4AzF7Sr$uQ;os;*D zINBmb?wug;TT#JNooCd<*pSn)Vz-c;9S_ooY55`WiFMWEs!=(2w3FuV^7VRxz3^gF`#M{~Z~R({4Y7i_ZS9 z0sKj>ZkiMU5fyL|MePrSFArfwpn~g{ z{`2<)ZJWy_cNY_NWw%R>uUVU)l zWwL^43f(r6;5G@6WCjs&u&tn#LD#f0?bdd7fGbf1NfRVdy&FtN5`L`-DE3e{WkK(#e2%&h1wD5zEF(=S z&Z_xYmNYAsFm|lakJGFP2!i-`_E$qrlLoq}u(D7@I*}g=+E~!OF!6+h=Ho* z8A$k(!w~Y=K7od6TQ^wkNZ_3zv{r$$KsZn)u{YY<-l6}E zGN_>XfD%cTDC%ty@bVDQ{8Gc~FBJ3iCHzHh=Tt=zI9*begBSke0>Y$Zg{TQpDRTtN zal)XuhgTWgW)*b3H}5L%Za=-xZ>xwiLP?pdC@2N;lN|4ZFtjRknZVu{LFC4p6jOAp zRwi#TLp5sEw-}3h1{%=r1zCj#Oc~U$H@%K7_iwN;SU^mK&LVz`asDb^!U|}h?x08p zrAuQ&%d=L&(M!Ug=S(%BEoef~Pvw8UbSGY~QkYii^@@*zZsOHK!hiiHPg77hl|QyC z{>ywHBsZ7~y%5dT4VJo&|2KS}Rm2fWJTKq%-Y;>=&EC(8Q$LlEQ`MeSAkJQ$nJefn zg9w_4NQ&m=eT(%OURVTtXS|!p#zk}rsyIfLLiTDdVjZ3_Tf^dBuZJz zw91F!>|WR__uX*DJEW`e;cW;|lCX&p|vn^4N$S1MtMYem_=zf|R3embxSuILC>YRLV#PJSQ zu=UROcBrHMZnzqS!5@XW2s)r#0SicQzPrCRCS}`B}}93&P1_zFd*{is7BoZx0q=rtJn*|AbOv?27GqvVzgO?$8r4dJ5ruD-C_L}ll>ny?@Lva zL`h-$W_#4{|1a0y@@bITri|vGEeX6iloa$P -

    -
    - - 更新于 - 2015-01-06 16:29 - - - 楼主: - net - - - 最后回复: - lzl - - - 回复 - (1) - -
    - -
  • - -
    - - 更新于 - 2015-01-06 16:28 - - - 楼主: - xDong - - - 最后回复: - lzl - - - 回复 - (2) - -
    -
  • -
  • - -
    - - 更新于 - 2015-01-06 16:27 - - - 楼主: - jacknudt - - - 最后回复: - lzl - - - 回复 - (9) - -
    -
  • -
  • - -
    - - 更新于 - 2014-11-28 13:43 - - - 楼主: - jacknudt - - - 最后回复: - jacknudt - - - 回复 - (3) - -
    -
  • -
  • - -
    - - 更新于 - 2014-11-27 06:22 - - - 楼主: - gaoli - - - 最后回复: - jacknudt - - - 回复 - (2) - -
    -
  • -
  • - -
    - - 更新于 - 2014-11-25 18:48 - - - 楼主: - freedom - - - 最后回复: - jacknudt - - - 回复 - (1) - -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/5AA/681/http%3A%2F%2Flocalhost%3A3000%2Fimages%2Favatars%2FUser%2F0%3F1420357778%3D b/public/cache/5AA/681/http%3A%2F%2Flocalhost%3A3000%2Fimages%2Favatars%2FUser%2F0%3F1420357778%3D deleted file mode 100644 index c07b3d1fcdd7ba7bf97e75ee0e863d28381ffb6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2001 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 diff --git a/public/cache/636/EF0/views%2Fprojects b/public/cache/636/EF0/views%2Fprojects deleted file mode 100644 index 231045423..000000000 --- a/public/cache/636/EF0/views%2Fprojects +++ /dev/null @@ -1,185 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420531897.9176939: @value"3I"3

  • -
    - 0?1420357778 -
    - - -
    - - SocialForge是TrustieForge的升级版,支持社交化协同开发与合作。 -SocialForge aims to provide a socialized an... - -
    -
    - 项目评分:28736 -
    -
  • -
  • -
    - 0?1420357778 -
    - -
    - Bench4Q - (7人) -
    -
    - - Bench4Q is a Cloud-Based software - -
    -
    - 项目评分:8158 -
    -
  • -
  • -
    - 0?1420357778 -
    - -
    - haflow - (5人) -
    -
    - - Hadoop has become the defacto standard of big data analysis, due to its scalability, fa... - -
    -
    - 项目评分:1535 -
    -
  • -
  • -
    - 0?1420357778 -
    - - -
    - - Btrplace is the flexible VM placement algorithm inside Entropy. It allows to compute th... - -
    -
    - 项目评分:1036 -
    -
  • -
  • -
    - 0?1420357778 -
    - - -
    - - This project is to build an platform for OSS Evaluating, Analying and Networking. This ... - -
    -
    - 项目评分:884 -
    -
  • -
  • -
    - 0?1420357778 -
    - - -
    - - To improve the performance of Service4All, we will employ the widely-used cache tools s... - -
    -
    - 项目评分:420 -
    -
  • -
  • -
    - 0?1420357778 -
    - -
    - WDMVC - (10人) -
    -
    - - 基于工作流的分布式MVC软件体系结构,支撑软件开发的“三线”工程(生产线、流水线和产品线)。 -详见项目Wiki。 - -
    -
    - 项目评分:359 -
    -
  • -
  • -
    - 0?1420357778 -
    - -
    - VMThunder - (1人) -
    -
    - - 数据中心中大规模快速部署虚拟机,达到秒级启动上千台虚拟机的目标 - -
    -
    - 项目评分:340 -
    -
  • -
  • -
    - 0?1420357778 -
    - - -
    - - forked 4rom webmagic - -
    -
    - 项目评分:284 -
    -
  • -
  • -
    - 0?1420357778 -
    - -
    - WSCRP - (5人) -
    -
    - - In order to meet the requirements of users, sorts of Web services coordination and reco... - -
    -
    - 项目评分:284 -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/655/921/http%3A%2F%2Flocalhost%3A3000%2Fstylesheets%2Fwelcome.css%3F1420357855%3D b/public/cache/655/921/http%3A%2F%2Flocalhost%3A3000%2Fstylesheets%2Fwelcome.css%3F1420357855%3D deleted file mode 100644 index 53fc3675aeb31284a9c016b0823359bc7b5d613f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2050 zcma)7Yj4_E5UrvrO}E>$-Sn}mRkfC-mC`7HAK1o3QEO~tOt4Li!9YJ)eq6x87#ExH z=+D?s`)~K+3vKtMT_J_snKLuz9%kk~JegN9!Oy~b&{-zQe34bFqU%pUwJOKiV)MBA z{DVKAB@2+IAgIF=SSKMoIblrfd<)=aAaLAl^qMSF1Vhthnk-Uff@bLIlMnZ9v;_Fk z?~fjy;77l~zaNi3KKlHNioaF_OSXl9qw1Dy)&)^Mt{%&E75`pT)Dl@FkFOrU(`j3< z8W2-A(D`jC%{CE8Cjew=X$2xk4ix<~MeY~3UD+Hs9m`a81(}}hXweK;VHjk1ZpxZr z$&MgN=FWnjk`z}Y;D=Q4gR^0DtlassEfy$(WC)Td-?j%`6+bg&Sfyh*nrt-;DMy_s zvXuuTPuEmYt?NmaCDl?Xn)_}vnWtHmCJ5r+?(qI^R6C-nwk<~&G#Mp)fWDr0WV0um z-#AXcl=w5EZJ7B*RQ&O-G;+S&hqq0`GDM?=tWO)3)&45|0n{<-mMxfj0vEPiTZH}; z;^-oYotsN<1OMlXbP38t7f7-|QSVT~(_KR6i z?Xce*x%RDMjE8k|HWkC#q^XXRyFiJu;q8DEUYg(DEXvj$;80w zZiW)%u&V89-1aGb>(7RxK;aidyPVg8_O(7GCt9Of^Xj#hXZd8Hr0cFUWrj0dGL-tp zj3P^?)O*Oo>M23&5#)W)m@F-eIOMqT`@P7Ir}-JIrmRHQHXfBk1KNbV%|u9qnlWC_ zTzgGGZMI-FgnF#Ef!+Kxv~{9(mkMT_HjFWO?<>6x)Z^ZtPQzM^cpBr38rW-c*w?)p zv_XJTaQAff1N-4EG#*ysZd;?-|Bpre+Avi`)rFQ*@3vZB!_NQrZu~hP z2es~Ka1iRMEIA!jhp$NfZ0y%0S|1Rj8@lXhf+gkxVdxFBo45c#q=!vR7ewxX>jy l?I^GDvRhp}k -
    - 0?1420357778 -
    -
    - - lzl - -  发表了缺陷缺陷 缓存测试1#1 (新增): 多发点 -

    - - 更新于 - 2015-01-06 16:11 - -       - - 回复(0) - -

    -
    - -:ET \ No newline at end of file diff --git a/public/cache/6CB/680/views%2Fissues%2F2211 b/public/cache/6CB/680/views%2Fissues%2F2211 deleted file mode 100644 index 28133a2c0..000000000 --- a/public/cache/6CB/680/views%2Fissues%2F2211 +++ /dev/null @@ -1,22 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420531979.264571: @value"I"
  • -
    - 0?1420357778 -
    -
    - - lzl - -  发表了缺陷缺陷 缓存测试1#2 (新增): 哈哈哈 -

    - - 更新于 - 2015-01-06 16:12 - -       - - 回复(0) - -

    -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/6D1/6D0/views%2Fissues%2F2208 b/public/cache/6D1/6D0/views%2Fissues%2F2208 deleted file mode 100644 index 031a3fd44..000000000 --- a/public/cache/6D1/6D0/views%2Fissues%2F2208 +++ /dev/null @@ -1,22 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.359701: @value"I"
  • -
    - 0?1420357778 -
    -
    - - lizanle - -  发表了缺陷缺陷 缓存测试#1 (新增): 多发点 -

    - - 更新于 - 2015-01-05 14:20 - -       - - 回复(0) - -

    -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/6D2/6E0/views%2Fissues%2F2209 b/public/cache/6D2/6E0/views%2Fissues%2F2209 deleted file mode 100644 index 59eb90bdf..000000000 --- a/public/cache/6D2/6E0/views%2Fissues%2F2209 +++ /dev/null @@ -1,22 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.3486998: @value"I"
  • -
    - 0?1420357778 -
    -
    - - lizanle - -  发表了缺陷缺陷 缓存测试#2 (新增): 发货 -

    - - 更新于 - 2015-01-05 14:28 - -       - - 回复(3) - -

    -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/6E2/DF1/http%3A%2F%2Flocalhost%3A3000%2Fimages%2Favatars%2FProject%2F0%3F1420357778%3D b/public/cache/6E2/DF1/http%3A%2F%2Flocalhost%3A3000%2Fimages%2Favatars%2FProject%2F0%3F1420357778%3D deleted file mode 100644 index b83e413aa031a3b6736d0ee3aa1f2bc08d74ae37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2003 zcma)7`;VGf6mBNXbh_P6AJcZXX|^FGn{=8{xm=OaNq38Yh$G-2irOCtkE=2wP{Hxh ze}1o^ZTFSkm;-`T0XNJ^bWbc@`yMCJZxH$71wT3thzRVg<;+3|u5%d(fb;i)bvnju=8 zAm}>_c?xK@NZ}ul$%C`0b&bsVqQe(x3NRF)$~T>1PbSZF5m)INmLeKWO~_Cul4xYX zxu>Vgd9B~3X&To`r66+cU>YT94N?^KubcS&Z(O^)E_Vz|pzS@eiP`)-X&?-xGLmiuHx>&M*!Z z0r5^>Ivf06Ey5Dk2^Ih-(DZqp@N}2Z`l{vGSBjYoGWjC&^O~xPydi7qE{c3ILntoT z0X~yh(hR}zyx7UV$Ls6>lvc=zFW#5lUw!^S6)z8&dU#tFCy8o~{j5Y=KM3p+Q>2J@ zrXPCIDj`&Zs1(5!VQOZjd`@t293T@p*M3@JAX|hL;@x%AP}&zn;Li{tA$Jy?6Z~`$ z%~1(f@j0OZi#N;=U3+XV{C$*6KFhf3Vnfu${A9iP=g%*bufN-tC91q8?9VIt^JMGC z7len#0q(2|BJtemU+`^Cm3nxWnObMtX@OTSw$p)nq#qaF(snYE}_oedEw^ zFoZhht;bx<)wRibZkuZgYqLeG5!Pe9^~~1ik*QMk+l14@q^V87oh$V>SdTk*HuLLY z&QqJD^w3;`(Li!E!(|Q^)LY6|7-n9&BBR z`GIQe%=G{@s#^!P@|rl8AO$lG+g)18_!n@mK^xlR%QB=Xn{gf2K@iz23xI=w<3Ttc zBM8~?6=7NNA{zUFAAX2`g+h8buy~Ag_r3S=7i>I?x83N?+xWkx?ki1~C0XU#R-@N$ ze~UZ+|AX#L)(~>TQgACYWKpoXvWhQ->=xM1yq^vjRZ~Sv;S7GyFY|wSB$LnEc9Is9 z$n(cO^73G^y9_S~s!X)(kl0Off?{jsY7JfzlCqzS&-f@zQJ5BtO^oueCn;K|r8uzt zFgKhXFl`i0(rIq|0e~tj=kG5Eg#$$J@g0@!%w(ZLF%=fD5LC*x4aO|vQsXKE*h|PD y$EC*}eo)9|@O&0<$LG07V~Km8s(eTKvIfgF8hj)Dcu?r3cDhXRkP|u|?tcLOoHaH8 diff --git a/public/cache/701/020/views%2Factivities b/public/cache/701/020/views%2Factivities deleted file mode 100644 index 3e6a324ff..000000000 --- a/public/cache/701/020/views%2Factivities +++ /dev/null @@ -1,127 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420532949.9541981: @value"!I"!
  • -
    - 0?1420357778 -
    -
    - - lzl - -  发表了缺陷缺陷 缓存测试1#2 (新增): 哈哈哈 -

    - - 更新于 - 2015-01-06 16:12 - -       - - 回复(0) - -

    -
    -
  • -
  • -
    - 0?1420357778 -
    -
    - - lzl - -  发表了缺陷缺陷 缓存测试1#1 (新增): 多发点 -

    - - 更新于 - 2015-01-06 16:11 - -       - - 回复(0) - -

    -
    -
  • -
  • -
    - 0?1420357778 -
    -
    - - lizanle - -  更新了问题说明缺陷 #2: 发货 -

    - - 更新于 - 2015-01-06 11:42 - -       - - - -

    -
    -
  • -
  • -
    - 0?1420357778 -
    -
    - - lizanle - -  更新了问题说明缺陷 #2: 发货 -

    - - 更新于 - 2015-01-06 11:17 - -       - - - -

    -
    -
  • -
  • -
    - 0?1420357778 -
    -
    - - lizanle - -  更新了问题说明缺陷 #2: 发货 -

    - - 更新于 - 2015-01-05 15:25 - -       - - - -

    -
    -
  • -
  • -
    - 0?1420357778 -
    -
    - - lizanle - -  发表了缺陷缺陷 缓存测试#2 (新增): 发货 -

    - - 更新于 - 2015-01-05 14:28 - -       - - 回复(3) - -

    -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/705/AF0/views%2Fprojects%2F2 b/public/cache/705/AF0/views%2Fprojects%2F2 deleted file mode 100644 index 90f86c1c2..000000000 --- a/public/cache/705/AF0/views%2Fprojects%2F2 +++ /dev/null @@ -1,21 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530700.9076748: @value"~I"r
  • -
    - 0?1420357778 -
    - - -
    - - SocialForge是TrustieForge的升级版,支持社交化协同开发与合作。 -SocialForge aims to provide a socialized an... - -
    -
    - 项目评分:28736 -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/73B/E90/views%2Fprojects%2F17 b/public/cache/73B/E90/views%2Fprojects%2F17 deleted file mode 100644 index 50230b720..000000000 --- a/public/cache/73B/E90/views%2Fprojects%2F17 +++ /dev/null @@ -1,19 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530700.956678: @value""I"
  • -
    - 0?1420357778 -
    - -
    - Bench4Q - (7人) -
    -
    - - Bench4Q is a Cloud-Based software - -
    -
    - 项目评分:8158 -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/73D/EC0/views%2Fprojects%2F28 b/public/cache/73D/EC0/views%2Fprojects%2F28 deleted file mode 100644 index 43fd553d6..000000000 --- a/public/cache/73D/EC0/views%2Fprojects%2F28 +++ /dev/null @@ -1,19 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530700.988679: @value"DI"8
  • -
    - 0?1420357778 -
    - - -
    - - Btrplace is the flexible VM placement algorithm inside Entropy. It allows to compute th... - -
    -
    - 项目评分:1036 -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/73E/ED0/views%2Fprojects%2F29 b/public/cache/73E/ED0/views%2Fprojects%2F29 deleted file mode 100644 index c1b2bf3fb..000000000 --- a/public/cache/73E/ED0/views%2Fprojects%2F29 +++ /dev/null @@ -1,21 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.036682: @value" I"
  • -
    - 0?1420357778 -
    - -
    - WDMVC - (10人) -
    -
    - - 基于工作流的分布式MVC软件体系结构,支撑软件开发的“三线”工程(生产线、流水线和产品线)。 -详见项目Wiki。 - -
    -
    - 项目评分:359 -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/766/4C0/views%2Fprojects%2F300 b/public/cache/766/4C0/views%2Fprojects%2F300 deleted file mode 100644 index 2b128443f..000000000 --- a/public/cache/766/4C0/views%2Fprojects%2F300 +++ /dev/null @@ -1,19 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.1366882: @value"I"
  • -
    - 0?1420357778 -
    - - -
    - - forked 4rom webmagic - -
    -
    - 项目评分:284 -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/769/520/views%2Fprojects%2F330 b/public/cache/769/520/views%2Fprojects%2F330 deleted file mode 100644 index 6f0b5a3bf..000000000 --- a/public/cache/769/520/views%2Fprojects%2F330 +++ /dev/null @@ -1,19 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.159689: @value"YI"M
  • -
    - 0?1420357778 -
    - -
    - WSCRP - (5人) -
    -
    - - In order to meet the requirements of users, sorts of Web services coordination and reco... - -
    -
    - 项目评分:284 -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/76B/500/views%2Fprojects%2F134 b/public/cache/76B/500/views%2Fprojects%2F134 deleted file mode 100644 index 9499b1df1..000000000 --- a/public/cache/76B/500/views%2Fprojects%2F134 +++ /dev/null @@ -1,19 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.057683: @value"I"
  • -
    - 0?1420357778 -
    - -
    - VMThunder - (1人) -
    -
    - - 数据中心中大规模快速部署虚拟机,达到秒级启动上千台虚拟机的目标 - -
    -
    - 项目评分:340 -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/76C/530/views%2Fprojects%2F315 b/public/cache/76C/530/views%2Fprojects%2F315 deleted file mode 100644 index 05c521a66..000000000 --- a/public/cache/76C/530/views%2Fprojects%2F315 +++ /dev/null @@ -1,19 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530700.970678: @value"QI"E
  • -
    - 0?1420357778 -
    - -
    - haflow - (5人) -
    -
    - - Hadoop has become the defacto standard of big data analysis, due to its scalability, fa... - -
    -
    - 项目评分:1535 -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/76E/5B0/views%2Fprojects%2F290 b/public/cache/76E/5B0/views%2Fprojects%2F290 deleted file mode 100644 index 1c565e3c4..000000000 --- a/public/cache/76E/5B0/views%2Fprojects%2F290 +++ /dev/null @@ -1,19 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.020681: @value"I"
  • -
    - 0?1420357778 -
    - - -
    - - To improve the performance of Service4All, we will employ the widely-used cache tools s... - -
    -
    - 项目评分:420 -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/777/640/views%2Fprojects%2F299 b/public/cache/777/640/views%2Fprojects%2F299 deleted file mode 100644 index 2fcdf1bcf..000000000 --- a/public/cache/777/640/views%2Fprojects%2F299 +++ /dev/null @@ -1,19 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.00468: @value"%I"
  • -
    - 0?1420357778 -
    - - -
    - - This project is to build an platform for OSS Evaluating, Analying and Networking. This ... - -
    -
    - 项目评分:884 -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/77E/D81/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fapplication.js%3F1420357855%3D b/public/cache/77E/D81/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fapplication.js%3F1420357855%3D deleted file mode 100644 index ca5d797b7d468438dc9b632e9332ef8df31492b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2026 zcmb7F>yO$-5RXpL<{Tu zLHenGc^4a!>qD(7Bw%NLGxM9-nc4d%VU^&V#9N`xGK#`QQmyiqGeOlV43fp>VfE>i z6V9Urieu!~@d@2V9zK~~K<#u3WF^Qotz`6qE;1Ag0Lv8f6jLgdtB7{DeSCQjpHADH-oTi; znw^Ql)LL1wv+$xME?80IdybWOVUVB38RFSZ7it5uqid2PW}+uMVt_4`SvC_q)u62E z(BuR`+eye%nknTe{GlcCplqleJykw$^Erm1S&F8LH|;@JBF{94qjYprhI&I4Qq+kE z_0%}ibTui9bu~$ns9Grap=0@zFixs~qNsmK4E)d9{^EA2)Qp{p|t{ppIJC4Nlt=cyGYk!gFRA z2l6!WR$JN|{J)Y11zahRqv;&OyvrP(?i`w5t9ka7Vp<4^e4grgRZ$?XORBQ7BA?6< zigK2Z+Y%QwMQ}V1+u4nryf3^z7^nzfz4CITf+<7a2*qhPF&>a zOTti%i{d+i!+nDcWM6wpfd!>JxFFtMH*~pmPWavo5h8MC;X8t#EW$Y|fC_F5hA!d! zSfXQ%tcAC?lE`N%H4WCG2D4Vm|MPu2;c^k9xKJ(^CfMmZT+Af$r#p$6P~lZ!-?QY8 zdGGXcW_ESbnR_=!x8D z*6ez%W$O;@it%k%n6bmTBB)}0qxrtBFwzS1(0igA*c82T80w{7Ygo>4yDAPY1jF6fpttTbO;#2{ZNOAw*PxeuhMm|( zZ!6;(*604#0hk|MiR`)Nqk3g)gJu>J`w~Qdree9n$SMC^&b_c*Fk+aZ~=aqm8vXNWm!U$_Z#vV9|j2ulAOMY zP-gb}&O>u2kxY4Zz_(B^P9~Y~JBFgb{tbK4&mACwH%4)?gOE8?sem$K04iB!b~FNR z5zvS#vY=da9JgF_kyQZ>!n6EPz&jxGOX^F!4XBGd36!g#TrC#ACGfbP>m*jP+&_pX In99!h4?jvm*Z=?k diff --git a/public/cache/7AC/380/views%2Fjournals%2F5295 b/public/cache/7AC/380/views%2Fjournals%2F5295 deleted file mode 100644 index 6c1f6f32d..000000000 --- a/public/cache/7AC/380/views%2Fjournals%2F5295 +++ /dev/null @@ -1,22 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.596714: @value"I"
  • -
    - 0?1420357778 -
    -
    - - sw - -  更新了issue-edit缺陷 #1639 (已解决): 课程--加入课程:“加入课程”按钮显示问题 -

    - - 更新于 - 2014-12-02 17:36 - -       - - - -

    -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/7AD/390/views%2Fjournals%2F5296 b/public/cache/7AD/390/views%2Fjournals%2F5296 deleted file mode 100644 index fe3157fbe..000000000 --- a/public/cache/7AD/390/views%2Fjournals%2F5296 +++ /dev/null @@ -1,22 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.330699: @value"iI"]
  • -
    - 0?1420357778 -
    -
    - - lizanle - -  更新了问题说明缺陷 #2: 发货 -

    - - 更新于 - 2015-01-05 15:25 - -       - - - -

    -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/7AE/3A0/views%2Fjournals%2F5297 b/public/cache/7AE/3A0/views%2Fjournals%2F5297 deleted file mode 100644 index 20cf23406..000000000 --- a/public/cache/7AE/3A0/views%2Fjournals%2F5297 +++ /dev/null @@ -1,22 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.240694: @value"iI"]
  • -
    - 0?1420357778 -
    -
    - - lizanle - -  更新了问题说明缺陷 #2: 发货 -

    - - 更新于 - 2015-01-06 11:17 - -       - - - -

    -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/7AF/3B0/views%2Fjournals%2F5298 b/public/cache/7AF/3B0/views%2Fjournals%2F5298 deleted file mode 100644 index 562aa84ca..000000000 --- a/public/cache/7AF/3B0/views%2Fjournals%2F5298 +++ /dev/null @@ -1,22 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.232693: @value"iI"]
  • -
    - 0?1420357778 -
    -
    - - lizanle - -  更新了问题说明缺陷 #2: 发货 -

    - - 更新于 - 2015-01-06 11:42 - -       - - - -

    -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/911/800/views%2Fmemos%2F427-20150106032234 b/public/cache/911/800/views%2Fmemos%2F427-20150106032234 deleted file mode 100644 index a16d8d491..000000000 --- a/public/cache/911/800/views%2Fmemos%2F427-20150106032234 +++ /dev/null @@ -1,25 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.628716: @value"I"
  • - -
    - - 更新于 - 2015-01-06 11:22 - - - 楼主: - jacknudt - - - 最后回复: - lizanle - - - 回复 - (8) - -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/918/A60/views%2Fmemos%2F427-20150106082740 b/public/cache/918/A60/views%2Fmemos%2F427-20150106082740 deleted file mode 100644 index f389b06fb..000000000 --- a/public/cache/918/A60/views%2Fmemos%2F427-20150106082740 +++ /dev/null @@ -1,25 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420532863.155922: @value"I"
  • - -
    - - 更新于 - 2015-01-06 16:27 - - - 楼主: - jacknudt - - - 最后回复: - lzl - - - 回复 - (9) - -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/919/DB0/views%2Fmemos%2F582-20141129071403 b/public/cache/919/DB0/views%2Fmemos%2F582-20141129071403 deleted file mode 100644 index 26cb4e5e4..000000000 --- a/public/cache/919/DB0/views%2Fmemos%2F582-20141129071403 +++ /dev/null @@ -1,25 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.640717: @value"I"
  • - -
    - - 更新于 - 2014-11-29 15:14 - - - 楼主: - xDong - - - 最后回复: - jacknudt - - - 回复 - (1) - -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/91A/D00/views%2Fmemos%2F574-20141125104842 b/public/cache/91A/D00/views%2Fmemos%2F574-20141125104842 deleted file mode 100644 index e101b51fd..000000000 --- a/public/cache/91A/D00/views%2Fmemos%2F574-20141125104842 +++ /dev/null @@ -1,25 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.720721: @value"I"
  • - -
    - - 更新于 - 2014-11-25 18:48 - - - 楼主: - freedom - - - 最后回复: - jacknudt - - - 回复 - (1) - -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/91A/E50/views%2Fmemos%2F565-20141128054331 b/public/cache/91A/E50/views%2Fmemos%2F565-20141128054331 deleted file mode 100644 index 2bcd02c79..000000000 --- a/public/cache/91A/E50/views%2Fmemos%2F565-20141128054331 +++ /dev/null @@ -1,25 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.649717: @value"I"
  • - -
    - - 更新于 - 2014-11-28 13:43 - - - 楼主: - jacknudt - - - 最后回复: - jacknudt - - - 回复 - (3) - -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/91B/EF0/views%2Fmemos%2F576-20141126222236 b/public/cache/91B/EF0/views%2Fmemos%2F576-20141126222236 deleted file mode 100644 index 9615a9e21..000000000 --- a/public/cache/91B/EF0/views%2Fmemos%2F576-20141126222236 +++ /dev/null @@ -1,25 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.710721: @value"I"
  • - -
    - - 更新于 - 2014-11-27 06:22 - - - 楼主: - gaoli - - - 最后回复: - jacknudt - - - 回复 - (2) - -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/91C/170/views%2Fmemos%2F579-20141127101435 b/public/cache/91C/170/views%2Fmemos%2F579-20141127101435 deleted file mode 100644 index 931c245b2..000000000 --- a/public/cache/91C/170/views%2Fmemos%2F579-20141127101435 +++ /dev/null @@ -1,23 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420530701.70172: @value"I" 
  • - -
    - - 更新于 - 2014-11-27 18:14 - - - 楼主: - net - - - - - 回复 - (0) - -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/91D/D30/views%2Fmemos%2F582-20150106082842 b/public/cache/91D/D30/views%2Fmemos%2F582-20150106082842 deleted file mode 100644 index 6532134a1..000000000 --- a/public/cache/91D/D30/views%2Fmemos%2F582-20150106082842 +++ /dev/null @@ -1,25 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420532924.8643541: @value"I"
  • - -
    - - 更新于 - 2015-01-06 16:28 - - - 楼主: - xDong - - - 最后回复: - lzl - - - 回复 - (2) - -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/925/320/views%2Fmemos%2F579-20150106082907 b/public/cache/925/320/views%2Fmemos%2F579-20150106082907 deleted file mode 100644 index c21c69db0..000000000 --- a/public/cache/925/320/views%2Fmemos%2F579-20150106082907 +++ /dev/null @@ -1,25 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420532950.004201: @value"I"
  • - -
    - - 更新于 - 2015-01-06 16:29 - - - 楼主: - net - - - 最后回复: - lzl - - - 回复 - (1) - -
    -
  • -:ET \ No newline at end of file diff --git a/public/cache/9B3/1B0/cae6965b71862532cc646d5995119a5821980260 b/public/cache/9B3/1B0/cae6965b71862532cc646d5995119a5821980260 deleted file mode 100644 index 41e21d0e5f6262729bd1b98cd0aafedb568057b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6735 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 diff --git a/public/cache/9E6/E80/0906d39339d5f71e61207417e8c95f43c783442e b/public/cache/9E6/E80/0906d39339d5f71e61207417e8c95f43c783442e deleted file mode 100644 index e9b89fb59a817ffa929b5b728f2ab9f1c9cea3d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3017 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 p)Ccth6m>OH0tul1I{y+7sor(Ye diff --git a/public/cache/A91/6A1/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fjquery.colorbox-min.js%3F1420357855%3D b/public/cache/A91/6A1/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fjquery.colorbox-min.js%3F1420357855%3D deleted file mode 100644 index 168798e848cf86f7f723752762b188b7e42c77af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2059 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 diff --git a/public/cache/AA5/BD0/e8d35b3dc5255332a9a7f5c7d92c79635729fb41 b/public/cache/AA5/BD0/e8d35b3dc5255332a9a7f5c7d92c79635729fb41 deleted file mode 100644 index 6b24ea5e4..000000000 --- a/public/cache/AA5/BD0/e8d35b3dc5255332a9a7f5c7d92c79635729fb41 +++ /dev/null @@ -1,25 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420532735.173789: @value"["$(document).ready(function(){ - $(".rateable").jRating({ - //default options displayed below -> - - rateMax: 5, //Maximal rate - length : 5, //Number of stars - //decimalLength : 0, //Number of decimals in the rate - //type : 'big', //Big or small - //step : true, //If set to true, filling of the stars is done star by star (step by step). - //isDisabled: false, //Set true to display static rating - //showRateInfo:false, //Rate info panel, set true to display - //rateInfosX : 45, //In pixel - Absolute left position of the information box during mousemove. - //rateInfosY : 5, //In pixel - Absolute top position of the information box during mousemove. - path : '/rateable/ratings', - onSuccess : function(element, rate){ - //something like -> - //alert('本次打分成功!'); - //$('Thanks for rating!').insertAfter(element) - }, - onError : function(element, rate) { - $('You have already rated!').insertAfter(element) - } - }); - -}); diff --git a/public/cache/ABB/FD1/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fjquery.leanModal.min.js%3F1420357778%3D b/public/cache/ABB/FD1/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fjquery.leanModal.min.js%3F1420357778%3D deleted file mode 100644 index 8cb8c8bd223d40104b182d3c054a45992406ea5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2062 zcmbVNZI7B*6mBNXbSB+S+nsK^n`SqJq)De4l@}3p(rgi~h$G-2irNo^m#d-(4B$B0 zAG4qKf9@5uoqhSRyCDJYInO!gIp^MU?&FiNj&V-v-ND`}io!Up*LlmC!FnA8X}meD zzxd>Y%P59P0^KHB!TZQVE7J>zoi2t}3SHAmC$GseMKCnYP~{>~W!NfRfBNap@>dW) z`u)k{6a45m^!|MO`N@}GB>c6=>A>JdrljaVYjQj|t{;P@gn!42Qi&{*$5)Tg>a5G@ zEre;R`TC+Xx9+UOiM=RIO7q(lj5kFeT7ew8mS0?YL2;hs(3dxTppDF)u1SiRi=OW& z(hSS8)m-pG1G1_ElM@7OC&AB1iY*f8Atn5vY^gmxQ@-l*1&SaUf+Wf}-BDk{&ozLe z^mJ1OdP@~D)QJf6%sAKdH7SoJ&C)cgmr8!#f0B8>sXJ5np8PQd>EGY>;-OSeZsl<6`MyWUuM)a&;%OD&s6cBH{J9;y+HeUUZ4MaN?tmyTlULnf(Rd;S{lt63^;&zMU0#<#Ic_y8TELtB0EL zs(LNuh@&@0W(-}_Gtfjt5-$usHnv*()DPlMYhow)pbL(`J@G+cT^)D?7Y#6@6bwQQ%vp=A&`YX zn%}IIt-q8hiBgs_qYA!1o`bD2Z~J4xA!Qv9BfY;F3y8(Kv5Rsuq?E0*98X-a7LSc` z77fYol?6GITkVG3Y;=ms`H-np&WO4o^l zk85W*@SR|ht>Jo65$MLorXqhtYlycNaS_*0r}sdx$sJ10_!kOp#dhfl zMU^dwrY4p!5m_12Bmq>PN?5E+I z14dC5V9K1%?^$R1FHa@>`;L{Q1$1|K6A!w%G2UARml#pT+E#$=#yv)`^>VFFS20oE z&&-#67^E;r3;HI4x!GF_jS$bVQq)EdGRl?b2Yd$x({z>#Pf3ERR;$%C?+Z%`I1Kx;m*%Xxgf=goT>>R6s)^_l4^#G#-e`1O8P+ YzFsbW<{9 diff --git a/public/cache/AC2/540/4cea7ff935690a5e00f53017e2452eee8a0e6254 b/public/cache/AC2/540/4cea7ff935690a5e00f53017e2452eee8a0e6254 deleted file mode 100644 index 16ec306e0..000000000 --- a/public/cache/AC2/540/4cea7ff935690a5e00f53017e2452eee8a0e6254 +++ /dev/null @@ -1,232 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420532735.166788: @value"["/************************************************************************ -************************************************************************* -@Name : jRating - jQuery Plugin -@Revison : 3.0 -@Date : 28/01/2013 -@Author: ALPIXEL - (www.myjqueryplugins.com - www.alpixel.fr) -@License : Open Source - MIT License : http://www.opensource.org/licenses/mit-license.php - -************************************************************************** -*************************************************************************/ -(function($) { - $.fn.jRating = function(op) { - var defaults = { - /** String vars **/ - bigStarsPath : '/images/seems_rateable/stars.png', // path of the icon stars.png - smallStarsPath : '/images/seems_rateable/small.png', // path of the icon small.png - path : '/rateable/ratings', - type : 'big', // can be set to 'small' or 'big' - - /** Boolean vars **/ - step: true, // if true, mouseover binded star by star, - isDisabled:false, - showRateInfo: false, - canRateAgain : false, - - /** Integer vars **/ - length:5, // number of star to display - decimalLength : 0, // number of decimals.. Max 3, but you can complete the function 'getNote' - rateMax : 20, // maximal rate - integer from 0 to 9999 (or more) - rateInfosX : -45, // relative position in X axis of the info box when mouseover - rateInfosY : 5, // relative position in Y axis of the info box when mouseover - nbRates : 1, - - /** Functions **/ - onSuccess : null, - onError : null - }; - - if(this.length>0) - return this.each(function() { - /*vars*/ - var opts = $.extend(defaults, op), - newWidth = 0, - starWidth = 0, - starHeight = 0, - bgPath = '', - hasRated = false, - globalWidth = 0, - nbOfRates = opts.nbRates; - - if($(this).hasClass('jDisabled') || opts.isDisabled) - var jDisabled = true; - else - var jDisabled = false; - - getStarWidth(); - $(this).height(starHeight); - - - - var average = parseFloat($(this).attr('data-average')), // get the average of all rates - idBox = parseInt($(this).attr('data-id')), // get the id of the box - kls = $(this).attr('data-kls'), - dimension = $(this).attr('data-dimension'), - widthRatingContainer = starWidth*opts.length, // Width of the Container - widthColor = average/opts.rateMax*widthRatingContainer, // Width of the color Container - quotient = - $('
    ', - { - 'class' : 'jRatingColor', - css:{ - width:widthColor - } - }).appendTo($(this)), - - average = - $('
    ', - { - 'class' : 'jRatingAverage', - css:{ - width:0, - top:- starHeight - } - }).appendTo($(this)), - - jstar = - $('
    ', - { - 'class' : 'jStar', - css:{ - width:widthRatingContainer, - height:starHeight, - top:- (starHeight*2), - background: 'url('+bgPath+') repeat-x' - } - }).appendTo($(this)); - - $(this).css({width: widthRatingContainer,overflow:'hidden',zIndex:1,position:'relative'}); - - if(!jDisabled) - $(this).unbind().bind({ - mouseenter : function(e){ - var realOffsetLeft = findRealLeft(this); - var relativeX = e.pageX - realOffsetLeft; - if (opts.showRateInfo) - var tooltip = - $('

    ',{ - 'class' : 'jRatingInfos', - html : getNote(relativeX)+' / '+opts.rateMax+'', - css : { - top: (e.pageY + opts.rateInfosY), - left: (e.pageX + opts.rateInfosX) - } - }).appendTo('body').show(); - }, - mouseover : function(e){ - $(this).css('cursor','pointer'); - }, - mouseout : function(){ - $(this).css('cursor','default'); - if(hasRated) average.width(globalWidth); - else average.width(0); - }, - mousemove : function(e){ - var realOffsetLeft = findRealLeft(this); - var relativeX = e.pageX - realOffsetLeft; - if(opts.step) newWidth = Math.floor(relativeX/starWidth)*starWidth + starWidth; - else newWidth = relativeX; - average.width(newWidth); - if (opts.showRateInfo) - $("p.jRatingInfos") - .css({ - left: (e.pageX + opts.rateInfosX) - }) - .html(getNote(newWidth) +' / '+opts.rateMax+''); - }, - mouseleave : function(){ - $("p.jRatingInfos").remove(); - }, - click : function(e){ - var flag = confirm("确定评分?"); - if(!flag) - { - e.cancel(); - } - - - var element = this; - - /*set vars*/ - hasRated = true; - globalWidth = newWidth; - nbOfRates--; - - if(!opts.canRateAgain || parseInt(nbOfRates) <= 0) $(this).unbind().css('cursor','default').addClass('jDisabled'); - - if (opts.showRateInfo) $("p.jRatingInfos").fadeOut('fast',function(){$(this).remove();}); - e.preventDefault(); - var rate = getNote(newWidth); - average.width(newWidth); - - - $.post(defaults.path, - { - idBox : idBox, - rate : rate, - kls : kls, - dimension : dimension - /** action : 'rating' **/ - }, - function(data) { - if(!data.error) - { - /** Here you can display an alert box, - or use the jNotify Plugin :) http://www.myqjqueryplugins.com/jNotify - exemple : */ - if(opts.onSuccess) opts.onSuccess( element, rate ); - } - else - { - - /** Here you can display an alert box, - or use the jNotify Plugin :) http://www.myqjqueryplugins.com/jNotify - exemple : */ - if(opts.onError) opts.onError( element, rate ); - } - }, - 'json' - ); - } - }); - - function getNote(relativeX) { - var noteBrut = parseFloat((relativeX*100/widthRatingContainer)*opts.rateMax/100); - switch(opts.decimalLength) { - case 1 : - var note = Math.round(noteBrut*10)/10; - break; - case 2 : - var note = Math.round(noteBrut*100)/100; - break; - case 3 : - var note = Math.round(noteBrut*1000)/1000; - break; - default : - var note = Math.round(noteBrut*1)/1; - } - return note; - }; - - function getStarWidth(){ - switch(opts.type) { - case 'small' : - starWidth = 12; // width of the picture small.png - starHeight = 10; // height of the picture small.png - bgPath = opts.smallStarsPath; - break; - default : - starWidth = 23; // width of the picture stars.png - starHeight = 20; // height of the picture stars.png - bgPath = opts.bigStarsPath; - } - }; - - function findRealLeft(obj) { - if( !obj ) return 0; - return obj.offsetLeft + findRealLeft( obj.offsetParent ); - }; - }); - - } -})(jQuery); diff --git a/public/cache/AC2/A80/60567173164aa1f75c0f9517835ebc2fd5eb0ec5 b/public/cache/AC2/A80/60567173164aa1f75c0f9517835ebc2fd5eb0ec5 deleted file mode 100644 index 3b564199a5be58b7aa880c8fa6951bb2dabdafaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12051 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 diff --git a/public/cache/AC9/C70/bbefbac7540e09e1955cb47321965813266c7a8e b/public/cache/AC9/C70/bbefbac7540e09e1955cb47321965813266c7a8e deleted file mode 100644 index 866f94664..000000000 --- a/public/cache/AC9/C70/bbefbac7540e09e1955cb47321965813266c7a8e +++ /dev/null @@ -1,69 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420532735.222791: @value"6[".(function () { - window.onload = function(){ - function fixedBar(id, options){ - var ele = document.getElementById(id); - if(!ele) return; - if(/msie (\d+\.\d+)/i.test(navigator.userAgent)){ - var pageHeight=window.innerHeight; - var d=document; - if(typeof pageHeight!="number"){ - if(document.compatMode=="CSS1Compat"){ - pageHeight=document.documentElement.clientHeight; - }else{ - pageHeight=document.body.clientHeight; - } - } - var ieScrollTop=window.pageYOffset || d.documentElement.scrollTop || d.body.scrollTop; - if(options.addclass) ele.className = options.addclass; - ele.style.position= 'absolute'; - - if(options.show){ - ele.style.top = 0 + "px"; - ele.style.display= 'block'; - } - - window.attachEvent('onscroll' , function (){ - - var ieScrollTop=window.pageYOffset || d.documentElement.scrollTop || d.body.scrollTop; - - ele.style.top = 0 + "px"; - if(options.autoHidden){ - if(ieScrollTop==0){ - ele.style.display="none"; - }else{ - ele.style.display="block"; - } - } - }); - }else{ - var ele = document.getElementById(id); - if(typeof pageHeight!="number"){ - if(document.compatMode=="CSS1Compat"){ - pageHeight=document.documentElement.clientHeight; - }else{ - pageHeight=document.body.clientHeight; - } - } - if(options.show) ele.style.display= 'block'; - ele.style.top = 0 +'px'; - window.addEventListener('scroll',function (){ - if(options.autoHidden){ - if(baidu.page.getScrollTop()==0){ - ele.style.display="none"; - }else{ - ele.style.display="block"; - } - } - },false); - } - } - - fixedBar('backTopBtn' , {autoHidden: true, top : 186}); - fixedBar('identifier-pannel' , {autoHidden: false , top : 956 , show : true}); - //修改微信扫码样式布局后添加微信扫码跟随滚动处理 - $(window).scroll(function(){ - var vtop=$(document).scrollTop(); - $("#identifier-pannel").css('top',vtop+"px"); - }) - } -})(); \ No newline at end of file diff --git a/public/cache/AFF/300/57a7c6d86d2ad09012bac99d46b38f9f33a970a8 b/public/cache/AFF/300/57a7c6d86d2ad09012bac99d46b38f9f33a970a8 deleted file mode 100644 index 1e70f7d5d..000000000 --- a/public/cache/AFF/300/57a7c6d86d2ad09012bac99d46b38f9f33a970a8 +++ /dev/null @@ -1,6 +0,0 @@ -o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420532735.051782: @value" -["// leanModal v1.1 by Ray Stone - http://finelysliced.com.au -// Dual licensed under the MIT and GPL - -(function($){$.fn.extend({leanModal:function(options){var defaults={top:100,overlay:0.5,closeButton:null};var overlay=$("

    ");$("body").append(overlay);options=$.extend(defaults,options);return this.each(function(){var o=options;$(this).click(function(e){var modal_id=$(this).attr("href");$("#lean_overlay").click(function(){close_modal(modal_id)});$(o.closeButton).click(function(){close_modal(modal_id)});var modal_height=$(modal_id).outerHeight();var modal_width=$(modal_id).outerWidth(); -$("#lean_overlay").css({"display":"block",opacity:0});$("#lean_overlay").fadeTo(200,o.overlay);$(modal_id).css({"display":"block","position":"fixed","opacity":0,"z-index":100,"left":50+"%","margin-left":-(modal_width/2)+"px","top":o.top+"px"});$(modal_id).fadeTo(200,1);e.preventDefault()})});function close_modal(modal_id){$("#lean_overlay").fadeOut(200);$(modal_id).css({"display":"none"})}}})})(jQuery); diff --git a/public/cache/B2D/650/88eae75bf7b81a196ba38d86bf54e7162ab274c1 b/public/cache/B2D/650/88eae75bf7b81a196ba38d86bf54e7162ab274c1 deleted file mode 100644 index fdbb7004038f559959e84d0f38032c11968fc944..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 338091 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

    !7?l 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%0Dm;u9@@% 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 z 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 diff --git a/public/cache/B3B/DA0/e9938e23e7a85ff3d431e045384ccd84dea93ce8 b/public/cache/B3B/DA0/e9938e23e7a85ff3d431e045384ccd84dea93ce8 deleted file mode 100644 index 675388492f7e15b1a508ed815c0a3fba569b9d2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20153 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 Gt^WfBy%mZ8 diff --git a/public/cache/B4F/E50/afc8c0ba867511cd69e8b5d43542aad5a2e716c6 b/public/cache/B4F/E50/afc8c0ba867511cd69e8b5d43542aad5a2e716c6 deleted file mode 100644 index 800a1f0bdd7e365cbda72e44d64a72c4d084c747..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37249 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 diff --git a/public/cache/B6B/0E0/6d2710e981a7dd596afcc77e54ff43b9d7f75cb2 b/public/cache/B6B/0E0/6d2710e981a7dd596afcc77e54ff43b9d7f75cb2 deleted file mode 100644 index d6cb37900acc45b0ed519cbb8d9e3a4db9ee5b97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41860 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 diff --git a/public/cache/B76/7F1/http%3A%2F%2Flocalhost%3A3000%2Fstylesheets%2Fjquery%2Fjquery-ui-1.9.2.css%3F1420357855%3D b/public/cache/B76/7F1/http%3A%2F%2Flocalhost%3A3000%2Fstylesheets%2Fjquery%2Fjquery-ui-1.9.2.css%3F1420357855%3D deleted file mode 100644 index b5d794c2977ea30c3b3a86a0dd4df785a9b41127..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2075 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 diff --git a/public/cache/B7E/7C0/0e09a16c714ce54739affa1a4e945aa699b4baae b/public/cache/B7E/7C0/0e09a16c714ce54739affa1a4e945aa699b4baae deleted file mode 100644 index de9fe3690bf71b69748345ab65678bce70e86f40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2979 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 z

    #CFASI9u@X*DE%BFY9MbrQmTiSkFBS_p(TML@l;yU>&B5A(eeqgNxcF1(cp1l7 zw31wjucP|1nBdtNigP+F`oKT+V;MKEmZH!!? z#YE~Y)_Aii>A(W$zUt&U2Q$^t6aSI~iucE~v8JQxj4on>02tfS`w)Dg5ii5zDAo%T zhxEVfj)P=(cOlHAOqnbK5X((G4d1@=*Zz;UChMzn$}4_i5nlh5xruP~p2b@}1}cz` znQ?IRY>ImqoaztZ4lOmxPWBF&-<)@ho*uuPqjpZc8}Nbd`zIXOnSAfK8Lj)pYp29=4mfLZ*P9F z2Ztu9j2(REKp6&#?Jxp~rOfZ5YossOJ4tA>u9SRT2zf`UqK-v53KXP>glSZNN)p6O zPOp}EZDdme3N#`FD;(0(0;gT1X;w2JhMCg!_DbLU#t16tjG!ZmL2Q(9f1XCZ_da6h zv%R0KW=|^~Y3{9HvvuK@O!dvX^yXc>T<>@9#3t}V(E#Q-)j^^7CyW`w`bVSj*vGDE z5uSGGf?Jevt>g19azrN3eR8Nn#^a>mI)?ZP`?oiE4}Zt!{6l3UTzPZ^uC)KW2lcY5 z^uZM?aGZ|I`&QC<)4<91U-U6$bh0}azd_01WDAB0Zo0sNT3;oP6q!!g@U~Za(GoEu zJsb3kh$|Dp6vloQd~k%NgRXkGE`bM!T3W~}sc6xOuelB_Cv`Z*F{gx|-+s#|(deyz zmQbub%=z;YR{Ed+*1L~xQEGqwc(#}=-~D@gJ^Pi%FBrmbB5yGZ@r;nqkQk8q{e$~K ziIIr)X2Vumr!ip&e`CZR`A1BM<~`k3%5JX4X_+(_UOgcbIK*!0Sio5>cANOgQG0!G u)87YDi=O;V^BIyH0>eN+9yx**Koce>k8nXGmX@pATSCNf!<5^<{{I1)@xD?3 diff --git a/public/cache/BE0/BD0/0917fc42cb8dfbd8bc5add2088e60feb41c28e0f b/public/cache/BE0/BD0/0917fc42cb8dfbd8bc5add2088e60feb41c28e0f deleted file mode 100644 index 50be99779f68332178079fd3e9ee162bd227e640..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4321 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 P00000NkvXXu0mjfoy1#p diff --git a/public/cache/C12/DE1/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fseems_rateable%2FjRating.js%3F1420357855%3D b/public/cache/C12/DE1/http%3A%2F%2Flocalhost%3A3000%2Fjavascripts%2Fseems_rateable%2FjRating.js%3F1420357855%3D deleted file mode 100644 index 98b7931ca395d909f1575dd81afd138818cc02d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2104 zcmbVNZI9YU5ROjO<)So~q?e?vqNzy)TAV3SHAmC$B)6Bxs5%Q=nJ|B*jp*#~b%S9 zO@wKv`TEz=+`6+8C-$N=DJ2jt6Ej8(EZc{rxn`waFfGoL9Q^#YFK8pPr)!cT=BB56 zk`!IJqUqf5OcP{P7fhDtwY>#D2V|v4pbwDnqqC{@^vwC9%N0lh&;%gLx7|@+!Y?!d zozl}ySu)V9Py2`1Y-1?-c>)o%{as>6% zhHkLhfxtUMsK=hOKsc%hus7Pu-lG52B2_{~qY3~NNb+qS@O&T8{8HG9FBG$yNcfA) z(caJr-_`(60c1%y$-@=>=+`1d)2<(h(taJrUr#m|@4reICs4T0_;!>}ADbn^>5 zdsljQ4BkhXnye@&x$Bc0?mXYON_3IH-WXoshU)}Vbc`v2Ys^p$ru-ITqsWH_wA)@< zqNz%eVz4*urY?6bG2dH2OoYxNe2a0jI9$RKRYiS7f(ohujrFXF6?=zW68=1+rU?x} z6Y|b0{&Rc0cfwViz+xJ&lGKC60HzZDDen_YjpA&OVWnsKVymU6_&%M&w(?$QgOnIIkT!r-RP&MLgH z@c8CnHy*YomT@bp({V#vE;z3~Ye~~+?uvdoz8zIqVVtzruD)!i{a#OMkA_-g8+}n- z*F~F4nrXzugMBPY@f}KuY?997AwR*Y{`K4oPL_EXNa9tj1%boSlX28)X4zafMzOInc9pa%6L^rSraOXB>D_tj!G1|^>;5)%0Tf_B&;i>x8CL@1DX^6KLu@PHW zr<ukZjR1A8I4Anz#m74M}=t8-tyUYS>u%JBLF2KsBU?wiCG5|VPR<&HNxI`I%YLx^QV_j7$6OyDRqrFi9 z=9}@}D!9amGS;#JY(Ew-qEe%Y8ck!Od{EZsTo|MQI>2T z*Peg$7V|iPX$t)Y+QD@kpq(8=)J~T`CxgE2WaHPMOj9hwlo?Pg1CFUMwI?6%oNx)r zqu(DrJRy&ML*GxwpB{brMIm3yyeV1y&{i~4G8()f9oLSfhC+TP$Vv$m!SUq-v^(wa zW)oo=I^Lg`Zk;W z3zo%#=Z2)}reyP?XzV29DWJI`g?>OG56Y(AHFM?5j!>W}z*2xJ-*kpOg*-DPVn?J(x*++?0mbJ1E{MvOp7=6 z1m0UxJqf%S!ZAfayfv2Y2Cb__ri8M_6aXmD^gC?ubZ5~1n%T3j6!WAgDhK#5VZ5{^z!o+RlGRlOwjdf1tX4L9oY%==RpMR6m^1N5na{!DJM#^Ky3E6 zqd{xzSU0jh88wXgObF`JmNJQNeL2iVH$#q>M(Op+H|N(`uiI6whXW&at)8r}>ar`O z%`C1Y{hcjF3q3}QU7E%AkRIW~;qA>z+lF(MR%mUmvbq?Cqg!dK-L}G!=mFJ~sG-^0 zj6}p?Rp0rz8PM9+n~%o6Tunw+IroL+Yi$OmYO_^$8}+tpdcc>{bx)kJqq!#Pa${qJ zp{dcz9pYj3Wj}H$aOXFtOVgwdHmMP%w5myW|BV<6r}%*T9PpRDJO zwWd&Rws18<`B-m#tMz$gX;l3-<&7w9>JxD1$^8w=$DKEu1@#E?)F&A|wANrW(A+wb z^ZYJ{!-{D68<**?26T&6#f34XtEq2+<$z|VuGQbFD2I)Cxb+ys4^(4!ZiKK=-MUN* z`$V=xIh^T8?$K(_zffQ}P#OEMS^?0zaH{1p=Tl_>s#O{|73YHE#x%{0Y4?(_?KoMC zgD{A$;$ImNRUxin)NH!@7y9vMBs{dlUGv6|{lE3?*Sev|ipIC?Mz7ueW`+B|t@2I& zSd@mXqG!@jB+>3F8X7tIjM;Zh+)WTh(>2Lfc~jVP&-GuPDCGBTC(R1#!Vks)^zmV` zyNu2Ws!X(;h}caAg5qi{RbyE~R`6GMFLjf2`q;5iw3O80`o%CiH$ z4Wmgm#lpvcW@)^9H7FbqVlaVewiA;Dc;Pdw%lIBkvuF;}PSxSYtjGCP+T*GfH1z1| t*e#>6_E Date: Fri, 9 Jan 2015 15:34:02 +0800 Subject: [PATCH 073/192] change cache files sites --- config/environments/production.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/environments/production.rb b/config/environments/production.rb index ab4cd4011..8a2847731 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -18,7 +18,7 @@ RedmineApp::Application.configure do # Full error reports are disabled and caching is turned on config.action_controller.perform_caching = true - + config.cache_store = :file_store, "#{Rails.root }/public/tmp/" # Enable serving of images, stylesheets, and javascripts from an asset server # config.action_controller.asset_host = "http://assets.example.com" From 320c01994bc1fcad359812d446f66418bb0828e6 Mon Sep 17 00:00:00 2001 From: z9hang Date: Sat, 10 Jan 2015 15:50:52 +0800 Subject: [PATCH 074/192] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E9=83=A8=E5=88=86gem?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 13 +-------- Gemfile.lock | 74 ---------------------------------------------------- 2 files changed, 1 insertion(+), 86 deletions(-) diff --git a/Gemfile b/Gemfile index e6de496ea..b6d49c15c 100644 --- a/Gemfile +++ b/Gemfile @@ -22,7 +22,7 @@ gem 'acts-as-taggable-on', '2.4.1' group :development do gem 'grape-swagger' gem 'grape-swagger-ui', git: 'https://github.com/guange2015/grape-swagger-ui.git' - gem 'puma' + #gem 'puma' gem 'better_errors', path: 'lib/better_errors' gem 'rack-mini-profiler', path: 'lib/rack-mini-profiler' end @@ -46,17 +46,6 @@ group :test do end end -group :development, :test do - gem "guard-rails", '~> 0.5.3' - gem 'spork-testunit', '~> 0.0.8' - gem 'guard-spork', '~> 1.5.1' - gem 'guard-test', '~> 1.0.0' - gem 'ruby-prof', '~> 0.15.1' unless RUBY_PLATFORM =~ /w32/ - gem 'pry-rails' - gem 'pry-byebug' - gem 'pry-remote' -end - # Gems used only for assets and not required # in production environments by default. diff --git a/Gemfile.lock b/Gemfile.lock index 4ac0ba2a3..619c1d072 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -64,17 +64,12 @@ GEM ice_nine (~> 0.11.0) thread_safe (~> 0.3, >= 0.3.1) builder (3.0.0) - byebug (2.7.0) - columnize (~> 0.3) - debugger-linecache (~> 1.2) capybara (2.4.1) mime-types (>= 1.16) nokogiri (>= 1.3.3) rack (>= 1.0.0) rack-test (>= 0.5.4) xpath (~> 2.0) - celluloid (0.15.2) - timers (~> 1.1.0) childprocess (0.5.3) ffi (~> 1.0, >= 1.0.11) climate_control (0.0.3) @@ -91,8 +86,6 @@ GEM coffee-script-source execjs coffee-script-source (1.7.1) - columnize (0.9.0) - debugger-linecache (1.2.0) descendants_tracker (0.0.4) thread_safe (~> 0.3, >= 0.3.1) equalizer (0.0.9) @@ -103,7 +96,6 @@ GEM fastercsv (1.5.5) ffi (1.9.3) ffi (1.9.3-x86-mingw32) - formatador (0.2.5) grape (0.9.0) activesupport builder @@ -120,27 +112,11 @@ GEM grape-swagger (0.8.0) grape grape-entity - guard (2.6.1) - formatador (>= 0.2.4) - listen (~> 2.7) - lumberjack (~> 1.0) - pry (>= 0.9.12) - thor (>= 0.18.1) - guard-rails (0.5.3) - guard (~> 2.0) - guard-spork (1.5.1) - childprocess (>= 0.2.3) - guard (>= 1.1) - spork (>= 0.8.4) - guard-test (1.0.0) - guard (>= 1.8) - test-unit (~> 2.2) hashie (3.3.1) hike (1.2.3) htmlentities (4.3.2) i18n (0.6.1) ice_nine (0.11.0) - iconv (1.0.4) journey (1.0.4) jquery-rails (2.0.3) railties (>= 3.1.0, < 5.0) @@ -150,16 +126,10 @@ GEM actionpack (>= 3.0.0) activesupport (>= 3.0.0) libv8 (3.16.14.3) - listen (2.7.9) - celluloid (>= 0.15.2) - rb-fsevent (>= 0.9.3) - rb-inotify (>= 0.9) - lumberjack (1.0.9) mail (2.5.4) mime-types (~> 1.16) treetop (~> 1.4.8) metaclass (0.0.4) - method_source (0.8.2) mime-types (1.25.1) mini_portile (0.6.0) mocha (1.1.0) @@ -179,25 +149,6 @@ GEM cocaine (~> 0.5.3) mime-types polyglot (0.3.5) - pry (0.9.12.6) - coderay (~> 1.0) - method_source (~> 0.8) - slop (~> 3.4) - pry (0.9.12.6-x86-mingw32) - coderay (~> 1.0) - method_source (~> 0.8) - slop (~> 3.4) - win32console (~> 1.3) - pry-byebug (1.3.2) - byebug (~> 2.7) - pry (~> 0.9.12) - pry-rails (0.3.2) - pry (>= 0.9.10) - pry-remote (0.1.8) - pry (~> 0.9) - slop (~> 3.0) - puma (2.10.1) - rack (>= 1.1, < 2.0) rack (1.4.5) rack-accept (0.4.5) rack (>= 0.4) @@ -230,9 +181,6 @@ GEM rdoc (~> 3.4) thor (>= 0.14.6, < 2.0) rake (10.3.2) - rb-fsevent (0.9.4) - rb-inotify (0.9.5) - ffi (>= 0.5.0) rdoc (3.12.2) json (~> 1.4) ref (1.0.5) @@ -246,7 +194,6 @@ GEM sass-rails rmagick (2.13.2) ruby-openid (2.1.8) - ruby-prof (0.15.2) rubyzip (1.1.6) sass (3.3.10) sass-rails (3.2.6) @@ -264,23 +211,17 @@ GEM shoulda-context (1.2.1) shoulda-matchers (2.6.1) activesupport (>= 3.0.0) - slop (3.5.0) - spork (0.9.2) - spork-testunit (0.0.8) - spork (>= 0.6.0) sprockets (2.2.2) hike (~> 1.2) multi_json (~> 1.0) rack (~> 1.0) tilt (~> 1.1, != 1.3.0) - test-unit (2.5.5) therubyracer (0.12.1) libv8 (~> 3.16.14.0) ref thor (0.19.1) thread_safe (0.3.4) tilt (1.4.1) - timers (1.1.0) treetop (1.4.15) polyglot polyglot (>= 0.3.1) @@ -294,11 +235,8 @@ GEM descendants_tracker (~> 0.0, >= 0.0.3) equalizer (~> 0.0, >= 0.0.9) websocket (1.0.7) - win32console (1.3.2-x86-mingw32) xpath (2.0.0) nokogiri (~> 1.3) - zip-zip (0.3) - rubyzip (>= 1.0.0) PLATFORMS ruby @@ -319,12 +257,8 @@ DEPENDENCIES grape-entity grape-swagger grape-swagger-ui! - guard-rails (~> 0.5.3) - guard-spork (~> 1.5.1) - guard-test (~> 1.0.0) htmlentities i18n (~> 0.6.0) - iconv jquery-rails (~> 2.0.2) kaminari mocha (~> 1.1.0) @@ -332,23 +266,15 @@ DEPENDENCIES net-ldap (~> 0.3.1) nokogiri (~> 1.6.3) paperclip (~> 3.5.4) - pry-byebug - pry-rails - pry-remote - puma rack-mini-profiler! rack-openid rails (= 3.2.13) rich (= 1.4.6) rmagick (>= 2.0.0) ruby-openid (~> 2.1.4) - ruby-prof (~> 0.15.1) - rubyzip sass-rails (~> 3.2.3) seems_rateable! selenium-webdriver (~> 2.42.0) shoulda (~> 3.5.0) - spork-testunit (~> 0.0.8) therubyracer uglifier (>= 1.0.3) - zip-zip From da880dae00d25d52e90485eea8e7ce0b5a9116cb Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Sat, 10 Jan 2015 21:31:16 +0800 Subject: [PATCH 075/192] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/homeworks.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/api/mobile/apis/homeworks.rb b/app/api/mobile/apis/homeworks.rb index 99acfd87f..9eef00094 100644 --- a/app/api/mobile/apis/homeworks.rb +++ b/app/api/mobile/apis/homeworks.rb @@ -16,14 +16,13 @@ module Mobile end route_param :id do get do + p self get_service.show_homework params end end - - - end + end end end From 5c9f1a1e1bceaa5bd18b4b6a8d631199c008ac48 Mon Sep 17 00:00:00 2001 From: hhuai <8863824@gmail.com> Date: Mon, 12 Jan 2015 17:19:18 +0800 Subject: [PATCH 076/192] merge --- app/api/mobile/api.rb | 4 ++-- app/api/mobile/apis/homeworks.rb | 10 +++------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb index a386a57eb..554031b9a 100644 --- a/app/api/mobile/api.rb +++ b/app/api/mobile/api.rb @@ -32,8 +32,8 @@ module Mobile mount Apis::Upgrade mount Apis::Homeworks - #add_swagger_documentation ({api_version: 'v1', base_path: 'http://u06.shellinfo.cn/trustie/api'}) - add_swagger_documentation ({api_version: 'v1', base_path: '/api'}) + add_swagger_documentation ({api_version: 'v1', base_path: 'http://u06.shellinfo.cn/trustie/api'}) + # add_swagger_documentation ({api_version: 'v1', base_path: '/api'}) end end diff --git a/app/api/mobile/apis/homeworks.rb b/app/api/mobile/apis/homeworks.rb index 99acfd87f..983cc9373 100644 --- a/app/api/mobile/apis/homeworks.rb +++ b/app/api/mobile/apis/homeworks.rb @@ -4,26 +4,22 @@ module Mobile module Apis class Homeworks < Grape::API - def self.get_servcie + def self.get_service new HomeworkService end resources :homeworks do - desc "作业详情" params do requires :id, type: Integer, desc: "作业ID" end route_param :id do get do - get_service.show_homework params + Homeworks.get_service.show_homework params end end - - - - end + end end end From f0cac221e992921674af9fdb317728d3fbd423d9 Mon Sep 17 00:00:00 2001 From: z9hang Date: Tue, 13 Jan 2015 16:00:17 +0800 Subject: [PATCH 077/192] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/homeworks.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/api/mobile/apis/homeworks.rb b/app/api/mobile/apis/homeworks.rb index 983cc9373..32e7142ee 100644 --- a/app/api/mobile/apis/homeworks.rb +++ b/app/api/mobile/apis/homeworks.rb @@ -5,7 +5,7 @@ module Mobile class Homeworks < Grape::API def self.get_service - new HomeworkService + HomeworkService.new end resources :homeworks do From 75ba61ed746cea8080e2add86a0630ff4f66412b Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Wed, 14 Jan 2015 16:42:12 +0800 Subject: [PATCH 078/192] =?UTF-8?q?issue=201798=20,=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=90=8D=E5=87=BA=E7=8E=B0=E4=B8=8D=E6=98=BE=E7=A4=BA=E7=9A=84?= =?UTF-8?q?=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/document.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/models/document.rb b/app/models/document.rb index e607b9292..e2e0a8d00 100644 --- a/app/models/document.rb +++ b/app/models/document.rb @@ -31,7 +31,8 @@ class Document < ActiveRecord::Base acts_as_searchable :columns => ['title', "#{table_name}.description"], :include => :project acts_as_event :title => Proc.new {|o| "#{l(:label_document)}: #{o.title}"}, - :author => Proc.new {|o| o.attachments.reorder("#{Attachment.table_name}.created_on ASC").first.try(:author) }, + #:author => Proc.new {|o| o.attachments.reorder("#{Attachment.table_name}.created_on ASC").first.try(:author) }, + :author => Proc.new {|o| User.find(o.user_id)}, :url => Proc.new {|o| {:controller => 'documents', :action => 'show', :id => o.id}} acts_as_activity_provider :find_options => {:include => :project}, :is_public => 'documents.is_public' From 2aecb408177a43590c9b299cabfd261d9b253daa Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Wed, 14 Jan 2015 16:43:39 +0800 Subject: [PATCH 079/192] =?UTF-8?q?=E5=8E=BB=E6=8E=89document.rb=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E5=86=97=E4=BD=99=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/document.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/models/document.rb b/app/models/document.rb index e2e0a8d00..48a0151eb 100644 --- a/app/models/document.rb +++ b/app/models/document.rb @@ -81,7 +81,5 @@ class Document < ActiveRecord::Base update_document(self.user,2,self.project) end - def expire_cache - ActionController::Base.new.expire_fragment('activities') - end + end From 2431fea63e0b56f1a06fd3fa9a92a6c1f9f0268d Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Wed, 14 Jan 2015 16:43:39 +0800 Subject: [PATCH 080/192] =?UTF-8?q?=E6=97=A5=E5=BF=97=E6=9F=A5=E7=9C=8BHel?= =?UTF-8?q?per?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/system_log_helper.rb | 57 ++++++++++++++++++++++++++++++++ app/models/document.rb | 4 +-- 2 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 app/helpers/system_log_helper.rb diff --git a/app/helpers/system_log_helper.rb b/app/helpers/system_log_helper.rb new file mode 100644 index 000000000..4528143ef --- /dev/null +++ b/app/helpers/system_log_helper.rb @@ -0,0 +1,57 @@ +module SystemLogHelper + class SystemLog + class << self + # 分页(支持多关键字查询) + def logo_data(page,per,search) + logs = find_all_logs + + # 根据search参数来决定是否需要查询 + keywords = search + if keywords && !keywords.strip.blank? + # 把keywords转化成正则表达式数组 + keywords = keywords.strip.split(/\s+/).collect! {|w| Regexp.new(w, 'i')} + # 一条记录应该匹配每个关键字 + logs = logs.find_all do |log| + keywords.all? { |r| log =~ r } + end + logs = Kaminari.paginate_array(logs).page(page).per(per).collect! {|log| parse(log)} + logs.collect! do |log| + keywords.each { |r| log.gsub!(r, '\0')} + log + end + else + logs = Kaminari.paginate_array(logs).page(page).per(per).collect! {|log| parse(log)} + end + logs + end + + #清除日誌 + def clear + File.open(logfile_path, 'w') do |f| + f.print '' + end + end + + #讀取日誌 + private + def find_all_logs + File.open(logfile_path) do |f| + #打开文件,并按照正则表达式切分,逆序,最新一个记录可以扔掉(因为最新的记录永远都是访问System_log) + f.read.split("Processing").reverse[1..-1] + end + end + + # 日志文件的路径,一般在Rails.root/log下,根据环境配置 + # 依次记录到product.log development.log test.log中 + def logfile_path + File.join(Rails.root, "log", "#{Rails.env}.log") + end + + #替換換行符 + def parse(log) + ERB::Util.html_escape(log.gsub(/\e\[[\d;m]+/, '')).gsub("\n", "
    ") + end + end + end + end + diff --git a/app/models/document.rb b/app/models/document.rb index e2e0a8d00..48a0151eb 100644 --- a/app/models/document.rb +++ b/app/models/document.rb @@ -81,7 +81,5 @@ class Document < ActiveRecord::Base update_document(self.user,2,self.project) end - def expire_cache - ActionController::Base.new.expire_fragment('activities') - end + end From 0a33a716dee4ac31f1c218b83d67711e9bd01b43 Mon Sep 17 00:00:00 2001 From: z9hang Date: Tue, 20 Jan 2015 15:17:02 +0800 Subject: [PATCH 081/192] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E5=88=97=E8=A1=A8API=E6=8E=A5=E5=8F=A3=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BD=9C=E4=B8=9A=E8=AF=A6=E6=83=85=E5=88=97?= =?UTF-8?q?=E8=A1=A8API=E6=8E=A5=E5=8F=A3=20=E6=B7=BB=E5=8A=A0=E8=AF=BE?= =?UTF-8?q?=E7=A8=8B=E9=80=9A=E7=9F=A5=E5=88=97=E8=A1=A8API=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/api.rb | 4 ++-- app/api/mobile/apis/courses.rb | 26 +++++++++++++++++++-- app/api/mobile/apis/homeworks.rb | 4 +++- app/api/mobile/entities/homework.rb | 34 +++++++++++++++++++++++++++ app/api/mobile/entities/news.rb | 27 ++++++++++++++++++++++ app/services/courses_service.rb | 36 +++++++++++++++++++++++++---- app/services/homework_service.rb | 11 +++++---- 7 files changed, 128 insertions(+), 14 deletions(-) create mode 100644 app/api/mobile/entities/homework.rb create mode 100644 app/api/mobile/entities/news.rb diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb index 554031b9a..8226a1020 100644 --- a/app/api/mobile/api.rb +++ b/app/api/mobile/api.rb @@ -32,8 +32,8 @@ module Mobile mount Apis::Upgrade mount Apis::Homeworks - add_swagger_documentation ({api_version: 'v1', base_path: 'http://u06.shellinfo.cn/trustie/api'}) - # add_swagger_documentation ({api_version: 'v1', base_path: '/api'}) + #add_swagger_documentation ({api_version: 'v1', base_path: 'http://u06.shellinfo.cn/trustie/api'}) + add_swagger_documentation ({api_version: 'v1', base_path: '/api'}) end end diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index 4130ea902..c6f3fdcd1 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -16,7 +16,7 @@ module Mobile present :status, 0 end - desc "新建课程[TODO,待测试]" + desc "新建课程" #current_user当前用户对象(不是id) # params[:course][:name]:课程名称 #params[:course][:password]:密码 @@ -55,7 +55,7 @@ module Mobile present :status, 0 end - desc "编辑课程[TODO,待测试]" + desc "编辑课程" params do requires :token, type: String requires :course_id, type: Integer, desc: '课程id' @@ -175,6 +175,28 @@ module Mobile end end + desc "课程作业列表" + params do + requires :token, type: String + end + get "homeworks/:id" do + cs = CoursesService.new + homeworks = cs.homework_list params,current_user + present :data, homeworks, with: Mobile::Entities::Homework + present :status, 0 + end + + desc "课程通知列表" + params do + end + get ":course_id/news" do + cs = CoursesService.new + news = cs.course_news_list params + present :data, news, with: Mobile::Entities::News + present :status, 0 + end + + end end end diff --git a/app/api/mobile/apis/homeworks.rb b/app/api/mobile/apis/homeworks.rb index 32e7142ee..49f3efde6 100644 --- a/app/api/mobile/apis/homeworks.rb +++ b/app/api/mobile/apis/homeworks.rb @@ -15,7 +15,9 @@ module Mobile end route_param :id do get do - Homeworks.get_service.show_homework params + homework = Homeworks.get_service.show_homework params + present :data, homework, with: Mobile::Entities::Homework + present :status, 0 end end end diff --git a/app/api/mobile/entities/homework.rb b/app/api/mobile/entities/homework.rb new file mode 100644 index 000000000..4eb6bbfdf --- /dev/null +++ b/app/api/mobile/entities/homework.rb @@ -0,0 +1,34 @@ +module Mobile + module Entities + class Homework < Grape::Entity + def self.homework_expose(field) + expose field do |f,opt| + if f.is_a?(Hash) && f.key?(field) + f[field] + end + end + end + #作业id + homework_expose :id + #课程名称 + homework_expose :course_name + #课程老师 + homework_expose :course_teacher + #作业次数 + homework_expose :homework_times + #作业名称 + homework_expose :homework_name + #已提交的作业数量 + homework_expose :homework_count + #学生提问数量 + homework_expose :student_questions_count + #作业描述 + homework_expose :description + #作业是否启用匿评功能 0:不启用,1启用 + homework_expose :open_anonymous_evaluation + #作业状态 0:新建,1:已开启匿评,2:已关闭匿评 + #只有作业启用了匿评功能且当前用户是课程老师且已提交的作品数量大于或等于2才能开启匿评 + homework_expose :homework_state + end + end +end \ No newline at end of file diff --git a/app/api/mobile/entities/news.rb b/app/api/mobile/entities/news.rb new file mode 100644 index 000000000..dc60e99b0 --- /dev/null +++ b/app/api/mobile/entities/news.rb @@ -0,0 +1,27 @@ +module Mobile + module Entities + class News < Grape::Entity + def self.news_expose(field) + expose field do |f,opt| + if f.is_a?(Hash) && f.key?(field) + f[field] + end + end + end + + #新闻标题 + news_expose :title + #作者id + news_expose :author_id + #作者名 + news_expose :author_name + #新闻内容 + news_expose :content + #发布时间 + news_expose :time + #评论数量 + news_expose :comments_count + + end + end +end \ No newline at end of file diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index 485126ac4..1fef2c27f 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -110,6 +110,11 @@ class CoursesService @course = Course.find(params[:course_id]) end scope = @course ? @course.news.course_visible : News.course_visible + news = [] + scope.each do |n| + news << {:title => n.title,:author_name => n.author.name,:author_id => n.author.id, :content => n.description,:time => format_time(n.created_on),:comments_count => n.comments_count} + end + news end #查看新闻权限验证 @@ -290,13 +295,36 @@ class CoursesService #已提交的作业数量获取 bid.homeworks.count #学生提问数量获取 bid.commit.nil? ? 0 : bid.commit def homework_list params,current_user - if @course.is_public != 0 || current_user.member_of_course?(@course) - @offset, @limit = api_offset_and_limit({:limit => 10}) - @bids = @course.homeworks.order('deadline DESC') - @bids = @bids.like(params[:name]) if params[:name].present? + course = Course.find(params[:id]) + if course.is_public != 0 || current_user.member_of_course?(course) + bids = course.homeworks.order('deadline DESC') + bids = bids.like(params[:name]) if params[:name].present? + homeworks = [] + if is_course_teacher(current_user,course) + bids.each do |bid| + homeworks << show_homework_info(course,bid) + end + end + homeworks else raise '403' end end + private + def show_homework_info course,bid + author = bid.author.lastname + bid.author.firstname + many_times = course.homeworks.index(bid) + 1 + name = bid.name + homework_count = bid.homeworks.count #已提交的作业数量 + student_questions_count = bid.commit.nil? ? 0 : bid.commit + description = bid.description + #if is_course_teacher(User.current, course) && @bid.open_anonymous_evaluation == 1 && @bid.homeworks.count >= 2 + state = bid.comment_status + #end + open_anonymous_evaluation = bid.open_anonymous_evaluation + {:course_name => course.name,:id => bid.id, :course_teacher => author, :homework_times => many_times, :homework_name => name, :homework_count => homework_count,:student_questions_count => student_questions_count, + :description => description, :homework_state => state,:open_anonymous_evaluation => open_anonymous_evaluation} + end + end \ No newline at end of file diff --git a/app/services/homework_service.rb b/app/services/homework_service.rb index c0a669bca..acbaf475d 100644 --- a/app/services/homework_service.rb +++ b/app/services/homework_service.rb @@ -19,11 +19,12 @@ class HomeworkService homework_count = @bid.homeworks.count #已提交的作业数量 student_questions_count = @bid.commit.nil? ? 0 : @bid.commit description = @bid.description - if is_course_teacher(User.current, course) && @bid.open_anonymous_evaluation == 1 && @bid.homeworks.count >= 2 - state = bid.comment_status - end - {:course => course, :atuthor => author, :many_times => many_times, :name => name, :homework_count => homework_count,:student_questions_count => student_questions_count, - :descriptiong => description, :state => state} + #if is_course_teacher(User.current, course) && @bid.open_anonymous_evaluation == 1 && @bid.homeworks.count >= 2 + state = @bid.comment_status + #end + open_anonymous_evaluation = @bid.open_anonymous_evaluation + {:course_name => course.name,:id => @bid.id, :course_teacher => author, :homework_times => many_times, :homework_name => name, :homework_count => homework_count,:student_questions_count => student_questions_count, + :description => description, :homework_state => state,:open_anonymous_evaluation => open_anonymous_evaluation} end # 启动作业匿评 From a145f04c2729d2ceb2c6984bb60019c5bca19625 Mon Sep 17 00:00:00 2001 From: zhuhao Date: Tue, 20 Jan 2015 16:56:23 +0800 Subject: [PATCH 082/192] =?UTF-8?q?=E5=9C=A8gemfile=E4=B8=AD=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0rspec?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .metadata/.log | 57 +++ .../.plugins/com.aptana.core.io/connections.9 | 2 - .../defaultConnection.9 | 7 - .../.plugins/com.aptana.syncing.core/sites.9 | 2 - .../com.aptana.webserver.core/webservers.8 | 6 - .../.root/.indexes/properties.index | Bin 104 -> 104 bytes .../org.eclipse.core.resources/.root/2.tree | Bin 4837 -> 0 bytes .../.safetable/com.aptana.core.io.9 | 3 - .../.safetable/com.aptana.syncing.core.9 | 4 - .../.safetable/com.aptana.webserver.core.8 | 3 - .../.safetable/org.eclipse.core.resources | Bin 866 -> 902 bytes .../.settings/com.aptana.explorer.prefs | 2 +- .../.settings/com.aptana.portal.ui.prefs | 2 +- .../.settings/com.aptana.theme.prefs | 2 +- .../.settings/org.eclipse.ui.ide.prefs | 2 +- .../Firefox - Internal Server.launch | 2 +- .../org.eclipse.ui.ide/dialog_settings.xml | 10 +- .../org.eclipse.ui.workbench/workbench.xml | 54 +-- Gemfile | 3 + .../stylesheets/window_js/nuncio.css | 328 +++++++++--------- .../stylesheets/window_js/spread.css | 216 ++++++------ 21 files changed, 371 insertions(+), 334 deletions(-) delete mode 100644 .metadata/.plugins/com.aptana.core.io/connections.9 delete mode 100644 .metadata/.plugins/com.aptana.syncing.core/defaultConnection.9 delete mode 100644 .metadata/.plugins/com.aptana.syncing.core/sites.9 delete mode 100644 .metadata/.plugins/com.aptana.webserver.core/webservers.8 delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.root/2.tree delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.core.io.9 delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.syncing.core.9 delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.webserver.core.8 diff --git a/.metadata/.log b/.metadata/.log index 0cb16378c..ea77ea8b9 100644 --- a/.metadata/.log +++ b/.metadata/.log @@ -209,3 +209,60 @@ java.lang.UnsupportedOperationException: Not supported yet. at com.aptana.index.core.IndexRequestJob.indexFileStores(IndexRequestJob.java:205) at com.aptana.index.core.IndexContainerJob.run(IndexContainerJob.java:114) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) +!SESSION 2015-01-17 11:30:30.655 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.6.0_24 +java.vendor=Sun Microsystems Inc. +BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=zh_CN +Command-line arguments: -os win32 -ws win32 -arch x86 + +!ENTRY org.eclipse.core.resources 4 567 2015-01-17 11:30:37.624 +!MESSAGE Workspace restored, but some problems occurred. +!SUBENTRY 1 org.eclipse.core.resources 4 567 2015-01-17 11:30:37.624 +!MESSAGE Could not read metadata for 'demo'. +!STACK 1 +org.eclipse.core.internal.resources.ResourceException: The project description file (.project) for 'demo' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:851) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:874) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:854) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:703) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1528) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2503) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2251) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:439) + at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711) + at java.security.AccessController.doPrivileged(Native Method) + at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702) + at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683) + at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381) + at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:299) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:440) + at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:268) + at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107) + at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:463) + at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400) + at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:35) + at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:473) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417) + at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) + at java.lang.ClassLoader.loadClass(Unknown Source) + at com.aptana.rcp.IDEApplication.start(IDEApplication.java:125) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) + at java.lang.reflect.Method.invoke(Unknown Source) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577) + at org.eclipse.equinox.launcher.Main.run(Main.java:1410) +!SUBENTRY 2 org.eclipse.core.resources 4 567 2015-01-17 11:30:37.626 +!MESSAGE The project description file (.project) for 'demo' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + +!ENTRY org.eclipse.core.jobs 2 2 2015-01-17 11:33:58.913 +!MESSAGE Job found still running after platform shutdown. Jobs should be canceled by the plugin that scheduled them during shutdown: com.aptana.usage.internal.DefaultAnalyticsEventHandler$1 diff --git a/.metadata/.plugins/com.aptana.core.io/connections.9 b/.metadata/.plugins/com.aptana.core.io/connections.9 deleted file mode 100644 index 4371c4759..000000000 --- a/.metadata/.plugins/com.aptana.core.io/connections.9 +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/.metadata/.plugins/com.aptana.syncing.core/defaultConnection.9 b/.metadata/.plugins/com.aptana.syncing.core/defaultConnection.9 deleted file mode 100644 index 375897785..000000000 --- a/.metadata/.plugins/com.aptana.syncing.core/defaultConnection.9 +++ /dev/null @@ -1,7 +0,0 @@ - - - -Default -file:/C:/Users/nudt - - \ No newline at end of file diff --git a/.metadata/.plugins/com.aptana.syncing.core/sites.9 b/.metadata/.plugins/com.aptana.syncing.core/sites.9 deleted file mode 100644 index d9b475695..000000000 --- a/.metadata/.plugins/com.aptana.syncing.core/sites.9 +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/.metadata/.plugins/com.aptana.webserver.core/webservers.8 b/.metadata/.plugins/com.aptana.webserver.core/webservers.8 deleted file mode 100644 index 5c07542b1..000000000 --- a/.metadata/.plugins/com.aptana.webserver.core/webservers.8 +++ /dev/null @@ -1,6 +0,0 @@ - - - -demo - - \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index index fddafcbcdbdf00ea71be4159adb7de4db58439ac..83f5328beecdc2fbc707c3bf8708420669396cef 100644 GIT binary patch delta 17 Ycmd1Em=MEbVq{=yWMOD*Xl8B*04pK{F#rGn delta 17 Ycmd1Em=MEbY-wU@WM*t`WMX6r04tRQJpcdz diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/2.tree b/.metadata/.plugins/org.eclipse.core.resources/.root/2.tree deleted file mode 100644 index 5b2529389243f247a5e2c6f799eb40d3d01d5bfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4837 zcmai&*?QAf5XVP$;;e)aw$hc-vXp{wVmk@Yg+LO@PSbrg$I`K*M3#&s2h!_4Lf@cw zz3N3Dft$WU-=V$h6&LAWwly9*QZpCP=TE;`&dfPyMj6THa@3XW-ZSlC(1@*@KAo}r zrm0$y@|5Y=+O+&Yn{CgjJKDb4c3fKrvAU5n$cUeb9)64*#qZVMt$$zi9E|jyoyQza znhhs%8Xhb{cg{dqG5#_MuORR-qH(ho_*>eF0FNXv+a3iR2M`P3vD>;?cihCJ_0C+SZxT0AQIU z%Bxl@UP)Y~fpp*<%T$31DhzcLrlN-!B$~-n!D*_7PDjrQ^qfHxfpXl?YsTsse9zp91KM94m}R*L7h$yP>TpwMt@S+9L>CM? zEL~V(x)0c8c^^J3--`m@b#;)Qq#34(4jXhz_^9@E&7hXLqIZQh(ml4R-By;T!-AbP z=(zOM)ywkoj?je1u_g+cy{<9)aP7@iR@oD`bAt=;rI9TDiFSOE~rB2K*a zcAUWXn%W!o@iK`AF|Ztm51}$xgG2!k%ZWVA*m_61e(V2yyv_-;pl>5~G^#SuJ*8&QmIs3y{j{Lb6LWTaLGyX$ zXwd>#F6HQ`+}q((*NJoqddbabUrx3jMgf)|(dI*~?cwsWlO;xpmeJ{@QzcnJFSOmo`D{B`D0WT+6u08UC74 zB9wD9QsMUCzDUeo6Xf-S%zh-O~GBsrFS!iuM7ACoHAMKu7f1MPyhL= z$D+2B%&rz%L#tiG6f>}uk_BE7=8FXyFBi+5wgZ?)9gYS5Sw6)6DK9K!!vI)50$eE; zvta-%A7j9&s~rbN#l#=6lP!(}49g9oNyoGG^KA1#SXO`se$9_UGkPA+=1Kng)`76x zME<%HV`~123=+*7G};+QQhu2d#F4Q6dDDkD3D?SnPd4aHSC%wUo7)o{u|%yo>g>|5J>Oek#z79OZAV7e$Jn z{+)c}YQfbF%CD}ZbB^G)47wCzsfTj>Ed1h+XHpkAokSL^otyj3i#%JPC` z*J`?CFPBxRqI7zIo5CPgKhkn+*<9?4H+n!-fKLpX40W)h0~5Sl_-}vqFk9frKDu{j zc1pMXM8FEePuNYm$W%WLyl1K5y4%s7?FRz2_FnXW5`#qL^p2dMcLjPcm-*?<8}EVO zA0Bi>9trp{E`*GaZjSq*;2&ifPa=mw795AMmfLPPp3HMUA@`Uhx_^-2`vQIt=NJEd G>dJrd5!RXj diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.core.io.9 b/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.core.io.9 deleted file mode 100644 index 0b4ef3b47..000000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.core.io.9 +++ /dev/null @@ -1,3 +0,0 @@ -#safe table -#Tue Mar 11 17:27:27 CST 2014 -connections=connections.9 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.syncing.core.9 b/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.syncing.core.9 deleted file mode 100644 index 371e94161..000000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.syncing.core.9 +++ /dev/null @@ -1,4 +0,0 @@ -#safe table -#Tue Mar 11 17:27:27 CST 2014 -defaultConnection=defaultConnection.9 -sites=sites.9 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.webserver.core.8 b/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.webserver.core.8 deleted file mode 100644 index 1af4b85d6..000000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.webserver.core.8 +++ /dev/null @@ -1,3 +0,0 @@ -#safe table -#Tue Mar 11 17:27:27 CST 2014 -webservers=webservers.8 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources index b3b591e284d378d05220aa1d474a6235416d77f8..b756a6952de4f1f180ee8f4487b792a0aeb5a8bc 100644 GIT binary patch delta 193 zcmaFF*2X?TK_)n{M8PXDPr=Y!!O+mk*x1U{Ou;!gM8U|w&~&2BYDVM90*n%q82OnD z4S+0FK|>>6F8!3$+Pq5|fx&CkHcnFc}(6p2KKFz)1DUtjt0a=Lk(U lWlBLZ-4J5BF*eivMGS%B2O@rdR^G!PA{F?#r+Rn!F#u2aGkpL6 delta 155 zcmZo;f5bLHK_;X$Rlzs0NWsuh!O+~w2!s@zgF_UI3=B;s>oQAB44KSmG+B^QViF@i zqdAbF%4h);mzkW*=m})4V>BXY#AFes=?F6{z-Cy2%}{6d7PjQ&IuP;uv+^DW5vjn> KJ=MF*j{yLaxhOIK diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.aptana.explorer.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.aptana.explorer.prefs index 752d73cf4..992cdf2bf 100644 --- a/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.aptana.explorer.prefs +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.aptana.explorer.prefs @@ -1,2 +1,2 @@ -activeProject=demo +activeProject=trustie eclipse.preferences.version=1 diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.aptana.portal.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.aptana.portal.ui.prefs index a710d7ff4..e78c19c52 100644 --- a/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.aptana.portal.ui.prefs +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.aptana.portal.ui.prefs @@ -1,2 +1,2 @@ eclipse.preferences.version=1 -last_known_studio_version=3.4.0.1358388620 +last_known_studio_version=3.4.2.1368863613 diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.aptana.theme.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.aptana.theme.prefs index 590c84632..bc6c0d7c7 100644 --- a/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.aptana.theme.prefs +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.aptana.theme.prefs @@ -1,7 +1,7 @@ ACTIVE_HYPERLINK_COLOR=84,143,160 ACTIVE_THEME=Aptana Studio HYPERLINK_COLOR=84,143,160 -THEME_CHANGED=1394527579080 +THEME_CHANGED=1421465443240 eclipse.preferences.version=1 hyperlinkColor=84,143,160 hyperlinkColor.SystemDefault=false diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs index 71a846af6..310adab05 100644 --- a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs @@ -2,6 +2,6 @@ PROBLEMS_FILTERS_MIGRATE=true SHOW_COOLBAR=true SHOW_PERSPECTIVEBAR=true eclipse.preferences.version=1 -platformState=1394526372425 +platformState=1420528131671 quickStart=false tipsAndTricks=true diff --git a/.metadata/.plugins/org.eclipse.debug.core/.launches/Firefox - Internal Server.launch b/.metadata/.plugins/org.eclipse.debug.core/.launches/Firefox - Internal Server.launch index 678ced8a0..08a9581b9 100644 --- a/.metadata/.plugins/org.eclipse.debug.core/.launches/Firefox - Internal Server.launch +++ b/.metadata/.plugins/org.eclipse.debug.core/.launches/Firefox - Internal Server.launch @@ -3,7 +3,7 @@ - + diff --git a/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml index 4868ecd96..eba54f80b 100644 --- a/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml +++ b/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml @@ -1,14 +1,14 @@

    - - - - + + + + - +
    diff --git a/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml b/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml index 88eaacee1..cd47216f4 100644 --- a/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml +++ b/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml @@ -1,5 +1,5 @@ - + @@ -8,14 +8,14 @@ - + - - - + + + - + @@ -37,7 +37,7 @@ demo -E:\code\demo +C:\Users\zh @@ -66,10 +66,10 @@ - - + + - + @@ -78,7 +78,7 @@ - + @@ -124,14 +124,19 @@ - - - - + + + + + + + + + - + @@ -166,15 +171,11 @@ - - - - - - - - - + + + + + @@ -188,6 +189,9 @@ + + + diff --git a/Gemfile b/Gemfile index 6c2101345..2c1f05857 100644 --- a/Gemfile +++ b/Gemfile @@ -52,6 +52,9 @@ group :development, :test do gem 'pry' gem 'pry-nav' + gem 'rspec-rails' , '2.13.1' + gem 'guard-rspec','2.5.0' + end diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/nuncio.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/nuncio.css index e2700e5b7..2c439bd00 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/nuncio.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/nuncio.css @@ -1,164 +1,164 @@ -.overlay_nuncio img { border: none; } - -.overlay_nuncio { - background-color: #666666; -} - -.nuncio_nw { - width: 12px; - height: 28px; - background: url(nuncio/top_left.png) no-repeat; -} - -.nuncio_n { - background: url(nuncio/top_mid.png) repeat-x; - height: 28px; -} - -.nuncio_ne { - width: 21px; - height: 28px; - background: url(nuncio/top_right.png) no-repeat; -} - -.nuncio_e { - width: 21px; - background: url(nuncio/center_right.png) repeat-y top right; -} - -.nuncio_w { - width: 12px; - background: url(nuncio/center_left.png) repeat-y top left; -} - -.nuncio_sw { - width: 12px; - height: 18px; - background: url(nuncio/bottom_left.png) no-repeat; -} - -.nuncio_s { - background: url(nuncio/bottom_mid.png) repeat-x 0 0; - height: 18px; -} - -.nuncio_se, .nuncio_sizer { - width: 21px; - height: 18px; - background: url(nuncio/bottom_right.png) no-repeat; -} - -.nuncio_close { - width: 14px; - height: 14px; - background: url(nuncio/close.png) no-repeat; - position:absolute; - top:10px; - right:22px; - cursor:pointer; - z-index:2000; -} - -.nuncio_minimize { - width: 14px; - height: 15px; - background: url(nuncio/minimize.png) no-repeat; - position:absolute; - top:10px; - right:40px; - cursor:pointer; - z-index:2000; -} - -.nuncio_title { - float:left; - font-size:11px; - font-weight: bold; - font-style: italic; - color: #fff; - width: 100% -} - -.nuncio_content { - background: url(nuncio/overlay.png) repeat; - overflow:auto; - color: #ddd; - font-family: Tahoma, Arial, "sans-serif"; - font-size: 10px; -} - -.nuncio_sizer { - cursor:se-resize; -} - - -.top_draggable, .bottom_draggable { - cursor:move -} -/* FOR IE */ -* html .nuncio_nw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/top_left.png", sizingMethod="crop"); -} - -* html .nuncio_n { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/top_mid.png", sizingMethod="scale"); -} - -* html .nuncio_ne { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/top_right.png", sizingMethod="crop"); -} - -* html .nuncio_w { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/center_left.png", sizingMethod="scale"); -} - -* html .nuncio_e { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/center_right.png", sizingMethod="scale"); -} - -* html .nuncio_sw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/bottom_left.png", sizingMethod="crop"); -} - -* html .nuncio_s { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/bottom_mid.png", sizingMethod="scale"); -} - -* html .nuncio_se { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/bottom_right.png", sizingMethod="crop"); -} - -* html .nuncio_sizer { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/bottom_right.png", sizingMethod="crop"); -} - -* html .nuncio_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/close.png", sizingMethod="crop"); -} - -* html .nuncio_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/minimize.png", sizingMethod="crop"); -} - +.overlay_nuncio img { border: none; } + +.overlay_nuncio { + background-color: #666666; +} + +.nuncio_nw { + width: 12px; + height: 28px; + background: url(nuncio/top_left.png) no-repeat; +} + +.nuncio_n { + background: url(nuncio/top_mid.png) repeat-x; + height: 28px; +} + +.nuncio_ne { + width: 21px; + height: 28px; + background: url(nuncio/top_right.png) no-repeat; +} + +.nuncio_e { + width: 21px; + background: url(nuncio/center_right.png) repeat-y top right; +} + +.nuncio_w { + width: 12px; + background: url(nuncio/center_left.png) repeat-y top left; +} + +.nuncio_sw { + width: 12px; + height: 18px; + background: url(nuncio/bottom_left.png) no-repeat; +} + +.nuncio_s { + background: url(nuncio/bottom_mid.png) repeat-x 0 0; + height: 18px; +} + +.nuncio_se, .nuncio_sizer { + width: 21px; + height: 18px; + background: url(nuncio/bottom_right.png) no-repeat; +} + +.nuncio_close { + width: 14px; + height: 14px; + background: url(nuncio/close.png) no-repeat; + position:absolute; + top:10px; + right:22px; + cursor:pointer; + z-index:2000; +} + +.nuncio_minimize { + width: 14px; + height: 15px; + background: url(nuncio/minimize.png) no-repeat; + position:absolute; + top:10px; + right:40px; + cursor:pointer; + z-index:2000; +} + +.nuncio_title { + float:left; + font-size:11px; + font-weight: bold; + font-style: italic; + color: #fff; + width: 100% +} + +.nuncio_content { + background: url(nuncio/overlay.png) repeat; + overflow:auto; + color: #ddd; + font-family: Tahoma, Arial, "sans-serif"; + font-size: 10px; +} + +.nuncio_sizer { + cursor:se-resize; +} + + +.top_draggable, .bottom_draggable { + cursor:move +} +/* FOR IE */ +* html .nuncio_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/top_left.png", sizingMethod="crop"); +} + +* html .nuncio_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/top_mid.png", sizingMethod="scale"); +} + +* html .nuncio_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/top_right.png", sizingMethod="crop"); +} + +* html .nuncio_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/center_left.png", sizingMethod="scale"); +} + +* html .nuncio_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/center_right.png", sizingMethod="scale"); +} + +* html .nuncio_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/bottom_left.png", sizingMethod="crop"); +} + +* html .nuncio_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/bottom_mid.png", sizingMethod="scale"); +} + +* html .nuncio_se { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/bottom_right.png", sizingMethod="crop"); +} + +* html .nuncio_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/bottom_right.png", sizingMethod="crop"); +} + +* html .nuncio_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/close.png", sizingMethod="crop"); +} + +* html .nuncio_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/minimize.png", sizingMethod="crop"); +} + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/spread.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/spread.css index d7d722e8a..9bda2a68d 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/spread.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/spread.css @@ -1,108 +1,108 @@ -.overlay_spread { - background-color: #85BBEF; - filter:alpha(opacity=60); - -moz-opacity: 0.6; - opacity: 0.6; -} - -.spread_nw { - background: transparent url(spread/left-top.gif) no-repeat 0 0; - width:10px; - height:25px; -} - -.spread_n { - background: transparent url(spread/top-middle.gif) repeat-x 0 0; - height:25px; -} - -.spread_ne { - background: transparent url(spread/right-top.gif) no-repeat 0 0; - width:10px; - height:25px; -} - -.spread_w { - background: transparent url(spread/frame-left.gif) repeat-y top left; - width:7px; -} - -.spread_e { - background: transparent url(spread/frame-right.gif) repeat-y top right; - width:7px; -} - -.spread_sw { - background: transparent url(spread/bottom-left-c.gif) no-repeat 0 0; - width:7px; - height:7px; -} - -.spread_s { - background: transparent url(spread/bottom-middle.gif) repeat-x 0 0; - height:7px; -} - -.spread_se, .spread_sizer { - background: transparent url(spread/bottom-right-c.gif) no-repeat 0 0; - width:7px; - height:7px; -} - -.spread_sizer { - cursor:se-resize; -} - -.spread_close { - width: 23px; - height: 23px; - background: transparent url(spread/button-close-focus.gif) no-repeat 0 0; - position:absolute; - top:0px; - right:11px; - cursor:pointer; - z-index:1000; -} - -.spread_minimize { - width: 23px; - height: 23px; - background: transparent url(spread/button-min-focus.gif) no-repeat 0 0; - position:absolute; - top:0px; - right:55px; - cursor:pointer; - z-index:1000; -} - -.spread_maximize { - width: 23px; - height: 23px; - background: transparent url(spread/button-max-focus.gif) no-repeat 0 0; - position:absolute; - top:0px; - right:33px; - cursor:pointer; - z-index:1000; -} - -.spread_title { - float:left; - height:14px; - font-family: Tahoma, Arial, sans-serif; - font-size:14px; - font-weight:bold; - text-align:left; - margin-top:2px; - width:100%; - color:#E47211; -} - -.spread_content { - overflow:auto; - color: #222; - font-family: Tahoma, Arial, sans-serif; - font-size: 10px; - background:#A9EA00; -} - +.overlay_spread { + background-color: #85BBEF; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +.spread_nw { + background: transparent url(spread/left-top.gif) no-repeat 0 0; + width:10px; + height:25px; +} + +.spread_n { + background: transparent url(spread/top-middle.gif) repeat-x 0 0; + height:25px; +} + +.spread_ne { + background: transparent url(spread/right-top.gif) no-repeat 0 0; + width:10px; + height:25px; +} + +.spread_w { + background: transparent url(spread/frame-left.gif) repeat-y top left; + width:7px; +} + +.spread_e { + background: transparent url(spread/frame-right.gif) repeat-y top right; + width:7px; +} + +.spread_sw { + background: transparent url(spread/bottom-left-c.gif) no-repeat 0 0; + width:7px; + height:7px; +} + +.spread_s { + background: transparent url(spread/bottom-middle.gif) repeat-x 0 0; + height:7px; +} + +.spread_se, .spread_sizer { + background: transparent url(spread/bottom-right-c.gif) no-repeat 0 0; + width:7px; + height:7px; +} + +.spread_sizer { + cursor:se-resize; +} + +.spread_close { + width: 23px; + height: 23px; + background: transparent url(spread/button-close-focus.gif) no-repeat 0 0; + position:absolute; + top:0px; + right:11px; + cursor:pointer; + z-index:1000; +} + +.spread_minimize { + width: 23px; + height: 23px; + background: transparent url(spread/button-min-focus.gif) no-repeat 0 0; + position:absolute; + top:0px; + right:55px; + cursor:pointer; + z-index:1000; +} + +.spread_maximize { + width: 23px; + height: 23px; + background: transparent url(spread/button-max-focus.gif) no-repeat 0 0; + position:absolute; + top:0px; + right:33px; + cursor:pointer; + z-index:1000; +} + +.spread_title { + float:left; + height:14px; + font-family: Tahoma, Arial, sans-serif; + font-size:14px; + font-weight:bold; + text-align:left; + margin-top:2px; + width:100%; + color:#E47211; +} + +.spread_content { + overflow:auto; + color: #222; + font-family: Tahoma, Arial, sans-serif; + font-size: 10px; + background:#A9EA00; +} + From b949f70c64552b4e047317c031815248ebdf4a2d Mon Sep 17 00:00:00 2001 From: z9hang Date: Tue, 20 Jan 2015 17:42:18 +0800 Subject: [PATCH 083/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E8=BD=AC=E6=8D=A2=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/courses.rb | 14 +++++++++- app/api/mobile/entities/news.rb | 19 +++++++++++-- app/api/mobile/entities/user.rb | 21 ++++++++++++-- app/controllers/news_controller.rb | 4 ++- app/helpers/api_helper.rb | 22 +++++++++++++++ app/services/courses_service.rb | 14 +++++++--- app/services/users_service.rb | 44 ++++++++++-------------------- 7 files changed, 99 insertions(+), 39 deletions(-) create mode 100644 app/helpers/api_helper.rb diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index c6f3fdcd1..7c1aa5e7e 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -169,7 +169,7 @@ module Mobile route_param :id do get do cs = CoursesService.new - course = cs.show_course params,current_user + course = cs.show_course(params,(current_user.nil? ? User.find(2):current_user)) #course = Course.find(params[:id]) {status: 0, data: course} end @@ -196,6 +196,18 @@ module Mobile present :status, 0 end + desc "显示课程通知" + params do + + end + get "news/:id" do + cs = CoursesService.new + cs.show_course_news_authorize(current_user.nil? ? User.find(2):current_user) + news = cs.show_course_news params,current_user.nil? ? User.find(2):current_user + present :data, news, with: Mobile::Entities::News + present :status, 0 + end + end end diff --git a/app/api/mobile/entities/news.rb b/app/api/mobile/entities/news.rb index dc60e99b0..7c77f8c82 100644 --- a/app/api/mobile/entities/news.rb +++ b/app/api/mobile/entities/news.rb @@ -5,22 +5,37 @@ module Mobile expose field do |f,opt| if f.is_a?(Hash) && f.key?(field) f[field] + elsif f.is_a?(Hash) && !f.key?(field) + n = f[:news] + comments = f[:comments] + if n.is_a?(::News) + n.send(field) if n.respond_to?(field) + end + end end end #新闻标题 news_expose :title + + expose :author,using: Mobile::Entities::User do |f, opt| + n = f[:news] + n.author if n.respond_to?(:author) + end #作者id news_expose :author_id #作者名 news_expose :author_name #新闻内容 - news_expose :content + news_expose :description #发布时间 - news_expose :time + news_expose :created_on #评论数量 news_expose :comments_count + #评论 + news_expose :comments + end end diff --git a/app/api/mobile/entities/user.rb b/app/api/mobile/entities/user.rb index 2a4c0cdaa..1f52ae841 100644 --- a/app/api/mobile/entities/user.rb +++ b/app/api/mobile/entities/user.rb @@ -1,12 +1,29 @@ module Mobile module Entities class User < Grape::Entity + include ApplicationHelper + include ApiHelper def self.user_expose(f) expose f do |u,opt| if u.is_a?(Hash) && u.key?(f) u[f] - #else - # u.send(f) if u.respond_to?(f) + elsif u.is_a?(::User) + if u.respond_to?(f) + u.send(f) + else + case f + when :img_url + url_to_avatar(u) + when :gender + u.user_extensions.gender.nil? ? 0 : u.user_extensions.gender + when :work_unit + get_user_work_unit u + when :location + get_user_location u + when :brief_introduction + u.user_extensions.brief_introduction + end + end end end diff --git a/app/controllers/news_controller.rb b/app/controllers/news_controller.rb index 9eeddacf9..2df17d73f 100644 --- a/app/controllers/news_controller.rb +++ b/app/controllers/news_controller.rb @@ -92,7 +92,9 @@ class NewsController < ApplicationController def show cs = CoursesService.new - @news,@comments = cs.show_course_news params,User.current + result = cs.show_course_news params,User.current + @news = result[:news] + @comments = result[:comments] #@comments = @news.comments #@comments.reverse! if User.current.wants_comments_in_reverse_order? #modify by nwb diff --git a/app/helpers/api_helper.rb b/app/helpers/api_helper.rb new file mode 100644 index 000000000..2b85d2be4 --- /dev/null +++ b/app/helpers/api_helper.rb @@ -0,0 +1,22 @@ +module ApiHelper + #获取用户的工作单位 + def get_user_work_unit user + work_unit = "" + if user.user_extensions.identity == 0 || user.user_extensions.identity == 1 + work_unit = user.user_extensions.school.name unless user.user_extensions.school.nil? + elsif user.user_extensions.identity == 3 + work_unit = user.user_extensions.occupation + elsif user.user_extensions.identity == 2 + work_unit = user.firstname + end + work_unit + end + + #获取用户地区 + def get_user_location user + location = "" + location << (user.user_extensions.location || '') + location << (user.user_extensions.location_city || '') + location + end +end \ No newline at end of file diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index 1fef2c27f..7e3b2a545 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -112,14 +112,14 @@ class CoursesService scope = @course ? @course.news.course_visible : News.course_visible news = [] scope.each do |n| - news << {:title => n.title,:author_name => n.author.name,:author_id => n.author.id, :content => n.description,:time => format_time(n.created_on),:comments_count => n.comments_count} + news << {:title => n.title,:author_name => n.author.name,:author_id => n.author.id, :description => n.description,:created_on => format_time(n.created_on),:comments_count => n.comments_count} end news end #查看新闻权限验证 - def show_course_news_authorize(current_user,course) - unless current_user.allowed_to?({:controller => 'news', :action => 'show'}, course) + def show_course_news_authorize(current_user) + unless current_user.allowed_to?({:controller => 'news', :action => 'show'}, false) raise '403' end end @@ -129,7 +129,13 @@ class CoursesService @news = News.find(params[:id]) @comments = @news.comments @comments.reverse! if current_user.wants_comments_in_reverse_order? - [@news,@comments] + {:news => @news,:comments => @comments} + #comments = [] + #@comments.each do |comment| + # comments << {:author_id => comment.author_id,:author_name => comment.author.name,:commont_content => comment.comments,:time => format_time(comment.created_on)} + #end + #{:title => @news.title,:author_name => @news.author.name,:author_id => @news.author.id, :description => @news.description,:created_on => format_time(@news.created_on), + # :comments_count => @news.comments_count,:comments => comments} end diff --git a/app/services/users_service.rb b/app/services/users_service.rb index cc4d0f725..ab2ee23c5 100644 --- a/app/services/users_service.rb +++ b/app/services/users_service.rb @@ -3,6 +3,7 @@ class UsersService include AccountHelper include AvatarHelper include CoursesHelper + include ApiHelper #将用户注册的功能函数写这里 #参数约定 #成功返回注册后的User实例,失败直接抛异常 @@ -36,11 +37,12 @@ class UsersService ue.user_id = @user.id ue.save end - img_url = url_to_avatar(@user) - gender = @user.user_extensions.gender.nil? ? 0 : @user.user_extensions.gender - work_unit = get_user_work_unit @user - location = get_user_location @user - {:id => @user.id, :img_url => img_url, :nickname => @user.login, :gender => gender, :work_unit => work_unit, :mail => @user.mail, :location => location, :brief_introduction => @user.user_extensions.brief_introduction} + @user + #img_url = url_to_avatar(@user) + #gender = @user.user_extensions.gender.nil? ? 0 : @user.user_extensions.gender + #work_unit = get_user_work_unit @user + #location = get_user_location @user + #{:id => @user.id, :img_url => img_url, :nickname => @user.login, :gender => gender, :work_unit => work_unit, :mail => @user.mail, :location => location, :brief_introduction => @user.user_extensions.brief_introduction} end #显示用户 @@ -99,33 +101,17 @@ class UsersService logger.error "[Error] avatar : users_service#edit_user ===> #{e}" end end - img_url = url_to_avatar(@user) - gender = @user.user_extensions.gender.nil? ? 0 : @user.user_extensions.gender - work_unit = get_user_work_unit @user - location = get_user_location @user - {:id => @user.id, :img_url => img_url, :nickname => @user.login, :gender => gender, :work_unit => work_unit, :mail => @user.mail, :location => location, :brief_introduction => @user.user_extensions.brief_introduction} + #img_url = url_to_avatar(@user) + #gender = @user.user_extensions.gender.nil? ? 0 : @user.user_extensions.gender + #work_unit = get_user_work_unit @user + #location = get_user_location @user + #{:id => @user.id, :img_url => img_url, :nickname => @user.login, :gender => gender, :work_unit => work_unit, :mail => @user.mail, :location => location, :brief_introduction => @user.user_extensions.brief_introduction} + @user end - #获取用户的工作单位 - def get_user_work_unit user - work_unit = "" - if user.user_extensions.identity == 0 || user.user_extensions.identity == 1 - work_unit = user.user_extensions.school.name unless user.user_extensions.school.nil? - elsif user.user_extensions.identity == 3 - work_unit = user.user_extensions.occupation - elsif user.user_extensions.identity == 2 - work_unit = user.firstname - end - work_unit - end - #获取用户地区 - def get_user_location user - location = "" - location << (user.user_extensions.location || '') - location << (user.user_extensions.location_city || '') - location - end + + #关注列表 def user_watcher params From b13f2b2dc82e2206a35b414e3f02511a5e1f9b83 Mon Sep 17 00:00:00 2001 From: z9hang Date: Wed, 21 Jan 2015 11:28:09 +0800 Subject: [PATCH 084/192] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=88=91=E7=9A=84?= =?UTF-8?q?=E4=BD=9C=E5=93=81=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/homeworks.rb | 12 +++++++++- app/api/mobile/apis/users.rb | 2 +- app/api/mobile/entities/course.rb | 3 +++ app/api/mobile/entities/homework.rb | 6 +++++ app/api/mobile/entities/homework_attach.rb | 28 ++++++++++++++++++++++ app/services/homework_service.rb | 25 +++++++++++++++++++ app/services/users_service.rb | 2 +- 7 files changed, 75 insertions(+), 3 deletions(-) create mode 100644 app/api/mobile/entities/homework_attach.rb diff --git a/app/api/mobile/apis/homeworks.rb b/app/api/mobile/apis/homeworks.rb index 49f3efde6..b1e38ad22 100644 --- a/app/api/mobile/apis/homeworks.rb +++ b/app/api/mobile/apis/homeworks.rb @@ -20,8 +20,18 @@ module Mobile present :status, 0 end end - end + desc "我的作品列表" + params do + requires :token, type: String + end + get ':user_id/homework_attachs' do + ue = Homeworks.get_service.my_homework_list params,current_user.nil? ? User.find(2):current_user + present :data, ue,with: Mobile::Entities::Course + present :status, 0 + end + + end end end end diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index 878748793..69260716e 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -51,7 +51,7 @@ module Mobile desc '获取用户课程' params do - + optional :token, type: String end get ':id/courses' do diff --git a/app/api/mobile/entities/course.rb b/app/api/mobile/entities/course.rb index ffae1db1f..ec00579ce 100644 --- a/app/api/mobile/entities/course.rb +++ b/app/api/mobile/entities/course.rb @@ -50,6 +50,9 @@ module Mobile c[:course].teacher end end + expose :my_homework,using: Mobile::Entities::HomeworkAttach do |f, opt| + f[:my_homework] if f.is_a?(Hash) && f.key?(:my_homework) + end end end end diff --git a/app/api/mobile/entities/homework.rb b/app/api/mobile/entities/homework.rb index 4eb6bbfdf..ae3637106 100644 --- a/app/api/mobile/entities/homework.rb +++ b/app/api/mobile/entities/homework.rb @@ -5,6 +5,12 @@ module Mobile expose field do |f,opt| if f.is_a?(Hash) && f.key?(field) f[field] + elsif f.is_a?(::Bid) + if f.respond_to?(field) + f.send(field) + else + + end end end end diff --git a/app/api/mobile/entities/homework_attach.rb b/app/api/mobile/entities/homework_attach.rb new file mode 100644 index 000000000..8fa7a1dd1 --- /dev/null +++ b/app/api/mobile/entities/homework_attach.rb @@ -0,0 +1,28 @@ +module Mobile + module Entities + class HomeworkAttach < Grape::Entity + def self.homework_attach_expose(field) + expose field do |f,opt| + if f.is_a?(Hash) && f.key?(field) + f[field] + elsif f.is_a?(::HomeworkAttach) + if f.respond_to?(field) + f.send(field) + else + case field + when :homework_times + f.bid.courses.first.homeworks.index(f.bid) + 1 unless (f.bid.nil? || f.bid.courses.nil? || f.bid.courses.first.nil?) + #course.homeworks.index(@bid) + 1 + end + end + end + end + end + + homework_attach_expose :id + homework_attach_expose :name + homework_attach_expose :homework_times + #homework_attach_expose :user + end + end +end \ No newline at end of file diff --git a/app/services/homework_service.rb b/app/services/homework_service.rb index acbaf475d..871ae9801 100644 --- a/app/services/homework_service.rb +++ b/app/services/homework_service.rb @@ -153,4 +153,29 @@ class HomeworkService reply_time = fulr.created_on end end + + #我的作品列表 + def my_homework_list params,current_user + @user = User.find(params[:user_id]) + if !current_user.admin? && !@user.active? + raise '404' + return + end + if current_user == @user || current_user.admin? + membership = @user.coursememberships.all + else + membership = @user.coursememberships.all(:conditions => Course.visible_condition(current_user)) + end + membership.sort! {|older, newer| newer.created_on <=> older.created_on } + course_list = [] + membership.each do |mp| + my_homeworks = [] + mp.course.homeworks.each do |bid| + hw = bid.homeworks.where("user_id = #{current_user.id}") + my_homeworks << hw[0] unless (hw.nil? || hw[0].nil?) + end + course_list << {:course => mp.course,:img_url => url_to_avatar(mp.course),:my_homework => my_homeworks} + end + course_list + end end \ No newline at end of file diff --git a/app/services/users_service.rb b/app/services/users_service.rb index ab2ee23c5..897171b55 100644 --- a/app/services/users_service.rb +++ b/app/services/users_service.rb @@ -129,7 +129,7 @@ class UsersService if current_user == @user || current_user.admin? membership = @user.coursememberships.all else - membership = @user.coursememberships.all(:conditions => Course.visible_condition(User.current)) + membership = @user.coursememberships.all(:conditions => Course.visible_condition(current_user)) end membership.sort! {|older, newer| newer.created_on <=> older.created_on } course_list = [] From 89e0f98034ac9acca951543600c86507cf6eaaf6 Mon Sep 17 00:00:00 2001 From: z9hang Date: Wed, 21 Jan 2015 15:29:05 +0800 Subject: [PATCH 085/192] =?UTF-8?q?=E5=90=AF=E5=8A=A8=E5=8C=BF=E8=AF=84?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/homeworks.rb | 19 +++++++++++++++++ app/helpers/api_helper.rb | 6 ++++++ app/services/homework_service.rb | 36 +++++++++++++++++++++++++++++++- 3 files changed, 60 insertions(+), 1 deletion(-) diff --git a/app/api/mobile/apis/homeworks.rb b/app/api/mobile/apis/homeworks.rb index b1e38ad22..dd6708b22 100644 --- a/app/api/mobile/apis/homeworks.rb +++ b/app/api/mobile/apis/homeworks.rb @@ -31,6 +31,25 @@ module Mobile present :status, 0 end + desc "启动匿评" + params do + requires :token, type: String + end + post ':id/alert_homework_anonymous_comment' do + statue = Homeworks.get_service.start_anonymous_comment params,current_user.nil? ? User.find(2):current_user + messages = "" + case statue + when 1 + messages = "启动成功" + when 2 + messages = "启动失败,作业总数大于等于2份时才能启动匿评" + when 3 + messages = "已开启匿评,请务重复开启" + end + present :data,messages + present :status, statue + end + end end end diff --git a/app/helpers/api_helper.rb b/app/helpers/api_helper.rb index 2b85d2be4..78f954ab4 100644 --- a/app/helpers/api_helper.rb +++ b/app/helpers/api_helper.rb @@ -19,4 +19,10 @@ module ApiHelper location << (user.user_extensions.location_city || '') location end + + + def get_assigned_homeworks(homeworks, n, index) + homeworks += homeworks + homeworks[index + 1 .. index + n] + end end \ No newline at end of file diff --git a/app/services/homework_service.rb b/app/services/homework_service.rb index 871ae9801..a659b167d 100644 --- a/app/services/homework_service.rb +++ b/app/services/homework_service.rb @@ -4,6 +4,7 @@ class HomeworkService include AttachmentsHelper include ApplicationHelper include WordsHelper + include ApiHelper # 作业详情(老师才显示启动匿评,学生不显示 ) # many_times 第几次(作业) @@ -27,7 +28,7 @@ class HomeworkService :description => description, :homework_state => state,:open_anonymous_evaluation => open_anonymous_evaluation} end - # 启动作业匿评 + # 启动作业匿评前提示信息 def alert_homework_anonymous_comment params @bid = Bid.find params[:id] @course = @bid.courses.first @@ -52,6 +53,39 @@ class HomeworkService @percent = format("%.2f",(@cur_size.to_f / ( @totle_size == 0 ? 1 : @totle_size)) * 100) [@bid,@totle_size,@cur_size,@percent] end + + #启动匿评 + #statue 1:启动成功,2:启动失败,作业总数大于等于2份时才能启动匿评,3:已开启匿评,请务重复开启 + def start_anonymous_comment params,current_user + @bid = Bid.find(params[:id]) + @course = @bid.courses.first + unless is_course_teacher(current_user,@course) || current_user.admin? + @statue = 4 + raise '403' + end + if(@bid.comment_status == 0) + homeworks = @bid.homeworks + if(homeworks && homeworks.size >= 2) + homeworks.each_with_index do |homework, index| + user = homework.user + n = @bid.evaluation_num + n = n < homeworks.size ? n : homeworks.size - 1 + assigned_homeworks = get_assigned_homeworks(homeworks, n, index) + assigned_homeworks.each do |h| + @homework_evaluation = HomeworkEvaluation.new(user_id: user.id, homework_attach_id: h.id) + @homework_evaluation.save + end + end + @bid.update_column('comment_status', 1) + @statue = 1 + else + @statue = 2 + end + else + @statue = 3 + end + @statue + end # 匿评作品详情 # attachs 该作品的所有附件 From b6207c0a476fe0bd5ad6c3e0870de7b9fec1800b Mon Sep 17 00:00:00 2001 From: z9hang Date: Wed, 21 Jan 2015 15:37:59 +0800 Subject: [PATCH 086/192] =?UTF-8?q?=E5=85=B3=E9=97=AD=E5=8C=BF=E8=AF=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/homeworks.rb | 11 ++++++++++- app/services/homework_service.rb | 9 +++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/app/api/mobile/apis/homeworks.rb b/app/api/mobile/apis/homeworks.rb index dd6708b22..a7bb544af 100644 --- a/app/api/mobile/apis/homeworks.rb +++ b/app/api/mobile/apis/homeworks.rb @@ -35,7 +35,7 @@ module Mobile params do requires :token, type: String end - post ':id/alert_homework_anonymous_comment' do + post ':id/start_anonymous_comment' do statue = Homeworks.get_service.start_anonymous_comment params,current_user.nil? ? User.find(2):current_user messages = "" case statue @@ -50,6 +50,15 @@ module Mobile present :status, statue end + desc "关闭匿评" + params do + requires :token, type: String + end + post ':id/stop_anonymous_comment' do + Homeworks.get_service.stop_anonymous_comment params,current_user.nil? ? User.find(2):current_user + present :status, 0 + end + end end end diff --git a/app/services/homework_service.rb b/app/services/homework_service.rb index a659b167d..fe4b77404 100644 --- a/app/services/homework_service.rb +++ b/app/services/homework_service.rb @@ -86,6 +86,15 @@ class HomeworkService end @statue end + #关闭匿评 + def stop_anonymous_comment params,current_user + @bid = Bid.find(params[:id]) + @course = @bid.courses.first + unless is_course_teacher(current_user,@course) || current_user.admin? + raise '403' + end + @bid.update_column('comment_status', 2) + end # 匿评作品详情 # attachs 该作品的所有附件 From 6c0f47d96d313551e536ae57f814432b9e680fa1 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Thu, 22 Jan 2015 16:40:22 +0800 Subject: [PATCH 087/192] =?UTF-8?q?=E6=97=A5=E5=BF=97=E8=B7=AF=E7=94=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/routes.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/routes.rb b/config/routes.rb index 602a8dda8..c8568a486 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -820,6 +820,8 @@ RedmineApp::Application.routes.draw do ##added by lizanle 日志查看路由 match 'system_log/index' + match 'system_log/access_analysis' + match 'system_log/time_analysis' match "/system_log" ,:to => 'system_log#index' match 'system_log/clear' ##ended by lizanle From f69ed3d51170762568d84259525565ab92723eb0 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Thu, 22 Jan 2015 16:41:13 +0800 Subject: [PATCH 088/192] =?UTF-8?q?=E6=B7=BB=E5=8A=A0Kaminari=E5=88=86?= =?UTF-8?q?=E9=A1=B5=E6=A0=B7=E5=BC=8F=E5=92=8C=E6=90=9C=E7=B4=A2=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/stylesheets/application.css | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index 2c8e1f9b8..ae62f79b7 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -2921,4 +2921,28 @@ input[class~='m3p10'], .m3p10 { /*lizanle 日誌搜索結果樣式*/ .search_results { color: red; +} +/*lizanle 分页样式*/ +.pagination ul li a, .pagination ul li span{ + background-color: #FFFFFF; + border-color: #DDDDDD; + border-image: none; + border-style: solid; + border-width: 1px 1px 1px 1px; + float: left; + line-height: 20px; + padding: 4px 12px; + text-decoration: none; +} +.pagination ul a { + color: #9B9B9B; +} +.pagination ul li a:hover, .pagination ul li a:focus, .pagination ul .active a, .pagination ul .active span{ + background-color: #ffc02f; + border: 1px solid #ffc02f; +} +.pagination ul li{ + float: left; + margin-right: 3px; + list-style: none outside none; } \ No newline at end of file From c82722c2202e015a18ff2deed9e570b105b53333 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Thu, 22 Jan 2015 16:41:56 +0800 Subject: [PATCH 089/192] =?UTF-8?q?=E6=97=A5=E6=9C=9F=E9=80=89=E6=8B=A9js?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/javascripts/application.js | 158 ++++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) diff --git a/public/javascripts/application.js b/public/javascripts/application.js index 1dedc1b8c..5a6c89cc0 100644 --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -685,3 +685,161 @@ function PrecentChange(obj){ $("select[id='issue_status_id']").find("option[value='2']").attr("selected","selected"); } } + +//added by lizanle 日期選擇js +function HS_DateAdd(interval,number,date){ + number = parseInt(number); + if (typeof(date)=="string"){var date = new Date(date.split("-")[0],date.split("-")[1],date.split("-")[2])} + if (typeof(date)=="object"){var date = date} + switch(interval){ + case "y":return new Date(date.getFullYear()+number,date.getMonth(),date.getDate()); break; + case "m":return new Date(date.getFullYear(),date.getMonth()+number,checkDate(date.getFullYear(),date.getMonth()+number,date.getDate())); break; + case "d":return new Date(date.getFullYear(),date.getMonth(),date.getDate()+number); break; + case "w":return new Date(date.getFullYear(),date.getMonth(),7*number+date.getDate()); break; + } +} +function checkDate(year,month,date){ + var enddate = ["31","28","31","30","31","30","31","31","30","31","30","31"]; + var returnDate = ""; + if (year%4==0){enddate[1]="29"} + if (date>enddate[month]){returnDate = enddate[month]}else{returnDate = date} + return returnDate; +} + +function WeekDay(date){ + var theDate; + if (typeof(date)=="string"){theDate = new Date(date.split("-")[0],date.split("-")[1],date.split("-")[2]);} + if (typeof(date)=="object"){theDate = date} + return theDate.getDay(); +} +function HS_calender(){ + var lis = ""; + var style = ""; + /*可以把下面的css剪切出去独立一个css文件*/ + style +=""; + + var now; + if (typeof(arguments[0])=="string"){ + selectDate = arguments[0].split("-"); + var year = selectDate[0]; + var month = parseInt(selectDate[1])-1+""; + var date = selectDate[2]; + now = new Date(year,month,date); + }else if (typeof(arguments[0])=="object"){ + now = arguments[0]; + } + var lastMonthEndDate = HS_DateAdd("d","-1",now.getFullYear()+"-"+now.getMonth()+"-01").getDate(); + var lastMonthDate = WeekDay(now.getFullYear()+"-"+now.getMonth()+"-01"); + var thisMonthLastDate = HS_DateAdd("d","-1",now.getFullYear()+"-"+(parseInt(now.getMonth())+1).toString()+"-01"); + var thisMonthEndDate = thisMonthLastDate.getDate(); + var thisMonthEndDay = thisMonthLastDate.getDay(); + var todayObj = new Date(); + today = todayObj.getFullYear()+"-"+todayObj.getMonth()+"-"+todayObj.getDate(); + + for (i=0; i" + lis; + lastMonthEndDate--; + } + for (i=1; i<=thisMonthEndDate; i++){ // Current Month's Date + + if(today == now.getFullYear()+"-"+now.getMonth()+"-"+i){ + var todayString = now.getFullYear()+"-"+(parseInt(now.getMonth())+1).toString()+"-"+i; + lis += "
  • "+i+"
  • "; + }else{ + lis += "
  • "+i+"
  • "; + } + + } + var j=1; + for (i=thisMonthEndDay; i<6; i++){ // Next Month's Date + lis += "
  • "+j+"
  • "; + j++; + } + lis += style; + + var CalenderTitle = "»"; + CalenderTitle += "«"; + CalenderTitle += ""+now.getFullYear()+""+(parseInt(now.getMonth())+1).toString()+"月"; + + if (arguments.length>1){ + arguments[1].parentNode.parentNode.getElementsByTagName("ul")[1].innerHTML = lis; + arguments[1].parentNode.innerHTML = CalenderTitle; + + }else{ + var CalenderBox = style+"
    "+CalenderTitle+"
      "+lis+"
    "; + return CalenderBox; + } +} +function _selectThisDay(d){ + var boxObj = d.parentNode.parentNode.parentNode.parentNode.parentNode; + boxObj.targetObj.value = d.title; + boxObj.parentNode.removeChild(boxObj); +} +function closeCalender(d){ + var boxObj = d.parentNode.parentNode.parentNode; + boxObj.parentNode.removeChild(boxObj); +} + +function CalenderselectYear(obj){ + var opt = ""; + var thisYear = obj.innerHTML; + for (i=1970; i<=2020; i++){ + if (i==thisYear){ + opt += ""; + }else{ + opt += ""; + } + } + opt = ""; + obj.parentNode.innerHTML = opt; +} + +function selectThisYear(obj){ + HS_calender(obj.value+"-"+obj.parentNode.parentNode.getElementsByTagName("span")[1].getElementsByTagName("a")[0].innerHTML+"-1",obj.parentNode); +} + +function CalenderselectMonth(obj){ + var opt = ""; + var thisMonth = obj.innerHTML; + for (i=1; i<=12; i++){ + if (i==thisMonth){ + opt += ""; + }else{ + opt += ""; + } + } + opt = ""; + obj.parentNode.innerHTML = opt; +} +function selectThisMonth(obj){ + HS_calender(obj.parentNode.parentNode.getElementsByTagName("span")[0].getElementsByTagName("a")[0].innerHTML+"-"+obj.value+"-1",obj.parentNode); +} +function HS_setDate(inputObj){ + var calenderObj = document.createElement("span"); + calenderObj.innerHTML = HS_calender(new Date()); + calenderObj.style.position = "absolute"; + calenderObj.targetObj = inputObj; + inputObj.parentNode.insertBefore(calenderObj,inputObj.nextSibling); +} From c668b72dac8e575ade90da382bdb8f034787ff2b Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Thu, 22 Jan 2015 16:45:18 +0800 Subject: [PATCH 090/192] =?UTF-8?q?=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/system_log/index.html.erb | 50 +++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 14 deletions(-) diff --git a/app/views/system_log/index.html.erb b/app/views/system_log/index.html.erb index f5316c26b..edef8e023 100644 --- a/app/views/system_log/index.html.erb +++ b/app/views/system_log/index.html.erb @@ -3,27 +3,49 @@ @nav_dispaly_main_project_label = 1 @nav_dispaly_main_contest_label = 1 %> <% @nav_dispaly_forum_label = 1%> -

    日志

    -
    - - -
    -
    - <%=link_to '所有日志', :action=>:index %> | - <%=link_to '清空日志', {:action=>:clear}, {:confirm => '确认清除所有日志?'} %> | - <%=link_to_function '刷新', 'window.location.reload();' %> + + +
    + <%=link_to l(:label_log_detail), system_log_path %> | + <%=link_to l(:label_log_delete_log), system_log_clear_path, {:confirm => l(:label_log_delete_confirm),:day=>params[:day].nil? ? Time.now.strftime("%Y-%m-%d") : params[:day]}%> | + <%=link_to l(:label_log_access_analysis), system_log_access_analysis_path %> | + <%=link_to l(:label_log_time_analysis), system_log_time_analysis_path %> | + <%=link_to_function l(:label_log_refresh), 'redo()' %> +
    +
    -
      
    -<%= paginate @logs %>
    +
      
    +
    +<%= paginate @logs unless @logs.empty? %>
    + <% unless @logs.empty? %> + + <% @logs.each do |log| %> <% unless log.blank? %> -

    <%= raw log %>


    + <% end %> <%end %> - -<%= paginate @logs %> \ No newline at end of file +
    <%=l(:label_log_detail)%>
    <%= raw log %>
    + <%end %> +<%= paginate @logs unless @logs.empty? %> +
    \ No newline at end of file From 061e4599c3f4e7d5e662ba54509defb45fda8a4a Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Thu, 22 Jan 2015 16:45:57 +0800 Subject: [PATCH 091/192] =?UTF-8?q?=E9=87=8D=E6=9E=84=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3=E4=BA=86=E8=AE=B8=E5=A4=9A=E7=9A=84=E7=A9=BA=E6=8C=87?= =?UTF-8?q?=E9=92=88=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/system_log_controller.rb | 44 +++++++++++++++++++++--- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/app/controllers/system_log_controller.rb b/app/controllers/system_log_controller.rb index 9e3d208b0..92eaca0e3 100644 --- a/app/controllers/system_log_controller.rb +++ b/app/controllers/system_log_controller.rb @@ -1,17 +1,51 @@ # 显示和清理系统日志 class SystemLogController < ApplicationController - # 默认每页显示20条记录 - before_filter :require_login ,:only =>:index + + before_filter :require_login before_filter :require_admin ,:only =>:clear + # 默认每页显示20条记录 PER_PAGE = 20 layout "base" include SystemLogHelper + #查看所有日志 def index - @logs = SystemLog.logo_data(params[:page]||1,params[:per]||PER_PAGE,params[:search] ) + @logs = SystemLog.logo_data(params[:page]||1,params[:per]||PER_PAGE,params[:search] , params[:day]) + @logs + #@access_module = params[:access_module] unless params[:access_module].nil? end - def clear - SystemLog.clear + #清除日志 + def clear day + SystemLog.clear day redirect_to :action => :index + end + + #访问分析 + def access_analysis + #解析日志,然后逆序 + @log_result = SystemLog.analysis(params[:day]).reverse[1...-1] + @access_module = Hash.new + #如果日誌為空 + if @log_result && !@log_result.empty? + #将数组中的模块访问统计出来放到hash中 每条记录的第四个值是Controller#action的形式 + @log_result.collect! {|r| @access_module[r[3]].nil? ? + @access_module[r[3]] = 1 : @access_module[r[3]] +=1 } + # 去掉key可能为空记录 排序,然后取逆序 + @access_module = @access_module.delete_if{|k,v| k.nil?}.sort_by{|key,val| val}.reverse + else + @access_module end + end + + #耗时分析 + def time_analysis + #解析日志 + @log_result = SystemLog.analysis(params[:day]).reverse[1...-1] + if @log_result && !@log_result.empty? + #分页 + @log_result = Kaminari.paginate_array(@log_result).page(params[:page]||1).per(params[:per]||PER_PAGE) + else + @log_result = [] + end + end end From 59a47002aeef4f46e47266d59fbb05c489cc4bf8 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Thu, 22 Jan 2015 16:46:06 +0800 Subject: [PATCH 092/192] =?UTF-8?q?=E9=87=8D=E6=9E=84=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3=E4=BA=86=E8=AE=B8=E5=A4=9A=E7=9A=84=E7=A9=BA=E6=8C=87?= =?UTF-8?q?=E9=92=88=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/system_log_helper.rb | 125 +++++++++++++++++++++++++++---- 1 file changed, 112 insertions(+), 13 deletions(-) diff --git a/app/helpers/system_log_helper.rb b/app/helpers/system_log_helper.rb index 4528143ef..1125904c8 100644 --- a/app/helpers/system_log_helper.rb +++ b/app/helpers/system_log_helper.rb @@ -2,9 +2,11 @@ module SystemLogHelper class SystemLog class << self # 分页(支持多关键字查询) - def logo_data(page,per,search) - logs = find_all_logs - + def logo_data(page,per,search,day) + logs = find_all_logs day + if logs.empty? #如果返回的是空數組,就說明日誌文件不存在 + return logs + end # 根据search参数来决定是否需要查询 keywords = search if keywords && !keywords.strip.blank? @@ -14,43 +16,140 @@ module SystemLogHelper logs = logs.find_all do |log| keywords.all? { |r| log =~ r } end + #用Kaminari分页 logs = Kaminari.paginate_array(logs).page(page).per(per).collect! {|log| parse(log)} logs.collect! do |log| keywords.each { |r| log.gsub!(r, '\0')} log end else - logs = Kaminari.paginate_array(logs).page(page).per(per).collect! {|log| parse(log)} + logs = Kaminari.paginate_array(logs).page(page).per(per).collect! {|log| parse(log)} end logs end #清除日誌 - def clear - File.open(logfile_path, 'w') do |f| - f.print '' + def clear day + if File::exists?(logfile_path day) + File.open(logfile_path(day), 'w') do |f| + f.print '' + end + else end end #讀取日誌 private - def find_all_logs - File.open(logfile_path) do |f| - #打开文件,并按照正则表达式切分,逆序,最新一个记录可以扔掉(因为最新的记录永远都是访问System_log) - f.read.split("Processing").reverse[1..-1] + def find_all_logs day + if File::exists?(logfile_path day) + File.open(logfile_path day) do |f| + #打开文件,并按照正则表达式切分,逆序,最新一个记录可以扔掉(因为最新的记录永远都是访问System_log) + f.read.split("Processing").reverse[1..-1] + end + else + [] end end # 日志文件的路径,一般在Rails.root/log下,根据环境配置 # 依次记录到product.log development.log test.log中 - def logfile_path - File.join(Rails.root, "log", "#{Rails.env}.log") + def logfile_path day + #将日期处理成2015-01-01的形式 + unless day.nil? + dayArr = day.split('-') + if dayArr[1].length == 1 + dayArr[1] = "0" + dayArr[1] + end + if dayArr[2].length == 1 + dayArr[2] = "0" + dayArr[2] + end + day = dayArr.join('-') + end + #如果不是當天,則需要加後綴 + if !day.nil? && !day.strip.blank? && day != Time.now.strftime("%Y-%m-%d") + File.join(Rails.root, "log", "#{Rails.env}.log.#{day.gsub('-','')}") + else + File.join(Rails.root, "log", "#{Rails.env}.log") + end end #替換換行符 def parse(log) ERB::Util.html_escape(log.gsub(/\e\[[\d;m]+/, '')).gsub("\n", "
    ") end + + #定义响应正则表达式 2015-01-20 11:31:13 INFO -- Completed 200 OK in 125ms (Views: 81.0ms | ActiveRecord: 2.0ms) + def response_regex + 'Completed \d+ \w+ in (\d+)ms \(Views: (\d+\.\d+)?ms \| ActiveRecord: (\d+\.\d+)?ms\)' + end + + #将一条记录中的地址主机等都分析出来 + def get_status(paragraph) + request_regex = 'Started GET \"(\/.*)\" for ([\d]+\.[\d]+\.[\d]+\.[\d]+) at [\d]*-([\d]*-[\d]* [\d]*:[\d]*:[\d]*)' + controller_regex = 'Processing by ([\w]+#[\w]+)' + page_time_regex = 'Views: \d+(\.\d+)?ms' + activeRecord_time_regex = 'ActiveRecord: \d+(\.\d+)?ms' + + if paragraph.match(request_regex) != nil + request_url = paragraph.match(request_regex)[1] #正则表达式中的括号能够截取成数组 + request_host = paragraph.match(request_regex)[2] + request_at = paragraph.match(request_regex)[3] + end + + if paragraph.match(controller_regex) != nil + controller_name = paragraph.match(controller_regex)[1] + end + + if paragraph.match(response_regex) != nil + #print(paragraph.match(response_regex)) + total_time = paragraph.match(response_regex)[1] + page_time = paragraph.match(response_regex)[2] + activeRecord_time = paragraph.match(response_regex)[3] + page_time_percent = page_time.to_f/(total_time.to_f) + activeRecord_time_percent = activeRecord_time.to_f/(total_time.to_f) + else + end + request_status = [request_url, request_host, request_at, + controller_name, total_time,page_time,page_time_percent,activeRecord_time,activeRecord_time_percent] + request_status + end + + #分析日志 + public + def analysis day + csv = Array.new + #如果文件不存在,则直接返回空数组 + if File::exists?(logfile_path day) + File.open(logfile_path(day), "r:utf-8") do |file| + paragraph = "" + begin_flag = false + # 对每一行进行判断 + file.each do |line| + # 以"Started GET "开头为一个paragraph + #print(line.match('[\d]*-([\d]*-[\d]* [\d]*:[\d]*:[\d]*) INFO -- Started GET ') == nil) + if (line.match('[\d]*-([\d]*-[\d]* [\d]*:[\d]*:[\d]*) \w+ -- Started GET ') != nil) + if !begin_flag + begin_flag = true + paragraph.concat(line) + else + # 另一个paragraph的开头 + if (paragraph.match(response_regex) != nil) + csv << get_status(paragraph) + end + begin_flag = true + paragraph = line + end + else + if begin_flag + paragraph.concat(line) + else + end + end + end + end + end + csv + end end end end From 458749b921cb46288c1c28565d8d5a2dd6220770 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Thu, 22 Jan 2015 16:46:29 +0800 Subject: [PATCH 093/192] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E5=9B=BD?= =?UTF-8?q?=E9=99=85=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/locales/zh.yml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/config/locales/zh.yml b/config/locales/zh.yml index e23a563a6..47000aa33 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -2240,3 +2240,29 @@ zh: label_contain_resource: 已包含资源: label_quote_resource_failed: ",此资源引用失败! " + label_log_detail: "日志详情" + label_log_delete_log: "删除日志" + label_log_access_analysis: "访问统计" + label_log_time_analysis: "耗时分析" + label_log_refresh: "刷新" + label_log_key: "关键字:" + label_log_time: "时间:" + label_log_delete_confirm: "确认清除该天日志内容?" + label_log_access_count: "访问次数" + label_log_url: "URL路径" + label_log_ip: "访问IP" + label_log_access_time: "访问时间" + label_log_access_controller_action: "模块路径" + label_log_response_time: "响应时间" + label_log_views_time: "页面渲染时间" + label_log_access_time_percent: "页面渲染时间百分比" + label_log_active_record_time: "AR响应时间" + label_log_active_record_time_percent: "AR响应时间百分比" + views: + pagination: + first: "« 首页" + last: "末页 »" + previous: "« 上一页" + next: "下一页 »" + truncate: "..." + From 0502eb16a66b8b8c42e6dc77c6284d23d9ef4d8b Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Thu, 22 Jan 2015 16:47:29 +0800 Subject: [PATCH 094/192] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E8=AE=BF?= =?UTF-8?q?=E9=97=AE=E7=BB=9F=E8=AE=A1=E9=A1=B5=E9=9D=A2=E5=92=8C=E8=80=97?= =?UTF-8?q?=E6=97=B6=E5=88=86=E6=9E=90=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/system_log/access_analysis.html.erb | 41 ++++++++++++++ app/views/system_log/time_analysis.html.erb | 56 +++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 app/views/system_log/access_analysis.html.erb create mode 100644 app/views/system_log/time_analysis.html.erb diff --git a/app/views/system_log/access_analysis.html.erb b/app/views/system_log/access_analysis.html.erb new file mode 100644 index 000000000..ecd22b6e5 --- /dev/null +++ b/app/views/system_log/access_analysis.html.erb @@ -0,0 +1,41 @@ +<% @nav_dispaly_home_path_label = 1 + @nav_dispaly_main_course_label = 1 + @nav_dispaly_main_project_label = 1 + @nav_dispaly_main_contest_label = 1 %> +<% @nav_dispaly_forum_label = 1%> + + +
    +

    +

    + " maxlength="100" readonly="true" onclick="HS_setDate(this)"/> + +
    +

    + +
    + <%=link_to l(:label_log_detail), system_log_path %> | + <%=link_to l(:label_log_delete_log), system_log_clear_path, {:confirm => l(:label_log_delete_confirm),:day=>params[:day].nil? ? Time.now.strftime("%Y-%m-%d") : params[:day]}%> | + <%=link_to l(:label_log_access_analysis), system_log_access_analysis_path %> | + <%=link_to l(:label_log_time_analysis), system_log_time_analysis_path %> | + <%=link_to_function l(:label_log_refresh), 'redo()' %> +
    +
    +
      
    + + + + + <% unless @access_module.nil? %> +<% @access_module.each do |k, v| %> + <% unless k.blank? %> + + + <% end %> +<%end %> + <%end %> +
    <%= l(:label_log_access_analysis)%>
    <%= l(:label_log_access_controller_action)%><%= l(:label_log_access_count)%>
    <%= raw k %><%= raw v %>
    diff --git a/app/views/system_log/time_analysis.html.erb b/app/views/system_log/time_analysis.html.erb new file mode 100644 index 000000000..3f42eb6fc --- /dev/null +++ b/app/views/system_log/time_analysis.html.erb @@ -0,0 +1,56 @@ +<% @nav_dispaly_home_path_label = 1 + @nav_dispaly_main_course_label = 1 + @nav_dispaly_main_project_label = 1 + @nav_dispaly_main_contest_label = 1 %> +<% @nav_dispaly_forum_label = 1%> +
    +

    +

    + " maxlength="100" readonly="true" onclick="HS_setDate(this)"/> + +
    +

    + +
    + <%=link_to l(:label_log_detail), system_log_path %> | + <%=link_to l(:label_log_delete_log), system_log_clear_path, {:confirm => l(:label_log_delete_confirm),:day=>params[:day].nil? ? Time.now.strftime("%Y-%m-%d") : params[:day]}%> | + <%=link_to l(:label_log_access_analysis), system_log_access_analysis_path %> | + <%=link_to l(:label_log_time_analysis), system_log_time_analysis_path %> | + <%=link_to_function l(:label_log_refresh), 'redo()' %> +
    +
    +
      
    +<%= paginate @log_result unless @log_result.empty? %>
    + + + + + + + + + + + + <% unless @log_result.nil? %> +<% @log_result.each do |r| %> + <% unless r.blank? %> + + + + + + + + + + + <% end %> +<%end %> + <%end %> +
    <%= l(:label_log_time_analysis) %>
    <%= l(:label_log_url) %><%= l(:label_log_ip) %><%= l(:label_log_access_time) %><%= l(:label_log_access_controller_action) %><%= l(:label_log_response_time) %><%= l(:label_log_views_time) %><%= l(:label_log_access_time_percent) %><%= l(:label_log_active_record_time) %><%= l(:label_log_active_record_time_percent) %>
    <%= raw r[0].length>50?r[0].truncate(20) : r[0] unless r[0].nil? %><%= raw r[1] %><%= raw r[2] %><%= raw r[3] %><%= raw r[4] %><%= raw r[5] %><%= raw r[6] %><%= raw r[7] %><%= raw r[8] %>
    +<%= paginate @log_result unless @log_result.empty? %>
    \ No newline at end of file From 566f59c49eaf22fb6ec9b45647e1405a83275b64 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Thu, 22 Jan 2015 16:52:09 +0800 Subject: [PATCH 095/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=AA=E6=9C=89?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98=E6=89=8D=E8=83=BD=E6=9F=A5=E7=9C=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/system_log_controller.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/controllers/system_log_controller.rb b/app/controllers/system_log_controller.rb index 92eaca0e3..9342bd7dc 100644 --- a/app/controllers/system_log_controller.rb +++ b/app/controllers/system_log_controller.rb @@ -1,8 +1,7 @@ # 显示和清理系统日志 class SystemLogController < ApplicationController - before_filter :require_login - before_filter :require_admin ,:only =>:clear + before_filter :require_admin # 默认每页显示20条记录 PER_PAGE = 20 layout "base" From 7fc2ea04844069d17d33920bfcb492c2b849e008 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Thu, 22 Jan 2015 17:22:29 +0800 Subject: [PATCH 096/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9B=BD=E9=99=85?= =?UTF-8?q?=E5=8C=96=E6=96=87=E4=BB=B6=E5=90=8D=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/system_log/time_analysis.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/system_log/time_analysis.html.erb b/app/views/system_log/time_analysis.html.erb index 3f42eb6fc..c945e1dec 100644 --- a/app/views/system_log/time_analysis.html.erb +++ b/app/views/system_log/time_analysis.html.erb @@ -33,7 +33,7 @@ <%= l(:label_log_access_controller_action) %> <%= l(:label_log_response_time) %> <%= l(:label_log_views_time) %> - <%= l(:label_log_access_time_percent) %> + <%= l(:label_log_views_time_percent) %> <%= l(:label_log_active_record_time) %> <%= l(:label_log_active_record_time_percent) %> <% unless @log_result.nil? %> From 4d20c8080f0fce26b4f9be04fec6378c74d45c3e Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Thu, 22 Jan 2015 17:22:44 +0800 Subject: [PATCH 097/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9B=BD=E9=99=85?= =?UTF-8?q?=E5=8C=96=E6=96=87=E4=BB=B6=E5=90=8D=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/locales/zh.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/zh.yml b/config/locales/zh.yml index 47000aa33..e315ed4dd 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -2255,7 +2255,7 @@ zh: label_log_access_controller_action: "模块路径" label_log_response_time: "响应时间" label_log_views_time: "页面渲染时间" - label_log_access_time_percent: "页面渲染时间百分比" + label_log_views_time_percent: "页面渲染时间百分比" label_log_active_record_time: "AR响应时间" label_log_active_record_time_percent: "AR响应时间百分比" views: From c0b12ac60c818840a87d5f161f2224ab74907722 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Wed, 21 Jan 2015 17:42:48 +0800 Subject: [PATCH 098/192] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E5=86=97=E4=BD=99?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/system_log/access_analysis.html.erb | 5 ----- app/views/system_log/index.html.erb | 6 ------ app/views/system_log/time_analysis.html.erb | 5 ----- 3 files changed, 16 deletions(-) diff --git a/app/views/system_log/access_analysis.html.erb b/app/views/system_log/access_analysis.html.erb index ecd22b6e5..631530370 100644 --- a/app/views/system_log/access_analysis.html.erb +++ b/app/views/system_log/access_analysis.html.erb @@ -12,11 +12,6 @@

    -
    <%=link_to l(:label_log_detail), system_log_path %> | <%=link_to l(:label_log_delete_log), system_log_clear_path, {:confirm => l(:label_log_delete_confirm),:day=>params[:day].nil? ? Time.now.strftime("%Y-%m-%d") : params[:day]}%> | diff --git a/app/views/system_log/index.html.erb b/app/views/system_log/index.html.erb index edef8e023..668d79a6e 100644 --- a/app/views/system_log/index.html.erb +++ b/app/views/system_log/index.html.erb @@ -6,12 +6,6 @@
    - -
    <%=link_to l(:label_log_detail), system_log_path %> | <%=link_to l(:label_log_delete_log), system_log_clear_path, {:confirm => l(:label_log_delete_confirm),:day=>params[:day].nil? ? Time.now.strftime("%Y-%m-%d") : params[:day]}%> | diff --git a/app/views/system_log/time_analysis.html.erb b/app/views/system_log/time_analysis.html.erb index c945e1dec..bdf01ca27 100644 --- a/app/views/system_log/time_analysis.html.erb +++ b/app/views/system_log/time_analysis.html.erb @@ -10,11 +10,6 @@

    -
    <%=link_to l(:label_log_detail), system_log_path %> | <%=link_to l(:label_log_delete_log), system_log_clear_path, {:confirm => l(:label_log_delete_confirm),:day=>params[:day].nil? ? Time.now.strftime("%Y-%m-%d") : params[:day]}%> | From 4461a66c7a3b5aab380db1380f026d7872125ff6 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Wed, 21 Jan 2015 17:43:06 +0800 Subject: [PATCH 099/192] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/javascripts/application.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/javascripts/application.js b/public/javascripts/application.js index 5a6c89cc0..5692ebe83 100644 --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -843,3 +843,7 @@ function HS_setDate(inputObj){ calenderObj.targetObj = inputObj; inputObj.parentNode.insertBefore(calenderObj,inputObj.nextSibling); } +//lizanle 刷新函数 +function redo() { + window.location.reload() +} From a4d7e5f93299c188f5d895ada8f77e600052867f Mon Sep 17 00:00:00 2001 From: z9hang Date: Thu, 22 Jan 2015 09:30:29 +0800 Subject: [PATCH 100/192] =?UTF-8?q?=E5=8C=BF=E8=AF=84=E4=BD=9C=E5=93=81?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E6=98=BE=E7=A4=BA=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/homeworks.rb | 11 +++++++++++ app/api/mobile/entities/attachment.rb | 23 ++++++++++++++++++++++ app/api/mobile/entities/homework_attach.rb | 15 ++++++++++++-- app/services/homework_service.rb | 11 ++++++----- 4 files changed, 53 insertions(+), 7 deletions(-) create mode 100644 app/api/mobile/entities/attachment.rb diff --git a/app/api/mobile/apis/homeworks.rb b/app/api/mobile/apis/homeworks.rb index a7bb544af..abdf19390 100644 --- a/app/api/mobile/apis/homeworks.rb +++ b/app/api/mobile/apis/homeworks.rb @@ -59,6 +59,17 @@ module Mobile present :status, 0 end + desc "匿评作品详情" + params do + requires :token, type: String + end + get ':homework_id/anonymous_works_show' do + works = Homeworks.get_service.anonymous_works_show params + present :data, works ,with: Mobile::Entities::HomeworkAttach + present :status, 0 + end + + end end end diff --git a/app/api/mobile/entities/attachment.rb b/app/api/mobile/entities/attachment.rb new file mode 100644 index 000000000..510db89be --- /dev/null +++ b/app/api/mobile/entities/attachment.rb @@ -0,0 +1,23 @@ +module Mobile + module Entities + class Attachment < Grape::Entity + def self.attachment_expose(field) + expose field do |f,opt| + if f.is_a?(Hash) && f.key?(field) + f[field] + elsif f.is_a?(::Attachment) + if f.respond_to?(field) + f.send(field) + else + #case field + # when "" + #end + end + end + end + end + attachment_expose :filename + attachment_expose :description + end + end +end \ No newline at end of file diff --git a/app/api/mobile/entities/homework_attach.rb b/app/api/mobile/entities/homework_attach.rb index 8fa7a1dd1..256dcdf61 100644 --- a/app/api/mobile/entities/homework_attach.rb +++ b/app/api/mobile/entities/homework_attach.rb @@ -1,18 +1,22 @@ module Mobile module Entities class HomeworkAttach < Grape::Entity + include Redmine::I18n def self.homework_attach_expose(field) expose field do |f,opt| if f.is_a?(Hash) && f.key?(field) f[field] elsif f.is_a?(::HomeworkAttach) if f.respond_to?(field) - f.send(field) + if field == :created_at + format_time(f.send(:created_at)) + else + f.send(field) + end else case field when :homework_times f.bid.courses.first.homeworks.index(f.bid) + 1 unless (f.bid.nil? || f.bid.courses.nil? || f.bid.courses.first.nil?) - #course.homeworks.index(@bid) + 1 end end end @@ -22,6 +26,13 @@ module Mobile homework_attach_expose :id homework_attach_expose :name homework_attach_expose :homework_times + homework_attach_expose :description + homework_attach_expose :created_at + expose :attachments,using: Mobile::Entities::Attachment do |f, opt| + if f.respond_to?(:attachments) + f.send(:attachments) + end + end #homework_attach_expose :user end end diff --git a/app/services/homework_service.rb b/app/services/homework_service.rb index fe4b77404..33f74345f 100644 --- a/app/services/homework_service.rb +++ b/app/services/homework_service.rb @@ -105,15 +105,16 @@ class HomeworkService name = @homework.name desc = @homework.description datetime = @homework.created_at + files = [] unless @homework.attachments.empty? attachs = @homework.attachments attachs.each do |attach| - filename = attach.name - filedesc = attach.description unless attachment.description.blank? + filename = attach.filename + filedesc = attach.description unless attach.description.blank? end - end - {:name => 'name', :description => 'desc', :datetime => 'datetime', - :attchs => 'attachs', :filename => 'filename', :filedesc => 'filedesc'} + end + @homework + #{:name => name, :description => desc, :datetime => format_time(datetime)} end #作品打分/留言 From 43c5feb1f7f84920fac8301d084a941c1c5525ce Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Thu, 22 Jan 2015 10:06:16 +0800 Subject: [PATCH 101/192] =?UTF-8?q?=E8=A1=A5=E4=B8=81=EF=BC=9A=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=97=A5=E5=BF=97=E8=BF=98=E6=B2=A1=E6=9C=89=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E5=B0=B1=E8=A2=AB=E9=87=8D=E5=91=BD=E5=90=8D=E7=9A=84?= =?UTF-8?q?bug=EF=BC=9A=20https://bugs.ruby-lang.org/issues/7303?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/initializers/logger.rb | 227 ++++++++++++++++++++++++++++++++++ 1 file changed, 227 insertions(+) create mode 100644 config/initializers/logger.rb diff --git a/config/initializers/logger.rb b/config/initializers/logger.rb new file mode 100644 index 000000000..3fa792b27 --- /dev/null +++ b/config/initializers/logger.rb @@ -0,0 +1,227 @@ +# logger.rb - simple logging utility +# Copyright (C) 2000-2003, 2005, 2008, 2011 NAKAMURA, Hiroshi . +# +# Documentation:: NAKAMURA, Hiroshi and Gavin Sinclair +# License:: +# You can redistribute it and/or modify it under the same terms of Ruby's +# license; either the dual license version in 2003, or any later version. +# Revision:: $Id: logger.rb 31641 2011-05-19 00:07:25Z nobu $ +# +# A simple system for logging messages. See Logger for more documentation. + +require 'monitor' +require 'fileutils' +# == Description +# +# The Logger class provides a simple but sophisticated logging utility that +# you can use to output messages. +# +# The messages have associated levels, such as +INFO+ or +ERROR+ that indicate +# their importance. You can then give the Logger a level, and only messages +# at that level of higher will be printed. +# +# The levels are: +# +# +FATAL+:: an unhandleable error that results in a program crash +# +ERROR+:: a handleable error condition +# +WARN+:: a warning +# +INFO+:: generic (useful) information about system operation +# +DEBUG+:: low-level information for developers +# +# For instance, in a production system, you may have your Logger set to +# +INFO+ or even +WARN+ +# When you are developing the system, however, you probably +# want to know about the program's internal state, and would set the Logger to +# +DEBUG+. +# +# *Note*: Logger does not escape or sanitize any messages passed to it. +# Developers should be aware of when potentially malicious data (user-input) +# is passed to Logger, and manually escape the untrusted data: +# +# logger.info("User-input: #{input.dump}") +# logger.info("User-input: %p" % input) +# +# You can use #formatter= for escaping all data. +# +# original_formatter = Logger::Formatter.new +# logger.formatter = proc { |severity, datetime, progname, msg| +# original_formatter.call(severity, datetime, progname, msg.dump) +# } +# logger.info(input) +# +# === Example +# +# This creates a logger to the standard output stream, with a level of +WARN+ +# +# log = Logger.new(STDOUT) +# log.level = Logger::WARN +# +# log.debug("Created logger") +# log.info("Program started") +# log.warn("Nothing to do!") +# +# begin +# File.each_line(path) do |line| +# unless line =~ /^(\w+) = (.*)$/ +# log.error("Line in wrong format: #{line}") +# end +# end +# rescue => err +# log.fatal("Caught exception; exiting") +# log.fatal(err) +# end +# +# Because the Logger's level is set to +WARN+, only the warning, error, and +# fatal messages are recorded. The debug and info messages are silently +# discarded. +# +# === Features +# +# There are several interesting features that Logger provides, like +# auto-rolling of log files, setting the format of log messages, and +# specifying a program name in conjunction with the message. The next section +# shows you how to achieve these things. +# +# +# == HOWTOs +# +# === How to create a logger +# +# The options below give you various choices, in more or less increasing +# complexity. +# +# 1. Create a logger which logs messages to STDERR/STDOUT. +# +# logger = Logger.new(STDERR) +# logger = Logger.new(STDOUT) +# +# 2. Create a logger for the file which has the specified name. +# +# logger = Logger.new('logfile.log') +# +# 3. Create a logger for the specified file. +# +# file = File.open('foo.log', File::WRONLY | File::APPEND) +# # To create new (and to remove old) logfile, add File::CREAT like; +# # file = open('foo.log', File::WRONLY | File::APPEND | File::CREAT) +# logger = Logger.new(file) +# +# 4. Create a logger which ages logfile once it reaches a certain size. Leave +# 10 "old log files" and each file is about 1,024,000 bytes. +# +# logger = Logger.new('foo.log', 10, 1024000) +# +# 5. Create a logger which ages logfile daily/weekly/monthly. +# +# logger = Logger.new('foo.log', 'daily') +# logger = Logger.new('foo.log', 'weekly') +# logger = Logger.new('foo.log', 'monthly') +# +# === How to log a message +# +# Notice the different methods (+fatal+, +error+, +info+) being used to log +# messages of various levels? Other methods in this family are +warn+ and +# +debug+. +add+ is used below to log a message of an arbitrary (perhaps +# dynamic) level. +# +# 1. Message in block. +# +# logger.fatal { "Argument 'foo' not given." } +# +# 2. Message as a string. +# +# logger.error "Argument #{ @foo } mismatch." +# +# 3. With progname. +# +# logger.info('initialize') { "Initializing..." } +# +# 4. With severity. +# +# logger.add(Logger::FATAL) { 'Fatal error!' } +# +# The block form allows you to create potentially complex log messages, +# but to delay their evaluation until and unless the message is +# logged. For example, if we have the following: +# +# logger.debug { "This is a " + potentially + " expensive operation" } +# +# If the logger's level is +INFO+ or higher, no debug messages will be logged, +# and the entire block will not even be evaluated. Compare to this: +# +# logger.debug("This is a " + potentially + " expensive operation") +# +# Here, the string concatenation is done every time, even if the log +# level is not set to show the debug message. +# +# === How to close a logger +# +# logger.close +# +# === Setting severity threshold +# +# 1. Original interface. +# +# logger.sev_threshold = Logger::WARN +# +# 2. Log4r (somewhat) compatible interface. +# +# logger.level = Logger::INFO +# +# DEBUG < INFO < WARN < ERROR < FATAL < UNKNOWN +# +# +# == Format +# +# Log messages are rendered in the output stream in a certain format by +# default. The default format and a sample are shown below: +# +# Log format: +# SeverityID, [Date Time mSec #pid] SeverityLabel -- ProgName: message +# +# Log sample: +# I, [Wed Mar 03 02:34:24 JST 1999 895701 #19074] INFO -- Main: info. +# +# You may change the date and time format via #datetime_format= +# +# logger.datetime_format = "%Y-%m-%d %H:%M:%S" +# # e.g. "2004-01-03 00:54:26" +# +# Or, you may change the overall format with #formatter= method. +# +# logger.formatter = proc do |severity, datetime, progname, msg| +# "#{datetime}: #{msg}\n" +# end +# # e.g. "Thu Sep 22 08:51:08 GMT+9:00 2005: hello world" +# +class Logger + # Device used for logging messages. + class LogDevice + def shift_log_period(period_end) + postfix = period_end.strftime("%Y%m%d") # YYYYMMDD + age_file = "#{@filename}.#{postfix}" + if FileTest.exist?(age_file) + # try to avoid filename crash caused by Timestamp change. + idx = 0 + # .99 can be overridden; avoid too much file search with 'loop do' + while idx < 100 + idx += 1 + age_file = "#{@filename}.#{postfix}.#{idx}" + break unless FileTest.exist?(age_file) + end + end + # @dev.close rescue nil + # File.rename("#{@filename}", age_file) + # @dev = create_logfile(@filename) + FileUtils.cp(@filename, age_file) + reset_logfile(@dev) # see below for this new method return true + return true + end + + def reset_logfile(logdev) + logdev.truncate( 0 ) + logdev.sync = true + add_log_header(logdev) + end + end +end From 8b6750c1ed198c99e4e04ffe9255c587bd15e4e3 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Thu, 22 Jan 2015 17:04:12 +0800 Subject: [PATCH 102/192] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=BA=E5=8F=AA=E8=83=BD=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=BD=93=E5=A4=A9=E7=9A=84=E6=97=A5=E5=BF=97=EF=BC=9A=E8=BF=99?= =?UTF-8?q?=E6=A0=B7=E5=AD=90=E4=BF=9D=E6=8A=A4=E5=8E=9F=E6=9D=A5=E7=9A=84?= =?UTF-8?q?=E6=97=A5=E5=BF=97=EF=BC=8C=E5=8F=88=E8=83=BD=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E5=BD=93=E5=A4=A9=E7=9A=84=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/system_log_controller.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/system_log_controller.rb b/app/controllers/system_log_controller.rb index 9342bd7dc..abbb016d9 100644 --- a/app/controllers/system_log_controller.rb +++ b/app/controllers/system_log_controller.rb @@ -1,7 +1,7 @@ # 显示和清理系统日志 class SystemLogController < ApplicationController - before_filter :require_admin + before_filter :require_login # 默认每页显示20条记录 PER_PAGE = 20 layout "base" @@ -14,8 +14,8 @@ end #清除日志 - def clear day - SystemLog.clear day + def clear + SystemLog.clear params[:day] redirect_to :action => :index end From f1693e237b39248b2e668d20d8bc3cd9a79f3fb5 Mon Sep 17 00:00:00 2001 From: z9hang Date: Thu, 22 Jan 2015 17:21:15 +0800 Subject: [PATCH 103/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8C=BF=E8=AF=84?= =?UTF-8?q?=E4=BD=9C=E5=93=81=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3=EF=BC=8C?= =?UTF-8?q?=E8=BE=93=E5=87=BA=E5=8C=BF=E8=AF=84=E4=BD=9C=E5=93=81=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E7=9A=84=E5=90=8C=E6=97=B6=E8=BF=98=E8=BE=93=E5=87=BA?= =?UTF-8?q?=E5=AF=B9=E8=AF=A5=E4=BD=9C=E5=93=81=E7=9A=84=E8=AF=84=E8=AE=BA?= =?UTF-8?q?=EF=BC=88=E5=8C=85=E6=8B=AC=EF=BC=8C=E6=95=99=E5=B8=88=E8=AF=84?= =?UTF-8?q?=E5=88=86=EF=BC=8C=E5=8C=BF=E8=AF=84=E5=8F=8A=E7=95=99=E8=A8=80?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/homeworks.rb | 3 +- .../mobile/entities/anonymous_works_params.rb | 31 ++++++++++++ app/api/mobile/entities/homework_jours.rb | 23 +++++++++ app/api/mobile/entities/jours.rb | 27 ++++++++++ app/helpers/api_helper.rb | 12 +++++ app/services/homework_service.rb | 49 ++++++++++++++----- 6 files changed, 131 insertions(+), 14 deletions(-) create mode 100644 app/api/mobile/entities/anonymous_works_params.rb create mode 100644 app/api/mobile/entities/homework_jours.rb create mode 100644 app/api/mobile/entities/jours.rb diff --git a/app/api/mobile/apis/homeworks.rb b/app/api/mobile/apis/homeworks.rb index abdf19390..cba295064 100644 --- a/app/api/mobile/apis/homeworks.rb +++ b/app/api/mobile/apis/homeworks.rb @@ -64,8 +64,9 @@ module Mobile requires :token, type: String end get ':homework_id/anonymous_works_show' do - works = Homeworks.get_service.anonymous_works_show params + works,par = Homeworks.get_service.anonymous_works_show params.merge(:id => params[:homework_id]),current_user.nil? ? User.find(2):current_user present :data, works ,with: Mobile::Entities::HomeworkAttach + present :otherdata,par,with: Mobile::Entities::AnonymousWorksParams present :status, 0 end diff --git a/app/api/mobile/entities/anonymous_works_params.rb b/app/api/mobile/entities/anonymous_works_params.rb new file mode 100644 index 000000000..9ac9a5bd8 --- /dev/null +++ b/app/api/mobile/entities/anonymous_works_params.rb @@ -0,0 +1,31 @@ +module Mobile + module Entities + class AnonymousWorksParams < Grape::Entity + def self.anonymous_works_params_expose(field) + expose field do |f,opt| + if f.is_a?(Hash) && f.key?(field) + f[field] + elsif f.is_a?(Hash) && !f.key?(field) + + end + end + end + anonymous_works_params_expose :is_teacher + anonymous_works_params_expose :m_score + anonymous_works_params_expose :jours + expose :teacher_stars,using: Mobile::Entities::HomeworkJours do |f, opt| + if f.is_a?(Hash) && f.key?(:teacher_stars) + f[:teacher_stars] + end + end + expose :student_stars , using: Mobile::Entities::HomeworkJours do |f, opt| + if f.is_a?(Hash) && f.key?(:student_stars) + f[:student_stars] + end + end + anonymous_works_params_expose :is_anonymous_comments + anonymous_works_params_expose :cur_type + + end + end +end \ No newline at end of file diff --git a/app/api/mobile/entities/homework_jours.rb b/app/api/mobile/entities/homework_jours.rb new file mode 100644 index 000000000..27803b496 --- /dev/null +++ b/app/api/mobile/entities/homework_jours.rb @@ -0,0 +1,23 @@ +module Mobile + module Entities + class HomeworkJours < Grape::Entity + include Redmine::I18n + def self.homework_jours_expose(field) + expose field do |f,opt| + if f.is_a?(Hash) && f.key?(field) + f[field] + elsif f.is_a?(::SeemsRateableRates) + + end + end + end + homework_jours_expose :rater_id + homework_jours_expose :rater_name + homework_jours_expose :created_at + homework_jours_expose :stars + expose :comment,using: Mobile::Entities::Jours do |f,opt| + f[:comment] + end + end + end +end \ No newline at end of file diff --git a/app/api/mobile/entities/jours.rb b/app/api/mobile/entities/jours.rb new file mode 100644 index 000000000..02f380352 --- /dev/null +++ b/app/api/mobile/entities/jours.rb @@ -0,0 +1,27 @@ +module Mobile + module Entities + class Jours < Grape::Entity + include Redmine::I18n + def self.jours_expose(field) + expose field do |f,opt| + if f.is_a?(Hash) && f.key?(field) + f[field] + elsif f.is_a?(::JournalsForMessage) && f.respond_to?(field) + if field == :created_on + format_time(f.send(field)) + else + f.send(field) + end + + end + end + end + expose :user,using: Mobile::Entities::User do |f, opt| + f.user + end + jours_expose :created_on + jours_expose :notes + + end + end +end diff --git a/app/helpers/api_helper.rb b/app/helpers/api_helper.rb index 78f954ab4..8ff6f725c 100644 --- a/app/helpers/api_helper.rb +++ b/app/helpers/api_helper.rb @@ -25,4 +25,16 @@ module ApiHelper homeworks += homeworks homeworks[index + 1 .. index + n] end + + + def stars_to_json_like starts,show_jour,homework,show_name + result = [] + starts.each do |s| + comment = get_homework_review homework,show_jour,s.rater + rater_name = show_name ? s.rater.login : l(:label_anonymous) + rater_id = show_name ? s.rater.id : '' + result << {:rater_id =>rater_id ,:rater_name => rater_name,:created_at => format_time(s.created_at),:stars => s.stars,:comment => comment} + end + result + end end \ No newline at end of file diff --git a/app/services/homework_service.rb b/app/services/homework_service.rb index 33f74345f..a2c063e15 100644 --- a/app/services/homework_service.rb +++ b/app/services/homework_service.rb @@ -5,6 +5,7 @@ class HomeworkService include ApplicationHelper include WordsHelper include ApiHelper + include HomeworkAttachHelper # 作业详情(老师才显示启动匿评,学生不显示 ) # many_times 第几次(作业) @@ -100,20 +101,42 @@ class HomeworkService # attachs 该作品的所有附件 # filename 文件名 # filedesc 文件描述 - def anonymous_works_show params - @homework = HomeworkAttach.find(params[:homework_id]) - name = @homework.name - desc = @homework.description - datetime = @homework.created_at - files = [] - unless @homework.attachments.empty? - attachs = @homework.attachments - attachs.each do |attach| - filename = attach.filename - filedesc = attach.description unless attach.description.blank? - end + def anonymous_works_show(params,current_user) + @homework = HomeworkAttach.find(params[:id]) + @bid = @homework.bid + @course = @bid.courses.first + if current_user.admin? || current_user.member_of_course?(@course) + @stars_reates = @homework.rates(:quality) + @is_teacher = is_course_teacher current_user,@course + @has_evaluation = @stars_reates.where("rater_id = #{current_user.id} and is_teacher_score=#{@is_teacher ? 1 : 0}").first + @m_score = @has_evaluation.nil? ? 0 : @has_evaluation.stars + @teacher_stars = @stars_reates.where("is_teacher_score = 1") #老师评分列表 + @student_stars = @stars_reates.where("is_teacher_score = 0") #学生评分列表 + @is_anonymous_comments = @bid.comment_status == 1 && !@homework.users.include?(current_user) && @homework.user != current_user && !@is_teacher #判断是不是匿评(开启匿评,当前用户不是作业的创建者或者参与者,不是老师) + jours = @homework.journals_for_messages.where("is_comprehensive_evaluation = 3 or is_comprehensive_evaluation is null").order("created_on DESC")#jours留言 is null条件用以兼容历史数据 + #@jour = paginateHelper jours,5 #留言 + #@cur_page = params[:cur_page] || 1 + @cur_type = params[:cur_type] || 5 + teacher_stars_json_like = stars_to_json_like(@teacher_stars,true,@homework,true) + student_stars_json_like = stars_to_json_like(@student_stars,false,@homework,(false || @is_teacher)) + else + raise '403' end - @homework + + [@homework,{:is_teacher => @is_teacher,:m_score => @m_score,:jours => jours,:teacher_stars => teacher_stars_json_like, + :student_stars => student_stars_json_like,:is_anonymous_comments => @is_anonymous_comments,:cur_type => @cur_type}] + #name = @homework.name + #desc = @homework.description + #datetime = @homework.created_at + #files = [] + #unless @homework.attachments.empty? + # attachs = @homework.attachments + # attachs.each do |attach| + # filename = attach.filename + # filedesc = attach.description unless attach.description.blank? + # end + #end + #{:name => name, :description => desc, :datetime => format_time(datetime)} end From 4fe8b230693e4e5f475763246066430a2870f1ec Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Thu, 22 Jan 2015 17:50:24 +0800 Subject: [PATCH 104/192] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E4=B8=8D=E5=BF=85?= =?UTF-8?q?=E8=A6=81=E7=9A=84=E4=BB=A3=E7=A0=81=EF=BC=8C=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=EF=BC=8C=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/system_log_controller.rb | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/app/controllers/system_log_controller.rb b/app/controllers/system_log_controller.rb index abbb016d9..8974f8810 100644 --- a/app/controllers/system_log_controller.rb +++ b/app/controllers/system_log_controller.rb @@ -9,8 +9,6 @@ #查看所有日志 def index @logs = SystemLog.logo_data(params[:page]||1,params[:per]||PER_PAGE,params[:search] , params[:day]) - @logs - #@access_module = params[:access_module] unless params[:access_module].nil? end #清除日志 @@ -24,11 +22,11 @@ #解析日志,然后逆序 @log_result = SystemLog.analysis(params[:day]).reverse[1...-1] @access_module = Hash.new - #如果日誌為空 + #日誌可能為空 if @log_result && !@log_result.empty? #将数组中的模块访问统计出来放到hash中 每条记录的第四个值是Controller#action的形式 @log_result.collect! {|r| @access_module[r[3]].nil? ? - @access_module[r[3]] = 1 : @access_module[r[3]] +=1 } + @access_module[r[3]] = 1 : @access_module[r[3]] +=1 } # 去掉key可能为空记录 排序,然后取逆序 @access_module = @access_module.delete_if{|k,v| k.nil?}.sort_by{|key,val| val}.reverse else @@ -41,8 +39,8 @@ #解析日志 @log_result = SystemLog.analysis(params[:day]).reverse[1...-1] if @log_result && !@log_result.empty? - #分页 - @log_result = Kaminari.paginate_array(@log_result).page(params[:page]||1).per(params[:per]||PER_PAGE) + #分页 + @log_result = Kaminari.paginate_array(@log_result).page(params[:page]||1).per(params[:per]||PER_PAGE) else @log_result = [] end From 79fd7ebd7a45a9dcd04dcb0d326ba9bc2fa0a126 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Fri, 23 Jan 2015 09:46:02 +0800 Subject: [PATCH 105/192] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E4=B8=8B=E6=97=A5=E5=BF=97=E5=88=86=E5=A4=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/environments/production.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/config/environments/production.rb b/config/environments/production.rb index 8a2847731..78b386aac 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -17,6 +17,7 @@ RedmineApp::Application.configure do # config.logger.level = Logger::INFO # Full error reports are disabled and caching is turned on + config.logger = Logger.new('log/development.log', 'daily',1048576) # daily, weekly or monthly config.action_controller.perform_caching = true config.cache_store = :file_store, "#{Rails.root }/public/tmp/" # Enable serving of images, stylesheets, and javascripts from an asset server From ae74dff89b23869727942cfac0da85d50489011e Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Fri, 23 Jan 2015 09:46:55 +0800 Subject: [PATCH 106/192] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/initializers/logger.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/config/initializers/logger.rb b/config/initializers/logger.rb index 3fa792b27..e9b61ce06 100644 --- a/config/initializers/logger.rb +++ b/config/initializers/logger.rb @@ -195,6 +195,7 @@ require 'fileutils' # # e.g. "Thu Sep 22 08:51:08 GMT+9:00 2005: hello world" # class Logger + #具体内容请看https://bugs.ruby-lang.org/issues/7303 # Device used for logging messages. class LogDevice def shift_log_period(period_end) @@ -213,11 +214,12 @@ class Logger # @dev.close rescue nil # File.rename("#{@filename}", age_file) # @dev = create_logfile(@filename) + #覆盖原来lib库的方法,将上边三行删除,增加下边两行 FileUtils.cp(@filename, age_file) reset_logfile(@dev) # see below for this new method return true return true end - + #打开原来lib库,新增一个方法 def reset_logfile(logdev) logdev.truncate( 0 ) logdev.sync = true From 03ae5fdeacca691a07d8eb66c5ac5f4a2bf68efb Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Fri, 23 Jan 2015 09:47:22 +0800 Subject: [PATCH 107/192] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/project.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/project.rb b/app/models/project.rb index c4d07a1ad..ca80d90f8 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -126,6 +126,7 @@ class Project < ActiveRecord::Base #此代码功能:为原redmine中项目的树形结构按名称首字母排序,本系统项目非树形结构,且项目排序方式无按首字母排序,另该代码执行会使空数据库时创建项目时出异常故注释掉 #after_save :update_position_under_parent, :if => Proc.new {|project| project.name_changed?} + #ActiveModel::Dirty 这里有一个changed方法。对任何对象都可以用 after_save :update_inherited_members, :if => Proc.new {|project| project.inherit_members_changed?} # 创建project之后默认创建一个board,之后的board去掉了board的概念 after_create :create_board_sync,:expire_project_cache From 27fde6c641601f0cc013a1a4cc02f7867248a94d Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Fri, 23 Jan 2015 09:47:54 +0800 Subject: [PATCH 108/192] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/system_log_helper.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/helpers/system_log_helper.rb b/app/helpers/system_log_helper.rb index 1125904c8..53cf2038b 100644 --- a/app/helpers/system_log_helper.rb +++ b/app/helpers/system_log_helper.rb @@ -12,12 +12,13 @@ module SystemLogHelper if keywords && !keywords.strip.blank? # 把keywords转化成正则表达式数组 keywords = keywords.strip.split(/\s+/).collect! {|w| Regexp.new(w, 'i')} - # 一条记录应该匹配每个关键字 + # 一条记录应该匹配每个关键字 log =~ r 是对log记录进行判断是否符合r的正则表达式 logs = logs.find_all do |log| keywords.all? { |r| log =~ r } end #用Kaminari分页 logs = Kaminari.paginate_array(logs).page(page).per(per).collect! {|log| parse(log)} + #将分页后的记录的搜索结果添加样式,样式中的\0是给给r占位置的。 logs.collect! do |log| keywords.each { |r| log.gsub!(r, '\0')} log From d2d1a9659bec5e9923d9c5a6a92217bcd3c4f840 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Fri, 23 Jan 2015 09:49:07 +0800 Subject: [PATCH 109/192] =?UTF-8?q?=E5=BC=80=E5=8F=91=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E4=B8=8B=E5=8E=BB=E6=8E=89=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/environments/development.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/environments/development.rb b/config/environments/development.rb index 765fda433..14c752cb4 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -7,11 +7,11 @@ RedmineApp::Application.configure do # Log error messages when you accidentally call methods on nil. config.whiny_nils = true - + config.logger = Logger.new('log/development.log', 'daily') # daily, weekly or monthly # Show full error reports and disable caching config.consider_all_requests_local = true - config.action_controller.perform_caching = true - config.cache_store = :file_store, "#{Rails.root }/public/tmp/" + #config.action_controller.perform_caching = true + #config.cache_store = :file_store, "#{Rails.root }/public/tmp/" # Don't care if the mailer can't send config.action_mailer.raise_delivery_errors = false From f394c3878edadda1d601e9854f3feb95f3152a85 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Fri, 23 Jan 2015 09:50:50 +0800 Subject: [PATCH 110/192] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E5=90=8D=E5=AD=97=E8=A7=84=E5=AE=9A=E4=B8=BA?= =?UTF-8?q?production.log?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/environments/production.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/environments/production.rb b/config/environments/production.rb index 78b386aac..48b2514cf 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -17,7 +17,7 @@ RedmineApp::Application.configure do # config.logger.level = Logger::INFO # Full error reports are disabled and caching is turned on - config.logger = Logger.new('log/development.log', 'daily',1048576) # daily, weekly or monthly + config.logger = Logger.new('log/production.log', 'daily',1048576) # daily, weekly or monthly config.action_controller.perform_caching = true config.cache_store = :file_store, "#{Rails.root }/public/tmp/" # Enable serving of images, stylesheets, and javascripts from an asset server From bb9ab0755cd7c0e24552ce3f215ba3b5ac54bd06 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Fri, 23 Jan 2015 09:54:18 +0800 Subject: [PATCH 111/192] =?UTF-8?q?=E5=BF=BD=E7=95=A5tmp=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 0ac235089..221c0b43d 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ /files/* /log/* /public/tmp/* +/tmp/* /public/cache/* .gitignore /public/images/avatars/* From 7bf89c1fc15b677ed652f12bce0e64619e6126c5 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Fri, 23 Jan 2015 10:00:04 +0800 Subject: [PATCH 112/192] =?UTF-8?q?=E5=BC=80=E5=8F=91=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E4=B8=8D=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/environments/development.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/environments/development.rb b/config/environments/development.rb index 14c752cb4..ab057ef3e 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -10,8 +10,8 @@ RedmineApp::Application.configure do config.logger = Logger.new('log/development.log', 'daily') # daily, weekly or monthly # Show full error reports and disable caching config.consider_all_requests_local = true - #config.action_controller.perform_caching = true - #config.cache_store = :file_store, "#{Rails.root }/public/tmp/" + config.action_controller.perform_caching = false + config.cache_store = :file_store, "#{Rails.root }/public/tmp/" # Don't care if the mailer can't send config.action_mailer.raise_delivery_errors = false From 9b96d99d6f40900815345b7f8d58fe8ae43e5f61 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Fri, 23 Jan 2015 10:05:36 +0800 Subject: [PATCH 113/192] =?UTF-8?q?=E6=97=A0=E6=94=B9=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index 318b8dcf0..c659a78ab 100644 --- a/Gemfile +++ b/Gemfile @@ -1,4 +1,4 @@ -source 'https://rubygems.org' +source 'http://ruby.taobao.org' unless RUBY_PLATFORM =~ /w32/ # unix-like only From f24d0e6b5423f79e156af3d265ac84c48092df42 Mon Sep 17 00:00:00 2001 From: zhuhao Date: Fri, 23 Jan 2015 10:16:46 +0800 Subject: [PATCH 114/192] =?UTF-8?q?user=E6=A8=A1=E5=9E=8B=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=AA=8C=E8=AF=81=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .rspec | 1 + spec/models/user_spec.rb | 121 +++++++++++++++++++++++++++++++++++++++ spec/spec_helper.rb | 38 ++++++++++++ 3 files changed, 160 insertions(+) create mode 100644 .rspec create mode 100644 spec/models/user_spec.rb create mode 100644 spec/spec_helper.rb diff --git a/.rspec b/.rspec new file mode 100644 index 000000000..4e1e0d2f7 --- /dev/null +++ b/.rspec @@ -0,0 +1 @@ +--color diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb new file mode 100644 index 000000000..6cd75bce6 --- /dev/null +++ b/spec/models/user_spec.rb @@ -0,0 +1,121 @@ +require 'spec_helper' +describe User do + #测试数据验证 + # before { @user = User.new(login: "ExampleUser" ,mail: "user@example.com", + # password: "foobar",password_confirmation: "foobar" ) } + before :each do + @user = User.new(login: "ExampleUser" ,mail: "user@example.com", + password: "foobar",password_confirmation: "foobar" ) + end + subject { @user }#指定@user为测试对象 + #属性存在性的测试 + it { should respond_to(:login) } + it { should respond_to(:mail) } + + #用户名唯一性的测试 + describe "when login is already taken" do + before do + user_with_same_login=@user.dup + user_with_same_login.save + end + it{should_not be_valid} + # it "should be valid" do + # expect(@user).to be_valid + # end + end + + #邮箱唯一性测试 + describe "when mail address is already taken " do + before do + user_with_same_mail=@user.dup#dup method copy mail + user_with_same_mail.mail=@user.mail.upcase#转大写 + user_with_same_mail.save + end + it{should_not be_valid} + end + #邮箱唯一性测试2 + # describe " is invalid with a same email address" do + # User.create(login:'peter',mail:'test@qq.com')#先保存一个合法的对象 + # user1=User.new(login:'jim',mail:'testqq@.com')#再创建user1作为测试的对比对象 + # # expect(user1).to have(1).errors_on(:mail) + # it{should_not be_valid} + # end + + #login长度测试(login最大25字符) + describe "when the login is too long" do + before{@user.login='a'*25} + it{should_not be_valid} + end + + #姓和名的长度测试 + describe "when the first name is too long " do + before{@user.firstname='a'*30} + it{should_not be_valid} + end + describe "when the last name is too long " do + before{@user.lastname='a'*30} + it{should_not be_valid} + end + + #login合法性的测试(符合正则表达式规则的用户名:数字英文) + describe "when login format is invalid" do + it"should be invalid" do + username=%w[aa!3 aaa%$&*! 1111==!] + username.each do |valid_username| + @user.login=valid_username + expect(@user).not_to be_valid + end + end + end + + describe "when login format is valid" do + it"should be valid" do + username = %w[jim123 123456 aaaaaa] + username.each do |valid_username| + @user.login=valid_username + expect(@user).not_to be_valid + end + end + end + + #邮箱合法性测试,在模型user中邮箱使用了正则表达式 + describe "is the mail valid" do + context "when mail format is invalid" do + it"should be invalid" do + address=%w[user@foo,com user_at_foo.org example.user@foo.foo@bar_baz.com foo@bar+baz.com] + address.each do |valid_address| + @user.mail=valid_address + expect(@user).not_to be_valid + end + end + end + + context "when mail format is valid" do + it"should be valid" do + addresses = %w[user@foo.COM A_US-ER@f.b.org frst.lst@foo.jp a+b@baz.cn] + addresses.each do |valid_address| + @user.mail=valid_address + expect(@user).not_to be_valid + end + end + end + end + + describe "when the mail is too long" do#邮箱长度验证的测试 + before{@user.mail='a'*60} + it{should_not be_valid} + end + + #验证两次输入的密码是否一致的测试 + describe "when the password does not match confirmation" do + before{@user.password_confirmation="admin123"} + it{should_not be_valid} + end + + #调用相关方法是否能返回期待的结果 + #userInfo方法,选择项目成员时显示的用户信息的文字 + describe "returns the user info when choice the members of the project" do + + end + +end \ No newline at end of file diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb new file mode 100644 index 000000000..d2cbea7d9 --- /dev/null +++ b/spec/spec_helper.rb @@ -0,0 +1,38 @@ +# This file is copied to spec/ when you run 'rails generate rspec:install' +ENV["RAILS_ENV"] ||= 'test' +require File.expand_path("../../config/environment", __FILE__) +require 'rspec/rails' +require 'rspec/autorun' + +# Requires supporting ruby files with custom matchers and macros, etc, +# in spec/support/ and its subdirectories. +Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f } + +RSpec.configure do |config| + # ## Mock Framework + # + # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line: + # + # config.mock_with :mocha + # config.mock_with :flexmock + # config.mock_with :rr + + # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures + config.fixture_path = "#{::Rails.root}/spec/fixtures" + + # If you're not using ActiveRecord, or you'd prefer not to run each of your + # examples within a transaction, remove the following line or assign false + # instead of true. + config.use_transactional_fixtures = true + + # If true, the base class of anonymous controllers will be inferred + # automatically. This will be the default behavior in future versions of + # rspec-rails. + config.infer_base_class_for_anonymous_controllers = false + + # Run specs in random order to surface order dependencies. If you find an + # order dependency and want to debug it, you can fix the order by providing + # the seed, which is printed after each run. + # --seed 1234 + config.order = "random" +end From 240678673d0508bb433f52477941f601d624454b Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Fri, 23 Jan 2015 10:53:51 +0800 Subject: [PATCH 115/192] =?UTF-8?q?=E6=9C=80=E6=96=B0GemFile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 57 +++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 35 insertions(+), 22 deletions(-) diff --git a/Gemfile b/Gemfile index c659a78ab..5045cb822 100644 --- a/Gemfile +++ b/Gemfile @@ -1,4 +1,5 @@ -source 'http://ruby.taobao.org' +source 'http://rubygems.org' +#source 'http://ruby.sdutlinux.org/' unless RUBY_PLATFORM =~ /w32/ # unix-like only @@ -15,24 +16,45 @@ gem "coderay", "~> 1.0.6" gem "fastercsv", "~> 1.5.0", :platforms => [:mri_18, :mingw_18, :jruby] gem "builder", "3.0.0" gem 'acts-as-taggable-on', '2.4.1' +gem 'spreadsheet' +gem 'ruby-ole' +gem 'email_verifier' group :development do gem 'better_errors', path: 'lib/better_errors' gem 'rack-mini-profiler', path: 'lib/rack-mini-profiler' - if ENV['PRY'] - gem 'pry' - gem 'pry-nav' - end end -# group :test do -# # shoulda的版本做了改动 -# #gem "shoulda", "~> 3.3.2" -# gem "shoulda", "> 3.3.2" -# gem "mocha", "~> 0.13.3" -# gem 'capybara', '~> 2.0.0' -# gem 'nokogiri', '< 1.6.0' -# end +group :test do + gem "shoulda", "~> 3.5.0" + gem "mocha", "~> 1.1.0" + gem 'capybara', '~> 2.4.1' + gem 'nokogiri', '~> 1.6.3' + gem 'factory_girl', '~> 4.4.0' + gem 'selenium-webdriver', '~> 2.42.0' + + + # platforms :mri, :mingw do + # group :rmagick do + # # RMagick 2 supports ruby 1.9 + # # RMagick 1 would be fine for ruby 1.8 but Bundler does not support + # # different requirements for the same gem on different platforms + # gem "rmagick", ">= 2.0.0" + # end + #end +end + +group :development, :test do + # gem "guard-rails", '~> 0.5.3' + gem 'spork-testunit', '~> 0.0.8' + # gem 'guard-spork', '~> 1.5.1' + # gem 'guard-test', '~> 1.0.0' + gem 'ruby-prof', '~> 0.15.1' unless RUBY_PLATFORM =~ /w32/ + gem 'pry' + gem 'pry-nav' + gem 'rspec-rails' , '2.13.1' + gem 'guard-rspec','2.5.0' +end # Gems used only for assets and not required @@ -53,15 +75,6 @@ group :ldap do end -# platforms :mri, :mingw do -# group :rmagick do -# # RMagick 2 supports ruby 1.9 -# # RMagick 1 would be fine for ruby 1.8 but Bundler does not support -# # different requirements for the same gem on different platforms -# gem "rmagick", ">= 2.0.0" -# end -# end - # Optional gem for OpenID authentication group :openid do gem "ruby-openid", "~> 2.1.4", :require => "openid" From 69ced4b14bea7f33f459d873a8be934d4803846d Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Fri, 23 Jan 2015 11:08:58 +0800 Subject: [PATCH 116/192] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=9B=BD=E9=99=85?= =?UTF-8?q?=E5=8C=96=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/locales/zh.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config/locales/zh.yml b/config/locales/zh.yml index 493db6ccd..048cc7aaa 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -2300,7 +2300,8 @@ zh: label_poll_answer_valid_result: 以上为有效问答题答案! label_answer_total: 总计: label_join_project: 加入项目 - + label_technical_support: 技术支持: + label_feedback: 意见反馈 label_log_detail: "日志详情" label_log_delete_log: "删除日志" label_log_access_analysis: "访问统计" From df88cb6eba6b1261938f53bdcc30714e56c14cf7 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Fri, 23 Jan 2015 11:14:48 +0800 Subject: [PATCH 117/192] =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98=E6=89=8D?= =?UTF-8?q?=E8=83=BD=E6=9F=A5=E7=9C=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/system_log_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/system_log_controller.rb b/app/controllers/system_log_controller.rb index 8974f8810..eb62140f9 100644 --- a/app/controllers/system_log_controller.rb +++ b/app/controllers/system_log_controller.rb @@ -1,7 +1,7 @@ # 显示和清理系统日志 class SystemLogController < ApplicationController - before_filter :require_login + before_filter :require_admin # 默认每页显示20条记录 PER_PAGE = 20 layout "base" From 4a672416e376abba64b2ea9312845026d657dd25 Mon Sep 17 00:00:00 2001 From: z9hang Date: Fri, 23 Jan 2015 11:42:35 +0800 Subject: [PATCH 118/192] =?UTF-8?q?=E5=8C=BF=E8=AF=84=E4=BD=9C=E5=93=81?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3=E6=B7=BB=E5=8A=A0=E8=AF=84?= =?UTF-8?q?=E8=AE=BA=E7=9A=84=E5=9B=9E=E5=A4=8D=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/entities/anonymous_works_params.rb | 6 +++++- app/api/mobile/entities/homework_jours.rb | 2 ++ app/api/mobile/entities/jours.rb | 14 ++++++++++++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/app/api/mobile/entities/anonymous_works_params.rb b/app/api/mobile/entities/anonymous_works_params.rb index 9ac9a5bd8..a6fcd19f2 100644 --- a/app/api/mobile/entities/anonymous_works_params.rb +++ b/app/api/mobile/entities/anonymous_works_params.rb @@ -12,7 +12,11 @@ module Mobile end anonymous_works_params_expose :is_teacher anonymous_works_params_expose :m_score - anonymous_works_params_expose :jours + expose :jours ,using: Mobile::Entities::Jours do |f, opt| + if f.is_a?(Hash) && f.key?(:jours) + f[:jours] + end + end expose :teacher_stars,using: Mobile::Entities::HomeworkJours do |f, opt| if f.is_a?(Hash) && f.key?(:teacher_stars) f[:teacher_stars] diff --git a/app/api/mobile/entities/homework_jours.rb b/app/api/mobile/entities/homework_jours.rb index 27803b496..63c6997fd 100644 --- a/app/api/mobile/entities/homework_jours.rb +++ b/app/api/mobile/entities/homework_jours.rb @@ -1,5 +1,6 @@ module Mobile module Entities + #带评分的留言(教师评论、学生匿名评分都属于此类) class HomeworkJours < Grape::Entity include Redmine::I18n def self.homework_jours_expose(field) @@ -18,6 +19,7 @@ module Mobile expose :comment,using: Mobile::Entities::Jours do |f,opt| f[:comment] end + end end end \ No newline at end of file diff --git a/app/api/mobile/entities/jours.rb b/app/api/mobile/entities/jours.rb index 02f380352..5a9f48cbc 100644 --- a/app/api/mobile/entities/jours.rb +++ b/app/api/mobile/entities/jours.rb @@ -1,7 +1,9 @@ module Mobile module Entities + #普通留言 class Jours < Grape::Entity include Redmine::I18n + include WordsHelper def self.jours_expose(field) expose field do |f,opt| if f.is_a?(Hash) && f.key?(field) @@ -12,16 +14,24 @@ module Mobile else f.send(field) end - end end end + jours_expose :id expose :user,using: Mobile::Entities::User do |f, opt| f.user end jours_expose :created_on jours_expose :notes - + jours_expose :m_reply_id + expose :reply_user,using: Mobile::Entities::User do |f, opt| + f.at_user + end + expose :child_reply,using: Mobile::Entities::Jours do |f, opt| + if f.is_a?(::JournalsForMessage) + fetch_user_leaveWord_reply(f) + end + end end end end From b2396df68c8bd1ecd9cce23bcac308f499eefdce Mon Sep 17 00:00:00 2001 From: z9hang Date: Fri, 23 Jan 2015 16:31:41 +0800 Subject: [PATCH 119/192] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=B8=8B=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/entities/anonymous_works_params.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/api/mobile/entities/anonymous_works_params.rb b/app/api/mobile/entities/anonymous_works_params.rb index a6fcd19f2..95cf9215d 100644 --- a/app/api/mobile/entities/anonymous_works_params.rb +++ b/app/api/mobile/entities/anonymous_works_params.rb @@ -1,5 +1,6 @@ module Mobile module Entities + #匿评作品页面相关参数 class AnonymousWorksParams < Grape::Entity def self.anonymous_works_params_expose(field) expose field do |f,opt| @@ -12,6 +13,8 @@ module Mobile end anonymous_works_params_expose :is_teacher anonymous_works_params_expose :m_score + anonymous_works_params_expose :is_anonymous_comments + anonymous_works_params_expose :cur_type expose :jours ,using: Mobile::Entities::Jours do |f, opt| if f.is_a?(Hash) && f.key?(:jours) f[:jours] @@ -27,9 +30,6 @@ module Mobile f[:student_stars] end end - anonymous_works_params_expose :is_anonymous_comments - anonymous_works_params_expose :cur_type - end end end \ No newline at end of file From 02f01c1aba02a77939acae9d88918ffc37df6efe Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Fri, 23 Jan 2015 17:10:21 +0800 Subject: [PATCH 120/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A6=96=E9=A1=B5?= =?UTF-8?q?=E5=8A=A0=E5=85=A5=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/applied_project_controller.rb | 19 ++++++++++++++++++- .../applied_join_project.js.erb | 7 +++++++ app/views/projects/_join_project.html.erb | 4 ++-- 3 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 app/views/applied_project/applied_join_project.js.erb diff --git a/app/controllers/applied_project_controller.rb b/app/controllers/applied_project_controller.rb index 3d061ef74..d7b65174f 100644 --- a/app/controllers/applied_project_controller.rb +++ b/app/controllers/applied_project_controller.rb @@ -3,7 +3,24 @@ class AppliedProjectController < ApplicationController #申请加入项目 def applied_join_project @user_id = params[:user_id] - @project = Project.find(params[:project_id]) + @project = Project.find_by_id(params[:project_id]) + if params[:project_join] + if @project + @applieds = AppliedProject.where("user_id = ? and project_id = ?", params[:user_id],params[:project_id]) + if @applieds.count == 0 + appliedproject = AppliedProject.create(:user_id => params[:user_id], :project_id => params[:project_id]) + Mailer.applied_project(appliedproject).deliver + end + @status = 1 + else + @status = 0 + end + respond_to do |format| + format.js + end + return + end + @applieds = AppliedProject.where("user_id = ? and project_id = ?", params[:user_id],params[:project_id]) if @applieds.count == 0 appliedproject = AppliedProject.create(:user_id => params[:user_id], :project_id => params[:project_id]) diff --git a/app/views/applied_project/applied_join_project.js.erb b/app/views/applied_project/applied_join_project.js.erb new file mode 100644 index 000000000..9fd358ede --- /dev/null +++ b/app/views/applied_project/applied_join_project.js.erb @@ -0,0 +1,7 @@ +<% if @status == 0%> + alert("您申请的项目不存在"); +<% elsif @status == 1%> + alert("申请成功"); +<%else%> + alert("申请失败"); +<%end%> \ No newline at end of file diff --git a/app/views/projects/_join_project.html.erb b/app/views/projects/_join_project.html.erb index c7ce29dae..d30ec73e1 100644 --- a/app/views/projects/_join_project.html.erb +++ b/app/views/projects/_join_project.html.erb @@ -1,4 +1,3 @@ - @@ -34,7 +33,7 @@ { hideModal(obj); $("#new-watcher-form").submit(); - alert("申请成功"); +// alert("申请成功"); } function hidden_join_course_form() @@ -60,6 +59,7 @@
    • 项 目 ID: + From 230b98d704c4902d00a14e4b2313282221a4736d Mon Sep 17 00:00:00 2001 From: zhuhao Date: Sat, 24 Jan 2015 10:18:32 +0800 Subject: [PATCH 121/192] =?UTF-8?q?=E6=B3=A8=E5=86=8C=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spec/models/user_spec.rb | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 6cd75bce6..b15602f9a 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -42,11 +42,10 @@ describe User do # end #login长度测试(login最大25字符) - describe "when the login is too long" do + describe "when the login is too long " do before{@user.login='a'*25} - it{should_not be_valid} + it{should be_valid} end - #姓和名的长度测试 describe "when the first name is too long " do before{@user.firstname='a'*30} @@ -73,7 +72,7 @@ describe User do username = %w[jim123 123456 aaaaaa] username.each do |valid_username| @user.login=valid_username - expect(@user).not_to be_valid + expect(@user).to be_valid end end end @@ -115,7 +114,22 @@ describe User do #调用相关方法是否能返回期待的结果 #userInfo方法,选择项目成员时显示的用户信息的文字 describe "returns the user info when choice the members of the project" do - + context "第一种情况" do + @user=User.new() + expect(@user.userInfo).to eq '' + end + context "二种情况" do + @user=User.new() + expect(@user.userInfo).to eq '' + end end + # def name + # [firstname, lastname].join(' ') + # end + # it "returns a contact's full name as a string" do + # contact = Contact.new(firstname: 'John', lastname: 'Doe', + # email: 'johndoe@example.com') + # expect(contact.name).to eq 'John Doe'#调用contact的name方法 + # end end \ No newline at end of file From ca17058750c93671bb6fa88c484f330eb0aef8a9 Mon Sep 17 00:00:00 2001 From: zhuhao Date: Sat, 24 Jan 2015 10:35:46 +0800 Subject: [PATCH 122/192] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=A2=84=E6=9E=84?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spec/models/user_spec.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index b15602f9a..6b8c962bd 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -12,6 +12,11 @@ describe User do it { should respond_to(:login) } it { should respond_to(:mail) } + #此处采用与构建的方式生成数据 + # it"is invalid without login" do + # user=FactoryGirl.build(:user,login: nil) + # expect(user).to_not be_valid + # end #用户名唯一性的测试 describe "when login is already taken" do before do From a38b3c89feae60237e0301ac12c4c219309d1bef Mon Sep 17 00:00:00 2001 From: zhuhao Date: Sat, 24 Jan 2015 10:36:19 +0800 Subject: [PATCH 123/192] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=A2=84=E6=9E=84?= =?UTF-8?q?=E4=BB=B6=E7=94=9F=E4=BA=A7=E6=B5=8B=E8=AF=95=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spec/factories/users.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 spec/factories/users.rb diff --git a/spec/factories/users.rb b/spec/factories/users.rb new file mode 100644 index 000000000..369e60f48 --- /dev/null +++ b/spec/factories/users.rb @@ -0,0 +1,10 @@ +require 'faker' + +FactoryGirl.define do + factory :user do + login "ExampleUser" + mail "user@example.com" + password "foobar" + password_confirmation "foobar" + end +end \ No newline at end of file From 2f8d57797c7646f5e36a510d1594114a8ababb39 Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Mon, 26 Jan 2015 14:09:56 +0800 Subject: [PATCH 124/192] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=BC=B9=E5=87=BA?= =?UTF-8?q?=E6=A1=86=E7=9A=84=E5=AE=BD=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/poll/_poll_form.html.erb | 2 +- app/views/poll/index.html.erb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/views/poll/_poll_form.html.erb b/app/views/poll/_poll_form.html.erb index 1d0dee837..4742028d5 100644 --- a/app/views/poll/_poll_form.html.erb +++ b/app/views/poll/_poll_form.html.erb @@ -69,7 +69,7 @@ else{ $('#ajax-modal').html('<%= escape_javascript(render :partial => 'poll_submit', locals: { :poll => @poll,:is_remote => false}) %>'); showModal('ajax-modal', '310px'); - $('#ajax-modal').css('height','115px'); + $('#ajax-modal').css('height','120px'); $('#ajax-modal').siblings().remove(); $('#ajax-modal').before("" + ""); diff --git a/app/views/poll/index.html.erb b/app/views/poll/index.html.erb index 3962768da..29a5ec51f 100644 --- a/app/views/poll/index.html.erb +++ b/app/views/poll/index.html.erb @@ -15,7 +15,7 @@ "
    " + "
    "); showModal('ajax-modal', '310px'); - $('#ajax-modal').css('height','115px'); + $('#ajax-modal').css('height','120px'); $('#ajax-modal').siblings().remove(); $('#ajax-modal').before("" + ""); @@ -47,7 +47,7 @@ "
    " + "
    "); showModal('ajax-modal', '310px'); - $('#ajax-modal').css('height','115px'); + $('#ajax-modal').css('height','120px'); $('#ajax-modal').siblings().remove(); $('#ajax-modal').before("" + ""); From 87f19f7a8b56416fd51a22e54338945cf5969532 Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Mon, 26 Jan 2015 14:25:39 +0800 Subject: [PATCH 125/192] =?UTF-8?q?#1873=20=20=E5=8A=A0=E5=85=A5=E2=80=9D?= =?UTF-8?q?=3D=3D=E3=80=8B=E2=80=9C=E7=94=B3=E8=AF=B7=E5=8A=A0=E5=85=A5?= =?UTF-8?q?=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/projects/_join_project.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/projects/_join_project.html.erb b/app/views/projects/_join_project.html.erb index d30ec73e1..fdc60904d 100644 --- a/app/views/projects/_join_project.html.erb +++ b/app/views/projects/_join_project.html.erb @@ -67,7 +67,7 @@
  • 项目ID是所在项目网址中显示的序号
  • - <%= l(:label_new_join) %> + <%= l(:label_apply_project) %> <%= l(:button_cancel)%> From 9f6ff04e6511b8c51c46e93f1f0f7a90f346b027 Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Mon, 26 Jan 2015 15:31:36 +0800 Subject: [PATCH 126/192] =?UTF-8?q?#1866=20=E6=96=B0=E5=BB=BA=E5=B8=96?= =?UTF-8?q?=E5=AD=90=E6=97=B6=E5=BD=93=E9=BC=A0=E6=A0=87=E7=A7=BB=E8=87=B3?= =?UTF-8?q?=E2=80=9C=E6=8F=90=E4=BA=A4=E2=80=9D=E6=8C=89=E9=92=AE=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E5=85=89=E6=A0=87=E5=BA=94=E5=8F=98=E6=88=90=E6=89=8B?= =?UTF-8?q?=E5=9E=8B=E7=9A=84=E5=9B=BE=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/stylesheets/application.css | 1 + 1 file changed, 1 insertion(+) diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index 54e2a17aa..db57596bc 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -2916,4 +2916,5 @@ input[class~='m3p10'], .m3p10 { height: 20px; display: inline-block; color: #ffffff; + cursor:pointer; } \ No newline at end of file From d1352742812abf798581dc16c769ae072a20998c Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Mon, 26 Jan 2015 15:41:10 +0800 Subject: [PATCH 127/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E5=8A=A0=E5=85=A5=E9=A1=B9=E7=9B=AE=E6=8F=90=E7=A4=BA=E8=AF=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/applied_project_controller.rb | 4 +++- app/views/applied_project/applied_join_project.js.erb | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/controllers/applied_project_controller.rb b/app/controllers/applied_project_controller.rb index d7b65174f..f5c42f7b4 100644 --- a/app/controllers/applied_project_controller.rb +++ b/app/controllers/applied_project_controller.rb @@ -10,8 +10,10 @@ class AppliedProjectController < ApplicationController if @applieds.count == 0 appliedproject = AppliedProject.create(:user_id => params[:user_id], :project_id => params[:project_id]) Mailer.applied_project(appliedproject).deliver + @status = 2 + else + @status = 1 end - @status = 1 else @status = 0 end diff --git a/app/views/applied_project/applied_join_project.js.erb b/app/views/applied_project/applied_join_project.js.erb index 9fd358ede..deac2c9ce 100644 --- a/app/views/applied_project/applied_join_project.js.erb +++ b/app/views/applied_project/applied_join_project.js.erb @@ -1,6 +1,8 @@ <% if @status == 0%> alert("您申请的项目不存在"); <% elsif @status == 1%> + alert("请勿重复申请加入该项目"); +<% elsif @status == 2%> alert("申请成功"); <%else%> alert("申请失败"); From 0944cc4ca81d9badc5f78643ffa116c6bfed8983 Mon Sep 17 00:00:00 2001 From: alan <547533434@qq.com> Date: Mon, 26 Jan 2015 15:54:23 +0800 Subject: [PATCH 128/192] =?UTF-8?q?<=20=E9=82=AE=E4=BB=B6=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E8=B0=83=E6=95=B4>=20Signed-off-by:=20alan=20<5475334?= =?UTF-8?q?34@qq.com>?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/layouts/mailer.html.erb | 4 +--- app/views/mailer/_issue.html.erb | 21 +++++++++++--------- app/views/mailer/issue_edit.html.erb | 6 +----- app/views/mailer/news_comment_added.html.erb | 2 +- 4 files changed, 15 insertions(+), 18 deletions(-) diff --git a/app/views/layouts/mailer.html.erb b/app/views/layouts/mailer.html.erb index abb896b61..c5be3f4fd 100644 --- a/app/views/layouts/mailer.html.erb +++ b/app/views/layouts/mailer.html.erb @@ -44,9 +44,7 @@ a:hover.mail_reply{ background:#06a9bc; text-decoration:none;}

    <%= l(:mail_issue_greetings)%>

  • <%= yield %> -
    - <%= Redmine::WikiFormatting.to_html(Setting.text_formatting, Setting.emails_footer).html_safe %> -
    +
    diff --git a/app/views/mailer/_issue.html.erb b/app/views/mailer/_issue.html.erb index 0ec585868..5145dbb2c 100644 --- a/app/views/mailer/_issue.html.erb +++ b/app/views/mailer/_issue.html.erb @@ -1,26 +1,29 @@

    + <%= link_to(h("#{@author.login}(#{@author.show_name})"), @issue_author_url , :style=>'color:#1b55a7; font-weight:bold;') %> <%= l(:mail_issue_title_userin)%> <%= link_to(h("#{@issue.project.name}"), @project_url, :style=>'color:#1b55a7; font-weight:bold;') %><%= l(:mail_issue_title_active)%>

      -
    • <%= l(:mail_issue_subject)%><%= link_to(issue.subject, issue_url, :style=>'color:#1b55a7; font-weight:bold;') %>
    • -
    • <%= l(:mail_issue_sent_from)%><%= issue.project.name %><%= l(:mail_issue_from_project)%>
    • -
    • <%= l(:mail_issue_content)%> +
    • <%= l(:mail_issue_subject)%><%= link_to(issue.subject, issue_url, :style=>'color:#1b55a7; font-weight:bold;') %>
    • +
    • <%= l(:mail_issue_sent_from)%><%= issue.project.name %><%= l(:mail_issue_from_project)%>
    • +
    • <%= l(:mail_issue_content)%> + <% if @journal.nil? %> - <%= issue.description %> + <%= issue.description=='' ? l(:label_none) : issue.description %> <% else %> - <%= @journal.notes %> + <%= @journal.notes=='' ? l(:label_none) : @journal.notes %> <% end%>
    • -
    • - - <% unless @issue.attachments.nil? %> - <%= l(:mail_issue_attachments)%> +
    • + <%= l(:mail_issue_attachments)%> + <% if @issue.attachments.count == 0 %> + <%= l(:label_none)%> + <% else %> <% @issue.attachments.each do |attach| %>

      <%= link_to_attachment(attach, :download => true, :token => @token.value, :only_path => false, :style=>'color:#1b55a7; font-weight:bold;')%>

      diff --git a/app/views/mailer/issue_edit.html.erb b/app/views/mailer/issue_edit.html.erb index f7412402c..35b963b41 100644 --- a/app/views/mailer/issue_edit.html.erb +++ b/app/views/mailer/issue_edit.html.erb @@ -1,10 +1,6 @@ -
      - <%= l(:text_issue_updated, :id => "##{@issue.project_index}", :author => h(@journal.user)) %> - -
      -
      + <%= render :partial => 'issue', :formats => [:html], :locals => { :issue => @issue, :issue_url => @issue_url } %>
      <%= link_to( l(:mail_issue_footer), @user_url, :style=>'font-size:12px; font-weight:normal; color:#1b55a7;') %>
      diff --git a/app/views/mailer/news_comment_added.html.erb b/app/views/mailer/news_comment_added.html.erb index 5ac95a571..3e0118849 100644 --- a/app/views/mailer/news_comment_added.html.erb +++ b/app/views/mailer/news_comment_added.html.erb @@ -24,7 +24,7 @@
    • <%= l(:mail_issue_content)%> - <%= @news.description %> + <%= @comment.comments %>
    • From 36ec204f40d18584242b397ce6c55d652cf4c8a1 Mon Sep 17 00:00:00 2001 From: alan <547533434@qq.com> Date: Mon, 26 Jan 2015 16:54:46 +0800 Subject: [PATCH 129/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E3=80=8A=E5=85=AC?= =?UTF-8?q?=E5=85=B1=E8=B4=B4=E5=90=A7=E4=B8=AD=EF=BC=8C=E5=9B=9E=E5=A4=8D?= =?UTF-8?q?=E4=BA=86=E5=B8=96=E5=AD=90=E5=90=8E=EF=BC=8C=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E7=9A=84=E8=AF=9D=E8=83=BD=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E6=A0=87=E9=A2=98=E3=80=8B=20Signed-off-by:=20alan=20<54753343?= =?UTF-8?q?4@qq.com>?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/memos/edit.html.erb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/views/memos/edit.html.erb b/app/views/memos/edit.html.erb index 09e4262fe..008522316 100644 --- a/app/views/memos/edit.html.erb +++ b/app/views/memos/edit.html.erb @@ -1,5 +1,6 @@ <% @replying = !@memo.parent.nil? %> +

      <%=l(:label_memo_edit)%>

      <%= labelled_form_for(@memo, :url => forum_memo_path(@memo.forum_id, @memo)) do |f| %> <% if @memo.errors.any? %> @@ -19,8 +20,12 @@ <% end %>

      - <%= f.text_field :subject, :required => true, :size => 96 ,:readonly => @replying, :maxlength => 50%> -

      + <% if @memo.parent.nil? && @memo.children.first.nil? %> + <%= f.text_field :subject, :required => true, :size => 96 ,:readonly => false, :maxlength => 50%> + <% else %> + <%= f.text_field :subject, :required => true, :size => 96 ,:readonly => true, :style => "border: 1px solid gray", :maxlength => 50%> + <% end %> +

      <% if User.current.admin?%>

      <% unless @replying %> From 64cbeddd1370d97d427cb843d0e0392df821a26c Mon Sep 17 00:00:00 2001 From: whimlex Date: Mon, 26 Jan 2015 17:37:05 +0800 Subject: [PATCH 130/192] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E2=80=9C=E7=BC=BA?= =?UTF-8?q?=E9=99=B7=E2=80=9D=E4=BF=AE=E6=94=B9=E4=B8=BA=E2=80=9C=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E8=B7=9F=E8=B8=AA=E2=80=9D=EF=BC=8Csidebar=E6=A0=8F?= =?UTF-8?q?=E2=80=9C=E7=BC=BA=E9=99=B7=E2=80=9D=E4=BF=AE=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E2=80=9C=E9=97=AE=E9=A2=98=E2=80=9D=EF=BC=9B=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E6=96=B0=E5=BB=BA=E6=96=B0=E9=97=BB=E6=8C=89=E9=92=AE=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=E7=BB=9F=E4=B8=80=EF=BC=9B=E6=96=B0=E5=BB=BA=E8=AF=BE?= =?UTF-8?q?=E7=A8=8B=E6=A0=B7=E5=BC=8F=E7=BB=9F=E4=B8=80=EF=BC=9B=E8=AF=BE?= =?UTF-8?q?=E7=A8=8B=E9=87=8D=E5=BC=80=E5=92=8C=E5=85=B3=E9=97=AD=E5=9B=BD?= =?UTF-8?q?=E9=99=85=E5=8C=96=EF=BC=9B=E7=AB=9E=E8=B5=9B=E5=AF=BC=E8=88=AA?= =?UTF-8?q?=E9=94=81=E5=AE=9A=EF=BC=9B=E7=BF=BB=E8=AF=91=E7=BC=BA=E5=A4=B1?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/courses/_course_form.html.erb | 2 +- app/views/courses/_set_course_time.html.erb | 4 +- app/views/layouts/base_newcontest.html.erb | 2 +- app/views/layouts/base_projects.html.erb | 3 +- app/views/news/_project_news.html.erb | 4 +- config/locales/en.yml | 41 +++++++++++---------- config/locales/zh.yml | 13 +++++-- 7 files changed, 38 insertions(+), 31 deletions(-) diff --git a/app/views/courses/_course_form.html.erb b/app/views/courses/_course_form.html.erb index d54741295..85ca24c1b 100644 --- a/app/views/courses/_course_form.html.erb +++ b/app/views/courses/_course_form.html.erb @@ -42,7 +42,7 @@ <%= l(:label_class_period) %> *   - + <%= text_field_tag :class_period, @course.class_period, :placeholder => "#{l(:lable_input_class)}", :maxlength => 5 %>   diff --git a/app/views/courses/_set_course_time.html.erb b/app/views/courses/_set_course_time.html.erb index f1eec891f..0c28b90a7 100644 --- a/app/views/courses/_set_course_time.html.erb +++ b/app/views/courses/_set_course_time.html.erb @@ -5,9 +5,9 @@ <% if display #如果课程已结束%> <% linkPath = course_endTime_timeout?(course) ? restartcourse_course_path(course) : finishcourse_course_path(course, format: :js) %> - <% desc = course_endTime_timeout?(course) ? '重启' : '关闭' %> + <% desc = course_endTime_timeout?(course) ? l(:label_course_reload) : l(:label_course_closed) %> - <%= link_to "#{desc}", linkPath, :remote => true, :method => :post, :id => id, :confirm => ("确定要#{desc}课程?") %> + <%= link_to "#{desc}", linkPath, :remote => true, :method => :post, :id => id, :confirm => l(:label_course_closed_tips, :desc => desc) %> <% else %> <% end %> diff --git a/app/views/layouts/base_newcontest.html.erb b/app/views/layouts/base_newcontest.html.erb index 0d234a69c..d525f65a2 100644 --- a/app/views/layouts/base_newcontest.html.erb +++ b/app/views/layouts/base_newcontest.html.erb @@ -102,7 +102,7 @@ <% if User.current.login? %> diff --git a/app/views/layouts/base_projects.html.erb b/app/views/layouts/base_projects.html.erb index 67e4da0f4..b8cc2ddc9 100644 --- a/app/views/layouts/base_projects.html.erb +++ b/app/views/layouts/base_projects.html.erb @@ -132,8 +132,9 @@ + diff --git a/app/views/news/_project_news.html.erb b/app/views/news/_project_news.html.erb index 79217f1fe..526c7a1a5 100644 --- a/app/views/news/_project_news.html.erb +++ b/app/views/news/_project_news.html.erb @@ -82,11 +82,11 @@ :html => {:id => 'news-form', :multipart => true} do |f| %> <%= render :partial => 'news/form', :locals => {:f => f} %> <%#= submit_tag l(:button_create), :class => 'whiteButton m3p10 h30', :name => nil %> - <%= link_to l(:button_create), "#", :onclick => 'submitNews();',:onmouseover => 'submitFocus(this);', :class => 'whiteButton m3p10' %> + <%= link_to l(:button_create), "#", :onclick => 'submitNews();',:onmouseover => 'submitFocus(this);', :class => 'ButtonColor m3p10' %> | <%#= preview_link preview_news_path(:project_id => @project), 'news-form', target='preview', {:class => 'whiteButton m3p10'} %> - <%= link_to l(:button_cancel), "#", :onclick => '$("#add-news").hide()', :class => 'whiteButton m3p10' %> + <%= link_to l(:button_cancel), "#", :onclick => '$("#add-news").hide()', :class => 'ButtonColor m3p10' %> <% end if @project %>
      diff --git a/config/locales/en.yml b/config/locales/en.yml index 38f33de22..972fd99a1 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -237,7 +237,7 @@ en: mail_body_wiki_content_updated: "The '%{id}' wiki page has been updated by %{author}." # edit by meng - # emailer + # emailer translation mail_issue_greetings: "Dear user , Greetings from Trustie" mail_issue_footer: "Unsubscribe this message?" mail_issue_title_userin: "in" @@ -250,9 +250,14 @@ en: mail_issue_reply: "Want reply" #end # modified by meng + # file_upload translation label_file_upload: Resource files label_file_upload_error_messages: "Upload error, please check your network environment, and refresh the page to upload." button_confirm: Confirm + # shut down and restart course + label_course_closed: Close + label_course_reopen: Reopen + label_course_closed_tips: "Are you sure you want to reopen the course?" # end field_name: Name field_description: Description @@ -541,7 +546,7 @@ en: project_module_calendar: Calendar project_module_gantt: Gantt - #edit by meng + # edit by meng lable_hot_course: Hot projects lable_hot_projects: Active courses lable_user_active: User movements @@ -559,10 +564,10 @@ en: label_project_grade: Score label_user_for_project_grade: Score label_relation_files: Select an existing resource - + # Personal signature tips label_my_brief_introduction: How are feeling today? Leave your footprints ~ - label_submit: Submit - + label_submit: Submit + # create course and course info label_tags_course_name: Course Title label_new_course_password: Password label_new_course_description: Description @@ -572,39 +577,32 @@ en: label_teacher_list: Teacher list label_student_list: Student list label_export_excel: Export list - label_course_organizers: Institute label_poll: Questionnaire - + # homework info and anonymous info field_open_anonymous_evaluation: Use anonymous mutual-evaluation - field_evaluation_num: Number of anonymous works sent to each student - + field_evaluation_num: Number of anonymous works sent to each student label_edit_homework: Update homework - label_homework_list: Work list - + label_homework_list: Work list label_teacher_score: Teacher's score label_time: Commit time label_student_score: Student's score label_without_score: No evaluated label_homework_description: Description label_responses: Messages - lable_has_commit_homework: You have submitted your work - - label_user_create_project_homework: created the task label_commit_limit: Expired but can submit your work - + # steam the student label_current_group: Current group - + # DTS Test tool project_module_dts: DTS Test tool label_module_share: DTS Test tool field_dts_test: DTS Test tool - + # Feedback module label_technical_support: Support : label_feedback: Feedback #end - label_user: User label_user_plural: Users label_user_new: New user @@ -638,7 +636,7 @@ en: label_project_latest: Latest projects label_issue: Issue label_issue_new: New issue - label_issue_plural: Issues + label_issue_plural: Issues Tracking label_issue_view_all: View all issues label_issues_by: "Issues by %{value}" label_issue_added: Issue added @@ -691,7 +689,10 @@ en: label_my_page_block: My page block label_administration: Administration label_login: Login - label_logout: Sign out + # edit by meng + # Logout + label_logout: Logout + # end label_help: Help label_reported_issues: Reported issues label_assigned_to_me_issues: Issues assigned to me diff --git a/config/locales/zh.yml b/config/locales/zh.yml index 115bc815b..d058a6c1b 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -252,7 +252,7 @@ zh: mail_body_wiki_content_updated: "'%{id}' wiki页面已由 %{author} 更新。" # edit by meng - # emailer + # 邮件中文格式 mail_issue_greetings: "亲爱的Trustie用户,您好!" mail_issue_footer: "退订该邮件!" mail_issue_title_userin: "在" @@ -263,11 +263,16 @@ zh: mail_issue_from_project: "项目问题跟踪" mail_issue_attachments: "附件:" mail_issue_reply: "我要回复" - #end + # end # modified by meng + # 课程资源上传 label_file_upload: 资源文件 label_file_upload_error_messages: "上传出现错误,请您检查您的网络环境,并刷新页面重新上传。" button_confirm: 确认 + # 教师权限课程关闭和重启 + label_course_closed: 关闭 + label_course_reload: 重开 + label_course_closed_tips: "确定要%{desc}课程?" # end field_name: 名称 #added by huang @@ -591,7 +596,7 @@ zh: label_project_latest: 最近的项目 label_issue: 问题 label_issue_new: 新建问题 - label_issue_plural: 缺陷 + label_issue_plural: 问题跟踪 label_issue_view_all: 查看所有问题 label_issues_by: "按 %{value} 分组显示问题" label_issue_added: 问题已添加 @@ -1034,7 +1039,7 @@ zh: label_user_activities_other: 该用户暂无任何动态! label_project_overview: "概述" label_project_tool: "项目工具集" - label_project_issues: "缺陷" + label_project_issues: "问题" label_project_newother: "查看其他评论" label_project_newshare: "分享了" label_project_notice: "发布了通知:" From e5e24c116301631d8b4b7c43694fafb630a37003 Mon Sep 17 00:00:00 2001 From: whimlex Date: Mon, 26 Jan 2015 17:47:33 +0800 Subject: [PATCH 131/192] resolve conflict --- app/views/layouts/_base_feedback.html.erb | 1 - .../stylesheets/window_js/nuncio.css | 328 +++++++++--------- .../stylesheets/window_js/spread.css | 216 ++++++------ 3 files changed, 272 insertions(+), 273 deletions(-) diff --git a/app/views/layouts/_base_feedback.html.erb b/app/views/layouts/_base_feedback.html.erb index f1c829c1f..bf4b12daf 100644 --- a/app/views/layouts/_base_feedback.html.erb +++ b/app/views/layouts/_base_feedback.html.erb @@ -135,7 +135,6 @@ function f_submit() - 意见反馈 diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/nuncio.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/nuncio.css index e2700e5b7..2c439bd00 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/nuncio.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/nuncio.css @@ -1,164 +1,164 @@ -.overlay_nuncio img { border: none; } - -.overlay_nuncio { - background-color: #666666; -} - -.nuncio_nw { - width: 12px; - height: 28px; - background: url(nuncio/top_left.png) no-repeat; -} - -.nuncio_n { - background: url(nuncio/top_mid.png) repeat-x; - height: 28px; -} - -.nuncio_ne { - width: 21px; - height: 28px; - background: url(nuncio/top_right.png) no-repeat; -} - -.nuncio_e { - width: 21px; - background: url(nuncio/center_right.png) repeat-y top right; -} - -.nuncio_w { - width: 12px; - background: url(nuncio/center_left.png) repeat-y top left; -} - -.nuncio_sw { - width: 12px; - height: 18px; - background: url(nuncio/bottom_left.png) no-repeat; -} - -.nuncio_s { - background: url(nuncio/bottom_mid.png) repeat-x 0 0; - height: 18px; -} - -.nuncio_se, .nuncio_sizer { - width: 21px; - height: 18px; - background: url(nuncio/bottom_right.png) no-repeat; -} - -.nuncio_close { - width: 14px; - height: 14px; - background: url(nuncio/close.png) no-repeat; - position:absolute; - top:10px; - right:22px; - cursor:pointer; - z-index:2000; -} - -.nuncio_minimize { - width: 14px; - height: 15px; - background: url(nuncio/minimize.png) no-repeat; - position:absolute; - top:10px; - right:40px; - cursor:pointer; - z-index:2000; -} - -.nuncio_title { - float:left; - font-size:11px; - font-weight: bold; - font-style: italic; - color: #fff; - width: 100% -} - -.nuncio_content { - background: url(nuncio/overlay.png) repeat; - overflow:auto; - color: #ddd; - font-family: Tahoma, Arial, "sans-serif"; - font-size: 10px; -} - -.nuncio_sizer { - cursor:se-resize; -} - - -.top_draggable, .bottom_draggable { - cursor:move -} -/* FOR IE */ -* html .nuncio_nw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/top_left.png", sizingMethod="crop"); -} - -* html .nuncio_n { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/top_mid.png", sizingMethod="scale"); -} - -* html .nuncio_ne { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/top_right.png", sizingMethod="crop"); -} - -* html .nuncio_w { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/center_left.png", sizingMethod="scale"); -} - -* html .nuncio_e { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/center_right.png", sizingMethod="scale"); -} - -* html .nuncio_sw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/bottom_left.png", sizingMethod="crop"); -} - -* html .nuncio_s { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/bottom_mid.png", sizingMethod="scale"); -} - -* html .nuncio_se { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/bottom_right.png", sizingMethod="crop"); -} - -* html .nuncio_sizer { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/bottom_right.png", sizingMethod="crop"); -} - -* html .nuncio_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/close.png", sizingMethod="crop"); -} - -* html .nuncio_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/minimize.png", sizingMethod="crop"); -} - +.overlay_nuncio img { border: none; } + +.overlay_nuncio { + background-color: #666666; +} + +.nuncio_nw { + width: 12px; + height: 28px; + background: url(nuncio/top_left.png) no-repeat; +} + +.nuncio_n { + background: url(nuncio/top_mid.png) repeat-x; + height: 28px; +} + +.nuncio_ne { + width: 21px; + height: 28px; + background: url(nuncio/top_right.png) no-repeat; +} + +.nuncio_e { + width: 21px; + background: url(nuncio/center_right.png) repeat-y top right; +} + +.nuncio_w { + width: 12px; + background: url(nuncio/center_left.png) repeat-y top left; +} + +.nuncio_sw { + width: 12px; + height: 18px; + background: url(nuncio/bottom_left.png) no-repeat; +} + +.nuncio_s { + background: url(nuncio/bottom_mid.png) repeat-x 0 0; + height: 18px; +} + +.nuncio_se, .nuncio_sizer { + width: 21px; + height: 18px; + background: url(nuncio/bottom_right.png) no-repeat; +} + +.nuncio_close { + width: 14px; + height: 14px; + background: url(nuncio/close.png) no-repeat; + position:absolute; + top:10px; + right:22px; + cursor:pointer; + z-index:2000; +} + +.nuncio_minimize { + width: 14px; + height: 15px; + background: url(nuncio/minimize.png) no-repeat; + position:absolute; + top:10px; + right:40px; + cursor:pointer; + z-index:2000; +} + +.nuncio_title { + float:left; + font-size:11px; + font-weight: bold; + font-style: italic; + color: #fff; + width: 100% +} + +.nuncio_content { + background: url(nuncio/overlay.png) repeat; + overflow:auto; + color: #ddd; + font-family: Tahoma, Arial, "sans-serif"; + font-size: 10px; +} + +.nuncio_sizer { + cursor:se-resize; +} + + +.top_draggable, .bottom_draggable { + cursor:move +} +/* FOR IE */ +* html .nuncio_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/top_left.png", sizingMethod="crop"); +} + +* html .nuncio_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/top_mid.png", sizingMethod="scale"); +} + +* html .nuncio_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/top_right.png", sizingMethod="crop"); +} + +* html .nuncio_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/center_left.png", sizingMethod="scale"); +} + +* html .nuncio_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/center_right.png", sizingMethod="scale"); +} + +* html .nuncio_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/bottom_left.png", sizingMethod="crop"); +} + +* html .nuncio_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/bottom_mid.png", sizingMethod="scale"); +} + +* html .nuncio_se { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/bottom_right.png", sizingMethod="crop"); +} + +* html .nuncio_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/bottom_right.png", sizingMethod="crop"); +} + +* html .nuncio_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/close.png", sizingMethod="crop"); +} + +* html .nuncio_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/minimize.png", sizingMethod="crop"); +} + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/spread.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/spread.css index d7d722e8a..9bda2a68d 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/spread.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/spread.css @@ -1,108 +1,108 @@ -.overlay_spread { - background-color: #85BBEF; - filter:alpha(opacity=60); - -moz-opacity: 0.6; - opacity: 0.6; -} - -.spread_nw { - background: transparent url(spread/left-top.gif) no-repeat 0 0; - width:10px; - height:25px; -} - -.spread_n { - background: transparent url(spread/top-middle.gif) repeat-x 0 0; - height:25px; -} - -.spread_ne { - background: transparent url(spread/right-top.gif) no-repeat 0 0; - width:10px; - height:25px; -} - -.spread_w { - background: transparent url(spread/frame-left.gif) repeat-y top left; - width:7px; -} - -.spread_e { - background: transparent url(spread/frame-right.gif) repeat-y top right; - width:7px; -} - -.spread_sw { - background: transparent url(spread/bottom-left-c.gif) no-repeat 0 0; - width:7px; - height:7px; -} - -.spread_s { - background: transparent url(spread/bottom-middle.gif) repeat-x 0 0; - height:7px; -} - -.spread_se, .spread_sizer { - background: transparent url(spread/bottom-right-c.gif) no-repeat 0 0; - width:7px; - height:7px; -} - -.spread_sizer { - cursor:se-resize; -} - -.spread_close { - width: 23px; - height: 23px; - background: transparent url(spread/button-close-focus.gif) no-repeat 0 0; - position:absolute; - top:0px; - right:11px; - cursor:pointer; - z-index:1000; -} - -.spread_minimize { - width: 23px; - height: 23px; - background: transparent url(spread/button-min-focus.gif) no-repeat 0 0; - position:absolute; - top:0px; - right:55px; - cursor:pointer; - z-index:1000; -} - -.spread_maximize { - width: 23px; - height: 23px; - background: transparent url(spread/button-max-focus.gif) no-repeat 0 0; - position:absolute; - top:0px; - right:33px; - cursor:pointer; - z-index:1000; -} - -.spread_title { - float:left; - height:14px; - font-family: Tahoma, Arial, sans-serif; - font-size:14px; - font-weight:bold; - text-align:left; - margin-top:2px; - width:100%; - color:#E47211; -} - -.spread_content { - overflow:auto; - color: #222; - font-family: Tahoma, Arial, sans-serif; - font-size: 10px; - background:#A9EA00; -} - +.overlay_spread { + background-color: #85BBEF; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +.spread_nw { + background: transparent url(spread/left-top.gif) no-repeat 0 0; + width:10px; + height:25px; +} + +.spread_n { + background: transparent url(spread/top-middle.gif) repeat-x 0 0; + height:25px; +} + +.spread_ne { + background: transparent url(spread/right-top.gif) no-repeat 0 0; + width:10px; + height:25px; +} + +.spread_w { + background: transparent url(spread/frame-left.gif) repeat-y top left; + width:7px; +} + +.spread_e { + background: transparent url(spread/frame-right.gif) repeat-y top right; + width:7px; +} + +.spread_sw { + background: transparent url(spread/bottom-left-c.gif) no-repeat 0 0; + width:7px; + height:7px; +} + +.spread_s { + background: transparent url(spread/bottom-middle.gif) repeat-x 0 0; + height:7px; +} + +.spread_se, .spread_sizer { + background: transparent url(spread/bottom-right-c.gif) no-repeat 0 0; + width:7px; + height:7px; +} + +.spread_sizer { + cursor:se-resize; +} + +.spread_close { + width: 23px; + height: 23px; + background: transparent url(spread/button-close-focus.gif) no-repeat 0 0; + position:absolute; + top:0px; + right:11px; + cursor:pointer; + z-index:1000; +} + +.spread_minimize { + width: 23px; + height: 23px; + background: transparent url(spread/button-min-focus.gif) no-repeat 0 0; + position:absolute; + top:0px; + right:55px; + cursor:pointer; + z-index:1000; +} + +.spread_maximize { + width: 23px; + height: 23px; + background: transparent url(spread/button-max-focus.gif) no-repeat 0 0; + position:absolute; + top:0px; + right:33px; + cursor:pointer; + z-index:1000; +} + +.spread_title { + float:left; + height:14px; + font-family: Tahoma, Arial, sans-serif; + font-size:14px; + font-weight:bold; + text-align:left; + margin-top:2px; + width:100%; + color:#E47211; +} + +.spread_content { + overflow:auto; + color: #222; + font-family: Tahoma, Arial, sans-serif; + font-size: 10px; + background:#A9EA00; +} + From 4b3621905e7e442afd8c22090444213fcd2054aa Mon Sep 17 00:00:00 2001 From: z9hang Date: Tue, 27 Jan 2015 09:06:00 +0800 Subject: [PATCH 132/192] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E6=88=90=E5=91=98=E6=90=9C=E7=B4=A2bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/courses_controller.rb | 21 +-------------------- 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index ecb5ba8c3..b85a08bb9 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -240,21 +240,10 @@ class CoursesController < ApplicationController @subPage_title = l :label_student_list @render_file = 'member_list' @canShowCode = isCourseTeacher(User.current.id,@course) && params[:role] != '1' - - case params[:role] - when '1' - @subPage_title = l :label_teacher_list - #@members = searchTeacherAndAssistant(@course) - when '2' - @subPage_title = l :label_student_list - #@members = searchStudent(@course) - else - @subPage_title = '' - #@members = @course.member_principals.includes(:roles, :principal).all.sort @is_remote = true @score_sort_by = "desc" q = "#{params[:name].strip}" - #(redirect_to stores_url, :notice => l(:label_sumbit_empty);return) if params[:name].blank? + #(redirect_to stores_url, :notice => l(:label_sumbit_empty);return) if params[:name].blank? if params[:incourse] @results = searchmember_by_name(student_homework_score(0,0,0,"desc"), q) @@ -266,14 +255,6 @@ class CoursesController < ApplicationController @result_count = @results.count @results = paginateHelper @results - cs = CoursesService.new - @members = cs.course_teacher_or_student_list(params,@course,User.current) - @members = paginateHelper @members - render :layout => 'base_courses' - end - if e.message == '403' - render_403 - end end def addgroups From 97c7ccac1627286f489c43cab4ca428d7d5a5dbf Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Tue, 27 Jan 2015 09:45:15 +0800 Subject: [PATCH 133/192] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E9=97=AE=E5=8D=B7=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/poll_controller.rb | 14 +++++- app/views/poll/_poll.html.erb | 69 ++++++++++++++++++++---------- app/views/poll/close_poll.js.erb | 2 + app/views/poll/index.html.erb | 24 +++++++++++ config/routes.rb | 1 + public/stylesheets/polls.css | 4 +- 6 files changed, 87 insertions(+), 27 deletions(-) create mode 100644 app/views/poll/close_poll.js.erb diff --git a/app/controllers/poll_controller.rb b/app/controllers/poll_controller.rb index 8926c0be6..d49694e6f 100644 --- a/app/controllers/poll_controller.rb +++ b/app/controllers/poll_controller.rb @@ -1,8 +1,8 @@ class PollController < ApplicationController - before_filter :find_poll_and_course, :only => [:edit,:update,:destroy,:show,:statistics_result,:create_poll_question,:commit_poll,:commit_answer,:publish_poll,:republish_poll,:poll_result] + before_filter :find_poll_and_course, :only => [:edit,:update,:destroy,:show,:statistics_result,:create_poll_question,:commit_poll,:commit_answer,:publish_poll,:republish_poll,:poll_result,:close_poll] before_filter :find_container, :only => [:new,:create, :index] before_filter :is_member_of_course, :only => [:index,:show,:poll_result] - before_filter :is_course_teacher, :only => [:new,:create,:edit,:update,:destroy,:publish_poll,:republish_poll] + before_filter :is_course_teacher, :only => [:new,:create,:edit,:update,:destroy,:publish_poll,:republish_poll,:close_poll] include PollHelper def index if @course @@ -339,6 +339,16 @@ class PollController < ApplicationController end end + #关闭问卷 + def close_poll + @poll.polls_status = 3 + if @poll.save + respond_to do |format| + format.js + end + end + end + private def find_poll_and_course @poll = Poll.find params[:id] diff --git a/app/views/poll/_poll.html.erb b/app/views/poll/_poll.html.erb index 1bf6b3716..fdf534405 100644 --- a/app/views/poll/_poll.html.erb +++ b/app/views/poll/_poll.html.erb @@ -22,7 +22,7 @@ <% end %> <%if @is_teacher%> - <% if poll.polls_status == 1 %> + <% if poll.polls_status == 1 || poll.polls_status == 3 %>
    • 统计结果
    • <% elsif poll.polls_status == 2%>
    • @@ -31,38 +31,61 @@ <% end%> <% end%> -
    • - <%if @is_teacher %> + +<%if @is_teacher %> <% if poll.polls_status == 1 %> - 发布问卷 +
    • + + 发布问卷 + +
    • <% elsif poll.polls_status == 2%> - 取消发布 +
    • + + 取消发布 + +
    • + <% else%> +
    • + 发布问卷 +
    • <% end%> - <% end%> - +<% end%> +
    • <% if @is_teacher %> <%= link_to(l(:button_delete), poll, - method: :delete, :confirm => l(:text_are_you_sure), :remote => true, :class => "polls_de fr ml20 mr10") %> + method: :delete, :confirm => l(:text_are_you_sure), :remote => true, :class => "polls_de fr ml15 mr10") %> <% end%>
    • -
    • - <% if @is_teacher%> - <% if poll.polls_status == 1 %> - <%= link_to l(:button_edit), edit_poll_path(poll.id), :class => "polls_de fr ml20"%> - <% elsif poll.polls_status == 2%> -
    • 编辑
    • - <% end%> + +<% if @is_teacher%> + <% if poll.polls_status == 1 %> +
    • + <%= link_to l(:button_edit), edit_poll_path(poll.id), :class => "polls_de fr ml15"%> +
    • + <% else%> +
    • + 编辑 +
    • <% end%> - - - - - - - - +<% end%> + +<% if @is_teacher%> + <% if poll.polls_status == 2 %> +
    • + 关闭 +
    • + <% else %> +
    • + 关闭 +
    • + <% end%> + +<% end %> + +
    • <%= format_time poll.created_at%>
    • \ No newline at end of file diff --git a/app/views/poll/close_poll.js.erb b/app/views/poll/close_poll.js.erb new file mode 100644 index 000000000..222ea7976 --- /dev/null +++ b/app/views/poll/close_poll.js.erb @@ -0,0 +1,2 @@ +$("#polls_<%= @poll.id %>").html("<%= escape_javascript(render :partial => 'poll',:locals => {:poll => @poll}) %>"); +alert("关闭成功"); \ No newline at end of file diff --git a/app/views/poll/index.html.erb b/app/views/poll/index.html.erb index 29a5ec51f..3db4d7caa 100644 --- a/app/views/poll/index.html.erb +++ b/app/views/poll/index.html.erb @@ -56,6 +56,30 @@ $('#ajax-modal').parent().addClass("popbox_polls"); } } + + function close_poll(poll_id) + { + $('#ajax-modal').html("
      " + + "
      " + + "
      " + + "

      问卷关闭后学生将不能继续提交问卷,
      是否确定关闭该问卷?

      " + + "
      " + + "确  定" + + "取  消" + + "
      " + + "
      " + + "
      " + + "
      " + + "
      "); + showModal('ajax-modal', '310px'); + $('#ajax-modal').css('height','120px'); + $('#ajax-modal').siblings().remove(); + $('#ajax-modal').before("" + + ""); + $('#ajax-modal').parent().removeClass("alert_praise"); + $('#ajax-modal').parent().css("top","").css("left",""); + $('#ajax-modal').parent().addClass("popbox_polls"); + }
      diff --git a/config/routes.rb b/config/routes.rb index 65498e4ec..29dab3ccc 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -67,6 +67,7 @@ RedmineApp::Application.routes.draw do get 'publish_poll' get 'republish_poll' get 'poll_result' + get 'close_poll' end collection do delete 'delete_poll_question' diff --git a/public/stylesheets/polls.css b/public/stylesheets/polls.css index 370a3c515..f0d670a1d 100644 --- a/public/stylesheets/polls.css +++ b/public/stylesheets/polls.css @@ -31,7 +31,7 @@ a.polls_title{ font-weight:bold; color:#3e6d8e;max-width: 300px;white-space: now a.pollsbtn{ display:block; width:66px; height:22px; text-align:center; border:1px solid #64bdd9; color:#64bdd9;} a:hover.pollsbtn{ background:#64bdd9; color:#fff; text-decoration:none;} .polls_date{ color:#666666;} -.polls_de{ color:#6883b6;} +.polls_de{ color:#6883b6;padding-left: 5px;} /****翻页***/ ul.wlist{ float:right; border-bottom:none; height:30px; margin-top:20px; } ul.wlist li{float: left;} @@ -143,5 +143,5 @@ a.btn_pu{ border:1px solid #3cb761; color:#3cb761; } a:hover.btn_pu{ background:#3cb761;} .pollsbtn_grey{ border:1px solid #b1b1b1; color:#b1b1b1; padding:0px 9px; } .polls_title_w { width:330px; overflow: hidden;white-space: nowrap;text-overflow: ellipsis;} -.polls_de_grey{ color:#b1b1b1;} +.polls_de_grey{ color:#b1b1b1;padding-left: 5px;} .ml5{ margin-left:5px;} From fe06ca503a976c22aff31db041b480d72bcc16e9 Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Tue, 27 Jan 2015 09:55:02 +0800 Subject: [PATCH 134/192] =?UTF-8?q?=E5=A2=9E=E5=8A=A0poll=20colsed=5Fat?= =?UTF-8?q?=E7=9A=84=E8=B5=8B=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/poll_controller.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/controllers/poll_controller.rb b/app/controllers/poll_controller.rb index d49694e6f..394c52f13 100644 --- a/app/controllers/poll_controller.rb +++ b/app/controllers/poll_controller.rb @@ -342,6 +342,7 @@ class PollController < ApplicationController #关闭问卷 def close_poll @poll.polls_status = 3 + @poll.closed_at = Time.now if @poll.save respond_to do |format| format.js From 649c65fbe222202c253de61cf4a4fc7bbecb2bb1 Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Tue, 27 Jan 2015 10:14:05 +0800 Subject: [PATCH 135/192] =?UTF-8?q?=E5=9B=BD=E9=99=85=E5=8C=96=E9=83=A8?= =?UTF-8?q?=E5=88=86=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/poll_helper.rb | 8 ++++---- app/views/poll/_edit_MC.html.erb | 8 ++++++-- app/views/poll/_edit_MCQ.html.erb | 8 ++++++-- app/views/poll/_edit_head.html.erb | 8 ++++++-- app/views/poll/_edit_mulit.html.erb | 8 ++++++-- app/views/poll/_edit_single.html.erb | 8 ++++++-- app/views/poll/_new_MC.html.erb | 8 ++++++-- app/views/poll/_new_MCQ.html.erb | 8 ++++++-- app/views/poll/_new_mulit.html.erb | 8 ++++++-- app/views/poll/_new_single.html.erb | 8 ++++++-- 10 files changed, 58 insertions(+), 22 deletions(-) diff --git a/app/helpers/poll_helper.rb b/app/helpers/poll_helper.rb index 60d82c096..3156f1b3a 100644 --- a/app/helpers/poll_helper.rb +++ b/app/helpers/poll_helper.rb @@ -64,13 +64,13 @@ module PollHelper def options_show pq case pq when 1 - "单选题" + l(:label_MC) when 2 - "多选题" + l(:label_MCQ) when 3 - "单行主观题" + l(:label_single) else - "多行主观题" + l(:label_mulit) end end diff --git a/app/views/poll/_edit_MC.html.erb b/app/views/poll/_edit_MC.html.erb index 066eafe0d..f89407247 100644 --- a/app/views/poll/_edit_MC.html.erb +++ b/app/views/poll/_edit_MC.html.erb @@ -39,8 +39,12 @@
      diff --git a/app/views/poll/_edit_MCQ.html.erb b/app/views/poll/_edit_MCQ.html.erb index 129f50e94..d6045f965 100644 --- a/app/views/poll/_edit_MCQ.html.erb +++ b/app/views/poll/_edit_MCQ.html.erb @@ -36,8 +36,12 @@
      diff --git a/app/views/poll/_edit_head.html.erb b/app/views/poll/_edit_head.html.erb index ed90a5ef8..dfa5b5cfc 100644 --- a/app/views/poll/_edit_head.html.erb +++ b/app/views/poll/_edit_head.html.erb @@ -7,8 +7,12 @@
      diff --git a/app/views/poll/_edit_mulit.html.erb b/app/views/poll/_edit_mulit.html.erb index d498169f4..5c694ff05 100644 --- a/app/views/poll/_edit_mulit.html.erb +++ b/app/views/poll/_edit_mulit.html.erb @@ -20,8 +20,12 @@
      diff --git a/app/views/poll/_edit_single.html.erb b/app/views/poll/_edit_single.html.erb index 2c2d41e0f..5aff29984 100644 --- a/app/views/poll/_edit_single.html.erb +++ b/app/views/poll/_edit_single.html.erb @@ -16,8 +16,12 @@
      diff --git a/app/views/poll/_new_MC.html.erb b/app/views/poll/_new_MC.html.erb index a7f9e441b..294c058f8 100644 --- a/app/views/poll/_new_MC.html.erb +++ b/app/views/poll/_new_MC.html.erb @@ -34,8 +34,12 @@
      diff --git a/app/views/poll/_new_MCQ.html.erb b/app/views/poll/_new_MCQ.html.erb index 027a1c1f6..1478f9918 100644 --- a/app/views/poll/_new_MCQ.html.erb +++ b/app/views/poll/_new_MCQ.html.erb @@ -33,8 +33,12 @@
      diff --git a/app/views/poll/_new_mulit.html.erb b/app/views/poll/_new_mulit.html.erb index 02f7a71a7..23ffb3d64 100644 --- a/app/views/poll/_new_mulit.html.erb +++ b/app/views/poll/_new_mulit.html.erb @@ -13,8 +13,12 @@
      diff --git a/app/views/poll/_new_single.html.erb b/app/views/poll/_new_single.html.erb index ffc525546..4ee185070 100644 --- a/app/views/poll/_new_single.html.erb +++ b/app/views/poll/_new_single.html.erb @@ -8,8 +8,12 @@
      From 5950f0404ba75c13047a6f09720deab95f08be99 Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Tue, 27 Jan 2015 11:35:19 +0800 Subject: [PATCH 136/192] =?UTF-8?q?#1832=20=E4=B8=8D=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E6=97=A0=E6=95=B0=E6=8D=AE=E7=9A=84=E5=AD=97=E6=AE=B5=EF=BC=8C?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/application_helper.rb | 4 +++ app/views/layouts/base_users.html.erb | 45 +++++++++++++++------------ 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index caf29ba90..1face5c38 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1961,4 +1961,8 @@ module ApplicationHelper end confirm_info end + + def get_technical_title user + #user.user_extensions.technical_title + end end diff --git a/app/views/layouts/base_users.html.erb b/app/views/layouts/base_users.html.erb index f241875bd..dbd6503b0 100644 --- a/app/views/layouts/base_users.html.erb +++ b/app/views/layouts/base_users.html.erb @@ -267,27 +267,32 @@
      <% end %> - - - - - - <% if @user.user_extensions.identity == 0 %> - - - <% end %> - + <% unless @user.user_extensions.location.empty?%> + + + + + + <% end %> + <% unless @user.user_extensions.technical_title.nil?%> + + <% if @user.user_extensions.identity == 0 %> + + + <% end %> + + <%end%> <% if @user.user_extensions.identity == 1 %> - <% if(is_watching?(@user) ) %> + <% if(is_watching?(@user) ) && !@user.user_extensions.student_id.empty? %> <% if @user.user_extensions.identity == 0 %> <% end %> From 108435f9334f5b66b9113bc3538ffa6acb31f98b Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Thu, 29 Jan 2015 16:53:11 +0800 Subject: [PATCH 163/192] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=A2=98=E7=9B=AE?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E5=A2=9E=E5=8A=A0=E6=A0=87=E9=A2=98=E4=B8=8D?= =?UTF-8?q?=E8=83=BD=E4=B8=BA=E7=A9=BA=E7=9A=84js=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/poll/_new_MC.html.erb | 2 +- app/views/poll/_new_MCQ.html.erb | 2 +- app/views/poll/_new_mulit.html.erb | 2 +- app/views/poll/_new_single.html.erb | 2 +- app/views/poll/_poll_form.html.erb | 8 ++++++++ 5 files changed, 12 insertions(+), 4 deletions(-) diff --git a/app/views/poll/_new_MC.html.erb b/app/views/poll/_new_MC.html.erb index 294c058f8..b4624bbb5 100644 --- a/app/views/poll/_new_MC.html.erb +++ b/app/views/poll/_new_MC.html.erb @@ -34,7 +34,7 @@
      - <%= link_to @contest.name, show_contest_contest_path(@contest) %> + <%= link_to @contest.name, contest_contestnotifications_path(@contest) %>
      <%=link_to @project.watcher_users.count, :controller=>"projects", :action=>"watcherlist", :id => @project %> - <%=link_to "#{@project.issues.count}", project_issues_path(@project) %> + <%=link_to "#{@project.issues.where('status_id in (1,2,4,6)').count}", project_issues_path(@project) %>
      - <%= l(:label_location) %>: - - <%= @user.user_extensions.location %> - <%= @user.user_extensions.location_city %> -
      - <%= l(:label_technical_title) %>: - - -
      + <%= l(:label_location) %>: + + <%= @user.user_extensions.location %> + <%= @user.user_extensions.location_city %> +
      + <%= l(:label_technical_title) %>: + + +
      <%= l(:label_bidding_user_studentcode)%>: From 6c02c96342187e6cff562cab0dba4581570c043d Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Tue, 27 Jan 2015 13:39:16 +0800 Subject: [PATCH 137/192] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E4=BA=86=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=97=B6=E9=97=B4=E8=B7=A8=E5=BA=A6=E7=9A=84=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lib/acts_as_activity_provider.rb | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/plugins/acts_as_activity_provider/lib/acts_as_activity_provider.rb b/lib/plugins/acts_as_activity_provider/lib/acts_as_activity_provider.rb index 17f834c84..f467ef873 100644 --- a/lib/plugins/acts_as_activity_provider/lib/acts_as_activity_provider.rb +++ b/lib/plugins/acts_as_activity_provider/lib/acts_as_activity_provider.rb @@ -49,8 +49,11 @@ module Redmine end module ClassMethods + # Time 2015-01-27 13:37:41 + # Author lizanle + # Description 应该保持原来的写法更加容易懂 # Returns events of type event_type visible by user that occured between from and to - def find_events(event_type, user, days, created_time, options) + def find_events(event_type, user, from, to, options) provider_options = activity_provider_options[event_type] raise "#{self.name} can not provide #{event_type} events." if provider_options.nil? @@ -91,6 +94,10 @@ module Redmine ActiveSupport::Deprecation.warn "acts_as_activity_provider with implicit :permission option is deprecated. Add a visible scope to the #{self.name} model or use explicit :permission option." scope = scope.scoped(:conditions => Project.allowed_to_condition(user, "view_#{self.name.underscore.pluralize}".to_sym, options)) end + # Time 2015-01-27 13:34:40 + # Author lizanle + # Description 这段代码增加了时间跨度,时间跨度应该由管理员来调整,所以应该去掉 +=begin unless scope.all(provider_options[:find_options].dup).first.nil? if provider_options[:timestamp].include? "updated_on" to = scope.scoped(:order => "#{provider_options[:timestamp]} desc").all(provider_options[:find_options].dup).first.updated_on @@ -100,9 +107,10 @@ module Redmine if options[:course] from = (to - days.days) > created_time ? (to - days.days) : created_time.to_date else - from = to - days.days - 1.years + from = to - days.day - 1.years end end +=end if from && to scope = scope.scoped(:conditions => ["#{provider_options[:timestamp]} BETWEEN ? AND ?", from, to]) From d112c5a911196329d81f89b7313e48f12951a3c3 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Tue, 27 Jan 2015 13:46:47 +0800 Subject: [PATCH 138/192] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BA=86=E6=B3=A8?= =?UTF-8?q?=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../acts_as_activity_provider/lib/acts_as_activity_provider.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/plugins/acts_as_activity_provider/lib/acts_as_activity_provider.rb b/lib/plugins/acts_as_activity_provider/lib/acts_as_activity_provider.rb index f467ef873..b7cb8c17d 100644 --- a/lib/plugins/acts_as_activity_provider/lib/acts_as_activity_provider.rb +++ b/lib/plugins/acts_as_activity_provider/lib/acts_as_activity_provider.rb @@ -96,7 +96,7 @@ module Redmine end # Time 2015-01-27 13:34:40 # Author lizanle - # Description 这段代码增加了时间跨度,时间跨度应该由管理员来调整,所以应该去掉 + # Description 这段代码就用scope.all进行了查询,拖慢了速度,并且增加了时间跨度,时间跨度应该由管理员来调整,所以应该去掉 =begin unless scope.all(provider_options[:find_options].dup).first.nil? if provider_options[:timestamp].include? "updated_on" From 5afbf6dbca66eb015bb098c256cdf84f8cbca661 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Tue, 27 Jan 2015 14:19:46 +0800 Subject: [PATCH 139/192] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BA=86=E6=B3=A8?= =?UTF-8?q?=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/system_log_controller.rb | 93 +++++++++++++----------- 1 file changed, 52 insertions(+), 41 deletions(-) diff --git a/app/controllers/system_log_controller.rb b/app/controllers/system_log_controller.rb index eb62140f9..274cb18a9 100644 --- a/app/controllers/system_log_controller.rb +++ b/app/controllers/system_log_controller.rb @@ -1,48 +1,59 @@ -# 显示和清理系统日志 - class SystemLogController < ApplicationController +# Time 2015-01-26 17:12:23 +# Author lizanle +# Description 显示和清理系统日志 +class SystemLogController < ApplicationController - before_filter :require_admin - # 默认每页显示20条记录 - PER_PAGE = 20 - layout "base" - include SystemLogHelper - #查看所有日志 - def index - @logs = SystemLog.logo_data(params[:page]||1,params[:per]||PER_PAGE,params[:search] , params[:day]) - end + before_filter :require_admin + # 默认每页显示20条记录 + PER_PAGE = 20 + layout "base" + include SystemLogHelper - #清除日志 - def clear - SystemLog.clear params[:day] - redirect_to :action => :index - end + # Time 2015-01-26 17:12:46 + # Author lizanle + # Description 查看所有日志 + def index + @logs = SystemLog.logo_data(params[:page]||1, params[:per]||PER_PAGE, params[:search], params[:day]) + end - #访问分析 - def access_analysis - #解析日志,然后逆序 - @log_result = SystemLog.analysis(params[:day]).reverse[1...-1] - @access_module = Hash.new - #日誌可能為空 - if @log_result && !@log_result.empty? - #将数组中的模块访问统计出来放到hash中 每条记录的第四个值是Controller#action的形式 - @log_result.collect! {|r| @access_module[r[3]].nil? ? - @access_module[r[3]] = 1 : @access_module[r[3]] +=1 } - # 去掉key可能为空记录 排序,然后取逆序 - @access_module = @access_module.delete_if{|k,v| k.nil?}.sort_by{|key,val| val}.reverse - else - @access_module - end + # Time 2015-01-26 14:42:38 + # Author lizanle + # Description 清除日志 + def clear + SystemLog.clear params[:day] + redirect_to :action => :index + end + + # Time 2015-01-26 17:24:25 + # Author lizanle + # Description 访问分析 + def access_analysis + #解析日志,然后逆序 + @log_result = SystemLog.analysis(params[:day]).reverse[1...-1] + @access_module = Hash.new + #日誌可能為空 + if @log_result && !@log_result.empty? + #将数组中的模块访问统计出来放到hash中 每条记录的第四个值是Controller#action的形式 + @log_result.collect! { |r| @access_module[r[3]].nil? ? + @access_module[r[3]] = 1 : @access_module[r[3]] +=1 } + # 去掉key可能为空记录 排序,然后取逆序 + @access_module = @access_module.delete_if { |k, v| k.nil? }.sort_by { |key, val| val }.reverse + else + @access_module end + end - #耗时分析 - def time_analysis - #解析日志 - @log_result = SystemLog.analysis(params[:day]).reverse[1...-1] - if @log_result && !@log_result.empty? - #分页 - @log_result = Kaminari.paginate_array(@log_result).page(params[:page]||1).per(params[:per]||PER_PAGE) - else - @log_result = [] - end + # Time 2015-01-26 17:24:36 + # Author lizanle + # Description 耗时分析 + def time_analysis + #解析日志 + @log_result = SystemLog.analysis(params[:day]).reverse[1...-1] + if @log_result && !@log_result.empty? + #分页 + @log_result = Kaminari.paginate_array(@log_result).page(params[:page]||1).per(params[:per]||PER_PAGE) + else + @log_result = [] end end +end From d8b5252279df96f925c4638771a0f3c3d876ca4a Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Tue, 27 Jan 2015 14:21:51 +0800 Subject: [PATCH 140/192] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BA=86=E6=B3=A8?= =?UTF-8?q?=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/system_log_helper.rb | 261 +++++++++++++++++-------------- 1 file changed, 142 insertions(+), 119 deletions(-) diff --git a/app/helpers/system_log_helper.rb b/app/helpers/system_log_helper.rb index 53cf2038b..918d6a608 100644 --- a/app/helpers/system_log_helper.rb +++ b/app/helpers/system_log_helper.rb @@ -1,62 +1,73 @@ +# Time 2015-01-26 17:30:16 +# Author lizanle +# Description 日志帮助类 module SystemLogHelper - class SystemLog - class << self - # 分页(支持多关键字查询) - def logo_data(page,per,search,day) - logs = find_all_logs day - if logs.empty? #如果返回的是空數組,就說明日誌文件不存在 - return logs + class SystemLog + class << self + # Time 2015-01-26 17:29:17 + # Author lizanle + # Description 分页(支持多关键字查询) + def logo_data(page, per, search, day) + logs = find_all_logs day + if logs.empty? #如果返回的是空數組,就說明日誌文件不存在 + return logs + end + # 根据search参数来决定是否需要查询 + keywords = search + if keywords && !keywords.strip.blank? + # 把keywords转化成正则表达式数组 + keywords = keywords.strip.split(/\s+/).collect! { |w| Regexp.new(w, 'i') } + # 一条记录应该匹配每个关键字 log =~ r 是对log记录进行判断是否符合r的正则表达式 + logs = logs.find_all do |log| + keywords.all? { |r| log =~ r } end - # 根据search参数来决定是否需要查询 - keywords = search - if keywords && !keywords.strip.blank? - # 把keywords转化成正则表达式数组 - keywords = keywords.strip.split(/\s+/).collect! {|w| Regexp.new(w, 'i')} - # 一条记录应该匹配每个关键字 log =~ r 是对log记录进行判断是否符合r的正则表达式 - logs = logs.find_all do |log| - keywords.all? { |r| log =~ r } - end - #用Kaminari分页 - logs = Kaminari.paginate_array(logs).page(page).per(per).collect! {|log| parse(log)} - #将分页后的记录的搜索结果添加样式,样式中的\0是给给r占位置的。 - logs.collect! do |log| - keywords.each { |r| log.gsub!(r, '\0')} - log - end - else - logs = Kaminari.paginate_array(logs).page(page).per(per).collect! {|log| parse(log)} + #用Kaminari分页 + logs = Kaminari.paginate_array(logs).page(page).per(per).collect! { |log| parse(log) } + #将分页后的记录的搜索结果添加样式,样式中的\0是给给r占位置的。 + logs.collect! do |log| + keywords.each { |r| log.gsub!(r, '\0') } + log end - logs + else + logs = Kaminari.paginate_array(logs).page(page).per(per).collect! { |log| parse(log) } end + logs + end - #清除日誌 - def clear day - if File::exists?(logfile_path day) - File.open(logfile_path(day), 'w') do |f| - f.print '' - end - else + # Time 2015-01-26 17:28:57 + # Author lizanle + # Description 清除日誌 + def clear day + if File::exists?(logfile_path day) + File.open(logfile_path(day), 'w') do |f| + f.print '' end + else end + end - #讀取日誌 - private - def find_all_logs day - if File::exists?(logfile_path day) - File.open(logfile_path day) do |f| - #打开文件,并按照正则表达式切分,逆序,最新一个记录可以扔掉(因为最新的记录永远都是访问System_log) - f.read.split("Processing").reverse[1..-1] - end - else - [] + # Time 2015-01-26 17:28:49 + # Author lizanle + # Description 讀取日誌 + private + def find_all_logs day + if File::exists?(logfile_path day) + File.open(logfile_path day) do |f| + #打开文件,并按照正则表达式切分,逆序,最新一个记录可以扔掉(因为最新的记录永远都是访问System_log) + f.read.split("Processing").reverse[1..-1] end + else + [] end + end - # 日志文件的路径,一般在Rails.root/log下,根据环境配置 - # 依次记录到product.log development.log test.log中 - def logfile_path day - #将日期处理成2015-01-01的形式 - unless day.nil? + # Time 2015-01-26 17:28:34 + # Author lizanle + # Description 日志文件的路径,一般在Rails.root/log下,根据环境配置 + # 依次记录到product.log development.log test.log中 + def logfile_path day + #将日期处理成2015-01-01的形式 + unless day.nil? dayArr = day.split('-') if dayArr[1].length == 1 dayArr[1] = "0" + dayArr[1] @@ -65,93 +76,105 @@ module SystemLogHelper dayArr[2] = "0" + dayArr[2] end day = dayArr.join('-') - end - #如果不是當天,則需要加後綴 - if !day.nil? && !day.strip.blank? && day != Time.now.strftime("%Y-%m-%d") - File.join(Rails.root, "log", "#{Rails.env}.log.#{day.gsub('-','')}") - else - File.join(Rails.root, "log", "#{Rails.env}.log") - end end - - #替換換行符 - def parse(log) - ERB::Util.html_escape(log.gsub(/\e\[[\d;m]+/, '')).gsub("\n", "
      ") + #如果不是當天,則需要加後綴 + if !day.nil? && !day.strip.blank? && day != Time.now.strftime("%Y-%m-%d") + File.join(Rails.root, "log", "#{Rails.env}.log.#{day.gsub('-', '')}") + else + File.join(Rails.root, "log", "#{Rails.env}.log") end + end - #定义响应正则表达式 2015-01-20 11:31:13 INFO -- Completed 200 OK in 125ms (Views: 81.0ms | ActiveRecord: 2.0ms) - def response_regex - 'Completed \d+ \w+ in (\d+)ms \(Views: (\d+\.\d+)?ms \| ActiveRecord: (\d+\.\d+)?ms\)' - end + # Time 2015-01-26 17:28:22 + # Author lizanle + # Description 替換換行符 + def parse(log) + ERB::Util.html_escape(log.gsub(/\e\[[\d;m]+/, '')).gsub("\n", "
      ") + end - #将一条记录中的地址主机等都分析出来 - def get_status(paragraph) - request_regex = 'Started GET \"(\/.*)\" for ([\d]+\.[\d]+\.[\d]+\.[\d]+) at [\d]*-([\d]*-[\d]* [\d]*:[\d]*:[\d]*)' - controller_regex = 'Processing by ([\w]+#[\w]+)' - page_time_regex = 'Views: \d+(\.\d+)?ms' - activeRecord_time_regex = 'ActiveRecord: \d+(\.\d+)?ms' + # Time 2015-01-26 17:28:07 + # Author lizanle + # Description 定义响应正则表达式 2015-01-20 11:31:13 INFO -- Completed 200 OK in 125ms (Views: 81.0ms | ActiveRecord: 2.0ms) + def response_regex + 'Completed \d+ \w+ in (\d+)ms \(Views: (\d+\.\d+)?ms \| ActiveRecord: (\d+\.\d+)?ms\)' + end - if paragraph.match(request_regex) != nil - request_url = paragraph.match(request_regex)[1] #正则表达式中的括号能够截取成数组 - request_host = paragraph.match(request_regex)[2] - request_at = paragraph.match(request_regex)[3] - end + # Time 2015-01-26 17:27:51 + # Author lizanle + # Description 将一条记录中的地址主机等都分析出来 + def get_status(paragraph) + request_regex = 'Started GET \"(\/.*)\" for ([\d]+\.[\d]+\.[\d]+\.[\d]+) at [\d]*-([\d]*-[\d]* [\d]*:[\d]*:[\d]*)' + controller_regex = 'Processing by ([\w]+#[\w]+)' + page_time_regex = 'Views: \d+(\.\d+)?ms' + activeRecord_time_regex = 'ActiveRecord: \d+(\.\d+)?ms' - if paragraph.match(controller_regex) != nil - controller_name = paragraph.match(controller_regex)[1] - end + #解析请求中的正则,主机,时间 + if paragraph.match(request_regex) != nil + request_url = paragraph.match(request_regex)[1] #正则表达式中的括号能够截取成数组 + request_host = paragraph.match(request_regex)[2] + request_at = paragraph.match(request_regex)[3] + end - if paragraph.match(response_regex) != nil - #print(paragraph.match(response_regex)) - total_time = paragraph.match(response_regex)[1] - page_time = paragraph.match(response_regex)[2] - activeRecord_time = paragraph.match(response_regex)[3] - page_time_percent = page_time.to_f/(total_time.to_f) - activeRecord_time_percent = activeRecord_time.to_f/(total_time.to_f) - else - end - request_status = [request_url, request_host, request_at, - controller_name, total_time,page_time,page_time_percent,activeRecord_time,activeRecord_time_percent] - request_status + #解析控制器 + if paragraph.match(controller_regex) != nil + controller_name = paragraph.match(controller_regex)[1] end - #分析日志 - public - def analysis day - csv = Array.new - #如果文件不存在,则直接返回空数组 - if File::exists?(logfile_path day) - File.open(logfile_path(day), "r:utf-8") do |file| - paragraph = "" - begin_flag = false - # 对每一行进行判断 - file.each do |line| - # 以"Started GET "开头为一个paragraph - #print(line.match('[\d]*-([\d]*-[\d]* [\d]*:[\d]*:[\d]*) INFO -- Started GET ') == nil) - if (line.match('[\d]*-([\d]*-[\d]* [\d]*:[\d]*:[\d]*) \w+ -- Started GET ') != nil) - if !begin_flag - begin_flag = true - paragraph.concat(line) - else - # 另一个paragraph的开头 - if (paragraph.match(response_regex) != nil) - csv << get_status(paragraph) - end - begin_flag = true - paragraph = line - end + #解析响应时间以及计算百分比 + if paragraph.match(response_regex) != nil + #print(paragraph.match(response_regex)) + total_time = paragraph.match(response_regex)[1] + page_time = paragraph.match(response_regex)[2] + activeRecord_time = paragraph.match(response_regex)[3] + page_time_percent = page_time.to_f/(total_time.to_f) + activeRecord_time_percent = activeRecord_time.to_f/(total_time.to_f) + else + end + #将解析结果当做一条记录数组返回 + request_status = [request_url, request_host, request_at, + controller_name, total_time, page_time, page_time_percent, activeRecord_time, activeRecord_time_percent] + request_status + end + + # Time 2015-01-26 16:41:51 + # Author lizanle + # Description 分析日志 + public + def analysis day + csv = Array.new + #如果文件不存在,则直接返回空数组 + if File::exists?(logfile_path day) + File.open(logfile_path(day), "r:utf-8") do |file| + paragraph = "" + begin_flag = false + # 对每一行进行判断 + file.each do |line| + # 以"Started GET "开头为一个paragraph + #print(line.match('[\d]*-([\d]*-[\d]* [\d]*:[\d]*:[\d]*) INFO -- Started GET ') == nil) + if (line.match('[\d]*-([\d]*-[\d]* [\d]*:[\d]*:[\d]*) \w+ -- Started GET ') != nil) + if !begin_flag + begin_flag = true + paragraph.concat(line) else - if begin_flag - paragraph.concat(line) - else + # 另一个paragraph的开头 + if (paragraph.match(response_regex) != nil) + csv << get_status(paragraph) end + begin_flag = true + paragraph = line + end + else + if begin_flag + paragraph.concat(line) + else end end - end + end end - csv end + csv end end end +end From d3f975434c14a23a2a57e0452e251de7caec8f2f Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Tue, 27 Jan 2015 14:22:25 +0800 Subject: [PATCH 141/192] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86new=20Relic?= =?UTF-8?q?=20gem=20=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Gemfile b/Gemfile index 5045cb822..ac12f4048 100644 --- a/Gemfile +++ b/Gemfile @@ -19,6 +19,7 @@ gem 'acts-as-taggable-on', '2.4.1' gem 'spreadsheet' gem 'ruby-ole' gem 'email_verifier' +gem 'newrelic_rpm' group :development do gem 'better_errors', path: 'lib/better_errors' From a3aea4434b1cd4cb19406d096277f23ca7f67111 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Tue, 27 Jan 2015 14:24:30 +0800 Subject: [PATCH 142/192] =?UTF-8?q?=E5=BF=BD=E7=95=A5newrelic.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index c4be9d1ce..2e8cb69df 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ /tmp/* /public/cache/* .gitignore +/config/newrelic.yml /public/images/avatars/* /Gemfile /Gemfile.lock From b6db353b57e794027772fa3b0031badca5b91a99 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Tue, 27 Jan 2015 14:25:06 +0800 Subject: [PATCH 143/192] =?UTF-8?q?newrelic=E9=85=8D=E7=BD=AE=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/newrelic.yml | 224 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 224 insertions(+) create mode 100644 config/newrelic.yml diff --git a/config/newrelic.yml b/config/newrelic.yml new file mode 100644 index 000000000..df431805d --- /dev/null +++ b/config/newrelic.yml @@ -0,0 +1,224 @@ +# +# This file configures the New Relic Agent. New Relic monitors Ruby, Java, +# .NET, PHP, Python and Node applications with deep visibility and low +# overhead. For more information, visit www.newrelic.com. +# +# Generated January 23, 2015 +# +# This configuration file is custom generated for Trustie + + +# Here are the settings that are common to all environments +common: &default_settings + # ============================== LICENSE KEY =============================== + + # You must specify the license key associated with your New Relic + # account. This key binds your Agent's data to your account in the + # New Relic service. + license_key: '9b481f5c9ec07de722dcaaa17b38d0d1efff32c0' + + # Agent Enabled (Ruby/Rails Only) + # Use this setting to force the agent to run or not run. + # Default is 'auto' which means the agent will install and run only + # if a valid dispatcher such as Mongrel is running. This prevents + # it from running with Rake or the console. Set to false to + # completely turn the agent off regardless of the other settings. + # Valid values are true, false and auto. + # + # agent_enabled: auto + + # Application Name Set this to be the name of your application as + # you'd like it show up in New Relic. The service will then auto-map + # instances of your application into an "application" on your + # dashboard page. If you want to map this instance into multiple + # apps, like "AJAX Requests" and "All UI" then specify a semicolon + # separated list of up to three distinct names, or a yaml list. + # Defaults to the capitalized RAILS_ENV or RACK_ENV (i.e., + # Production, Staging, etc) + # + # Example: + # + # app_name: + # - Ajax Service + # - All Services + # + # Caution: If you change this name, a new application will appear in the New + # Relic user interface with the new name, and data will stop reporting to the + # app with the old name. + # + # See https://newrelic.com/docs/site/renaming-applications for more details + # on renaming your New Relic applications. + # + app_name: My Application + + # When "true", the agent collects performance data about your + # application and reports this data to the New Relic service at + # newrelic.com. This global switch is normally overridden for each + # environment below. (formerly called 'enabled') + monitor_mode: true + + # Developer mode should be off in every environment but + # development as it has very high overhead in memory. + developer_mode: false + + # The newrelic agent generates its own log file to keep its logging + # information separate from that of your application. Specify its + # log level here. + log_level: info + + # Optionally set the path to the log file This is expanded from the + # root directory (may be relative or absolute, e.g. 'log/' or + # '/var/log/') The agent will attempt to create this directory if it + # does not exist. + # log_file_path: 'log' + + # Optionally set the name of the log file, defaults to 'newrelic_agent.log' + # log_file_name: 'newrelic_agent.log' + + # The newrelic agent communicates with the service via https by default. This + # prevents eavesdropping on the performance metrics transmitted by the agent. + # The encryption required by SSL introduces a nominal amount of CPU overhead, + # which is performed asynchronously in a background thread. If you'd prefer + # to send your metrics over http uncomment the following line. + # ssl: false + + #============================== Browser Monitoring =============================== + # New Relic Real User Monitoring gives you insight into the performance real users are + # experiencing with your website. This is accomplished by measuring the time it takes for + # your users' browsers to download and render your web pages by injecting a small amount + # of JavaScript code into the header and footer of each page. + 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 New Relic server. + # + # If a proxy is used, the host setting is required. Other settings + # are optional. Default port is 8080. + # + # proxy_host: hostname + # proxy_port: 8080 + # proxy_user: + # proxy_pass: + + # The agent can optionally log all data it sends to New Relic servers to a + # separate log file for human inspection and auditing purposes. To enable this + # feature, change 'enabled' below to true. + # See: https://newrelic.com/docs/ruby/audit-log + audit_log: + enabled: false + + # 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 + # Java: create a config setting called "ignored_params" and set it to + # a comma separated list of HTTP parameter names. + # ex: ignored_params: credit_card, ssn, password + capture_params: false + + # Transaction tracer captures deep information about slow + # transactions and sends this to the New Relic 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. Set this to false to + # turn it off. This feature is only available at the Professional + # and above product levels. + 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 + # New Relic. 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 New Relic 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 New Relic for viewing + error_collector: + + # Error collector is enabled by default. Set this to false to turn + # it off. This feature is only available at the Professional and above + # product levels. + enabled: true + + # To stop specific errors from reporting to New Relic, set this property + # to comma-separated values. Default is to ignore routing errors, + # which are how 404's get triggered. + ignore_errors: "ActionController::RoutingError,Sinatra::NotFound" + + # If you're interested in capturing memcache keys as though they + # were SQL uncomment this flag. Note that this does increase + # overhead slightly on every memcached call, and can have security + # implications if your memcached keys are sensitive + # capture_memcache_keys: true + +# Application Environments +# ------------------------------------------ +# Environment-specific settings are in this section. +# For Rails applications, RAILS_ENV is used to determine the environment. +# For Java applications, pass -Dnewrelic.environment to set +# the environment. + +# NOTE if your application has other named environments, you should +# provide newrelic configuration settings for these environments here. + +development: + <<: *default_settings + # Turn on communication to New Relic service in development mode + monitor_mode: true + app_name: My Application (Development) + + # Rails Only - when running in Developer Mode, the New Relic Agent will + # present performance information on the last 100 transactions you have + # executed since starting the mongrel. + # NOTE: There is substantial overhead when running in developer mode. + # Do not use for production or load testing. + developer_mode: true + +test: + <<: *default_settings + # It almost never makes sense to turn on the agent when running + # unit, functional or integration tests or the like. + monitor_mode: false + +# Turn on the agent in production for 24x7 monitoring. NewRelic +# testing shows an average performance impact of < 5 ms per +# transaction, you can leave this on all the time without +# incurring any user-visible performance degradation. +production: + <<: *default_settings + monitor_mode: true + +# Many applications have a staging environment which behaves +# identically to production. Support for that environment is provided +# here. By default, the staging environment has the agent turned on. +staging: + <<: *default_settings + monitor_mode: true + app_name: My Application (Staging) From 00c0ddc600486e77749e08834668303168dbcbb8 Mon Sep 17 00:00:00 2001 From: alan <547533434@qq.com> Date: Tue, 27 Jan 2015 15:11:24 +0800 Subject: [PATCH 144/192] =?UTF-8?q?admin=E6=9F=A5=E7=9C=8Bcourse=E5=92=8Cu?= =?UTF-8?q?ser=E5=88=97=E8=A1=A8=20Signed-off-by:=20alan=20<547533434@qq.c?= =?UTF-8?q?om>?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/courses_controller.rb | 3 ++- app/controllers/users_controller.rb | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index b5e0362b3..e34993663 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -622,7 +622,8 @@ class CoursesController < ApplicationController end def index - render_404 + render_404 unless User.current.admin? + @course_type = params[:course_type] @school_id = params[:school_id] per_page_option = 10 diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 58af43da3..e97615772 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -358,8 +358,7 @@ class UsersController < ApplicationController respond_to do |format| format.html { @groups = Group.all.sort - # render :layout => @user_base_tag - render_404 + User.current.admin? ? (render :layout => @user_base_tag) : (render_404) } format.api end From 6c76cacb61768fbee43241d7c81a9a37d591ef30 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Tue, 27 Jan 2015 15:20:44 +0800 Subject: [PATCH 145/192] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E5=8A=A8=E6=80=81=E5=BE=88=E6=85=A2=EF=BC=8C=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=87=8F=E5=BE=88=E5=A4=A7=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lib/acts_as_activity_provider.rb | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/lib/plugins/acts_as_activity_provider/lib/acts_as_activity_provider.rb b/lib/plugins/acts_as_activity_provider/lib/acts_as_activity_provider.rb index b7cb8c17d..a4f0ac21d 100644 --- a/lib/plugins/acts_as_activity_provider/lib/acts_as_activity_provider.rb +++ b/lib/plugins/acts_as_activity_provider/lib/acts_as_activity_provider.rb @@ -49,11 +49,8 @@ module Redmine end module ClassMethods - # Time 2015-01-27 13:37:41 - # Author lizanle - # Description 应该保持原来的写法更加容易懂 # Returns events of type event_type visible by user that occured between from and to - def find_events(event_type, user, from, to, options) + def find_events(event_type, user, days, created_time, options) provider_options = activity_provider_options[event_type] raise "#{self.name} can not provide #{event_type} events." if provider_options.nil? @@ -94,23 +91,19 @@ module Redmine ActiveSupport::Deprecation.warn "acts_as_activity_provider with implicit :permission option is deprecated. Add a visible scope to the #{self.name} model or use explicit :permission option." scope = scope.scoped(:conditions => Project.allowed_to_condition(user, "view_#{self.name.underscore.pluralize}".to_sym, options)) end - # Time 2015-01-27 13:34:40 + # Time 2015-01-27 15:18:33 # Author lizanle - # Description 这段代码就用scope.all进行了查询,拖慢了速度,并且增加了时间跨度,时间跨度应该由管理员来调整,所以应该去掉 -=begin - unless scope.all(provider_options[:find_options].dup).first.nil? + # Description 删除 unless scope.all,因为这个执行查询,并且没有加入时间限制,与下边 scope.all(provider_options[:find_options].dup)的重复查询 + if options[:course] if provider_options[:timestamp].include? "updated_on" to = scope.scoped(:order => "#{provider_options[:timestamp]} desc").all(provider_options[:find_options].dup).first.updated_on else to = scope.scoped(:order => "#{provider_options[:timestamp]} desc").all(provider_options[:find_options].dup).first.created_on end - if options[:course] from = (to - days.days) > created_time ? (to - days.days) : created_time.to_date - else - from = to - days.day - 1.years - end + else + from = to - Setting.activity_days_default.to_i end -=end if from && to scope = scope.scoped(:conditions => ["#{provider_options[:timestamp]} BETWEEN ? AND ?", from, to]) From 5434a5b0877dbc521d175d0b0fa35ae8c87a983e Mon Sep 17 00:00:00 2001 From: alan <547533434@qq.com> Date: Tue, 27 Jan 2015 15:29:09 +0800 Subject: [PATCH 146/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E3=80=8Aadmin?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E8=AE=BF=E9=97=AEcourses=E5=92=8Cusers?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E3=80=8B=20Signed-off-by:=20alan=20<54753343?= =?UTF-8?q?4@qq.com>?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile.lock | 5 +++++ app/controllers/courses_controller.rb | 9 ++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 6677141c9..20107dba6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -130,6 +130,7 @@ GEM rspec (~> 2.11) hashie (3.3.1) hike (1.2.3) + hitimes (1.2.2) hitimes (1.2.2-x86-mingw32) htmlentities (4.3.2) i18n (0.6.1) @@ -176,6 +177,10 @@ GEM cocaine (~> 0.5.3) mime-types polyglot (0.3.5) + pry (0.9.12.6) + coderay (~> 1.0) + method_source (~> 0.8) + slop (~> 3.4) pry (0.9.12.6-x86-mingw32) coderay (~> 1.0) method_source (~> 0.8) diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 161918094..e81b57ad7 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -8,6 +8,7 @@ class CoursesController < ApplicationController menu_item :overview menu_item :feedback, :only => :feedback menu_item :homework, :only => :homework + menu_item :new_homework, :only => :new_homework menu_item l(:label_sort_by_time), :only => :index @@ -675,8 +676,10 @@ class CoursesController < ApplicationController end def index - render_404 unless User.current.admin? - + if !User.current.admin? + render_404 + return + end @course_type = params[:course_type] @school_id = params[:school_id] per_page_option = 10 @@ -724,7 +727,7 @@ class CoursesController < ApplicationController respond_to do |format| format.html { - # render :layout => 'base' + render :layout => 'base' } format.atom { courses = Course.visible.order('created_on DESC').limit(Setting.feeds_limit.to_i).all From d32c4c8e861be5b8aa42c86236225c0ce7f29e62 Mon Sep 17 00:00:00 2001 From: zhuhao Date: Tue, 27 Jan 2015 15:32:12 +0800 Subject: [PATCH 147/192] =?UTF-8?q?=E9=A2=84=E5=88=B6=E4=BB=B6gem?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index dc834e68d..df019a5ad 100644 --- a/Gemfile +++ b/Gemfile @@ -33,7 +33,7 @@ group :test do gem 'factory_girl', '~> 4.4.0' gem 'selenium-webdriver', '~> 2.42.0' - + gem "faker" # platforms :mri, :mingw do # group :rmagick do # # RMagick 2 supports ruby 1.9 From 6a49d7a04fc665f74ee45949a60b55dcfdcd4b87 Mon Sep 17 00:00:00 2001 From: zhuhao Date: Tue, 27 Jan 2015 15:34:19 +0800 Subject: [PATCH 148/192] =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=8C=BF=E5=90=8D?= =?UTF-8?q?=E5=92=8C=E7=94=A8=E6=88=B7=E5=85=A8=E5=90=8D=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spec/models/user_spec.rb | 90 +++++++++++++++++++++------------------- 1 file changed, 47 insertions(+), 43 deletions(-) diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 6b8c962bd..d400dae80 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -1,23 +1,24 @@ require 'spec_helper' describe User do - #测试数据验证 - # before { @user = User.new(login: "ExampleUser" ,mail: "user@example.com", - # password: "foobar",password_confirmation: "foobar" ) } + # 测试数据验证 + # 此处采用预构件的方式生成数据 + # it "has a valid facrtory" do + # expect(FactoryGirl.create(:user)).not_to be_valid + # end + before :each do - @user = User.new(login: "ExampleUser" ,mail: "user@example.com", - password: "foobar",password_confirmation: "foobar" ) + @user = User.new(login: 'ExampleUser',firstname: 'sanfeng',lastname: 'zhang' ,mail: 'user@example.com', + password: 'foobar',password_confirmation: 'foobar' ) end - subject { @user }#指定@user为测试对象 - #属性存在性的测试 + + # 指定@user为测试对象 + subject { @user } + # 属性存在性的测试 it { should respond_to(:login) } it { should respond_to(:mail) } - #此处采用与构建的方式生成数据 - # it"is invalid without login" do - # user=FactoryGirl.build(:user,login: nil) - # expect(user).to_not be_valid - # end - #用户名唯一性的测试 + + # 用户名唯一性的测试 describe "when login is already taken" do before do user_with_same_login=@user.dup @@ -29,11 +30,12 @@ describe User do # end end - #邮箱唯一性测试 + # 邮箱唯一性测试 describe "when mail address is already taken " do before do - user_with_same_mail=@user.dup#dup method copy mail - user_with_same_mail.mail=@user.mail.upcase#转大写 + #dup method copy mail + user_with_same_mail=@user.dup + user_with_same_mail.mail=@user.mail.upcase user_with_same_mail.save end it{should_not be_valid} @@ -48,10 +50,10 @@ describe User do #login长度测试(login最大25字符) describe "when the login is too long " do - before{@user.login='a'*25} - it{should be_valid} + before{@user.login='a'*26} + it{should_not be_valid} end - #姓和名的长度测试 + # 姓和名的长度测试 describe "when the first name is too long " do before{@user.firstname='a'*30} it{should_not be_valid} @@ -61,7 +63,7 @@ describe User do it{should_not be_valid} end - #login合法性的测试(符合正则表达式规则的用户名:数字英文) + # login合法性的测试(符合正则表达式规则的用户名:数字英文) describe "when login format is invalid" do it"should be invalid" do username=%w[aa!3 aaa%$&*! 1111==!] @@ -82,7 +84,7 @@ describe User do end end - #邮箱合法性测试,在模型user中邮箱使用了正则表达式 + # 邮箱合法性测试,在模型user中邮箱使用了正则表达式 describe "is the mail valid" do context "when mail format is invalid" do it"should be invalid" do @@ -104,37 +106,39 @@ describe User do end end end - - describe "when the mail is too long" do#邮箱长度验证的测试 + # 邮箱长度验证的测试 + describe "when the mail is too long" do before{@user.mail='a'*60} it{should_not be_valid} end - #验证两次输入的密码是否一致的测试 + # 验证两次输入的密码是否一致的测试 describe "when the password does not match confirmation" do before{@user.password_confirmation="admin123"} it{should_not be_valid} end - #调用相关方法是否能返回期待的结果 - #userInfo方法,选择项目成员时显示的用户信息的文字 - describe "returns the user info when choice the members of the project" do - context "第一种情况" do - @user=User.new() - expect(@user.userInfo).to eq '' - end - context "二种情况" do - @user=User.new() - expect(@user.userInfo).to eq '' - end + # 选择项目成员时显示的用户信息文字userInfo方法的测试 + # describe "when choice the peoject number show the user info" do + # before{ @userwd = User.new(login: 'wudang',firstname: 'sanfeng',lastname: 'zhang' ,mail: 'user@example.com', + # password: 'foobar',password_confirmation: 'foobar' )} + # it "when the firstname and lastname is nil " do + # expect(@userwd.userInfo).to eq 'wudang (zhang sanfeng)' + # end + # + # end + # 返回用户全名的测试 + it "return full user's name" do + expect(@user.show_name).to eq 'zhangsanfeng' + end + + # 返回匿名用户方法的测试 + # User调用其类方法anonymous,返回一个AnonymousUser的实例对象@anonymoususer + # 该对象的lastname属性被赋值为"Anonymous",最后对比其值是否相等 + it "return the anonymous user" do + @anonymoususer=AnonymousUser.new + @anonymoususer=User.anonymous + expect(@anonymoususer.lastname).to eq 'Anonymous' end - # def name - # [firstname, lastname].join(' ') - # end - # it "returns a contact's full name as a string" do - # contact = Contact.new(firstname: 'John', lastname: 'Doe', - # email: 'johndoe@example.com') - # expect(contact.name).to eq 'John Doe'#调用contact的name方法 - # end end \ No newline at end of file From 20f4b5c44ba469e26035688cf881e4dad9a217ab Mon Sep 17 00:00:00 2001 From: alan <547533434@qq.com> Date: Tue, 27 Jan 2015 15:43:06 +0800 Subject: [PATCH 149/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E3=80=8Acontest?= =?UTF-8?q?=E6=96=B0=E5=BB=BA=E7=9A=84=E6=A0=B7=E5=BC=8F=E3=80=8B=20Signed?= =?UTF-8?q?-off-by:=20alan=20<547533434@qq.com>?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/contests/new_contest.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/contests/new_contest.html.erb b/app/views/contests/new_contest.html.erb index 71c12fad4..0e1b83602 100644 --- a/app/views/contests/new_contest.html.erb +++ b/app/views/contests/new_contest.html.erb @@ -6,7 +6,7 @@ method: :post do |f| %>
      <%= render :partial => 'form_contest', :locals => { :f => f } %> - <%= submit_tag l(:button_create) %> + <%= submit_tag l(:button_create), :style=> "margin-left: 100px;margin-top: 10px;" %> <%= javascript_tag "$('#bid_name').focus();" %> <% end %>
      From cf1cd9201ce66139bd14e5cec7a3ec5e2b8fee7e Mon Sep 17 00:00:00 2001 From: z9hang Date: Tue, 27 Jan 2015 16:03:38 +0800 Subject: [PATCH 150/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E5=BC=B9=E6=A1=86=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/files/_upload_show.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/files/_upload_show.html.erb b/app/views/files/_upload_show.html.erb index 65a662f10..91d050d93 100644 --- a/app/views/files/_upload_show.html.erb +++ b/app/views/files/_upload_show.html.erb @@ -5,7 +5,7 @@ <%= error_messages_for 'attachment' %> <%= form_tag(course_files_path(course), :multipart => true,:remote => true,:method => :post,:name=>"upload_form") do %> - + <%= render :partial => 'attachement_list',:locals => {:course => course} %>
      <%= l(:button_confirm)%> From 475ef12cd52067f54a969fe6f70b5d1ddc2bc432 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Tue, 27 Jan 2015 16:31:44 +0800 Subject: [PATCH 151/192] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B3=A8=E9=87=8A?= =?UTF-8?q?=EF=BC=8C=E4=BF=AE=E6=94=B9=E5=8F=98=E9=87=8F=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lib/acts_as_activity_provider.rb | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/plugins/acts_as_activity_provider/lib/acts_as_activity_provider.rb b/lib/plugins/acts_as_activity_provider/lib/acts_as_activity_provider.rb index a4f0ac21d..f4712fa3e 100644 --- a/lib/plugins/acts_as_activity_provider/lib/acts_as_activity_provider.rb +++ b/lib/plugins/acts_as_activity_provider/lib/acts_as_activity_provider.rb @@ -49,8 +49,11 @@ module Redmine end module ClassMethods + # Time 2015-01-27 16:30:47 + # Author lizanle + # Description 用原来的写法from,to更加容易懂 # Returns events of type event_type visible by user that occured between from and to - def find_events(event_type, user, days, created_time, options) + def find_events(event_type, user, from, to, options) provider_options = activity_provider_options[event_type] raise "#{self.name} can not provide #{event_type} events." if provider_options.nil? @@ -93,7 +96,7 @@ module Redmine end # Time 2015-01-27 15:18:33 # Author lizanle - # Description 删除 unless scope.all,因为这个执行查询,并且没有加入时间限制,与下边 scope.all(provider_options[:find_options].dup)的重复查询 + # Description 删除 unless scope.all,因为这个执行查询,并且没有加入时间限制,与下边 scope.all(provider_options[:find_options].dup)重复 if options[:course] if provider_options[:timestamp].include? "updated_on" to = scope.scoped(:order => "#{provider_options[:timestamp]} desc").all(provider_options[:find_options].dup).first.updated_on @@ -102,7 +105,7 @@ module Redmine end from = (to - days.days) > created_time ? (to - days.days) : created_time.to_date else - from = to - Setting.activity_days_default.to_i + #from = to - Setting.activity_days_default.to_i end if from && to From 43e9f738c04ae2ce8251be5b93dce956db321e65 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Tue, 27 Jan 2015 16:32:27 +0800 Subject: [PATCH 152/192] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B3=A8=E9=87=8A?= =?UTF-8?q?=EF=BC=8C=E4=BF=AE=E6=94=B9=E5=8F=98=E9=87=8F=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/redmine/activity/fetcher.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/redmine/activity/fetcher.rb b/lib/redmine/activity/fetcher.rb index b3f473893..c4adc6adb 100644 --- a/lib/redmine/activity/fetcher.rb +++ b/lib/redmine/activity/fetcher.rb @@ -77,9 +77,12 @@ module Redmine @scope = Redmine::Activity.default_event_types end + # Time 2015-01-27 16:31:58 + # Author lizanle + # Description 用from to 更加浅显易懂 # Returns an array of events for the given date range # sorted in reverse chronological order - def events(days = nil, created_time = nil, options={}) + def events(from = nil, to = nil, options={}) e = [] @options[:limit] = options[:limit] # modify by nwb @@ -87,7 +90,7 @@ module Redmine @scope.each do |event_type| constantized_providers(event_type).each do |provider| - e += provider.find_events(event_type, @user, days, created_time, @options) + e += provider.find_events(event_type, @user, from, to, @options) end end From e1e08497351b1f2cee9d7c4ceec908f1df4205d4 Mon Sep 17 00:00:00 2001 From: zhuhao Date: Tue, 27 Jan 2015 17:18:01 +0800 Subject: [PATCH 153/192] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/api.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb index 8226a1020..dcece12f1 100644 --- a/app/api/mobile/api.rb +++ b/app/api/mobile/api.rb @@ -33,7 +33,7 @@ module Mobile mount Apis::Homeworks #add_swagger_documentation ({api_version: 'v1', base_path: 'http://u06.shellinfo.cn/trustie/api'}) - add_swagger_documentation ({api_version: 'v1', base_path: '/api'}) + #add_swagger_documentation ({api_version: 'v1', base_path: '/api'}) end end From 7daf01f8e15af450a2a4fa3d724433fb5a10c883 Mon Sep 17 00:00:00 2001 From: zhuhao Date: Tue, 27 Jan 2015 17:18:31 +0800 Subject: [PATCH 154/192] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E9=94=AE=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile.lock | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Gemfile.lock b/Gemfile.lock index 20107dba6..355ca422d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -96,6 +96,8 @@ GEM execjs (2.2.1) factory_girl (4.4.0) activesupport (>= 3.0.0) + faker (1.4.3) + i18n (~> 0.5) fastercsv (1.5.5) ffi (1.9.3) ffi (1.9.3-x86-mingw32) @@ -314,6 +316,7 @@ DEPENDENCIES coderay (~> 1.0.6) coffee-rails (~> 3.2.1) factory_girl (~> 4.4.0) + faker fastercsv (~> 1.5.0) grape (~> 0.9.0) grape-entity From f793cff3986ab9f63f2958fa44daae2152b49903 Mon Sep 17 00:00:00 2001 From: z9hang Date: Tue, 27 Jan 2015 17:34:02 +0800 Subject: [PATCH 155/192] =?UTF-8?q?=E6=94=B9=E4=B8=BA=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E4=B8=8B=E6=89=8D=E8=B0=83=E7=94=A8api?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/api.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb index 8226a1020..a17c5c84d 100644 --- a/app/api/mobile/api.rb +++ b/app/api/mobile/api.rb @@ -33,7 +33,7 @@ module Mobile mount Apis::Homeworks #add_swagger_documentation ({api_version: 'v1', base_path: 'http://u06.shellinfo.cn/trustie/api'}) - add_swagger_documentation ({api_version: 'v1', base_path: '/api'}) + add_swagger_documentation ({api_version: 'v1', base_path: '/api'}) if Rails.env.devlopment? end end From 222e2cc1350a697b4c3973745ce4e50a831df650 Mon Sep 17 00:00:00 2001 From: z9hang Date: Wed, 28 Jan 2015 09:25:58 +0800 Subject: [PATCH 156/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9ErrorHandler=E6=9C=AA?= =?UTF-8?q?=E8=83=BD=E5=8A=A0=E8=BD=BD=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/api.rb | 4 ++-- db/schema.rb | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb index a17c5c84d..ccf155a92 100644 --- a/app/api/mobile/api.rb +++ b/app/api/mobile/api.rb @@ -1,5 +1,5 @@ module Mobile - + require_relative 'middleware/error_handler' class API < Grape::API version 'v1', using: :path format :json @@ -33,7 +33,7 @@ module Mobile mount Apis::Homeworks #add_swagger_documentation ({api_version: 'v1', base_path: 'http://u06.shellinfo.cn/trustie/api'}) - add_swagger_documentation ({api_version: 'v1', base_path: '/api'}) if Rails.env.devlopment? + add_swagger_documentation ({api_version: 'v1', base_path: '/api'}) if Rails.env.development? end end diff --git a/db/schema.rb b/db/schema.rb index 74ba6d652..98476f9dd 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -12,7 +12,6 @@ # It's strongly recommended to check this file into your version control system. ActiveRecord::Schema.define(:version => 20150123020615) do ->>>>>>> szzh create_table "activities", :force => true do |t| t.integer "act_id", :null => false From f7dbb24d3536b573a18e6f875c16cbbe4d5838b5 Mon Sep 17 00:00:00 2001 From: z9hang Date: Wed, 28 Jan 2015 10:31:30 +0800 Subject: [PATCH 157/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=89=88=E4=B8=8A=E7=BA=BF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/api.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb index ccf155a92..e2c4aa357 100644 --- a/app/api/mobile/api.rb +++ b/app/api/mobile/api.rb @@ -1,5 +1,11 @@ module Mobile require_relative 'middleware/error_handler' + require_relative 'apis/auth' + require_relative 'apis/users' + require_relative 'apis/courses' + require_relative 'apis/watches' + require_relative 'apis/upgrade' + require_relative 'apis/homeworks' class API < Grape::API version 'v1', using: :path format :json From a6488da7fa35f3a54a5fc50078055c25a7ed7664 Mon Sep 17 00:00:00 2001 From: z9hang Date: Wed, 28 Jan 2015 10:45:20 +0800 Subject: [PATCH 158/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=A1=EF=BC=B0?= =?UTF-8?q?=EF=BC=A9=E4=B8=8A=E7=BA=BF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/api.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb index e2c4aa357..bee78a20e 100644 --- a/app/api/mobile/api.rb +++ b/app/api/mobile/api.rb @@ -39,7 +39,7 @@ module Mobile mount Apis::Homeworks #add_swagger_documentation ({api_version: 'v1', base_path: 'http://u06.shellinfo.cn/trustie/api'}) - add_swagger_documentation ({api_version: 'v1', base_path: '/api'}) if Rails.env.development? + #add_swagger_documentation ({api_version: 'v1', base_path: '/api'}) if Rails.env.development? end end From b7c7cc4c64d5e742b77b46ae0e19024531cccfe4 Mon Sep 17 00:00:00 2001 From: whimlex Date: Wed, 28 Jan 2015 12:13:17 +0800 Subject: [PATCH 159/192] =?UTF-8?q?=E6=84=8F=E8=A7=81=E5=8F=8D=E9=A6=88?= =?UTF-8?q?=E6=A0=8F=E5=AE=9E=E7=8E=B0cookie=E7=BC=93=E5=AD=98=E6=94=B6?= =?UTF-8?q?=E6=8B=89=E5=B1=9E=E6=80=A7=EF=BC=8C=E5=AE=9E=E7=8E=B0=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E5=88=B7=E6=96=B0=E8=B7=B3=E8=BD=AC=EF=BC=8C=E6=84=8F?= =?UTF-8?q?=E8=A7=81=E5=8F=8D=E9=A6=88=E6=A0=8F=E6=94=B6=E6=8B=89=E4=B8=80?= =?UTF-8?q?=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/layouts/_base_feedback.html.erb | 49 +++++++++++++++++++---- 1 file changed, 42 insertions(+), 7 deletions(-) diff --git a/app/views/layouts/_base_feedback.html.erb b/app/views/layouts/_base_feedback.html.erb index bf4b12daf..2039735bc 100644 --- a/app/views/layouts/_base_feedback.html.erb +++ b/app/views/layouts/_base_feedback.html.erb @@ -63,7 +63,7 @@ a:hover.opnionButton{ text-decoration:underline;} (function($){ $.fn.fix = function(options){ var defaults = { - float : 'left', + float : 'right', minStatue : false, skin : 'blue', durationTime : 1000 @@ -81,7 +81,7 @@ a:hover.opnionButton{ text-decoration:underline;} var defaultTop = thisBox.offset().top; //????????top thisBox.css(options.float, 0); - if(options.minStatue){ + if(options.minStatue == "true"){ $(".show_btn").css("float", options.float); sideContent.css('width', 0); show_btn.css('width', 25); @@ -106,15 +106,18 @@ a:hover.opnionButton{ text-decoration:underline;} closeBtn.bind("click",function(){ sideContent.animate({width: '0px'},"fast"); show_btn.stop(true, true).delay(300).animate({ width: '25px'},"fast"); + cookiesave('minStatue','true','','',''); }); //show??? - show_btn.click(function() { + show_btn.bind("click",function() { $(this).animate({width: '0px'},"fast"); sideContent.stop(true, true).delay(200).animate({ width: '154px'},"fast"); + cookiesave('minStatue','false','','',''); }); - }); //end this.each + + }); //end this.each }; })(jQuery); @@ -130,6 +133,38 @@ function f_submit() { $("#new_memo").submit(); } + +function cookiesave(n, v, mins, dn, path) +{ + if(n) + { + + if(!mins) mins = 365 * 24 * 60; + if(!path) path = "/"; + var date = new Date(); + + date.setTime(date.getTime() + (mins * 60 * 1000)); + + var expires = "; expires=" + date.toGMTString(); + + if(dn) dn = "domain=" + dn + "; "; + document.cookie = n + "=" + v + expires + "; " + dn + "path=" + path; + + } +} +function cookieget(n) +{ + var name = n + "="; + var ca = document.cookie.split(';'); + for(var i=0;i @@ -138,9 +173,9 @@ function f_submit() 意见反馈 - + -
      +
      @@ -171,7 +206,7 @@ function f_submit() $(function() { $("#scrollsidebar").fix({ float : 'right', //default.left or right - //minStatue : true, + minStatue : cookieget('minStatue'), skin : 'green', //default.gray or blue durationTime : 600 }); From af7e605f7687f4341df236c83a61f9d5dbba1b39 Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Thu, 29 Jan 2015 16:13:36 +0800 Subject: [PATCH 160/192] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=96=B0=E9=97=BB?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E2=80=9C=E6=8F=90=E4=BA=A4=E2=80=9D=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E5=92=8C=E2=80=9C=E5=8F=96=E6=B6=88=E2=80=9D=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E4=B9=8B=E9=97=B4=E6=9C=89=E4=B8=80=E7=AB=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/news/_form.html.erb | 23 ++++++++++++++++++----- app/views/news/_project_news.html.erb | 2 +- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/app/views/news/_form.html.erb b/app/views/news/_form.html.erb index f76aaad88..5e5cdf532 100644 --- a/app/views/news/_form.html.erb +++ b/app/views/news/_form.html.erb @@ -3,12 +3,25 @@ <%= @project ? l(:label_news_new) : l(:bale_news_notice) %>
      -

      <%= f.text_field :title, :required => true, :size => 60, :style => "width:488px;", :onkeyup => "regexTitle();" %>

      -

      (60个字符以内)

      +

      + <%= f.text_field :title, :required => true, :size => 60, :style => "width:488px;", :onkeyup => "regexTitle();" %> +

      +

      + (60个字符以内) +

      -

      <%= f.text_area :description, :required => true, :cols => 60, :rows => 11, :class => 'wiki-edit', :style => "width:490px;", :onkeyup => "regexDescription();" %>

      -

      -

      <%= render :partial => 'attachments/form', :locals => {:container => @news} %>

      +

      + <%= f.text_area :description, :required => true, :cols => 60, :rows => 11, :class => 'wiki-edit', :style => "width:490px;", :onkeyup => "regexDescription();" %> +

      +

      + +

      +

      + + <%= render :partial => 'attachments/form', :locals => {:container => @news} %> +

      <%= wikitoolbar_for 'news_description' %> diff --git a/app/views/news/_project_news.html.erb b/app/views/news/_project_news.html.erb index 526c7a1a5..b18c2abd8 100644 --- a/app/views/news/_project_news.html.erb +++ b/app/views/news/_project_news.html.erb @@ -83,7 +83,7 @@ <%= render :partial => 'news/form', :locals => {:f => f} %> <%#= submit_tag l(:button_create), :class => 'whiteButton m3p10 h30', :name => nil %> <%= link_to l(:button_create), "#", :onclick => 'submitNews();',:onmouseover => 'submitFocus(this);', :class => 'ButtonColor m3p10' %> - | + <%#= preview_link preview_news_path(:project_id => @project), 'news-form', target='preview', {:class => 'whiteButton m3p10'} %> <%= link_to l(:button_cancel), "#", :onclick => '$("#add-news").hide()', :class => 'ButtonColor m3p10' %> From bf75f329037e2c976fc9b4684d858587fd75873e Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Thu, 29 Jan 2015 16:22:26 +0800 Subject: [PATCH 161/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=AA=E4=BA=BA?= =?UTF-8?q?=E7=95=99=E8=A8=80=E7=95=8C=E9=9D=A2=EF=BC=8C=E5=B7=A6=E4=BE=A7?= =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E4=BF=A1=E6=81=AF=E6=A0=B7=E5=BC=8F=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E4=B8=8D=E6=AD=A3=E7=A1=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/layouts/base_homework.html.erb | 1 + public/stylesheets/css.css | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/views/layouts/base_homework.html.erb b/app/views/layouts/base_homework.html.erb index b583fcad6..f1840c2fd 100644 --- a/app/views/layouts/base_homework.html.erb +++ b/app/views/layouts/base_homework.html.erb @@ -31,6 +31,7 @@ text-align: center; padding-left: 5px !important; padding-right: 5px !important; + line-height: 1.9; } .span_wping a:hover{ background-color:#03a1b3;} diff --git a/public/stylesheets/css.css b/public/stylesheets/css.css index 444d0d383..d53b6ec02 100644 --- a/public/stylesheets/css.css +++ b/public/stylesheets/css.css @@ -1,5 +1,5 @@ /* CSS Document */ -body{ font-size:12px !important; font-family:"微软雅黑","宋体" !important; line-height:1.9; background:#fff; font-style:normal;} +#content{ font-size:12px !important; font-family:"微软雅黑","宋体" !important; line-height:1.9; background:#fff; font-style:normal;} div,html,img,ul,li,p,body,h1,h2,h3,h4,p,a,table,tr,td,fieldset,input,span,textarea{ margin:0; padding:0;} div,img,tr,td,textarea{ border:0;} table,tr,td{border:0; cellspacing:0; cellpadding:0;} From b71d71410328d7dabad40ea2729e621ba5f4cc4e Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Thu, 29 Jan 2015 16:39:25 +0800 Subject: [PATCH 162/192] =?UTF-8?q?#1887=20=E7=94=A8=E6=88=B7=E8=81=8C?= =?UTF-8?q?=E7=A7=B0=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/application_helper.rb | 11 ++++- app/views/layouts/base_users.html.erb | 60 ++++----------------------- 2 files changed, 17 insertions(+), 54 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 1face5c38..8254c5313 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1963,6 +1963,15 @@ module ApplicationHelper end def get_technical_title user - #user.user_extensions.technical_title + if user.user_extensions.technical_title == "Professor" || user.user_extensions.technical_title == "教授" + technical_title = l(:label_technicl_title_professor) + elsif user.user_extensions.technical_title == "Associate professor" || user.user_extensions.technical_title == "副教授" + technical_title = l(:label_technicl_title_associate_professor) + elsif user.user_extensions.technical_title == "Lecturer" || user.user_extensions.technical_title == "讲师" + technical_title = l(:label_technicl_title_lecturer) + elsif user.user_extensions.technical_title == "Teaching assistant" || user.user_extensions.technical_title == "助教" + technical_title = l(:label_technicl_title_teaching_assistant) + end + technical_title end end diff --git a/app/views/layouts/base_users.html.erb b/app/views/layouts/base_users.html.erb index dbd6503b0..3b2bd8dfe 100644 --- a/app/views/layouts/base_users.html.erb +++ b/app/views/layouts/base_users.html.erb @@ -21,8 +21,6 @@ <%= call_hook :view_layouts_base_html_head %> <%= yield :header_tags -%> - <% title1 = @user.user_extensions.technical_title %> - <% language1 = @user.language %> - +
      @@ -283,10 +233,14 @@
      - <%= l(:label_technical_title) %>: + + <%= l(:label_technical_title) %>: + - + + <%= get_technical_title @user %> +
      +
      <% @logs.each do |log| %> <% unless log.blank? %> diff --git a/app/views/system_log/time_analysis.html.erb b/app/views/system_log/time_analysis.html.erb index bdf01ca27..96c207b07 100644 --- a/app/views/system_log/time_analysis.html.erb +++ b/app/views/system_log/time_analysis.html.erb @@ -3,6 +3,18 @@ @nav_dispaly_main_project_label = 1 @nav_dispaly_main_contest_label = 1 %> <% @nav_dispaly_forum_label = 1%> +

      From 90649209cab357b28f5e926ab61239a6fd805c52 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Fri, 30 Jan 2015 13:29:25 +0800 Subject: [PATCH 177/192] =?UTF-8?q?=E5=B0=81=E8=A3=85=EF=BC=8C=E7=AE=80?= =?UTF-8?q?=E5=8C=96=EF=BC=8C=E9=87=8D=E6=96=B0=E7=BC=96=E6=8E=92=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E6=A0=BC=E5=BC=8F=EF=BC=8C=E5=B9=B6=E5=88=A0=E6=8E=89?= =?UTF-8?q?=E4=BA=86=E4=B8=80=E4=BA=9B=E6=97=A0=E7=94=A8=E7=9A=84=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/projects_controller.rb | 556 +++---------------------- 1 file changed, 51 insertions(+), 505 deletions(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 899997456..1f78836ae 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -14,39 +14,29 @@ # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# Time 2015-01-28 16:34:21 +# Author lizanle +# Description 封装代码,简化代码,格式化代码, class ProjectsController < ApplicationController layout :select_project_layout menu_item :overview menu_item :roadmap, :only => :roadmap menu_item :settings, :only => :settings - - menu_item l(:label_sort_by_time), :only => :index - menu_item l(:label_sort_by_active), :only => :index - menu_item l(:label_sort_by_influence), :only => :index - - # menu_item l(:label_homework), :only => :homework - # menu_item l(:label_course_feedback), :only => :feedback menu_item :homework, :only => [:homework, :new_homework] menu_item :feedback, :only => :feedback - menu_item l(:label_course_file), :only => :index - menu_item l(:label_course_news), :only => :index - - before_filter :find_project, :except => [ :index, :search,:list, :new, :create, :copy, :statistics, :new_join, :course, :enterprise_course, :course_enterprise,:view_homework_attaches] - # before_filter :authorize, :except => [:new_join, :new_homework, :homework, :statistics, :search, :watcherlist, :index, :list, :new, :create, :copy, :archive, :unarchive, :destroy, :member, :focus, :file, - # :statistics, :feedback, :course, :enterprise_course, :course_enterprise, :project_respond, :share, - # :show_projects_score, :issue_score_index, :news_score_index, :file_score_index, :code_submit_score_index, :projects_topic_score_index] - #此条勿删 课程相关权限 ,:new_homework,:homework,:feedback,,:member - before_filter :authorize, :only => [:show, :settings, :edit, :sort_project_members, :update, :modules, :close, :reopen,:view_homework_attaches,:course] + before_filter :find_project, :except => [ :index, :search,:list, :new, :create, :copy, :statistics, :new_join, + :course, :enterprise_course, :course_enterprise,:view_homework_attaches] + before_filter :authorize, :only => [:show, :settings, :edit, :sort_project_members, :update, :modules, :close, + :reopen,:view_homework_attaches,:course] before_filter :authorize_global, :only => [:new, :create,:view_homework_attaches] before_filter :require_admin, :only => [ :copy, :archive, :unarchive, :destroy, :calendar] before_filter :file, :statistics, :watcherlist - #before_filter :find_project_repository, :only => [:show] # 除非项目内人员,不可查看成员, TODO: 完了写报表里去 before_filter :memberAccess, only: :member - accept_rss_auth :index + # accept_rss_auth :index accept_api_auth :index, :show, :create, :update, :destroy after_filter :only => [:create, :edit, :update, :archive, :unarchive, :destroy] do |controller| @@ -80,369 +70,66 @@ class ProjectsController < ApplicationController ### added by william include ActsAsTaggableOn::TagsHelper - def find_project_repository - unless @project.repositories.nil? - @project.repositories.each do |repository| - repository.fetch_changesets if Setting.autofetch_changesets? - end - end - end - - def enterprise_course - session[:enterprise_college] = 2 - respond_to do |format| - format.html { redirect_to :back } - #format.api { render_api_ok } - end - end - - def course_enterprise - session[:enterprise_college] = 1 - respond_to do |format| - format.html { redirect_to :back } - #format.api { render_api_ok } - end - end - def index render_404 - #调用存储过程更新提交次数 - #ActiveRecord::Base.connection.execute("CALL sp_project_status_cursor();") - #Modified by nie - @project_type = params[:project_type].to_i - per_page_option = 10 - - @projects_all = Project.active.visible. - joins("LEFT JOIN #{ProjectStatus.table_name} ON #{Project.table_name}.id = #{ProjectStatus.table_name}.project_id").joins("LEFT JOIN #{ProjectScore.table_name} ON #{Project.table_name}.id = #{ProjectScore.table_name}.project_id"). - where("#{Project.table_name}.project_type = ? ", Project::ProjectType_project) - - @project_count = @projects_all.count - @project_pages = Paginator.new @project_count, per_page_option, params['page'] - -#gcm activity count - - @project_activity_count=Hash.new - - @projects_all.each do |project| - @project_activity_count[project.id]=0 - end - - @project_activity_count=get_project_activity @projects_all,@project_activity_count - -#gcm end - - case params[:project_sort_type] - when '0' - @projects = @projects_all.order("created_on desc") - @s_type = 0 - when '1' - @projects = @projects_all.order("score desc") - @s_type = 1 - when '2' - @projects = @projects_all.order("watchers_count desc") - @s_type = 2 - - #gcm - when '3' - #@projects=desc_sort_course_by_avtivity(@project_activity_count_array,@project_all_array) - @projects=handle_project @projects_all,@project_activity_count - @s_type = 3 - @projects = @projects[@project_pages.offset, @project_pages.per_page] - - else - @projects = @projects = @projects_all.order("score desc") - @s_type = 1 - end - @projects = @projects.offset(@project_pages.offset).limit(@project_pages.per_page) - - - respond_to do |format| - format.html { - # render :layout => 'base' - # scope = Project - # unless params[:closed] - # scope = scope.active - # end - } - format.api { - # @offset, @limit = api_offset_and_limit - # @project_count = Project.visible.count - # @projects = Project.visible.offset(@offset).limit(@limit).order('lft').all - } - format.atom { - projects = Project.visible.order('created_on DESC').limit(Setting.feeds_limit.to_i).all - render_feed(projects, :title => "#{Setting.app_title}: #{l(:label_project_latest)}") - } - end end def course - @project_type = params[:project_type] - @school_id = params[:school_id] - per_page_option = 10 - if @school_id == "0" or @school_id.nil? - @projects_all = Project.active.visible. - joins("LEFT JOIN #{ProjectStatus.table_name} ON #{Project.table_name}.id = #{ProjectStatus.table_name}.project_id"). - where("#{Project.table_name}.project_type = ? ", Project::ProjectType_course) - else - @projects_all = Project.active.visible. - joins("LEFT JOIN #{ProjectStatus.table_name} ON #{Project.table_name}.id = #{ProjectStatus.table_name}.project_id"). - joins(:course_extra). - where("#{Project.table_name}.project_type = ? AND #{Course.table_name}.school_id = ?", Project::ProjectType_course, @school_id) - end - - @project_count = @projects_all.count - @project_pages = Paginator.new @project_count, per_page_option, params['page'] - - #gcm activity count - - @project_activity_count=Hash.new - #count initialize - @projects_all.each do |project| - @project_activity_count[project.id]=0 - end - - #@project_activity_count=get_project_activity @projects_all,@project_activity_count - #gcm end - - - case params[:project_sort_type] - when '0' - @projects = @projects_all.order("created_on desc") - @s_type = 0 - @projects = @projects.offset(@project_pages.offset).limit(@project_pages.per_page) - - #gcm - @project_activity_count=get_project_activity @projects,@project_activity_count - #gcmend - - when '1' - @projects = @projects_all.order("course_ac_para desc") - @s_type = 1 - @projects = @projects.offset(@project_pages.offset).limit(@project_pages.per_page) - - #gcm - @project_activity_count=get_project_activity @projects,@project_activity_count - #gcmend - - when '2' - @projects = @projects_all.order("watchers_count desc") - @s_type = 2 - @projects = @projects.offset(@project_pages.offset).limit(@project_pages.per_page) - - #gcm - @project_activity_count=get_project_activity @projects,@project_activity_count - #gcmend - - #gcm - when '3' - - #gcm - @project_activity_count=get_project_activity @projects_all,@project_activity_count - #gcmend - - @projects=handle_project @projects_all,@project_activity_count - @s_type = 3 - @projects = @projects[@project_pages.offset, @project_pages.per_page] - else - @s_type = 0 - @projects = @projects_all.order("created_on desc") - @projects = @projects.offset(@project_pages.offset).limit(@project_pages.per_page) - - #gcm - @project_activity_count=get_project_activity @projects,@project_activity_count - #gcmend - - end - - respond_to do |format| - format.html { - render :layout => 'base' - } - format.api { - # @offset, @limit = api_offset_and_limit - # @project_count = Project.visible.count - # @projects = Project.visible.offset(@offset).limit(@limit).order('lft').all - } - format.atom { - projects = Project.visible.order('created_on DESC').limit(Setting.feeds_limit.to_i).all - render_feed(projects, :title => "#{Setting.app_title}: #{l(:label_project_latest)}") - } - end + render_404 end -#gcm + # Time 2015-01-29 11:19:11 + # Author lizanle + # Description 项目搜索方法 def search - #modified by nie - project_type = params[:project_type].to_i - projects_all = (project_type.eql? Project::ProjectType_course) ? Project.course_entities : Project.project_entities - @projects = projects_all.visible - #@projects_all = @projects.visible.like(params[:name]) if params[:name].present? + # 如果有名字,就按名字搜索,如果没有,就展示所有,用Karminari分页 if params[:name].present? - @projects_all = @projects.visible.like(params[:name]) - else - @projects_all = @projects; - end - @project_count = @projects_all.count - @project_pages = Paginator.new @project_count, per_page_option, params['page'] - - #gcm activity count - - @project_activity_count=Hash.new - # count initialize - @projects_all.each do |project| - @project_activity_count[project.id]=0 - end - - #@project_activity_count=get_project_activity @projects_all,@project_activity_count - - #gcm end - - - case params[:project_sort_type] - when '0' - @projects = @projects_all.order("created_on desc") - @s_type = 0 - @projects = @projects.offset(@project_pages.offset).limit(@project_pages.per_page) - - #gcm - @project_activity_count=get_project_activity @projects,@project_activity_count - #gcmend - - when '1' - @projects = @projects_all.order("course_ac_para desc") - @s_type = 1 - @projects = @projects.offset(@project_pages.offset).limit(@project_pages.per_page) - - #gcm - @project_activity_count=get_project_activity @projects,@project_activity_count - #gcmend - - when '2' - @projects = @projects_all.order("watchers_count desc") - @s_type = 2 - @projects = @projects.offset(@project_pages.offset).limit(@project_pages.per_page) - - #gcm - @project_activity_count=get_project_activity @projects,@project_activity_count - #gcmend - - when '3' - #@projects=desc_sort_course_by_avtivity(@project_activity_count_array,@project_all_array) - @project_activity_count=get_project_activity @projects_all,@project_activity_count_array #gcm - @projects=handle_project @projects_all,@project_activity_count - @s_type = 3 - @projects = @projects[@project_pages.offset, @project_pages.per_page] - + @project_pages = Project.project_entities.visible.like(params[:name]).page(params[:page]).per(10) else - @s_type = 0 - @projects = @projects_all.order("created_on desc") - @projects = @projects.offset(@project_pages.offset).limit(@project_pages.per_page) - - #gcm - @project_activity_count=get_project_activity @projects,@project_activity_count - #gcmend - + @project_pages = Project.project_entities.visible.page(params[:page] ).per(10) end - + @projects = @project_pages.order("created_on desc") respond_to do |format| format.html { render :layout => 'base' scope = Project unless params[:closed] - scope = scope.active + scope = scope.active end } - format.api { - # @offset, @limit = api_offset_and_limit - # @project_count = Project.visible.count - # @projects = Project.visible.offset(@offset).limit(@limit).order('lft').all - } + # 需要到处atom使用的格式 (redmine自带) format.atom { projects = Project.visible.order('created_on DESC').limit(Setting.feeds_limit.to_i).all render_feed(projects, :title => "#{Setting.app_title}: #{l(:label_project_latest)}") } end end -#gcmend - - - #Added by young - def homework - @offset, @limit = api_offset_and_limit({:limit => 10}) - @bids = @project.homeworks.order('deadline') - @bids = @bids.like(params[:name]) if params[:name].present? - - @bids = paginateHelper @bids - render :layout => 'base_courses' - - end - - def new_homework - # Dear maintainer: - # once you are done trying to 'optimize' this Magic routine, - # well, it's on you, I'll leave it to you. - if (User.current.logged? && - (User.current.admin? || - ( - !Member.where('user_id = ? and project_id = ?', User.current.id, @project.id).first.nil? && - ( - Member.where('user_id = ? and project_id = ?', User.current.id, @project.id).first.roles && - ( Role.where(id: [3, 4, 7, 9]).size > 0 ) - ) - ) - ) - ) - @homework = Bid.new - @homework.safe_attributes = params[:bid] - render :layout => 'base_courses' - else - render_404 - end - - end - #Ended by young + # Time 2015-01-29 16:13:20 + # Author lizanle + # Description 项目首页中用户反馈 方法 def feedback - @page = params[:page] - @page = @page.to_i + @page = params[:page].to_i # Find the page of the requested reply @jours = @project.journals_for_messages.where('m_parent_id IS NULL').order('created_on DESC') - @limit = 10 + limit = 10 offset = @jours.count(:conditions => ["#{JournalsForMessage.table_name}.id > ?", params[:r].to_i]) - page = 1 + offset / @limit + page = 1 + offset / limit if params[:r] && @page.nil? - @page = page - end - - puts @page - if @page < 0 - @page = 1 + @page = @page < 0 ? 1 : @page end - if @page > page - @page = page - end - - - #@feedback_count = @jours.count - #@feedback_pages = Paginator.new @feedback_count, @limit, @page - #@offset ||= @feedback_pages.offset + @page = @page > page ? page : @page @jour = paginateHelper @jours,10 @state = false - @base_courses_tag = @project.project_type - - respond_to do |format| - format.html{render :layout => 'base_courses' if @base_courses_tag==1} + format.html format.api end end def project_respond - # will_reply = JournalsForMessage.find(params[:reference_id]) if params[:reference_id] project_id = request.headers["Referer"].match((%r|/([0-9]{1,})/|))[1] - # @project = Project.find_by_id(project_id) parent_id = params[:reference_id] author_id = User.current.id reply_user_id = params[:reference_user_id] @@ -458,12 +145,8 @@ class ProjectsController < ApplicationController @jfm = Project.add_new_jour(nil, nil, project_id, options) @save_succ = @jfm.errors.empty? - # flash[:notice]=l(:label_projects_feedback_respond_success) - respond_to do |format| - # format.html { redirect_to :back } format.js - #format.api { render_api_ok } end end @@ -554,38 +237,16 @@ class ProjectsController < ApplicationController render_404 end - # Show @project + # Time 2015-01-29 10:42:00 + # Author lizanle + # Description 项目动态展示方法,删除了不必要的代码 def show - @project_type = params[:project_type] - - # try to redirect to the requested menu item + # 试图跳转到请求的按钮 if params[:jump] && redirect_to_project_menu_item(@project, params[:jump]) - return + return end - @users_by_role = @project.users_by_role - @subprojects = @project.children.visible.all - @news = @project.news.limit(5).includes(:author, :project).reorder("#{News.table_name}.created_on DESC").all - @trackers = @project.rolled_up_trackers - if(User.find_by_id(ProjectInfo.find_by_project_id(@project.id).try(:user_id))) - @user = User.find_by_id(ProjectInfo.find_by_project_id(@project.id).user_id) - end cond = @project.project_condition(Setting.display_subprojects_issues?) - @open_issues_by_tracker = Issue.visible.open.where(cond).count(:group => :tracker) - @total_issues_by_tracker = Issue.visible.where(cond).count(:group => :tracker) - - if User.current.allowed_to?(:view_time_entries, @project) - @total_hours = TimeEntry.visible.sum(:hours, :include => :project, :conditions => cond).to_f - end - - @key = User.current.rss_key - #新增内容 - @days = Setting.activity_days_default.to_i - - if params[:from] - begin; @date_to = params[:from].to_date + 1; rescue; end - end - has = { "show_issues" => true , "show_files" => true, @@ -597,59 +258,40 @@ class ProjectsController < ApplicationController "show_wiki_edits"=>true, "show_journals_for_messages" => true } + # 读取项目默认展示的动态时间天数 + @days = Setting.activity_days_default.to_i @date_to ||= Date.today + 1 - @date_from = @date_to - @days#-1.years #modified by lizanle 去掉這個1年的時間跨度 + # 时间跨度不能太大,不然很慢,所以删掉了-1.years + @date_from = @date_to - @days @with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1') - @author = (params[:user_id].blank? ? nil : User.active.find(params[:user_id])) + @author = params[:user_id].blank? ? nil : User.active.find(params[:user_id]) # 决定显示所用用户或单个用户活动 - @activity = Redmine::Activity::Fetcher.new(User.current, :project => @project, - :with_subprojects => @with_subprojects, - :author => @author) + @activity = Redmine::Activity::Fetcher.new(User.current, + :project => @project, + :with_subprojects => @with_subprojects, + :author => @author) @activity.scope_select {|t| !has["show_#{t}"].nil?} - # logger.debug "=========================================#{@activity.scope}" - # @activity.scope = (@author.nil? ? :default : :all) if @activity.scope.empty? - # modify by nwb - # 添加私密性判断 - if User.current.member_of?(@project)|| User.current.admin? + # 根据私密性,取出符合条件的所有数据 + if User.current.member_of?(@project) || User.current.admin? events = @activity.events(@date_from, @date_to) else events = @activity.events(@date_from, @date_to, :is_public => 1) end + @offset, @limit = api_offset_and_limit({:limit => 10}) @events_count = events.count @events_pages = Paginator.new @events_count, @limit, params['page'] @offset ||= @events_pages.offset + # 总的数据中取出某一页 events = events.slice(@offset,@limit) - #Ended by young + # 按天分组 @events_by_day = events.group_by {|event| User.current.time_to_date(event.event_datetime)} - # documents - @sort_by = %w(category date title author).include?(params[:sort_by]) ? params[:sort_by] : 'category' - documents = @project.documents.includes(:attachments, :category).all - case @sort_by - when 'date' - @grouped = documents.group_by {|d| d.updated_on.to_date } - when 'title' - @grouped = documents.group_by {|d| d.title.first.upcase} - when 'author' - @grouped = documents.select{|d| d.attachments.any?}.group_by {|d| d.attachments.last.author} - else - @grouped = documents.group_by(&:category) - end - @document = @project.documents.build - # - @base_courses_tag = @project.project_type - #判断能否显示真名(当前用户为课程的教师时显示真名) - if @project.project_type == Project::ProjectType_course - @teachers= searchTeacherAndAssistant(@project) - @canShowRealName = isCourseTeacher(User.current.id) - end - # real_name action为虚拟的该方法并不存在,用来辅助判断真名权限 - # @canShowRealName = User.current.allowed_to?({:controller => "projects", :action => "real_name"}, @project || @projects, :global => false) + # 根据对应的请求,返回对应的数据 respond_to do |format| - format.html{render :layout => 'base_courses' if @base_courses_tag==1} + format.html format.api end end @@ -660,23 +302,13 @@ class ProjectsController < ApplicationController @member ||= @project.members.new @trackers = Tracker.sorted.all @wiki ||= @project.wiki - #Added by young - # @course_tag = params[:course] - # if @course_tag == '1' - #@course = Course.find_by_extra(@project.identifier) - # if @project.project_type == 1 - # render :layout => 'base_courses' - # else - # render :layout => 'base_projects' - # end - #Ended by young end def edit end - #by young - include CoursesHelper + # by young + # include CoursesHelper def member ## 有角色参数的才是课程,没有的就是项目 @render_file = 'member_list' @@ -695,11 +327,10 @@ class ProjectsController < ApplicationController @subPage_title = '' @members = @project.member_principals.includes(:roles, :principal).all.sort end - else # @project.project_type == Project::ProjectType_project + else roles = Role.find_all_givable @subPage_title = l :label_member_list @members = @project.member_principals.includes(:roles, :principal).joins("LEFT JOIN #{OptionNumber.table_name} ON #{OptionNumber.table_name}.user_id = #{Member.table_name}.user_id and #{OptionNumber.table_name}.score_type = 2 AND #{Member.table_name}.project_id = #{OptionNumber.table_name}.project_id").order("#{OptionNumber.table_name}.total_score DESC").all - #@members = sort_project_members(@project, @members) @applied_members = appied_project_members(@project, @members) end @members = paginateHelper @members @@ -956,91 +587,6 @@ class ProjectsController < ApplicationController end end - - - #gcm - def get_project_activity projects,activities - @project_ids=activities.keys() - - days = Setting.activity_days_default.to_i - date_to ||= Date.today + 1 - date_from = date_to - days-1.years - - #issue_count - Issue.where(project_id: @project_ids).where("updated_on>?",date_from).each do |issue| -# activities[issue.project_id.to_s]+=1 - activities[issue.project_id]+=issue.journals.where("created_on>?",date_from).count - end - - #repository_count - Repository.where(project_id: @project_ids).each do |repository| -# activities[repository.project_id.to_s]+=1 - activities[repository.project_id]+=repository.changesets.where("committed_on>?",date_from).count - end - - - #news_count - News.where(project_id: @project_ids).where("created_on>?",date_from).each do |news| - activities[news.project_id]+=1 - end - - #document_count - Document.where(project_id: @project_ids).where("created_on>?",date_from).each do |document| - activities[document.project_id]+=1 - end - - #file_count - Attachment.where(container_id: @project_ids, container_type: Project).where("created_on>?",date_from).each do |attachment| - activities[attachment.container_id]+=1 - end - - #message_count - Board.where(project_id: @project_ids).each do |board| -# activities[board.project_id]+=1 - activities[board.project_id]+=board.messages.where("updated_on>?",date_from).count - end - - #time_entry_count - TimeEntry.where(project_id: @project_ids).where("updated_on>?",date_from).each do |timeentry| - activities[timeentry.project_id]+=1 - end - - #feedbackc_count - JournalsForMessage.where(jour_id: @project_ids, jour_type: Project).each do |jourformess| - activities[jourformess.jour_id]+=1 - end - - #activities!=0 - i=0; - projects.each do |project| - id=project.id - if activities[id]==0 - activities[id]=1 - end - end - - return activities - end - #gcmend - - #gcm - def handle_project projects,activities - project_activity_count_array=activities.values() - - project_array=[] - i=0; - projects.each do |project| - project_array[i]=project - i=i+1 - end - - projects=desc_sort_course_by_avtivity(project_activity_count_array,project_array) - - return projects - end - #gcmend - - #gcm def desc_sort_course_by_avtivity(activity_count,projects) return projects if activity_count.size<2 From b453d162285fc7381b61d2e6ccfd11db271726e7 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Fri, 30 Jan 2015 13:30:06 +0800 Subject: [PATCH 178/192] =?UTF-8?q?=E5=B0=86controller=E9=87=8C=E7=9A=84?= =?UTF-8?q?=E4=B8=A4=E4=B8=AA=E6=96=B9=E6=B3=95=E6=8C=AA=E5=88=B0helper?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/projects_helper.rb | 166 ++++++++++++++++----------------- 1 file changed, 81 insertions(+), 85 deletions(-) diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index 5df3644ad..fe6714186 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -36,67 +36,8 @@ module ProjectsHelper {:name => 'activities', :action => :manage_project_activities, :partial => 'projects/settings/activities', :label => :enumeration_activities} ] tabs.select {|tab| User.current.allowed_to?(tab[:action], @project)} - end - # added bu huang - def sort_project_enterprise(state, project_type) - content = ''.html_safe - case state - when 0 - - content << content_tag('li', link_to(l(:label_sort_by_active), projects_path(:project_sort_type => '1', :project_type => project_type))) - content << content_tag('li', link_to(l(:label_sort_by_influence), projects_path(:project_sort_type => '2', :project_type => project_type))) - content << content_tag('li', link_to(l(:label_sort_by_time), projects_path(:project_sort_type => '0', :project_type => project_type), :class=>"selected"), :class=>"selected") - when 1 - - content << content_tag('li', link_to(l(:label_sort_by_active), projects_path(:project_sort_type => '1', :project_type => project_type), :class=>"selected"), :class=>"selected") - content << content_tag('li', link_to(l(:label_sort_by_influence), projects_path(:project_sort_type => '2', :project_type => project_type))) - content << content_tag('li', link_to(l(:label_sort_by_time), projects_path(:project_sort_type => '0', :project_type => project_type))) - when 2 - content << content_tag('li', link_to(l(:label_sort_by_active), projects_path(:project_sort_type => '1', :project_type => project_type))) - content << content_tag('li', link_to(l(:label_sort_by_influence), projects_path(:project_sort_type => '2', :project_type => project_type), :class=>"selected"), :class=>"selected") - content << content_tag('li', link_to(l(:label_sort_by_time), projects_path(:project_sort_type => '0', :project_type => project_type))) - end - content = content_tag('ul', content) - content_tag('div', content, :class => "tabs_enterprise") - end - - def sort_course(state, project_type, school_id) - content = ''.html_safe - case state - when 0 - content << content_tag('li', link_to(l(:label_sort_by_time), course_path(:project_sort_type => '0', :project_type => project_type), :school_id => school_id, :class=>"selected"), :class=>"selected") - content << content_tag('li', link_to(l(:label_sort_by_active), course_path(:project_sort_type => '1', :project_type => project_type, :school_id => school_id))) - # content << content_tag('li', link_to(l(:label_sort_by_influence), course_path(:project_sort_type => '2', :project_type => project_type))) - content << content_tag('li', link_to(l(:label_sort_by_activity), course_path(:project_sort_type => '3', :project_type => project_type, :school_id => school_id))) - - when 1 - content << content_tag('li', link_to(l(:label_sort_by_time), course_path(:project_sort_type => '0', :project_type => project_type, :school_id => school_id))) - content << content_tag('li', link_to(l(:label_sort_by_active), course_path(:project_sort_type => '1', :project_type => project_type, :school_id => school_id), :class=>"selected"), :class=>"selected") - # content << content_tag('li', link_to(l(:label_sort_by_influence), course_path(:project_sort_type => '2', :project_type => project_type))) - content << content_tag('li', link_to(l(:label_sort_by_activity), course_path(:project_sort_type => '3', :project_type => project_type, :school_id => school_id))) - - when 2 - content << content_tag('li', link_to(l(:label_sort_by_time), course_path(:project_sort_type => '0', :project_type => project_type, :school_id => school_id))) - content << content_tag('li', link_to(l(:label_sort_by_active), course_path(:project_sort_type => '1', :project_type => project_type, :school_id => school_id))) - # content << content_tag('li', link_to(l(:label_sort_by_influence), course_path(:project_sort_type => '2', :project_type => project_type), :class=>"selected"), :class=>"selected") - content << content_tag('li', link_to(l(:label_sort_by_activity), course_path(:project_sort_type => '3', :project_type => project_type, :school_id => school_id))) - - #gcm - when 3 - content << content_tag('li', link_to(l(:label_sort_by_time), course_path(:project_sort_type => '0', :project_type => project_type, :school_id => school_id))) - content << content_tag('li', link_to(l(:label_sort_by_active), course_path(:project_sort_type => '1', :project_type => project_type, :school_id => school_id))) - # content << content_tag('li', link_to(l(:label_sort_by_influence), course_path(:project_sort_type => '2', :project_type => project_type))) - content << content_tag('li', link_to(l(:label_sort_by_activity), course_path(:project_sort_type => '3', :project_type => project_type, :school_id => school_id), :class=>"selected"), :class=>"selected") - end - #gcmend - - content = content_tag('ul', content) - content_tag('div', content, :class => "tabs") - end - # end - def sort_project(state, project_type) content = ''.html_safe case state @@ -118,30 +59,7 @@ module ProjectsHelper content = content_tag('ul', content) content_tag('div', content, :class => "tabs") end - - # def sort_course(state, project_type) - # content = ''.html_safe - # case state - # when 0 -# - # content << content_tag('li', link_to(l(:label_sort_by_active), course_path(:project_sort_type => '1', :project_type => project_type))) - # content << content_tag('li', link_to(l(:label_sort_by_influence), course_path(:project_sort_type => '2', :project_type => project_type))) - # content << content_tag('li', link_to(l(:label_sort_by_time), course_path(:project_sort_type => '0', :project_type => project_type), :class=>"selected"), :class=>"selected") - # when 1 -# - # content << content_tag('li', link_to(l(:label_sort_by_active), course_path(:project_sort_type => '1', :project_type => project_type), :class=>"selected"), :class=>"selected") - # content << content_tag('li', link_to(l(:label_sort_by_influence), course_path(:project_sort_type => '2', :project_type => project_type))) - # content << content_tag('li', link_to(l(:label_sort_by_time), course_path(:project_sort_type => '0', :project_type => project_type))) - # when 2 - # content << content_tag('li', link_to(l(:label_sort_by_active), course_path(:project_sort_type => '1', :project_type => project_type))) - # content << content_tag('li', link_to(l(:label_sort_by_influence), course_path(:project_sort_type => '2', :project_type => project_type), :class=>"selected"), :class=>"selected") - # content << content_tag('li', link_to(l(:label_sort_by_time), course_path(:project_sort_type => '0', :project_type => project_type))) - # end - # content = content_tag('ul', content) - # content_tag('div', content, :class => "tabs") - # end - # Added by young def course_settings_tabs tabs = [{:name => 'info', :action => :edit_project, :partial => 'projects/edit', :label => :label_information_plural, :course=>'1'}, @@ -153,9 +71,6 @@ module ProjectsHelper end # Ended by young - - - def parent_project_select_tag(project) selected = project.parent # retrieve the requested parent project @@ -375,4 +290,85 @@ module ProjectsHelper end end end + + # Time 2015-01-29 11:39:02 + # Author lizanle + # Description 计算projects + def get_project_activity projects,activities + @project_ids=activities.keys() + + days = Setting.activity_days_default.to_i + date_to ||= Date.today + 1 + date_from = date_to - days-1.years + + #issue_count + Issue.where(project_id: @project_ids).where("updated_on>?",date_from).each do |issue| +# activities[issue.project_id.to_s]+=1 + activities[issue.project_id]+=issue.journals.where("created_on>?",date_from).count + end + + #repository_count + Repository.where(project_id: @project_ids).each do |repository| +# activities[repository.project_id.to_s]+=1 + activities[repository.project_id]+=repository.changesets.where("committed_on>?",date_from).count + end + + + #news_count + News.where(project_id: @project_ids).where("created_on>?",date_from).each do |news| + activities[news.project_id]+=1 + end + + #document_count + Document.where(project_id: @project_ids).where("created_on>?",date_from).each do |document| + activities[document.project_id]+=1 + end + + #file_count + Attachment.where(container_id: @project_ids, container_type: Project).where("created_on>?",date_from).each do |attachment| + activities[attachment.container_id]+=1 + end + + #message_count + Board.where(project_id: @project_ids).each do |board| +# activities[board.project_id]+=1 + activities[board.project_id]+=board.messages.where("updated_on>?",date_from).count + end + + #time_entry_count + TimeEntry.where(project_id: @project_ids).where("updated_on>?",date_from).each do |timeentry| + activities[timeentry.project_id]+=1 + end + + #feedbackc_count + JournalsForMessage.where(jour_id: @project_ids, jour_type: Project).each do |jourformess| + activities[jourformess.jour_id]+=1 + end + + #activities!=0 + i=0; + projects.each do |project| + id=project.id + if activities[id]==0 + activities[id]=1 + end + end + + return activities + end + + def handle_project projects,activities + project_activity_count_array=activities.values() + + project_array=[] + i=0; + projects.each do |project| + project_array[i]=project + i=i+1 + end + + projects=desc_sort_course_by_avtivity(project_activity_count_array,project_array) + + return projects + end end From 22dd4981c01457bdfa429f7895b7225d2fd6564c Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Fri, 30 Jan 2015 13:35:10 +0800 Subject: [PATCH 179/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/projects/search.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/projects/search.html.erb b/app/views/projects/search.html.erb index 7a91082ca..0f6fa695e 100644 --- a/app/views/projects/search.html.erb +++ b/app/views/projects/search.html.erb @@ -67,7 +67,7 @@

      From d0a675f2b8a489d8048a2898676743301d63a8a3 Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 30 Jan 2015 14:11:35 +0800 Subject: [PATCH 180/192] =?UTF-8?q?=E4=BC=81=E4=B8=9A=E7=89=88=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/assets/javascripts/enterprises.js.coffee | 3 + app/assets/stylesheets/enterprises.css.scss | 3 + app/controllers/enterprises_controller.rb | 6 + app/controllers/welcome_controller.rb | 11 + app/helpers/enterprises_helper.rb | 2 + app/helpers/projects_helper.rb | 6 +- app/models/course.rb | 2 +- app/models/project.rb | 4 +- app/views/enterprises/index.html.erb | 25 ++ app/views/projects/_form.html.erb | 2 +- app/views/welcome/_hot_projects_list.html.erb | 23 ++ app/views/welcome/_no_course_title.html.erb | 2 +- app/views/welcome/index.html.erb | 297 ++++++++---------- config/locales/zh.yml | 10 + config/routes.rb | 5 +- ...8032421_add_enterprise_name_to_projects.rb | 5 + db/schema.rb | 41 ++- public/stylesheets/application.css | 3 + .../enterprises_controller_spec.rb | 12 + 19 files changed, 294 insertions(+), 168 deletions(-) create mode 100644 app/assets/javascripts/enterprises.js.coffee create mode 100644 app/assets/stylesheets/enterprises.css.scss create mode 100644 app/controllers/enterprises_controller.rb create mode 100644 app/helpers/enterprises_helper.rb create mode 100644 app/views/enterprises/index.html.erb create mode 100644 app/views/welcome/_hot_projects_list.html.erb create mode 100644 db/migrate/20150128032421_add_enterprise_name_to_projects.rb create mode 100644 spec/controllers/enterprises_controller_spec.rb diff --git a/app/assets/javascripts/enterprises.js.coffee b/app/assets/javascripts/enterprises.js.coffee new file mode 100644 index 000000000..761567942 --- /dev/null +++ b/app/assets/javascripts/enterprises.js.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/ diff --git a/app/assets/stylesheets/enterprises.css.scss b/app/assets/stylesheets/enterprises.css.scss new file mode 100644 index 000000000..174f3a2ec --- /dev/null +++ b/app/assets/stylesheets/enterprises.css.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the Enterprises controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/controllers/enterprises_controller.rb b/app/controllers/enterprises_controller.rb new file mode 100644 index 000000000..c15b6dc8f --- /dev/null +++ b/app/controllers/enterprises_controller.rb @@ -0,0 +1,6 @@ +class EnterprisesController < ApplicationController + layout 'project_base' + def index + @enterprises = Project.find_by_sql("select enterprise_name from projects") + end +end diff --git a/app/controllers/welcome_controller.rb b/app/controllers/welcome_controller.rb index 8e11bceb5..6c28ec502 100644 --- a/app/controllers/welcome_controller.rb +++ b/app/controllers/welcome_controller.rb @@ -25,6 +25,17 @@ class WelcomeController < ApplicationController before_filter :entry_select, :only => [:index] def index + unless params[:enterprise].nil? + @enterprise = params[:enterprise] + @enterprise_projects = Project.find_by_sql(["select * from projects where enterprise_name =? ", @enterprise]) + @e_count = @enterprise_projects.count + if @e_count < 10 + part_count = 10 -@e_count + # @part_projects = find_all_hot_project part_count, order + @part_projects = find_miracle_project(part_count, 3,"score desc") + limit = 10 - @e_count + end + end if @first_page.nil? || @first_page.sort_type.nil? @projects = find_miracle_project(10, 3,"score desc") else diff --git a/app/helpers/enterprises_helper.rb b/app/helpers/enterprises_helper.rb new file mode 100644 index 000000000..10321ba16 --- /dev/null +++ b/app/helpers/enterprises_helper.rb @@ -0,0 +1,2 @@ +module EnterprisesHelper +end diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index 5df3644ad..6b6127979 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -367,7 +367,7 @@ module ProjectsHelper return true end end - + def find_project_repository project unless project.repositories.nil? project.repositories.each do |repository| @@ -375,4 +375,8 @@ module ProjectsHelper end end end + + def get_part_projects e_count, t_count + + end end diff --git a/app/models/course.rb b/app/models/course.rb index a5de93cf7..c986597b3 100644 --- a/app/models/course.rb +++ b/app/models/course.rb @@ -6,7 +6,7 @@ class Course < ActiveRecord::Base STATUS_CLOSED = 5 STATUS_ARCHIVED = 9 - attr_accessible :code, :extra, :name, :state, :tea_id, :time , :location, :state, :term, :password,:is_public,:description,:class_period, :open_student + attr_accessible :code, :extra, :name, :state, :tea_id, :time , :location, :state, :term, :password,:is_public,:description,:class_period, :open_student, :enterprise_name #belongs_to :project, :class_name => 'Course', :foreign_key => :extra, primary_key: :identifier belongs_to :teacher, :class_name => 'User', :foreign_key => :tea_id # 定义一个方法teacher,该方法通过tea_id来调用User表 belongs_to :school, :class_name => 'School', :foreign_key => :school_id #定义一个方法school,该方法通过school_id来调用School表 diff --git a/app/models/project.rb b/app/models/project.rb index 14763347f..d5f3e381e 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -116,6 +116,7 @@ class Project < ActiveRecord::Base validates_associated :repository, :wiki # validates_length_of :description, :maximum => 255 validates_length_of :name, :maximum => 255 + validates_length_of :enterprise_name, :maximum => 255 validates_length_of :homepage, :maximum => 255 validates_length_of :identifier, :in => 1..IDENTIFIER_MAX_LENGTH # donwcase letters, digits, dashes but not digits only @@ -760,7 +761,8 @@ class Project < ActiveRecord::Base 'issue_custom_field_ids', 'project_type', 'dts_test', - 'attachmenttype' + 'attachmenttype', + 'enterprise_name' diff --git a/app/views/enterprises/index.html.erb b/app/views/enterprises/index.html.erb new file mode 100644 index 000000000..9db8d99ab --- /dev/null +++ b/app/views/enterprises/index.html.erb @@ -0,0 +1,25 @@ +
      +

      + <%= link_to l(:label_all_enterprises) %> +

      +

      + <% if @enterprises.count == 0 %> +

      <%= l(:label_enterprise_nil) %>

      + <% else %> + <% @enterprises.each do |enterprise| %> + <% unless enterprise.enterprise_name.blank? %> +
        +
      • + <%= link_to enterprise.enterprise_name, home_path(:enterprise => enterprise.enterprise_name) %> +
      • +
      + <% end %> + <% end %> + <% end %> +

      +
      +
      +
      +
        +
        +<% html_title(l(:label_school_all)) -%> diff --git a/app/views/projects/_form.html.erb b/app/views/projects/_form.html.erb index 512c2df82..636aadf43 100644 --- a/app/views/projects/_form.html.erb +++ b/app/views/projects/_form.html.erb @@ -8,7 +8,7 @@

        <%= f.text_area :description, :rows => 8, :class => 'wiki-edit', :style => "font-size:small;width:490px;margin-left:10px;" %>

        - +

        <%= f.text_field :enterprise_name, :size => 60, :style => "width:490px;" %>

        <%= f.text_field :identifier, :required => true, :size => 60, :style => "width:488px;", :disabled => @project.identifier_frozen?, :maxlength => Project::IDENTIFIER_MAX_LENGTH, value:"#{User.current.id.to_s + '_' +Time.now.to_s.gsub(' ','_').gsub(':','').gsub('+','')}" %> <% unless @project.identifier_frozen? %> diff --git a/app/views/welcome/_hot_projects_list.html.erb b/app/views/welcome/_hot_projects_list.html.erb new file mode 100644 index 000000000..9b941f420 --- /dev/null +++ b/app/views/welcome/_hot_projects_list.html.erb @@ -0,0 +1,23 @@ +

      • +
        + <%= image_tag(get_project_avatar(project), :class => "avatar-4") %> +
        + +
        + <% unless project.is_public %> + <%= l(:label_private) %> + <% end %> + <%= link_to( project.name, project_path(project.id), :class => "d-g-blue d-p-project-name",:title => "#{project.name}" )%> + (<%= link_to "#{projectCount(project)}人", project_member_path(project) ,:course =>'0' %>) +
        +
        + <%=project.description.truncate(90, omission: '...')%> +
        +
        + <%= content_tag "span", l(:label_project_score)+ ":" + red_project_scores(project).to_i.to_s, + :style => "cursor: pointer; display: inline-block; float: right; color: #ec6300;", + :title => "项目得分,综合考虑了项目的各项活动,反映了该项目的活跃程度", + :class => "tooltip", + :id => "tooltip-#{project.id}" %> +
        +
      • \ No newline at end of file diff --git a/app/views/welcome/_no_course_title.html.erb b/app/views/welcome/_no_course_title.html.erb index f16b91dba..3b3849e4e 100644 --- a/app/views/welcome/_no_course_title.html.erb +++ b/app/views/welcome/_no_course_title.html.erb @@ -1,5 +1,5 @@

        - <%= course_title%> + <%= course_title %>

        \ No newline at end of file diff --git a/app/views/welcome/index.html.erb b/app/views/welcome/index.html.erb index 3e341bd27..5dd8c2f86 100644 --- a/app/views/welcome/index.html.erb +++ b/app/views/welcome/index.html.erb @@ -2,197 +2,172 @@ <%= stylesheet_link_tag 'welcome' %> <%= javascript_include_tag 'welcome' %>
        - <%#= render partial: 'wei_xin' %> + <%#= render partial: 'wei_xin' %>
        - - <% if get_avatar?(@first_page) %> - <%= image_tag(url_to_avatar(@first_page), width:@first_page.image_width,height: @first_page.image_height) %> - <% else %> - <%= image_tag '/images/transparent.png', width:@first_page.image_width,height: @first_page.image_height %> - <% end %> - + + <% if @enterprise.nil? %> + <% if get_avatar?(@first_page) %> + <%= image_tag(url_to_avatar(@first_page), width:@first_page.image_width,height: @first_page.image_height) %> + <% else %> + <%= image_tag '/images/transparent.png', width:@first_page.image_width,height: @first_page.image_height %> + <% end %> + <% else %> + <%= image_tag '/images/avatars/Project/0', width:@first_page.image_width,height: @first_page.image_height %> + <% end %>
        -
        - <% unless @first_page.nil? %> - <%= @first_page.description.html_safe %> - <% end %> -
        - -
        +
        + <% if @enterprise.nil? %> + <% unless @first_page.nil? %> + <%= @first_page.description.html_safe %> + <% end %> + <% else %> + + <%= link_to @enterprise, options={:action => 'index', :enterprise => @enterprise}, html_options={ :method => 'get', :style => "color: #E8770D"} %> +
        + <%= @first_page.title %> + <% end %> +
        + +
        -
        +
        -

        - - <%= l(:lable_hot_projects)%> - -

        - - <% if User.current.logged? %> - <%= link_to(l(:label_project_new), {:controller => 'projects', - :action => 'new', - :course => 0, - :project_type =>( @project_type||=0)}, - :class => 'icon icon-add') if User.current.allowed_to?(:add_project, nil, :global => true) %> -      - <%= link_to l(:label_join_project), join_project_projects_path ,:remote => true, :class => 'icon icon-add' %> -      - <% end %> - +

        <%= l(:lable_hot_projects)%>

        + <% if User.current.logged? %> + <%= link_to(l(:label_project_new), {:controller => 'projects', + :action => 'new', + :course => 0, + :project_type =>( @project_type||=0)}, + :class => 'icon icon-add') if User.current.allowed_to?(:add_project, nil, :global => true) %> +      + <%= link_to l(:label_join_project), join_project_projects_path ,:remote => true, :class => 'icon icon-add' %> +      + <% end %>
          - <% @projects.map do |project| %> -
        • -
          - <%= image_tag(get_project_avatar(project), :class => "avatar-4") %> -
          - -
          - <% unless project.is_public %> - - <%= l(:label_private) %> - - <% end %> - <%= link_to( project.name, project_path(project.id), :class => "d-g-blue d-p-project-name",:title => "#{project.name}" )%> - (<%= link_to "#{projectCount(project)}人", project_member_path(project) ,:course =>'0' %>) -
          -
          - - <%=project.description.truncate(90, omission: '...')%> - -
          -
          - <%= content_tag "span", l(:label_project_score)+ ":" + red_project_scores(project).to_i.to_s, - :style => "cursor: pointer; display: inline-block; float: right; color: #ec6300;", - :title => "项目得分,综合考虑了项目的各项活动,反映了该项目的活跃程度", - :class => "tooltip", - :id => "tooltip-#{project.id}" %> -
          -
        • - - <% end; reset_cycle %> + + <% if @enterprise.nil? %> + <% @projects.map do |project| %> + <%= render :partial => 'hot_projects_list', :locals => {:project => project} %> + <% end; reset_cycle %> + + <% else %> + <% if @e_count == 0 %> +

          <%= l(:label_enterprise_tips) %>

          + <% @projects.map do |project| %> + <%= render :partial => 'hot_projects_list', :locals => {:project => project} %> + <% end; reset_cycle %> + <% elsif @e_count < 10 %> + <% @enterprise_projects.map do |project| %> + <%= render :partial => 'hot_projects_list', :locals => {:project => project} %> + <% end %> +

          <%= l(:label_part_enterprise_tips) %>

          + <% @part_projects.map do |project| %> + <%= render :partial => 'hot_projects_list', :locals => {:project => project} %> + <% end %> + <% else %> + <% @part_projects.map do |project| %> + <%= render :partial => 'hot_projects_list', :locals => {:project => project} %> + <% end %> + <% end; reset_cycle %> + <% end; reset_cycle %>
        -
          -

          - - <%= l(:lable_user_active)%> - -

          -
          - <%activities = find_all_activities%> - <% activities.each do |event| %> -
        • -
          - <%= image_tag url_to_avatar(event.event_author), :class => "avatar-3" %> -
          -
          - - <%= link_to event.event_author, (user_path(event.event_author) if event.event_author), - :style => "color:green;", :target => "_blank" %> - - <%= show_user_content event %> -

          - - <%= l(:field_updated_on) %> - <%= time_tag_welcome event.event_datetime %>前 - -       - - <%= show_event_reply event %> - -

          -
          -
        • - <% end %> -
          -
        -
        +
          +

          <%= l(:lable_user_active)%>

          +
          + <% activities = find_all_activities%> + <% activities.each do |event| %> +
        • +
          + <%= image_tag url_to_avatar(event.event_author), :class => "avatar-3" %> +
          +
          + <%= link_to event.event_author, (user_path(event.event_author) if event.event_author), + :style => "color:green;", :target => "_blank" %> + <%= show_user_content event %> +

          + <%= l(:field_updated_on) %> + <%= time_tag_welcome event.event_datetime %>前 +       + <%= show_event_reply event %> +

          +
          +
        • + <% end %> +
          +
        +
        -
        +
          - +
          -

          - - <%= l(:lable_bar_active)%> - - <%= link_to l(:label_my_question) , newbie_send_path, {:class => 'orangeButton idea_btn', :style => "color: #EEEEEE" }%> - <%= link_to l(:label_my_feedback) , suggestion_send_path, {:class => 'orangeButton idea_btn', :style => "color: #EEEEEE" }%> -

          - - <%= link_to l(:label_more), forums_path %> - +

          <%= l(:lable_bar_active)%> <%= link_to l(:label_my_question) , newbie_send_path, {:class => 'orangeButton idea_btn', :style => "color: #EEEEEE" }%> + <%= link_to l(:label_my_feedback) , suggestion_send_path, {:class => 'orangeButton idea_btn', :style => "color: #EEEEEE" }%>

          + <%= link_to l(:label_more), forums_path %>
          <% topics = find_new_forum_topics(6) %> - <% topics.includes(:forum, :last_reply, :author).each do |topic|%> - -
        • -
          - <%= link_to '['+topic.forum.name + ']',forum_path(topic.forum),:class => 'memo_Bar_title' %> - <%= link_to topic.subject.truncate(30, omission: '...'), topic.event_url,title: topic.subject %> -
          -
          - - <%= "#{l(:label_updated_time, value: time_tag_welcome(topic_last_time topic))}".html_safe %> - - - <%= l(:label_question_sponsor)%>: - <%= link_to topic.author.login.truncate(10, omission: '...'),user_path(topic.author),title: topic.author.login %> - - - <% unless (topic.last_reply.nil? || topic.last_reply.author.nil?) %> - <%= l(:label_final_reply)%>: - <%=link_to topic.last_reply.author.login.truncate(10, omission: '...'),user_path(topic.last_reply.author),title: topic.last_reply.author.login%> - <% end %> - - - <%= l(:label_reply)%> - (<%= link_to topic.try(:replies_count), topic.event_url %>) - -
          -
        • - - <% end %> + <% topics.includes(:forum, :last_reply, :author).each do |topic|%> + +
        • +
          + <%= link_to '['+topic.forum.name + ']',forum_path(topic.forum),:class => 'memo_Bar_title' %> + <%= link_to topic.subject.truncate(30, omission: '...'), topic.event_url,title: topic.subject %> +
          +
          + <%= "#{l(:label_updated_time, value: time_tag_welcome(topic_last_time topic))}".html_safe %> + <%= l(:label_question_sponsor)%>: + <%= link_to topic.author.login.truncate(10, omission: '...'),user_path(topic.author),title: topic.author.login %> + <% unless (topic.last_reply.nil? || topic.last_reply.author.nil?) %> + <%= l(:label_final_reply)%>: + <%= link_to topic.last_reply.author.login.truncate(10, omission: '...'),user_path(topic.last_reply.author),title: topic.last_reply.author.login%> + <% end %> + <%= l(:label_reply)%> + (<%= link_to topic.try(:replies_count), topic.event_url %>) +
          +
        • + + + <% end %>
        -
        +
        <%= render partial: 'link_to_another' %> \ No newline at end of file diff --git a/config/locales/zh.yml b/config/locales/zh.yml index d058a6c1b..d6ecec369 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -275,6 +275,7 @@ zh: label_course_closed_tips: "确定要%{desc}课程?" # end field_name: 名称 + field_enterprise_name: 企业名 #added by huang field_tea_name: 教师 field_couurse_time: 学时 @@ -2313,3 +2314,12 @@ zh: label_technical_support: 技术支持: label_feedback: 意见反馈 + + # 项目企业模块 + label_all_enterprises: 所有企业 + label_my_enterprise: 我的企业 + label_enterprise_tips: 暂时还没有该企业对应的项目,系统的其它项目您可能会感兴趣! + label_part_enterprise_tips: 系统的其它项目您可能也会感兴趣! + label_enterprise_nil: 改模块为最新上线模块,目前还未有项目关联到企业! + label_enterprises: 名企 + diff --git a/config/routes.rb b/config/routes.rb index 122481d38..6fc78fd49 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -26,6 +26,8 @@ # Example: :via => :get ====> :via => :get RedmineApp::Application.routes.draw do + get "enterprises/index" + #match '/contests/:id/contestnotifications', :controller => 'contestnotifications', :action => 'index' mount Mobile::API => '/api' @@ -388,7 +390,8 @@ RedmineApp::Application.routes.draw do match '/statistics', :to => 'projects#statistics', :as => 'statistics', :via => :get # match '/investor', :controller => 'projects', :action => 'investor', :as => 'investor', :via => :get match '/homework', :to => 'projects#homework', :as => 'homework', :via => :get - + match 'enterprise', :to => 'enterprises#index', :as => 'index', :via => :get + # match '/activity', :controller => 'activities', :action => 'index', :as => 'activity', :via => :get # match '/repository', :controller => 'repositories', :action => 'show', :repository_id => nil, :path => nil, :rev => nil, :as => 'repository', :via => :get # match '/', :controller => 'projects', :action => 'show', :as => 'project_show', :via => :get diff --git a/db/migrate/20150128032421_add_enterprise_name_to_projects.rb b/db/migrate/20150128032421_add_enterprise_name_to_projects.rb new file mode 100644 index 000000000..8ec2b25a3 --- /dev/null +++ b/db/migrate/20150128032421_add_enterprise_name_to_projects.rb @@ -0,0 +1,5 @@ +class AddEnterpriseNameToProjects < ActiveRecord::Migration + def change + add_column :projects, :enterprise_name, :string + end +end diff --git a/db/schema.rb b/db/schema.rb index 98476f9dd..7c9e6d556 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20150123020615) do +ActiveRecord::Schema.define(:version => 20150128032421) do create_table "activities", :force => true do |t| t.integer "act_id", :null => false @@ -925,6 +925,7 @@ ActiveRecord::Schema.define(:version => 20150123020615) do t.integer "attachmenttype", :default => 1 t.integer "user_id" t.integer "dts_test", :default => 0 + t.string "enterprise_name" end add_index "projects", ["lft"], :name => "index_projects_on_lft" @@ -1069,6 +1070,14 @@ ActiveRecord::Schema.define(:version => 20150123020615) do t.string "description" end + create_table "social_groups", :force => true do |t| + t.string "name" + t.text "description" + t.integer "user_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + create_table "softapplications", :force => true do |t| t.string "name" t.text "description" @@ -1284,6 +1293,36 @@ ActiveRecord::Schema.define(:version => 20150123020615) do add_index "versions", ["project_id"], :name => "versions_project_id" add_index "versions", ["sharing"], :name => "index_versions_on_sharing" + create_table "voting_choices", :force => true do |t| + t.integer "poll_id", :null => false + t.string "text", :null => false + t.datetime "created_on", :null => false + t.integer "position", :default => 1 + end + + add_index "voting_choices", ["poll_id"], :name => "choices_poll_id" + + create_table "voting_polls", :force => true do |t| + t.integer "project_id", :null => false + t.string "question", :null => false + t.datetime "created_on", :null => false + t.boolean "revote" + end + + add_index "voting_polls", ["project_id"], :name => "polls_project_id" + + create_table "voting_votes", :force => true do |t| + t.integer "user_id", :null => false + t.integer "poll_id", :null => false + t.integer "choice_id", :null => false + t.datetime "created_on", :null => false + end + + add_index "voting_votes", ["choice_id"], :name => "votes_choice_id" + add_index "voting_votes", ["poll_id"], :name => "votes_poll_id" + add_index "voting_votes", ["user_id", "poll_id"], :name => "votes_user_poll_unique", :unique => true + add_index "voting_votes", ["user_id"], :name => "votes_user_id" + create_table "watchers", :force => true do |t| t.string "watchable_type", :default => "", :null => false t.integer "watchable_id", :default => 0, :null => false diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index db57596bc..9c8471315 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -9,6 +9,9 @@ h4, .wiki h3 {font-size: 13px;} h4 {border-bottom: 1px dotted #bbb;} /*huang*/ /*current position*/ +.enterprise_all{ + padding-left: 20px; +} .course_ad{ position:absolute; visibility:visible; diff --git a/spec/controllers/enterprises_controller_spec.rb b/spec/controllers/enterprises_controller_spec.rb new file mode 100644 index 000000000..49ca325bf --- /dev/null +++ b/spec/controllers/enterprises_controller_spec.rb @@ -0,0 +1,12 @@ +require 'spec_helper' + +describe EnterprisesController do + + describe "GET 'index'" do + it "returns http success" do + get 'index' + response.should be_success + end + end + +end From 36c07f96642ef7bfbd1b1b3046d30897c290838e Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Fri, 30 Jan 2015 14:16:32 +0800 Subject: [PATCH 181/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8B=92=E7=BB=9D?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=88=90=E5=91=98=E5=8A=A0=E5=85=A5=E5=90=8E?= =?UTF-8?q?=EF=BC=8C=E9=A1=B5=E9=9D=A2=E4=B8=8D=E4=BC=9A=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E7=9A=84BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/project.rb | 4 +- app/views/members/create.js.erb | 8 +- app/views/projects/settings/_members.html.erb | 80 ++++++++++++------- 3 files changed, 60 insertions(+), 32 deletions(-) diff --git a/app/models/project.rb b/app/models/project.rb index ca80d90f8..668e243c9 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -114,8 +114,8 @@ class Project < ActiveRecord::Base validates_presence_of :name, :identifier validates_uniqueness_of :identifier validates_uniqueness_of :name - validates_associated :repository, :wiki - # validates_length_of :description, :maximum => 255 + validates_associated :wiki#, :repository + # validates_length_of :description, :maximum => 255 validates_length_of :name, :maximum => 255 validates_length_of :homepage, :maximum => 255 validates_length_of :identifier, :in => 1..IDENTIFIER_MAX_LENGTH diff --git a/app/views/members/create.js.erb b/app/views/members/create.js.erb index 3b01980ad..35280b7a4 100644 --- a/app/views/members/create.js.erb +++ b/app/views/members/create.js.erb @@ -12,7 +12,11 @@ hideOnLoad(); $("#member-<%= member.id %>").effect("highlight"); <% end %> <% else %> - <% errors = @members.collect {|m| m.errors.full_messages}.flatten.uniq.join(', ') %> - alert('<%= raw(escape_javascript(l(:notice_failed_to_save_members, :errors => errors))) %>'); + <% if @members %> + <% errors = @members.collect {|m| m.errors.full_messages}.flatten.uniq.join(', ')%> + alert('<%= raw(escape_javascript(l(:notice_failed_to_save_members, :errors => errors || ''))) %>'); + <% else%> +// alert(''); + <% end%> <% end %> <% end %> diff --git a/app/views/projects/settings/_members.html.erb b/app/views/projects/settings/_members.html.erb index 25f02da0d..9c9c64bd1 100644 --- a/app/views/projects/settings/_members.html.erb +++ b/app/views/projects/settings/_members.html.erb @@ -14,8 +14,12 @@
        <%=l(:label_log_detail)%>
        - - + + <%= call_hook(:view_projects_settings_members_table_header, :project => @project) %> @@ -24,26 +28,30 @@ <% members.each do |member| %> <% next if member.new_record? %> - + @@ -77,7 +85,9 @@
        <%= l(:label_user) %><%= l(:label_role_plural) %> + <%= l(:label_user) %> + + <%= l(:label_role_plural) %> +
        <%= link_to_user member.principal %> + <%= link_to_user member.principal %> + - - <%= h member.roles.sort.collect(&:to_s).join(', ') %> - + + <%= h member.roles.sort.collect(&:to_s).join(', ') %> + <%= form_for(member, {:as => :membership, :remote => true, :url => membership_path(member), :method => :put, :html => {:id => "member-#{member.id}-roles-form", :class => 'hol'}} ) do |f| %> -

        <% roles.each do |role| %>
        - <% end %>

        + <% end %> +

        <%= hidden_field_tag 'membership[role_ids][]', '' %> -

        <%= submit_tag l(:button_change), :class => "small" %> +

        + <%= submit_tag l(:button_change), :class => "small" %> <%= link_to_function l(:button_cancel), "$('#member-#{member.id}-roles').show(); $('#member-#{member.id}-roles-form').hide(); return false;" - %>

        + %> +

        <% end %>
        <% else %> -

        <%= l(:label_no_data) %>

        +

        + <%= l(:label_no_data) %> +

        <% end %>
        @@ -87,20 +97,25 @@
        <%= form_for(@applied_members, {:as => :membership, :url => project_memberships_path(@project), :remote => true, :method => :post}) do |f| %>
        - <%= l(:label_apply_project) %> - + + <%= l(:label_apply_project) %> +
        <%= render_principals_for_applied_members(@project) %>

        -

        <%= l(:label_role_plural) %>: +

        + <%= l(:label_role_plural) %>: <% roles.each do |role| %> - - - <% end %>

        - -

        <%= submit_tag l(:label_approve), :id => 'member-add-submit' %> + + <% end %> +

        +

        + <%= submit_tag l(:label_approve), :id => 'member-add-submit' %> <%= submit_tag l(:label_refusal), :name => "refusal_button", :id => 'member-refusal-submit' %>

        @@ -110,9 +125,13 @@ <%= form_for(@member, {:as => :membership, :url => project_memberships_path(@project), :remote => true, :method => :post}) do |f| %>
        - <%= l(:label_member_new) %> - -

        <%= label_tag "principal_search", l(:label_principal_search) %><%= text_field_tag 'principal_search', nil %>

        + + <%= l(:label_member_new) %> + +

        + <%= label_tag "principal_search", l(:label_principal_search) %> + <%= text_field_tag 'principal_search', nil %> +

        <%= javascript_tag "observeSearchfield('principal_search', null, '#{ escape_javascript autocomplete_project_memberships_path(@project, :format => 'js') }')" %>
        @@ -120,13 +139,18 @@

        -

        <%= l(:label_role_plural) %>: +

        + <%= l(:label_role_plural) %>: <% roles.each do |role| %> - - - <% end %>

        - -

        <%= submit_tag l(:button_add), :id => 'member-add-submit' %>

        + + <% end %> +

        +

        + <%= submit_tag l(:button_add), :id => 'member-add-submit' %> +

        <% end %> <% end %> From 31c78279eafbeacb44b00e282c3a0e25e6f8505b Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Fri, 30 Jan 2015 14:31:15 +0800 Subject: [PATCH 182/192] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E7=9A=84=E4=B8=80=E4=B8=AAend?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/welcome/index.html.erb | 1 - 1 file changed, 1 deletion(-) diff --git a/app/views/welcome/index.html.erb b/app/views/welcome/index.html.erb index db6980dc9..96bcd2ab3 100644 --- a/app/views/welcome/index.html.erb +++ b/app/views/welcome/index.html.erb @@ -102,7 +102,6 @@ <% end %> <% end; reset_cycle %> <% end; reset_cycle %> - <% end %>
      From 9e470fa25ccdca05ce47b1ba20b0e6ee702ec979 Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 30 Jan 2015 14:45:33 +0800 Subject: [PATCH 183/192] meigia --- app/views/welcome/index.html.erb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/views/welcome/index.html.erb b/app/views/welcome/index.html.erb index db6980dc9..0a8b5ed79 100644 --- a/app/views/welcome/index.html.erb +++ b/app/views/welcome/index.html.erb @@ -192,6 +192,7 @@ <%end %> <% end %> <% end %> +
      From 864ed349e4d5e06e70bcd26bb46d14d50c7f44d3 Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 30 Jan 2015 14:48:24 +0800 Subject: [PATCH 184/192] =?UTF-8?q?=E5=9B=BD=E9=99=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/locales/zh.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/config/locales/zh.yml b/config/locales/zh.yml index 7331f06ae..343ad2432 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -2447,3 +2447,12 @@ zh: next: "下一页 »" truncate: "..." + + + # 项目企业模块 + label_all_enterprises: 所有企业 + label_my_enterprise: 我的企业 + label_enterprise_tips: 暂时还没有该企业对应的项目,系统的其它项目您可能会感兴趣! + label_part_enterprise_tips: 系统的其它项目您可能也会感兴趣! + label_enterprise_nil: 改模块为最新上线模块,目前还未有项目关联到企业! + label_enterprises: 名企 From a467736a5ef031b17bda1ee7ec2ce005aaf8b483 Mon Sep 17 00:00:00 2001 From: alan <547533434@qq.com> Date: Fri, 30 Jan 2015 14:52:36 +0800 Subject: [PATCH 185/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E3=80=8A=E5=A4=9A?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=94=AF=E4=B8=80=E6=80=A7=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E3=80=8B=20Signed-off-by:=20alan=20<547533434@qq.com>?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/course_group.rb | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/app/models/course_group.rb b/app/models/course_group.rb index c7fc81df4..680fa6497 100644 --- a/app/models/course_group.rb +++ b/app/models/course_group.rb @@ -12,8 +12,7 @@ class CourseGroup < ActiveRecord::Base before_destroy :set_member_nil attr_accessible :name - validates :name, :presence => true, :length => {:maximum => 20} - validate :unique_name_and_course + validates :name, :presence => true, :length => {:maximum => 20}, :uniqueness => { :scope => :course_id} @@ -22,10 +21,5 @@ class CourseGroup < ActiveRecord::Base self.members.update_all("course_group_id = 0") end end - private - def unique_name_and_course - if CourseGroup.where("name=? and course_id=?", name, course_id).first - errors.add(:name, :groupname_repeat) - end - end + end From a0debe77bb2923e91929a3d416f4b35a481fb687 Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Fri, 30 Jan 2015 15:27:16 +0800 Subject: [PATCH 186/192] 111 --- db/schema.rb | 38 -------------------------------------- 1 file changed, 38 deletions(-) diff --git a/db/schema.rb b/db/schema.rb index 7c9e6d556..d7a1b18bc 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -1070,14 +1070,6 @@ ActiveRecord::Schema.define(:version => 20150128032421) do t.string "description" end - create_table "social_groups", :force => true do |t| - t.string "name" - t.text "description" - t.integer "user_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - create_table "softapplications", :force => true do |t| t.string "name" t.text "description" @@ -1293,36 +1285,6 @@ ActiveRecord::Schema.define(:version => 20150128032421) do add_index "versions", ["project_id"], :name => "versions_project_id" add_index "versions", ["sharing"], :name => "index_versions_on_sharing" - create_table "voting_choices", :force => true do |t| - t.integer "poll_id", :null => false - t.string "text", :null => false - t.datetime "created_on", :null => false - t.integer "position", :default => 1 - end - - add_index "voting_choices", ["poll_id"], :name => "choices_poll_id" - - create_table "voting_polls", :force => true do |t| - t.integer "project_id", :null => false - t.string "question", :null => false - t.datetime "created_on", :null => false - t.boolean "revote" - end - - add_index "voting_polls", ["project_id"], :name => "polls_project_id" - - create_table "voting_votes", :force => true do |t| - t.integer "user_id", :null => false - t.integer "poll_id", :null => false - t.integer "choice_id", :null => false - t.datetime "created_on", :null => false - end - - add_index "voting_votes", ["choice_id"], :name => "votes_choice_id" - add_index "voting_votes", ["poll_id"], :name => "votes_poll_id" - add_index "voting_votes", ["user_id", "poll_id"], :name => "votes_user_poll_unique", :unique => true - add_index "voting_votes", ["user_id"], :name => "votes_user_id" - create_table "watchers", :force => true do |t| t.string "watchable_type", :default => "", :null => false t.integer "watchable_id", :default => 0, :null => false From f2a3ce0ecee59315cb3617cbb36b554490290814 Mon Sep 17 00:00:00 2001 From: alan <547533434@qq.com> Date: Fri, 30 Jan 2015 16:05:36 +0800 Subject: [PATCH 187/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E3=80=8A=E7=BD=91?= =?UTF-8?q?=E9=A1=B5=E6=A0=87=E9=A2=98=E6=98=BE=E7=A4=BA=E4=B8=BA=E2=80=9C?= =?UTF-8?q?=E4=B8=AD=E5=9B=BD=E9=AB=98=E6=A0=A1=E2=80=9D=E4=B8=8D=E5=90=88?= =?UTF-8?q?=E9=80=82=E3=80=8Bbug=20Signed-off-by:=20alan=20<547533434@qq.c?= =?UTF-8?q?om>?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/course_group.rb | 2 +- app/views/enterprises/index.html.erb | 2 +- config/locales/zh.yml | 3 ++- config/routes.rb | 2 +- db/schema.rb | 38 ---------------------------- 5 files changed, 5 insertions(+), 42 deletions(-) diff --git a/app/models/course_group.rb b/app/models/course_group.rb index 680fa6497..c6aa1299d 100644 --- a/app/models/course_group.rb +++ b/app/models/course_group.rb @@ -21,5 +21,5 @@ class CourseGroup < ActiveRecord::Base self.members.update_all("course_group_id = 0") end end - + end diff --git a/app/views/enterprises/index.html.erb b/app/views/enterprises/index.html.erb index 9db8d99ab..6124f5c7f 100644 --- a/app/views/enterprises/index.html.erb +++ b/app/views/enterprises/index.html.erb @@ -22,4 +22,4 @@
        -<% html_title(l(:label_school_all)) -%> +<% html_title(l(:label_enterprise_all)) -%> diff --git a/config/locales/zh.yml b/config/locales/zh.yml index 343ad2432..524494f45 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -2204,7 +2204,8 @@ zh: label_project_deposit: 项目托管 label_course_practice: 课程实践 label_forum_all: 公共贴吧 - label_school_all: 中国高校 + label_school_all: 中国高校 + :label_enterprise_all: 名企 label_contest_innovate: 创新竞赛 label_software_user: 软件创客 label_requirement_enterprise: 软件众包 diff --git a/config/routes.rb b/config/routes.rb index aad7adcb3..0692103bd 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -731,7 +731,7 @@ RedmineApp::Application.routes.draw do match 'delete_avatar', :to => 'avatar#delete_image',:via => :post # Endof Tao's code get 'robots.txt', :to => 'welcome#robots' - match 'welcome/course', :to => 'welcome#course' + #match 'welcome/course', :to => 'welcome#course' ##############测试留言功能 fq post 'words/new', :to => 'words#new' post 'words/create', :to => 'words#create' diff --git a/db/schema.rb b/db/schema.rb index 7c9e6d556..d7a1b18bc 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -1070,14 +1070,6 @@ ActiveRecord::Schema.define(:version => 20150128032421) do t.string "description" end - create_table "social_groups", :force => true do |t| - t.string "name" - t.text "description" - t.integer "user_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - create_table "softapplications", :force => true do |t| t.string "name" t.text "description" @@ -1293,36 +1285,6 @@ ActiveRecord::Schema.define(:version => 20150128032421) do add_index "versions", ["project_id"], :name => "versions_project_id" add_index "versions", ["sharing"], :name => "index_versions_on_sharing" - create_table "voting_choices", :force => true do |t| - t.integer "poll_id", :null => false - t.string "text", :null => false - t.datetime "created_on", :null => false - t.integer "position", :default => 1 - end - - add_index "voting_choices", ["poll_id"], :name => "choices_poll_id" - - create_table "voting_polls", :force => true do |t| - t.integer "project_id", :null => false - t.string "question", :null => false - t.datetime "created_on", :null => false - t.boolean "revote" - end - - add_index "voting_polls", ["project_id"], :name => "polls_project_id" - - create_table "voting_votes", :force => true do |t| - t.integer "user_id", :null => false - t.integer "poll_id", :null => false - t.integer "choice_id", :null => false - t.datetime "created_on", :null => false - end - - add_index "voting_votes", ["choice_id"], :name => "votes_choice_id" - add_index "voting_votes", ["poll_id"], :name => "votes_poll_id" - add_index "voting_votes", ["user_id", "poll_id"], :name => "votes_user_poll_unique", :unique => true - add_index "voting_votes", ["user_id"], :name => "votes_user_id" - create_table "watchers", :force => true do |t| t.string "watchable_type", :default => "", :null => false t.integer "watchable_id", :default => 0, :null => false From 36488560119da0dc33492442300e249abc691553 Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Fri, 30 Jan 2015 16:05:52 +0800 Subject: [PATCH 188/192] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E6=94=B9=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A=E6=98=BE=E7=A4=BA=E7=95=8C=E9=9D=A2show=E4=B8=8D?= =?UTF-8?q?=E6=AD=A3=E7=A1=AE=202=E3=80=81=E4=BF=AE=E6=94=B9=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A=E6=98=BE=E7=A4=BA=E7=95=8C=E9=9D=A2=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=B5=8F=E8=A7=88=E5=99=A8=E6=98=9F=E6=98=9F=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/stylesheets/css.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/stylesheets/css.css b/public/stylesheets/css.css index d53b6ec02..ffb9da644 100644 --- a/public/stylesheets/css.css +++ b/public/stylesheets/css.css @@ -1,5 +1,6 @@ /* CSS Document */ #content{ font-size:12px !important; font-family:"微软雅黑","宋体" !important; line-height:1.9; background:#fff; font-style:normal;} +#popbox{ font-size:12px !important; font-family:"微软雅黑","宋体" !important; line-height:1.9; background:#fff; font-style:normal;} div,html,img,ul,li,p,body,h1,h2,h3,h4,p,a,table,tr,td,fieldset,input,span,textarea{ margin:0; padding:0;} div,img,tr,td,textarea{ border:0;} table,tr,td{border:0; cellspacing:0; cellpadding:0;} @@ -79,7 +80,7 @@ a.wzan_visited{background:url(images/pic_zan.png) 0 0 no-repeat;} .ping_con h2{ font-size:14px; color:#444443; margin-bottom:10px; } .ping_con p{ color:#777777; font-size:12px; border-bottom:1px dashed #CCC; padding-bottom:5px;} .ping_con p span a{ color:#777777;} -.ping_star{ width:160px; color:#333; font-weight:bold; margin-bottom:5px;} +.ping_star{ width:165px; color:#333; font-weight:bold; margin-bottom:5px;} .ping_star span a{ float:right; width:20px; height:20px; background:url(images/star.png);background-repeat: no-repeat; margin-right:3px;} .ping_con textarea{ height:76px; border:1px solid #15bccf; margin-bottom:5px; color:#666; font-size:12px;} a.ping_sub{ float:right; height:22px; width:60px; margin-right:20px; background:#15bccf; color:#fff; text-align:center;} From 34c68a59fc5d6c386d9e8a7806f2b1e065446eef Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Fri, 30 Jan 2015 16:19:05 +0800 Subject: [PATCH 189/192] =?UTF-8?q?=E5=85=B3=E9=97=AD=E9=97=AE=E5=8D=B7?= =?UTF-8?q?=E4=B9=8B=E5=90=8E=E8=80=81=E5=B8=88=E5=AE=B9=E8=AE=B8=E6=9F=A5?= =?UTF-8?q?=E7=9C=8B=E7=BB=9F=E8=AE=A1=E7=BB=93=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/poll/_poll.html.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/poll/_poll.html.erb b/app/views/poll/_poll.html.erb index fdf534405..644b678b8 100644 --- a/app/views/poll/_poll.html.erb +++ b/app/views/poll/_poll.html.erb @@ -22,9 +22,9 @@ <% end %> <%if @is_teacher%> - <% if poll.polls_status == 1 || poll.polls_status == 3 %> + <% if poll.polls_status == 1%>
      • 统计结果
      • - <% elsif poll.polls_status == 2%> + <% elsif poll.polls_status == 2 || poll.polls_status == 3 %>
      • <%= link_to l(:label_statistical_results), statistics_result_poll_path(poll.id), :class => "pollsbtn fl ml10"%>
      • From 6bd202e80a1c29bc4b9c69cc0290af2ef8095cdb Mon Sep 17 00:00:00 2001 From: z9hang Date: Fri, 30 Jan 2015 16:58:05 +0800 Subject: [PATCH 190/192] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=BD=93=E5=BD=93=E5=89=8D=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=B8=BA=E8=AF=BE=E7=A8=8B=E5=AD=A6=E7=94=9F=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E8=BE=93=E5=87=BA=E5=88=86=E9=85=8D=E7=BB=99=E6=94=B9=E5=AD=A6?= =?UTF-8?q?=E7=94=9F=E5=8C=BF=E8=AF=84=E7=9A=84=E4=BD=9C=E4=B8=9A=E9=9B=86?= =?UTF-8?q?=E5=90=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/entities/homework.rb | 5 ++++ app/controllers/homework_attach_controller.rb | 8 +----- app/helpers/homework_attach_helper.rb | 11 ++++++++ app/services/courses_service.rb | 28 +++++++++++++++---- 4 files changed, 40 insertions(+), 12 deletions(-) diff --git a/app/api/mobile/entities/homework.rb b/app/api/mobile/entities/homework.rb index ae3637106..9be9bc53e 100644 --- a/app/api/mobile/entities/homework.rb +++ b/app/api/mobile/entities/homework.rb @@ -35,6 +35,11 @@ module Mobile #作业状态 0:新建,1:已开启匿评,2:已关闭匿评 #只有作业启用了匿评功能且当前用户是课程老师且已提交的作品数量大于或等于2才能开启匿评 homework_expose :homework_state + + expose :homework_for_anonymous_comments,using: Mobile::Entities::HomeworkAttach do |f, opt| + f[:homework_for_anonymous_comments] if f.is_a?(Hash) && f.key?(:homework_for_anonymous_comments) + end + end end end \ No newline at end of file diff --git a/app/controllers/homework_attach_controller.rb b/app/controllers/homework_attach_controller.rb index 8e69d1d72..2c943e778 100644 --- a/app/controllers/homework_attach_controller.rb +++ b/app/controllers/homework_attach_controller.rb @@ -101,13 +101,7 @@ class HomeworkAttachController < ApplicationController #获取学生匿评列表 def get_student_batch_homework @is_student_batch_homework = true - all_homework_list = HomeworkAttach.eager_load(:attachments,:user,:rate_averages).find_by_sql("SELECT homework_attaches.*, - (SELECT stars FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND is_teacher_score = 1 AND stars IS NOT NULL ORDER BY updated_at DESC limit 0,1) AS t_score, - (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND is_teacher_score = 0) AS s_score, - (SELECT stars FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id = #{User.current.id} AND is_teacher_score = 0) AS m_score - FROM homework_attaches - INNER JOIN homework_evaluations ON homework_evaluations.homework_attach_id = homework_attaches.id - WHERE homework_attaches.bid_id = #{@bid.id} AND homework_evaluations.user_id = #{User.current.id} ORDER BY m_score DESC") + all_homework_list = get_student_batch_homework_list @bid,User.current @cur_page = params[:page] || 1 @cur_type = 4 @homework_list = paginateHelper all_homework_list,10 diff --git a/app/helpers/homework_attach_helper.rb b/app/helpers/homework_attach_helper.rb index 4744df624..c41ba54ee 100644 --- a/app/helpers/homework_attach_helper.rb +++ b/app/helpers/homework_attach_helper.rb @@ -119,4 +119,15 @@ module HomeworkAttachHelper #end ary end + + def get_student_batch_homework_list bid,user + student_batch_homework_list = HomeworkAttach.eager_load(:attachments,:user,:rate_averages).find_by_sql("SELECT homework_attaches.*, + (SELECT stars FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND is_teacher_score = 1 AND stars IS NOT NULL ORDER BY updated_at DESC limit 0,1) AS t_score, + (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND is_teacher_score = 0) AS s_score, + (SELECT stars FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id = #{User.current.id} AND is_teacher_score = 0) AS m_score + FROM homework_attaches + INNER JOIN homework_evaluations ON homework_evaluations.homework_attach_id = homework_attaches.id + WHERE homework_attaches.bid_id = #{bid.id} AND homework_evaluations.user_id = #{user.id} ORDER BY m_score DESC") + student_batch_homework_list + end end \ No newline at end of file diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index 7e3b2a545..41b6f2c68 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -1,6 +1,7 @@ class CoursesService include ApplicationHelper include CoursesHelper + include HomeworkAttachHelper #TODO:尚未整合权限系统 #参数school_id为0或不传时返回所有课程,否则返回对应学校的课程 #参数per_page_count分页功能,每页显示的课程数 @@ -306,10 +307,8 @@ class CoursesService bids = course.homeworks.order('deadline DESC') bids = bids.like(params[:name]) if params[:name].present? homeworks = [] - if is_course_teacher(current_user,course) - bids.each do |bid| - homeworks << show_homework_info(course,bid) - end + bids.each do |bid| + homeworks << show_homework_info(course,bid,current_user,is_course_teacher(current_user,course)) end homeworks else @@ -318,7 +317,7 @@ class CoursesService end private - def show_homework_info course,bid + def show_homework_info course,bid,current_user,is_course_teacher author = bid.author.lastname + bid.author.firstname many_times = course.homeworks.index(bid) + 1 name = bid.name @@ -327,8 +326,27 @@ class CoursesService description = bid.description #if is_course_teacher(User.current, course) && @bid.open_anonymous_evaluation == 1 && @bid.homeworks.count >= 2 state = bid.comment_status + unless is_course_teacher + homework_for_anonymous_comments = get_student_batch_homework_list bid,current_user + end #end open_anonymous_evaluation = bid.open_anonymous_evaluation + {:course_name => course.name,:id => bid.id, :course_teacher => author, :homework_times => many_times, :homework_name => name, :homework_count => homework_count,:student_questions_count => student_questions_count, + :description => description, :homework_state => state,:open_anonymous_evaluation => open_anonymous_evaluation,:homework_for_anonymous_comments => homework_for_anonymous_comments} + end + + #显示作业列表的同时显示分配给当前学生匿评的作业 + def show_homework_info_with_batch course,bid + author = bid.author.lastname + bid.author.firstname + many_times = course.homeworks.index(bid) + 1 + name = bid.name + homework_count = bid.homeworks.count #已提交的作业数量 + student_questions_count = bid.commit.nil? ? 0 : bid.commit + description = bid.description + #if is_course_teacher(User.current, course) && @bid.open_anonymous_evaluation == 1 && @bid.homeworks.count >= 2 + state = bid.comment_status + #end + open_anonymous_evaluation = bid.open_anonymous_evaluation {:course_name => course.name,:id => bid.id, :course_teacher => author, :homework_times => many_times, :homework_name => name, :homework_count => homework_count,:student_questions_count => student_questions_count, :description => description, :homework_state => state,:open_anonymous_evaluation => open_anonymous_evaluation} end From 2f168dd4d70c8749430ada789ab7f8d7a1bfbfde Mon Sep 17 00:00:00 2001 From: alan <547533434@qq.com> Date: Fri, 30 Jan 2015 17:47:57 +0800 Subject: [PATCH 191/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E3=80=8A=E8=AF=BE?= =?UTF-8?q?=E7=A8=8B=E5=8A=A8=E6=80=81=E3=80=8B=E6=A0=B7=E5=BC=8F=20Signed?= =?UTF-8?q?-off-by:=20alan=20<547533434@qq.com>?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 2 +- app/views/courses/show.html.erb | 2 +- config/application.rb | 3 ++- lib/email_verifier | 1 + 4 files changed, 5 insertions(+), 3 deletions(-) create mode 160000 lib/email_verifier diff --git a/Gemfile b/Gemfile index afd6a667a..037c606c8 100644 --- a/Gemfile +++ b/Gemfile @@ -20,7 +20,7 @@ gem "builder", "3.0.0" gem 'acts-as-taggable-on', '2.4.1' gem 'spreadsheet' gem 'ruby-ole' -#gem 'email_verifier' +#gem 'email_verifier', path: 'lib/email_verifier' group :development do gem 'grape-swagger' diff --git a/app/views/courses/show.html.erb b/app/views/courses/show.html.erb index 9f0084019..9c91908d2 100644 --- a/app/views/courses/show.html.erb +++ b/app/views/courses/show.html.erb @@ -90,7 +90,7 @@ - + <%= l :label_create_time %>: <%= format_time(@course.created_at) %> diff --git a/config/application.rb b/config/application.rb index 311bf457b..c7f2f3ea5 100644 --- a/config/application.rb +++ b/config/application.rb @@ -16,7 +16,7 @@ module RedmineApp # Application configuration should go into files in config/initializers # -- all .rb files in that directory are automatically loaded. - # verifier if email is real + #verifier if email is real # EmailVerifier.config do |config| # config.verifier_email = "lizanle521@126.com" # end @@ -74,5 +74,6 @@ module RedmineApp 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 diff --git a/lib/email_verifier b/lib/email_verifier new file mode 160000 index 000000000..3cabcc643 --- /dev/null +++ b/lib/email_verifier @@ -0,0 +1 @@ +Subproject commit 3cabcc643f36939939685e6f55273dfbf89da545 From be9ff9b4bbe273e72009d480d1b02561b10af081 Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 30 Jan 2015 17:58:41 +0800 Subject: [PATCH 192/192] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E5=99=A8=E5=90=8D=20=E8=A7=A3=E5=86=B3=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E4=B8=AD=E4=BC=81=E4=B8=9A=E9=87=8D=E5=90=8D=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/enterprises_controller.rb | 6 ------ app/controllers/originizations_controller.rb | 6 ++++++ app/controllers/welcome_controller.rb | 8 ++++---- ...{enterprises_helper.rb => originizations_helper.rb} | 0 .../{enterprises => originizations}/index.html.erb | 2 +- app/views/welcome/index.html.erb | 10 +++++----- config/routes.rb | 4 ++-- 7 files changed, 18 insertions(+), 18 deletions(-) delete mode 100644 app/controllers/enterprises_controller.rb create mode 100644 app/controllers/originizations_controller.rb rename app/helpers/{enterprises_helper.rb => originizations_helper.rb} (100%) rename app/views/{enterprises => originizations}/index.html.erb (83%) diff --git a/app/controllers/enterprises_controller.rb b/app/controllers/enterprises_controller.rb deleted file mode 100644 index c15b6dc8f..000000000 --- a/app/controllers/enterprises_controller.rb +++ /dev/null @@ -1,6 +0,0 @@ -class EnterprisesController < ApplicationController - layout 'project_base' - def index - @enterprises = Project.find_by_sql("select enterprise_name from projects") - end -end diff --git a/app/controllers/originizations_controller.rb b/app/controllers/originizations_controller.rb new file mode 100644 index 000000000..033f9d8ec --- /dev/null +++ b/app/controllers/originizations_controller.rb @@ -0,0 +1,6 @@ +class OriginizationsController < ApplicationController + layout 'project_base' + def index + @enterprises = Project.find_by_sql("select distinct(enterprise_name) from projects") + end +end diff --git a/app/controllers/welcome_controller.rb b/app/controllers/welcome_controller.rb index 6c28ec502..b1138f964 100644 --- a/app/controllers/welcome_controller.rb +++ b/app/controllers/welcome_controller.rb @@ -25,10 +25,10 @@ class WelcomeController < ApplicationController before_filter :entry_select, :only => [:index] def index - unless params[:enterprise].nil? - @enterprise = params[:enterprise] - @enterprise_projects = Project.find_by_sql(["select * from projects where enterprise_name =? ", @enterprise]) - @e_count = @enterprise_projects.count + unless params[:originization].nil? + @originization = params[:originization] + @originization_projects = Project.find_by_sql(["select * from projects where enterprise_name =? ", @originization]) + @e_count = @originization_projects.count if @e_count < 10 part_count = 10 -@e_count # @part_projects = find_all_hot_project part_count, order diff --git a/app/helpers/enterprises_helper.rb b/app/helpers/originizations_helper.rb similarity index 100% rename from app/helpers/enterprises_helper.rb rename to app/helpers/originizations_helper.rb diff --git a/app/views/enterprises/index.html.erb b/app/views/originizations/index.html.erb similarity index 83% rename from app/views/enterprises/index.html.erb rename to app/views/originizations/index.html.erb index 9db8d99ab..002ea84f8 100644 --- a/app/views/enterprises/index.html.erb +++ b/app/views/originizations/index.html.erb @@ -10,7 +10,7 @@ <% unless enterprise.enterprise_name.blank? %>
        • - <%= link_to enterprise.enterprise_name, home_path(:enterprise => enterprise.enterprise_name) %> + <%= link_to enterprise.enterprise_name, home_path(:originization => enterprise.enterprise_name) %>
        <% end %> diff --git a/app/views/welcome/index.html.erb b/app/views/welcome/index.html.erb index f29f588b0..c53377134 100644 --- a/app/views/welcome/index.html.erb +++ b/app/views/welcome/index.html.erb @@ -77,7 +77,7 @@
          - <% if @enterprise.nil? %> + <% if @originization.nil? %> <% @projects.map do |project| %> <%= render :partial => 'hot_projects_list', :locals => {:project => project} %> <% end; reset_cycle %> @@ -87,9 +87,9 @@

          <%= l(:label_enterprise_tips) %>

          <% @projects.map do |project| %> <%= render :partial => 'hot_projects_list', :locals => {:project => project} %> - <% end; reset_cycle %> + <% end %> <% elsif @e_count < 10 %> - <% @enterprise_projects.map do |project| %> + <% @originization_projects.map do |project| %> <%= render :partial => 'hot_projects_list', :locals => {:project => project} %> <% end %>

          <%= l(:label_part_enterprise_tips) %>

          @@ -100,8 +100,8 @@ <% @part_projects.map do |project| %> <%= render :partial => 'hot_projects_list', :locals => {:project => project} %> <% end %> - <% end; reset_cycle %> - <% end; reset_cycle %> + <% end %> + <% end %>
        diff --git a/config/routes.rb b/config/routes.rb index aad7adcb3..1b79a737d 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -26,7 +26,7 @@ # Example: :via => :get ====> :via => :get RedmineApp::Application.routes.draw do - get "enterprises/index" + get "originizations/index" #match '/contests/:id/contestnotifications', :controller => 'contestnotifications', :action => 'index' @@ -390,7 +390,7 @@ RedmineApp::Application.routes.draw do match '/statistics', :to => 'projects#statistics', :as => 'statistics', :via => :get # match '/investor', :controller => 'projects', :action => 'investor', :as => 'investor', :via => :get match '/homework', :to => 'projects#homework', :as => 'homework', :via => :get - match 'enterprise', :to => 'enterprises#index', :as => 'index', :via => :get + match 'originizations', :to => 'originizations#index', :as => 'index', :via => :get # match '/activity', :controller => 'activities', :action => 'index', :as => 'activity', :via => :get # match '/repository', :controller => 'repositories', :action => 'show', :repository_id => nil, :path => nil, :rev => nil, :as => 'repository', :via => :get