From 5081ccc882c320bd932b0b68fe4e736f07eb6baa Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Wed, 15 May 2019 10:23:41 +0800 Subject: [PATCH] 1 --- app/api/mobile/api.rb | 10 +- app/api/mobile/apis/activities.rb | 0 app/api/mobile/apis/assets.rb | 0 app/api/mobile/apis/auth.rb | 0 app/api/mobile/apis/blog_comments.rb | 0 app/api/mobile/apis/careers.rb | 0 app/api/mobile/apis/comments.rb | 0 app/api/mobile/apis/courses.rb | 0 app/api/mobile/apis/discusses.rb | 0 app/api/mobile/apis/ecloud.rb | 19 - app/api/mobile/apis/games.rb | 0 app/api/mobile/apis/helers.rb | 0 app/api/mobile/apis/homeworks.rb | 0 app/api/mobile/apis/issues.rb | 0 app/api/mobile/apis/journal_for_messages.rb | 0 app/api/mobile/apis/memos.rb | 0 app/api/mobile/apis/messages.rb | 0 app/api/mobile/apis/new_comment.rb | 0 app/api/mobile/apis/newss.rb | 0 app/api/mobile/apis/praise.rb | 0 app/api/mobile/apis/projects.rb | 0 app/api/mobile/apis/resources.rb | 0 app/api/mobile/apis/shixuns.rb | 0 app/api/mobile/apis/sources.rb | 0 app/api/mobile/apis/syllabuses.rb | 0 app/api/mobile/apis/upgrade.rb | 0 app/api/mobile/apis/users.rb | 0 app/api/mobile/apis/watches.rb | 0 app/api/mobile/apis/whomeworks.rb | 0 app/api/mobile/entities/activity.rb | 0 .../mobile/entities/anonymous_works_params.rb | 0 app/api/mobile/entities/attachment.rb | 0 app/api/mobile/entities/auth.rb | 0 app/api/mobile/entities/blog_comment.rb | 0 app/api/mobile/entities/comment.rb | 0 app/api/mobile/entities/course.rb | 0 app/api/mobile/entities/course_dynamic.rb | 0 app/api/mobile/entities/course_group.rb | 0 app/api/mobile/entities/courses/board.rb | 0 app/api/mobile/entities/courses/comment.rb | 0 app/api/mobile/entities/courses/message.rb | 0 app/api/mobile/entities/exercise.rb | 0 app/api/mobile/entities/game.rb | 0 app/api/mobile/entities/homework.rb | 0 app/api/mobile/entities/homework_attach.rb | 0 app/api/mobile/entities/homework_jours.rb | 0 app/api/mobile/entities/homeworkscore.rb | 0 app/api/mobile/entities/issue.rb | 0 app/api/mobile/entities/journal.rb | 0 app/api/mobile/entities/jours.rb | 0 app/api/mobile/entities/member.rb | 0 app/api/mobile/entities/message.rb | 0 app/api/mobile/entities/news.rb | 0 app/api/mobile/entities/project.rb | 0 app/api/mobile/entities/project_member.rb | 0 app/api/mobile/entities/response.rb | 0 app/api/mobile/entities/short_user.rb | 0 app/api/mobile/entities/student_work.rb | 0 app/api/mobile/entities/syllabus.rb | 0 app/api/mobile/entities/user.rb | 0 app/api/mobile/entities/users/course.rb | 0 app/api/mobile/entities/users/tiding.rb | 0 app/api/mobile/entities/whomework.rb | 0 app/api/mobile/exceptions/auth_exception.rb | 0 app/api/mobile/middleware/error_handler.rb | 0 app/assets/javascripts/applied_project.js | 0 .../javascripts/apply_project_masters.js | 0 .../javascripts/article_homepages.js.coffee | 0 .../javascripts/attachment_type_edit.js | 0 app/assets/javascripts/careers.js.coffee | 0 app/assets/javascripts/categories.js.coffee | 0 app/assets/javascripts/challenges.js.coffee | 0 app/assets/javascripts/codes.js.coffee | 0 app/assets/javascripts/colleges.js.coffee | 0 .../javascripts/competition_teams.js.coffee | 0 app/assets/javascripts/competitions.js.coffee | 0 .../javascripts/contest_members.js.coffee | 0 .../javascripts/contestant_works.js.coffee | 0 app/assets/javascripts/contests.js.coffee | 0 app/assets/javascripts/cooperates.js.coffee | 3 - app/assets/javascripts/cooperation.js.coffee | 0 app/assets/javascripts/debates.js.coffee | 0 app/assets/javascripts/department.js.coffee | 0 app/assets/javascripts/discusses.js.coffee | 0 app/assets/javascripts/ec.js.coffee | 0 .../ec_course_achievement_methods.js.coffee | 0 .../ec_course_evaluation_subitems.js.coffee | 0 .../ec_course_evaluations.js.coffee | 0 .../javascripts/ec_course_supports.js.coffee | 0 .../javascripts/ec_course_targets.js.coffee | 0 app/assets/javascripts/ec_courses.js.coffee | 0 .../ec_graduation_requirements.js.coffee | 0 .../ec_graduation_subitems.js.coffee | 0 .../javascripts/ec_graduations.js.coffee | 0 .../javascripts/ec_major_schools.js.coffee | 0 app/assets/javascripts/ec_majors.js.coffee | 0 .../ec_training_objectives.js.coffee | 0 .../ec_training_subitems.js.coffee | 0 app/assets/javascripts/ec_years.js.coffee | 0 app/assets/javascripts/ecloud.js.coffee | 3 - app/assets/javascripts/ecs.js.coffee | 0 app/assets/javascripts/enterprises.js.coffee | 0 .../javascripts/exercise_bank.js.coffee | 0 app/assets/javascripts/forums.js | 0 app/assets/javascripts/games.js.coffee | 0 .../javascripts/graduation_tasks.js.coffee | 0 .../javascripts/graduation_topics.js.coffee | 0 .../javascripts/graduation_works.js.coffee | 0 app/assets/javascripts/homepages.js.coffee | 0 .../javascripts/homework_bank.js.coffee | 0 app/assets/javascripts/iframes.js.coffee | 0 app/assets/javascripts/kubernete.js.coffee | 0 .../javascripts/local_settings.js.coffee | 3 - app/assets/javascripts/management.js.coffee | 0 app/assets/javascripts/managements.js.coffee | 0 app/assets/javascripts/mark_down.js.coffee | 0 app/assets/javascripts/memos.js | 0 app/assets/javascripts/myshixuns.js.coffee | 0 app/assets/javascripts/no_uses.js | 0 .../notificationcomments.js.coffee | 0 app/assets/javascripts/oauth.js.coffee | 3 - .../javascripts/open_source_projects.js | 0 app/assets/javascripts/org_courses.js.coffee | 0 .../org_document_comment.js.coffee | 0 app/assets/javascripts/org_member.js.coffee | 0 app/assets/javascripts/org_projects.js.coffee | 0 .../javascripts/org_subfields.js.coffee | 0 .../javascripts/organizations.js.coffee | 0 app/assets/javascripts/praise_tread.js | 0 .../javascripts/pull_requests.js.coffee | 0 .../javascripts/quality_analyses.js.coffee | 0 .../javascripts/question_banks.js.coffee | 0 app/assets/javascripts/school.js | 0 app/assets/javascripts/shares.js | 0 .../javascripts/shield_activities.js.coffee | 0 .../shield_wechat_messages.js.coffee | 0 app/assets/javascripts/shixuns.js.coffee | 0 app/assets/javascripts/softapplications.js | 0 app/assets/javascripts/stages.js.coffee | 0 app/assets/javascripts/statistics.js.coffee | 0 .../sub_document_comments.js.coffee | 0 app/assets/javascripts/sub_domains.js.coffee | 0 .../subfield_subdomain_dirs.js.coffee | 0 app/assets/javascripts/subjects.js.coffee | 0 .../javascripts/syllabus_member.js.coffee | 0 app/assets/javascripts/syllabuses.js.coffee | 0 app/assets/javascripts/system_log.js.coffee | 0 .../javascripts/system_messages.js.coffee | 0 app/assets/javascripts/tasks.js.coffee | 0 app/assets/javascripts/teachers.js | 0 .../javascripts/training_tasks.js.coffee | 0 app/assets/javascripts/trainings.js.coffee | 0 app/assets/javascripts/works.js.coffee | 0 app/assets/javascripts/zipdown.js | 0 app/assets/stylesheets/applied_project.css | 0 .../stylesheets/apply_project_masters.css | 0 .../stylesheets/article_homepages.css.scss | 0 .../stylesheets/attachment_type_edit.css | 0 app/assets/stylesheets/careers.css.scss | 0 app/assets/stylesheets/categories.css.scss | 0 app/assets/stylesheets/challenges.css.scss | 0 app/assets/stylesheets/codes.css.scss | 0 app/assets/stylesheets/colleges.css.scss | 0 .../stylesheets/competition_teams.css.scss | 0 app/assets/stylesheets/competitions.css.scss | 0 .../stylesheets/contest_members.css.scss | 0 .../stylesheets/contestant_works.css.scss | 0 app/assets/stylesheets/contests.css.scss | 0 app/assets/stylesheets/cooperates.css.scss | 3 - app/assets/stylesheets/cooperation.css.scss | 0 app/assets/stylesheets/debates.css.scss | 0 app/assets/stylesheets/department.css.scss | 0 app/assets/stylesheets/discusses.css.scss | 0 app/assets/stylesheets/ec.css.scss | 0 .../ec_course_achievement_methods.css.scss | 0 .../ec_course_evaluation_subitems.css.scss | 0 .../ec_course_evaluations.css.scss | 0 .../stylesheets/ec_course_supports.css.scss | 0 .../stylesheets/ec_course_targets.css.scss | 0 app/assets/stylesheets/ec_courses.css.scss | 0 .../ec_graduation_requirements.css.scss | 0 .../ec_graduation_subitems.css.scss | 0 .../stylesheets/ec_graduations.css.scss | 0 .../stylesheets/ec_major_schools.css.scss | 0 app/assets/stylesheets/ec_majors.css.scss | 0 .../ec_training_objectives.css.scss | 0 .../stylesheets/ec_training_subitems.css.scss | 0 app/assets/stylesheets/ec_years.css.scss | 0 app/assets/stylesheets/ecloud.css.scss | 3 - app/assets/stylesheets/ecs.css.scss | 0 app/assets/stylesheets/enterprises.css.scss | 0 app/assets/stylesheets/exercise_bank.css.scss | 0 app/assets/stylesheets/forums.css | 0 app/assets/stylesheets/games.css.scss | 0 .../stylesheets/graduation_tasks.css.scss | 0 .../stylesheets/graduation_topics.css.scss | 0 .../stylesheets/graduation_works.css.scss | 0 app/assets/stylesheets/homepages.css.scss | 0 app/assets/stylesheets/homework_bank.css.scss | 0 app/assets/stylesheets/iframes.css.scss | 0 app/assets/stylesheets/kubernete.css.scss | 0 .../stylesheets/local_settings.css.scss | 3 - app/assets/stylesheets/management.css.scss | 0 app/assets/stylesheets/managements.css.scss | 0 app/assets/stylesheets/mark_down.css.scss | 0 app/assets/stylesheets/memos.css | 0 app/assets/stylesheets/myshixuns.css.scss | 0 app/assets/stylesheets/no_uses.css | 0 .../stylesheets/notificationcomments.css.scss | 0 app/assets/stylesheets/oauth.css.scss | 3 - .../stylesheets/open_source_projects.css | 0 app/assets/stylesheets/org_courses.css.scss | 0 .../stylesheets/org_document_comment.css.scss | 0 app/assets/stylesheets/org_member.css.scss | 0 app/assets/stylesheets/org_projects.css.scss | 0 app/assets/stylesheets/org_subfields.css.scss | 0 app/assets/stylesheets/organizations.css.scss | 0 app/assets/stylesheets/praise_tread.css | 0 app/assets/stylesheets/pull_requests.css.scss | 0 .../stylesheets/quality_analyses.css.scss | 0 .../stylesheets/question_banks.css.scss | 0 app/assets/stylesheets/scaffold.css | 0 app/assets/stylesheets/scaffolds.css.scss | 0 app/assets/stylesheets/school.css | 0 app/assets/stylesheets/shares.css | 0 .../stylesheets/shield_activities.css.scss | 0 .../shield_wechat_messages.css.scss | 0 app/assets/stylesheets/shixuns.css.scss | 0 app/assets/stylesheets/softapplications.css | 0 app/assets/stylesheets/stages.css.scss | 0 app/assets/stylesheets/statistics.css.scss | 0 .../sub_document_comments.css.scss | 0 app/assets/stylesheets/sub_domains.css.scss | 0 .../subfield_subdomain_dirs.css.scss | 0 app/assets/stylesheets/subjects.css.scss | 0 .../stylesheets/syllabus_member.css.scss | 0 app/assets/stylesheets/syllabuses.css.scss | 0 app/assets/stylesheets/system_log.css.scss | 0 .../stylesheets/system_messages.css.scss | 0 app/assets/stylesheets/tasks.css.scss | 0 app/assets/stylesheets/teachers.css | 0 .../stylesheets/training_tasks.css.scss | 0 app/assets/stylesheets/trainings.css.scss | 0 app/assets/stylesheets/works.css.scss | 0 app/assets/stylesheets/zipdown.css | 0 app/controllers/account_controller.rb | 184 +- app/controllers/activities_controller.rb | 0 .../activity_notifys_controller.rb | 0 app/controllers/admin_controller.rb | 0 app/controllers/application_controller.rb | 7 - app/controllers/applied_project_controller.rb | 0 .../apply_project_masters_controller.rb | 0 .../article_homepages_controller.rb | 0 app/controllers/at_controller.rb | 0 app/controllers/attachments_controller.rb | 0 app/controllers/auth_sources_controller.rb | 0 app/controllers/auto_completes_controller.rb | 0 app/controllers/avatar_controller.rb | 0 app/controllers/bids_controller.rb | 0 app/controllers/blog_comments_controller.rb | 0 app/controllers/blogs_controller.rb | 0 app/controllers/boards_controller.rb | 0 app/controllers/calendars_controller.rb | 0 app/controllers/careers_controller.rb | 0 app/controllers/categories_controller.rb | 0 app/controllers/challenges_controller.rb | 0 app/controllers/codes_controller.rb | 0 app/controllers/colleges_controller.rb | 5 +- app/controllers/comments_controller.rb | 0 .../competition_teams_controller.rb | 0 app/controllers/competitions_controller.rb | 0 app/controllers/contest_members_controller.rb | 0 .../contestant_works_controller.rb | 0 app/controllers/contests_controller.rb | 0 app/controllers/context_menus_controller.rb | 0 app/controllers/cooperates_controller.rb | 36 - app/controllers/cooperation_controller.rb | 0 app/controllers/courses_controller.rb | 16 +- app/controllers/custom_fields_controller.rb | 0 app/controllers/debates_controller.rb | 0 app/controllers/department_controller.rb | 0 app/controllers/discuss_demos_controller.rb | 0 app/controllers/discusses_controller.rb | 0 app/controllers/documents_controller.rb | 0 ...c_course_achievement_methods_controller.rb | 16 +- ...c_course_evaluation_subitems_controller.rb | 0 .../ec_course_evaluations_controller.rb | 0 .../ec_course_supports_controller.rb | 19 +- .../ec_course_targets_controller.rb | 0 app/controllers/ec_courses_controller.rb | 61 +- .../ec_graduation_requirements_controller.rb | 0 .../ec_graduation_subitems_controller.rb | 0 .../ec_major_schools_controller.rb | 11 +- app/controllers/ec_majors_controller.rb | 0 .../ec_training_objectives_controller.rb | 0 .../ec_training_subitems_controller.rb | 0 app/controllers/ec_years_controller.rb | 93 +- app/controllers/ecloud_controller.rb | 381 - app/controllers/ecs_controller.rb | 40 +- app/controllers/enumerations_controller.rb | 0 app/controllers/exercise_bank_controller.rb | 0 app/controllers/exercise_controller.rb | 64 +- app/controllers/files_controller.rb | 0 app/controllers/forums_controller.rb | 0 app/controllers/games_controller.rb | 4 +- app/controllers/gantts_controller.rb | 0 app/controllers/git_callback_controller.rb | 0 .../graduation_tasks_controller.rb | 20 +- .../graduation_topics_controller.rb | 0 .../graduation_works_controller.rb | 0 app/controllers/groups_controller.rb | 0 app/controllers/homepages_controller.rb | 0 app/controllers/homework_attach_controller.rb | 0 app/controllers/homework_bank_controller.rb | 0 app/controllers/homework_common_controller.rb | 657 +- app/controllers/homework_users_controller.rb | 0 app/controllers/iframes_controller.rb | 0 .../issue_categories_controller.rb | 0 app/controllers/issue_relations_controller.rb | 0 app/controllers/issue_statuses_controller.rb | 0 app/controllers/issues_controller.rb | 0 app/controllers/journals_controller.rb | 0 app/controllers/kubernete_controller.rb | 0 app/controllers/list_controller.rb | 0 app/controllers/local_settings_controller.rb | 0 app/controllers/mail_handler_controller.rb | 0 app/controllers/managements_controller.rb | 642 +- app/controllers/mark_down_controller.rb | 0 app/controllers/members_controller.rb | 0 app/controllers/memos_controller.rb | 0 app/controllers/messages_controller.rb | 0 app/controllers/my_controller.rb | 11 +- app/controllers/myshixuns_controller.rb | 0 app/controllers/news_controller.rb | 0 app/controllers/no_uses_controller.rb | 0 .../notificationcomments_controller.rb | 0 app/controllers/oauth_controller.rb | 167 - .../open_source_projects_controller.rb | 0 app/controllers/org_courses_controller.rb | 0 .../org_document_comments_controller.rb | 0 app/controllers/org_member_controller.rb | 0 app/controllers/org_projects_controller.rb | 0 app/controllers/org_subfields_controller.rb | 0 app/controllers/organizations_controller.rb | 0 app/controllers/partners_controller.rb | 29 - app/controllers/poll_controller.rb | 0 app/controllers/praise_tread_controller.rb | 0 app/controllers/previews_controller.rb | 0 .../project_enumerations_controller.rb | 0 app/controllers/projects_controller.rb | 0 app/controllers/pull_requests_controller.rb | 0 .../quality_analysis_controller.rb | 0 app/controllers/queries_controller.rb | 0 app/controllers/question_banks_controller.rb | 0 app/controllers/relative_memos_controller.rb | 0 app/controllers/reports_controller.rb | 0 app/controllers/repositories_controller.rb | 0 app/controllers/roles_controller.rb | 0 app/controllers/school_controller.rb | 8 +- app/controllers/search_controller.rb | 0 app/controllers/settings_controller.rb | 0 app/controllers/shares_controller.rb | 0 app/controllers/shell/shell | 0 .../shield_activities_controller.rb | 0 .../shield_wechat_messages_controller.rb | 0 app/controllers/shixuns_controller.rb | 58 +- .../softapplications_controller.rb | 0 app/controllers/ssos_controller.rb | 0 app/controllers/stages_controller.rb | 0 app/controllers/statistics_controller.rb | 0 app/controllers/stores_controller.rb | 0 app/controllers/student_work_controller.rb | 7 +- .../sub_document_comments_controller.rb | 0 app/controllers/sub_domains_controller.rb | 0 .../subfield_subdomain_dirs_controller.rb | 0 app/controllers/subjects_controller.rb | 54 +- app/controllers/syllabus_member_controller.rb | 0 app/controllers/syllabuses_controller.rb | 0 app/controllers/sys_controller.rb | 0 app/controllers/system_log_controller.rb | 0 app/controllers/system_messages_controller.rb | 0 app/controllers/tags_controller.rb | 0 app/controllers/tasks_controller.rb | 0 app/controllers/teachers_controller.rb | 0 app/controllers/test_controller.rb | 0 app/controllers/timelog_controller.rb | 0 app/controllers/trackers_controller.rb | 0 app/controllers/training_tasks_controller.rb | 0 app/controllers/trainings_controller.rb | 0 app/controllers/user_score_controller.rb | 0 app/controllers/users_controller.rb | 12 +- app/controllers/versions_controller.rb | 0 app/controllers/watchers_controller.rb | 0 .../web_footer_companies_controller.rb | 0 app/controllers/wechats_controller.rb | 0 app/controllers/welcome_controller.rb | 30 +- app/controllers/wiki_controller.rb | 0 app/controllers/wikis_controller.rb | 0 app/controllers/words_controller.rb | 0 app/controllers/workflows_controller.rb | 0 app/controllers/works_controller.rb | 0 app/controllers/zipdown_controller.rb | 0 app/helpers/account_helper.rb | 0 app/helpers/activities_helper.rb | 0 app/helpers/activity_notifys_helper.rb | 0 app/helpers/admin_helper.rb | 0 app/helpers/api_helper.rb | 0 app/helpers/application_helper.rb | 14748 ++++++++-------- app/helpers/applied_project_helper.rb | 0 app/helpers/apply_project_masters_helper.rb | 0 app/helpers/article_homepages_helper.rb | 0 app/helpers/attachments_helper.rb | 0 app/helpers/auth_sources_helper.rb | 0 app/helpers/avatar_helper.rb | 0 app/helpers/bids_helper.rb | 0 app/helpers/blog_comments_helper.rb | 0 app/helpers/blogs_helper.rb | 0 app/helpers/boards_helper.rb | 0 app/helpers/calendars_helper.rb | 0 app/helpers/careers_helper.rb | 0 app/helpers/categories_helper.rb | 0 app/helpers/challenges_helper.rb | 0 app/helpers/codes_helper.rb | 0 app/helpers/colleges_helper.rb | 0 app/helpers/competition_teams_helper.rb | 0 app/helpers/competitions_helper.rb | 0 app/helpers/contest_members_helper.rb | 0 app/helpers/contestant_works_helper.rb | 0 app/helpers/contests_helper.rb | 0 app/helpers/context_menus_helper.rb | 0 app/helpers/cooperates_helper.rb | 2 - app/helpers/cooperation_helper.rb | 0 app/helpers/courses_helper.rb | 0 app/helpers/custom_fields_helper.rb | 0 app/helpers/debates_helper.rb | 0 app/helpers/department_helper.rb | 0 app/helpers/discuss_demos_helper.rb | 0 app/helpers/discusses_helper.rb | 0 app/helpers/documents_helper.rb | 0 .../ec_course_achievement_methods_helper.rb | 0 .../ec_course_evaluation_subitems_helper.rb | 0 app/helpers/ec_course_evaluations_helper.rb | 0 app/helpers/ec_course_supports_helper.rb | 0 app/helpers/ec_course_targets_helper.rb | 0 app/helpers/ec_courses_helper.rb | 0 .../ec_graduation_requirements_helper.rb | 0 app/helpers/ec_graduation_subitems_helper.rb | 0 app/helpers/ec_graduations_helper.rb | 0 app/helpers/ec_helper.rb | 0 app/helpers/ec_major_schools_helper.rb | 0 app/helpers/ec_majors_helper.rb | 0 app/helpers/ec_training_objectives_helper.rb | 0 app/helpers/ec_training_subitems_helper.rb | 0 app/helpers/ec_years_helper.rb | 0 app/helpers/ecloud_helper.rb | 2 - app/helpers/ecs_helper.rb | 0 app/helpers/enumerations_helper.rb | 0 app/helpers/exercise_bank_helper.rb | 0 app/helpers/exercise_helper.rb | 0 app/helpers/files_helper.rb | 0 app/helpers/forums_helper.rb | 0 app/helpers/games_helper.rb | 0 app/helpers/gantt_helper.rb | 0 app/helpers/gitlab_helper.rb | 0 app/helpers/graduation_tasks_helper.rb | 0 app/helpers/graduation_topics_helper.rb | 0 app/helpers/graduation_works_helper.rb | 0 app/helpers/groups_helper.rb | 0 app/helpers/homepages_helper.rb | 0 app/helpers/homework_attach_helper.rb | 0 app/helpers/homework_bank_helper.rb | 0 app/helpers/homework_common_helper.rb | 0 app/helpers/homework_users_helper.rb | 0 app/helpers/iframes_helper.rb | 0 app/helpers/issue_relations_helper.rb | 0 app/helpers/issue_statuses_helper.rb | 0 app/helpers/issues_helper.rb | 0 app/helpers/journals_helper.rb | 0 app/helpers/kubernete_helper.rb | 0 app/helpers/local_settings_helper.rb | 0 app/helpers/logger_helper.rb | 0 app/helpers/mail_handler_helper.rb | 0 app/helpers/management_helper.rb | 0 app/helpers/managements_helper.rb | 0 app/helpers/mark_down_helper.rb | 0 app/helpers/members_helper.rb | 0 app/helpers/memos_helper.rb | 0 app/helpers/messages_helper.rb | 0 app/helpers/my_helper.rb | 0 app/helpers/myshixuns_helper.rb | 0 app/helpers/news_helper.rb | 0 app/helpers/no_uses_helper.rb | 0 app/helpers/notificationcomments_helper.rb | 0 app/helpers/oauth_helper.rb | 2 - app/helpers/open_source_projects_helper.rb | 0 app/helpers/org_courses_helper.rb | 0 app/helpers/org_document_comment_helper.rb | 0 app/helpers/org_member_helper.rb | 0 app/helpers/org_projects_helper.rb | 0 app/helpers/org_subfields_helper.rb | 0 app/helpers/organizations_helper.rb | 0 app/helpers/owner_type_helper.rb | 0 app/helpers/poll_helper.rb | 8 +- app/helpers/praise_tread_helper.rb | 0 app/helpers/project_score_helper.rb | 0 app/helpers/projects_helper.rb | 0 app/helpers/pull_requests_helper.rb | 0 app/helpers/quality_analysis_helper.rb | 0 app/helpers/queries_helper.rb | 0 app/helpers/question_banks_helper.rb | 0 app/helpers/reports_helper.rb | 0 app/helpers/repositories_helper.rb | 0 app/helpers/roles_helper.rb | 0 app/helpers/routes_helper.rb | 0 app/helpers/school_helper.rb | 0 app/helpers/search_helper.rb | 0 app/helpers/settings_helper.rb | 0 app/helpers/shares_helper.rb | 0 app/helpers/shield_activities_helper.rb | 0 app/helpers/shield_wechat_messages_helper.rb | 0 app/helpers/shixuns_helper.rb | 2 +- app/helpers/softapplications_helper.rb | 0 app/helpers/sort_helper.rb | 0 app/helpers/stages_helper.rb | 0 app/helpers/statistics_helper.rb | 0 app/helpers/stores_helper.rb | 0 app/helpers/student_work_helper.rb | 78 +- app/helpers/sub_document_comments_helper.rb | 0 app/helpers/sub_domains_helper.rb | 0 app/helpers/subfield_subdomain_dirs_helper.rb | 0 app/helpers/subjects_helper.rb | 54 +- app/helpers/syllabus_member_helper.rb | 0 app/helpers/syllabuses_helper.rb | 0 app/helpers/system_log_helper.rb | 0 app/helpers/system_messages_helper.rb | 0 app/helpers/tags_helper.rb | 0 app/helpers/tasks_helper.rb | 0 app/helpers/teachers_helper.rb | 0 app/helpers/test_helper.rb | 0 app/helpers/timelog_helper.rb | 0 app/helpers/trackers_helper.rb | 0 app/helpers/training_tasks_helper.rb | 0 app/helpers/trainings_helper.rb | 0 app/helpers/user_score_helper.rb | 0 app/helpers/users_helper.rb | 4 +- app/helpers/versions_helper.rb | 0 app/helpers/watchers_helper.rb | 0 app/helpers/wechats_helper.rb | 0 app/helpers/welcome_helper.rb | 0 app/helpers/wiki_helper.rb | 0 app/helpers/words_helper.rb | 0 app/helpers/workflows_helper.rb | 0 app/helpers/works_helper.rb | 0 app/helpers/zipdown_helper.rb | 0 app/models/activity.rb | 0 app/models/activity_notify.rb | 0 app/models/add_base_score_to_statistics.rb | 0 app/models/api_key.rb | 0 app/models/applied_contest.rb | 0 app/models/applied_message.rb | 0 app/models/applied_project.rb | 0 app/models/apply_action.rb | 0 app/models/apply_add_department.rb | 0 app/models/apply_add_schools.rb | 0 app/models/apply_homework.rb | 0 app/models/apply_project_master.rb | 0 app/models/apply_resource.rb | 0 app/models/apply_user_authentication.rb | 0 app/models/article_homepage.rb | 0 app/models/at_message.rb | 0 app/models/attachment.rb | 0 app/models/attachment_group_setting.rb | 0 app/models/attachment_history.rb | 0 app/models/attachmentstype.rb | 0 app/models/attendance.rb | 0 app/models/auth_source.rb | 0 app/models/auth_source_ldap.rb | 0 app/models/authentication.rb | 0 app/models/authentications_users.rb | 0 app/models/bid.rb | 0 app/models/biding_project.rb | 0 app/models/blog.rb | 0 app/models/blog_comment.rb | 0 app/models/blog_message.rb | 0 app/models/board.rb | 0 app/models/bug_to_osp.rb | 0 app/models/career.rb | 0 app/models/career_faq.rb | 0 app/models/career_stage.rb | 0 app/models/career_stage_subject.rb | 0 app/models/challenge.rb | 0 app/models/challenge_choose.rb | 0 app/models/challenge_question.rb | 0 app/models/challenge_sample.rb | 0 app/models/challenge_tag.rb | 0 app/models/challenge_work_score.rb | 0 app/models/change.rb | 0 app/models/changeset.rb | 0 app/models/chart_rule.rb | 0 app/models/choose_outputs.rb | 0 app/models/code_tests.rb | 0 app/models/comment.rb | 0 app/models/commit.rb | 0 app/models/commit_issues.rb | 0 app/models/competition.rb | 0 app/models/competition_entry.rb | 0 app/models/competition_list.rb | 0 app/models/competition_module.rb | 0 app/models/competition_module_md_content.rb | 0 app/models/competition_score.rb | 0 app/models/competition_stage.rb | 0 app/models/competition_stage_section.rb | 0 app/models/competition_team.rb | 0 app/models/competition_text_config.rb | 0 app/models/contest.rb | 0 app/models/contest_activity.rb | 0 app/models/contest_member.rb | 0 app/models/contest_member_role.rb | 0 app/models/contest_message.rb | 0 app/models/contestant_for_contest.rb | 0 app/models/contestant_work.rb | 0 ...contestant_work_evaluation_distribution.rb | 0 app/models/contestant_work_project.rb | 0 app/models/contestant_work_score.rb | 0 app/models/coo_img.rb | 0 app/models/cooperation.rb | 0 app/models/course.rb | 0 app/models/course_activity.rb | 0 app/models/course_attachment.rb | 0 app/models/course_contributor_score.rb | 0 app/models/course_group.rb | 1 - app/models/course_homework_category.rb | 4 +- app/models/course_homework_statistics.rb | 0 app/models/course_infos.rb | 0 app/models/course_list.rb | 0 app/models/course_message.rb | 0 app/models/course_module.rb | 0 app/models/course_status.rb | 0 app/models/custom_field.rb | 0 app/models/custom_field_value.rb | 0 app/models/custom_value.rb | 0 app/models/customer.rb | 6 - app/models/data_exception.rb | 0 app/models/department.rb | 2 +- app/models/department_member.rb | 0 app/models/discipline_category.rb | 0 app/models/discuss.rb | 0 app/models/document.rb | 0 app/models/document_category.rb | 0 app/models/document_category_custom_field.rb | 0 app/models/dts.rb | 0 .../ec_achievement_evaluation_relate.rb | 0 app/models/ec_course.rb | 0 app/models/ec_course_achievement_method.rb | 0 app/models/ec_course_evaluation.rb | 0 app/models/ec_course_evaluation_subitem.rb | 0 app/models/ec_course_student_score.rb | 0 app/models/ec_course_support.rb | 0 app/models/ec_course_target.rb | 0 app/models/ec_course_user.rb | 0 app/models/ec_discipline.rb | 0 app/models/ec_discipline_first.rb | 0 app/models/ec_graduation_requirement.rb | 0 .../ec_graduation_requirement_calculation.rb | 0 app/models/ec_graduation_standard.rb | 0 app/models/ec_graduation_subitem.rb | 0 app/models/ec_graduation_subitem_course.rb | 0 .../ec_graduation_subitem_course_target.rb | 0 app/models/ec_major.rb | 0 app/models/ec_major_course.rb | 0 app/models/ec_major_school.rb | 0 app/models/ec_major_school_user.rb | 0 app/models/ec_require_sub_vs_standard.rb | 0 app/models/ec_requirement_vs_objective.rb | 0 app/models/ec_school_user.rb | 0 app/models/ec_score_level.rb | 0 app/models/ec_student_achievement.rb | 0 app/models/ec_student_score_target.rb | 0 app/models/ec_template.rb | 0 app/models/ec_training_objective.rb | 0 app/models/ec_training_subitem.rb | 0 app/models/ec_year.rb | 0 app/models/ec_year_student.rb | 0 app/models/ecloud.rb | 11 - app/models/ecloud_log.rb | 3 - app/models/ecloud_productpara.rb | 4 - app/models/ecloud_service.rb | 6 - app/models/ecloud_serviece_servicepara.rb | 5 - app/models/ecloud_user.rb | 3 - app/models/ecloud_user_para.rb | 3 - app/models/ecloud_users.rb | 4 - app/models/editor_of_document.rb | 0 app/models/enabled_module.rb | 0 app/models/enumeration.rb | 0 app/models/error_check.rb | 0 app/models/evaluate_record.rb | 0 app/models/exercise.rb | 0 app/models/exercise_answer.rb | 0 app/models/exercise_answer_comment.rb | 0 app/models/exercise_bank.rb | 0 app/models/exercise_bank_choice.rb | 0 app/models/exercise_bank_question.rb | 0 app/models/exercise_bank_shixun_challenge.rb | 0 app/models/exercise_bank_standard_answer.rb | 0 app/models/exercise_choice.rb | 0 app/models/exercise_group_setting.rb | 0 app/models/exercise_level_setting.rb | 0 app/models/exercise_question.rb | 0 app/models/exercise_shixun_answer.rb | 0 app/models/exercise_shixun_challenge.rb | 0 app/models/exercise_standard_answer.rb | 0 app/models/exercise_user.rb | 0 app/models/exercise_user_question.rb | 0 app/models/experience.rb | 0 app/models/first_level_discipline.rb | 0 app/models/first_page.rb | 0 app/models/forge_activity.rb | 0 app/models/forge_message.rb | 0 app/models/forum.rb | 0 app/models/forward.rb | 0 app/models/game.rb | 0 app/models/game_code.rb | 0 app/models/game_outputs.rb | 0 app/models/gitlab_url.rb | 0 app/models/grade.rb | 0 app/models/graduation_group.rb | 0 app/models/graduation_task.rb | 0 .../graduation_task_group_assignation.rb | 0 app/models/graduation_topic.rb | 0 app/models/graduation_work.rb | 0 .../graduation_work_comment_assignation.rb | 0 app/models/graduation_work_score.rb | 0 app/models/group.rb | 0 app/models/group_custom_field.rb | 0 app/models/help.rb | 0 app/models/homepage.rb | 0 app/models/homework_attach.rb | 0 app/models/homework_bank.rb | 0 app/models/homework_bank_sample.rb | 0 app/models/homework_bank_shixun.rb | 0 app/models/homework_bank_test.rb | 0 app/models/homework_challenge_setting.rb | 0 app/models/homework_common.rb | 24 +- app/models/homework_commons_shixuns.rb | 0 app/models/homework_detail_group.rb | 0 app/models/homework_detail_manual.rb | 0 app/models/homework_detail_programing.rb | 0 app/models/homework_evaluation.rb | 0 app/models/homework_for_course.rb | 0 app/models/homework_group_review.rb | 0 app/models/homework_group_setting.rb | 0 app/models/homework_reference_answer.rb | 0 app/models/homework_review_result.rb | 0 app/models/homework_sample.rb | 0 app/models/homework_test.rb | 0 app/models/homework_user.rb | 0 app/models/import_course_user.rb | 0 app/models/import_student.rb | 0 app/models/inform.rb | 0 app/models/invite_list.rb | 0 app/models/issue.rb | 0 app/models/issue_category.rb | 0 app/models/issue_custom_field.rb | 0 app/models/issue_observer.rb | 0 app/models/issue_overdue.rb | 0 app/models/issue_priority.rb | 0 app/models/issue_priority_custom_field.rb | 0 app/models/issue_query.rb | 0 app/models/issue_relation.rb | 0 app/models/issue_status.rb | 0 app/models/join_in_competition.rb | 0 app/models/join_in_contest.rb | 0 app/models/journal.rb | 0 app/models/journal_detail.rb | 0 app/models/journal_observer.rb | 0 app/models/journal_reply.rb | 0 app/models/journals_for_message.rb | 0 app/models/journals_for_message_observer.rb | 0 app/models/kindeditor/asset.rb | 0 app/models/kindeditor/file.rb | 0 app/models/kindeditor/flash.rb | 0 app/models/kindeditor/image.rb | 0 app/models/kindeditor/media.rb | 0 app/models/local_challenge.rb | 6 +- app/models/local_challenge_tag.rb | 6 +- app/models/local_mirror_repository.rb | 6 +- app/models/local_setting.rb | 0 app/models/local_shixun.rb | 6 +- app/models/local_shixun_tag_repertoire.rb | 4 +- app/models/local_test_set.rb | 6 +- app/models/mail_handler.rb | 0 app/models/mailer.rb | 0 app/models/major.rb | 0 app/models/major_course.rb | 0 app/models/mark_down.rb | 0 app/models/member.rb | 0 app/models/member_role.rb | 0 app/models/memo.rb | 0 app/models/memo_message.rb | 0 app/models/memo_tag_repertoire.rb | 0 app/models/message.rb | 5 - app/models/message_all.rb | 0 app/models/mirror_migrate_error.rb | 0 app/models/mirror_operation_record.rb | 0 app/models/mirror_repository.rb | 0 app/models/mirror_repository_type.rb | 0 app/models/mirror_script.rb | 0 app/models/mirror_type.rb | 0 app/models/mirror_update_record.rb | 0 app/models/mul_test.rb | 0 app/models/myshixun.rb | 4 +- app/models/myshixun_member.rb | 0 app/models/news.rb | 0 app/models/no_use.rb | 0 app/models/notificationcomment.rb | 0 app/models/oauth.rb | 53 - app/models/oauth_config.rb | 3 - app/models/onclick_time.rb | 0 app/models/open_source_project.rb | 0 app/models/option_number.rb | 0 app/models/org_activity.rb | 0 app/models/org_course.rb | 0 app/models/org_document_comment.rb | 0 app/models/org_member.rb | 0 app/models/org_member_role.rb | 0 app/models/org_message.rb | 0 app/models/org_project.rb | 0 app/models/org_subfield.rb | 0 app/models/org_subfield_message.rb | 0 app/models/organization.rb | 0 app/models/output.rb | 0 app/models/partner.rb | 8 - app/models/phone_app_version.rb | 0 app/models/platform_sample.rb | 0 app/models/poll.rb | 0 app/models/poll_answer.rb | 0 app/models/poll_group_setting.rb | 0 app/models/poll_question.rb | 0 app/models/poll_user.rb | 0 app/models/poll_vote.rb | 0 app/models/portal_image.rb | 0 app/models/praise_tread.rb | 0 app/models/praise_tread_cache.rb | 0 app/models/principal.rb | 0 app/models/principal_activity.rb | 0 app/models/private_message.rb | 0 app/models/professional_level.rb | 0 app/models/project.rb | 0 app/models/project_custom_field.rb | 0 app/models/project_info.rb | 0 app/models/project_score.rb | 0 app/models/project_status.rb | 0 app/models/project_tags.rb | 0 app/models/projecting_softapplication.rb | 0 app/models/pull_request.rb | 0 app/models/quality_analysis.rb | 0 app/models/query.rb | 0 app/models/question_bank.rb | 0 app/models/reference_material.rb | 0 app/models/relative_memo.rb | 0 .../relative_memo_to_open_source_project.rb | 0 app/models/rep_statics.rb | 0 app/models/repertoire.rb | 0 app/models/reply_for_journal.rb | 0 app/models/repository.rb | 0 app/models/repository/bazaar.rb | 0 app/models/repository/cvs.rb | 0 app/models/repository/darcs.rb | 0 app/models/repository/filesystem.rb | 0 app/models/repository/git.rb | 0 app/models/repository/gitlab.rb | 0 app/models/repository/mercurial.rb | 0 app/models/repository/subversion.rb | 0 app/models/resource_bank.rb | 0 app/models/role.rb | 0 app/models/run_code_message.rb | 5 - app/models/school.rb | 48 +- app/models/school_image.rb | 0 app/models/score_indicator.rb | 0 app/models/score_indicator_quality.rb | 0 app/models/score_quality_description.rb | 0 app/models/score_set.rb | 0 app/models/secdomain.rb | 0 app/models/seems_rateable_rates.rb | 0 app/models/setting.rb | 0 app/models/share.rb | 0 app/models/shield_activity.rb | 0 app/models/shield_wechat_message.rb | 0 app/models/shixun.rb | 16 +- app/models/shixun_major_course.rb | 0 app/models/shixun_member.rb | 0 app/models/shixun_mirror_repository.rb | 0 app/models/shixun_modify.rb | 0 app/models/shixun_port.rb | 0 app/models/shixun_school.rb | 0 app/models/shixun_tag_repertoire.rb | 2 +- app/models/shixun_tags.rb | 0 app/models/softapplication.rb | 0 app/models/sonar_analysis.rb | 0 app/models/sonar_error.rb | 0 app/models/sso.rb | 0 app/models/stage.rb | 0 app/models/stage_shixun.rb | 0 app/models/statistic.rb | 0 app/models/statistic_score.rb | 0 app/models/student_graduation_topic.rb | 0 app/models/student_work.rb | 41 +- app/models/student_work_project.rb | 0 app/models/student_work_test.rb | 0 .../student_works_evaluation_distribution.rb | 0 app/models/student_works_score.rb | 0 app/models/student_works_scores_appeal.rb | 0 app/models/students_for_course.rb | 0 app/models/sub_document_comment.rb | 0 app/models/sub_domain.rb | 0 app/models/sub_repertoire.rb | 0 app/models/subfield_subdomain_dir.rb | 0 app/models/subject.rb | 3 +- app/models/subject_level_system.rb | 7 - app/models/subject_member.rb | 0 app/models/syllabus.rb | 0 app/models/syllabus_member.rb | 0 app/models/syllabus_update_record.rb | 0 app/models/system_message.rb | 0 app/models/system_update_notice.rb | 0 app/models/tag_repertoire.rb | 0 app/models/teacher.rb | 0 app/models/teacher_course_group.rb | 0 app/models/team_member.rb | 0 app/models/test_set.rb | 0 app/models/tiding.rb | 0 app/models/time_entry.rb | 0 app/models/time_entry_activity.rb | 0 .../time_entry_activity_custom_field.rb | 0 app/models/time_entry_custom_field.rb | 0 app/models/time_entry_query.rb | 0 app/models/token.rb | 0 app/models/tracker.rb | 0 app/models/training.rb | 0 app/models/training_payinfo.rb | 0 app/models/training_task.rb | 0 app/models/user.rb | 56 +- app/models/user_actions.rb | 0 app/models/user_activity.rb | 0 app/models/user_custom_field.rb | 0 app/models/user_day_certification.rb | 0 app/models/user_extensions.rb | 0 app/models/user_feedback_message.rb | 0 app/models/user_grade.rb | 0 app/models/user_hidden_module.rb | 0 app/models/user_levels.rb | 0 app/models/user_preference.rb | 0 app/models/user_score.rb | 0 app/models/user_score_details.rb | 0 app/models/user_search.rb | 0 app/models/user_status.rb | 0 app/models/user_system_notice.rb | 0 app/models/user_wechat.rb | 0 app/models/verification_code.rb | 0 app/models/version.rb | 0 app/models/version_custom_field.rb | 0 app/models/visitor.rb | 0 app/models/watcher.rb | 0 app/models/watchers_of_projects.rb | 0 app/models/watchers_of_user.rb | 0 app/models/web_footer_company.rb | 0 app/models/web_footer_oranizer.rb | 0 app/models/webssh.rb | 0 app/models/wechat_log.rb | 0 app/models/wechat_pay.rb | 0 app/models/wiki.rb | 0 app/models/wiki_content.rb | 0 app/models/wiki_content_observer.rb | 0 app/models/wiki_page.rb | 0 app/models/wiki_redirect.rb | 0 app/models/work.rb | 0 app/models/work_detail_group.rb | 0 app/models/work_detail_manual.rb | 0 app/models/workflow_permission.rb | 0 app/models/workflow_rule.rb | 0 app/models/workflow_transition.rb | 0 app/models/works_category.rb | 0 app/models/zip_pack.rb | 0 app/models/接口理解文档.md | 0 app/services/careers_service.rb | 0 app/services/comment_service.rb | 0 app/services/contests_service.rb | 0 app/services/courses_service.rb | 0 app/services/discusses_service.rb | 0 app/services/ecloud_service.rb | 7 - app/services/games_service.rb | 24 +- app/services/homework_service.rb | 0 app/services/memos_service.rb | 0 app/services/projects_service.rb | 0 app/services/resources_service.rb | 0 app/services/review_service.rb | 0 app/services/shixuns_service.rb | 18 +- app/services/sources_service.rb | 0 app/services/syllabuses_service.rb | 0 app/services/users_service.rb | 0 app/services/watches_service.rb | 0 app/services/wechat_service.rb | 0 app/services/zip_service.rb | 0 app/sweepers/NOTEMPTY | 0 app/tasks/destroy_repository_task.rb | 0 app/tasks/office_conver_task.rb | 0 app/views/account/_about_us_show.html.erb | 0 app/views/account/_agreement_show.erb | 0 .../account/_certification_one_day.html.erb | 2 +- app/views/account/_change_user_email.html.erb | 0 app/views/account/_contact_us_show.html.erb | 0 .../account/_cooperative_partner_show.erb | 0 app/views/account/_copyright_info.html.erb | 0 .../account/_experience_record_list.html.erb | 0 app/views/account/_gold_record_list.html.erb | 0 .../account/_has_authentication.html.erb | 2 +- app/views/account/_help_center_show.html.erb | 0 app/views/account/_login.html.erb | 2 +- app/views/account/_new_coop.html.erb | 0 app/views/account/_new_or_edit.html.erb | 0 .../account/_pro_certification_form.html.erb | 7 +- app/views/account/_suggest_show.html.erb | 141 +- app/views/account/_update_comfirm.html.erb | 0 app/views/account/_user_auth_form.html.erb | 0 .../account/_user_update_notice.html.erb | 0 app/views/account/agreement.js.erb | 0 app/views/account/apply_trail.js.erb | 0 app/views/account/authentication.html.erb | 0 app/views/account/avatar.html.erb | 0 app/views/account/bind_email.html.erb | 0 app/views/account/cancel_pro_apply.js.erb | 0 app/views/account/change_or_bind.html.erb | 0 app/views/account/change_psd.html.erb | 0 app/views/account/email_activation.html.erb | 0 app/views/account/email_valid.html.erb | 0 app/views/account/experience_record.html.erb | 0 app/views/account/experience_record.js.erb | 0 app/views/account/gold_record.html.erb | 0 app/views/account/gold_record.js.erb | 0 app/views/account/help.html.erb | 2 +- app/views/account/help.js.erb | 0 app/views/account/insert_suggest.js.erb | 0 app/views/account/login.html.erb | 9 + app/views/account/login.js.erb | 0 app/views/account/logout.html.erb | 0 app/views/account/lost_password.html.erb | 2 +- app/views/account/password_recovery.html.erb | 0 app/views/account/phone_bind.html.erb | 0 .../professional_certification.html.erb | 8 +- app/views/account/reset_psd.html.erb | 0 app/views/account/reset_psd.js.erb | 6 +- app/views/account/security_settings.html.erb | 0 app/views/account/update_help.js.erb | 0 app/views/account/user_info.html.erb | 14 - app/views/account/user_join.html.erb | 2 +- app/views/account/wechat_bind.html.erb | 0 app/views/activities/index.html.erb | 0 .../activity_notifys/chang_read_flag.html.erb | 0 app/views/admin/_all_schools.html.erb | 0 .../admin/_audit_authentication_list.html.erb | 0 app/views/admin/_authentication_list.html.erb | 0 app/views/admin/_course_detail_tr.html.erb | 0 .../admin/_courselist_detail_tr.html.erb | 0 app/views/admin/_menu.html.erb | 0 app/views/admin/_no_data.html.erb | 0 app/views/admin/_rename_course_name.html.erb | 0 .../admin/_rename_syllabus_title.html.erb | 0 app/views/admin/_tab_applied_departments.erb | 0 app/views/admin/_tab_excellent_courses.erb | 0 app/views/admin/_tab_has_applied_applied.erb | 0 app/views/admin/_tab_messages.erb | 0 app/views/admin/_tab_partial.html.erb | 0 app/views/admin/_tab_syllabuses_courses.erb | 0 app/views/admin/_tab_users.erb | 0 app/views/admin/_update_school_form.html.erb | 0 app/views/admin/agree_authentication.js.erb | 0 app/views/admin/all_schools.js.erb | 0 app/views/admin/applied_departments.html.erb | 0 app/views/admin/applied_schools.html.erb | 0 app/views/admin/apply_for_homework.html.erb | 0 app/views/admin/code_work_tests.html.erb | 0 app/views/admin/contest_page_made.html.erb | 0 app/views/admin/contests.html.erb | 0 app/views/admin/course_messages.html.erb | 0 app/views/admin/course_page_made.html.erb | 0 app/views/admin/course_resource_list.html.erb | 0 app/views/admin/courses.html.erb | 0 app/views/admin/create_syllabus.js.erb | 0 app/views/admin/enterprise_page_made.html.erb | 0 .../admin/excellent_all_courses.html.erb | 0 app/views/admin/excellent_courses.html.erb | 0 app/views/admin/first_page_made.html.erb | 0 .../admin/has_applied_departments.html.erb | 0 app/views/admin/has_applied_schools.html.erb | 0 app/views/admin/homework.html.erb | 0 .../admin/identity_authentication.html.erb | 0 .../admin/identity_authentication.js.erb | 0 app/views/admin/index.html.erb | 0 app/views/admin/info.html.erb | 0 .../admin/latest_login_teachers.html.erb | 0 app/views/admin/latest_login_users.html.erb | 0 app/views/admin/leave_messages.html.erb | 0 app/views/admin/messages.html.erb | 0 app/views/admin/messages_list.html.erb | 0 app/views/admin/mobile_version.html.erb | 0 app/views/admin/non_syllabus_courses.html.erb | 0 app/views/admin/notices.html.erb | 0 app/views/admin/organization.html.erb | 0 app/views/admin/plugins.html.erb | 0 app/views/admin/project_messages.html.erb | 0 app/views/admin/project_page_made.html.erb | 0 .../admin/project_resource_list.html.erb | 0 app/views/admin/projects.html.erb | 0 app/views/admin/schools.html.erb | 0 app/views/admin/search.html.erb | 0 app/views/admin/set_excellent_course.js.erb | 0 app/views/admin/shixun_authentication.js.erb | 0 app/views/admin/shixuns.html.erb | 0 app/views/admin/syllabuses.html.erb | 0 app/views/admin/update_course_name.js.erb | 0 app/views/admin/update_syllabus_title.js.erb | 0 app/views/admin/users.html.erb | 0 app/views/admin/web_footer_made.html.erb | 0 .../_applied_join_project.html.erb | 0 .../_applied_project_tip.html.erb | 0 app/views/applied_project/_set_applied.js.erb | 0 .../applied_join_project.js.erb | 0 .../applied_project_info.js.erb | 0 .../apply_project_masters/_form.html.erb | 0 .../apply_project_masters/_set_apply.js.erb | 0 app/views/apply_project_masters/edit.html.erb | 0 .../apply_project_masters/index.html.erb | 0 app/views/apply_project_masters/new.html.erb | 0 app/views/apply_project_masters/show.html.erb | 0 .../article_homepages/_article_form.html.erb | 0 .../article_homepages/_article_show.html.erb | 0 app/views/article_homepages/edit.html.erb | 0 app/views/article_homepages/new.html.erb | 0 app/views/article_homepages/show.html.erb | 0 app/views/at/show.json.erb | 0 .../attachments/_activity_attach.html.erb | 0 app/views/attachments/_app_link.html.erb | 0 .../_attachment_history_download.html.erb | 0 .../attachments/_course_file_links.html.erb | 0 .../attachments/_course_type_edit.html.erb | 0 app/views/attachments/_form.html.erb | 0 .../attachments/_form_attachments.html.erb | 0 app/views/attachments/_form_course.html.erb | 0 app/views/attachments/_form_project.html.erb | 0 .../attachments/_form_project_new.html.erb | 0 .../attachments/_homework_jour_link.html.erb | 0 app/views/attachments/_issue_reply.html.erb | 0 app/views/attachments/_links.html.erb | 0 app/views/attachments/_new_form.html.erb | 0 .../attachments/_project_file_links.html.erb | 0 .../_show_attachment_history.html.erb | 0 .../_show_attachment_history_delete.html.erb | 0 app/views/attachments/_temp.html.erb | 0 app/views/attachments/_type_edit.html.erb | 0 .../_update_publish_time_box.html.erb | 0 .../_upload_attachment_new_version.html.erb | 0 .../add_exist_file_to_course.js.erb | 0 .../add_exist_file_to_courses.js.erb | 0 .../add_exist_file_to_org_subfield.js.erb | 0 .../add_exist_file_to_project.js.erb | 0 .../add_exist_file_to_projects.js.erb | 0 .../attachment_history_download.js.erb | 0 .../attachments/attachment_versions.js.erb | 0 .../attachment_versions_delete.js.erb | 0 app/views/attachments/autocomplete.js.erb | 0 app/views/attachments/delete.js.erb | 0 .../delete_softapplications.js.erb | 0 app/views/attachments/destroy.js.erb | 0 app/views/attachments/diff.html.erb | 0 app/views/attachments/file.html.erb | 0 app/views/attachments/renderTag.js.erb | 0 app/views/attachments/show.api.rsb | 0 app/views/attachments/updateFileDense.js.erb | 0 .../update_attachment_publish_time.js.erb | 0 .../attachments/update_file_dense.js.erb | 0 app/views/attachments/upload.api.rsb | 0 app/views/attachments/upload.js.erb | 0 .../upload_attachment_version.js.erb | 0 app/views/auth_sources/_form.html.erb | 0 .../_form_auth_source_ldap.html.erb | 0 app/views/auth_sources/edit.html.erb | 0 app/views/auth_sources/index.html.erb | 0 app/views/auth_sources/new.html.erb | 0 app/views/auto_completes/issues.html.erb | 0 app/views/avatar/_avatar_form.html.erb | 0 app/views/avatar/_avatar_preview.html.erb | 0 app/views/avatar/_new_avatar_form.html.erb | 0 .../avatar/_new_contest_avatar_form.html.erb | 0 app/views/avatar/delete_image.js.erb | 0 app/views/avatar/upload.js.erb | 0 app/views/bids/_alert_anonyoms.html.erb | 0 app/views/bids/_app_link.html.erb | 0 app/views/bids/_attachment.html.erb | 0 app/views/bids/_bid_homework_show.html.erb | 0 app/views/bids/_bid_show.html.erb | 0 app/views/bids/_contest_show.html.erb | 0 app/views/bids/_form.html.erb | 0 app/views/bids/_history.html.erb | 0 app/views/bids/_homework.html.erb | 0 app/views/bids/_homework_form.html.erb | 0 app/views/bids/_homework_list.html.erb | 0 app/views/bids/_list_projects.html.erb | 0 app/views/bids/_new.html.erb | 0 app/views/bids/_new_bid.html.erb | 0 app/views/bids/_new_homework_form.html.erb | 0 app/views/bids/_new_join.html.erb | 0 app/views/bids/_pre_show.html.erb | 0 app/views/bids/_project_homework.html.erb | 0 app/views/bids/_project_list.html.erb | 0 app/views/bids/_set_join.js.erb | 0 app/views/bids/add.js.erb | 0 app/views/bids/add_homework.js.erb | 0 app/views/bids/alert_anonymous_comment.js.erb | 0 app/views/bids/back.js.erb | 0 app/views/bids/contest.html.erb | 0 app/views/bids/create.js.erb | 0 app/views/bids/destroy.js.erb | 0 app/views/bids/edit.html.erb | 0 app/views/bids/fork.html.erb | 0 app/views/bids/homework_ajax_modal.js.erb | 0 app/views/bids/homework_respond.html.erb | 0 app/views/bids/homework_statistics.html.erb | 0 app/views/bids/index.html.erb | 0 app/views/bids/more.js.erb | 0 app/views/bids/new.js.erb | 0 app/views/bids/new_bid.html.erb | 0 app/views/bids/new_bid.js.erb | 0 app/views/bids/new_contest.html.erb | 0 app/views/bids/new_join.js.erb | 0 app/views/bids/new_submit_homework.html.erb | 0 app/views/bids/set_reward.js.erb | 0 app/views/bids/settings.html.erb | 0 app/views/bids/show.html.erb | 0 app/views/bids/show_bid_project.html.erb | 0 app/views/bids/show_course.html.erb | 0 app/views/bids/show_courseEx.html.erb | 0 .../bids/show_document_homework.html.erb | 0 app/views/bids/show_participator.html.erb | 0 app/views/bids/show_project.html.erb | 0 app/views/bids/show_project_homework.html.erb | 0 app/views/bids/start_anonymous_comment.js.erb | 0 app/views/bids/stop_anonymous_comment.js.erb | 0 .../blog_comments/_attachments_links.html.erb | 0 app/views/blog_comments/_blog_attachments.erb | 0 .../_blog_comment_show_replies.html.erb | 0 app/views/blog_comments/_edit.html.erb | 0 app/views/blog_comments/_new.html.erb | 0 app/views/blog_comments/_reply_form.html.erb | 0 .../_simple_ke_reply_form.html.erb | 0 app/views/blog_comments/destroy.js.erb | 0 app/views/blog_comments/edit.html.erb | 0 app/views/blog_comments/quote.js.erb | 0 app/views/blog_comments/reply.js.erb | 0 app/views/blog_comments/show.html.erb | 0 app/views/blog_comments/show.js.erb | 0 app/views/blogs/_article.html.erb | 0 app/views/blogs/_article_list.html.erb | 0 app/views/blogs/_homepage.html.erb | 0 app/views/blogs/index.html.erb | 0 app/views/blogs/index.js.erb | 0 app/views/blogs/show.html.erb | 0 app/views/boards/_contest_boardlist.html.erb | 0 .../boards/_contest_message_edit.html.erb | 0 app/views/boards/_contest_new.html.erb | 0 app/views/boards/_contest_show.html.erb | 0 .../boards/_contest_show_detail.html.erb | 0 .../boards/_course_message_edit.html.erb | 0 app/views/boards/_course_new.html.erb | 0 app/views/boards/_course_show.html.erb | 0 app/views/boards/_course_show_detail.html.erb | 0 app/views/boards/_edit.html.erb | 0 app/views/boards/_form.html.erb | 0 app/views/boards/_form_course.html.erb | 0 app/views/boards/_form_project.html.erb | 0 .../_org_subfield_message_edit.html.erb | 0 app/views/boards/_org_subfield_new.html.erb | 0 .../boards/_project_message_edit.html.erb | 0 app/views/boards/_project_new.html.erb | 0 app/views/boards/_project_new_topic.html.erb | 0 app/views/boards/_project_show.html.erb | 0 .../boards/_project_show_detail.html.erb | 0 app/views/boards/create.js.erb | 0 app/views/boards/destroy.js.erb | 0 app/views/boards/edit.html.erb | 0 app/views/boards/index.html.erb | 0 app/views/boards/new.html.erb | 0 app/views/boards/show.html.erb | 0 app/views/boards/show.js.erb | 0 app/views/boards/update_boards_name.js.erb | 0 .../boards/update_boards_position.js.erb | 0 app/views/boards/update_name.js.erb | 0 app/views/boards/update_position.js.erb | 3 +- app/views/calendars/show.html.erb | 0 .../challenges/_add_choose_page.html.erb | 0 .../challenges/_add_testsetting_page.html.erb | 0 app/views/challenges/_answer_form.html.erb | 0 app/views/challenges/_answer_show.html.erb | 0 app/views/challenges/_challenge_tags.html.erb | 0 .../challenges/_challenges_left_nav.html.erb | 4 +- .../challenges/_challenges_right.html.erb | 12 +- .../challenges/_challenges_tab_nav.html.erb | 0 app/views/challenges/_choose_tab.html.erb | 0 app/views/challenges/_choose_type.html.erb | 0 app/views/challenges/_content_list.html.erb | 10 +- app/views/challenges/_edit_answer.html.erb | 0 .../challenges/_edit_answer_page.html.erb | 0 .../challenges/_edit_choose_page.html.erb | 0 .../challenges/_edit_evaluating.html.erb | 0 .../challenges/_edit_evaluating_page.html.erb | 8 +- .../challenges/_edit_propaedeutics.html.erb | 0 app/views/challenges/_edit_scoring.html.erb | 0 app/views/challenges/_edit_skill.html.erb | 0 app/views/challenges/_edit_task_page.html.erb | 0 app/views/challenges/_edit_task_pass.html.erb | 0 app/views/challenges/_evaluate_show.html.erb | 0 .../challenges/_evaluating_form.html.erb | 0 app/views/challenges/_form.html.erb | 0 .../_new_or_edit_task_page.html.erb | 0 app/views/challenges/_pass_task_show.html.erb | 0 .../challenges/_propaedeutics_form.html.erb | 0 app/views/challenges/_score_form.html.erb | 0 .../_single_or_multiple_question.html.erb | 0 ..._single_or_multiple_question_show.html.erb | 0 app/views/challenges/_skill_form.html.erb | 0 app/views/challenges/_task_edit_page.html.erb | 0 app/views/challenges/_task_pass_form.html.erb | 0 .../_uploading_attachments.html.erb | 0 .../challenges/add_choose_question.js.erb | 0 app/views/challenges/choose_type_show.js.erb | 0 .../challenges/create_choose_question.js.erb | 7 +- app/views/challenges/destroy.js.erb | 0 app/views/challenges/edit.html.erb | 0 app/views/challenges/edit.js.erb | 0 .../challenges/edit_choose_question.js.erb | 0 app/views/challenges/index.html.erb | 4 +- app/views/challenges/index_down.js.erb | 0 app/views/challenges/index_up.js.erb | 0 app/views/challenges/new.html.erb | 0 .../challenges/new_choose_question.js.erb | 0 .../new_or_edit_choose_question.js.erb | 0 app/views/challenges/show.html.erb | 0 .../challenges/show_choose_question.js.erb | 0 .../challenges/update_choose_question.js.erb | 0 .../colleges/_course_statistics.html.erb | 0 app/views/colleges/_student_eval.html.erb | 0 app/views/colleges/_student_shixun.html.erb | 0 app/views/colleges/course_statistics.js.erb | 0 .../colleges/engineering_capability.js.erb | 0 app/views/colleges/online_school.js.erb | 0 app/views/colleges/statistics.html.erb | 0 app/views/colleges/student_eval.js.erb | 0 app/views/colleges/student_shixun.js.erb | 0 .../comments/_simple_ke_reply_form.html.erb | 0 app/views/comments/create.js.erb | 0 app/views/comments/destroy.js.erb | 0 app/views/comments/quote.js.erb | 0 app/views/comments/reply.js.erb | 0 app/views/common/403.html | 0 app/views/common/404.html | 0 app/views/common/_calendar.html.erb | 0 app/views/common/_diff.html.erb | 0 app/views/common/_extend_file.html.erb | 0 app/views/common/_file.html.erb | 0 app/views/common/_preview.html.erb | 0 app/views/common/_project.html.erb | 0 app/views/common/_project_tab.html.erb | 0 app/views/common/_tabs.html.erb | 0 app/views/common/error.html.erb | 0 app/views/common/error_messages.api.rsb | 0 app/views/common/feed.atom.builder | 0 app/views/common/index.html.erb | 2 +- .../_competition_team_form.html.erb | 0 app/views/competition_teams/_edit.html.erb | 0 .../_search_member_list.html.erb | 0 .../_search_teacher_list.html.erb | 0 .../_search_user_block.html.erb | 0 app/views/competition_teams/create.js.erb | 0 app/views/competition_teams/edit.js.erb | 0 app/views/competition_teams/exit_team.js.erb | 0 app/views/competition_teams/join_team.js.erb | 0 app/views/competition_teams/new.js.erb | 0 .../competition_teams/personal_enroll.js.erb | 0 .../competition_teams/search_non_user.js.erb | 0 .../competition_teams/search_teacher.js.erb | 0 app/views/competition_teams/update.js.erb | 0 .../competitions/_add_announcement.html.erb | 0 .../competitions/_add_md_contents.html.erb | 0 .../_annotation_2018_competition.html.erb | 0 .../competitions/_ccf_competition.html.erb | 0 app/views/competitions/_chartList.html.erb | 0 app/views/competitions/_edit_rule.html.erb | 0 .../competitions/_enroll_createTeam.html.erb | 0 app/views/competitions/_header.html.erb | 0 .../competitions/_hn_competition.html.erb | 0 .../competitions/_qg_competition.html.erb | 0 app/views/competitions/_show_rule.html.erb | 0 app/views/competitions/_team_list.html.erb | 0 app/views/competitions/charts.html.erb | 0 app/views/competitions/charts.js.erb | 0 .../competitions/competition_images.js.erb | 0 .../competitions/competition_setting.js.erb | 0 app/views/competitions/db.html.erb | 0 .../delete_competition_stage.js.erb | 0 .../competitions/delete_stage_section.js.erb | 0 app/views/competitions/edit_inform.html.erb | 0 .../competitions/edit_md_content.html.erb | 0 app/views/competitions/edit_rule.js.erb | 0 app/views/competitions/enroll.html.erb | 0 app/views/competitions/enroll.js.erb | 0 app/views/competitions/home.html.erb | 0 app/views/competitions/index.html.erb | 0 app/views/competitions/informs.html.erb | 0 app/views/competitions/md_content.html.erb | 0 .../competitions/new_competition_stage.js.erb | 0 app/views/competitions/new_inform.html.erb | 0 .../competitions/new_stage_section.js.erb | 0 app/views/competitions/online_switch.js.erb | 0 app/views/competitions/send_message.js.erb | 0 app/views/competitions/show.html.erb | 0 .../update_competition_stage.js.erb | 0 .../competitions/update_stage_section.js.erb | 0 .../contest_member_autocomplete.js.erb | 0 app/views/contest_members/create.js.erb | 0 app/views/contest_members/destroy.js.erb | 0 app/views/contest_members/update.js.erb | 0 .../contestant_works/_add_score.html.erb | 0 .../_choose_group_member.html.erb | 0 .../_contest_evaluation_group.html.erb | 0 .../_contest_evaluation_group_work.html.erb | 0 .../_contest_evaluation_title.html.erb | 0 .../_contest_evaluation_un_group.html.erb | 0 ..._contest_evaluation_un_group_work.html.erb | 0 .../_contest_evaluation_un_title.html.erb | 0 .../_contest_evaluation_un_work.html.erb | 0 .../_contest_evaluation_work.html.erb | 0 .../_contest_work_attachments_status.html.erb | 0 .../_contestant_work_attachment.html.erb | 0 .../_contestant_work_list.html.erb | 0 .../_contestant_work_score.html.erb | 0 .../_contestant_work_score_records.html.erb | 0 .../_has_commit_work.html.erb | 0 .../contestant_works/_relate_project.html.erb | 0 .../_relate_projects.html.erb | 0 app/views/contestant_works/_show.html.erb | 0 .../_work_edit_information.html.erb | 0 .../_work_information.html.erb | 0 .../_work_post_brief.html.erb | 0 app/views/contestant_works/add_score.js.erb | 0 .../cancel_relate_project.js.erb | 0 app/views/contestant_works/create.js.erb | 0 app/views/contestant_works/edit.html.erb | 0 app/views/contestant_works/index.html.erb | 0 app/views/contestant_works/new.html.erb | 0 .../new_student_work_project.js.erb | 0 app/views/contestant_works/retry_work.js.erb | 0 .../search_contest_students.js.erb | 0 app/views/contestant_works/show.js.erb | 0 .../student_work_project.js.erb | 0 app/views/contestant_works/update.js.erb | 0 app/views/contests/_boards.html.erb | 0 app/views/contests/_contest_activity.html.erb | 0 .../contests/_contest_all_member.html.erb | 0 .../contests/_contest_base_info.html.erb | 0 .../contests/_contest_jours_list.html.erb | 0 app/views/contests/_contest_member.html.erb | 0 app/views/contests/_edit.html.erb | 0 app/views/contests/_join_contest_box.html.erb | 0 app/views/contests/_mamager_setting.html.erb | 0 app/views/contests/_members.html.erb | 0 app/views/contests/_upload_img.html.erb | 0 .../contests/contest_activities.html.erb | 0 app/views/contests/contest_activities.js.erb | 0 .../contests/dealwith_apply_request.js.erb | 0 app/views/contests/destroy.js.erb | 0 app/views/contests/feedback.html.erb | 0 app/views/contests/feedback.js.erb | 0 app/views/contests/join_contest.js.erb | 0 .../contests/join_contest_multi_role.js.erb | 0 app/views/contests/member.html.erb | 0 app/views/contests/member.js.erb | 0 app/views/contests/new.html.erb | 0 app/views/contests/private_or_public.js.erb | 0 app/views/contests/renew.js.erb | 0 .../contests/set_contest_attribute.js.erb | 0 .../contests/set_invite_code_halt.js.erb | 0 app/views/contests/settings.html.erb | 0 app/views/contests/show.html.erb | 0 app/views/contests/show.js.erb | 0 app/views/context_menus/issues.html.erb | 0 app/views/context_menus/time_entries.html.erb | 0 app/views/cooperates/_partner_item.html.erb | 41 - app/views/cooperates/partner_list.html.erb | 42 - app/views/cooperates/partner_list.js.erb | 2 - app/views/cooperation/index.html.erb | 0 app/views/courses/_act_table.html.erb | 0 app/views/courses/_add_members.html.erb | 0 .../courses/_compare_code_tips_1.html.erb | 0 .../courses/_compare_code_tips_2.html.erb | 0 .../_comprehensive_statistics.html.erb | 0 app/views/courses/_copy_course.html.erb | 0 app/views/courses/_course.html.erb | 0 app/views/courses/_courseList.html.erb | 0 app/views/courses/_course_activity.html.erb | 0 .../courses/_course_activity_content.html.erb | 0 .../courses/_course_activity_users.html.erb | 0 app/views/courses/_course_ad.html.erb | 0 .../courses/_course_board_settings.html.erb | 0 app/views/courses/_course_form.html.erb | 0 app/views/courses/_course_heroes.html.erb | 0 .../_course_homework_catagories.html.erb | 0 .../courses/_course_index_search.html.erb | 0 app/views/courses/_course_jours_list.html.erb | 0 app/views/courses/_course_member_opr.html.erb | 0 app/views/courses/_course_members.html.erb | 0 .../courses/_course_outlines_list.html.erb | 0 app/views/courses/_course_resources_html.erb | 0 app/views/courses/_course_student.html.erb | 0 app/views/courses/_course_teacher.html.erb | 0 app/views/courses/_courses_jours.html.erb | 0 .../courses/_delete_member_group.html.erb | 0 app/views/courses/_edit.html.erb | 0 app/views/courses/_groups_name.html.erb | 0 app/views/courses/_hero_table.html.erb | 0 app/views/courses/_history.html.erb | 0 app/views/courses/_homework_form.html.erb | 0 app/views/courses/_join_or_add.html.erb | 0 .../courses/_join_private_course.html.erb | 0 app/views/courses/_member.html.erb | 0 .../courses/_member_all_student_list.html.erb | 0 .../_member_group_student_list.html.erb | 0 .../_member_no_group_student_list.html.erb | 0 .../courses/_member_teacher_list.html.erb | 0 app/views/courses/_new_groups_name.html.erb | 0 app/views/courses/_new_member_list.html.erb | 0 app/views/courses/_project_table.html.erb | 0 app/views/courses/_recommendation.html.erb | 0 .../_rename_homework_category.html.erb | 0 .../courses/_search_member_list.html.erb | 0 app/views/courses/_searchmembers.html.erb | 0 app/views/courses/_set_course_time.html.erb | 0 app/views/courses/_set_join.js.erb | 0 app/views/courses/_show_compare_code.html.erb | 0 .../courses/_show_member_act_score.html.erb | 0 app/views/courses/_show_member_score.html.erb | 0 app/views/courses/_term_select.html.erb | 0 app/views/courses/_tool_expand.html.erb | 0 .../_user_homework_search_list.html.erb | 0 app/views/courses/addgroups.js.erb | 0 app/views/courses/archive_course.js.erb | 0 app/views/courses/change_manager.js.erb | 0 app/views/courses/choose_course_group.js.erb | 0 .../courses/choose_graduation_group.js.erb | 0 app/views/courses/code_repeat.html.erb | 0 app/views/courses/course_outline.js.erb | 0 app/views/courses/course_statistics.html.erb | 0 app/views/courses/course_statistics.js.erb | 0 .../courses/create_homework_category.js.erb | 0 .../courses/delete_course_students.js.erb | 0 app/views/courses/delete_member.js.erb | 0 app/views/courses/destroy.js.erb | 0 app/views/courses/feedback.html.erb | 0 app/views/courses/file.html.erb | 0 app/views/courses/finishcourse.js.erb | 0 app/views/courses/group_member.html.erb | 0 .../courses/has_group_student_list.html.erb | 0 .../courses/has_group_student_list.js.erb | 0 app/views/courses/homework_search.js.erb | 0 app/views/courses/import_course_group.js.erb | 0 app/views/courses/import_excel.js.erb | 0 app/views/courses/index.html.erb | 0 app/views/courses/index.js.erb | 2 +- app/views/courses/join.js.erb | 0 .../courses/join_course_multi_role.js.erb | 0 app/views/courses/join_group.js.erb | 0 app/views/courses/join_private_courses.js.erb | 0 app/views/courses/member.html.erb | 0 app/views/courses/member.js.erb | 0 app/views/courses/member_score_sort.js.erb | 0 app/views/courses/new.html.erb | 0 app/views/courses/new_join.js.erb | 0 .../courses/no_group_student_list.html.erb | 0 .../courses/no_group_student_list.js.erb | 0 .../courses/none_register_students.html.erb | 0 .../courses/open_or_close_os_interface.js.erb | 0 app/views/courses/private_or_public.js.erb | 0 .../courses/rename_homework_category.js.erb | 0 app/views/courses/search.html.erb | 0 .../courses/search_course_teacher_list.js.erb | 0 app/views/courses/search_member.js.erb | 0 .../courses/search_not_group_member.js.erb | 0 app/views/courses/search_not_students.js.erb | 0 app/views/courses/search_not_teachers.js.erb | 0 .../search_public_orgs_not_in_course.js.erb | 0 app/views/courses/searchgroupmembers.js.erb | 0 app/views/courses/searchmembers.js.erb | 0 app/views/courses/set_course_outline.js.erb | 0 app/views/courses/set_invite_code_halt.js.erb | 0 app/views/courses/settings.html.erb | 0 .../courses/settings/_add_students.html.erb | 0 .../courses/settings/_add_teachers.html.erb | 0 .../courses/settings/_added_orgs.html.erb | 0 .../settings/_all_student_list.html.erb | 0 .../settings/_all_student_list_block.html.erb | 0 .../courses/settings/_all_teacher_list_ul.erb | 0 .../courses/settings/_boards_list.html.erb | 0 .../courses/settings/_boards_setting.html.erb | 0 .../courses/settings/_change_manager.html.erb | 0 .../settings/_choose_course_group.html.erb | 2 +- .../courses/settings/_course_member.html.erb | 0 app/views/courses/settings/_edit.html.erb | 0 .../settings/_has_group_student_list.html.erb | 0 .../_has_group_student_list_block.html.erb | 0 .../courses/settings/_import_info.html.erb | 0 .../settings/_import_students.html.erb | 0 .../settings/_import_students_result.html.erb | 0 app/views/courses/settings/_join_org.html.erb | 0 app/views/courses/settings/_member.html.erb | 0 app/views/courses/settings/_members.html.erb | 0 .../settings/_members_addTeam.html.erb | 0 app/views/courses/settings/_moduels.html.erb | 0 .../settings/_no_group_student_list.html.erb | 0 .../_no_group_student_list_block.html.erb | 0 .../_search_not_students_list.html.erb | 0 .../_search_not_teachers_list.html.erb | 0 .../settings/_search_teacher_list.html.erb | 0 .../courses/settings/_student_table.html.erb | 0 app/views/courses/show.html.erb | 0 app/views/courses/show.js.erb | 0 app/views/courses/show_comparecode.html.erb | 0 app/views/courses/show_comparecode.js.erb | 0 .../courses/show_member_act_score.js.erb | 0 app/views/courses/show_member_score.js.erb | 0 app/views/courses/show_old.html.erb | 0 app/views/courses/statistics_course.html.erb | 0 app/views/courses/students.html.erb | 0 app/views/courses/students.js.erb | 0 app/views/courses/syllabus.html.erb | 0 app/views/courses/sync_students.js.erb | 0 app/views/courses/teacher_assign_group.js.erb | 0 .../courses/teacher_graduation_group.js.erb | 0 app/views/courses/teachers.html.erb | 0 app/views/courses/teachers.js.erb | 0 app/views/courses/unjoin_group.js.erb | 0 app/views/courses/update.js.erb | 0 app/views/courses/update_course_module.js.erb | 0 app/views/courses/updategroupname.js.erb | 0 app/views/custom_fields/_form.html.erb | 0 app/views/custom_fields/_index.html.erb | 0 app/views/custom_fields/edit.html.erb | 0 app/views/custom_fields/index.html.erb | 0 app/views/custom_fields/new.html.erb | 0 app/views/custom_fields/new.js.erb | 0 app/views/department/destroy.js.erb | 0 app/views/discusses/_dis_praise.html.erb | 0 app/views/discusses/destroy.js.erb | 0 app/views/discusses/hidden_record.js.erb | 0 app/views/documents/_document.html.erb | 0 app/views/documents/_form.html.erb | 0 app/views/documents/edit.html.erb | 0 app/views/documents/index.html.erb | 0 app/views/documents/new.html.erb | 0 app/views/documents/show.html.erb | 0 .../ec_course_evaluations/_form.html.erb | 0 app/views/ec_course_evaluations/edit.html.erb | 0 .../ec_course_evaluations/index.html.erb | 0 app/views/ec_course_evaluations/new.html.erb | 0 app/views/ec_course_evaluations/show.html.erb | 0 app/views/ec_course_supports/_form.html.erb | 0 app/views/ec_course_supports/edit.html.erb | 0 app/views/ec_course_supports/index.html.erb | 0 app/views/ec_course_supports/new.html.erb | 0 app/views/ec_course_supports/show.html.erb | 0 app/views/ec_course_targets/_form.html.erb | 0 app/views/ec_course_targets/destroy.js.erb | 0 app/views/ec_course_targets/edit.html.erb | 0 app/views/ec_course_targets/index.html.erb | 0 app/views/ec_course_targets/new.html.erb | 0 app/views/ec_course_targets/show.html.erb | 0 .../ec_courses/_correlation_course.html.erb | 0 .../_ec_course_targets_list.html.erb | 0 .../ec_courses/_search_course_list.html.erb | 0 app/views/ec_courses/add_manager.js.erb | 0 .../competition_calculation_info.html.erb | 0 .../ec_courses/correlation_course.js.erb | 0 app/views/ec_courses/create.js.erb | 0 app/views/ec_courses/delete_course.js.erb | 0 app/views/ec_courses/delete_manager.js.erb | 0 app/views/ec_courses/destroy.js.erb | 0 .../ec_course_reach_setting.html.erb | 0 .../ec_course_support_setting.html.erb | 0 app/views/ec_courses/search_courses.js.erb | 0 app/views/ec_courses/search_user.js.erb | 0 .../ec_graduation_requirements/_form.html.erb | 0 .../_requirement_lists.html.erb | 2 +- .../ec_graduation_requirements/create.js.erb | 0 .../ec_graduation_requirements/destroy.js.erb | 0 .../ec_graduation_requirements/edit.html.erb | 0 .../ec_graduation_requirements/edit.js.erb | 0 .../ec_graduation_requirements/index.html.erb | 0 .../ec_graduation_requirements/new.html.erb | 0 .../ec_graduation_requirements/show.html.erb | 0 .../ec_graduation_requirements/update.js.erb | 0 .../ec_graduation_subitems/_form.html.erb | 0 .../ec_graduation_subitems/edit.html.erb | 0 .../ec_graduation_subitems/index.html.erb | 0 app/views/ec_graduation_subitems/new.html.erb | 0 .../ec_graduation_subitems/show.html.erb | 0 .../ec_major_schools/_year_list.html.erb | 8 +- app/views/ec_major_schools/add_manager.js.erb | 0 .../ec_major_schools/delete_manager.js.erb | 0 app/views/ec_major_schools/destroy.js.erb | 0 app/views/ec_major_schools/search_user.js.erb | 0 app/views/ec_major_schools/show.html.erb | 0 app/views/ec_major_schools/show.js.erb | 0 app/views/ec_majors/_form.html.erb | 0 .../ec_majors/_major_addAcademicYear.html.erb | 2 +- app/views/ec_majors/edit.html.erb | 0 app/views/ec_majors/index.html.erb | 0 app/views/ec_majors/new.html.erb | 0 app/views/ec_majors/show.html.erb | 0 .../ec_training_objectives/_form.html.erb | 0 .../ec_training_objectives/edit.html.erb | 0 .../ec_training_objectives/index.html.erb | 0 app/views/ec_training_objectives/new.html.erb | 0 .../ec_training_objectives/show.html.erb | 0 app/views/ec_training_subitems/_form.html.erb | 0 app/views/ec_training_subitems/create.js.erb | 0 app/views/ec_training_subitems/destroy.js.erb | 0 app/views/ec_training_subitems/edit.html.erb | 0 app/views/ec_training_subitems/index.html.erb | 0 app/views/ec_training_subitems/new.html.erb | 0 app/views/ec_training_subitems/show.html.erb | 0 app/views/ec_training_subitems/update.js.erb | 0 .../ec_years/_courseSystem_addManage.html.erb | 0 app/views/ec_years/_course_addManage.html.erb | 0 app/views/ec_years/_course_lists.html.erb | 15 +- app/views/ec_years/_course_manager.html.erb | 0 .../_edit_training_objectives.html.erb | 0 .../_sub_training_objectives.html.erb | 2 +- .../_training_objective_contents.html.erb | 2 +- .../ec_years/completion_calculation.html.erb | 0 app/views/ec_years/create.js.erb | 5 +- .../create_training_objectives.js.erb | 0 app/views/ec_years/ec_course_setting.html.erb | 0 .../ec_years/edit_training_objectives.js.erb | 0 .../ec_years/graduation_requirement.html.erb | 0 app/views/ec_years/import_ec_courses.js.erb | 0 .../ec_years/requirement_vs_courses.html.erb | 0 .../requirement_vs_objective.html.erb | 2 +- .../ec_years/requirement_vs_standard.html.erb | 0 .../ec_years/training_objectives.html.erb | 0 app/views/ecs/_authList_addUnit.html.erb | 0 app/views/ecs/_auth_newMajor.html.erb | 0 app/views/ecs/_department_list.html.erb | 6 +- app/views/ecs/_ec_no_data.html.erb | 0 app/views/ecs/_ec_top_navigation.html.erb | 0 app/views/ecs/_major_lists.html.erb | 0 app/views/ecs/_school_manager.html.erb | 0 app/views/ecs/_search_user_list.html.erb | 0 app/views/ecs/department.html.erb | 0 app/views/ecs/department.js.erb | 0 app/views/ecs/search_major.js.erb | 0 app/views/enumerations/_form.html.erb | 0 app/views/enumerations/destroy.html.erb | 0 app/views/enumerations/edit.html.erb | 0 app/views/enumerations/index.api.rsb | 0 app/views/enumerations/index.html.erb | 0 app/views/enumerations/new.html.erb | 0 app/views/exercise/_alert.html.erb | 0 .../exercise/_all_import_exercises.html.erb | 0 app/views/exercise/_answer_comment.html.erb | 0 app/views/exercise/_choose_shixuns.html.erb | 0 .../exercise/_comment_detail_block.html.erb | 0 app/views/exercise/_commit_alert.html.erb | 0 app/views/exercise/_edit_MC.html.erb | 0 app/views/exercise/_edit_MCQ.html.erb | 0 app/views/exercise/_edit_head.html.erb | 0 app/views/exercise/_edit_multi.html.erb | 0 app/views/exercise/_edit_shixun.html.erb | 0 app/views/exercise/_edit_single.html.erb | 0 app/views/exercise/_edu_edit_form.html.erb | 0 app/views/exercise/_end_notice.html.erb | 1 + app/views/exercise/_exercise.html.erb | 0 app/views/exercise/_exercise_content.html.erb | 0 .../exercise/_exercise_course_list.html.erb | 0 app/views/exercise/_exercise_form.html.erb | 0 .../exercise/_exercise_index_tab.html.erb | 0 app/views/exercise/_exercise_redo.html.erb | 0 .../exercise/_exercise_republish.html.erb | 0 app/views/exercise/_exercise_setting.html.erb | 0 .../_exercise_statistics_result.html.erb | 0 app/views/exercise/_exercise_student.html.erb | 0 .../_exercise_student_result.html.erb | 0 app/views/exercise/_exercise_submit.html.erb | 0 .../exercise/_exercise_submit_info.html.erb | 0 app/views/exercise/_exercise_teacher.html.erb | 0 app/views/exercise/_exercises_list.html.erb | 0 app/views/exercise/_new_MC.html.erb | 0 app/views/exercise/_new_MCQ.html.erb | 0 app/views/exercise/_new_head.html.erb | 0 app/views/exercise/_new_multi.html.erb | 0 app/views/exercise/_new_question.html.erb | 0 app/views/exercise/_new_shixun.html.erb | 20 +- .../_new_shixun_exercise_list.html.erb | 0 app/views/exercise/_new_single.html.erb | 0 app/views/exercise/_other_exercises.html.erb | 0 app/views/exercise/_publish_notice.html.erb | 0 app/views/exercise/_search_user_list.html.erb | 0 .../_select_examination_list.html.erb | 0 app/views/exercise/_send_to_course.html.erb | 0 app/views/exercise/_show_MC.html.erb | 0 app/views/exercise/_show_MCQ.html.erb | 0 app/views/exercise/_show_head.html.erb | 0 app/views/exercise/_show_multi.html.erb | 0 app/views/exercise/_show_shixun.html.erb | 0 app/views/exercise/_show_single.html.erb | 0 .../_statistics_result_table.html.erb | 0 app/views/exercise/_student_exercise.html.erb | 0 .../_student_exercise_archive.html.erb | 0 app/views/exercise/_student_table.html.erb | 0 .../exercise/_student_table_archive.html.erb | 0 .../exercise/_total_questions_score.html.erb | 0 .../exercise/add_to_exercise_bank.js.erb | 0 .../exercise/adjust_question_score.js.erb | 0 app/views/exercise/blank_exercise.html.erb | 0 .../exercise/cancel_commit_confirm.js.erb | 0 app/views/exercise/choose_shixuns.js.erb | 0 app/views/exercise/choose_student.js.erb | 0 app/views/exercise/commit_exercise.js.erb | 0 app/views/exercise/create.js.erb | 0 .../exercise/create_exercise_question.js.erb | 0 .../exercise/delete_choose_shixun.js.erb | 0 .../exercise/delete_exercise_question.js.erb | 0 .../exercise/delete_shixun_question.js.erb | 0 app/views/exercise/edit.html.erb | 0 app/views/exercise/edit_question_score.js.erb | 0 app/views/exercise/end_notice.js.erb | 0 app/views/exercise/examination_setting.html | 0 .../exercise/import_other_exercise.js.erb | 0 app/views/exercise/index.html.erb | 0 app/views/exercise/index.js.erb | 0 app/views/exercise/new.html.erb | 0 app/views/exercise/other_exercise.js.erb | 0 app/views/exercise/publish_exercise.js.erb | 0 app/views/exercise/publish_notice.js.erb | 0 app/views/exercise/republish_exercise.js.erb | 0 app/views/exercise/search_courses.js.erb | 0 app/views/exercise/search_exercises.js.erb | 0 app/views/exercise/send_to_course.js.erb | 0 app/views/exercise/set_public.js.erb | 0 app/views/exercise/setting.html.erb | 0 app/views/exercise/shixun_question.js.erb | 0 app/views/exercise/show.html.erb | 0 .../exercise/show_student_result.html.erb | 0 app/views/exercise/statistics_result.js.erb | 0 .../exercise/student_exercise_list.html.erb | 0 .../exercise/student_exercise_list.js.erb | 0 app/views/exercise/student_look_fortime.html | 0 app/views/exercise/student_write_answer.html | 0 app/views/exercise/teacher_check_exam.html | 0 app/views/exercise/teacher_edit_exam.html | 0 .../exercise/teacher_examination_list.html | 0 app/views/exercise/teacher_score_list.html | 0 .../exercise/teacher_send_examination.html | 0 app/views/exercise/update.js.erb | 0 .../exercise/update_exercise_question.js.erb | 0 app/views/exercise/update_question_num.js.erb | 0 .../exercise_bank/_choose_shixuns.html.erb | 0 app/views/exercise_bank/_edit_MC.html.erb | 0 app/views/exercise_bank/_edit_MCQ.html.erb | 0 app/views/exercise_bank/_edit_head.html.erb | 0 app/views/exercise_bank/_edit_multi.html.erb | 0 .../exercise_bank/_edit_poll_MC.html.erb | 0 .../exercise_bank/_edit_poll_MCQ.html.erb | 0 .../exercise_bank/_edit_poll_single.html.erb | 0 app/views/exercise_bank/_edit_shixun.html.erb | 0 app/views/exercise_bank/_edit_single.html.erb | 0 .../exercise_bank/_exercise_content.html.erb | 0 .../_exercise_edit_form.html.erb | 0 app/views/exercise_bank/_new_MC.html.erb | 0 app/views/exercise_bank/_new_MCQ.html.erb | 0 app/views/exercise_bank/_new_head.html.erb | 0 app/views/exercise_bank/_new_multi.html.erb | 0 app/views/exercise_bank/_new_poll_MC.html.erb | 0 .../exercise_bank/_new_poll_MCQ.html.erb | 0 .../exercise_bank/_new_poll_question.html.erb | 0 .../exercise_bank/_new_poll_single.html.erb | 0 .../exercise_bank/_new_question.html.erb | 0 app/views/exercise_bank/_new_shixun.html.erb | 0 .../_new_shixun_exercise_list.html.erb | 0 app/views/exercise_bank/_new_single.html.erb | 0 .../exercise_bank/_poll_content.html.erb | 0 .../exercise_bank/_poll_edit_form.html.erb | 0 app/views/exercise_bank/_show_MC.html.erb | 0 app/views/exercise_bank/_show_MCQ.html.erb | 0 app/views/exercise_bank/_show_head.html.erb | 0 app/views/exercise_bank/_show_multi.html.erb | 0 .../exercise_bank/_show_poll_MC.html.erb | 0 .../exercise_bank/_show_poll_MCQ.html.erb | 0 .../exercise_bank/_show_poll_single.html.erb | 0 app/views/exercise_bank/_show_shixun.html.erb | 0 app/views/exercise_bank/_show_single.html.erb | 0 .../_total_questions_score.html.erb | 0 app/views/exercise_bank/choose_shixuns.js.erb | 0 app/views/exercise_bank/create.js.erb | 0 .../create_exercise_question.js.erb | 0 .../delete_exercise_question.js.erb | 0 app/views/exercise_bank/edit.html.erb | 0 app/views/exercise_bank/new.html.erb | 0 .../exercise_bank/shixun_question.js.erb | 0 app/views/exercise_bank/show.html.erb | 0 app/views/exercise_bank/update.js.erb | 0 .../update_exercise_question.js.erb | 0 .../exercise_bank/update_question_num.js.erb | 0 app/views/files/_arrow_show.erb | 0 app/views/files/_attachement_list.html.erb | 0 .../files/_attachment_history_popub.html.erb | 0 .../_attachment_history_popub_delete.html.erb | 0 app/views/files/_course_file.html.erb | 0 .../files/_course_file_dense_edit.html.erb | 0 .../files/_course_file_filter_order.html.erb | 0 app/views/files/_course_list.html.erb | 0 app/views/files/_course_new.html.erb | 0 .../_course_show_all_attachment.html.erb | 0 .../_course_sort_by_attachtypel.html.erb | 0 app/views/files/_course_tag_list.html.erb | 0 app/views/files/_file_description.html.erb | 0 app/views/files/_file_tag_detail.html.erb | 0 app/views/files/_file_tools.html.erb | 0 app/views/files/_hidden_file.html.erb | 18 +- app/views/files/_import_files.html.erb | 0 app/views/files/_new.html.erb | 0 .../files/_new_style_attachment_list.html.erb | 0 app/views/files/_org_order_filter.html.erb | 0 app/views/files/_org_subfield_list.html.erb | 0 ...g_subfield_upload_attachment_list.html.erb | 0 .../_org_upload_attachment_list.html.erb | 0 ...org_upload_attachment_list_banner.html.erb | 0 app/views/files/_project_file.html.erb | 0 .../files/_project_file_dense_edit.html.erb | 0 app/views/files/_project_file_list.html.erb | 0 app/views/files/_project_file_new.html.erb | 0 app/views/files/_project_list.html.erb | 0 app/views/files/_resource_detail.html.erb | 0 app/views/files/_show_all_attachment.html.erb | 0 app/views/files/_show_quote_resource.html.erb | 0 ..._show_quote_resource_org_subfield.html.erb | 0 .../_show_quote_resource_project.html.erb | 0 app/views/files/_sort_by_attachtypel.html.erb | 0 app/views/files/_subfield_files.html.erb | 0 app/views/files/_subfield_files_list.html.erb | 0 app/views/files/_subfield_tags.html.erb | 0 app/views/files/_tag_yun.html.erb | 0 app/views/files/_tag_yun_project.html.erb | 0 .../files/_tip_attachment_count.html.erb | 0 app/views/files/_tool_settings.html.erb | 0 app/views/files/_upload_course_files.erb | 0 .../files/_upload_org_new_files.html.erb | 0 .../_upload_org_new_files_banner.html.erb | 0 app/views/files/_upload_project_files.erb | 0 app/views/files/_upload_show.html.erb | 0 app/views/files/_upload_show_project.html.erb | 0 .../files/_upload_subfield_file.html.erb | 0 app/views/files/create.js.erb | 0 app/views/files/edit_file_description.js.erb | 0 app/views/files/getattachtype.html.erb | 0 app/views/files/getattachtype.js.erb | 0 app/views/files/index.html.erb | 0 app/views/files/index.js.erb | 0 app/views/files/new.html.erb | 0 app/views/files/quote_resource_show.js.erb | 0 .../quote_resource_show_org_subfield.js.erb | 0 .../files/quote_resource_show_project.js.erb | 0 app/views/files/republish_file.js.erb | 0 app/views/files/search.js.erb | 0 .../files/search_files_in_subfield.js.erb | 0 .../search_org_subfield_tag_attachment.js.erb | 0 app/views/files/search_project.js.erb | 0 app/views/files/search_tag_attachment.js.erb | 0 app/views/files/searchone4reload.html.erb | 0 app/views/files/setting.js.erb | 2 +- app/views/files/subfield_upload_file.js.erb | 0 .../files/update_file_description.js.erb | 0 app/views/files/upload_file_show.js.erb | 0 app/views/files/upload_files_menu.js.erb | 0 app/views/forums/_edit.html.erb | 0 app/views/forums/_emali_valid_tip.html.erb | 0 app/views/forums/_file_form.html.erb | 0 app/views/forums/_form.html.erb | 0 app/views/forums/_form_create_mode.html.erb | 0 app/views/forums/_form_edit_mode.html.erb | 0 app/views/forums/_forum_form.html.erb | 0 app/views/forums/_forum_index_list.html.erb | 0 app/views/forums/_forum_list.html.erb | 0 app/views/forums/_forum_tag_list.html.erb | 0 app/views/forums/_my_count_message.html.erb | 0 app/views/forums/_new.html.erb | 0 app/views/forums/_post_banner.html.erb | 0 app/views/forums/_right_bar.html.erb | 0 app/views/forums/_show_topics.html.erb | 0 app/views/forums/create.js.erb | 0 app/views/forums/create_feedback.js.erb | 0 app/views/forums/delete_forum_tag.js.erb | 0 app/views/forums/edit.html.erb | 0 app/views/forums/edit.js.erb | 0 app/views/forums/forum_form_add.html | 0 app/views/forums/forum_form_detail.html | 0 app/views/forums/forum_form_list.html | 0 app/views/forums/index.html.erb | 0 app/views/forums/index.js.erb | 0 app/views/forums/mail_feedback.js.erb | 0 app/views/forums/new.html.erb | 0 app/views/forums/new.js.erb | 0 app/views/forums/show.html.erb | 0 app/views/forums/show.js.erb | 0 app/views/forums/update.js.erb | 0 app/views/games/_acquire_answer.html.erb | 0 app/views/games/_choice_question.html.erb | 0 app/views/games/_code_actions.html.erb | 0 app/views/games/_code_outputs.html.erb | 0 app/views/games/_desc_full_show.html.erb | 0 app/views/games/_exec_results.html.erb | 0 .../games/_extend_edit_file_form.html.erb | 0 .../games/_extend_file_edit_form.html.erb | 0 app/views/games/_extend_test_output.html.erb | 0 app/views/games/_extend_tree.html.erb | 0 app/views/games/_file_edit_form.html.erb | 0 .../games/_game_answer_error_pop.html.erb | 0 app/views/games/_game_answer_tip_pop.html.erb | 0 app/views/games/_game_choose_results.html.erb | 0 app/views/games/_game_result_order.html.erb | 0 app/views/games/_game_results.html.erb | 0 app/views/games/_game_show.html.erb | 0 app/views/games/_game_webssh.html.erb | 0 app/views/games/_games_list.html.erb | 0 app/views/games/_leave_tip.html.erb | 0 .../games/_myshixun_breadcrumbs.html.erb | 0 .../_myshixun_extend_repository.html.erb | 0 app/views/games/_myshixun_repository.html.erb | 0 app/views/games/_pass_game_show.html.erb | 0 app/views/games/_picture_display.html.erb | 0 app/views/games/_repository.html.erb | 0 app/views/games/_reset_game_code.html.erb | 0 app/views/games/_send_error_pop.html.erb | 0 app/views/games/_send_success_pop.html.erb | 0 .../games/_shixun_comment_block.html.erb | 0 app/views/games/_shixun_comment_list.html.erb | 0 app/views/games/_tree.html.erb | 0 app/views/games/answer.js.erb | 0 app/views/games/check_test_sets.js.erb | 0 app/views/games/edit_file.html.erb | 0 app/views/games/entry.js.erb | 0 app/views/games/file_edit.js.erb | 0 .../games/get_repository_contents.js.erb | 0 app/views/games/index.html.erb | 0 app/views/games/index.js.erb | 0 app/views/games/minus_score.js.erb | 0 app/views/games/myshixun_repair.js.erb | 0 app/views/games/output_show.js.erb | 0 app/views/games/outputs_show.js.erb | 0 app/views/games/refresh_game_list.js.erb | 0 app/views/games/reset_new_code.js.erb | 0 app/views/games/reset_original_code.js.erb | 0 app/views/games/show.html.erb | 0 app/views/games/show.js.erb | 0 app/views/games/sync_codes.js.erb | 0 app/views/games/web_display.html.erb | 0 app/views/gantts/show.html.erb | 0 app/views/graduation_tasks/_form.html.erb | 0 .../_graduation_task_list.html.erb | 0 .../_graduation_task_setting.html.erb | 0 .../_student_work_list.html.erb | 0 .../graduation_tasks/_task_discuss.html.erb | 0 .../_task_discuss_replies.html.erb | 0 .../_task_index_search.html.erb | 0 .../graduation_tasks/_task_index_tab.html.erb | 0 .../graduation_tasks/_task_status.html.erb | 3 - app/views/graduation_tasks/_task_tag.html.erb | 0 app/views/graduation_tasks/edit.html.erb | 0 app/views/graduation_tasks/index.html.erb | 0 app/views/graduation_tasks/index.js.erb | 0 app/views/graduation_tasks/new.html.erb | 0 app/views/graduation_tasks/show.html.erb | 0 app/views/graduation_tasks/show.js.erb | 0 .../graduation_tasks/task_discuss.js.erb | 0 app/views/graduation_topics/_form.html.erb | 0 .../_graduation_task_new.html.erb | 0 .../_graduation_topic_index_tab.html.erb | 0 .../_graduation_topic_list.html.erb | 0 .../_graduation_topic_status.html.erb | 0 .../_student_topic_list.html.erb | 0 .../_topic_journals.html.erb | 0 .../graduation_topics/accept_select.js.erb | 0 app/views/graduation_topics/edit.html.erb | 0 app/views/graduation_topics/index.html.erb | 0 app/views/graduation_topics/index.js.erb | 0 app/views/graduation_topics/new.html.erb | 0 app/views/graduation_topics/set_public.js.erb | 0 app/views/graduation_topics/show.html.erb | 0 app/views/graduation_topics/show.js.erb | 0 .../graduation_works/_add_score_div.html.erb | 0 .../graduation_works/_assign_teacher.html.erb | 0 .../_connect_project.html.erb | 0 app/views/graduation_works/_form.html.erb | 0 .../_group_member_search_list.html.erb | 0 .../_search_project_list.html.erb | 0 .../graduation_works/_upload_file.html.erb | 0 .../_work_score_comments.html.erb | 0 app/views/graduation_works/add_score.js.erb | 0 .../graduation_works/adjust_score.js.erb | 0 .../graduation_works/assign_teacher.js.erb | 0 app/views/graduation_works/edit.html.erb | 0 app/views/graduation_works/new.html.erb | 0 .../search_course_students.js.erb | 0 .../search_user_projects.js.erb | 0 app/views/graduation_works/show.html.erb | 0 app/views/groups/_form.html.erb | 0 app/views/groups/_general.html.erb | 0 app/views/groups/_memberships.html.erb | 0 app/views/groups/_users.html.erb | 0 app/views/groups/add_users.js.erb | 0 app/views/groups/autocomplete_for_user.js.erb | 0 app/views/groups/destroy_membership.js.erb | 0 app/views/groups/edit.html.erb | 0 app/views/groups/edit_membership.js.erb | 0 app/views/groups/index.api.rsb | 0 app/views/groups/index.html.erb | 0 app/views/groups/new.html.erb | 0 app/views/groups/remove_user.js.erb | 0 app/views/groups/show.api.rsb | 0 app/views/groups/show.html.erb | 0 app/views/homepages/_article_list.html.erb | 0 app/views/homepages/_articles.html.erb | 0 app/views/homepages/index.html.erb | 0 app/views/homepages/index.js.erb | 0 .../homework_attach/_add_jour_reply.html.erb | 0 app/views/homework_attach/_addjour.html.erb | 0 app/views/homework_attach/_app_link.html.erb | 0 .../_comprehensive_evaluation.html.erb | 0 .../homework_attach/_evaluation.html.erb | 0 .../_evaluation_add_jour.html.erb | 0 .../homework_attach/_histoey_new.html.erb | 0 app/views/homework_attach/_history.erb | 0 app/views/homework_attach/_homework.html.erb | 0 .../homework_attach/_homework_jours.html.erb | 0 .../homework_attach/_homework_member.html.erb | 0 .../homework_attach/_homework_praise.html.erb | 0 .../homework_attach/_homeworks_list.html.erb | 0 app/views/homework_attach/_jour.html.erb | 0 .../homework_attach/_jour_reply.html.erb | 0 .../_journal_reply_items.html.erb | 0 .../_member_list_partial.html.erb | 0 .../homework_attach/_new_homework.html.erb | 0 .../homework_attach/_praise_alert.html.erb | 0 app/views/homework_attach/_pre_show.html.erb | 0 app/views/homework_attach/_review.html.erb | 0 app/views/homework_attach/_show.html.erb | 0 .../homework_attach/_show_score.html.erb | 0 app/views/homework_attach/_show_star.html.erb | 0 .../_show_static_star.html.erb | 0 app/views/homework_attach/_showjour.html.erb | 0 .../_teacher_evaluation.html.erb | 0 .../homework_attach/add_homework_users.js.erb | 0 .../homework_attach/add_jour_reply.js.erb | 0 app/views/homework_attach/addjours.js.erb | 0 .../destory_homework_users.js.erb | 0 app/views/homework_attach/destroy.js.erb | 0 app/views/homework_attach/destroy_jour.js.erb | 0 app/views/homework_attach/edit.html.erb | 0 .../get_batch_homeworks.js.erb | 0 .../homework_attach/get_homework_jours.js.erb | 0 .../get_homework_member_list.js.erb | 0 .../homework_attach/get_homeworks.js.erb | 0 .../homework_attach/get_my_homework.js.erb | 0 .../get_not_batch_homework.js.erb | 0 .../get_student_batch_homework.js.erb | 0 app/views/homework_attach/new.html.erb | 0 .../homework_attach/praise_homework.js.erb | 0 app/views/homework_attach/show.html.erb | 0 app/views/homework_attach/show.js.erb | 0 .../_homework_bank_list.html.erb | 0 .../_hw_search_course_list.html.erb | 0 .../_new_common_homework.html.erb | 0 .../_new_group_homework.html.erb | 0 .../_new_program_homework.html.erb | 0 .../_new_shixun_homework_list.html.erb | 0 .../_send_homework_bank.html.erb | 0 app/views/homework_bank/_shixuns.html.erb | 0 .../homework_bank/choose_user_course.js.erb | 0 app/views/homework_bank/edit.html.erb | 0 app/views/homework_bank/index.html.erb | 0 app/views/homework_bank/index.js.erb | 0 app/views/homework_bank/new.html.erb | 0 .../send_h_bank_to_course.js.erb | 0 app/views/homework_bank/set_public.js.erb | 0 app/views/homework_bank/shixuns.js.erb | 0 app/views/homework_bank/show.html.erb | 0 .../homework_common/_alert_anonyoms.html.erb | 0 .../_alert_open_student_works.html.erb | 0 .../_alert_score_open_modal.html.erb | 0 .../_create_shixun_homework.html.erb | 0 .../_edit_anon_setting.html.erb | 0 .../_edit_late_setting.html.erb | 0 .../_edit_public_setting.html.erb | 0 .../_edit_publish_setting.html.erb | 0 .../_edit_score_setting.html.erb | 0 .../homework_common/_end_notice.html.erb | 0 .../homework_common/_group_list.html.erb | 0 .../_homework_index_list.html.erb | 9 +- .../_homework_index_tab.html.erb | 0 .../_homework_search_form.html.erb | 0 .../_new_common_homework.html.erb | 0 .../_new_group_homework.html.erb | 0 .../_new_program_homework.html.erb | 0 .../_new_shixun_homework_list.html.erb | 0 .../homework_common/_publish_notice.html.erb | 0 .../_reference_answers_attachments.html.erb | 0 .../_set_evalutation_att.html.erb | 0 .../_set_score_rule_non_pro.html.erb | 0 .../_set_score_rule_none_pro_anon.html.erb | 0 .../_set_score_rule_pro.html.erb | 0 .../_set_score_rule_pro_anon.html.erb | 0 .../_shixun_group_list.html.erb | 0 .../_shixun_search_form.html.erb | 0 .../homework_common/_shixun_tab_div.html.erb | 0 app/views/homework_common/_shixuns.html.erb | 2 +- .../_show_anon_setting.html.erb | 0 .../_show_late_setting.html.erb | 0 .../_show_public_setting.html.erb | 0 .../_show_publish_setting.html.erb | 0 .../_show_score_setting.html.erb | 0 .../_sub_moveWorkItem.html.erb | 0 .../homework_common/_sub_shixunWork.html.erb | 4 +- .../homework_common/_subject_list.html.erb | 81 + .../_subject_search_form.html.erb | 12 + .../homework_common/_subject_tab_div.html.erb | 8 + app/views/homework_common/_subjects.html.erb | 61 + .../add_to_homework_bank.js.erb | 0 .../alert_anonymous_comment.js.erb | 0 .../alert_forbidden_anonymous_comment.js.erb | 0 .../alert_open_student_works.js.erb | 0 .../alert_score_open_modal.js.erb | 0 .../create_shixun_homework.js.erb | 0 .../create_subject_homework.js.erb | 6 + app/views/homework_common/edit.html.erb | 0 app/views/homework_common/end_notice.js.erb | 0 .../homework_code_repeat.js.erb | 0 app/views/homework_common/index.html.erb | 6 +- app/views/homework_common/index.js.erb | 1 + .../homework_common/move_to_category.js.erb | 0 app/views/homework_common/new.html.erb | 0 .../homework_common/open_student_works.js.erb | 0 .../homework_common/programing_test.js.erb | 0 .../homework_common/publish_homework.js.erb | 0 .../homework_common/publish_notice.js.erb | 0 .../publish_shixun_homework.js.erb | 0 .../homework_common/review_detail.html.erb | 0 .../homework_common/score_rule_set.js.erb | 0 .../set_evaluation_attr.js.erb | 0 app/views/homework_common/set_public.js.erb | 0 .../homework_common/set_score_open.js.erb | 0 app/views/homework_common/setting.html.erb | 0 app/views/homework_common/shixuns.js.erb | 2 +- .../start_anonymous_comment.js.erb | 0 .../start_evaluation_set.js.erb | 0 .../stop_anonymous_comment.js.erb | 0 app/views/homework_common/subjects.js.erb | 11 + .../homework_common/update_explanation.js.erb | 0 app/views/iframes/_html_show.html.erb | 0 app/views/iframes/html_content.html.erb | 0 .../iframes/html_content.html.erb.BASE.erb | 0 .../iframes/html_content.html.erb.LOCAL.erb | 0 .../iframes/html_content.html.erb.REMOTE.erb | 0 app/views/iframes/html_content.js.erb | 0 app/views/iframes/show.html.erb | 0 app/views/issue_categories/_form.html.erb | 0 .../issue_categories/_new_modal.html.erb | 0 app/views/issue_categories/create.js.erb | 0 app/views/issue_categories/destroy.html.erb | 0 app/views/issue_categories/edit.html.erb | 0 app/views/issue_categories/index.api.rsb | 0 .../issue_categories_helper.rb | 0 app/views/issue_categories/new.html.erb | 0 app/views/issue_categories/new.js.erb | 0 app/views/issue_categories/show.api.rsb | 0 app/views/issue_relations/_form.html.erb | 0 app/views/issue_relations/create.js.erb | 0 app/views/issue_relations/destroy.js.erb | 0 app/views/issue_relations/index.api.rsb | 0 app/views/issue_relations/show.api.rsb | 0 app/views/issue_statuses/_form.html.erb | 0 app/views/issue_statuses/edit.html.erb | 0 app/views/issue_statuses/index.api.rsb | 0 app/views/issue_statuses/index.html.erb | 0 app/views/issue_statuses/new.html.erb | 0 app/views/issues/_action_menu.html.erb | 0 app/views/issues/_all_list.html.erb | 0 app/views/issues/_attributes.html.erb | 0 app/views/issues/_attributes_show.html.erb | 0 app/views/issues/_changesets.html.erb | 0 app/views/issues/_conflict.html.erb | 0 app/views/issues/_detail.html.erb | 0 app/views/issues/_edit.html.erb | 0 app/views/issues/_form.html.erb | 0 app/views/issues/_form_custom_fields.html.erb | 0 app/views/issues/_history.html.erb | 0 app/views/issues/_issue_attachments.html.erb | 0 app/views/issues/_issue_commit_ids.html.erb | 0 .../issues/_issue_commit_ids_show.html.erb | 0 app/views/issues/_issue_commits.html.erb | 0 app/views/issues/_issue_commits_list.html.erb | 0 app/views/issues/_issue_filter.html.erb | 0 app/views/issues/_issue_filter_all.html.erb | 0 .../issues/_issue_filter_author.html.erb | 0 app/views/issues/_issue_replies.html.erb | 0 app/views/issues/_issue_reply_banner.html.erb | 0 .../issues/_issue_reply_ke_form.html.erb | 0 app/views/issues/_jounal_refresh.js.erb | 0 app/views/issues/_list.html.erb | 0 app/views/issues/_list_simple.html.erb | 0 app/views/issues/_new_issue_list.html.erb | 0 app/views/issues/_project_issue.html.erb | 0 app/views/issues/_relations.html.erb | 0 app/views/issues/_sidebar.html.erb | 0 app/views/issues/_statistics.html.erb | 0 app/views/issues/_statistics_all.html.erb | 0 app/views/issues/_statistics_lock.html.erb | 0 app/views/issues/_statistics_open.html.erb | 0 app/views/issues/_versions_choise.html.erb | 0 app/views/issues/add_journal.js.erb | 0 app/views/issues/add_journal_in_org.js.erb | 0 app/views/issues/add_reply.js.erb | 0 app/views/issues/bulk_edit.html.erb | 0 app/views/issues/bulk_edit.js.erb | 0 app/views/issues/commit_for_issue.js.erb | 0 app/views/issues/delete_journal.js.erb | 0 app/views/issues/destroy.html.erb | 0 app/views/issues/edit.html.erb | 0 app/views/issues/index.api.rsb | 0 app/views/issues/index.html.erb | 0 app/views/issues/index.js.erb | 0 app/views/issues/issue_commit_delete.js.erb | 0 app/views/issues/issue_commits.js.erb | 0 app/views/issues/new.html.erb | 0 app/views/issues/reply.js.erb | 0 app/views/issues/show.api.rsb | 0 app/views/issues/show.html.erb | 0 app/views/issues/show.js.erb | 0 app/views/issues/statistics.js.erb | 0 app/views/issues/update.js.erb | 0 app/views/issues/update_form.js.erb | 0 app/views/journals/_notes_form.html.erb | 0 app/views/journals/diff.html.erb | 0 app/views/journals/edit.js.erb | 0 app/views/journals/index.builder | 0 app/views/journals/new.js.erb | 0 app/views/journals/update.js.erb | 0 app/views/kaminari/_first_page.html.erb | 0 app/views/kaminari/_gap.html.erb | 0 app/views/kaminari/_last_page.html.erb | 0 app/views/kaminari/_next_page.html.erb | 0 app/views/kaminari/_page.html.erb | 0 app/views/kaminari/_paginator.html.erb | 0 app/views/kaminari/_prev_page.html.erb | 0 app/views/kubernete/exec_container.jsl.erb | 0 app/views/kubernete/new.html.erb | 0 app/views/layouts/_base_ad.html.erb | 0 .../layouts/_base_college_header.html.erb | 0 .../layouts/_base_enterprise_header.html.erb | 0 app/views/layouts/_base_feedback.html.erb | 0 app/views/layouts/_base_footer.html.erb | 0 app/views/layouts/_base_footer_new.html.erb | 0 .../layouts/_base_footer_public.html.erb | 0 app/views/layouts/_base_header.html.erb | 0 app/views/layouts/_base_header_new.html.erb | 0 app/views/layouts/_base_home_menu.html.erb | 0 .../layouts/_base_homework_attach.html.erb | 0 app/views/layouts/_base_project_top.html.erb | 0 ...softapplication_index_top_content.html.erb | 0 ..._base_softapplication_top_content.html.erb | 0 app/views/layouts/_bigdata_footer.html.erb | 0 app/views/layouts/_bigdata_header.html.erb | 0 .../layouts/_board_children_list.html.erb | 0 .../layouts/_bootstrap_base_footer.html.erb | 0 .../layouts/_bootstrap_base_header.html.erb | 0 .../_contest_board_children_list.html.erb | 0 app/views/layouts/_course_base_info.html.erb | 0 app/views/layouts/_course_left_info.html.erb | 0 app/views/layouts/_footer.html.erb | 0 app/views/layouts/_footer_force.html.erb | 0 app/views/layouts/_footer_show.html.erb | 0 .../layouts/_forbidden_new_feedback.html.erb | 0 .../layouts/_group_children_list.html.erb | 0 .../_homepage_left_contest_list.html.erb | 0 .../_homepage_left_course_list.html.erb | 0 .../_homepage_left_project_list.html.erb | 0 app/views/layouts/_join_exit_project.html.erb | 0 .../layouts/_logined_force_header.html.erb | 0 app/views/layouts/_logined_header.html.erb | 114 +- .../layouts/_logined_header_show.html.erb | 0 app/views/layouts/_message_loading.html.erb | 0 app/views/layouts/_new_feedback.html.erb | 0 app/views/layouts/_new_footer.html.erb | 0 app/views/layouts/_new_header.html.erb | 0 app/views/layouts/_no_content.html.erb | 0 app/views/layouts/_org_courses.html.erb | 0 app/views/layouts/_org_custom_footer.html.erb | 0 app/views/layouts/_org_projects.html.erb | 0 .../layouts/_org_subdomain_footer.html.erb | 0 app/views/layouts/_point_browser.html.erb | 0 app/views/layouts/_project_info.html.erb | 0 app/views/layouts/_public_left_info.html.erb | 0 .../layouts/_show_messages_list.html.erb | 0 .../layouts/_syllabus_base_info.html.erb | 0 .../layouts/_syllabus_edit_info.html.erb | 0 app/views/layouts/_syllabus_eng_name.html.erb | 0 app/views/layouts/_syllabus_info.html.erb | 0 .../layouts/_syllabus_teacher_list.html.erb | 0 app/views/layouts/_syllabus_title.html.erb | 0 app/views/layouts/_tag.html.erb | 0 app/views/layouts/_tag_name.html.erb | 0 app/views/layouts/_unlogin_header.html.erb | 47 +- app/views/layouts/_upload_avatar.html.erb | 0 .../layouts/_user_brief_introduction.html.erb | 0 app/views/layouts/_user_contests.html.erb | 0 app/views/layouts/_user_courses.html.erb | 0 app/views/layouts/_user_courses_list.html.erb | 0 app/views/layouts/_user_fans_list.html.erb | 0 .../layouts/_user_homework_list.html.erb | 0 app/views/layouts/_user_project_list.html.erb | 0 app/views/layouts/_user_projects.html.erb | 0 app/views/layouts/_user_watch_btn.html.erb | 0 app/views/layouts/_user_watch_list.html.erb | 0 app/views/layouts/admin.html.erb | 0 app/views/layouts/base.html.erb | 0 app/views/layouts/base.html_old.erb | 0 app/views/layouts/base_.html.erb | 0 app/views/layouts/base_admin.html.erb | 0 app/views/layouts/base_bids.html.erb | 0 app/views/layouts/base_ccf.html.erb | 0 app/views/layouts/base_competition.html.erb | 0 .../layouts/base_contest_community.html.erb | 0 app/views/layouts/base_contests.html.erb | 0 .../layouts/base_course_community.html.erb | 0 app/views/layouts/base_courses.html.erb | 27 +- app/views/layouts/base_ec.html.erb | 0 app/views/layouts/base_edu.html.erb | 3 +- app/views/layouts/base_edu_account.html.erb | 4 +- app/views/layouts/base_edu_course.html.erb | 0 app/views/layouts/base_edu_syllabus.html.erb | 0 app/views/layouts/base_edu_user.html.erb | 25 +- app/views/layouts/base_forums.html.erb | 0 app/views/layouts/base_homework.html.erb | 0 app/views/layouts/base_local.html.erb | 31 - app/views/layouts/base_mail.html.erb | 0 app/views/layouts/base_management.html.erb | 18 +- app/views/layouts/base_md.html.erb | 0 app/views/layouts/base_memos.html.erb | 0 app/views/layouts/base_myshixun.html.erb | 0 app/views/layouts/base_new_forum.html.erb | 0 app/views/layouts/base_newcontest.html.erb | 0 app/views/layouts/base_old.html.erb | 0 app/views/layouts/base_opensource_p.html.erb | 0 app/views/layouts/base_org.html.erb | 0 app/views/layouts/base_org2.html.erb | 0 app/views/layouts/base_org_custom.html.erb | 0 app/views/layouts/base_org_newstyle.html.erb | 0 app/views/layouts/base_organization.html.erb | 0 .../layouts/base_project_community.html.erb | 0 app/views/layouts/base_projects.html.erb | 0 app/views/layouts/base_shixun.html.erb | 0 app/views/layouts/base_stores.html.erb | 0 app/views/layouts/base_sub_domain.html.erb | 0 app/views/layouts/base_subject.html.erb | 0 app/views/layouts/base_syllabus.html.erb | 0 app/views/layouts/base_tags.html.erb | 0 app/views/layouts/base_trainings.html.erb | 0 app/views/layouts/base_users.html.erb | 0 app/views/layouts/base_users_new.html.erb | 0 app/views/layouts/base_wechat.html.erb | 0 app/views/layouts/base_welcome.html.erb | 0 app/views/layouts/bootstrap_base.html.erb | 0 app/views/layouts/clear_base.html.erb | 0 app/views/layouts/contest_base.html.erb | 0 app/views/layouts/course_base.html.erb | 0 app/views/layouts/edu_new_base_user.html.erb | 0 app/views/layouts/educoder.html.erb | 0 app/views/layouts/left.html.erb | 0 app/views/layouts/login.html.erb | 18 +- app/views/layouts/login_bigdata.html.erb | 0 app/views/layouts/mailer.html.erb | 0 app/views/layouts/mailer.text.erb | 0 app/views/layouts/new_base.html.erb | 0 app/views/layouts/new_base_user.html.erb | 0 app/views/layouts/new_base_user_show.html.erb | 0 app/views/layouts/pdf.html.erb | 7 +- app/views/layouts/right.html.erb | 0 app/views/layouts/static_base.html.erb | 0 app/views/layouts/statictis.html.erb | 0 app/views/layouts/system_log.html.erb | 0 app/views/layouts/users_base.html.erb | 0 app/views/list/members.html.erb | 0 app/views/local_settings/_form.html.erb | 0 app/views/local_settings/edit.html.erb | 0 app/views/local_settings/index.html.erb | 0 app/views/local_settings/new.html.erb | 0 app/views/local_settings/show.html.erb | 0 app/views/mailer/_issue.html.erb | 0 app/views/mailer/_issue.text.erb | 0 app/views/mailer/account_activated.html.erb | 0 app/views/mailer/account_activated.text.erb | 0 .../account_activation_request.html.erb | 0 .../account_activation_request.text.erb | 0 app/views/mailer/account_information.html.erb | 0 app/views/mailer/account_information.text.erb | 0 app/views/mailer/applied_project.html.erb | 0 app/views/mailer/applied_project.text.erb | 0 app/views/mailer/attachments_added.html.erb | 0 app/views/mailer/attachments_added.text.erb | 0 app/views/mailer/bind_email.html.erb | 0 app/views/mailer/bind_email.text.erb | 0 app/views/mailer/code_login.html.erb | 0 app/views/mailer/code_login.text.erb | 0 app/views/mailer/document_added.html.erb | 0 app/views/mailer/document_added.text.erb | 0 app/views/mailer/email_register.html.erb | 0 app/views/mailer/email_register.text.erb | 0 app/views/mailer/forum_add.html.erb | 0 app/views/mailer/forum_add.text.erb | 0 app/views/mailer/forum_message_added.html.erb | 0 app/views/mailer/forum_message_added.text.erb | 0 app/views/mailer/homework_added.html.erb | 0 app/views/mailer/homework_added.text.erb | 0 .../mailer/homework_endtime__added.html.erb | 0 .../mailer/homework_endtime__added.text.erb | 0 app/views/mailer/issue_add.html.erb | 0 app/views/mailer/issue_add.text.erb | 0 app/views/mailer/issue_due_date.html.erb | 0 app/views/mailer/issue_due_date.text.erb | 0 app/views/mailer/issue_edit.html.erb | 0 app/views/mailer/issue_edit.text.erb | 0 app/views/mailer/join_course_request.html.erb | 0 app/views/mailer/join_course_request.text.erb | 0 .../mailer/journals_for_message_add.html.erb | 0 .../mailer/journals_for_message_add.text.erb | 0 .../journals_for_message_added.html.erb | 0 app/views/mailer/lost_password.html.erb | 0 app/views/mailer/lost_password.text.erb | 0 app/views/mailer/message_posted.html.erb | 0 app/views/mailer/message_posted.text.erb | 0 app/views/mailer/news_added.html.erb | 0 app/views/mailer/news_added.text.erb | 0 app/views/mailer/news_comment_added.html.erb | 0 app/views/mailer/news_comment_added.text.erb | 0 app/views/mailer/register.html.erb | 0 app/views/mailer/register.text.erb | 0 app/views/mailer/reminder.html.erb | 0 app/views/mailer/reminder.text.erb | 0 .../mailer/request_member_to_project.html.erb | 0 .../mailer/request_member_to_project.text.erb | 0 .../mailer/send_for_user_activities.html.erb | 0 .../mailer/send_for_user_activities.text.erb | 0 .../mailer/send_invite_in_project.html.erb | 0 .../mailer/send_invite_in_project.text.erb | 0 ...send_mail_anonymous_comment_close.html.erb | 0 ...send_mail_anonymous_comment_close.text.erb | 0 .../send_mail_anonymous_comment_fail.html.erb | 0 .../send_mail_anonymous_comment_fail.text.erb | 0 .../send_mail_anonymous_comment_open.html.erb | 0 .../send_mail_anonymous_comment_open.text.erb | 0 app/views/mailer/test_email.html.erb | 0 app/views/mailer/test_email.text.erb | 0 app/views/mailer/wiki_content_added.html.erb | 0 app/views/mailer/wiki_content_added.text.erb | 0 .../mailer/wiki_content_updated.html.erb | 0 .../mailer/wiki_content_updated.text.erb | 0 .../_add_auto_users_trial.html.erb | 5 +- .../managements/_all_department.html.erb | 0 app/views/managements/_all_schools.html.erb | 0 .../_applicable_course_list.html.erb | 0 .../_audit_authentication_list.html.erb | 0 .../_audit_pro_authentication_list.html.erb | 0 app/views/managements/_auth_AddUnit.html.erb | 0 .../managements/_auth_AddUnitManager.html.erb | 0 .../_auth_professionalcatalog.html.erb | 0 .../managements/_authentication_list.html.erb | 0 .../_auto_users_authorization_list.html.erb | 0 app/views/managements/_bg_know_edit.html.erb | 0 app/views/managements/_bg_know_show.html.erb | 0 app/views/managements/_choose_mirror.html.erb | 0 .../_class_publish_shixuns_list.html.erb | 0 .../managements/_class_shixuns_list.html.erb | 0 .../_classroom_classment_list.html.erb | 0 .../managements/_classroom_list.html.erb | 0 .../managements/_close_shixun_list.html.erb | 0 app/views/managements/_competionList.html.erb | 0 .../_competition_enroll_list.html.erb | 0 .../_competition_list_page.html.erb | 0 .../_competition_stage_lists.html.erb | 0 .../managements/_course_message_list.html.erb | 0 .../managements/_create_department.html.erb | 0 .../managements/_create_mirror_model.html.erb | 0 .../managements/_create_tech_system.html.erb | 0 .../managements/_customer_addUnit.html.erb | 100 - .../_customers_search_form.html.erb | 19 - .../_delete_depart_message.html.erb | 0 .../_delete_school_message.html.erb | 0 .../managements/_depart_host_count.html.erb | 0 app/views/managements/_depart_list.html.erb | 0 .../managements/_depart_member_cell.html.erb | 0 .../_depart_member_search_list.html.erb | 0 .../_departmentUnit_addManger.html.erb | 0 .../managements/_departmentUnit_url.html.erb | 0 .../managements/_departments_list.html.erb | 0 .../_departments_part_list.html.erb | 0 app/views/managements/_door_banner.html.erb | 0 .../managements/_edit_score_sets.html.erb | 0 .../_evaluate_recode_time.html.erb | 0 .../_evaluate_records_list.html.erb | 0 .../_graduation_standard_list.html.erb | 0 .../_import_student_accounts.html.erb | 2 +- .../managements/_leave_message_list.html.erb | 0 .../_management_Import_Template.html.erb | 0 app/views/managements/_manager_list.html.erb | 0 app/views/managements/_message_list.html.erb | 0 .../managements/_migrate_class_list.html.erb | 0 app/views/managements/_mirror_info.html.erb | 0 .../managements/_mirror_list_show.html.erb | 0 .../_mirror_picture_shixuns_list.html.erb | 0 app/views/managements/_modify_class.html.erb | 0 .../managements/_modify_mirror_modal.html.erb | 0 app/views/managements/_myshixun_list.html.erb | 0 app/views/managements/_new_add_unit.html.erb | 0 app/views/managements/_new_major.html.erb | 0 .../_new_or_edit_score_indicator.html.erb | 0 .../_new_or_edit_score_sets.html.erb | 0 .../managements/_partner_addManage.html.erb | 106 - .../managements/_partner_addUnit.html.erb | 98 - .../_partner_customer_list.html.erb | 20 - app/views/managements/_partner_list.html.erb | 14 - .../managements/_partner_main_div.html.erb | 25 - .../managements/_partner_member_list.html.erb | 10 - .../_partner_member_search_list.html.erb | 11 - .../managements/_partner_search_form.html.erb | 19 - app/views/managements/_partners_list.html.erb | 11 - .../_pro_authentication_list.html.erb | 0 .../managements/_profession_index.html.erb | 14 +- .../managements/_profession_list.html.erb | 0 .../managements/_project_list_div.html.erb | 0 .../managements/_publish_shixun_list.html.erb | 0 .../managements/_rename_tech_system.html.erb | 0 .../_replace_mirror_modal.html.erb | 0 app/views/managements/_sample_edit.html.erb | 0 app/views/managements/_sample_show.html.erb | 0 .../managements/_school_image_banner.html.erb | 0 app/views/managements/_school_lists.html.erb | 0 .../managements/_schooladd_list.html.erb | 65 - .../managements/_schoolcontrast_list.html.erb | 95 - .../_schoolstatistics_list.html.erb | 70 - .../managements/_score_sets_list.html.erb | 0 .../_shixun_authorization_list.html.erb | 0 ..._shixun_authorization_passed_list.html.erb | 0 .../_shixun_feedback_list.html.erb | 0 app/views/managements/_shixun_list.html.erb | 0 .../managements/_shixun_member_list.html.erb | 0 .../managements/_shixun_mirror_list.html | 0 .../managements/_shixun_setting_list.html.erb | 0 .../managements/_shixun_task_list.html.erb | 0 .../_subject_authorization_list.html.erb | 8 - ...subject_authorization_passed_list.html.erb | 9 - .../managements/_subject_level_list.html.erb | 107 - app/views/managements/_subject_list.html.erb | 23 +- app/views/managements/_summary_edit.html.erb | 0 app/views/managements/_summary_show.html.erb | 0 app/views/managements/_tech_system.html.erb | 0 app/views/managements/_training_item.html.erb | 0 app/views/managements/_training_list.html.erb | 0 .../_trial_authorization_list.html.erb | 2 +- .../_trial_authorization_passed_list.html.erb | 4 +- .../_unit_cooperativePartner.html.erb | 79 - app/views/managements/_unit_list.html.erb | 0 .../managements/_update_department.html.erb | 0 .../_update_department_form.html.erb | 0 .../_update_department_school.html.erb | 0 .../managements/_update_school_form.html.erb | 0 app/views/managements/_user_list.html.erb | 50 +- .../_users_authorization_list.html.erb | 2 +- .../managements/add_depart_member.js.erb | 0 .../managements/add_depart_member_box.js.erb | 0 app/views/managements/add_department.js.erb | 0 .../managements/add_departments_part.html.erb | 0 .../managements/add_departments_part.js.erb | 0 .../managements/add_partner_member.js.erb | 1 - .../managements/add_partner_member_box.js.erb | 6 - app/views/managements/add_template.js.erb | 0 .../managements/agree_authentication.js.erb | 0 .../agree_authentication_pro.js.erb | 0 app/views/managements/all_department.js.erb | 0 app/views/managements/all_partners.js.erb | 6 - app/views/managements/all_schools.js.erb | 0 .../managements/applicable_course.html.erb | 0 .../managements/applicable_course.js.erb | 0 app/views/managements/auth_school.html.erb | 0 .../managements/auto_users_trial.html.erb | 0 app/views/managements/auto_users_trial.js.erb | 0 app/views/managements/career_list.html.erb | 0 app/views/managements/career_list.js.erb | 0 app/views/managements/choose_mirror.js.erb | 0 .../class_publish_shixuns.html.erb | 0 .../managements/class_publish_shixuns.js.erb | 0 app/views/managements/class_shixuns.html.erb | 0 app/views/managements/class_shixuns.js.erb | 0 app/views/managements/classroom.html.erb | 0 app/views/managements/classroom.js.erb | 0 .../managements/classroom_classment.html.erb | 0 .../managements/classroom_classment.js.erb | 0 app/views/managements/close_shixuns.html.erb | 0 app/views/managements/close_shixuns.js.erb | 0 .../managements/codemirror_template.html.erb | 0 .../managements/codemirror_template.js.erb | 0 app/views/managements/competition.html.erb | 0 app/views/managements/competition.js.erb | 0 .../managements/competition_setting.html.erb | 0 .../course_guide_template.html.erb | 0 .../managements/course_homepage_show.js.erb | 0 .../managements/course_messages_list.html.erb | 0 .../managements/course_messages_list.js.erb | 0 .../managements/create_departments.js.erb | 0 .../managements/create_school_image.js.erb | 0 app/views/managements/create_standard.js.erb | 0 app/views/managements/customers_list.js.erb | 6 - .../deal_shixun_authorization.js.erb | 0 .../deal_subject_authorization.js.erb | 0 app/views/managements/delete_career.js.erb | 0 app/views/managements/delete_customers.js.erb | 1 - .../managements/delete_depart_member.js.erb | 0 app/views/managements/delete_mirror.js.erb | 0 .../managements/delete_partner_member.js.erb | 1 - .../managements/delete_school_image.js.erb | 0 app/views/managements/depart.html.erb | 0 app/views/managements/depart.js.erb | 0 app/views/managements/departments.html.erb | 0 app/views/managements/departments.js.erb | 0 .../managements/departments_part.html.erb | 0 app/views/managements/departments_part.js.erb | 0 app/views/managements/destroy.js.erb | 0 app/views/managements/ec_template.html.erb | 0 .../managements/edit_score_indicator.js.erb | 0 app/views/managements/edit_score_set.js.erb | 0 .../managements/editmd_template.html.erb | 0 app/views/managements/editmd_template.js.erb | 0 app/views/managements/enroll_list.html.erb | 0 app/views/managements/enroll_list.js.erb | 0 .../managements/evaluate_recod_time.js.erb | 0 .../managements/evaluate_records.html.erb | 0 app/views/managements/evaluate_records.js.erb | 0 .../managements/graduation_standard.html.erb | 0 app/views/managements/hidden_course.js.erb | 0 .../identity_authentication.html.erb | 0 .../identity_authentication.js.erb | 0 .../managements/import_course_members.js.erb | 0 .../managements/import_departments.js.erb | 0 .../import_student_accounts.js.erb | 4 +- app/views/managements/index.html.erb | 0 app/views/managements/leave_message.html.erb | 0 app/views/managements/leave_message.js.erb | 0 .../managements/major_information.html.erb | 0 app/views/managements/messages_list.html.erb | 0 app/views/managements/messages_list.js.erb | 0 app/views/managements/migrate_class.js.erb | 0 .../migrate_data_and_script.js.erb | 0 .../mirror_picture_shixuns.html.erb | 0 .../managements/mirror_picture_shixuns.js.erb | 0 app/views/managements/mirror_replace.js.erb | 0 .../managements/mirror_repository.html.erb | 0 .../managements/mirror_repository.js.erb | 0 app/views/managements/mirror_search.js.erb | 0 app/views/managements/modify_mirror.js.erb | 0 app/views/managements/modify_script.html.erb | 0 app/views/managements/mul_statics.html.erb | 0 app/views/managements/mul_test.html.erb | 0 app/views/managements/myshixun_info.html.erb | 0 app/views/managements/myshixuns.html.erb | 0 app/views/managements/myshixuns.js.erb | 0 app/views/managements/new_major.js.erb | 0 .../managements/new_score_indicator.js.erb | 0 app/views/managements/partners.html.erb | 37 - app/views/managements/partners.js.erb | 2 - app/views/managements/profession.html.erb | 0 app/views/managements/profession.js.erb | 0 .../professional_authentication.html.erb | 0 .../professional_authentication.js.erb | 0 app/views/managements/project_list.html.erb | 0 app/views/managements/project_list.js.erb | 0 .../managements/publish_shixuns.html.erb | 0 app/views/managements/publish_shixuns.js.erb | 0 app/views/managements/published_career.js.erb | 0 .../reject_authentication_pro.js.erb | 0 .../managements/remove_auth_school.js.erb | 0 app/views/managements/remove_manager.js.erb | 0 app/views/managements/rename_class.js.erb | 0 .../managements/rename_tech_system.js.erb | 0 app/views/managements/schooladd.html.erb | 130 - app/views/managements/schoolcontrast.html.erb | 147 - .../managements/schoolstatistics.html.erb | 101 - .../search_authorization_school.js.erb | 0 app/views/managements/search_manager.js.erb | 0 app/views/managements/search_school.js.erb | 0 app/views/managements/search_user.js.erb | 13 +- app/views/managements/setting_banner.html.erb | 0 app/views/managements/setting_banner.js.erb | 0 .../managements/shixun_authorization.html.erb | 0 .../managements/shixun_authorization.js.erb | 0 .../managements/shixun_feedback.html.erb | 0 app/views/managements/shixun_feedback.js.erb | 0 .../shixun_feedback_message.html.erb | 46 +- .../shixun_feedback_message.js.erb | 3 +- app/views/managements/shixun_member.html.erb | 0 app/views/managements/shixun_member.js.erb | 0 .../managements/shixun_quality_score.html.erb | 0 .../managements/shixun_quality_score.js.erb | 0 .../managements/shixun_setting_list.html.erb | 0 .../managements/shixun_setting_list.js.erb | 0 app/views/managements/shixun_task.html.erb | 0 app/views/managements/shixun_task.js.erb | 0 app/views/managements/shixuns.html.erb | 0 app/views/managements/shixuns.js.erb | 0 .../subject_authorization.html.erb | 0 .../managements/subject_authorization.js.erb | 0 .../managements/subject_level_system.html.erb | 3 - .../managements/subject_level_system.js.erb | 1 - .../managements/subject_setting_list.html.erb | 0 .../managements/subject_setting_list.js.erb | 0 .../managements/task_pass_template2.html.erb | 0 .../managements/task_pass_template2.js.erb | 0 app/views/managements/tech_system.html.erb | 0 app/views/managements/tech_system.js.erb | 0 app/views/managements/training_2018.html.erb | 0 app/views/managements/training_2018.js.erb | 0 .../managements/trial_authorization.html.erb | 85 +- .../managements/trial_authorization.js.erb | 0 .../trial_authorization_operation.js.erb | 0 app/views/managements/unit.html.erb | 0 app/views/managements/unit.js.erb | 0 .../up_or_down_school_image.js.erb | 0 .../update_depart_identifier.js.erb | 0 .../managements/update_department.js.erb | 0 .../managements/update_host_count.js.erb | 0 app/views/managements/update_mirror.js.erb | 0 app/views/managements/update_notice.html.erb | 12 +- .../managements/update_pay_status.js.erb | 0 .../managements/update_school_image.js.erb | 0 app/views/managements/update_user.html.erb | 0 app/views/managements/upload_logo.html.erb | 0 app/views/managements/users.html.erb | 97 +- app/views/managements/users.js.erb | 0 app/views/managements/users_trial.html.erb | 0 app/views/managements/users_trial.js.erb | 0 app/views/mark_down/example.html.erb | 0 .../members/_delete_message_tip.html.erb | 0 .../members/allow_to_join_project.js.erb | 0 app/views/members/appliedproject.js.erb | 0 app/views/members/autocomplete.js.erb | 0 app/views/members/create.js.erb | 0 app/views/members/destroy.js.erb | 0 app/views/members/index.api.rsb | 0 .../refused_allow_to_join_project.js.erb | 0 app/views/members/show.api.rsb | 0 app/views/members/update.js.erb | 0 app/views/memos/_attachments_links.html.erb | 0 app/views/memos/_common_reply_box.html.erb | 0 app/views/memos/_form.html.erb | 0 app/views/memos/_memo_all_replies.html.erb | 0 app/views/memos/_my_count_message.html.erb | 0 .../memos/_my_show_count_message.html.erb | 0 app/views/memos/_new.html.erb | 0 app/views/memos/_praise_tread.html.erb | 0 app/views/memos/_reply_box.html.erb | 0 app/views/memos/_reply_message.html.erb | 0 app/views/memos/_topic_form.html.erb | 0 app/views/memos/create.js.erb | 0 app/views/memos/destroy.js.erb | 0 app/views/memos/edit.html.erb | 0 app/views/memos/message_replies.js.erb | 0 app/views/memos/new.html.erb | 0 app/views/memos/new.js.erb | 0 app/views/memos/quote.js.erb | 0 app/views/memos/show.html.erb | 0 app/views/memos/show.js.erb | 0 app/views/memos/update.js.erb | 0 app/views/messages/_common_reply_box.html.erb | 0 app/views/messages/_contest_show.html.erb | 0 .../messages/_contest_show_replies.html.erb | 0 app/views/messages/_course_new.html.erb | 0 app/views/messages/_course_show.html.erb | 0 app/views/messages/_course_show_old.html.erb | 0 .../messages/_course_show_replies.html.erb | 0 app/views/messages/_form.html.erb | 0 app/views/messages/_form_course.html.erb | 0 app/views/messages/_form_project.html.erb | 0 .../messages/_join_org_subfield_menu.html.erb | 0 .../messages/_message_all_replies.html.erb | 0 app/views/messages/_message_reply.html.erb | 0 app/views/messages/_org_show_replies.html.erb | 0 .../messages/_org_subfield_show.html.erb | 0 .../messages/_project_new_topic.html.erb | 0 .../_project_rereply_message.html.erb | 0 app/views/messages/_project_show.html.erb | 0 .../messages/_project_show_replies.html.erb | 0 app/views/messages/_reply_message.html.erb | 0 .../messages/_show_org_subfields.html.erb | 0 app/views/messages/destroy.js.erb | 0 app/views/messages/edit.html.erb | 0 .../messages/get_subfield_on_click_org.js.erb | 0 app/views/messages/join_org_subfield.js.erb | 0 app/views/messages/join_org_subfields.js.erb | 0 app/views/messages/message_replies.js.erb | 0 app/views/messages/new.html.erb | 0 app/views/messages/quote.js.erb | 0 app/views/messages/reply.js.erb | 0 app/views/messages/show.html.erb | 0 app/views/messages/show.js.erb | 0 app/views/messages/sticky_topic.js.erb | 0 app/views/my/_apply_add_department.html.erb | 0 app/views/my/_apply_add_school.html.erb | 0 app/views/my/_block.html.erb | 0 app/views/my/_edit_account.html.erb | 0 app/views/my/_show_account.html.erb | 0 app/views/my/_sidebar.html.erb | 0 app/views/my/account.html.erb | 8 +- app/views/my/account.js.erb | 0 app/views/my/blocks/_assiagn_issue.html.erb | 0 app/views/my/blocks/_calendar.html.erb | 0 app/views/my/blocks/_documents.html.erb | 0 .../my/blocks/_issuesassignedtome.html.erb | 0 .../my/blocks/_issuesreportedbyme.html.erb | 0 app/views/my/blocks/_issueswatched.html.erb | 0 app/views/my/blocks/_news.html.erb | 0 app/views/my/blocks/_timelog.html.erb | 0 app/views/my/clear_user_avatar_temp.js.erb | 0 app/views/my/destroy.html.erb | 0 app/views/my/page.html.erb | 0 app/views/my/page.js.erb | 0 app/views/my/page2.js.erb | 0 app/views/my/page_layout.html.erb | 0 app/views/my/password.html.erb | 0 app/views/my/password.js.erb | 0 app/views/my/save_user_avatar.js.erb | 0 app/views/myshixuns/_achieve_ways.html.erb | 0 app/views/myshixuns/_myshixun_top.html.erb | 0 app/views/myshixuns/search_file_list.js.erb | 0 app/views/news/_contest_news.html.erb | 0 app/views/news/_contest_news_detail.html.erb | 0 app/views/news/_contest_news_new.html.erb | 0 app/views/news/_contest_show.html.erb | 0 app/views/news/_course_form.html.erb | 0 app/views/news/_course_news.html.erb | 0 app/views/news/_course_news_detail.html.erb | 0 app/views/news/_course_news_list.html.erb | 0 app/views/news/_course_news_new.html.erb | 0 app/views/news/_course_show.html.erb | 0 .../news/_edit_for_org_subfield.html.erb | 0 app/views/news/_form.html.erb | 0 app/views/news/_news.html.erb | 0 app/views/news/_news_all_replies.html.erb | 0 app/views/news/_news_replies_detail.html.erb | 0 app/views/news/_organization_show.html.erb | 0 app/views/news/_project_form.html.erb | 0 app/views/news/_project_news.html.erb | 0 app/views/news/_project_news_detail.html.erb | 0 app/views/news/_project_news_new.html.erb | 0 app/views/news/_project_show.html.erb | 0 app/views/news/edit.html.erb | 0 app/views/news/index.api.rsb | 0 app/views/news/index.html.erb | 0 app/views/news/index.js.erb | 0 app/views/news/new.html.erb | 0 app/views/news/show.html.erb | 0 app/views/news/show.js.erb | 0 app/views/newsold/_form.html.erb | 0 app/views/newsold/_news.html.erb | 0 app/views/newsold/edit.html.erb | 0 app/views/newsold/index.api.rsb | 0 app/views/newsold/index.html.erb | 0 app/views/newsold/new.html.erb | 0 app/views/newsold/show.html.erb | 0 app/views/no_uses/_form.html.erb | 0 app/views/no_uses/_set_no_use.js.erb | 0 app/views/no_uses/edit.html.erb | 0 app/views/no_uses/index.html.erb | 0 app/views/no_uses/new.html.erb | 0 app/views/no_uses/show.html.erb | 0 app/views/open_source_projects/_form.html.erb | 0 .../open_source_projects/_os_project.html.erb | 0 .../open_source_projects/_show_bug.html.erb | 0 .../open_source_projects/_show_memo.html.erb | 0 .../_show_topics.html.erb | 0 .../open_source_projects/allbug.html.erb | 0 app/views/open_source_projects/edit.html.erb | 0 app/views/open_source_projects/index.html.erb | 0 .../master_apply.html.erb | 0 app/views/open_source_projects/new.html.erb | 0 app/views/open_source_projects/show.html.erb | 0 .../open_source_projects/showbug.html.erb | 0 .../open_source_projects/showmemo.html.erb | 0 app/views/org_courses/create.js.erb | 0 app/views/org_courses/destroy.js.erb | 0 .../_attachment.html.erb | 0 .../_document_show_replies.html.erb | 0 .../org_document_comments/_form.html.erb | 0 app/views/org_document_comments/_new.html.erb | 0 .../_reply_form.html.erb | 0 ..._show_custom_org_document_comment.html.erb | 0 .../_simple_ke_reply_form.html.erb | 0 .../org_document_comments/add_reply.js.erb | 0 .../add_reply_in_doc.js.erb | 0 .../org_document_comments/destroy.js.erb | 0 app/views/org_document_comments/edit.html.erb | 0 .../org_document_comments/index.html.erb | 0 app/views/org_document_comments/new.html.erb | 0 app/views/org_document_comments/quote.js.erb | 0 app/views/org_document_comments/reply.js.erb | 0 app/views/org_document_comments/show.html.erb | 0 app/views/org_document_comments/show.js.erb | 0 app/views/org_document_comments/update.js.erb | 0 app/views/org_member/create.js.erb | 0 app/views/org_member/deleteOrgMember.js.erb | 0 app/views/org_member/destroy.js.erb | 0 .../org_member/org_member_autocomplete.js.erb | 0 app/views/org_member/org_member_paging.js.erb | 0 app/views/org_member/update.js.erb | 0 app/views/org_projects/create.js.erb | 0 app/views/org_projects/destroy.js.erb | 0 app/views/org_subfields/_resource.html.erb | 0 .../org_subfields/_show_details.html.erb | 0 .../org_subfields/_show_post_type.html.erb | 0 app/views/org_subfields/create.js.erb | 0 app/views/org_subfields/destroy.js.erb | 0 app/views/org_subfields/show.html.erb | 0 app/views/org_subfields/show.js.erb | 0 app/views/org_subfields/update.js.erb | 0 .../org_subfields/update_priority.js.erb | 0 app/views/org_subfields/update_status.js.erb | 0 app/views/org_subfields/update_sub_dir.js.erb | 0 .../_applied_organization_domain_tip.html.erb | 0 .../organizations/_join_course_menu.html.erb | 0 .../organizations/_join_project_menu.html.erb | 0 .../_link_subfield_more.html.erb | 0 app/views/organizations/_math_js.html.erb | 0 .../_new_org_avatar_form.html.erb | 0 app/views/organizations/_org2_footer.html.erb | 0 .../organizations/_org_activities.html.erb | 0 .../organizations/_org_avater_swap.html.erb | 0 .../organizations/_org_container.html.erb | 0 app/views/organizations/_org_content.html.erb | 0 .../organizations/_org_course_create.html.erb | 0 .../_org_course_homework.html.erb | 0 .../_org_course_message.html.erb | 0 .../organizations/_org_course_news.html.erb | 0 .../organizations/_org_course_poll.html.erb | 0 .../organizations/_org_custom_admin.html.erb | 0 .../organizations/_org_custom_header.html.erb | 0 .../organizations/_org_custom_left1.html.erb | 0 .../organizations/_org_custom_left2.html.erb | 0 .../organizations/_org_custom_left3.html.erb | 0 .../organizations/_org_custom_right1.html.erb | 0 .../organizations/_org_custom_right2.html.erb | 0 .../organizations/_org_custom_right3.html.erb | 0 .../_org_document_post_reply.html.erb | 0 .../organizations/_org_field_menu.html.erb | 0 .../_org_left_subfield_list.html.erb | 0 .../_org_logined_header.html.erb | 0 .../organizations/_org_member_list.html.erb | 0 app/views/organizations/_org_members.html.erb | 0 .../_org_message_post_reply.html.erb | 0 .../_org_new_course_act_list.html.erb | 0 .../_org_new_course_create.html.erb | 0 .../_org_new_course_homework.html.erb | 0 .../_org_new_course_message.html.erb | 0 .../_org_new_course_news.html.erb | 0 .../_org_new_course_pic.html.erb | 0 .../_org_new_course_poll.html.erb | 0 .../organizations/_org_new_forum.html.erb | 0 .../_org_new_forum_list.html.erb | 0 .../organizations/_org_new_forum_pic.html.erb | 0 .../_org_new_forum_reply.html.erb | 0 .../_org_new_project_act_list.html.erb | 0 .../_org_new_project_create.html.erb | 0 .../_org_new_project_issues.html.erb | 0 .../_org_new_project_message.html.erb | 0 .../_org_new_project_pic.html.erb | 0 .../organizations/_org_new_resource.html.erb | 0 .../_org_project_activities.html.erb | 0 .../organizations/_org_project_issue.html.erb | 0 .../organizations/_org_students_list.html.erb | 0 .../organizations/_org_subdomain.html.erb | 0 .../_org_subfield_leftD.html.erb | 0 .../_org_subfield_leftD_default.html.erb | 0 .../_org_subfield_leftM1.html.erb | 0 .../_org_subfield_leftM1_default.html.erb | 0 .../_org_subfield_leftM2.html.erb | 0 .../_org_subfield_leftM2_default.html.erb | 0 .../_org_subfield_leftMD.html.erb | 0 .../_org_subfield_leftMD_default.html.erb | 0 .../_org_subfield_leftT.html.erb | 0 .../_org_subfield_leftT_default.html.erb | 0 .../_org_subfield_message.html.erb | 0 .../organizations/_org_subfield_news.html.erb | 0 .../_org_subfield_rightD.html.erb | 0 .../_org_subfield_rightM.html.erb | 0 .../_org_subfield_rightM2.html.erb | 0 .../_org_subfield_rightT.html.erb | 0 .../_org_subfield_rightT_default.html.erb | 0 .../organizations/_org_teachers_list.html.erb | 0 .../_organization_content_extension.html.erb | 0 .../_organization_message_ajax_tip.html.erb | 0 .../organizations/_project_create.html.erb | 0 .../organizations/_project_message.html.erb | 0 .../_setting_excellent_students.html.erb | 0 .../_setting_excellent_teachers.html.erb | 0 app/views/organizations/_show_custom.html.erb | 0 .../_show_custom_org_subfield.html.erb | 0 .../organizations/_show_home_page.html.erb | 0 .../organizations/_show_org_document.html.erb | 0 .../organizations/_show_students.html.erb | 0 .../organizations/_show_teachers.html.erb | 0 app/views/organizations/_show_type2.html.erb | 0 .../organizations/_subfield_list.html.erb | 0 .../_subfield_sub_domains_list.html.erb | 0 app/views/organizations/_unlogged_tip.js.erb | 0 app/views/organizations/acts.html.erb | 0 .../agree_apply_subdomain.js.erb | 0 .../organizations/apply_subdomain.js.erb | 0 .../organizations/autocomplete_search.js.erb | 0 .../organizations/cancel_homepage.js.erb | 0 app/views/organizations/check_uniq.js.erb | 0 .../organizations/check_uniq_domain.js.erb | 0 app/views/organizations/courses.html.erb | 0 app/views/organizations/courses.js.erb | 0 app/views/organizations/create.js.erb | 0 app/views/organizations/destroy.js.erb | 0 app/views/organizations/edit.html.erb | 0 .../organizations/hide_org_subfield.js.erb | 0 .../organizations/join_course_menu.js.erb | 0 app/views/organizations/join_courses.js.erb | 0 .../organizations/join_project_menu.js.erb | 0 app/views/organizations/join_projects.js.erb | 0 app/views/organizations/members.html.erb | 0 .../organizations/more_org_courses.js.erb | 0 .../organizations/more_org_projects.js.erb | 0 .../organizations/more_org_submains.js.erb | 0 app/views/organizations/new.html.erb | 0 .../org_resources_subfield.js.erb | 0 .../org_subfield_message_edit.html.erb | 0 .../org_subfield_rightT_default.html.erb | 0 app/views/organizations/projects.html.erb | 0 app/views/organizations/projects.js.erb | 0 .../refused_apply_subdomain.js.erb | 0 .../reject_apply_subdomain.js.erb | 0 .../reset_excellent_student.js.erb | 0 .../reset_excellent_teacher.js.erb | 0 app/views/organizations/search_courses.js.erb | 0 .../organizations/search_projects.js.erb | 0 .../set_excellent_student.js.erb | 0 .../set_excellent_teacher.js.erb | 0 app/views/organizations/set_homepage.js.erb | 0 app/views/organizations/setting.html.erb | 0 app/views/organizations/show.html.erb | 0 app/views/organizations/show.js.erb | 0 .../organizations/show_org_subfield.js.erb | 0 app/views/organizations/students.html.erb | 0 app/views/organizations/students.js.erb | 0 app/views/organizations/teacher_search.js.erb | 0 app/views/organizations/teachers.html.erb | 0 app/views/organizations/teachers.js.erb | 0 .../update_field_by_admin.js.erb | 0 app/views/poll/_alert.html.erb | 0 app/views/poll/_cancel_poll.html.erb | 0 app/views/poll/_choice_show.html.erb | 0 app/views/poll/_commit_alert.html.erb | 0 app/views/poll/_edit_MC.html.erb | 0 app/views/poll/_edit_MCQ.html.erb | 0 app/views/poll/_edit_form.html.erb | 0 app/views/poll/_edit_head.html.erb | 0 app/views/poll/_edit_mulit.html.erb | 0 app/views/poll/_edit_single.html.erb | 0 app/views/poll/_end_notice.html.erb | 0 app/views/poll/_fresh_about.html | 0 app/views/poll/_fresh_write.html | 0 app/views/poll/_multi_answers.html.erb | 0 app/views/poll/_new_MC.html.erb | 0 app/views/poll/_new_MCQ.html.erb | 0 app/views/poll/_new_head.html.erb | 0 app/views/poll/_new_mulit.html.erb | 0 app/views/poll/_new_question.html.erb | 0 app/views/poll/_new_single.html.erb | 0 app/views/poll/_other_poll.html.erb | 0 app/views/poll/_poll.html.erb | 0 app/views/poll/_poll_content.html.erb | 0 app/views/poll/_poll_deal_btn.html.erb | 0 app/views/poll/_poll_form.html.erb | 0 app/views/poll/_poll_index_tab.html.erb | 0 app/views/poll/_poll_list.html.erb | 0 app/views/poll/_poll_question.html.erb | 0 app/views/poll/_poll_republish.html.erb | 0 app/views/poll/_poll_save.html.erb | 0 app/views/poll/_poll_setting.html.erb | 0 app/views/poll/_poll_show.html.erb | 0 .../poll/_poll_statistics_result.html.erb | 0 app/views/poll/_poll_submit.html.erb | 0 app/views/poll/_poll_tool_bar.html.erb | 0 app/views/poll/_polls_list.html.erb | 0 app/views/poll/_publish_notice.html.erb | 0 app/views/poll/_quiz_answers.html.erb | 0 app/views/poll/_select_poll_list.html.erb | 0 app/views/poll/_show_MC.html.erb | 0 app/views/poll/_show_MCQ.html.erb | 0 app/views/poll/_show_MCQ_result.html.erb | 0 app/views/poll/_show_MC_result.html.erb | 0 app/views/poll/_show_head.html.erb | 0 app/views/poll/_show_mulit.html.erb | 0 app/views/poll/_show_mulit_result.html.erb | 0 app/views/poll/_show_single.html.erb | 0 app/views/poll/_show_single_result.html.erb | 0 app/views/poll/_student_poll.html.erb | 0 .../poll/_total_questions_score.html.erb | 0 app/views/poll/add_answer.html.erb | 0 app/views/poll/add_to_exercise_bank.js.erb | 0 app/views/poll/commit_answer.js.erb | 0 app/views/poll/commit_poll.js.erb | 0 app/views/poll/create.js.erb | 0 app/views/poll/create_poll_question.js.erb | 0 app/views/poll/delete_poll_question.js.erb | 0 app/views/poll/destroy.js.erb | 0 app/views/poll/edit.html.erb | 0 app/views/poll/end_notice.js.erb | 0 app/views/poll/import_poll.js.erb | 0 app/views/poll/index.html.erb | 0 app/views/poll/index.js.erb | 0 app/views/poll/new.html.erb | 0 app/views/poll/other_poll.js.erb | 0 app/views/poll/poll_result.html.erb | 0 app/views/poll/publish_notice.js.erb | 0 app/views/poll/save_poll.js.erb | 0 app/views/poll/set_public.js.erb | 0 app/views/poll/show.html.erb | 0 app/views/poll/statistics_result.html.erb | 0 app/views/poll/statistics_result.js.erb | 0 app/views/poll/student_poll_list.html.erb | 388 +- app/views/poll/student_poll_list.js.erb | 0 app/views/poll/update.js.erb | 0 app/views/poll/update_poll_question.js.erb | 0 app/views/poll/update_question_num.js.erb | 0 .../praise_tread/_activity_praise.html.erb | 0 app/views/praise_tread/_edu_praise.html.erb | 0 app/views/praise_tread/_praise.html.erb | 0 app/views/praise_tread/_praise_tread.html.erb | 0 app/views/praise_tread/_tread.html.erb | 0 app/views/praise_tread/praise_minus.js.erb | 0 app/views/praise_tread/praise_plus.js.erb | 0 app/views/praise_tread/tread_minus.js.erb | 0 app/views/praise_tread/tread_plus.js.erb | 0 app/views/previews/issue.html.erb | 0 app/views/projects/Copy of show.html.erb | 0 app/views/projects/_act_attachments.html.erb | 0 app/views/projects/_act_issues.html.erb | 0 app/views/projects/_act_messages.html.erb | 0 .../projects/_act_training_tasks.html.erb | 0 app/views/projects/_applied_project.html.erb | 0 app/views/projects/_applied_status.html.erb | 0 app/views/projects/_attachment_acts.html.erb | 0 .../_code_submit_score_index.html.erb | 0 .../projects/_comment_reply_detail.html.erb | 0 app/views/projects/_course.html.erb | 0 .../projects/_delete_member_pop.html.erb | 0 .../projects/_development_group.html.erb | 0 app/views/projects/_edit.html.erb | 0 app/views/projects/_file_score_index.html.erb | 0 app/views/projects/_form.html.erb | 0 app/views/projects/_form_new.html.erb | 0 app/views/projects/_friend_group.html.erb | 0 app/views/projects/_history.html.erb | 0 app/views/projects/_homeworkupload.html.erb | 0 .../_homeworkupload_homeworkfile.html.erb | 0 .../_homeworkupload_homeworkproject.html.erb | 0 app/views/projects/_invite_code.html.erb | 0 .../projects/_issue_score_index.html.erb | 0 app/views/projects/_join_project.html.erb | 0 .../projects/_journal_comment_reply.html.erb | 0 app/views/projects/_member_div.html.erb | 0 app/views/projects/_member_list.html.erb | 0 app/views/projects/_members_box.html.erb | 0 app/views/projects/_new_homework.html.erb | 0 app/views/projects/_new_join.html.erb | 0 app/views/projects/_new_respond.html.erb | 0 app/views/projects/_newproject_show.html.erb | 0 app/views/projects/_news_score_index.html.erb | 0 app/views/projects/_no_data.html.erb | 0 .../projects/_project._attachment.html.erb | 0 app/views/projects/_project.html.erb | 0 .../projects/_project_activities.html.erb | 0 .../projects/_project_attachment.html.erb | 0 .../_project_comment_reply_detail.html.erb | 0 app/views/projects/_project_commit.html.erb | 0 app/views/projects/_project_create.html.erb | 0 .../projects/_project_intro_content.html.erb | 0 .../_project_issue_comments_reply.html.erb | 0 ...oject_issue_comments_reply_detail.html.erb | 0 .../projects/_project_issue_contents.html.erb | 0 .../projects/_project_issue_detail.html.erb | 0 .../_project_issue_expand_show.html.erb | 0 .../projects/_project_issue_reply.html.erb | 0 .../_project_journal_comment_reply.html.erb | 0 app/views/projects/_project_jours.html.erb | 0 .../projects/_project_member_list.html.erb | 0 app/views/projects/_project_members.html.erb | 0 .../_project_message_contents.html.erb | 0 .../_project_message_post_reply.html.erb | 0 .../_project_message_replies.html.erb | 0 app/views/projects/_project_news.html.erb | 0 .../projects/_project_news_replies.html.erb | 0 .../projects/_project_reply_banner.html.erb | 0 .../projects/_project_score_index.html.erb | 0 .../_projects_topic_score_index.html.erb | 0 app/views/projects/_regested.html.erb | 0 app/views/projects/_rep_static.html.erb | 0 app/views/projects/_reply_to.html.erb | 0 .../_reposistory_destory_pop.html.erb | 0 app/views/projects/_research_team.html.erb | 0 .../projects/_show_projects_score.html.erb | 0 app/views/projects/_show_unlogged.html.erb | 0 app/views/projects/_tools_expand.html.erb | 0 app/views/projects/_tracker_project.html.erb | 0 .../_training_child_project_exec.html.erb | 0 .../_upload_project_files_list.html.erb | 0 .../_upload_project_files_on_navbar.html.erb | 0 app/views/projects/add_script.js.erb | 0 .../projects/change_project_type.html.erb | 0 .../projects/code_submit_score_index.js.erb | 0 app/views/projects/copy.html.erb | 0 app/views/projects/course.html.erb | 0 app/views/projects/create.js.erb | 0 app/views/projects/delete_member_pop.js.erb | 0 app/views/projects/destroy.html.erb | 0 app/views/projects/destroy.js.erb | 0 app/views/projects/destroy_repository.js.erb | 0 app/views/projects/enshrine.html.erb | 0 app/views/projects/exit_project.js.erb | 0 app/views/projects/feedback.html.erb | 0 app/views/projects/file.html.erb | 0 app/views/projects/file_score_index.js.erb | 0 app/views/projects/files_tags.html.erb | 0 app/views/projects/finishcourse.js.erb | 0 app/views/projects/focus.html.erb | 0 app/views/projects/forked_pop.js.erb | 0 app/views/projects/index.api.rsb | 0 app/views/projects/index.html.erb | 0 app/views/projects/investor.html.erb | 0 app/views/projects/invite_members.html.erb | 0 .../projects/invite_members_by_mail.html.erb | 0 app/views/projects/issue.html.erb | 0 app/views/projects/issue_score_index.js.erb | 0 app/views/projects/join_project.js.erb | 0 app/views/projects/list_members.html.erb | 0 app/views/projects/member.html.erb | 0 app/views/projects/member.js.erb | 0 app/views/projects/member_forked.html.erb | 0 app/views/projects/mission.html.erb | 0 app/views/projects/modules.js.erb | 0 app/views/projects/new.html.erb | 0 app/views/projects/new_join.js.erb | 0 app/views/projects/news_score_index.js.erb | 0 app/views/projects/on.html.erb | 0 app/views/projects/online_dev.html.erb | 0 app/views/projects/project_respond.html.erb | 0 app/views/projects/project_respond.js.erb | 0 app/views/projects/project_score_index.js.erb | 0 .../projects/project_watcherlist.html.erb | 0 .../projects_topic_score_index.js.erb | 0 app/views/projects/search.html.erb | 0 app/views/projects/search_none_user.js.erb | 0 .../search_public_orgs_not_in_project.js.erb | 0 app/views/projects/send_mail_to_member.js.erb | 0 .../projects/set_public_or_private.js.erb | 0 app/views/projects/settings.html.erb | 0 .../projects/settings/_activities.html.erb | 0 .../projects/settings/_added_orgs.html.erb | 0 app/views/projects/settings/_boards.html.erb | 0 .../settings/_issue_categories.html.erb | 0 .../projects/settings/_join_org.html.erb | 0 app/views/projects/settings/_members.html.erb | 0 .../projects/settings/_members_list.html.erb | 0 app/views/projects/settings/_modules.html.erb | 0 .../settings/_new_activities.html.erb | 0 .../projects/settings/_new_edit.html.erb | 0 .../settings/_new_issue_categories.html.erb | 0 .../projects/settings/_new_members.html.erb | 0 .../projects/settings/_new_modules.html.erb | 0 .../settings/_new_repositories.html.erb | 0 .../settings/_new_trainig_task.html.erb | 0 .../projects/settings/_new_versions.html.erb | 0 .../settings/_new_versions_form.html.erb | 0 .../projects/settings/_rep_forge.html.erb | 0 .../projects/settings/_rep_gitlab.html.erb | 0 .../projects/settings/_repositories.html.erb | 0 .../_training_project_exec_tip.html.erb | 0 .../_training_projects_filter_tip.html.erb | 0 .../projects/settings/_versions.html.erb | 0 app/views/projects/settings/_wiki.html.erb | 0 app/views/projects/share.html.erb | 0 app/views/projects/show-old.html.erb | 0 app/views/projects/show.api.rsb | 0 app/views/projects/show.html.erb | 0 app/views/projects/show.js.erb | 0 app/views/projects/show_new.html.erb | 0 app/views/projects/show_projects_score.js.erb | 0 app/views/projects/statistics.html.erb | 0 app/views/projects/store_mine.html.erb | 0 app/views/projects/store_mine.js.erb | 0 app/views/projects/task_execute.js.erb | 0 .../training_chiled_project_exec.js.erb | 0 .../projects/training_project_execute.js.erb | 0 .../projects/training_project_update.js.erb | 0 .../projects/training_task_status.js.erb | 0 app/views/projects/watcherlist.html.erb | 0 .../pull_requests/_error_message.html.erb | 0 app/views/pull_requests/_form.html.erb | 0 app/views/pull_requests/_new.html.erb | 0 .../_pull_request_changes.html.erb | 0 .../_pull_request_comments.html.erb | 0 .../_pull_request_commits.html.erb | 0 .../_pull_request_container.html.erb | 0 .../_pull_requests_list.html.erb | 0 app/views/pull_requests/_show.html.erb | 0 .../pull_requests/_show_container.html.erb | 0 app/views/pull_requests/_tip.html.erb | 0 .../pull_requests/accept_pull_request.js.erb | 0 app/views/pull_requests/create.html.erb | 0 app/views/pull_requests/create.js.erb | 0 app/views/pull_requests/index.html.erb | 0 app/views/pull_requests/index.js.erb | 0 app/views/pull_requests/new.html.erb | 0 app/views/pull_requests/new.js.erb | 0 .../pull_requests/pull_request_changes.js.erb | 0 .../pull_request_comments.js.erb | 0 .../pull_requests/pull_request_commits.js.erb | 0 app/views/pull_requests/show.html.erb | 0 app/views/pull_requests/show.js.erb | 0 .../quality_analysis/_console_output.html.erb | 0 app/views/quality_analysis/_edit.html.erb | 0 app/views/quality_analysis/_header.html.erb | 0 .../quality_analysis/_hightchars.html.erb | 0 .../quality_analysis/_result_list.html.erb | 0 app/views/quality_analysis/_show.html.erb | 0 app/views/quality_analysis/create.html.erb | 0 app/views/quality_analysis/create.js.erb | 0 app/views/quality_analysis/edit.js.erb | 0 .../quality_analysis/error_list.html.erb | 0 app/views/quality_analysis/index.html.erb | 0 app/views/quality_analysis/show.html.erb | 0 app/views/queries/_columns.html.erb | 0 app/views/queries/_filters.html.erb | 0 app/views/queries/_form.html.erb | 0 app/views/queries/edit.html.erb | 0 app/views/queries/index.api.rsb | 0 app/views/queries/index.html.erb | 0 app/views/queries/new.html.erb | 0 .../question_banks/_task_publish.html.erb | 0 .../question_banks/choose_user_course.js.erb | 0 app/views/question_banks/destroy.js.erb | 0 app/views/question_banks/destroy_all.js.erb | 0 app/views/question_banks/index.html.erb | 0 app/views/question_banks/index.js.erb | 0 app/views/question_banks/publish_task.js.erb | 0 .../send_h_bank_to_course.js.erb | 0 app/views/question_banks/set_public.js.erb | 0 app/views/relative_memos/_reply_box.html.erb | 0 app/views/relative_memos/show.html.erb | 0 app/views/reports/_details.html.erb | 0 app/views/reports/_simple.html.erb | 0 app/views/reports/issue_report.html.erb | 0 .../reports/issue_report_details.html.erb | 0 app/views/repositories/_breadcrumbs.html.erb | 0 app/views/repositories/_change_diff.html.erb | 0 .../repositories/_commit_details.html.erb | 0 app/views/repositories/_dir_list.html.erb | 0 .../repositories/_dir_list_content.html.erb | 0 .../repositories/_forked_popbox.html.erb | 0 app/views/repositories/_form.html.erb | 0 app/views/repositories/_form_create.html.erb | 0 .../repositories/_latest_commit.html.erb | 0 .../repositories/_link_to_functions.html.erb | 0 app/views/repositories/_navigation.html.erb | 0 .../repositories/_quality_analysis.html.erb | 0 .../repositories/_related_issues.html.erb | 0 .../repositories/_revision_graph.html.erb | 0 app/views/repositories/_revisions.html.erb | 0 .../repositories/_shixun_breadcrumbs.html.erb | 0 .../repositories/_shixun_dir_list.html.erb | 0 .../_shixun_dir_list_content.html.erb | 0 .../repositories/_shixun_navigation.html.erb | 0 app/views/repositories/_summary.html.erb | 0 app/views/repositories/_top.html.erb | 0 .../repositories/add_related_issue.js.erb | 0 app/views/repositories/annotate.html.erb | 0 app/views/repositories/changes.html.erb | 0 app/views/repositories/commit_diff.html.erb | 0 app/views/repositories/commits.html.erb | 0 app/views/repositories/committers.html.erb | 0 app/views/repositories/diff.html.erb | 0 app/views/repositories/edit.html.erb | 0 app/views/repositories/entry.html.erb | 0 app/views/repositories/forked.js.erb | 0 app/views/repositories/new.html.erb | 2 +- app/views/repositories/new.js.erb | 0 app/views/repositories/newrepo.html.erb | 0 app/views/repositories/newrepo.js.erb | 0 .../repositories/quality_analyses.html.erb | 0 .../repositories/quality_analysis.js.erb | 0 .../repositories/remove_related_issue.js.erb | 0 app/views/repositories/revision.html.erb | 0 app/views/repositories/revisions.html.erb | 0 .../repositories/shixun_commit_diff.html.erb | 0 app/views/repositories/shixun_entry.html.erb | 0 app/views/repositories/shixun_show.html.erb | 2 +- app/views/repositories/show.html.erb | 2 +- app/views/repositories/stats.html.erb | 0 app/views/repositories/to_gitlab.html.erb | 0 app/views/roles/_form.html.erb | 0 app/views/roles/edit.html.erb | 0 app/views/roles/index.api.rsb | 0 app/views/roles/index.html.erb | 0 app/views/roles/new.html.erb | 0 app/views/roles/permissions.html.erb | 0 app/views/roles/show.api.rsb | 0 app/views/school/add_school.js.erb | 0 app/views/school/destroy.js.erb | 0 app/views/school/index.html.erb | 0 app/views/school/upload_logo.html.erb | 0 app/views/search/index.html.erb | 0 app/views/settings/_authentication.html.erb | 0 app/views/settings/_display.html.erb | 0 app/views/settings/_general.html.erb | 0 app/views/settings/_issues.html.erb | 0 app/views/settings/_mail_handler.html.erb | 0 app/views/settings/_notifications.html.erb | 0 app/views/settings/_projects.html.erb | 0 app/views/settings/_repositories.html.erb | 0 app/views/settings/edit.html.erb | 0 app/views/settings/hidden_courses.js.erb | 0 app/views/settings/hidden_non_project.js.erb | 0 app/views/settings/plugin.html.erb | 0 app/views/shares/_form.html.erb | 0 app/views/shares/edit.html.erb | 0 app/views/shares/index.html.erb | 0 app/views/shares/new.html.erb | 0 app/views/shares/show.html.erb | 0 app/views/shares/succ.html.erb | 0 app/views/shield_activities/create.js.erb | 0 app/views/shield_activities/show_acts.js.erb | 0 .../shield_wechat_messages/create.js.erb | 0 .../show_messages.js.erb | 0 app/views/shixuns/_achieve_ways.html.erb | 0 app/views/shixuns/_add_collaborators.html.erb | 0 .../shixuns/_add_collaborators_list.html.erb | 0 .../shixuns/_apply_publish_notice.html.erb | 0 app/views/shixuns/_apply_setnew.html.erb | 0 app/views/shixuns/_authority_pop.html.erb | 0 .../_challenge_statistics_list.html.erb | 0 app/views/shixuns/_change_manager.html.erb | 0 .../_collaborators_change_manager.html.erb | 0 .../shixuns/_collaborators_list.html.erb | 0 app/views/shixuns/_define_scenario.html.erb | 0 app/views/shixuns/_directory_file.html.erb | 0 app/views/shixuns/_entry_content.html.erb | 0 app/views/shixuns/_form.html.erb | 2 +- app/views/shixuns/_jenkins_error.js.erb | 0 app/views/shixuns/_monitor_tip.html.erb | 0 app/views/shixuns/_rank_cell.html.erb | 0 app/views/shixuns/_ranking_list_list.html.erb | 0 app/views/shixuns/_review_shixuns.html.erb | 0 app/views/shixuns/_search.html.erb | 0 .../shixuns/_search_course_list.html.erb | 0 app/views/shixuns/_send_shixuns.html.erb | 0 .../shixuns/_settings_challenges.html.erb | 0 .../_settings_challenges_action_tip.html.erb | 0 .../_settings_challenges_result_tip.html.erb | 0 app/views/shixuns/_settings_edit.html.erb | 21 +- .../shixuns/_settings_repository.html.erb | 0 app/views/shixuns/_settings_show.html.erb | 16 +- .../shixuns/_shixun_breadcrumbs.html.erb | 0 .../shixuns/_shixun_course_search.html.erb | 0 app/views/shixuns/_shixun_item.html.erb | 93 +- app/views/shixuns/_shixun_list.html.erb | 0 .../shixuns/_shixun_major_search.html.erb | 0 app/views/shixuns/_shixun_pob.html.erb | 0 app/views/shixuns/_shixun_reply.html.erb | 0 .../shixuns/_shixun_reply_detail.html.erb | 0 app/views/shixuns/_shixun_top.html.erb | 6 +- app/views/shixuns/_shixun_yx.html | 0 .../shixuns/_statistics_student_cell.html.erb | 0 .../shixuns/_statistics_student_list.html.erb | 0 app/views/shixuns/add_collaborators.js.erb | 0 app/views/shixuns/add_script.js.erb | 0 app/views/shixuns/apply_publish.js.erb | 0 app/views/shixuns/autocompletion.html.erb | 0 .../shixuns/challenge_statistics.html.erb | 0 app/views/shixuns/challenge_statistics.js.erb | 0 app/views/shixuns/change_manager.js.erb | 0 app/views/shixuns/collaborators.html.erb | 0 app/views/shixuns/collaborators.js.erb | 0 app/views/shixuns/collaborators_delete.js.erb | 0 app/views/shixuns/departments.js.erb | 0 app/views/shixuns/edit.html.erb | 0 app/views/shixuns/edit_md.html.erb | 0 app/views/shixuns/entry_edit.js.erb | 0 app/views/shixuns/entry_update.js.erb | 0 app/views/shixuns/fork_list.html.erb | 0 app/views/shixuns/game_webssh.html.erb | 0 app/views/shixuns/index.html.erb | 0 app/views/shixuns/index.js.erb | 0 app/views/shixuns/new.html.erb | 0 app/views/shixuns/operation.js.erb | 0 app/views/shixuns/propaedeutics.html.erb | 0 app/views/shixuns/publish.js.erb | 0 app/views/shixuns/qrcode.html.erb | 0 app/views/shixuns/qrcode.js.erb | 0 app/views/shixuns/ranking_list.html.erb | 0 app/views/shixuns/ranking_list.js.erb | 0 app/views/shixuns/search.js.erb | 0 app/views/shixuns/search_file_list.js.erb | 0 app/views/shixuns/search_user_courses.js.erb | 0 app/views/shixuns/settings.html.erb | 0 app/views/shixuns/settings.js.erb | 0 app/views/shixuns/shixun_discuss.html.erb | 0 app/views/shixuns/shixun_discuss.js.erb | 0 app/views/shixuns/shixun_job_create.js.erb | 0 app/views/shixuns/shixun_job_update.js.erb | 0 app/views/shixuns/shixun_members_added.js.erb | 0 app/views/shixuns/shixun_monitor.js.erb | 0 app/views/shixuns/show.html.erb | 0 app/views/shixuns/statistics.html.erb | 0 .../shixuns/statistics_students.html.erb | 0 app/views/shixuns/statistics_students.js.erb | 0 app/views/shixuns/trainee_list.html.erb | 0 app/views/shixuns/trainee_list.js.erb | 0 app/views/shixuns/update.js.erb | 0 .../shixuns/update_propaedeutics.html.erb | 0 app/views/softapplications/_form.html.erb | 0 app/views/softapplications/_list.html.erb | 0 .../softapplications/_message_history.erb | 0 app/views/softapplications/_new_message.erb | 0 app/views/softapplications/_pre_show.html.erb | 0 app/views/softapplications/back.js.erb | 0 app/views/softapplications/create.js.erb | 0 .../softapplications/create_message.js.erb | 0 app/views/softapplications/edit.html.erb | 0 app/views/softapplications/index.html.erb | 0 app/views/softapplications/more.js.erb | 0 app/views/softapplications/new.html.erb | 0 app/views/softapplications/new_message.js.erb | 0 app/views/softapplications/search.html.erb | 0 app/views/softapplications/search.js.erb | 0 app/views/softapplications/show.html.erb | 0 app/views/ssos/show.html.erb | 0 app/views/stages/_edit.html.erb | 0 app/views/stages/destroy.js.erb | 0 app/views/stages/down_position.js.erb | 0 app/views/stages/edit.js.erb | 0 app/views/stages/up_position.js.erb | 0 app/views/statistics/index.html.erb | 0 app/views/statistics/settings.html.erb | 0 app/views/stores/_search_bar.html.erb | 0 app/views/stores/index.html.erb | 0 app/views/stores/search.html.erb | 0 .../_add_group_member_block.html.erb | 0 .../_add_or_delete_member.html.erb | 0 .../student_work/_add_score_reply.html.erb | 0 .../student_work/_adjust_work_score.html.erb | 0 .../_alert_forbidden_anonymous.html.erb | 0 .../student_work/_change_project.html.erb | 0 .../_choose_group_member.html.erb | 0 app/views/student_work/_code_range.html.erb | 12 +- .../_code_review_results.html.erb | 0 .../student_work/_common_reply_box.html.erb | 0 .../_echart_of_shixun_skills.html.erb | 2 +- .../_evaluation_student_work.html.erb | 0 .../student_work/_evaluation_title.html.erb | 0 .../_evaluation_title_archive.html.erb | 0 .../_evaluation_un_common_title.html.erb | 0 .../_evaluation_un_common_work.html.erb | 0 .../_evaluation_un_group.html.erb | 0 .../_evaluation_un_group_member_work.html.erb | 0 .../_evaluation_un_group_title.html.erb | 0 .../_evaluation_un_group_work.html.erb | 0 .../_evaluation_un_pro_title.html.erb | 0 .../_evaluation_un_pro_work.html.erb | 0 .../_evaluation_un_shixun_title.html.erb | 0 .../_evaluation_un_shixun_work.html.erb | 0 .../_evaluation_un_title.html.erb | 0 .../_evaluation_un_title_archive.erb | 0 .../student_work/_evaluation_un_work.html.erb | 0 .../_evaluation_un_work_archive.html.erb | 0 .../student_work/_evaluation_work.html.erb | 0 .../_evaluation_work_archive.html.erb | 0 .../_group_member_search_list.html.erb | 0 .../student_work/_group_member_work.html.erb | 0 .../student_work/_has_commit_work.html.erb | 0 .../_homework_discuss_detail.html.erb | 0 .../_homework_explanation.html.erb | 0 .../_homework_post_brief.html.erb | 0 .../student_work/_homework_reply.html.erb | 0 .../_homework_reply_detail.html.erb | 0 .../student_work/_homework_setting.html.erb | 0 .../student_work/_import_excel_score.html.erb | 2 +- app/views/student_work/_jour_replay.html.erb | 0 .../_new_pro_student_work.html.erb | 0 app/views/student_work/_new_project.html.erb | 0 .../_new_student_work_alert.html.erb | 0 .../_no_teacher_score_notice.html.erb | 0 app/views/student_work/_praise_alert.html.erb | 0 .../student_work/_relate_project.html.erb | 0 .../student_work/_relate_projects.html.erb | 0 .../student_work/_review_table_div.html.erb | 0 .../student_work/_revise_attachment.html.erb | 0 .../student_work/_score_appeal_box.html.erb | 0 .../student_work/_set_score_rule.html.erb | 0 .../_set_score_rule_detail.html.erb | 0 .../_shixun_evaluate_details.html.erb | 0 .../student_work/_shixun_work_show.html.erb | 2 +- app/views/student_work/_student_work.html.erb | 0 .../_student_work_attachment_form.html.erb | 0 .../student_work/_student_work_list.html.erb | 0 .../_student_work_praise.html.erb | 0 .../_student_work_replies.html.erb | 0 .../student_work/_student_work_score.html.erb | 0 .../_student_work_score_div.html.erb | 0 .../_student_work_score_records.html.erb | 0 .../student_work/_upload_attachment.html.erb | 0 .../student_work/_work_attachments.html.erb | 0 .../_work_attachments_status.html.erb | 0 .../_work_edit_information.html.erb | 0 .../student_work/_work_information.html.erb | 0 .../student_work/add_comments_to_work.js.erb | 0 .../add_group_member_block.js.erb | 0 app/views/student_work/add_score.js.erb | 0 app/views/student_work/add_score_reply.js.erb | 0 .../student_work/add_ultimate_score.js.erb | 0 .../student_work/adjust_review_score.js.erb | 0 app/views/student_work/adjust_score.js.erb | 0 .../student_work/alert_appeal_box.js.erb | 0 .../appeal_anonymous_score.js.erb | 0 .../student_work/cancel_relate_project.js.erb | 0 app/views/student_work/change_project.js.erb | 0 .../student_work/code_review_results.js.erb | 0 .../student_work/commit_summary.html.erb | 0 app/views/student_work/create.js.erb | 0 .../student_work/deal_appeal_score.js.erb | 0 .../student_work/delete_score_comment.js.erb | 0 app/views/student_work/destroy_score.js.erb | 0 .../student_work/destroy_score_reply.js.erb | 0 app/views/student_work/edit.html.erb | 0 .../forbidden_anonymous_comment.js.erb | 0 .../student_work/hide_score_detail.js.erb | 0 .../student_work/homework_discuss.js.erb | 0 .../student_work/homework_setting.js.erb | 0 app/views/student_work/import_score.js.erb | 0 app/views/student_work/index.html.erb | 4 - app/views/student_work/index.js.erb | 0 app/views/student_work/new.html.erb | 0 .../new_student_work_project.js.erb | 0 .../student_work/praise_student_work.js.erb | 0 app/views/student_work/relate_myshixun.js.erb | 0 app/views/student_work/retry_work.js.erb | 0 .../student_work/revise_attachment.js.erb | 0 .../search_course_students.js.erb | 0 .../student_work/search_user_projects.js.erb | 0 .../student_work/set_program_score.html.erb | 0 app/views/student_work/set_score_rule.js.erb | 0 .../student_work/shixun_work_report.html.erb | 6 +- app/views/student_work/show.html.erb | 0 app/views/student_work/show.js.erb | 0 .../student_work/show_allwork_test.html.erb | 0 .../student_work_absence_penalty.html.erb | 0 .../student_work/student_work_project.js.erb | 0 app/views/student_work/update.js.erb | 0 app/views/student_work/view_summary.html.erb | 0 app/views/student_work/work_canrepeat.js.erb | 0 .../_attachment.html.erb | 0 app/views/sub_document_comments/_new.html.erb | 0 .../_show_newstyle.html.erb | 0 .../_show_sub_document.html.erb | 0 .../_show_sub_document_newstyle.html.erb | 0 .../sub_document_comments/add_reply.js.erb | 0 .../sub_document_comments/destroy.js.erb | 0 app/views/sub_document_comments/edit.html.erb | 0 .../sub_document_comments/index.html.erb | 0 app/views/sub_document_comments/new.html.erb | 0 app/views/sub_document_comments/show.html.erb | 0 app/views/sub_document_comments/update.js.erb | 0 app/views/sub_domains/_new.html.erb | 0 app/views/sub_domains/create.js.erb | 0 app/views/sub_domains/destroy.js.erb | 0 .../sub_domains/domain_update_priority.js.erb | 0 app/views/sub_domains/hide_sub_domain.js.erb | 0 app/views/sub_domains/new.html.erb | 0 app/views/sub_domains/new.js.erb | 0 app/views/sub_domains/show.html.erb | 0 app/views/sub_domains/show_sub_domain.js.erb | 0 app/views/sub_domains/update.js.erb | 0 .../subfield_subdomain_dirs/update.js.erb | 0 .../subjects/_add_collaborators.html.erb | 0 app/views/subjects/_b_lesson_content.html.erb | 0 .../subjects/_b_lesson_introduce.html.erb | 0 app/views/subjects/_businessPath_new.html.erb | 0 app/views/subjects/_business_detail.html.erb | 0 .../subjects/_choose_SubjectPath.html.erb | 0 app/views/subjects/_choose_shixun.html.erb | 0 .../subjects/_course_shixun_list.html.erb | 0 .../subjects/_first_tab_statistics.html.erb | 0 .../subjects/_my_course_shixun_list.html.erb | 0 app/views/subjects/_new_or_edit.html.erb | 4 +- app/views/subjects/_new_shixun_list.html.erb | 10 +- .../_new_shixun_subject_list.html.erb | 0 app/views/subjects/_paths_list.html.erb | 19 +- app/views/subjects/_publish_notice.html.erb | 0 .../subjects/_secend_tab_statistics.html.erb | 0 .../subjects/_shixun_search_form.html.erb | 0 .../_shixun_search_form_detail.html.erb | 0 app/views/subjects/_shixun_tab_div.html.erb | 0 app/views/subjects/_subject_createnew.html | 0 app/views/subjects/_subject_item.html.erb | 13 +- app/views/subjects/_subject_list.html.erb | 1 - app/views/subjects/_subject_members.html.erb | 48 +- app/views/subjects/_subject_sendPath.html.erb | 0 .../subjects/_subject_statistics.html.erb | 0 app/views/subjects/_subject_top.html.erb | 0 .../subjects/_third_tab_statistics.html.erb | 0 app/views/subjects/add_collaborators.js.erb | 0 app/views/subjects/add_subject_members.js.erb | 0 app/views/subjects/append_to_stage.js.erb | 0 .../subjects/choose_subject_shixun.js.erb | 0 app/views/subjects/delete_member.js.erb | 0 app/views/subjects/destroy.js.erb | 0 .../subjects/down_member_position.js.erb | 1 - app/views/subjects/edit.html.erb | 0 app/views/subjects/index.html.erb | 0 app/views/subjects/index.js.erb | 0 app/views/subjects/new.html.erb | 0 app/views/subjects/new_subject.js.erb | 0 app/views/subjects/publish.js.erb | 0 app/views/subjects/show.html.erb | 17 - app/views/subjects/statistics.html.erb | 0 app/views/subjects/statistics.js.erb | 0 app/views/subjects/up_member_position.js.erb | 1 - .../_sy_change_manager.html.erb | 0 .../syllabus_member/change_manager.js.erb | 0 .../change_manager_alert.js.erb | 0 app/views/syllabus_member/create.js.erb | 0 app/views/syllabus_member/destroy.js.erb | 0 .../syl_member_autocomplete.js.erb | 0 app/views/syllabus_member/update_rank.js.erb | 0 .../syllabuses/_add_sy_member_box.html.erb | 0 app/views/syllabuses/_courses_list.html.erb | 0 .../syllabuses/_delete_syllabus.html.erb | 0 app/views/syllabuses/_edit_ref.html.erb | 0 .../syllabuses/_join_syllabuses.html.erb | 0 app/views/syllabuses/_my_syllabuses.html.erb | 0 .../syllabuses/_search_course_list.html.erb | 0 app/views/syllabuses/_show_ref.html.erb | 0 .../syllabuses/_sy_send_homework.html.erb | 0 .../syllabuses/_sy_send_resource.html.erb | 0 .../_sy_send_resource_and_homework.html.erb | 0 .../syllabuses/_syllabus_course_list.html.erb | 0 app/views/syllabuses/_syllabus_des.html.erb | 0 .../syllabuses/_syllabus_homeworks.html.erb | 0 app/views/syllabuses/_syllabus_index.html.erb | 0 .../syllabuses/_syllabus_member_list.html.erb | 0 .../syllabuses/_syllabus_members.html.erb | 0 .../syllabuses/_syllabus_post_reply.html.erb | 0 .../syllabuses/_syllabus_resources.html.erb | 0 .../syllabuses/add_sy_member_alert.js.erb | 0 .../syllabuses/choose_user_course.js.erb | 0 app/views/syllabuses/delete_syllabus.js.erb | 0 app/views/syllabuses/edit.html.erb | 0 app/views/syllabuses/edit_ref.js.erb | 0 .../syllabuses/edit_syllabus_eng_name.js.erb | 0 .../syllabuses/edit_syllabus_title.js.erb | 0 app/views/syllabuses/index.html.erb | 0 app/views/syllabuses/index.js.erb | 0 app/views/syllabuses/members.html.erb | 0 app/views/syllabuses/new.html.erb | 0 .../syllabuses/search_not_sy_member.js.erb | 0 .../send_homeworks_to_course.js.erb | 0 .../syllabuses/send_r_and_h_to_course.js.erb | 0 .../send_resources_to_course.js.erb | 0 app/views/syllabuses/show.html.erb | 0 .../syllabuses/syllabus_courselist.html.erb | 0 .../syllabuses/syllabus_courselist.js.erb | 0 .../syllabuses/syllabus_homeworks.js.erb | 0 .../syllabuses/syllabus_resources.js.erb | 0 app/views/syllabuses/update_base_info.js.erb | 0 app/views/syllabuses/update_ref.js.erb | 0 app/views/system_log/access_analysis.html.erb | 0 app/views/system_log/index.html.erb | 0 app/views/system_log/time_analysis.html.erb | 0 app/views/system_messages/index.html.erb | 0 .../tags/_course_attachment_tag_name.erb | 0 app/views/tags/_delete.js.erb | 0 app/views/tags/_new_tag.html.erb | 0 app/views/tags/_new_tag_name.html.erb | 0 app/views/tags/_pagination.html.erb | 0 app/views/tags/_project_tag.html.erb | 0 app/views/tags/_related_tags.html.erb | 0 app/views/tags/_selected_tags.html.erb | 0 app/views/tags/_show_attachments.html.erb | 0 app/views/tags/_show_bids.html.erb | 0 app/views/tags/_show_contests.html.erb | 0 app/views/tags/_show_courses.html.erb | 0 app/views/tags/_show_forums.html.erb | 0 app/views/tags/_show_issues.html.erb | 0 .../tags/_show_open_source_projects.html.erb | 0 app/views/tags/_show_projects.html.erb | 0 app/views/tags/_show_results.html.erb | 0 app/views/tags/_show_users.html.erb | 0 app/views/tags/_sidebar_tags.html.erb | 0 app/views/tags/_syllabus_tag.html.erb | 0 app/views/tags/_tag.html.erb | 0 app/views/tags/_tagEx.html.erb | 0 app/views/tags/_tag_add.html.erb | 0 app/views/tags/_tag_list.html.erb | 0 app/views/tags/_tag_name.html.erb | 0 app/views/tags/_tag_new.html.erb | 0 app/views/tags/_tag_project_new_name.html.erb | 0 app/views/tags/_tag_search_results.html.erb | 0 .../tags/_tag_syllabus_new_name.html.erb | 0 app/views/tags/_tag_user_new_name.html.erb | 0 app/views/tags/_user_tag.html.erb | 0 app/views/tags/add_tag.js.erb | 0 app/views/tags/delete_tag.js.erb | 0 app/views/tags/index.html.erb | 0 app/views/tags/remove_tag.js.erb | 0 app/views/tags/remove_tag_new.js.erb | 0 app/views/tags/show_all.html.erb | 0 app/views/tags/tag_save.js.erb | 0 .../tags/update_org_subfield_tag_name.js.erb | 0 app/views/tags/update_project_tag_name.js.erb | 0 app/views/tags/update_tag_name.js.erb | 0 app/views/tasks/show.html.erb | 0 app/views/test/_message.html.erb | 0 app/views/test/_new.html.erb | 0 app/views/test/bootstrap.html.erb | 0 app/views/test/courselist.html.erb | 0 app/views/test/create.js.erb | 0 app/views/test/destroy.js.erb | 0 app/views/test/index.html.erb | 0 app/views/test/new.js.erb | 0 app/views/test/zip.html.erb | 0 app/views/timelog/_date_range.html.erb | 0 app/views/timelog/_form.html.erb | 0 app/views/timelog/_list.html.erb | 0 app/views/timelog/_report_criteria.html.erb | 0 app/views/timelog/bulk_edit.html.erb | 0 app/views/timelog/edit.html.erb | 0 app/views/timelog/index.api.rsb | 0 app/views/timelog/index.html.erb | 0 app/views/timelog/new.html.erb | 0 app/views/timelog/report.html.erb | 0 app/views/timelog/show.api.rsb | 0 app/views/trackers/_form.html.erb | 0 app/views/trackers/edit.html.erb | 0 app/views/trackers/fields.html.erb | 0 app/views/trackers/index.api.rsb | 0 app/views/trackers/index.html.erb | 0 app/views/trackers/new.html.erb | 0 .../training_tasks/_action_status.html.erb | 0 app/views/training_tasks/_all_list.html.erb | 0 .../training_tasks/_content_list.html.erb | 0 app/views/training_tasks/_detail.html.erb | 0 app/views/training_tasks/_edit.html.erb | 0 app/views/training_tasks/_form.html.erb | 0 .../training_tasks/_issue_replies.html.erb | 0 .../training_tasks/_reply_banner.html.erb | 0 .../training_tasks/_task_attachments.html.erb | 0 .../_training_task_details.html.erb | 0 .../_training_tasks_reply_ke_form.html.erb | 0 app/views/training_tasks/add_journal.js.erb | 0 app/views/training_tasks/add_reply.js.erb | 0 .../training_tasks/delete_journal.js.erb | 0 app/views/training_tasks/edit.html.erb | 0 app/views/training_tasks/index.html.erb | 0 app/views/training_tasks/index.js.erb | 0 app/views/training_tasks/new.html.erb | 0 app/views/training_tasks/reply.js.erb | 0 app/views/training_tasks/show.html.erb | 0 app/views/training_tasks/show.js.erb | 0 app/views/trainings/_upload_img.html.erb | 0 app/views/trainings/enroll.html.erb | 0 app/views/trainings/pay.html.erb | 0 app/views/trainings/result.html.erb | 0 app/views/trainings/show.html.erb | 0 app/views/trainings/test.html.erb | 0 .../users/_activity_new_score_index.html.erb | 0 .../users/_activity_score_index.html.erb | 0 app/views/users/_all_issue_list.html.erb | 0 .../users/_anonymous_evaluation_list.html.erb | 0 .../_applied_organization_sundomain.html.erb | 0 .../users/_applied_project_content.html.erb | 0 app/views/users/_apply_for_homework.html.erb | 0 app/views/users/_apply_for_resource.html.erb | 0 app/views/users/_apply_homework.html.erb | 0 .../_apply_homework_course_message.html.erb | 0 app/views/users/_apply_resource.html.erb | 0 .../_apply_resource_course_message.html.erb | 0 ...ply_resource_course_message_reply.html.erb | 0 app/views/users/_attachment_list.html.erb | 0 app/views/users/_collect_contest.html.erb | 0 app/views/users/_collect_course.html.erb | 0 app/views/users/_collect_project.html.erb | 0 app/views/users/_comment_reply.html.erb | 0 .../users/_comment_reply_detail.html.erb | 0 app/views/users/_contest_create.html.erb | 0 .../_contest_journalsformessage.html.erb | 0 app/views/users/_contest_list.html.erb | 0 .../users/_contest_list_contents.html.erb | 0 app/views/users/_contest_message.html.erb | 0 .../_contest_message_post_reply.html.erb | 0 app/views/users/_contest_news.html.erb | 0 app/views/users/_contest_newslist.html.erb | 0 app/views/users/_contest_work.html.erb | 0 .../users/_contest_work_base_info.html.erb | 0 .../users/_contest_work_post_reply.html.erb | 0 app/views/users/_course_attachment.html.erb | 0 app/views/users/_course_boardlist.html.erb | 3 - app/views/users/_course_create.html.erb | 0 app/views/users/_course_exercise.html.erb | 0 app/views/users/_course_file_form.html.erb | 0 app/views/users/_course_form.html.erb | 0 .../users/_course_graduation_task.html.erb | 0 .../users/_course_graduation_topic.html.erb | 0 app/views/users/_course_homework.html.erb | 0 app/views/users/_course_item.html.erb | 0 .../users/_course_journalsformessage.html.erb | 0 .../users/_course_list_have_entity.html.erb | 0 .../_course_list_have_entity_ex.html.erb | 0 app/views/users/_course_message.html.erb | 0 app/views/users/_course_message_form.html.erb | 0 .../users/_course_message_post_reply.html.erb | 0 app/views/users/_course_news.html.erb | 0 app/views/users/_course_news_form.html.erb | 0 .../users/_course_news_post_reply.html.erb | 0 app/views/users/_course_newslist.html.erb | 0 app/views/users/_course_poll.html.erb | 0 app/views/users/_courses_list.html.erb | 0 .../users/_edu_user_watch_fan_list.html.erb | 0 app/views/users/_form.html.erb | 0 app/views/users/_general.html.erb | 0 app/views/users/_groups.html.erb | 0 app/views/users/_history.html.erb | 0 app/views/users/_homework_base_info.html.erb | 0 .../_homework_detail_information.html.erb | 0 app/views/users/_homework_opr.html.erb | 0 .../users/_homework_post_notice.html.erb | 0 app/views/users/_homework_post_reply.html.erb | 0 .../_homework_ref_resources_list.html.erb | 0 app/views/users/_homework_repository.html.erb | 0 .../_homework_repository_detail.html.erb | 0 .../users/_homework_repository_list.html.erb | 0 .../_homework_repository_search.html.erb | 0 .../users/_homework_repository_sort.html.erb | 0 .../users/_homework_search_input.html.erb | 0 .../users/_homework_type_notice.html.erb | 0 .../users/_import_resource_info.html.erb | 0 .../users/_influence_new_score_index.html.erb | 0 .../users/_influence_score_index.html.erb | 0 app/views/users/_intro_content.html.erb | 0 app/views/users/_intro_content_ex.html.erb | 0 .../_join_contest_applied_message.html.erb | 0 app/views/users/_join_course.html.erb | 0 .../_join_course_course_message.html.erb | 0 app/views/users/_jour_form.html.erb | 0 .../users/_journal_comment_reply.html.erb | 0 app/views/users/_l_course.html.erb | 63 +- app/views/users/_l_project.html.erb | 64 +- app/views/users/_l_shixun.html.erb | 61 - app/views/users/_leave_message.html.erb | 0 app/views/users/_m_bank.html.erb | 0 app/views/users/_mail_notifications.html.erb | 0 .../users/_manage_homework_list.html.erb | 0 app/views/users/_memberships.html.erb | 0 app/views/users/_message_contents.html.erb | 0 app/views/users/_message_dialogue.html.erb | 1 - app/views/users/_message_replies.html.erb | 0 app/views/users/_mirror_script_edit.html.erb | 0 app/views/users/_my_contests.html.erb | 0 app/views/users/_my_course.html.erb | 0 app/views/users/_my_course_ex.html.erb | 0 app/views/users/_my_create_homework.html.erb | 0 .../users/_my_homepage_course_show.html.erb | 0 .../users/_my_homepage_courses_list.html.erb | 0 .../users/_my_homepage_shixuns_list.html.erb | 0 app/views/users/_my_homework.html.erb | 0 app/views/users/_my_homework_list.html.erb | 0 app/views/users/_my_homework_sort.html.erb | 0 app/views/users/_my_homeworks_search.html.erb | 0 .../users/_my_issue_assigned_filter.html.erb | 0 app/views/users/_my_issue_filter_all.html.erb | 0 app/views/users/_my_issue_list.html.erb | 0 app/views/users/_my_joined_contests.html.erb | 0 app/views/users/_my_joined_projects.html.erb | 0 app/views/users/_my_joinedcourse.html.erb | 0 .../users/_my_manage_issue_list.html.erb | 0 app/views/users/_my_new.html.erb | 0 app/views/users/_my_projects.html.erb | 0 .../users/_my_receive_issue_list.html.erb | 0 app/views/users/_myjoin_shixun_list.html.erb | 0 app/views/users/_myshixuns_list.html.erb | 0 app/views/users/_new_user_message.html.erb | 0 app/views/users/_news_contents.html.erb | 0 app/views/users/_news_replies.html.erb | 0 app/views/users/_no_data.html.erb | 0 app/views/users/_org_file_form.html.erb | 0 app/views/users/_org_message_form.html.erb | 0 app/views/users/_org_news_form.html.erb | 0 .../users/_org_resources_subfield.html.erb | 0 app/views/users/_p_path.html.erb | 61 +- app/views/users/_preferences.html.erb | 0 app/views/users/_project_attachment.html.erb | 0 app/views/users/_project_boardlist.html.erb | 0 app/views/users/_project_com_list.html.erb | 0 app/views/users/_project_create.html.erb | 0 app/views/users/_project_document.html.erb | 0 app/views/users/_project_file_form.html.erb | 0 app/views/users/_project_issue.html.erb | 0 .../users/_project_issue_detail.html.erb | 0 app/views/users/_project_issue_reply.html.erb | 0 app/views/users/_project_journal.html.erb | 0 app/views/users/_project_list.html.erb | 0 app/views/users/_project_message.html.erb | 0 .../users/_project_message_form.html.erb | 0 .../users/_project_new_score_index.html.erb | 0 app/views/users/_project_news.html.erb | 0 app/views/users/_project_news_form.html.erb | 0 app/views/users/_project_score_index.html.erb | 0 .../users/_receive_homework_list.html.erb | 0 app/views/users/_reply_banner.html.erb | 0 app/views/users/_reply_to.html.erb | 0 app/views/users/_reply_to_comment.html.erb | 0 .../users/_resource_search_form.html.erb | 0 .../users/_resource_share_for_orgs.html.erb | 0 ..._resource_share_for_project_popup.html.erb | 0 .../users/_resource_share_popup.html.erb | 0 .../users/_resource_upload_popup.html.erb | 0 app/views/users/_resources_list.html.erb | 0 app/views/users/_returnTop_btn.html.erb | 5 +- app/views/users/_right_message_list.html.erb | 0 app/views/users/_score_index.html.erb | 0 app/views/users/_score_new_index.html.erb | 0 .../users/_selector_for_messages.html.erb | 0 .../users/_send_homework_to_course.html.erb | 0 .../_send_homework_to_course_form.html.erb | 0 app/views/users/_send_notice.html.erb | 0 app/views/users/_send_part.html.erb | 0 .../users/_share_message_to_course.html.erb | 0 .../users/_share_message_to_org.html.erb | 0 .../users/_share_message_to_project.html.erb | 0 .../users/_share_news_to_course.html.erb | 0 app/views/users/_share_news_to_org.html.erb | 0 .../users/_share_news_to_project.html.erb | 0 app/views/users/_show_detail_info.html.erb | 0 app/views/users/_show_new_score.html.erb | 0 app/views/users/_show_new_upload.html.erb | 0 app/views/users/_show_score.html.erb | 0 app/views/users/_show_unlogged.html.erb | 0 app/views/users/_show_unlogged_reply.html.erb | 0 .../users/_show_user_homework_form.html.erb | 0 app/views/users/_show_user_homeworks.html.erb | 0 app/views/users/_show_user_org.html.erb | 0 app/views/users/_show_user_resource.html.erb | 0 ..._special_user_homework_attachment.html.erb | 0 .../users/_syllabus_course_list.html.erb | 0 app/views/users/_task_tip.html.erb | 0 .../users/_topic_new_score_index.html.erb | 0 app/views/users/_topic_score_index.html.erb | 0 .../users/_unapproval_applied_list.html.erb | 0 .../users/_unfinished_homework_list.html.erb | 0 .../users/_unfinished_poll_list.html.erb | 0 .../users/_unfinished_test_list.html.erb | 0 .../users/_unsolved_issues_list.html.erb | 0 app/views/users/_upload_avatar.html.erb | 0 app/views/users/_upload_resource.html.erb | 0 app/views/users/_user_activities.html.erb | 0 .../users/_user_allPrivate_letter.html.erb | 0 .../users/_user_archive_course_list.html.erb | 0 app/views/users/_user_at_message.html.erb | 0 app/views/users/_user_blog.html.erb | 0 .../users/_user_blog_post_reply.html.erb | 0 app/views/users/_user_course_list.html.erb | 0 app/views/users/_user_data_bank.html.erb | 0 app/views/users/_user_experience.html.erb | 0 .../users/_user_experience_content.html.erb | 0 app/views/users/_user_extensions.html.erb | 0 app/views/users/_user_fans_item.html.erb | 0 app/views/users/_user_fans_or_watch.html.erb | 0 app/views/users/_user_grade.html.erb | 0 app/views/users/_user_grade_content.html.erb | 0 app/views/users/_user_group_attr.html.erb | 0 .../users/_user_homework_attachment.html.erb | 0 .../users/_user_homework_detail.html.erb | 0 app/views/users/_user_homework_form.html.erb | 0 app/views/users/_user_homework_list.html.erb | 0 .../users/_user_import_resource_list.html.erb | 3 +- .../_user_import_resource_search.html.erb | 2 +- app/views/users/_user_info_show.html.erb | 0 .../users/_user_join_syllabus_list.html.erb | 0 app/views/users/_user_jour_reply.html.erb | 0 .../users/_user_journal_post_reply.html.erb | 0 .../users/_user_journalsformessage.html.erb | 0 app/views/users/_user_jours.html.erb | 0 app/views/users/_user_jours_list.html.erb | 0 app/views/users/_user_jours_new.html.erb | 0 .../users/_user_manage_issue_list.html.erb | 0 .../_user_message_applide_action.html.erb | 0 .../_user_message_applide_users.html.erb | 0 .../users/_user_message_applied.html.erb | 0 ...ser_message_applied_school_action.html.erb | 0 .../_user_message_applied_schools.html.erb | 0 app/views/users/_user_message_blog.html.erb | 0 .../users/_user_message_contest.html.erb | 0 app/views/users/_user_message_course.html.erb | 0 app/views/users/_user_message_forge.html.erb | 0 app/views/users/_user_message_forum.html.erb | 0 app/views/users/_user_message_list.html.erb | 0 app/views/users/_user_message_org.html.erb | 0 ...ssage_organization_applied_action.html.erb | 0 app/views/users/_user_message_system.html.erb | 0 .../_user_message_userfeedaback.html.erb | 0 .../users/_user_private_dialogue.html.erb | 0 .../users/_user_programing_attr.html.erb | 0 app/views/users/_user_project_list.html.erb | 0 .../users/_user_receive_issues_list.html.erb | 0 .../users/_user_recently_person.html.erb | 0 app/views/users/_user_resource_info.html.erb | 0 .../users/_user_resource_tip_list.html.erb | 0 .../users/_user_resource_type_filter.html.erb | 0 app/views/users/_user_score.html.erb | 0 app/views/users/_user_show.html.erb | 0 app/views/users/_user_syllabus_list.html.erb | 0 app/views/users/_user_tag.html.erb | 0 app/views/users/_user_tag_content.html.erb | 0 app/views/users/_user_tiddings_list.erb | 0 .../_user_tidingsAndprivate_left.html.erb | 0 .../users/_user_watcher_or_fans_list.html.erb | 0 .../users/_user_write_privateLetter.html.erb | 0 .../users/_watch_btn_for_picture.html.erb | 0 app/views/users/_wide_reply_banner.html.erb | 0 app/views/users/_work_opr.html.erb | 0 .../users/activity_new_score_index.js.erb | 0 app/views/users/activity_score_index.js.erb | 0 .../users/add_exist_file_to_course.js.erb | 0 app/views/users/add_exist_file_to_org.js.erb | 0 .../users/add_exist_file_to_project.js.erb | 0 app/views/users/all_journals.js.erb | 0 .../users/anonymous_evaluation_list.js.erb | 0 app/views/users/apply_for_homework.js.erb | 0 app/views/users/apply_for_resource.js.erb | 0 app/views/users/apply_homework.js.erb | 0 app/views/users/apply_resource.js.erb | 0 app/views/users/attendance.js.erb | 0 app/views/users/blocks/_calendar.html.erb | 0 .../users/blocks/_issuesassignedtome.html.erb | 0 app/views/users/cancel_or_collect.js.erb | 0 app/views/users/change_org_subfield.js.erb | 0 app/views/users/change_user_email.js.erb | 0 app/views/users/choose_user_course.js.erb | 0 app/views/users/contest_community.html.erb | 0 app/views/users/contest_community.js.erb | 0 app/views/users/course_community.html.erb | 0 app/views/users/course_community.js.erb | 0 .../users/deal_with_apply_resource.js.erb | 0 .../users/dealwith_apply_homework.js.erb | 0 app/views/users/dealwith_apply_request.js.erb | 0 app/views/users/delete_message.js.erb | 0 app/views/users/destroy_membership.js.erb | 0 app/views/users/edit.html.erb | 0 .../users/edit_brief_introduction.js.erb | 0 app/views/users/edit_membership.js.erb | 0 app/views/users/expand_courses.js.erb | 0 app/views/users/growth_record.html.erb | 0 app/views/users/growth_record.js.erb | 0 app/views/users/homepage.html.erb | 0 app/views/users/html_show.html.erb | 0 app/views/users/import_into_container.js.erb | 0 app/views/users/import_resources.js.erb | 0 .../users/import_resources_search.js.erb | 0 .../users/import_resources_to_homework.js.erb | 0 app/views/users/index.api.rsb | 0 app/views/users/index.html.erb | 0 .../users/influence_new_score_index.js.erb | 0 app/views/users/influence_score_index.js.erb | 0 app/views/users/info.html.erb | 0 app/views/users/leave_message.js.erb | 0 app/views/users/list.api.rsb | 0 app/views/users/list.html.erb | 0 .../manage_or_receive_homeworks.html.erb | 0 .../users/manage_or_receive_homeworks.js.erb | 0 app/views/users/message_detail.html.erb | 0 app/views/users/message_pop.js.erb | 0 app/views/users/modify_script.html.erb | 0 app/views/users/modify_script.js.erb | 0 app/views/users/my_homeworks.html.erb | 0 app/views/users/my_homeworks.js.erb | 0 app/views/users/my_join_shixuns.js.erb | 0 app/views/users/name_update.js.erb | 0 app/views/users/new.html.erb | 0 .../users/new_user_commit_homework.html.erb | 0 app/views/users/picture_show.html.erb | 0 app/views/users/picture_show.js.erb | 0 app/views/users/private_messages.html.erb | 0 app/views/users/private_messages.js.erb | 0 app/views/users/project_community.html.erb | 0 app/views/users/project_community.js.erb | 0 .../users/project_new_score_index.js.erb | 0 app/views/users/project_score_index.js.erb | 0 app/views/users/rename_resource.js.erb | 0 app/views/users/reply_detail.js.erb | 0 app/views/users/reply_message.js.erb | 0 app/views/users/reply_to.js.erb | 0 app/views/users/reply_to_comment.js.erb | 0 app/views/users/resource_preview.js.erb | 0 app/views/users/resource_search.js.erb | 0 app/views/users/reward_credit.js.erb | 0 app/views/users/reward_grade.js.erb | 0 app/views/users/score_index.js.erb | 0 app/views/users/score_new_index.js.erb | 0 app/views/users/search.html.erb | 0 app/views/users/search_m_r_homeworks.js.erb | 0 .../users/search_shixuns_or_courses.html.erb | 0 app/views/users/search_user_course.js.erb | 0 app/views/users/search_user_org.js.erb | 0 app/views/users/search_user_orgs.html.erb | 0 app/views/users/search_user_orgs.js.erb | 0 app/views/users/search_user_project.js.erb | 0 .../users/send_homework_to_course.js.erb | 0 app/views/users/send_message.js.erb | 0 .../users/share_message_to_course.js.erb | 0 app/views/users/share_message_to_org.js.erb | 0 .../users/share_message_to_project.js.erb | 0 app/views/users/share_news_to_course.js.erb | 0 app/views/users/share_news_to_org.js.erb | 0 app/views/users/share_news_to_project.js.erb | 0 app/views/users/shixuns.html.erb | 0 app/views/users/shixuns.js.erb | 0 app/views/users/show.api.rsb | 0 app/views/users/show.html.erb | 4 +- app/views/users/show.js.erb | 0 app/views/users/show_all_replies.js.erb | 0 app/views/users/show_homework_detail.js.erb | 0 app/views/users/show_new_score.html.erb | 0 app/views/users/show_new_score.js.erb | 0 app/views/users/show_old.html.erb | 0 app/views/users/show_score.js.erb | 0 app/views/users/sort_project_list.js.erb | 0 app/views/users/sort_syllabus_list.js.erb | 0 app/views/users/student_homeworks.html.erb | 0 app/views/users/student_homeworks.js.erb | 0 app/views/users/switch_user_module.js.erb | 0 app/views/users/tag_save.js.erb | 0 app/views/users/tag_saveEx.js.erb | 0 app/views/users/topic_new_score_index.js.erb | 0 app/views/users/topic_score_index.js.erb | 0 .../users/unapproval_applied_list.js.erb | 0 .../users/unfinished_homework_list.js.erb | 0 app/views/users/unfinished_poll_list.js.erb | 0 app/views/users/unfinished_test_list.js.erb | 0 app/views/users/unsolved_issues_list.js.erb | 0 app/views/users/update_score.js.erb | 0 app/views/users/user_activities.html.erb | 0 app/views/users/user_archive_courses.html.erb | 0 app/views/users/user_archive_courses.js.erb | 0 app/views/users/user_comments.html.erb | 0 app/views/users/user_commit_homework.html.erb | 0 app/views/users/user_contestlist.html.erb | 0 app/views/users/user_contests4show.html.erb | 0 .../users/user_course_activities.html.erb | 0 app/views/users/user_courselist.html.erb | 0 app/views/users/user_courselist.js.erb | 0 app/views/users/user_courses.html.erb | 0 app/views/users/user_courses4show.js.erb | 0 app/views/users/user_experience.html.erb | 0 app/views/users/user_experience.js.erb | 0 app/views/users/user_fanslist.html.erb | 0 app/views/users/user_fanslist.js.erb | 0 app/views/users/user_feedback4show.html.erb | 0 app/views/users/user_grade.html.erb | 0 app/views/users/user_grade.js.erb | 0 app/views/users/user_homework_type.js.erb | 0 app/views/users/user_homeworks.html.erb | 0 app/views/users/user_homeworks.js.erb | 0 app/views/users/user_import_homeworks.js.erb | 0 app/views/users/user_import_resource.js.erb | 0 app/views/users/user_info.js.erb | 0 app/views/users/user_issues.html.erb | 0 app/views/users/user_issues.js.erb | 0 .../users/user_manage_homeworks.html.erb | 0 app/views/users/user_manage_homeworks.js.erb | 0 app/views/users/user_manage_issues.html.erb | 0 app/views/users/user_manage_issues.js.erb | 0 app/views/users/user_messages.html.erb | 0 app/views/users/user_messages.js.erb | 0 app/views/users/user_messages_unviewed.js.erb | 0 app/views/users/user_newfeedback.html.erb | 0 app/views/users/user_newfeedback.js.erb | 0 app/views/users/user_organizations.html.erb | 0 app/views/users/user_projectlist.html.erb | 0 app/views/users/user_projectlist.js.erb | 0 app/views/users/user_projects.html.erb | 0 app/views/users/user_projects4show.js.erb | 0 .../users/user_receive_homeworks.html.erb | 0 app/views/users/user_receive_homeworks.js.erb | 0 app/views/users/user_receive_issues.html.erb | 0 app/views/users/user_receive_issues.js.erb | 0 .../users/user_ref_resource_search.js.erb | 0 app/views/users/user_resource.html.erb | 0 app/views/users/user_resource.js.erb | 0 app/views/users/user_resource_create.js.erb | 0 app/views/users/user_resource_delete.js.erb | 0 app/views/users/user_resource_type.js.erb | 0 app/views/users/user_search_homeworks.js.erb | 0 app/views/users/user_select_homework.js.erb | 0 app/views/users/user_shixuns.html.erb | 0 app/views/users/user_show_course_list.js.erb | 0 app/views/users/user_system_messages.html.erb | 0 app/views/users/user_tidings.html.erb | 0 app/views/users/user_tidings.js.erb | 0 app/views/users/user_watchlist.html.erb | 0 app/views/users/user_watchlist.js.erb | 0 app/views/users/watch_bids.html.erb | 0 app/views/users/watch_projects.html.erb | 0 app/views/versions/_edit.html.erb | 0 app/views/versions/_form.html.erb | 0 app/views/versions/_issue_counts.html.erb | 0 app/views/versions/_issue_statistics.html.erb | 0 app/views/versions/_list.html.erb | 0 app/views/versions/_new_milestone.html.erb | 0 app/views/versions/_new_modal.html.erb | 0 app/views/versions/_overview.html.erb | 0 app/views/versions/_type_ico.html.erb | 0 .../_version_name_repetition_tip.html.erb | 0 app/views/versions/create.js.erb | 0 app/views/versions/destroy.js.erb | 0 app/views/versions/edit.html.erb | 0 app/views/versions/edit.js.erb | 0 app/views/versions/index.api.rsb | 0 app/views/versions/index.html.erb | 0 app/views/versions/index.js.erb | 0 app/views/versions/new.html.erb | 0 app/views/versions/new.js.erb | 0 app/views/versions/show.api.rsb | 0 app/views/versions/show.html.erb | 0 app/views/versions/status_by.js.erb | 0 app/views/versions/update.js.erb | 0 app/views/watchers/_fans_num.html.erb | 0 app/views/watchers/_new.html.erb | 0 app/views/watchers/_set_join.js.erb | 0 app/views/watchers/_set_watcher.js.erb | 0 app/views/watchers/_watchers.html.erb | 0 app/views/watchers/append.js.erb | 0 .../watchers/autocomplete_for_user.html.erb | 0 app/views/watchers/create.js.erb | 0 app/views/watchers/destroy.js.erb | 0 app/views/watchers/new.js.erb | 0 app/views/watchers/unwatch.js.erb | 0 app/views/watchers/watch.js.erb | 0 app/views/web_footer_companies/edit.html.erb | 0 app/views/web_footer_companies/index.html.erb | 0 app/views/web_footer_companies/new.html.erb | 0 app/views/wechats/bind.html.erb | 0 app/views/wechats/login.html.erb | 0 app/views/wechats/open_wechat.html.erb | 0 app/views/wechats/user_activities.html.erb | 0 app/views/welcome/_ccf_header.html.erb | 0 app/views/welcome/_course_list.html.erb | 0 app/views/welcome/_guidance_mask.html.erb | 0 app/views/welcome/_hot_projects_list.html.erb | 0 app/views/welcome/_link_to_another.html.erb | 0 .../welcome/_management_no_data.html.erb | 0 app/views/welcome/_more_course.html.erb | 0 app/views/welcome/_no_course_title.html.erb | 0 app/views/welcome/_no_data.html.erb | 0 app/views/welcome/_one_btn_mask_pop.html.erb | 0 .../welcome/_search_all_results.html.erb | 0 .../_search_attachment_results.html.erb | 0 app/views/welcome/_search_bar.html.erb | 0 app/views/welcome/_search_course.html.erb | 0 .../welcome/_search_course_results.html.erb | 0 .../welcome/_search_memo_results.html.erb | 0 app/views/welcome/_search_project.html.erb | 0 .../welcome/_search_project_results.html.erb | 0 .../welcome/_search_syllabus_results.html.erb | 0 .../welcome/_search_user_results.html.erb | 0 app/views/welcome/_two_btn_mask_pop.html.erb | 6 +- app/views/welcome/_update_nickname.html.erb | 0 app/views/welcome/_wei_xin.html.erb | 0 app/views/welcome/ccf.html.erb | 0 app/views/welcome/contest.html.erb | 0 app/views/welcome/course.html.erb | 0 app/views/welcome/index.html.erb | 145 +- app/views/welcome/robots.html.erb | 0 app/views/welcome/search.html.erb | 0 app/views/welcome/search.js.erb | 0 app/views/wiki/_content.html.erb | 0 app/views/wiki/_sidebar.html.erb | 0 app/views/wiki/annotate.html.erb | 0 app/views/wiki/date_index.html.erb | 0 app/views/wiki/destroy.html.erb | 0 app/views/wiki/diff.html.erb | 0 app/views/wiki/edit.html.erb | 0 app/views/wiki/export.html.erb | 0 app/views/wiki/export_multiple.html.erb | 0 app/views/wiki/history.html.erb | 0 app/views/wiki/index.api.rsb | 0 app/views/wiki/index.html.erb | 0 app/views/wiki/rename.html.erb | 0 app/views/wiki/show.api.rsb | 0 app/views/wiki/show.html.erb | 0 app/views/wikis/destroy.html.erb | 0 app/views/wikis/edit.js.erb | 0 app/views/words/_feedback.html.erb | 0 app/views/words/_journal_reply.html.erb | 0 app/views/words/_journal_reply_items.html.erb | 0 app/views/words/_message.html.erb | 0 app/views/words/_new.html.erb | 0 app/views/words/_new_respond.html.erb | 0 app/views/words/_new_respond_course.html.erb | 0 app/views/words/_new_respond_project.html.erb | 0 app/views/words/_pre_show.html.erb | 0 app/views/words/back.js.erb | 0 app/views/words/create.js.erb | 0 app/views/words/create_reply.js.erb | 0 app/views/words/destroy.js.erb | 0 app/views/words/destroyJournal.js.erb | 0 .../words/leave_contest_work_message.js.erb | 0 app/views/words/leave_homework_message.js.erb | 0 app/views/words/leave_topic_message.js.erb | 0 app/views/words/more.js.erb | 0 app/views/words/new.js.erb | 0 app/views/words/reply_to_contest_work.js.erb | 0 .../words/reply_to_graduation_topic.js.erb | 0 app/views/words/reply_to_homework.js.erb | 0 app/views/words/reply_to_syllabus.js.erb | 0 app/views/workflows/_action_menu.html.erb | 0 app/views/workflows/_form.html.erb | 0 app/views/workflows/copy.html.erb | 0 app/views/workflows/edit.html.erb | 0 app/views/workflows/index.html.erb | 0 app/views/workflows/permissions.html.erb | 0 .../works/_alert_score_open_modal.html.erb | 0 app/views/works/_contest_work_form.html.erb | 0 app/views/works/_set_score_rule.html.erb | 0 app/views/works/_work_group_attr.html.erb | 0 app/views/works/_work_index_list.html.erb | 0 app/views/works/_work_search_form.html.erb | 0 app/views/works/alert_score_open_modal.js.erb | 0 app/views/works/destroy.js.erb | 0 app/views/works/edit.html.erb | 0 app/views/works/index.html.erb | 0 app/views/works/index.js.erb | 0 app/views/works/open_contestant_works.js.erb | 0 app/views/works/score_rule_set.js.erb | 0 app/views/works/set_score_open.js.erb | 0 app/views/works/set_score_rule.js.erb | 0 app/views/zipdown/assort.html.erb | 0 app/views/zipdown/file_not_fond.js.erb | 0 app/views/zipdown/no_file_dowmload.js.erb | 0 4580 files changed, 9408 insertions(+), 12278 deletions(-) mode change 100644 => 100755 app/api/mobile/api.rb mode change 100644 => 100755 app/api/mobile/apis/activities.rb mode change 100644 => 100755 app/api/mobile/apis/assets.rb mode change 100644 => 100755 app/api/mobile/apis/auth.rb mode change 100644 => 100755 app/api/mobile/apis/blog_comments.rb mode change 100644 => 100755 app/api/mobile/apis/careers.rb mode change 100644 => 100755 app/api/mobile/apis/comments.rb mode change 100644 => 100755 app/api/mobile/apis/courses.rb mode change 100644 => 100755 app/api/mobile/apis/discusses.rb delete mode 100644 app/api/mobile/apis/ecloud.rb mode change 100644 => 100755 app/api/mobile/apis/games.rb mode change 100644 => 100755 app/api/mobile/apis/helers.rb mode change 100644 => 100755 app/api/mobile/apis/homeworks.rb mode change 100644 => 100755 app/api/mobile/apis/issues.rb mode change 100644 => 100755 app/api/mobile/apis/journal_for_messages.rb mode change 100644 => 100755 app/api/mobile/apis/memos.rb mode change 100644 => 100755 app/api/mobile/apis/messages.rb mode change 100644 => 100755 app/api/mobile/apis/new_comment.rb mode change 100644 => 100755 app/api/mobile/apis/newss.rb mode change 100644 => 100755 app/api/mobile/apis/praise.rb mode change 100644 => 100755 app/api/mobile/apis/projects.rb mode change 100644 => 100755 app/api/mobile/apis/resources.rb mode change 100644 => 100755 app/api/mobile/apis/shixuns.rb mode change 100644 => 100755 app/api/mobile/apis/sources.rb mode change 100644 => 100755 app/api/mobile/apis/syllabuses.rb mode change 100644 => 100755 app/api/mobile/apis/upgrade.rb mode change 100644 => 100755 app/api/mobile/apis/users.rb mode change 100644 => 100755 app/api/mobile/apis/watches.rb mode change 100644 => 100755 app/api/mobile/apis/whomeworks.rb mode change 100644 => 100755 app/api/mobile/entities/activity.rb mode change 100644 => 100755 app/api/mobile/entities/anonymous_works_params.rb mode change 100644 => 100755 app/api/mobile/entities/attachment.rb mode change 100644 => 100755 app/api/mobile/entities/auth.rb mode change 100644 => 100755 app/api/mobile/entities/blog_comment.rb mode change 100644 => 100755 app/api/mobile/entities/comment.rb mode change 100644 => 100755 app/api/mobile/entities/course.rb mode change 100644 => 100755 app/api/mobile/entities/course_dynamic.rb mode change 100644 => 100755 app/api/mobile/entities/course_group.rb mode change 100644 => 100755 app/api/mobile/entities/courses/board.rb mode change 100644 => 100755 app/api/mobile/entities/courses/comment.rb mode change 100644 => 100755 app/api/mobile/entities/courses/message.rb mode change 100644 => 100755 app/api/mobile/entities/exercise.rb mode change 100644 => 100755 app/api/mobile/entities/game.rb mode change 100644 => 100755 app/api/mobile/entities/homework.rb mode change 100644 => 100755 app/api/mobile/entities/homework_attach.rb mode change 100644 => 100755 app/api/mobile/entities/homework_jours.rb mode change 100644 => 100755 app/api/mobile/entities/homeworkscore.rb mode change 100644 => 100755 app/api/mobile/entities/issue.rb mode change 100644 => 100755 app/api/mobile/entities/journal.rb mode change 100644 => 100755 app/api/mobile/entities/jours.rb mode change 100644 => 100755 app/api/mobile/entities/member.rb mode change 100644 => 100755 app/api/mobile/entities/message.rb mode change 100644 => 100755 app/api/mobile/entities/news.rb mode change 100644 => 100755 app/api/mobile/entities/project.rb mode change 100644 => 100755 app/api/mobile/entities/project_member.rb mode change 100644 => 100755 app/api/mobile/entities/response.rb mode change 100644 => 100755 app/api/mobile/entities/short_user.rb mode change 100644 => 100755 app/api/mobile/entities/student_work.rb mode change 100644 => 100755 app/api/mobile/entities/syllabus.rb mode change 100644 => 100755 app/api/mobile/entities/user.rb mode change 100644 => 100755 app/api/mobile/entities/users/course.rb mode change 100644 => 100755 app/api/mobile/entities/users/tiding.rb mode change 100644 => 100755 app/api/mobile/entities/whomework.rb mode change 100644 => 100755 app/api/mobile/exceptions/auth_exception.rb mode change 100644 => 100755 app/api/mobile/middleware/error_handler.rb mode change 100644 => 100755 app/assets/javascripts/applied_project.js mode change 100644 => 100755 app/assets/javascripts/apply_project_masters.js mode change 100644 => 100755 app/assets/javascripts/article_homepages.js.coffee mode change 100644 => 100755 app/assets/javascripts/attachment_type_edit.js mode change 100644 => 100755 app/assets/javascripts/careers.js.coffee mode change 100644 => 100755 app/assets/javascripts/categories.js.coffee mode change 100644 => 100755 app/assets/javascripts/challenges.js.coffee mode change 100644 => 100755 app/assets/javascripts/codes.js.coffee mode change 100644 => 100755 app/assets/javascripts/colleges.js.coffee mode change 100644 => 100755 app/assets/javascripts/competition_teams.js.coffee mode change 100644 => 100755 app/assets/javascripts/competitions.js.coffee mode change 100644 => 100755 app/assets/javascripts/contest_members.js.coffee mode change 100644 => 100755 app/assets/javascripts/contestant_works.js.coffee mode change 100644 => 100755 app/assets/javascripts/contests.js.coffee delete mode 100644 app/assets/javascripts/cooperates.js.coffee mode change 100644 => 100755 app/assets/javascripts/cooperation.js.coffee mode change 100644 => 100755 app/assets/javascripts/debates.js.coffee mode change 100644 => 100755 app/assets/javascripts/department.js.coffee mode change 100644 => 100755 app/assets/javascripts/discusses.js.coffee mode change 100644 => 100755 app/assets/javascripts/ec.js.coffee mode change 100644 => 100755 app/assets/javascripts/ec_course_achievement_methods.js.coffee mode change 100644 => 100755 app/assets/javascripts/ec_course_evaluation_subitems.js.coffee mode change 100644 => 100755 app/assets/javascripts/ec_course_evaluations.js.coffee mode change 100644 => 100755 app/assets/javascripts/ec_course_supports.js.coffee mode change 100644 => 100755 app/assets/javascripts/ec_course_targets.js.coffee mode change 100644 => 100755 app/assets/javascripts/ec_courses.js.coffee mode change 100644 => 100755 app/assets/javascripts/ec_graduation_requirements.js.coffee mode change 100644 => 100755 app/assets/javascripts/ec_graduation_subitems.js.coffee mode change 100644 => 100755 app/assets/javascripts/ec_graduations.js.coffee mode change 100644 => 100755 app/assets/javascripts/ec_major_schools.js.coffee mode change 100644 => 100755 app/assets/javascripts/ec_majors.js.coffee mode change 100644 => 100755 app/assets/javascripts/ec_training_objectives.js.coffee mode change 100644 => 100755 app/assets/javascripts/ec_training_subitems.js.coffee mode change 100644 => 100755 app/assets/javascripts/ec_years.js.coffee delete mode 100644 app/assets/javascripts/ecloud.js.coffee mode change 100644 => 100755 app/assets/javascripts/ecs.js.coffee mode change 100644 => 100755 app/assets/javascripts/enterprises.js.coffee mode change 100644 => 100755 app/assets/javascripts/exercise_bank.js.coffee mode change 100644 => 100755 app/assets/javascripts/forums.js mode change 100644 => 100755 app/assets/javascripts/games.js.coffee mode change 100644 => 100755 app/assets/javascripts/graduation_tasks.js.coffee mode change 100644 => 100755 app/assets/javascripts/graduation_topics.js.coffee mode change 100644 => 100755 app/assets/javascripts/graduation_works.js.coffee mode change 100644 => 100755 app/assets/javascripts/homepages.js.coffee mode change 100644 => 100755 app/assets/javascripts/homework_bank.js.coffee mode change 100644 => 100755 app/assets/javascripts/iframes.js.coffee mode change 100644 => 100755 app/assets/javascripts/kubernete.js.coffee delete mode 100644 app/assets/javascripts/local_settings.js.coffee mode change 100644 => 100755 app/assets/javascripts/management.js.coffee mode change 100644 => 100755 app/assets/javascripts/managements.js.coffee mode change 100644 => 100755 app/assets/javascripts/mark_down.js.coffee mode change 100644 => 100755 app/assets/javascripts/memos.js mode change 100644 => 100755 app/assets/javascripts/myshixuns.js.coffee mode change 100644 => 100755 app/assets/javascripts/no_uses.js mode change 100644 => 100755 app/assets/javascripts/notificationcomments.js.coffee delete mode 100644 app/assets/javascripts/oauth.js.coffee mode change 100644 => 100755 app/assets/javascripts/open_source_projects.js mode change 100644 => 100755 app/assets/javascripts/org_courses.js.coffee mode change 100644 => 100755 app/assets/javascripts/org_document_comment.js.coffee mode change 100644 => 100755 app/assets/javascripts/org_member.js.coffee mode change 100644 => 100755 app/assets/javascripts/org_projects.js.coffee mode change 100644 => 100755 app/assets/javascripts/org_subfields.js.coffee mode change 100644 => 100755 app/assets/javascripts/organizations.js.coffee mode change 100644 => 100755 app/assets/javascripts/praise_tread.js mode change 100644 => 100755 app/assets/javascripts/pull_requests.js.coffee mode change 100644 => 100755 app/assets/javascripts/quality_analyses.js.coffee mode change 100644 => 100755 app/assets/javascripts/question_banks.js.coffee mode change 100644 => 100755 app/assets/javascripts/school.js mode change 100644 => 100755 app/assets/javascripts/shares.js mode change 100644 => 100755 app/assets/javascripts/shield_activities.js.coffee mode change 100644 => 100755 app/assets/javascripts/shield_wechat_messages.js.coffee mode change 100644 => 100755 app/assets/javascripts/shixuns.js.coffee mode change 100644 => 100755 app/assets/javascripts/softapplications.js mode change 100644 => 100755 app/assets/javascripts/stages.js.coffee mode change 100644 => 100755 app/assets/javascripts/statistics.js.coffee mode change 100644 => 100755 app/assets/javascripts/sub_document_comments.js.coffee mode change 100644 => 100755 app/assets/javascripts/sub_domains.js.coffee mode change 100644 => 100755 app/assets/javascripts/subfield_subdomain_dirs.js.coffee mode change 100644 => 100755 app/assets/javascripts/subjects.js.coffee mode change 100644 => 100755 app/assets/javascripts/syllabus_member.js.coffee mode change 100644 => 100755 app/assets/javascripts/syllabuses.js.coffee mode change 100644 => 100755 app/assets/javascripts/system_log.js.coffee mode change 100644 => 100755 app/assets/javascripts/system_messages.js.coffee mode change 100644 => 100755 app/assets/javascripts/tasks.js.coffee mode change 100644 => 100755 app/assets/javascripts/teachers.js mode change 100644 => 100755 app/assets/javascripts/training_tasks.js.coffee mode change 100644 => 100755 app/assets/javascripts/trainings.js.coffee mode change 100644 => 100755 app/assets/javascripts/works.js.coffee mode change 100644 => 100755 app/assets/javascripts/zipdown.js mode change 100644 => 100755 app/assets/stylesheets/applied_project.css mode change 100644 => 100755 app/assets/stylesheets/apply_project_masters.css mode change 100644 => 100755 app/assets/stylesheets/article_homepages.css.scss mode change 100644 => 100755 app/assets/stylesheets/attachment_type_edit.css mode change 100644 => 100755 app/assets/stylesheets/careers.css.scss mode change 100644 => 100755 app/assets/stylesheets/categories.css.scss mode change 100644 => 100755 app/assets/stylesheets/challenges.css.scss mode change 100644 => 100755 app/assets/stylesheets/codes.css.scss mode change 100644 => 100755 app/assets/stylesheets/colleges.css.scss mode change 100644 => 100755 app/assets/stylesheets/competition_teams.css.scss mode change 100644 => 100755 app/assets/stylesheets/competitions.css.scss mode change 100644 => 100755 app/assets/stylesheets/contest_members.css.scss mode change 100644 => 100755 app/assets/stylesheets/contestant_works.css.scss mode change 100644 => 100755 app/assets/stylesheets/contests.css.scss delete mode 100644 app/assets/stylesheets/cooperates.css.scss mode change 100644 => 100755 app/assets/stylesheets/cooperation.css.scss mode change 100644 => 100755 app/assets/stylesheets/debates.css.scss mode change 100644 => 100755 app/assets/stylesheets/department.css.scss mode change 100644 => 100755 app/assets/stylesheets/discusses.css.scss mode change 100644 => 100755 app/assets/stylesheets/ec.css.scss mode change 100644 => 100755 app/assets/stylesheets/ec_course_achievement_methods.css.scss mode change 100644 => 100755 app/assets/stylesheets/ec_course_evaluation_subitems.css.scss mode change 100644 => 100755 app/assets/stylesheets/ec_course_evaluations.css.scss mode change 100644 => 100755 app/assets/stylesheets/ec_course_supports.css.scss mode change 100644 => 100755 app/assets/stylesheets/ec_course_targets.css.scss mode change 100644 => 100755 app/assets/stylesheets/ec_courses.css.scss mode change 100644 => 100755 app/assets/stylesheets/ec_graduation_requirements.css.scss mode change 100644 => 100755 app/assets/stylesheets/ec_graduation_subitems.css.scss mode change 100644 => 100755 app/assets/stylesheets/ec_graduations.css.scss mode change 100644 => 100755 app/assets/stylesheets/ec_major_schools.css.scss mode change 100644 => 100755 app/assets/stylesheets/ec_majors.css.scss mode change 100644 => 100755 app/assets/stylesheets/ec_training_objectives.css.scss mode change 100644 => 100755 app/assets/stylesheets/ec_training_subitems.css.scss mode change 100644 => 100755 app/assets/stylesheets/ec_years.css.scss delete mode 100644 app/assets/stylesheets/ecloud.css.scss mode change 100644 => 100755 app/assets/stylesheets/ecs.css.scss mode change 100644 => 100755 app/assets/stylesheets/enterprises.css.scss mode change 100644 => 100755 app/assets/stylesheets/exercise_bank.css.scss mode change 100644 => 100755 app/assets/stylesheets/forums.css mode change 100644 => 100755 app/assets/stylesheets/games.css.scss mode change 100644 => 100755 app/assets/stylesheets/graduation_tasks.css.scss mode change 100644 => 100755 app/assets/stylesheets/graduation_topics.css.scss mode change 100644 => 100755 app/assets/stylesheets/graduation_works.css.scss mode change 100644 => 100755 app/assets/stylesheets/homepages.css.scss mode change 100644 => 100755 app/assets/stylesheets/homework_bank.css.scss mode change 100644 => 100755 app/assets/stylesheets/iframes.css.scss mode change 100644 => 100755 app/assets/stylesheets/kubernete.css.scss delete mode 100644 app/assets/stylesheets/local_settings.css.scss mode change 100644 => 100755 app/assets/stylesheets/management.css.scss mode change 100644 => 100755 app/assets/stylesheets/managements.css.scss mode change 100644 => 100755 app/assets/stylesheets/mark_down.css.scss mode change 100644 => 100755 app/assets/stylesheets/memos.css mode change 100644 => 100755 app/assets/stylesheets/myshixuns.css.scss mode change 100644 => 100755 app/assets/stylesheets/no_uses.css mode change 100644 => 100755 app/assets/stylesheets/notificationcomments.css.scss delete mode 100644 app/assets/stylesheets/oauth.css.scss mode change 100644 => 100755 app/assets/stylesheets/open_source_projects.css mode change 100644 => 100755 app/assets/stylesheets/org_courses.css.scss mode change 100644 => 100755 app/assets/stylesheets/org_document_comment.css.scss mode change 100644 => 100755 app/assets/stylesheets/org_member.css.scss mode change 100644 => 100755 app/assets/stylesheets/org_projects.css.scss mode change 100644 => 100755 app/assets/stylesheets/org_subfields.css.scss mode change 100644 => 100755 app/assets/stylesheets/organizations.css.scss mode change 100644 => 100755 app/assets/stylesheets/praise_tread.css mode change 100644 => 100755 app/assets/stylesheets/pull_requests.css.scss mode change 100644 => 100755 app/assets/stylesheets/quality_analyses.css.scss mode change 100644 => 100755 app/assets/stylesheets/question_banks.css.scss mode change 100644 => 100755 app/assets/stylesheets/scaffold.css mode change 100644 => 100755 app/assets/stylesheets/scaffolds.css.scss mode change 100644 => 100755 app/assets/stylesheets/school.css mode change 100644 => 100755 app/assets/stylesheets/shares.css mode change 100644 => 100755 app/assets/stylesheets/shield_activities.css.scss mode change 100644 => 100755 app/assets/stylesheets/shield_wechat_messages.css.scss mode change 100644 => 100755 app/assets/stylesheets/shixuns.css.scss mode change 100644 => 100755 app/assets/stylesheets/softapplications.css mode change 100644 => 100755 app/assets/stylesheets/stages.css.scss mode change 100644 => 100755 app/assets/stylesheets/statistics.css.scss mode change 100644 => 100755 app/assets/stylesheets/sub_document_comments.css.scss mode change 100644 => 100755 app/assets/stylesheets/sub_domains.css.scss mode change 100644 => 100755 app/assets/stylesheets/subfield_subdomain_dirs.css.scss mode change 100644 => 100755 app/assets/stylesheets/subjects.css.scss mode change 100644 => 100755 app/assets/stylesheets/syllabus_member.css.scss mode change 100644 => 100755 app/assets/stylesheets/syllabuses.css.scss mode change 100644 => 100755 app/assets/stylesheets/system_log.css.scss mode change 100644 => 100755 app/assets/stylesheets/system_messages.css.scss mode change 100644 => 100755 app/assets/stylesheets/tasks.css.scss mode change 100644 => 100755 app/assets/stylesheets/teachers.css mode change 100644 => 100755 app/assets/stylesheets/training_tasks.css.scss mode change 100644 => 100755 app/assets/stylesheets/trainings.css.scss mode change 100644 => 100755 app/assets/stylesheets/works.css.scss mode change 100644 => 100755 app/assets/stylesheets/zipdown.css mode change 100644 => 100755 app/controllers/account_controller.rb mode change 100644 => 100755 app/controllers/activities_controller.rb mode change 100644 => 100755 app/controllers/activity_notifys_controller.rb mode change 100644 => 100755 app/controllers/admin_controller.rb mode change 100644 => 100755 app/controllers/application_controller.rb mode change 100644 => 100755 app/controllers/applied_project_controller.rb mode change 100644 => 100755 app/controllers/apply_project_masters_controller.rb mode change 100644 => 100755 app/controllers/article_homepages_controller.rb mode change 100644 => 100755 app/controllers/at_controller.rb mode change 100644 => 100755 app/controllers/attachments_controller.rb mode change 100644 => 100755 app/controllers/auth_sources_controller.rb mode change 100644 => 100755 app/controllers/auto_completes_controller.rb mode change 100644 => 100755 app/controllers/avatar_controller.rb mode change 100644 => 100755 app/controllers/bids_controller.rb mode change 100644 => 100755 app/controllers/blog_comments_controller.rb mode change 100644 => 100755 app/controllers/blogs_controller.rb mode change 100644 => 100755 app/controllers/boards_controller.rb mode change 100644 => 100755 app/controllers/calendars_controller.rb mode change 100644 => 100755 app/controllers/careers_controller.rb mode change 100644 => 100755 app/controllers/categories_controller.rb mode change 100644 => 100755 app/controllers/challenges_controller.rb mode change 100644 => 100755 app/controllers/codes_controller.rb mode change 100644 => 100755 app/controllers/colleges_controller.rb mode change 100644 => 100755 app/controllers/comments_controller.rb mode change 100644 => 100755 app/controllers/competition_teams_controller.rb mode change 100644 => 100755 app/controllers/competitions_controller.rb mode change 100644 => 100755 app/controllers/contest_members_controller.rb mode change 100644 => 100755 app/controllers/contestant_works_controller.rb mode change 100644 => 100755 app/controllers/contests_controller.rb mode change 100644 => 100755 app/controllers/context_menus_controller.rb delete mode 100644 app/controllers/cooperates_controller.rb mode change 100644 => 100755 app/controllers/cooperation_controller.rb mode change 100644 => 100755 app/controllers/courses_controller.rb mode change 100644 => 100755 app/controllers/custom_fields_controller.rb mode change 100644 => 100755 app/controllers/debates_controller.rb mode change 100644 => 100755 app/controllers/department_controller.rb mode change 100644 => 100755 app/controllers/discuss_demos_controller.rb mode change 100644 => 100755 app/controllers/discusses_controller.rb mode change 100644 => 100755 app/controllers/documents_controller.rb mode change 100644 => 100755 app/controllers/ec_course_achievement_methods_controller.rb mode change 100644 => 100755 app/controllers/ec_course_evaluation_subitems_controller.rb mode change 100644 => 100755 app/controllers/ec_course_evaluations_controller.rb mode change 100644 => 100755 app/controllers/ec_course_supports_controller.rb mode change 100644 => 100755 app/controllers/ec_course_targets_controller.rb mode change 100644 => 100755 app/controllers/ec_courses_controller.rb mode change 100644 => 100755 app/controllers/ec_graduation_requirements_controller.rb mode change 100644 => 100755 app/controllers/ec_graduation_subitems_controller.rb mode change 100644 => 100755 app/controllers/ec_major_schools_controller.rb mode change 100644 => 100755 app/controllers/ec_majors_controller.rb mode change 100644 => 100755 app/controllers/ec_training_objectives_controller.rb mode change 100644 => 100755 app/controllers/ec_training_subitems_controller.rb mode change 100644 => 100755 app/controllers/ec_years_controller.rb delete mode 100644 app/controllers/ecloud_controller.rb mode change 100644 => 100755 app/controllers/ecs_controller.rb mode change 100644 => 100755 app/controllers/enumerations_controller.rb mode change 100644 => 100755 app/controllers/exercise_bank_controller.rb mode change 100644 => 100755 app/controllers/exercise_controller.rb mode change 100644 => 100755 app/controllers/files_controller.rb mode change 100644 => 100755 app/controllers/forums_controller.rb mode change 100644 => 100755 app/controllers/games_controller.rb mode change 100644 => 100755 app/controllers/gantts_controller.rb mode change 100644 => 100755 app/controllers/git_callback_controller.rb mode change 100644 => 100755 app/controllers/graduation_tasks_controller.rb mode change 100644 => 100755 app/controllers/graduation_topics_controller.rb mode change 100644 => 100755 app/controllers/graduation_works_controller.rb mode change 100644 => 100755 app/controllers/groups_controller.rb mode change 100644 => 100755 app/controllers/homepages_controller.rb mode change 100644 => 100755 app/controllers/homework_attach_controller.rb mode change 100644 => 100755 app/controllers/homework_bank_controller.rb mode change 100644 => 100755 app/controllers/homework_common_controller.rb mode change 100644 => 100755 app/controllers/homework_users_controller.rb mode change 100644 => 100755 app/controllers/iframes_controller.rb mode change 100644 => 100755 app/controllers/issue_categories_controller.rb mode change 100644 => 100755 app/controllers/issue_relations_controller.rb mode change 100644 => 100755 app/controllers/issue_statuses_controller.rb mode change 100644 => 100755 app/controllers/issues_controller.rb mode change 100644 => 100755 app/controllers/journals_controller.rb mode change 100644 => 100755 app/controllers/kubernete_controller.rb mode change 100644 => 100755 app/controllers/list_controller.rb mode change 100644 => 100755 app/controllers/local_settings_controller.rb mode change 100644 => 100755 app/controllers/mail_handler_controller.rb mode change 100644 => 100755 app/controllers/managements_controller.rb mode change 100644 => 100755 app/controllers/mark_down_controller.rb mode change 100644 => 100755 app/controllers/members_controller.rb mode change 100644 => 100755 app/controllers/memos_controller.rb mode change 100644 => 100755 app/controllers/messages_controller.rb mode change 100644 => 100755 app/controllers/my_controller.rb mode change 100644 => 100755 app/controllers/myshixuns_controller.rb mode change 100644 => 100755 app/controllers/news_controller.rb mode change 100644 => 100755 app/controllers/no_uses_controller.rb mode change 100644 => 100755 app/controllers/notificationcomments_controller.rb delete mode 100644 app/controllers/oauth_controller.rb mode change 100644 => 100755 app/controllers/open_source_projects_controller.rb mode change 100644 => 100755 app/controllers/org_courses_controller.rb mode change 100644 => 100755 app/controllers/org_document_comments_controller.rb mode change 100644 => 100755 app/controllers/org_member_controller.rb mode change 100644 => 100755 app/controllers/org_projects_controller.rb mode change 100644 => 100755 app/controllers/org_subfields_controller.rb mode change 100644 => 100755 app/controllers/organizations_controller.rb delete mode 100644 app/controllers/partners_controller.rb mode change 100644 => 100755 app/controllers/poll_controller.rb mode change 100644 => 100755 app/controllers/praise_tread_controller.rb mode change 100644 => 100755 app/controllers/previews_controller.rb mode change 100644 => 100755 app/controllers/project_enumerations_controller.rb mode change 100644 => 100755 app/controllers/projects_controller.rb mode change 100644 => 100755 app/controllers/pull_requests_controller.rb mode change 100644 => 100755 app/controllers/quality_analysis_controller.rb mode change 100644 => 100755 app/controllers/queries_controller.rb mode change 100644 => 100755 app/controllers/question_banks_controller.rb mode change 100644 => 100755 app/controllers/relative_memos_controller.rb mode change 100644 => 100755 app/controllers/reports_controller.rb mode change 100644 => 100755 app/controllers/repositories_controller.rb mode change 100644 => 100755 app/controllers/roles_controller.rb mode change 100644 => 100755 app/controllers/school_controller.rb mode change 100644 => 100755 app/controllers/search_controller.rb mode change 100644 => 100755 app/controllers/settings_controller.rb mode change 100644 => 100755 app/controllers/shares_controller.rb mode change 100644 => 100755 app/controllers/shell/shell mode change 100644 => 100755 app/controllers/shield_activities_controller.rb mode change 100644 => 100755 app/controllers/shield_wechat_messages_controller.rb mode change 100644 => 100755 app/controllers/shixuns_controller.rb mode change 100644 => 100755 app/controllers/softapplications_controller.rb mode change 100644 => 100755 app/controllers/ssos_controller.rb mode change 100644 => 100755 app/controllers/stages_controller.rb mode change 100644 => 100755 app/controllers/statistics_controller.rb mode change 100644 => 100755 app/controllers/stores_controller.rb mode change 100644 => 100755 app/controllers/student_work_controller.rb mode change 100644 => 100755 app/controllers/sub_document_comments_controller.rb mode change 100644 => 100755 app/controllers/sub_domains_controller.rb mode change 100644 => 100755 app/controllers/subfield_subdomain_dirs_controller.rb mode change 100644 => 100755 app/controllers/subjects_controller.rb mode change 100644 => 100755 app/controllers/syllabus_member_controller.rb mode change 100644 => 100755 app/controllers/syllabuses_controller.rb mode change 100644 => 100755 app/controllers/sys_controller.rb mode change 100644 => 100755 app/controllers/system_log_controller.rb mode change 100644 => 100755 app/controllers/system_messages_controller.rb mode change 100644 => 100755 app/controllers/tags_controller.rb mode change 100644 => 100755 app/controllers/tasks_controller.rb mode change 100644 => 100755 app/controllers/teachers_controller.rb mode change 100644 => 100755 app/controllers/test_controller.rb mode change 100644 => 100755 app/controllers/timelog_controller.rb mode change 100644 => 100755 app/controllers/trackers_controller.rb mode change 100644 => 100755 app/controllers/training_tasks_controller.rb mode change 100644 => 100755 app/controllers/trainings_controller.rb mode change 100644 => 100755 app/controllers/user_score_controller.rb mode change 100644 => 100755 app/controllers/users_controller.rb mode change 100644 => 100755 app/controllers/versions_controller.rb mode change 100644 => 100755 app/controllers/watchers_controller.rb mode change 100644 => 100755 app/controllers/web_footer_companies_controller.rb mode change 100644 => 100755 app/controllers/wechats_controller.rb mode change 100644 => 100755 app/controllers/welcome_controller.rb mode change 100644 => 100755 app/controllers/wiki_controller.rb mode change 100644 => 100755 app/controllers/wikis_controller.rb mode change 100644 => 100755 app/controllers/words_controller.rb mode change 100644 => 100755 app/controllers/workflows_controller.rb mode change 100644 => 100755 app/controllers/works_controller.rb mode change 100644 => 100755 app/controllers/zipdown_controller.rb mode change 100644 => 100755 app/helpers/account_helper.rb mode change 100644 => 100755 app/helpers/activities_helper.rb mode change 100644 => 100755 app/helpers/activity_notifys_helper.rb mode change 100644 => 100755 app/helpers/admin_helper.rb mode change 100644 => 100755 app/helpers/api_helper.rb mode change 100644 => 100755 app/helpers/application_helper.rb mode change 100644 => 100755 app/helpers/applied_project_helper.rb mode change 100644 => 100755 app/helpers/apply_project_masters_helper.rb mode change 100644 => 100755 app/helpers/article_homepages_helper.rb mode change 100644 => 100755 app/helpers/attachments_helper.rb mode change 100644 => 100755 app/helpers/auth_sources_helper.rb mode change 100644 => 100755 app/helpers/avatar_helper.rb mode change 100644 => 100755 app/helpers/bids_helper.rb mode change 100644 => 100755 app/helpers/blog_comments_helper.rb mode change 100644 => 100755 app/helpers/blogs_helper.rb mode change 100644 => 100755 app/helpers/boards_helper.rb mode change 100644 => 100755 app/helpers/calendars_helper.rb mode change 100644 => 100755 app/helpers/careers_helper.rb mode change 100644 => 100755 app/helpers/categories_helper.rb mode change 100644 => 100755 app/helpers/challenges_helper.rb mode change 100644 => 100755 app/helpers/codes_helper.rb mode change 100644 => 100755 app/helpers/colleges_helper.rb mode change 100644 => 100755 app/helpers/competition_teams_helper.rb mode change 100644 => 100755 app/helpers/competitions_helper.rb mode change 100644 => 100755 app/helpers/contest_members_helper.rb mode change 100644 => 100755 app/helpers/contestant_works_helper.rb mode change 100644 => 100755 app/helpers/contests_helper.rb mode change 100644 => 100755 app/helpers/context_menus_helper.rb delete mode 100644 app/helpers/cooperates_helper.rb mode change 100644 => 100755 app/helpers/cooperation_helper.rb mode change 100644 => 100755 app/helpers/courses_helper.rb mode change 100644 => 100755 app/helpers/custom_fields_helper.rb mode change 100644 => 100755 app/helpers/debates_helper.rb mode change 100644 => 100755 app/helpers/department_helper.rb mode change 100644 => 100755 app/helpers/discuss_demos_helper.rb mode change 100644 => 100755 app/helpers/discusses_helper.rb mode change 100644 => 100755 app/helpers/documents_helper.rb mode change 100644 => 100755 app/helpers/ec_course_achievement_methods_helper.rb mode change 100644 => 100755 app/helpers/ec_course_evaluation_subitems_helper.rb mode change 100644 => 100755 app/helpers/ec_course_evaluations_helper.rb mode change 100644 => 100755 app/helpers/ec_course_supports_helper.rb mode change 100644 => 100755 app/helpers/ec_course_targets_helper.rb mode change 100644 => 100755 app/helpers/ec_courses_helper.rb mode change 100644 => 100755 app/helpers/ec_graduation_requirements_helper.rb mode change 100644 => 100755 app/helpers/ec_graduation_subitems_helper.rb mode change 100644 => 100755 app/helpers/ec_graduations_helper.rb mode change 100644 => 100755 app/helpers/ec_helper.rb mode change 100644 => 100755 app/helpers/ec_major_schools_helper.rb mode change 100644 => 100755 app/helpers/ec_majors_helper.rb mode change 100644 => 100755 app/helpers/ec_training_objectives_helper.rb mode change 100644 => 100755 app/helpers/ec_training_subitems_helper.rb mode change 100644 => 100755 app/helpers/ec_years_helper.rb delete mode 100644 app/helpers/ecloud_helper.rb mode change 100644 => 100755 app/helpers/ecs_helper.rb mode change 100644 => 100755 app/helpers/enumerations_helper.rb mode change 100644 => 100755 app/helpers/exercise_bank_helper.rb mode change 100644 => 100755 app/helpers/exercise_helper.rb mode change 100644 => 100755 app/helpers/files_helper.rb mode change 100644 => 100755 app/helpers/forums_helper.rb mode change 100644 => 100755 app/helpers/games_helper.rb mode change 100644 => 100755 app/helpers/gantt_helper.rb mode change 100644 => 100755 app/helpers/gitlab_helper.rb mode change 100644 => 100755 app/helpers/graduation_tasks_helper.rb mode change 100644 => 100755 app/helpers/graduation_topics_helper.rb mode change 100644 => 100755 app/helpers/graduation_works_helper.rb mode change 100644 => 100755 app/helpers/groups_helper.rb mode change 100644 => 100755 app/helpers/homepages_helper.rb mode change 100644 => 100755 app/helpers/homework_attach_helper.rb mode change 100644 => 100755 app/helpers/homework_bank_helper.rb mode change 100644 => 100755 app/helpers/homework_common_helper.rb mode change 100644 => 100755 app/helpers/homework_users_helper.rb mode change 100644 => 100755 app/helpers/iframes_helper.rb mode change 100644 => 100755 app/helpers/issue_relations_helper.rb mode change 100644 => 100755 app/helpers/issue_statuses_helper.rb mode change 100644 => 100755 app/helpers/issues_helper.rb mode change 100644 => 100755 app/helpers/journals_helper.rb mode change 100644 => 100755 app/helpers/kubernete_helper.rb mode change 100644 => 100755 app/helpers/local_settings_helper.rb mode change 100644 => 100755 app/helpers/logger_helper.rb mode change 100644 => 100755 app/helpers/mail_handler_helper.rb mode change 100644 => 100755 app/helpers/management_helper.rb mode change 100644 => 100755 app/helpers/managements_helper.rb mode change 100644 => 100755 app/helpers/mark_down_helper.rb mode change 100644 => 100755 app/helpers/members_helper.rb mode change 100644 => 100755 app/helpers/memos_helper.rb mode change 100644 => 100755 app/helpers/messages_helper.rb mode change 100644 => 100755 app/helpers/my_helper.rb mode change 100644 => 100755 app/helpers/myshixuns_helper.rb mode change 100644 => 100755 app/helpers/news_helper.rb mode change 100644 => 100755 app/helpers/no_uses_helper.rb mode change 100644 => 100755 app/helpers/notificationcomments_helper.rb delete mode 100644 app/helpers/oauth_helper.rb mode change 100644 => 100755 app/helpers/open_source_projects_helper.rb mode change 100644 => 100755 app/helpers/org_courses_helper.rb mode change 100644 => 100755 app/helpers/org_document_comment_helper.rb mode change 100644 => 100755 app/helpers/org_member_helper.rb mode change 100644 => 100755 app/helpers/org_projects_helper.rb mode change 100644 => 100755 app/helpers/org_subfields_helper.rb mode change 100644 => 100755 app/helpers/organizations_helper.rb mode change 100644 => 100755 app/helpers/owner_type_helper.rb mode change 100644 => 100755 app/helpers/poll_helper.rb mode change 100644 => 100755 app/helpers/praise_tread_helper.rb mode change 100644 => 100755 app/helpers/project_score_helper.rb mode change 100644 => 100755 app/helpers/projects_helper.rb mode change 100644 => 100755 app/helpers/pull_requests_helper.rb mode change 100644 => 100755 app/helpers/quality_analysis_helper.rb mode change 100644 => 100755 app/helpers/queries_helper.rb mode change 100644 => 100755 app/helpers/question_banks_helper.rb mode change 100644 => 100755 app/helpers/reports_helper.rb mode change 100644 => 100755 app/helpers/repositories_helper.rb mode change 100644 => 100755 app/helpers/roles_helper.rb mode change 100644 => 100755 app/helpers/routes_helper.rb mode change 100644 => 100755 app/helpers/school_helper.rb mode change 100644 => 100755 app/helpers/search_helper.rb mode change 100644 => 100755 app/helpers/settings_helper.rb mode change 100644 => 100755 app/helpers/shares_helper.rb mode change 100644 => 100755 app/helpers/shield_activities_helper.rb mode change 100644 => 100755 app/helpers/shield_wechat_messages_helper.rb mode change 100644 => 100755 app/helpers/shixuns_helper.rb mode change 100644 => 100755 app/helpers/softapplications_helper.rb mode change 100644 => 100755 app/helpers/sort_helper.rb mode change 100644 => 100755 app/helpers/stages_helper.rb mode change 100644 => 100755 app/helpers/statistics_helper.rb mode change 100644 => 100755 app/helpers/stores_helper.rb mode change 100644 => 100755 app/helpers/student_work_helper.rb mode change 100644 => 100755 app/helpers/sub_document_comments_helper.rb mode change 100644 => 100755 app/helpers/sub_domains_helper.rb mode change 100644 => 100755 app/helpers/subfield_subdomain_dirs_helper.rb mode change 100644 => 100755 app/helpers/subjects_helper.rb mode change 100644 => 100755 app/helpers/syllabus_member_helper.rb mode change 100644 => 100755 app/helpers/syllabuses_helper.rb mode change 100644 => 100755 app/helpers/system_log_helper.rb mode change 100644 => 100755 app/helpers/system_messages_helper.rb mode change 100644 => 100755 app/helpers/tags_helper.rb mode change 100644 => 100755 app/helpers/tasks_helper.rb mode change 100644 => 100755 app/helpers/teachers_helper.rb mode change 100644 => 100755 app/helpers/test_helper.rb mode change 100644 => 100755 app/helpers/timelog_helper.rb mode change 100644 => 100755 app/helpers/trackers_helper.rb mode change 100644 => 100755 app/helpers/training_tasks_helper.rb mode change 100644 => 100755 app/helpers/trainings_helper.rb mode change 100644 => 100755 app/helpers/user_score_helper.rb mode change 100644 => 100755 app/helpers/users_helper.rb mode change 100644 => 100755 app/helpers/versions_helper.rb mode change 100644 => 100755 app/helpers/watchers_helper.rb mode change 100644 => 100755 app/helpers/wechats_helper.rb mode change 100644 => 100755 app/helpers/welcome_helper.rb mode change 100644 => 100755 app/helpers/wiki_helper.rb mode change 100644 => 100755 app/helpers/words_helper.rb mode change 100644 => 100755 app/helpers/workflows_helper.rb mode change 100644 => 100755 app/helpers/works_helper.rb mode change 100644 => 100755 app/helpers/zipdown_helper.rb mode change 100644 => 100755 app/models/activity.rb mode change 100644 => 100755 app/models/activity_notify.rb mode change 100644 => 100755 app/models/add_base_score_to_statistics.rb mode change 100644 => 100755 app/models/api_key.rb mode change 100644 => 100755 app/models/applied_contest.rb mode change 100644 => 100755 app/models/applied_message.rb mode change 100644 => 100755 app/models/applied_project.rb mode change 100644 => 100755 app/models/apply_action.rb mode change 100644 => 100755 app/models/apply_add_department.rb mode change 100644 => 100755 app/models/apply_add_schools.rb mode change 100644 => 100755 app/models/apply_homework.rb mode change 100644 => 100755 app/models/apply_project_master.rb mode change 100644 => 100755 app/models/apply_resource.rb mode change 100644 => 100755 app/models/apply_user_authentication.rb mode change 100644 => 100755 app/models/article_homepage.rb mode change 100644 => 100755 app/models/at_message.rb mode change 100644 => 100755 app/models/attachment.rb mode change 100644 => 100755 app/models/attachment_group_setting.rb mode change 100644 => 100755 app/models/attachment_history.rb mode change 100644 => 100755 app/models/attachmentstype.rb mode change 100644 => 100755 app/models/attendance.rb mode change 100644 => 100755 app/models/auth_source.rb mode change 100644 => 100755 app/models/auth_source_ldap.rb mode change 100644 => 100755 app/models/authentication.rb mode change 100644 => 100755 app/models/authentications_users.rb mode change 100644 => 100755 app/models/bid.rb mode change 100644 => 100755 app/models/biding_project.rb mode change 100644 => 100755 app/models/blog.rb mode change 100644 => 100755 app/models/blog_comment.rb mode change 100644 => 100755 app/models/blog_message.rb mode change 100644 => 100755 app/models/board.rb mode change 100644 => 100755 app/models/bug_to_osp.rb mode change 100644 => 100755 app/models/career.rb mode change 100644 => 100755 app/models/career_faq.rb mode change 100644 => 100755 app/models/career_stage.rb mode change 100644 => 100755 app/models/career_stage_subject.rb mode change 100644 => 100755 app/models/challenge.rb mode change 100644 => 100755 app/models/challenge_choose.rb mode change 100644 => 100755 app/models/challenge_question.rb mode change 100644 => 100755 app/models/challenge_sample.rb mode change 100644 => 100755 app/models/challenge_tag.rb mode change 100644 => 100755 app/models/challenge_work_score.rb mode change 100644 => 100755 app/models/change.rb mode change 100644 => 100755 app/models/changeset.rb mode change 100644 => 100755 app/models/chart_rule.rb mode change 100644 => 100755 app/models/choose_outputs.rb mode change 100644 => 100755 app/models/code_tests.rb mode change 100644 => 100755 app/models/comment.rb mode change 100644 => 100755 app/models/commit.rb mode change 100644 => 100755 app/models/commit_issues.rb mode change 100644 => 100755 app/models/competition.rb mode change 100644 => 100755 app/models/competition_entry.rb mode change 100644 => 100755 app/models/competition_list.rb mode change 100644 => 100755 app/models/competition_module.rb mode change 100644 => 100755 app/models/competition_module_md_content.rb mode change 100644 => 100755 app/models/competition_score.rb mode change 100644 => 100755 app/models/competition_stage.rb mode change 100644 => 100755 app/models/competition_stage_section.rb mode change 100644 => 100755 app/models/competition_team.rb mode change 100644 => 100755 app/models/competition_text_config.rb mode change 100644 => 100755 app/models/contest.rb mode change 100644 => 100755 app/models/contest_activity.rb mode change 100644 => 100755 app/models/contest_member.rb mode change 100644 => 100755 app/models/contest_member_role.rb mode change 100644 => 100755 app/models/contest_message.rb mode change 100644 => 100755 app/models/contestant_for_contest.rb mode change 100644 => 100755 app/models/contestant_work.rb mode change 100644 => 100755 app/models/contestant_work_evaluation_distribution.rb mode change 100644 => 100755 app/models/contestant_work_project.rb mode change 100644 => 100755 app/models/contestant_work_score.rb mode change 100644 => 100755 app/models/coo_img.rb mode change 100644 => 100755 app/models/cooperation.rb mode change 100644 => 100755 app/models/course.rb mode change 100644 => 100755 app/models/course_activity.rb mode change 100644 => 100755 app/models/course_attachment.rb mode change 100644 => 100755 app/models/course_contributor_score.rb mode change 100644 => 100755 app/models/course_group.rb mode change 100644 => 100755 app/models/course_homework_category.rb mode change 100644 => 100755 app/models/course_homework_statistics.rb mode change 100644 => 100755 app/models/course_infos.rb mode change 100644 => 100755 app/models/course_list.rb mode change 100644 => 100755 app/models/course_message.rb mode change 100644 => 100755 app/models/course_module.rb mode change 100644 => 100755 app/models/course_status.rb mode change 100644 => 100755 app/models/custom_field.rb mode change 100644 => 100755 app/models/custom_field_value.rb mode change 100644 => 100755 app/models/custom_value.rb delete mode 100644 app/models/customer.rb mode change 100644 => 100755 app/models/data_exception.rb mode change 100644 => 100755 app/models/department.rb mode change 100644 => 100755 app/models/department_member.rb mode change 100644 => 100755 app/models/discipline_category.rb mode change 100644 => 100755 app/models/discuss.rb mode change 100644 => 100755 app/models/document.rb mode change 100644 => 100755 app/models/document_category.rb mode change 100644 => 100755 app/models/document_category_custom_field.rb mode change 100644 => 100755 app/models/dts.rb mode change 100644 => 100755 app/models/ec_achievement_evaluation_relate.rb mode change 100644 => 100755 app/models/ec_course.rb mode change 100644 => 100755 app/models/ec_course_achievement_method.rb mode change 100644 => 100755 app/models/ec_course_evaluation.rb mode change 100644 => 100755 app/models/ec_course_evaluation_subitem.rb mode change 100644 => 100755 app/models/ec_course_student_score.rb mode change 100644 => 100755 app/models/ec_course_support.rb mode change 100644 => 100755 app/models/ec_course_target.rb mode change 100644 => 100755 app/models/ec_course_user.rb mode change 100644 => 100755 app/models/ec_discipline.rb mode change 100644 => 100755 app/models/ec_discipline_first.rb mode change 100644 => 100755 app/models/ec_graduation_requirement.rb mode change 100644 => 100755 app/models/ec_graduation_requirement_calculation.rb mode change 100644 => 100755 app/models/ec_graduation_standard.rb mode change 100644 => 100755 app/models/ec_graduation_subitem.rb mode change 100644 => 100755 app/models/ec_graduation_subitem_course.rb mode change 100644 => 100755 app/models/ec_graduation_subitem_course_target.rb mode change 100644 => 100755 app/models/ec_major.rb mode change 100644 => 100755 app/models/ec_major_course.rb mode change 100644 => 100755 app/models/ec_major_school.rb mode change 100644 => 100755 app/models/ec_major_school_user.rb mode change 100644 => 100755 app/models/ec_require_sub_vs_standard.rb mode change 100644 => 100755 app/models/ec_requirement_vs_objective.rb mode change 100644 => 100755 app/models/ec_school_user.rb mode change 100644 => 100755 app/models/ec_score_level.rb mode change 100644 => 100755 app/models/ec_student_achievement.rb mode change 100644 => 100755 app/models/ec_student_score_target.rb mode change 100644 => 100755 app/models/ec_template.rb mode change 100644 => 100755 app/models/ec_training_objective.rb mode change 100644 => 100755 app/models/ec_training_subitem.rb mode change 100644 => 100755 app/models/ec_year.rb mode change 100644 => 100755 app/models/ec_year_student.rb delete mode 100644 app/models/ecloud.rb delete mode 100644 app/models/ecloud_log.rb delete mode 100644 app/models/ecloud_productpara.rb delete mode 100644 app/models/ecloud_service.rb delete mode 100644 app/models/ecloud_serviece_servicepara.rb delete mode 100644 app/models/ecloud_user.rb delete mode 100644 app/models/ecloud_user_para.rb delete mode 100644 app/models/ecloud_users.rb mode change 100644 => 100755 app/models/editor_of_document.rb mode change 100644 => 100755 app/models/enabled_module.rb mode change 100644 => 100755 app/models/enumeration.rb mode change 100644 => 100755 app/models/error_check.rb mode change 100644 => 100755 app/models/evaluate_record.rb mode change 100644 => 100755 app/models/exercise.rb mode change 100644 => 100755 app/models/exercise_answer.rb mode change 100644 => 100755 app/models/exercise_answer_comment.rb mode change 100644 => 100755 app/models/exercise_bank.rb mode change 100644 => 100755 app/models/exercise_bank_choice.rb mode change 100644 => 100755 app/models/exercise_bank_question.rb mode change 100644 => 100755 app/models/exercise_bank_shixun_challenge.rb mode change 100644 => 100755 app/models/exercise_bank_standard_answer.rb mode change 100644 => 100755 app/models/exercise_choice.rb mode change 100644 => 100755 app/models/exercise_group_setting.rb mode change 100644 => 100755 app/models/exercise_level_setting.rb mode change 100644 => 100755 app/models/exercise_question.rb mode change 100644 => 100755 app/models/exercise_shixun_answer.rb mode change 100644 => 100755 app/models/exercise_shixun_challenge.rb mode change 100644 => 100755 app/models/exercise_standard_answer.rb mode change 100644 => 100755 app/models/exercise_user.rb mode change 100644 => 100755 app/models/exercise_user_question.rb mode change 100644 => 100755 app/models/experience.rb mode change 100644 => 100755 app/models/first_level_discipline.rb mode change 100644 => 100755 app/models/first_page.rb mode change 100644 => 100755 app/models/forge_activity.rb mode change 100644 => 100755 app/models/forge_message.rb mode change 100644 => 100755 app/models/forum.rb mode change 100644 => 100755 app/models/forward.rb mode change 100644 => 100755 app/models/game.rb mode change 100644 => 100755 app/models/game_code.rb mode change 100644 => 100755 app/models/game_outputs.rb mode change 100644 => 100755 app/models/gitlab_url.rb mode change 100644 => 100755 app/models/grade.rb mode change 100644 => 100755 app/models/graduation_group.rb mode change 100644 => 100755 app/models/graduation_task.rb mode change 100644 => 100755 app/models/graduation_task_group_assignation.rb mode change 100644 => 100755 app/models/graduation_topic.rb mode change 100644 => 100755 app/models/graduation_work.rb mode change 100644 => 100755 app/models/graduation_work_comment_assignation.rb mode change 100644 => 100755 app/models/graduation_work_score.rb mode change 100644 => 100755 app/models/group.rb mode change 100644 => 100755 app/models/group_custom_field.rb mode change 100644 => 100755 app/models/help.rb mode change 100644 => 100755 app/models/homepage.rb mode change 100644 => 100755 app/models/homework_attach.rb mode change 100644 => 100755 app/models/homework_bank.rb mode change 100644 => 100755 app/models/homework_bank_sample.rb mode change 100644 => 100755 app/models/homework_bank_shixun.rb mode change 100644 => 100755 app/models/homework_bank_test.rb mode change 100644 => 100755 app/models/homework_challenge_setting.rb mode change 100644 => 100755 app/models/homework_common.rb mode change 100644 => 100755 app/models/homework_commons_shixuns.rb mode change 100644 => 100755 app/models/homework_detail_group.rb mode change 100644 => 100755 app/models/homework_detail_manual.rb mode change 100644 => 100755 app/models/homework_detail_programing.rb mode change 100644 => 100755 app/models/homework_evaluation.rb mode change 100644 => 100755 app/models/homework_for_course.rb mode change 100644 => 100755 app/models/homework_group_review.rb mode change 100644 => 100755 app/models/homework_group_setting.rb mode change 100644 => 100755 app/models/homework_reference_answer.rb mode change 100644 => 100755 app/models/homework_review_result.rb mode change 100644 => 100755 app/models/homework_sample.rb mode change 100644 => 100755 app/models/homework_test.rb mode change 100644 => 100755 app/models/homework_user.rb mode change 100644 => 100755 app/models/import_course_user.rb mode change 100644 => 100755 app/models/import_student.rb mode change 100644 => 100755 app/models/inform.rb mode change 100644 => 100755 app/models/invite_list.rb mode change 100644 => 100755 app/models/issue.rb mode change 100644 => 100755 app/models/issue_category.rb mode change 100644 => 100755 app/models/issue_custom_field.rb mode change 100644 => 100755 app/models/issue_observer.rb mode change 100644 => 100755 app/models/issue_overdue.rb mode change 100644 => 100755 app/models/issue_priority.rb mode change 100644 => 100755 app/models/issue_priority_custom_field.rb mode change 100644 => 100755 app/models/issue_query.rb mode change 100644 => 100755 app/models/issue_relation.rb mode change 100644 => 100755 app/models/issue_status.rb mode change 100644 => 100755 app/models/join_in_competition.rb mode change 100644 => 100755 app/models/join_in_contest.rb mode change 100644 => 100755 app/models/journal.rb mode change 100644 => 100755 app/models/journal_detail.rb mode change 100644 => 100755 app/models/journal_observer.rb mode change 100644 => 100755 app/models/journal_reply.rb mode change 100644 => 100755 app/models/journals_for_message.rb mode change 100644 => 100755 app/models/journals_for_message_observer.rb mode change 100644 => 100755 app/models/kindeditor/asset.rb mode change 100644 => 100755 app/models/kindeditor/file.rb mode change 100644 => 100755 app/models/kindeditor/flash.rb mode change 100644 => 100755 app/models/kindeditor/image.rb mode change 100644 => 100755 app/models/kindeditor/media.rb mode change 100644 => 100755 app/models/local_challenge.rb mode change 100644 => 100755 app/models/local_challenge_tag.rb mode change 100644 => 100755 app/models/local_mirror_repository.rb mode change 100644 => 100755 app/models/local_setting.rb mode change 100644 => 100755 app/models/local_shixun.rb mode change 100644 => 100755 app/models/local_shixun_tag_repertoire.rb mode change 100644 => 100755 app/models/local_test_set.rb mode change 100644 => 100755 app/models/mail_handler.rb mode change 100644 => 100755 app/models/mailer.rb mode change 100644 => 100755 app/models/major.rb mode change 100644 => 100755 app/models/major_course.rb mode change 100644 => 100755 app/models/mark_down.rb mode change 100644 => 100755 app/models/member.rb mode change 100644 => 100755 app/models/member_role.rb mode change 100644 => 100755 app/models/memo.rb mode change 100644 => 100755 app/models/memo_message.rb mode change 100644 => 100755 app/models/memo_tag_repertoire.rb mode change 100644 => 100755 app/models/message.rb mode change 100644 => 100755 app/models/message_all.rb mode change 100644 => 100755 app/models/mirror_migrate_error.rb mode change 100644 => 100755 app/models/mirror_operation_record.rb mode change 100644 => 100755 app/models/mirror_repository.rb mode change 100644 => 100755 app/models/mirror_repository_type.rb mode change 100644 => 100755 app/models/mirror_script.rb mode change 100644 => 100755 app/models/mirror_type.rb mode change 100644 => 100755 app/models/mirror_update_record.rb mode change 100644 => 100755 app/models/mul_test.rb mode change 100644 => 100755 app/models/myshixun.rb mode change 100644 => 100755 app/models/myshixun_member.rb mode change 100644 => 100755 app/models/news.rb mode change 100644 => 100755 app/models/no_use.rb mode change 100644 => 100755 app/models/notificationcomment.rb delete mode 100644 app/models/oauth.rb delete mode 100644 app/models/oauth_config.rb mode change 100644 => 100755 app/models/onclick_time.rb mode change 100644 => 100755 app/models/open_source_project.rb mode change 100644 => 100755 app/models/option_number.rb mode change 100644 => 100755 app/models/org_activity.rb mode change 100644 => 100755 app/models/org_course.rb mode change 100644 => 100755 app/models/org_document_comment.rb mode change 100644 => 100755 app/models/org_member.rb mode change 100644 => 100755 app/models/org_member_role.rb mode change 100644 => 100755 app/models/org_message.rb mode change 100644 => 100755 app/models/org_project.rb mode change 100644 => 100755 app/models/org_subfield.rb mode change 100644 => 100755 app/models/org_subfield_message.rb mode change 100644 => 100755 app/models/organization.rb mode change 100644 => 100755 app/models/output.rb delete mode 100644 app/models/partner.rb mode change 100644 => 100755 app/models/phone_app_version.rb mode change 100644 => 100755 app/models/platform_sample.rb mode change 100644 => 100755 app/models/poll.rb mode change 100644 => 100755 app/models/poll_answer.rb mode change 100644 => 100755 app/models/poll_group_setting.rb mode change 100644 => 100755 app/models/poll_question.rb mode change 100644 => 100755 app/models/poll_user.rb mode change 100644 => 100755 app/models/poll_vote.rb mode change 100644 => 100755 app/models/portal_image.rb mode change 100644 => 100755 app/models/praise_tread.rb mode change 100644 => 100755 app/models/praise_tread_cache.rb mode change 100644 => 100755 app/models/principal.rb mode change 100644 => 100755 app/models/principal_activity.rb mode change 100644 => 100755 app/models/private_message.rb mode change 100644 => 100755 app/models/professional_level.rb mode change 100644 => 100755 app/models/project.rb mode change 100644 => 100755 app/models/project_custom_field.rb mode change 100644 => 100755 app/models/project_info.rb mode change 100644 => 100755 app/models/project_score.rb mode change 100644 => 100755 app/models/project_status.rb mode change 100644 => 100755 app/models/project_tags.rb mode change 100644 => 100755 app/models/projecting_softapplication.rb mode change 100644 => 100755 app/models/pull_request.rb mode change 100644 => 100755 app/models/quality_analysis.rb mode change 100644 => 100755 app/models/query.rb mode change 100644 => 100755 app/models/question_bank.rb mode change 100644 => 100755 app/models/reference_material.rb mode change 100644 => 100755 app/models/relative_memo.rb mode change 100644 => 100755 app/models/relative_memo_to_open_source_project.rb mode change 100644 => 100755 app/models/rep_statics.rb mode change 100644 => 100755 app/models/repertoire.rb mode change 100644 => 100755 app/models/reply_for_journal.rb mode change 100644 => 100755 app/models/repository.rb mode change 100644 => 100755 app/models/repository/bazaar.rb mode change 100644 => 100755 app/models/repository/cvs.rb mode change 100644 => 100755 app/models/repository/darcs.rb mode change 100644 => 100755 app/models/repository/filesystem.rb mode change 100644 => 100755 app/models/repository/git.rb mode change 100644 => 100755 app/models/repository/gitlab.rb mode change 100644 => 100755 app/models/repository/mercurial.rb mode change 100644 => 100755 app/models/repository/subversion.rb mode change 100644 => 100755 app/models/resource_bank.rb mode change 100644 => 100755 app/models/role.rb delete mode 100644 app/models/run_code_message.rb mode change 100644 => 100755 app/models/school.rb mode change 100644 => 100755 app/models/school_image.rb mode change 100644 => 100755 app/models/score_indicator.rb mode change 100644 => 100755 app/models/score_indicator_quality.rb mode change 100644 => 100755 app/models/score_quality_description.rb mode change 100644 => 100755 app/models/score_set.rb mode change 100644 => 100755 app/models/secdomain.rb mode change 100644 => 100755 app/models/seems_rateable_rates.rb mode change 100644 => 100755 app/models/setting.rb mode change 100644 => 100755 app/models/share.rb mode change 100644 => 100755 app/models/shield_activity.rb mode change 100644 => 100755 app/models/shield_wechat_message.rb mode change 100644 => 100755 app/models/shixun.rb mode change 100644 => 100755 app/models/shixun_major_course.rb mode change 100644 => 100755 app/models/shixun_member.rb mode change 100644 => 100755 app/models/shixun_mirror_repository.rb mode change 100644 => 100755 app/models/shixun_modify.rb mode change 100644 => 100755 app/models/shixun_port.rb mode change 100644 => 100755 app/models/shixun_school.rb mode change 100644 => 100755 app/models/shixun_tag_repertoire.rb mode change 100644 => 100755 app/models/shixun_tags.rb mode change 100644 => 100755 app/models/softapplication.rb mode change 100644 => 100755 app/models/sonar_analysis.rb mode change 100644 => 100755 app/models/sonar_error.rb mode change 100644 => 100755 app/models/sso.rb mode change 100644 => 100755 app/models/stage.rb mode change 100644 => 100755 app/models/stage_shixun.rb mode change 100644 => 100755 app/models/statistic.rb mode change 100644 => 100755 app/models/statistic_score.rb mode change 100644 => 100755 app/models/student_graduation_topic.rb mode change 100644 => 100755 app/models/student_work.rb mode change 100644 => 100755 app/models/student_work_project.rb mode change 100644 => 100755 app/models/student_work_test.rb mode change 100644 => 100755 app/models/student_works_evaluation_distribution.rb mode change 100644 => 100755 app/models/student_works_score.rb mode change 100644 => 100755 app/models/student_works_scores_appeal.rb mode change 100644 => 100755 app/models/students_for_course.rb mode change 100644 => 100755 app/models/sub_document_comment.rb mode change 100644 => 100755 app/models/sub_domain.rb mode change 100644 => 100755 app/models/sub_repertoire.rb mode change 100644 => 100755 app/models/subfield_subdomain_dir.rb mode change 100644 => 100755 app/models/subject.rb delete mode 100644 app/models/subject_level_system.rb mode change 100644 => 100755 app/models/subject_member.rb mode change 100644 => 100755 app/models/syllabus.rb mode change 100644 => 100755 app/models/syllabus_member.rb mode change 100644 => 100755 app/models/syllabus_update_record.rb mode change 100644 => 100755 app/models/system_message.rb mode change 100644 => 100755 app/models/system_update_notice.rb mode change 100644 => 100755 app/models/tag_repertoire.rb mode change 100644 => 100755 app/models/teacher.rb mode change 100644 => 100755 app/models/teacher_course_group.rb mode change 100644 => 100755 app/models/team_member.rb mode change 100644 => 100755 app/models/test_set.rb mode change 100644 => 100755 app/models/tiding.rb mode change 100644 => 100755 app/models/time_entry.rb mode change 100644 => 100755 app/models/time_entry_activity.rb mode change 100644 => 100755 app/models/time_entry_activity_custom_field.rb mode change 100644 => 100755 app/models/time_entry_custom_field.rb mode change 100644 => 100755 app/models/time_entry_query.rb mode change 100644 => 100755 app/models/token.rb mode change 100644 => 100755 app/models/tracker.rb mode change 100644 => 100755 app/models/training.rb mode change 100644 => 100755 app/models/training_payinfo.rb mode change 100644 => 100755 app/models/training_task.rb mode change 100644 => 100755 app/models/user.rb mode change 100644 => 100755 app/models/user_actions.rb mode change 100644 => 100755 app/models/user_activity.rb mode change 100644 => 100755 app/models/user_custom_field.rb mode change 100644 => 100755 app/models/user_day_certification.rb mode change 100644 => 100755 app/models/user_extensions.rb mode change 100644 => 100755 app/models/user_feedback_message.rb mode change 100644 => 100755 app/models/user_grade.rb mode change 100644 => 100755 app/models/user_hidden_module.rb mode change 100644 => 100755 app/models/user_levels.rb mode change 100644 => 100755 app/models/user_preference.rb mode change 100644 => 100755 app/models/user_score.rb mode change 100644 => 100755 app/models/user_score_details.rb mode change 100644 => 100755 app/models/user_search.rb mode change 100644 => 100755 app/models/user_status.rb mode change 100644 => 100755 app/models/user_system_notice.rb mode change 100644 => 100755 app/models/user_wechat.rb mode change 100644 => 100755 app/models/verification_code.rb mode change 100644 => 100755 app/models/version.rb mode change 100644 => 100755 app/models/version_custom_field.rb mode change 100644 => 100755 app/models/visitor.rb mode change 100644 => 100755 app/models/watcher.rb mode change 100644 => 100755 app/models/watchers_of_projects.rb mode change 100644 => 100755 app/models/watchers_of_user.rb mode change 100644 => 100755 app/models/web_footer_company.rb mode change 100644 => 100755 app/models/web_footer_oranizer.rb mode change 100644 => 100755 app/models/webssh.rb mode change 100644 => 100755 app/models/wechat_log.rb mode change 100644 => 100755 app/models/wechat_pay.rb mode change 100644 => 100755 app/models/wiki.rb mode change 100644 => 100755 app/models/wiki_content.rb mode change 100644 => 100755 app/models/wiki_content_observer.rb mode change 100644 => 100755 app/models/wiki_page.rb mode change 100644 => 100755 app/models/wiki_redirect.rb mode change 100644 => 100755 app/models/work.rb mode change 100644 => 100755 app/models/work_detail_group.rb mode change 100644 => 100755 app/models/work_detail_manual.rb mode change 100644 => 100755 app/models/workflow_permission.rb mode change 100644 => 100755 app/models/workflow_rule.rb mode change 100644 => 100755 app/models/workflow_transition.rb mode change 100644 => 100755 app/models/works_category.rb mode change 100644 => 100755 app/models/zip_pack.rb mode change 100644 => 100755 app/models/接口理解文档.md mode change 100644 => 100755 app/services/careers_service.rb mode change 100644 => 100755 app/services/comment_service.rb mode change 100644 => 100755 app/services/contests_service.rb mode change 100644 => 100755 app/services/courses_service.rb mode change 100644 => 100755 app/services/discusses_service.rb delete mode 100644 app/services/ecloud_service.rb mode change 100644 => 100755 app/services/games_service.rb mode change 100644 => 100755 app/services/homework_service.rb mode change 100644 => 100755 app/services/memos_service.rb mode change 100644 => 100755 app/services/projects_service.rb mode change 100644 => 100755 app/services/resources_service.rb mode change 100644 => 100755 app/services/review_service.rb mode change 100644 => 100755 app/services/shixuns_service.rb mode change 100644 => 100755 app/services/sources_service.rb mode change 100644 => 100755 app/services/syllabuses_service.rb mode change 100644 => 100755 app/services/users_service.rb mode change 100644 => 100755 app/services/watches_service.rb mode change 100644 => 100755 app/services/wechat_service.rb mode change 100644 => 100755 app/services/zip_service.rb mode change 100644 => 100755 app/sweepers/NOTEMPTY mode change 100644 => 100755 app/tasks/destroy_repository_task.rb mode change 100644 => 100755 app/tasks/office_conver_task.rb mode change 100644 => 100755 app/views/account/_about_us_show.html.erb mode change 100644 => 100755 app/views/account/_agreement_show.erb mode change 100644 => 100755 app/views/account/_certification_one_day.html.erb mode change 100644 => 100755 app/views/account/_change_user_email.html.erb mode change 100644 => 100755 app/views/account/_contact_us_show.html.erb mode change 100644 => 100755 app/views/account/_cooperative_partner_show.erb mode change 100644 => 100755 app/views/account/_copyright_info.html.erb mode change 100644 => 100755 app/views/account/_experience_record_list.html.erb mode change 100644 => 100755 app/views/account/_gold_record_list.html.erb mode change 100644 => 100755 app/views/account/_has_authentication.html.erb mode change 100644 => 100755 app/views/account/_help_center_show.html.erb mode change 100644 => 100755 app/views/account/_login.html.erb mode change 100644 => 100755 app/views/account/_new_coop.html.erb mode change 100644 => 100755 app/views/account/_new_or_edit.html.erb mode change 100644 => 100755 app/views/account/_pro_certification_form.html.erb mode change 100644 => 100755 app/views/account/_suggest_show.html.erb mode change 100644 => 100755 app/views/account/_update_comfirm.html.erb mode change 100644 => 100755 app/views/account/_user_auth_form.html.erb mode change 100644 => 100755 app/views/account/_user_update_notice.html.erb mode change 100644 => 100755 app/views/account/agreement.js.erb mode change 100644 => 100755 app/views/account/apply_trail.js.erb mode change 100644 => 100755 app/views/account/authentication.html.erb mode change 100644 => 100755 app/views/account/avatar.html.erb mode change 100644 => 100755 app/views/account/bind_email.html.erb mode change 100644 => 100755 app/views/account/cancel_pro_apply.js.erb mode change 100644 => 100755 app/views/account/change_or_bind.html.erb mode change 100644 => 100755 app/views/account/change_psd.html.erb mode change 100644 => 100755 app/views/account/email_activation.html.erb mode change 100644 => 100755 app/views/account/email_valid.html.erb mode change 100644 => 100755 app/views/account/experience_record.html.erb mode change 100644 => 100755 app/views/account/experience_record.js.erb mode change 100644 => 100755 app/views/account/gold_record.html.erb mode change 100644 => 100755 app/views/account/gold_record.js.erb mode change 100644 => 100755 app/views/account/help.html.erb mode change 100644 => 100755 app/views/account/help.js.erb mode change 100644 => 100755 app/views/account/insert_suggest.js.erb mode change 100644 => 100755 app/views/account/login.html.erb mode change 100644 => 100755 app/views/account/login.js.erb mode change 100644 => 100755 app/views/account/logout.html.erb mode change 100644 => 100755 app/views/account/lost_password.html.erb mode change 100644 => 100755 app/views/account/password_recovery.html.erb mode change 100644 => 100755 app/views/account/phone_bind.html.erb mode change 100644 => 100755 app/views/account/professional_certification.html.erb mode change 100644 => 100755 app/views/account/reset_psd.html.erb mode change 100644 => 100755 app/views/account/reset_psd.js.erb mode change 100644 => 100755 app/views/account/security_settings.html.erb mode change 100644 => 100755 app/views/account/update_help.js.erb mode change 100644 => 100755 app/views/account/user_info.html.erb mode change 100644 => 100755 app/views/account/user_join.html.erb mode change 100644 => 100755 app/views/account/wechat_bind.html.erb mode change 100644 => 100755 app/views/activities/index.html.erb mode change 100644 => 100755 app/views/activity_notifys/chang_read_flag.html.erb mode change 100644 => 100755 app/views/admin/_all_schools.html.erb mode change 100644 => 100755 app/views/admin/_audit_authentication_list.html.erb mode change 100644 => 100755 app/views/admin/_authentication_list.html.erb mode change 100644 => 100755 app/views/admin/_course_detail_tr.html.erb mode change 100644 => 100755 app/views/admin/_courselist_detail_tr.html.erb mode change 100644 => 100755 app/views/admin/_menu.html.erb mode change 100644 => 100755 app/views/admin/_no_data.html.erb mode change 100644 => 100755 app/views/admin/_rename_course_name.html.erb mode change 100644 => 100755 app/views/admin/_rename_syllabus_title.html.erb mode change 100644 => 100755 app/views/admin/_tab_applied_departments.erb mode change 100644 => 100755 app/views/admin/_tab_excellent_courses.erb mode change 100644 => 100755 app/views/admin/_tab_has_applied_applied.erb mode change 100644 => 100755 app/views/admin/_tab_messages.erb mode change 100644 => 100755 app/views/admin/_tab_partial.html.erb mode change 100644 => 100755 app/views/admin/_tab_syllabuses_courses.erb mode change 100644 => 100755 app/views/admin/_tab_users.erb mode change 100644 => 100755 app/views/admin/_update_school_form.html.erb mode change 100644 => 100755 app/views/admin/agree_authentication.js.erb mode change 100644 => 100755 app/views/admin/all_schools.js.erb mode change 100644 => 100755 app/views/admin/applied_departments.html.erb mode change 100644 => 100755 app/views/admin/applied_schools.html.erb mode change 100644 => 100755 app/views/admin/apply_for_homework.html.erb mode change 100644 => 100755 app/views/admin/code_work_tests.html.erb mode change 100644 => 100755 app/views/admin/contest_page_made.html.erb mode change 100644 => 100755 app/views/admin/contests.html.erb mode change 100644 => 100755 app/views/admin/course_messages.html.erb mode change 100644 => 100755 app/views/admin/course_page_made.html.erb mode change 100644 => 100755 app/views/admin/course_resource_list.html.erb mode change 100644 => 100755 app/views/admin/courses.html.erb mode change 100644 => 100755 app/views/admin/create_syllabus.js.erb mode change 100644 => 100755 app/views/admin/enterprise_page_made.html.erb mode change 100644 => 100755 app/views/admin/excellent_all_courses.html.erb mode change 100644 => 100755 app/views/admin/excellent_courses.html.erb mode change 100644 => 100755 app/views/admin/first_page_made.html.erb mode change 100644 => 100755 app/views/admin/has_applied_departments.html.erb mode change 100644 => 100755 app/views/admin/has_applied_schools.html.erb mode change 100644 => 100755 app/views/admin/homework.html.erb mode change 100644 => 100755 app/views/admin/identity_authentication.html.erb mode change 100644 => 100755 app/views/admin/identity_authentication.js.erb mode change 100644 => 100755 app/views/admin/index.html.erb mode change 100644 => 100755 app/views/admin/info.html.erb mode change 100644 => 100755 app/views/admin/latest_login_teachers.html.erb mode change 100644 => 100755 app/views/admin/latest_login_users.html.erb mode change 100644 => 100755 app/views/admin/leave_messages.html.erb mode change 100644 => 100755 app/views/admin/messages.html.erb mode change 100644 => 100755 app/views/admin/messages_list.html.erb mode change 100644 => 100755 app/views/admin/mobile_version.html.erb mode change 100644 => 100755 app/views/admin/non_syllabus_courses.html.erb mode change 100644 => 100755 app/views/admin/notices.html.erb mode change 100644 => 100755 app/views/admin/organization.html.erb mode change 100644 => 100755 app/views/admin/plugins.html.erb mode change 100644 => 100755 app/views/admin/project_messages.html.erb mode change 100644 => 100755 app/views/admin/project_page_made.html.erb mode change 100644 => 100755 app/views/admin/project_resource_list.html.erb mode change 100644 => 100755 app/views/admin/projects.html.erb mode change 100644 => 100755 app/views/admin/schools.html.erb mode change 100644 => 100755 app/views/admin/search.html.erb mode change 100644 => 100755 app/views/admin/set_excellent_course.js.erb mode change 100644 => 100755 app/views/admin/shixun_authentication.js.erb mode change 100644 => 100755 app/views/admin/shixuns.html.erb mode change 100644 => 100755 app/views/admin/syllabuses.html.erb mode change 100644 => 100755 app/views/admin/update_course_name.js.erb mode change 100644 => 100755 app/views/admin/update_syllabus_title.js.erb mode change 100644 => 100755 app/views/admin/users.html.erb mode change 100644 => 100755 app/views/admin/web_footer_made.html.erb mode change 100644 => 100755 app/views/applied_project/_applied_join_project.html.erb mode change 100644 => 100755 app/views/applied_project/_applied_project_tip.html.erb mode change 100644 => 100755 app/views/applied_project/_set_applied.js.erb mode change 100644 => 100755 app/views/applied_project/applied_join_project.js.erb mode change 100644 => 100755 app/views/applied_project/applied_project_info.js.erb mode change 100644 => 100755 app/views/apply_project_masters/_form.html.erb mode change 100644 => 100755 app/views/apply_project_masters/_set_apply.js.erb mode change 100644 => 100755 app/views/apply_project_masters/edit.html.erb mode change 100644 => 100755 app/views/apply_project_masters/index.html.erb mode change 100644 => 100755 app/views/apply_project_masters/new.html.erb mode change 100644 => 100755 app/views/apply_project_masters/show.html.erb mode change 100644 => 100755 app/views/article_homepages/_article_form.html.erb mode change 100644 => 100755 app/views/article_homepages/_article_show.html.erb mode change 100644 => 100755 app/views/article_homepages/edit.html.erb mode change 100644 => 100755 app/views/article_homepages/new.html.erb mode change 100644 => 100755 app/views/article_homepages/show.html.erb mode change 100644 => 100755 app/views/at/show.json.erb mode change 100644 => 100755 app/views/attachments/_activity_attach.html.erb mode change 100644 => 100755 app/views/attachments/_app_link.html.erb mode change 100644 => 100755 app/views/attachments/_attachment_history_download.html.erb mode change 100644 => 100755 app/views/attachments/_course_file_links.html.erb mode change 100644 => 100755 app/views/attachments/_course_type_edit.html.erb mode change 100644 => 100755 app/views/attachments/_form.html.erb mode change 100644 => 100755 app/views/attachments/_form_attachments.html.erb mode change 100644 => 100755 app/views/attachments/_form_course.html.erb mode change 100644 => 100755 app/views/attachments/_form_project.html.erb mode change 100644 => 100755 app/views/attachments/_form_project_new.html.erb mode change 100644 => 100755 app/views/attachments/_homework_jour_link.html.erb mode change 100644 => 100755 app/views/attachments/_issue_reply.html.erb mode change 100644 => 100755 app/views/attachments/_links.html.erb mode change 100644 => 100755 app/views/attachments/_new_form.html.erb mode change 100644 => 100755 app/views/attachments/_project_file_links.html.erb mode change 100644 => 100755 app/views/attachments/_show_attachment_history.html.erb mode change 100644 => 100755 app/views/attachments/_show_attachment_history_delete.html.erb mode change 100644 => 100755 app/views/attachments/_temp.html.erb mode change 100644 => 100755 app/views/attachments/_type_edit.html.erb mode change 100644 => 100755 app/views/attachments/_update_publish_time_box.html.erb mode change 100644 => 100755 app/views/attachments/_upload_attachment_new_version.html.erb mode change 100644 => 100755 app/views/attachments/add_exist_file_to_course.js.erb mode change 100644 => 100755 app/views/attachments/add_exist_file_to_courses.js.erb mode change 100644 => 100755 app/views/attachments/add_exist_file_to_org_subfield.js.erb mode change 100644 => 100755 app/views/attachments/add_exist_file_to_project.js.erb mode change 100644 => 100755 app/views/attachments/add_exist_file_to_projects.js.erb mode change 100644 => 100755 app/views/attachments/attachment_history_download.js.erb mode change 100644 => 100755 app/views/attachments/attachment_versions.js.erb mode change 100644 => 100755 app/views/attachments/attachment_versions_delete.js.erb mode change 100644 => 100755 app/views/attachments/autocomplete.js.erb mode change 100644 => 100755 app/views/attachments/delete.js.erb mode change 100644 => 100755 app/views/attachments/delete_softapplications.js.erb mode change 100644 => 100755 app/views/attachments/destroy.js.erb mode change 100644 => 100755 app/views/attachments/diff.html.erb mode change 100644 => 100755 app/views/attachments/file.html.erb mode change 100644 => 100755 app/views/attachments/renderTag.js.erb mode change 100644 => 100755 app/views/attachments/show.api.rsb mode change 100644 => 100755 app/views/attachments/updateFileDense.js.erb mode change 100644 => 100755 app/views/attachments/update_attachment_publish_time.js.erb mode change 100644 => 100755 app/views/attachments/update_file_dense.js.erb mode change 100644 => 100755 app/views/attachments/upload.api.rsb mode change 100644 => 100755 app/views/attachments/upload.js.erb mode change 100644 => 100755 app/views/attachments/upload_attachment_version.js.erb mode change 100644 => 100755 app/views/auth_sources/_form.html.erb mode change 100644 => 100755 app/views/auth_sources/_form_auth_source_ldap.html.erb mode change 100644 => 100755 app/views/auth_sources/edit.html.erb mode change 100644 => 100755 app/views/auth_sources/index.html.erb mode change 100644 => 100755 app/views/auth_sources/new.html.erb mode change 100644 => 100755 app/views/auto_completes/issues.html.erb mode change 100644 => 100755 app/views/avatar/_avatar_form.html.erb mode change 100644 => 100755 app/views/avatar/_avatar_preview.html.erb mode change 100644 => 100755 app/views/avatar/_new_avatar_form.html.erb mode change 100644 => 100755 app/views/avatar/_new_contest_avatar_form.html.erb mode change 100644 => 100755 app/views/avatar/delete_image.js.erb mode change 100644 => 100755 app/views/avatar/upload.js.erb mode change 100644 => 100755 app/views/bids/_alert_anonyoms.html.erb mode change 100644 => 100755 app/views/bids/_app_link.html.erb mode change 100644 => 100755 app/views/bids/_attachment.html.erb mode change 100644 => 100755 app/views/bids/_bid_homework_show.html.erb mode change 100644 => 100755 app/views/bids/_bid_show.html.erb mode change 100644 => 100755 app/views/bids/_contest_show.html.erb mode change 100644 => 100755 app/views/bids/_form.html.erb mode change 100644 => 100755 app/views/bids/_history.html.erb mode change 100644 => 100755 app/views/bids/_homework.html.erb mode change 100644 => 100755 app/views/bids/_homework_form.html.erb mode change 100644 => 100755 app/views/bids/_homework_list.html.erb mode change 100644 => 100755 app/views/bids/_list_projects.html.erb mode change 100644 => 100755 app/views/bids/_new.html.erb mode change 100644 => 100755 app/views/bids/_new_bid.html.erb mode change 100644 => 100755 app/views/bids/_new_homework_form.html.erb mode change 100644 => 100755 app/views/bids/_new_join.html.erb mode change 100644 => 100755 app/views/bids/_pre_show.html.erb mode change 100644 => 100755 app/views/bids/_project_homework.html.erb mode change 100644 => 100755 app/views/bids/_project_list.html.erb mode change 100644 => 100755 app/views/bids/_set_join.js.erb mode change 100644 => 100755 app/views/bids/add.js.erb mode change 100644 => 100755 app/views/bids/add_homework.js.erb mode change 100644 => 100755 app/views/bids/alert_anonymous_comment.js.erb mode change 100644 => 100755 app/views/bids/back.js.erb mode change 100644 => 100755 app/views/bids/contest.html.erb mode change 100644 => 100755 app/views/bids/create.js.erb mode change 100644 => 100755 app/views/bids/destroy.js.erb mode change 100644 => 100755 app/views/bids/edit.html.erb mode change 100644 => 100755 app/views/bids/fork.html.erb mode change 100644 => 100755 app/views/bids/homework_ajax_modal.js.erb mode change 100644 => 100755 app/views/bids/homework_respond.html.erb mode change 100644 => 100755 app/views/bids/homework_statistics.html.erb mode change 100644 => 100755 app/views/bids/index.html.erb mode change 100644 => 100755 app/views/bids/more.js.erb mode change 100644 => 100755 app/views/bids/new.js.erb mode change 100644 => 100755 app/views/bids/new_bid.html.erb mode change 100644 => 100755 app/views/bids/new_bid.js.erb mode change 100644 => 100755 app/views/bids/new_contest.html.erb mode change 100644 => 100755 app/views/bids/new_join.js.erb mode change 100644 => 100755 app/views/bids/new_submit_homework.html.erb mode change 100644 => 100755 app/views/bids/set_reward.js.erb mode change 100644 => 100755 app/views/bids/settings.html.erb mode change 100644 => 100755 app/views/bids/show.html.erb mode change 100644 => 100755 app/views/bids/show_bid_project.html.erb mode change 100644 => 100755 app/views/bids/show_course.html.erb mode change 100644 => 100755 app/views/bids/show_courseEx.html.erb mode change 100644 => 100755 app/views/bids/show_document_homework.html.erb mode change 100644 => 100755 app/views/bids/show_participator.html.erb mode change 100644 => 100755 app/views/bids/show_project.html.erb mode change 100644 => 100755 app/views/bids/show_project_homework.html.erb mode change 100644 => 100755 app/views/bids/start_anonymous_comment.js.erb mode change 100644 => 100755 app/views/bids/stop_anonymous_comment.js.erb mode change 100644 => 100755 app/views/blog_comments/_attachments_links.html.erb mode change 100644 => 100755 app/views/blog_comments/_blog_attachments.erb mode change 100644 => 100755 app/views/blog_comments/_blog_comment_show_replies.html.erb mode change 100644 => 100755 app/views/blog_comments/_edit.html.erb mode change 100644 => 100755 app/views/blog_comments/_new.html.erb mode change 100644 => 100755 app/views/blog_comments/_reply_form.html.erb mode change 100644 => 100755 app/views/blog_comments/_simple_ke_reply_form.html.erb mode change 100644 => 100755 app/views/blog_comments/destroy.js.erb mode change 100644 => 100755 app/views/blog_comments/edit.html.erb mode change 100644 => 100755 app/views/blog_comments/quote.js.erb mode change 100644 => 100755 app/views/blog_comments/reply.js.erb mode change 100644 => 100755 app/views/blog_comments/show.html.erb mode change 100644 => 100755 app/views/blog_comments/show.js.erb mode change 100644 => 100755 app/views/blogs/_article.html.erb mode change 100644 => 100755 app/views/blogs/_article_list.html.erb mode change 100644 => 100755 app/views/blogs/_homepage.html.erb mode change 100644 => 100755 app/views/blogs/index.html.erb mode change 100644 => 100755 app/views/blogs/index.js.erb mode change 100644 => 100755 app/views/blogs/show.html.erb mode change 100644 => 100755 app/views/boards/_contest_boardlist.html.erb mode change 100644 => 100755 app/views/boards/_contest_message_edit.html.erb mode change 100644 => 100755 app/views/boards/_contest_new.html.erb mode change 100644 => 100755 app/views/boards/_contest_show.html.erb mode change 100644 => 100755 app/views/boards/_contest_show_detail.html.erb mode change 100644 => 100755 app/views/boards/_course_message_edit.html.erb mode change 100644 => 100755 app/views/boards/_course_new.html.erb mode change 100644 => 100755 app/views/boards/_course_show.html.erb mode change 100644 => 100755 app/views/boards/_course_show_detail.html.erb mode change 100644 => 100755 app/views/boards/_edit.html.erb mode change 100644 => 100755 app/views/boards/_form.html.erb mode change 100644 => 100755 app/views/boards/_form_course.html.erb mode change 100644 => 100755 app/views/boards/_form_project.html.erb mode change 100644 => 100755 app/views/boards/_org_subfield_message_edit.html.erb mode change 100644 => 100755 app/views/boards/_org_subfield_new.html.erb mode change 100644 => 100755 app/views/boards/_project_message_edit.html.erb mode change 100644 => 100755 app/views/boards/_project_new.html.erb mode change 100644 => 100755 app/views/boards/_project_new_topic.html.erb mode change 100644 => 100755 app/views/boards/_project_show.html.erb mode change 100644 => 100755 app/views/boards/_project_show_detail.html.erb mode change 100644 => 100755 app/views/boards/create.js.erb mode change 100644 => 100755 app/views/boards/destroy.js.erb mode change 100644 => 100755 app/views/boards/edit.html.erb mode change 100644 => 100755 app/views/boards/index.html.erb mode change 100644 => 100755 app/views/boards/new.html.erb mode change 100644 => 100755 app/views/boards/show.html.erb mode change 100644 => 100755 app/views/boards/show.js.erb mode change 100644 => 100755 app/views/boards/update_boards_name.js.erb mode change 100644 => 100755 app/views/boards/update_boards_position.js.erb mode change 100644 => 100755 app/views/boards/update_name.js.erb mode change 100644 => 100755 app/views/boards/update_position.js.erb mode change 100644 => 100755 app/views/calendars/show.html.erb mode change 100644 => 100755 app/views/challenges/_add_choose_page.html.erb mode change 100644 => 100755 app/views/challenges/_add_testsetting_page.html.erb mode change 100644 => 100755 app/views/challenges/_answer_form.html.erb mode change 100644 => 100755 app/views/challenges/_answer_show.html.erb mode change 100644 => 100755 app/views/challenges/_challenge_tags.html.erb mode change 100644 => 100755 app/views/challenges/_challenges_left_nav.html.erb mode change 100644 => 100755 app/views/challenges/_challenges_right.html.erb mode change 100644 => 100755 app/views/challenges/_challenges_tab_nav.html.erb mode change 100644 => 100755 app/views/challenges/_choose_tab.html.erb mode change 100644 => 100755 app/views/challenges/_choose_type.html.erb mode change 100644 => 100755 app/views/challenges/_content_list.html.erb mode change 100644 => 100755 app/views/challenges/_edit_answer.html.erb mode change 100644 => 100755 app/views/challenges/_edit_answer_page.html.erb mode change 100644 => 100755 app/views/challenges/_edit_choose_page.html.erb mode change 100644 => 100755 app/views/challenges/_edit_evaluating.html.erb mode change 100644 => 100755 app/views/challenges/_edit_evaluating_page.html.erb mode change 100644 => 100755 app/views/challenges/_edit_propaedeutics.html.erb mode change 100644 => 100755 app/views/challenges/_edit_scoring.html.erb mode change 100644 => 100755 app/views/challenges/_edit_skill.html.erb mode change 100644 => 100755 app/views/challenges/_edit_task_page.html.erb mode change 100644 => 100755 app/views/challenges/_edit_task_pass.html.erb mode change 100644 => 100755 app/views/challenges/_evaluate_show.html.erb mode change 100644 => 100755 app/views/challenges/_evaluating_form.html.erb mode change 100644 => 100755 app/views/challenges/_form.html.erb mode change 100644 => 100755 app/views/challenges/_new_or_edit_task_page.html.erb mode change 100644 => 100755 app/views/challenges/_pass_task_show.html.erb mode change 100644 => 100755 app/views/challenges/_propaedeutics_form.html.erb mode change 100644 => 100755 app/views/challenges/_score_form.html.erb mode change 100644 => 100755 app/views/challenges/_single_or_multiple_question.html.erb mode change 100644 => 100755 app/views/challenges/_single_or_multiple_question_show.html.erb mode change 100644 => 100755 app/views/challenges/_skill_form.html.erb mode change 100644 => 100755 app/views/challenges/_task_edit_page.html.erb mode change 100644 => 100755 app/views/challenges/_task_pass_form.html.erb mode change 100644 => 100755 app/views/challenges/_uploading_attachments.html.erb mode change 100644 => 100755 app/views/challenges/add_choose_question.js.erb mode change 100644 => 100755 app/views/challenges/choose_type_show.js.erb mode change 100644 => 100755 app/views/challenges/create_choose_question.js.erb mode change 100644 => 100755 app/views/challenges/destroy.js.erb mode change 100644 => 100755 app/views/challenges/edit.html.erb mode change 100644 => 100755 app/views/challenges/edit.js.erb mode change 100644 => 100755 app/views/challenges/edit_choose_question.js.erb mode change 100644 => 100755 app/views/challenges/index.html.erb mode change 100644 => 100755 app/views/challenges/index_down.js.erb mode change 100644 => 100755 app/views/challenges/index_up.js.erb mode change 100644 => 100755 app/views/challenges/new.html.erb mode change 100644 => 100755 app/views/challenges/new_choose_question.js.erb mode change 100644 => 100755 app/views/challenges/new_or_edit_choose_question.js.erb mode change 100644 => 100755 app/views/challenges/show.html.erb mode change 100644 => 100755 app/views/challenges/show_choose_question.js.erb mode change 100644 => 100755 app/views/challenges/update_choose_question.js.erb mode change 100644 => 100755 app/views/colleges/_course_statistics.html.erb mode change 100644 => 100755 app/views/colleges/_student_eval.html.erb mode change 100644 => 100755 app/views/colleges/_student_shixun.html.erb mode change 100644 => 100755 app/views/colleges/course_statistics.js.erb mode change 100644 => 100755 app/views/colleges/engineering_capability.js.erb mode change 100644 => 100755 app/views/colleges/online_school.js.erb mode change 100644 => 100755 app/views/colleges/statistics.html.erb mode change 100644 => 100755 app/views/colleges/student_eval.js.erb mode change 100644 => 100755 app/views/colleges/student_shixun.js.erb mode change 100644 => 100755 app/views/comments/_simple_ke_reply_form.html.erb mode change 100644 => 100755 app/views/comments/create.js.erb mode change 100644 => 100755 app/views/comments/destroy.js.erb mode change 100644 => 100755 app/views/comments/quote.js.erb mode change 100644 => 100755 app/views/comments/reply.js.erb mode change 100644 => 100755 app/views/common/403.html mode change 100644 => 100755 app/views/common/404.html mode change 100644 => 100755 app/views/common/_calendar.html.erb mode change 100644 => 100755 app/views/common/_diff.html.erb mode change 100644 => 100755 app/views/common/_extend_file.html.erb mode change 100644 => 100755 app/views/common/_file.html.erb mode change 100644 => 100755 app/views/common/_preview.html.erb mode change 100644 => 100755 app/views/common/_project.html.erb mode change 100644 => 100755 app/views/common/_project_tab.html.erb mode change 100644 => 100755 app/views/common/_tabs.html.erb mode change 100644 => 100755 app/views/common/error.html.erb mode change 100644 => 100755 app/views/common/error_messages.api.rsb mode change 100644 => 100755 app/views/common/feed.atom.builder mode change 100644 => 100755 app/views/common/index.html.erb mode change 100644 => 100755 app/views/competition_teams/_competition_team_form.html.erb mode change 100644 => 100755 app/views/competition_teams/_edit.html.erb mode change 100644 => 100755 app/views/competition_teams/_search_member_list.html.erb mode change 100644 => 100755 app/views/competition_teams/_search_teacher_list.html.erb mode change 100644 => 100755 app/views/competition_teams/_search_user_block.html.erb mode change 100644 => 100755 app/views/competition_teams/create.js.erb mode change 100644 => 100755 app/views/competition_teams/edit.js.erb mode change 100644 => 100755 app/views/competition_teams/exit_team.js.erb mode change 100644 => 100755 app/views/competition_teams/join_team.js.erb mode change 100644 => 100755 app/views/competition_teams/new.js.erb mode change 100644 => 100755 app/views/competition_teams/personal_enroll.js.erb mode change 100644 => 100755 app/views/competition_teams/search_non_user.js.erb mode change 100644 => 100755 app/views/competition_teams/search_teacher.js.erb mode change 100644 => 100755 app/views/competition_teams/update.js.erb mode change 100644 => 100755 app/views/competitions/_add_announcement.html.erb mode change 100644 => 100755 app/views/competitions/_add_md_contents.html.erb mode change 100644 => 100755 app/views/competitions/_annotation_2018_competition.html.erb mode change 100644 => 100755 app/views/competitions/_ccf_competition.html.erb mode change 100644 => 100755 app/views/competitions/_chartList.html.erb mode change 100644 => 100755 app/views/competitions/_edit_rule.html.erb mode change 100644 => 100755 app/views/competitions/_enroll_createTeam.html.erb mode change 100644 => 100755 app/views/competitions/_header.html.erb mode change 100644 => 100755 app/views/competitions/_hn_competition.html.erb mode change 100644 => 100755 app/views/competitions/_qg_competition.html.erb mode change 100644 => 100755 app/views/competitions/_show_rule.html.erb mode change 100644 => 100755 app/views/competitions/_team_list.html.erb mode change 100644 => 100755 app/views/competitions/charts.html.erb mode change 100644 => 100755 app/views/competitions/charts.js.erb mode change 100644 => 100755 app/views/competitions/competition_images.js.erb mode change 100644 => 100755 app/views/competitions/competition_setting.js.erb mode change 100644 => 100755 app/views/competitions/db.html.erb mode change 100644 => 100755 app/views/competitions/delete_competition_stage.js.erb mode change 100644 => 100755 app/views/competitions/delete_stage_section.js.erb mode change 100644 => 100755 app/views/competitions/edit_inform.html.erb mode change 100644 => 100755 app/views/competitions/edit_md_content.html.erb mode change 100644 => 100755 app/views/competitions/edit_rule.js.erb mode change 100644 => 100755 app/views/competitions/enroll.html.erb mode change 100644 => 100755 app/views/competitions/enroll.js.erb mode change 100644 => 100755 app/views/competitions/home.html.erb mode change 100644 => 100755 app/views/competitions/index.html.erb mode change 100644 => 100755 app/views/competitions/informs.html.erb mode change 100644 => 100755 app/views/competitions/md_content.html.erb mode change 100644 => 100755 app/views/competitions/new_competition_stage.js.erb mode change 100644 => 100755 app/views/competitions/new_inform.html.erb mode change 100644 => 100755 app/views/competitions/new_stage_section.js.erb mode change 100644 => 100755 app/views/competitions/online_switch.js.erb mode change 100644 => 100755 app/views/competitions/send_message.js.erb mode change 100644 => 100755 app/views/competitions/show.html.erb mode change 100644 => 100755 app/views/competitions/update_competition_stage.js.erb mode change 100644 => 100755 app/views/competitions/update_stage_section.js.erb mode change 100644 => 100755 app/views/contest_members/contest_member_autocomplete.js.erb mode change 100644 => 100755 app/views/contest_members/create.js.erb mode change 100644 => 100755 app/views/contest_members/destroy.js.erb mode change 100644 => 100755 app/views/contest_members/update.js.erb mode change 100644 => 100755 app/views/contestant_works/_add_score.html.erb mode change 100644 => 100755 app/views/contestant_works/_choose_group_member.html.erb mode change 100644 => 100755 app/views/contestant_works/_contest_evaluation_group.html.erb mode change 100644 => 100755 app/views/contestant_works/_contest_evaluation_group_work.html.erb mode change 100644 => 100755 app/views/contestant_works/_contest_evaluation_title.html.erb mode change 100644 => 100755 app/views/contestant_works/_contest_evaluation_un_group.html.erb mode change 100644 => 100755 app/views/contestant_works/_contest_evaluation_un_group_work.html.erb mode change 100644 => 100755 app/views/contestant_works/_contest_evaluation_un_title.html.erb mode change 100644 => 100755 app/views/contestant_works/_contest_evaluation_un_work.html.erb mode change 100644 => 100755 app/views/contestant_works/_contest_evaluation_work.html.erb mode change 100644 => 100755 app/views/contestant_works/_contest_work_attachments_status.html.erb mode change 100644 => 100755 app/views/contestant_works/_contestant_work_attachment.html.erb mode change 100644 => 100755 app/views/contestant_works/_contestant_work_list.html.erb mode change 100644 => 100755 app/views/contestant_works/_contestant_work_score.html.erb mode change 100644 => 100755 app/views/contestant_works/_contestant_work_score_records.html.erb mode change 100644 => 100755 app/views/contestant_works/_has_commit_work.html.erb mode change 100644 => 100755 app/views/contestant_works/_relate_project.html.erb mode change 100644 => 100755 app/views/contestant_works/_relate_projects.html.erb mode change 100644 => 100755 app/views/contestant_works/_show.html.erb mode change 100644 => 100755 app/views/contestant_works/_work_edit_information.html.erb mode change 100644 => 100755 app/views/contestant_works/_work_information.html.erb mode change 100644 => 100755 app/views/contestant_works/_work_post_brief.html.erb mode change 100644 => 100755 app/views/contestant_works/add_score.js.erb mode change 100644 => 100755 app/views/contestant_works/cancel_relate_project.js.erb mode change 100644 => 100755 app/views/contestant_works/create.js.erb mode change 100644 => 100755 app/views/contestant_works/edit.html.erb mode change 100644 => 100755 app/views/contestant_works/index.html.erb mode change 100644 => 100755 app/views/contestant_works/new.html.erb mode change 100644 => 100755 app/views/contestant_works/new_student_work_project.js.erb mode change 100644 => 100755 app/views/contestant_works/retry_work.js.erb mode change 100644 => 100755 app/views/contestant_works/search_contest_students.js.erb mode change 100644 => 100755 app/views/contestant_works/show.js.erb mode change 100644 => 100755 app/views/contestant_works/student_work_project.js.erb mode change 100644 => 100755 app/views/contestant_works/update.js.erb mode change 100644 => 100755 app/views/contests/_boards.html.erb mode change 100644 => 100755 app/views/contests/_contest_activity.html.erb mode change 100644 => 100755 app/views/contests/_contest_all_member.html.erb mode change 100644 => 100755 app/views/contests/_contest_base_info.html.erb mode change 100644 => 100755 app/views/contests/_contest_jours_list.html.erb mode change 100644 => 100755 app/views/contests/_contest_member.html.erb mode change 100644 => 100755 app/views/contests/_edit.html.erb mode change 100644 => 100755 app/views/contests/_join_contest_box.html.erb mode change 100644 => 100755 app/views/contests/_mamager_setting.html.erb mode change 100644 => 100755 app/views/contests/_members.html.erb mode change 100644 => 100755 app/views/contests/_upload_img.html.erb mode change 100644 => 100755 app/views/contests/contest_activities.html.erb mode change 100644 => 100755 app/views/contests/contest_activities.js.erb mode change 100644 => 100755 app/views/contests/dealwith_apply_request.js.erb mode change 100644 => 100755 app/views/contests/destroy.js.erb mode change 100644 => 100755 app/views/contests/feedback.html.erb mode change 100644 => 100755 app/views/contests/feedback.js.erb mode change 100644 => 100755 app/views/contests/join_contest.js.erb mode change 100644 => 100755 app/views/contests/join_contest_multi_role.js.erb mode change 100644 => 100755 app/views/contests/member.html.erb mode change 100644 => 100755 app/views/contests/member.js.erb mode change 100644 => 100755 app/views/contests/new.html.erb mode change 100644 => 100755 app/views/contests/private_or_public.js.erb mode change 100644 => 100755 app/views/contests/renew.js.erb mode change 100644 => 100755 app/views/contests/set_contest_attribute.js.erb mode change 100644 => 100755 app/views/contests/set_invite_code_halt.js.erb mode change 100644 => 100755 app/views/contests/settings.html.erb mode change 100644 => 100755 app/views/contests/show.html.erb mode change 100644 => 100755 app/views/contests/show.js.erb mode change 100644 => 100755 app/views/context_menus/issues.html.erb mode change 100644 => 100755 app/views/context_menus/time_entries.html.erb delete mode 100644 app/views/cooperates/_partner_item.html.erb delete mode 100644 app/views/cooperates/partner_list.html.erb delete mode 100644 app/views/cooperates/partner_list.js.erb mode change 100644 => 100755 app/views/cooperation/index.html.erb mode change 100644 => 100755 app/views/courses/_act_table.html.erb mode change 100644 => 100755 app/views/courses/_add_members.html.erb mode change 100644 => 100755 app/views/courses/_compare_code_tips_1.html.erb mode change 100644 => 100755 app/views/courses/_compare_code_tips_2.html.erb mode change 100644 => 100755 app/views/courses/_comprehensive_statistics.html.erb mode change 100644 => 100755 app/views/courses/_copy_course.html.erb mode change 100644 => 100755 app/views/courses/_course.html.erb mode change 100644 => 100755 app/views/courses/_courseList.html.erb mode change 100644 => 100755 app/views/courses/_course_activity.html.erb mode change 100644 => 100755 app/views/courses/_course_activity_content.html.erb mode change 100644 => 100755 app/views/courses/_course_activity_users.html.erb mode change 100644 => 100755 app/views/courses/_course_ad.html.erb mode change 100644 => 100755 app/views/courses/_course_board_settings.html.erb mode change 100644 => 100755 app/views/courses/_course_form.html.erb mode change 100644 => 100755 app/views/courses/_course_heroes.html.erb mode change 100644 => 100755 app/views/courses/_course_homework_catagories.html.erb mode change 100644 => 100755 app/views/courses/_course_index_search.html.erb mode change 100644 => 100755 app/views/courses/_course_jours_list.html.erb mode change 100644 => 100755 app/views/courses/_course_member_opr.html.erb mode change 100644 => 100755 app/views/courses/_course_members.html.erb mode change 100644 => 100755 app/views/courses/_course_outlines_list.html.erb mode change 100644 => 100755 app/views/courses/_course_resources_html.erb mode change 100644 => 100755 app/views/courses/_course_student.html.erb mode change 100644 => 100755 app/views/courses/_course_teacher.html.erb mode change 100644 => 100755 app/views/courses/_courses_jours.html.erb mode change 100644 => 100755 app/views/courses/_delete_member_group.html.erb mode change 100644 => 100755 app/views/courses/_edit.html.erb mode change 100644 => 100755 app/views/courses/_groups_name.html.erb mode change 100644 => 100755 app/views/courses/_hero_table.html.erb mode change 100644 => 100755 app/views/courses/_history.html.erb mode change 100644 => 100755 app/views/courses/_homework_form.html.erb mode change 100644 => 100755 app/views/courses/_join_or_add.html.erb mode change 100644 => 100755 app/views/courses/_join_private_course.html.erb mode change 100644 => 100755 app/views/courses/_member.html.erb mode change 100644 => 100755 app/views/courses/_member_all_student_list.html.erb mode change 100644 => 100755 app/views/courses/_member_group_student_list.html.erb mode change 100644 => 100755 app/views/courses/_member_no_group_student_list.html.erb mode change 100644 => 100755 app/views/courses/_member_teacher_list.html.erb mode change 100644 => 100755 app/views/courses/_new_groups_name.html.erb mode change 100644 => 100755 app/views/courses/_new_member_list.html.erb mode change 100644 => 100755 app/views/courses/_project_table.html.erb mode change 100644 => 100755 app/views/courses/_recommendation.html.erb mode change 100644 => 100755 app/views/courses/_rename_homework_category.html.erb mode change 100644 => 100755 app/views/courses/_search_member_list.html.erb mode change 100644 => 100755 app/views/courses/_searchmembers.html.erb mode change 100644 => 100755 app/views/courses/_set_course_time.html.erb mode change 100644 => 100755 app/views/courses/_set_join.js.erb mode change 100644 => 100755 app/views/courses/_show_compare_code.html.erb mode change 100644 => 100755 app/views/courses/_show_member_act_score.html.erb mode change 100644 => 100755 app/views/courses/_show_member_score.html.erb mode change 100644 => 100755 app/views/courses/_term_select.html.erb mode change 100644 => 100755 app/views/courses/_tool_expand.html.erb mode change 100644 => 100755 app/views/courses/_user_homework_search_list.html.erb mode change 100644 => 100755 app/views/courses/addgroups.js.erb mode change 100644 => 100755 app/views/courses/archive_course.js.erb mode change 100644 => 100755 app/views/courses/change_manager.js.erb mode change 100644 => 100755 app/views/courses/choose_course_group.js.erb mode change 100644 => 100755 app/views/courses/choose_graduation_group.js.erb mode change 100644 => 100755 app/views/courses/code_repeat.html.erb mode change 100644 => 100755 app/views/courses/course_outline.js.erb mode change 100644 => 100755 app/views/courses/course_statistics.html.erb mode change 100644 => 100755 app/views/courses/course_statistics.js.erb mode change 100644 => 100755 app/views/courses/create_homework_category.js.erb mode change 100644 => 100755 app/views/courses/delete_course_students.js.erb mode change 100644 => 100755 app/views/courses/delete_member.js.erb mode change 100644 => 100755 app/views/courses/destroy.js.erb mode change 100644 => 100755 app/views/courses/feedback.html.erb mode change 100644 => 100755 app/views/courses/file.html.erb mode change 100644 => 100755 app/views/courses/finishcourse.js.erb mode change 100644 => 100755 app/views/courses/group_member.html.erb mode change 100644 => 100755 app/views/courses/has_group_student_list.html.erb mode change 100644 => 100755 app/views/courses/has_group_student_list.js.erb mode change 100644 => 100755 app/views/courses/homework_search.js.erb mode change 100644 => 100755 app/views/courses/import_course_group.js.erb mode change 100644 => 100755 app/views/courses/import_excel.js.erb mode change 100644 => 100755 app/views/courses/index.html.erb mode change 100644 => 100755 app/views/courses/index.js.erb mode change 100644 => 100755 app/views/courses/join.js.erb mode change 100644 => 100755 app/views/courses/join_course_multi_role.js.erb mode change 100644 => 100755 app/views/courses/join_group.js.erb mode change 100644 => 100755 app/views/courses/join_private_courses.js.erb mode change 100644 => 100755 app/views/courses/member.html.erb mode change 100644 => 100755 app/views/courses/member.js.erb mode change 100644 => 100755 app/views/courses/member_score_sort.js.erb mode change 100644 => 100755 app/views/courses/new.html.erb mode change 100644 => 100755 app/views/courses/new_join.js.erb mode change 100644 => 100755 app/views/courses/no_group_student_list.html.erb mode change 100644 => 100755 app/views/courses/no_group_student_list.js.erb mode change 100644 => 100755 app/views/courses/none_register_students.html.erb mode change 100644 => 100755 app/views/courses/open_or_close_os_interface.js.erb mode change 100644 => 100755 app/views/courses/private_or_public.js.erb mode change 100644 => 100755 app/views/courses/rename_homework_category.js.erb mode change 100644 => 100755 app/views/courses/search.html.erb mode change 100644 => 100755 app/views/courses/search_course_teacher_list.js.erb mode change 100644 => 100755 app/views/courses/search_member.js.erb mode change 100644 => 100755 app/views/courses/search_not_group_member.js.erb mode change 100644 => 100755 app/views/courses/search_not_students.js.erb mode change 100644 => 100755 app/views/courses/search_not_teachers.js.erb mode change 100644 => 100755 app/views/courses/search_public_orgs_not_in_course.js.erb mode change 100644 => 100755 app/views/courses/searchgroupmembers.js.erb mode change 100644 => 100755 app/views/courses/searchmembers.js.erb mode change 100644 => 100755 app/views/courses/set_course_outline.js.erb mode change 100644 => 100755 app/views/courses/set_invite_code_halt.js.erb mode change 100644 => 100755 app/views/courses/settings.html.erb mode change 100644 => 100755 app/views/courses/settings/_add_students.html.erb mode change 100644 => 100755 app/views/courses/settings/_add_teachers.html.erb mode change 100644 => 100755 app/views/courses/settings/_added_orgs.html.erb mode change 100644 => 100755 app/views/courses/settings/_all_student_list.html.erb mode change 100644 => 100755 app/views/courses/settings/_all_student_list_block.html.erb mode change 100644 => 100755 app/views/courses/settings/_all_teacher_list_ul.erb mode change 100644 => 100755 app/views/courses/settings/_boards_list.html.erb mode change 100644 => 100755 app/views/courses/settings/_boards_setting.html.erb mode change 100644 => 100755 app/views/courses/settings/_change_manager.html.erb mode change 100644 => 100755 app/views/courses/settings/_choose_course_group.html.erb mode change 100644 => 100755 app/views/courses/settings/_course_member.html.erb mode change 100644 => 100755 app/views/courses/settings/_edit.html.erb mode change 100644 => 100755 app/views/courses/settings/_has_group_student_list.html.erb mode change 100644 => 100755 app/views/courses/settings/_has_group_student_list_block.html.erb mode change 100644 => 100755 app/views/courses/settings/_import_info.html.erb mode change 100644 => 100755 app/views/courses/settings/_import_students.html.erb mode change 100644 => 100755 app/views/courses/settings/_import_students_result.html.erb mode change 100644 => 100755 app/views/courses/settings/_join_org.html.erb mode change 100644 => 100755 app/views/courses/settings/_member.html.erb mode change 100644 => 100755 app/views/courses/settings/_members.html.erb mode change 100644 => 100755 app/views/courses/settings/_members_addTeam.html.erb mode change 100644 => 100755 app/views/courses/settings/_moduels.html.erb mode change 100644 => 100755 app/views/courses/settings/_no_group_student_list.html.erb mode change 100644 => 100755 app/views/courses/settings/_no_group_student_list_block.html.erb mode change 100644 => 100755 app/views/courses/settings/_search_not_students_list.html.erb mode change 100644 => 100755 app/views/courses/settings/_search_not_teachers_list.html.erb mode change 100644 => 100755 app/views/courses/settings/_search_teacher_list.html.erb mode change 100644 => 100755 app/views/courses/settings/_student_table.html.erb mode change 100644 => 100755 app/views/courses/show.html.erb mode change 100644 => 100755 app/views/courses/show.js.erb mode change 100644 => 100755 app/views/courses/show_comparecode.html.erb mode change 100644 => 100755 app/views/courses/show_comparecode.js.erb mode change 100644 => 100755 app/views/courses/show_member_act_score.js.erb mode change 100644 => 100755 app/views/courses/show_member_score.js.erb mode change 100644 => 100755 app/views/courses/show_old.html.erb mode change 100644 => 100755 app/views/courses/statistics_course.html.erb mode change 100644 => 100755 app/views/courses/students.html.erb mode change 100644 => 100755 app/views/courses/students.js.erb mode change 100644 => 100755 app/views/courses/syllabus.html.erb mode change 100644 => 100755 app/views/courses/sync_students.js.erb mode change 100644 => 100755 app/views/courses/teacher_assign_group.js.erb mode change 100644 => 100755 app/views/courses/teacher_graduation_group.js.erb mode change 100644 => 100755 app/views/courses/teachers.html.erb mode change 100644 => 100755 app/views/courses/teachers.js.erb mode change 100644 => 100755 app/views/courses/unjoin_group.js.erb mode change 100644 => 100755 app/views/courses/update.js.erb mode change 100644 => 100755 app/views/courses/update_course_module.js.erb mode change 100644 => 100755 app/views/courses/updategroupname.js.erb mode change 100644 => 100755 app/views/custom_fields/_form.html.erb mode change 100644 => 100755 app/views/custom_fields/_index.html.erb mode change 100644 => 100755 app/views/custom_fields/edit.html.erb mode change 100644 => 100755 app/views/custom_fields/index.html.erb mode change 100644 => 100755 app/views/custom_fields/new.html.erb mode change 100644 => 100755 app/views/custom_fields/new.js.erb mode change 100644 => 100755 app/views/department/destroy.js.erb mode change 100644 => 100755 app/views/discusses/_dis_praise.html.erb mode change 100644 => 100755 app/views/discusses/destroy.js.erb mode change 100644 => 100755 app/views/discusses/hidden_record.js.erb mode change 100644 => 100755 app/views/documents/_document.html.erb mode change 100644 => 100755 app/views/documents/_form.html.erb mode change 100644 => 100755 app/views/documents/edit.html.erb mode change 100644 => 100755 app/views/documents/index.html.erb mode change 100644 => 100755 app/views/documents/new.html.erb mode change 100644 => 100755 app/views/documents/show.html.erb mode change 100644 => 100755 app/views/ec_course_evaluations/_form.html.erb mode change 100644 => 100755 app/views/ec_course_evaluations/edit.html.erb mode change 100644 => 100755 app/views/ec_course_evaluations/index.html.erb mode change 100644 => 100755 app/views/ec_course_evaluations/new.html.erb mode change 100644 => 100755 app/views/ec_course_evaluations/show.html.erb mode change 100644 => 100755 app/views/ec_course_supports/_form.html.erb mode change 100644 => 100755 app/views/ec_course_supports/edit.html.erb mode change 100644 => 100755 app/views/ec_course_supports/index.html.erb mode change 100644 => 100755 app/views/ec_course_supports/new.html.erb mode change 100644 => 100755 app/views/ec_course_supports/show.html.erb mode change 100644 => 100755 app/views/ec_course_targets/_form.html.erb mode change 100644 => 100755 app/views/ec_course_targets/destroy.js.erb mode change 100644 => 100755 app/views/ec_course_targets/edit.html.erb mode change 100644 => 100755 app/views/ec_course_targets/index.html.erb mode change 100644 => 100755 app/views/ec_course_targets/new.html.erb mode change 100644 => 100755 app/views/ec_course_targets/show.html.erb mode change 100644 => 100755 app/views/ec_courses/_correlation_course.html.erb mode change 100644 => 100755 app/views/ec_courses/_ec_course_targets_list.html.erb mode change 100644 => 100755 app/views/ec_courses/_search_course_list.html.erb mode change 100644 => 100755 app/views/ec_courses/add_manager.js.erb mode change 100644 => 100755 app/views/ec_courses/competition_calculation_info.html.erb mode change 100644 => 100755 app/views/ec_courses/correlation_course.js.erb mode change 100644 => 100755 app/views/ec_courses/create.js.erb mode change 100644 => 100755 app/views/ec_courses/delete_course.js.erb mode change 100644 => 100755 app/views/ec_courses/delete_manager.js.erb mode change 100644 => 100755 app/views/ec_courses/destroy.js.erb mode change 100644 => 100755 app/views/ec_courses/ec_course_reach_setting.html.erb mode change 100644 => 100755 app/views/ec_courses/ec_course_support_setting.html.erb mode change 100644 => 100755 app/views/ec_courses/search_courses.js.erb mode change 100644 => 100755 app/views/ec_courses/search_user.js.erb mode change 100644 => 100755 app/views/ec_graduation_requirements/_form.html.erb mode change 100644 => 100755 app/views/ec_graduation_requirements/_requirement_lists.html.erb mode change 100644 => 100755 app/views/ec_graduation_requirements/create.js.erb mode change 100644 => 100755 app/views/ec_graduation_requirements/destroy.js.erb mode change 100644 => 100755 app/views/ec_graduation_requirements/edit.html.erb mode change 100644 => 100755 app/views/ec_graduation_requirements/edit.js.erb mode change 100644 => 100755 app/views/ec_graduation_requirements/index.html.erb mode change 100644 => 100755 app/views/ec_graduation_requirements/new.html.erb mode change 100644 => 100755 app/views/ec_graduation_requirements/show.html.erb mode change 100644 => 100755 app/views/ec_graduation_requirements/update.js.erb mode change 100644 => 100755 app/views/ec_graduation_subitems/_form.html.erb mode change 100644 => 100755 app/views/ec_graduation_subitems/edit.html.erb mode change 100644 => 100755 app/views/ec_graduation_subitems/index.html.erb mode change 100644 => 100755 app/views/ec_graduation_subitems/new.html.erb mode change 100644 => 100755 app/views/ec_graduation_subitems/show.html.erb mode change 100644 => 100755 app/views/ec_major_schools/_year_list.html.erb mode change 100644 => 100755 app/views/ec_major_schools/add_manager.js.erb mode change 100644 => 100755 app/views/ec_major_schools/delete_manager.js.erb mode change 100644 => 100755 app/views/ec_major_schools/destroy.js.erb mode change 100644 => 100755 app/views/ec_major_schools/search_user.js.erb mode change 100644 => 100755 app/views/ec_major_schools/show.html.erb mode change 100644 => 100755 app/views/ec_major_schools/show.js.erb mode change 100644 => 100755 app/views/ec_majors/_form.html.erb mode change 100644 => 100755 app/views/ec_majors/_major_addAcademicYear.html.erb mode change 100644 => 100755 app/views/ec_majors/edit.html.erb mode change 100644 => 100755 app/views/ec_majors/index.html.erb mode change 100644 => 100755 app/views/ec_majors/new.html.erb mode change 100644 => 100755 app/views/ec_majors/show.html.erb mode change 100644 => 100755 app/views/ec_training_objectives/_form.html.erb mode change 100644 => 100755 app/views/ec_training_objectives/edit.html.erb mode change 100644 => 100755 app/views/ec_training_objectives/index.html.erb mode change 100644 => 100755 app/views/ec_training_objectives/new.html.erb mode change 100644 => 100755 app/views/ec_training_objectives/show.html.erb mode change 100644 => 100755 app/views/ec_training_subitems/_form.html.erb mode change 100644 => 100755 app/views/ec_training_subitems/create.js.erb mode change 100644 => 100755 app/views/ec_training_subitems/destroy.js.erb mode change 100644 => 100755 app/views/ec_training_subitems/edit.html.erb mode change 100644 => 100755 app/views/ec_training_subitems/index.html.erb mode change 100644 => 100755 app/views/ec_training_subitems/new.html.erb mode change 100644 => 100755 app/views/ec_training_subitems/show.html.erb mode change 100644 => 100755 app/views/ec_training_subitems/update.js.erb mode change 100644 => 100755 app/views/ec_years/_courseSystem_addManage.html.erb mode change 100644 => 100755 app/views/ec_years/_course_addManage.html.erb mode change 100644 => 100755 app/views/ec_years/_course_lists.html.erb mode change 100644 => 100755 app/views/ec_years/_course_manager.html.erb mode change 100644 => 100755 app/views/ec_years/_edit_training_objectives.html.erb mode change 100644 => 100755 app/views/ec_years/_sub_training_objectives.html.erb mode change 100644 => 100755 app/views/ec_years/_training_objective_contents.html.erb mode change 100644 => 100755 app/views/ec_years/completion_calculation.html.erb mode change 100644 => 100755 app/views/ec_years/create.js.erb mode change 100644 => 100755 app/views/ec_years/create_training_objectives.js.erb mode change 100644 => 100755 app/views/ec_years/ec_course_setting.html.erb mode change 100644 => 100755 app/views/ec_years/edit_training_objectives.js.erb mode change 100644 => 100755 app/views/ec_years/graduation_requirement.html.erb mode change 100644 => 100755 app/views/ec_years/import_ec_courses.js.erb mode change 100644 => 100755 app/views/ec_years/requirement_vs_courses.html.erb mode change 100644 => 100755 app/views/ec_years/requirement_vs_objective.html.erb mode change 100644 => 100755 app/views/ec_years/requirement_vs_standard.html.erb mode change 100644 => 100755 app/views/ec_years/training_objectives.html.erb mode change 100644 => 100755 app/views/ecs/_authList_addUnit.html.erb mode change 100644 => 100755 app/views/ecs/_auth_newMajor.html.erb mode change 100644 => 100755 app/views/ecs/_department_list.html.erb mode change 100644 => 100755 app/views/ecs/_ec_no_data.html.erb mode change 100644 => 100755 app/views/ecs/_ec_top_navigation.html.erb mode change 100644 => 100755 app/views/ecs/_major_lists.html.erb mode change 100644 => 100755 app/views/ecs/_school_manager.html.erb mode change 100644 => 100755 app/views/ecs/_search_user_list.html.erb mode change 100644 => 100755 app/views/ecs/department.html.erb mode change 100644 => 100755 app/views/ecs/department.js.erb mode change 100644 => 100755 app/views/ecs/search_major.js.erb mode change 100644 => 100755 app/views/enumerations/_form.html.erb mode change 100644 => 100755 app/views/enumerations/destroy.html.erb mode change 100644 => 100755 app/views/enumerations/edit.html.erb mode change 100644 => 100755 app/views/enumerations/index.api.rsb mode change 100644 => 100755 app/views/enumerations/index.html.erb mode change 100644 => 100755 app/views/enumerations/new.html.erb mode change 100644 => 100755 app/views/exercise/_alert.html.erb mode change 100644 => 100755 app/views/exercise/_all_import_exercises.html.erb mode change 100644 => 100755 app/views/exercise/_answer_comment.html.erb mode change 100644 => 100755 app/views/exercise/_choose_shixuns.html.erb mode change 100644 => 100755 app/views/exercise/_comment_detail_block.html.erb mode change 100644 => 100755 app/views/exercise/_commit_alert.html.erb mode change 100644 => 100755 app/views/exercise/_edit_MC.html.erb mode change 100644 => 100755 app/views/exercise/_edit_MCQ.html.erb mode change 100644 => 100755 app/views/exercise/_edit_head.html.erb mode change 100644 => 100755 app/views/exercise/_edit_multi.html.erb mode change 100644 => 100755 app/views/exercise/_edit_shixun.html.erb mode change 100644 => 100755 app/views/exercise/_edit_single.html.erb mode change 100644 => 100755 app/views/exercise/_edu_edit_form.html.erb mode change 100644 => 100755 app/views/exercise/_end_notice.html.erb mode change 100644 => 100755 app/views/exercise/_exercise.html.erb mode change 100644 => 100755 app/views/exercise/_exercise_content.html.erb mode change 100644 => 100755 app/views/exercise/_exercise_course_list.html.erb mode change 100644 => 100755 app/views/exercise/_exercise_form.html.erb mode change 100644 => 100755 app/views/exercise/_exercise_index_tab.html.erb mode change 100644 => 100755 app/views/exercise/_exercise_redo.html.erb mode change 100644 => 100755 app/views/exercise/_exercise_republish.html.erb mode change 100644 => 100755 app/views/exercise/_exercise_setting.html.erb mode change 100644 => 100755 app/views/exercise/_exercise_statistics_result.html.erb mode change 100644 => 100755 app/views/exercise/_exercise_student.html.erb mode change 100644 => 100755 app/views/exercise/_exercise_student_result.html.erb mode change 100644 => 100755 app/views/exercise/_exercise_submit.html.erb mode change 100644 => 100755 app/views/exercise/_exercise_submit_info.html.erb mode change 100644 => 100755 app/views/exercise/_exercise_teacher.html.erb mode change 100644 => 100755 app/views/exercise/_exercises_list.html.erb mode change 100644 => 100755 app/views/exercise/_new_MC.html.erb mode change 100644 => 100755 app/views/exercise/_new_MCQ.html.erb mode change 100644 => 100755 app/views/exercise/_new_head.html.erb mode change 100644 => 100755 app/views/exercise/_new_multi.html.erb mode change 100644 => 100755 app/views/exercise/_new_question.html.erb mode change 100644 => 100755 app/views/exercise/_new_shixun.html.erb mode change 100644 => 100755 app/views/exercise/_new_shixun_exercise_list.html.erb mode change 100644 => 100755 app/views/exercise/_new_single.html.erb mode change 100644 => 100755 app/views/exercise/_other_exercises.html.erb mode change 100644 => 100755 app/views/exercise/_publish_notice.html.erb mode change 100644 => 100755 app/views/exercise/_search_user_list.html.erb mode change 100644 => 100755 app/views/exercise/_select_examination_list.html.erb mode change 100644 => 100755 app/views/exercise/_send_to_course.html.erb mode change 100644 => 100755 app/views/exercise/_show_MC.html.erb mode change 100644 => 100755 app/views/exercise/_show_MCQ.html.erb mode change 100644 => 100755 app/views/exercise/_show_head.html.erb mode change 100644 => 100755 app/views/exercise/_show_multi.html.erb mode change 100644 => 100755 app/views/exercise/_show_shixun.html.erb mode change 100644 => 100755 app/views/exercise/_show_single.html.erb mode change 100644 => 100755 app/views/exercise/_statistics_result_table.html.erb mode change 100644 => 100755 app/views/exercise/_student_exercise.html.erb mode change 100644 => 100755 app/views/exercise/_student_exercise_archive.html.erb mode change 100644 => 100755 app/views/exercise/_student_table.html.erb mode change 100644 => 100755 app/views/exercise/_student_table_archive.html.erb mode change 100644 => 100755 app/views/exercise/_total_questions_score.html.erb mode change 100644 => 100755 app/views/exercise/add_to_exercise_bank.js.erb mode change 100644 => 100755 app/views/exercise/adjust_question_score.js.erb mode change 100644 => 100755 app/views/exercise/blank_exercise.html.erb mode change 100644 => 100755 app/views/exercise/cancel_commit_confirm.js.erb mode change 100644 => 100755 app/views/exercise/choose_shixuns.js.erb mode change 100644 => 100755 app/views/exercise/choose_student.js.erb mode change 100644 => 100755 app/views/exercise/commit_exercise.js.erb mode change 100644 => 100755 app/views/exercise/create.js.erb mode change 100644 => 100755 app/views/exercise/create_exercise_question.js.erb mode change 100644 => 100755 app/views/exercise/delete_choose_shixun.js.erb mode change 100644 => 100755 app/views/exercise/delete_exercise_question.js.erb mode change 100644 => 100755 app/views/exercise/delete_shixun_question.js.erb mode change 100644 => 100755 app/views/exercise/edit.html.erb mode change 100644 => 100755 app/views/exercise/edit_question_score.js.erb mode change 100644 => 100755 app/views/exercise/end_notice.js.erb mode change 100644 => 100755 app/views/exercise/examination_setting.html mode change 100644 => 100755 app/views/exercise/import_other_exercise.js.erb mode change 100644 => 100755 app/views/exercise/index.html.erb mode change 100644 => 100755 app/views/exercise/index.js.erb mode change 100644 => 100755 app/views/exercise/new.html.erb mode change 100644 => 100755 app/views/exercise/other_exercise.js.erb mode change 100644 => 100755 app/views/exercise/publish_exercise.js.erb mode change 100644 => 100755 app/views/exercise/publish_notice.js.erb mode change 100644 => 100755 app/views/exercise/republish_exercise.js.erb mode change 100644 => 100755 app/views/exercise/search_courses.js.erb mode change 100644 => 100755 app/views/exercise/search_exercises.js.erb mode change 100644 => 100755 app/views/exercise/send_to_course.js.erb mode change 100644 => 100755 app/views/exercise/set_public.js.erb mode change 100644 => 100755 app/views/exercise/setting.html.erb mode change 100644 => 100755 app/views/exercise/shixun_question.js.erb mode change 100644 => 100755 app/views/exercise/show.html.erb mode change 100644 => 100755 app/views/exercise/show_student_result.html.erb mode change 100644 => 100755 app/views/exercise/statistics_result.js.erb mode change 100644 => 100755 app/views/exercise/student_exercise_list.html.erb mode change 100644 => 100755 app/views/exercise/student_exercise_list.js.erb mode change 100644 => 100755 app/views/exercise/student_look_fortime.html mode change 100644 => 100755 app/views/exercise/student_write_answer.html mode change 100644 => 100755 app/views/exercise/teacher_check_exam.html mode change 100644 => 100755 app/views/exercise/teacher_edit_exam.html mode change 100644 => 100755 app/views/exercise/teacher_examination_list.html mode change 100644 => 100755 app/views/exercise/teacher_score_list.html mode change 100644 => 100755 app/views/exercise/teacher_send_examination.html mode change 100644 => 100755 app/views/exercise/update.js.erb mode change 100644 => 100755 app/views/exercise/update_exercise_question.js.erb mode change 100644 => 100755 app/views/exercise/update_question_num.js.erb mode change 100644 => 100755 app/views/exercise_bank/_choose_shixuns.html.erb mode change 100644 => 100755 app/views/exercise_bank/_edit_MC.html.erb mode change 100644 => 100755 app/views/exercise_bank/_edit_MCQ.html.erb mode change 100644 => 100755 app/views/exercise_bank/_edit_head.html.erb mode change 100644 => 100755 app/views/exercise_bank/_edit_multi.html.erb mode change 100644 => 100755 app/views/exercise_bank/_edit_poll_MC.html.erb mode change 100644 => 100755 app/views/exercise_bank/_edit_poll_MCQ.html.erb mode change 100644 => 100755 app/views/exercise_bank/_edit_poll_single.html.erb mode change 100644 => 100755 app/views/exercise_bank/_edit_shixun.html.erb mode change 100644 => 100755 app/views/exercise_bank/_edit_single.html.erb mode change 100644 => 100755 app/views/exercise_bank/_exercise_content.html.erb mode change 100644 => 100755 app/views/exercise_bank/_exercise_edit_form.html.erb mode change 100644 => 100755 app/views/exercise_bank/_new_MC.html.erb mode change 100644 => 100755 app/views/exercise_bank/_new_MCQ.html.erb mode change 100644 => 100755 app/views/exercise_bank/_new_head.html.erb mode change 100644 => 100755 app/views/exercise_bank/_new_multi.html.erb mode change 100644 => 100755 app/views/exercise_bank/_new_poll_MC.html.erb mode change 100644 => 100755 app/views/exercise_bank/_new_poll_MCQ.html.erb mode change 100644 => 100755 app/views/exercise_bank/_new_poll_question.html.erb mode change 100644 => 100755 app/views/exercise_bank/_new_poll_single.html.erb mode change 100644 => 100755 app/views/exercise_bank/_new_question.html.erb mode change 100644 => 100755 app/views/exercise_bank/_new_shixun.html.erb mode change 100644 => 100755 app/views/exercise_bank/_new_shixun_exercise_list.html.erb mode change 100644 => 100755 app/views/exercise_bank/_new_single.html.erb mode change 100644 => 100755 app/views/exercise_bank/_poll_content.html.erb mode change 100644 => 100755 app/views/exercise_bank/_poll_edit_form.html.erb mode change 100644 => 100755 app/views/exercise_bank/_show_MC.html.erb mode change 100644 => 100755 app/views/exercise_bank/_show_MCQ.html.erb mode change 100644 => 100755 app/views/exercise_bank/_show_head.html.erb mode change 100644 => 100755 app/views/exercise_bank/_show_multi.html.erb mode change 100644 => 100755 app/views/exercise_bank/_show_poll_MC.html.erb mode change 100644 => 100755 app/views/exercise_bank/_show_poll_MCQ.html.erb mode change 100644 => 100755 app/views/exercise_bank/_show_poll_single.html.erb mode change 100644 => 100755 app/views/exercise_bank/_show_shixun.html.erb mode change 100644 => 100755 app/views/exercise_bank/_show_single.html.erb mode change 100644 => 100755 app/views/exercise_bank/_total_questions_score.html.erb mode change 100644 => 100755 app/views/exercise_bank/choose_shixuns.js.erb mode change 100644 => 100755 app/views/exercise_bank/create.js.erb mode change 100644 => 100755 app/views/exercise_bank/create_exercise_question.js.erb mode change 100644 => 100755 app/views/exercise_bank/delete_exercise_question.js.erb mode change 100644 => 100755 app/views/exercise_bank/edit.html.erb mode change 100644 => 100755 app/views/exercise_bank/new.html.erb mode change 100644 => 100755 app/views/exercise_bank/shixun_question.js.erb mode change 100644 => 100755 app/views/exercise_bank/show.html.erb mode change 100644 => 100755 app/views/exercise_bank/update.js.erb mode change 100644 => 100755 app/views/exercise_bank/update_exercise_question.js.erb mode change 100644 => 100755 app/views/exercise_bank/update_question_num.js.erb mode change 100644 => 100755 app/views/files/_arrow_show.erb mode change 100644 => 100755 app/views/files/_attachement_list.html.erb mode change 100644 => 100755 app/views/files/_attachment_history_popub.html.erb mode change 100644 => 100755 app/views/files/_attachment_history_popub_delete.html.erb mode change 100644 => 100755 app/views/files/_course_file.html.erb mode change 100644 => 100755 app/views/files/_course_file_dense_edit.html.erb mode change 100644 => 100755 app/views/files/_course_file_filter_order.html.erb mode change 100644 => 100755 app/views/files/_course_list.html.erb mode change 100644 => 100755 app/views/files/_course_new.html.erb mode change 100644 => 100755 app/views/files/_course_show_all_attachment.html.erb mode change 100644 => 100755 app/views/files/_course_sort_by_attachtypel.html.erb mode change 100644 => 100755 app/views/files/_course_tag_list.html.erb mode change 100644 => 100755 app/views/files/_file_description.html.erb mode change 100644 => 100755 app/views/files/_file_tag_detail.html.erb mode change 100644 => 100755 app/views/files/_file_tools.html.erb mode change 100644 => 100755 app/views/files/_hidden_file.html.erb mode change 100644 => 100755 app/views/files/_import_files.html.erb mode change 100644 => 100755 app/views/files/_new.html.erb mode change 100644 => 100755 app/views/files/_new_style_attachment_list.html.erb mode change 100644 => 100755 app/views/files/_org_order_filter.html.erb mode change 100644 => 100755 app/views/files/_org_subfield_list.html.erb mode change 100644 => 100755 app/views/files/_org_subfield_upload_attachment_list.html.erb mode change 100644 => 100755 app/views/files/_org_upload_attachment_list.html.erb mode change 100644 => 100755 app/views/files/_org_upload_attachment_list_banner.html.erb mode change 100644 => 100755 app/views/files/_project_file.html.erb mode change 100644 => 100755 app/views/files/_project_file_dense_edit.html.erb mode change 100644 => 100755 app/views/files/_project_file_list.html.erb mode change 100644 => 100755 app/views/files/_project_file_new.html.erb mode change 100644 => 100755 app/views/files/_project_list.html.erb mode change 100644 => 100755 app/views/files/_resource_detail.html.erb mode change 100644 => 100755 app/views/files/_show_all_attachment.html.erb mode change 100644 => 100755 app/views/files/_show_quote_resource.html.erb mode change 100644 => 100755 app/views/files/_show_quote_resource_org_subfield.html.erb mode change 100644 => 100755 app/views/files/_show_quote_resource_project.html.erb mode change 100644 => 100755 app/views/files/_sort_by_attachtypel.html.erb mode change 100644 => 100755 app/views/files/_subfield_files.html.erb mode change 100644 => 100755 app/views/files/_subfield_files_list.html.erb mode change 100644 => 100755 app/views/files/_subfield_tags.html.erb mode change 100644 => 100755 app/views/files/_tag_yun.html.erb mode change 100644 => 100755 app/views/files/_tag_yun_project.html.erb mode change 100644 => 100755 app/views/files/_tip_attachment_count.html.erb mode change 100644 => 100755 app/views/files/_tool_settings.html.erb mode change 100644 => 100755 app/views/files/_upload_course_files.erb mode change 100644 => 100755 app/views/files/_upload_org_new_files.html.erb mode change 100644 => 100755 app/views/files/_upload_org_new_files_banner.html.erb mode change 100644 => 100755 app/views/files/_upload_project_files.erb mode change 100644 => 100755 app/views/files/_upload_show.html.erb mode change 100644 => 100755 app/views/files/_upload_show_project.html.erb mode change 100644 => 100755 app/views/files/_upload_subfield_file.html.erb mode change 100644 => 100755 app/views/files/create.js.erb mode change 100644 => 100755 app/views/files/edit_file_description.js.erb mode change 100644 => 100755 app/views/files/getattachtype.html.erb mode change 100644 => 100755 app/views/files/getattachtype.js.erb mode change 100644 => 100755 app/views/files/index.html.erb mode change 100644 => 100755 app/views/files/index.js.erb mode change 100644 => 100755 app/views/files/new.html.erb mode change 100644 => 100755 app/views/files/quote_resource_show.js.erb mode change 100644 => 100755 app/views/files/quote_resource_show_org_subfield.js.erb mode change 100644 => 100755 app/views/files/quote_resource_show_project.js.erb mode change 100644 => 100755 app/views/files/republish_file.js.erb mode change 100644 => 100755 app/views/files/search.js.erb mode change 100644 => 100755 app/views/files/search_files_in_subfield.js.erb mode change 100644 => 100755 app/views/files/search_org_subfield_tag_attachment.js.erb mode change 100644 => 100755 app/views/files/search_project.js.erb mode change 100644 => 100755 app/views/files/search_tag_attachment.js.erb mode change 100644 => 100755 app/views/files/searchone4reload.html.erb mode change 100644 => 100755 app/views/files/setting.js.erb mode change 100644 => 100755 app/views/files/subfield_upload_file.js.erb mode change 100644 => 100755 app/views/files/update_file_description.js.erb mode change 100644 => 100755 app/views/files/upload_file_show.js.erb mode change 100644 => 100755 app/views/files/upload_files_menu.js.erb mode change 100644 => 100755 app/views/forums/_edit.html.erb mode change 100644 => 100755 app/views/forums/_emali_valid_tip.html.erb mode change 100644 => 100755 app/views/forums/_file_form.html.erb mode change 100644 => 100755 app/views/forums/_form.html.erb mode change 100644 => 100755 app/views/forums/_form_create_mode.html.erb mode change 100644 => 100755 app/views/forums/_form_edit_mode.html.erb mode change 100644 => 100755 app/views/forums/_forum_form.html.erb mode change 100644 => 100755 app/views/forums/_forum_index_list.html.erb mode change 100644 => 100755 app/views/forums/_forum_list.html.erb mode change 100644 => 100755 app/views/forums/_forum_tag_list.html.erb mode change 100644 => 100755 app/views/forums/_my_count_message.html.erb mode change 100644 => 100755 app/views/forums/_new.html.erb mode change 100644 => 100755 app/views/forums/_post_banner.html.erb mode change 100644 => 100755 app/views/forums/_right_bar.html.erb mode change 100644 => 100755 app/views/forums/_show_topics.html.erb mode change 100644 => 100755 app/views/forums/create.js.erb mode change 100644 => 100755 app/views/forums/create_feedback.js.erb mode change 100644 => 100755 app/views/forums/delete_forum_tag.js.erb mode change 100644 => 100755 app/views/forums/edit.html.erb mode change 100644 => 100755 app/views/forums/edit.js.erb mode change 100644 => 100755 app/views/forums/forum_form_add.html mode change 100644 => 100755 app/views/forums/forum_form_detail.html mode change 100644 => 100755 app/views/forums/forum_form_list.html mode change 100644 => 100755 app/views/forums/index.html.erb mode change 100644 => 100755 app/views/forums/index.js.erb mode change 100644 => 100755 app/views/forums/mail_feedback.js.erb mode change 100644 => 100755 app/views/forums/new.html.erb mode change 100644 => 100755 app/views/forums/new.js.erb mode change 100644 => 100755 app/views/forums/show.html.erb mode change 100644 => 100755 app/views/forums/show.js.erb mode change 100644 => 100755 app/views/forums/update.js.erb mode change 100644 => 100755 app/views/games/_acquire_answer.html.erb mode change 100644 => 100755 app/views/games/_choice_question.html.erb mode change 100644 => 100755 app/views/games/_code_actions.html.erb mode change 100644 => 100755 app/views/games/_code_outputs.html.erb mode change 100644 => 100755 app/views/games/_desc_full_show.html.erb mode change 100644 => 100755 app/views/games/_exec_results.html.erb mode change 100644 => 100755 app/views/games/_extend_edit_file_form.html.erb mode change 100644 => 100755 app/views/games/_extend_file_edit_form.html.erb mode change 100644 => 100755 app/views/games/_extend_test_output.html.erb mode change 100644 => 100755 app/views/games/_extend_tree.html.erb mode change 100644 => 100755 app/views/games/_file_edit_form.html.erb mode change 100644 => 100755 app/views/games/_game_answer_error_pop.html.erb mode change 100644 => 100755 app/views/games/_game_answer_tip_pop.html.erb mode change 100644 => 100755 app/views/games/_game_choose_results.html.erb mode change 100644 => 100755 app/views/games/_game_result_order.html.erb mode change 100644 => 100755 app/views/games/_game_results.html.erb mode change 100644 => 100755 app/views/games/_game_show.html.erb mode change 100644 => 100755 app/views/games/_game_webssh.html.erb mode change 100644 => 100755 app/views/games/_games_list.html.erb mode change 100644 => 100755 app/views/games/_leave_tip.html.erb mode change 100644 => 100755 app/views/games/_myshixun_breadcrumbs.html.erb mode change 100644 => 100755 app/views/games/_myshixun_extend_repository.html.erb mode change 100644 => 100755 app/views/games/_myshixun_repository.html.erb mode change 100644 => 100755 app/views/games/_pass_game_show.html.erb mode change 100644 => 100755 app/views/games/_picture_display.html.erb mode change 100644 => 100755 app/views/games/_repository.html.erb mode change 100644 => 100755 app/views/games/_reset_game_code.html.erb mode change 100644 => 100755 app/views/games/_send_error_pop.html.erb mode change 100644 => 100755 app/views/games/_send_success_pop.html.erb mode change 100644 => 100755 app/views/games/_shixun_comment_block.html.erb mode change 100644 => 100755 app/views/games/_shixun_comment_list.html.erb mode change 100644 => 100755 app/views/games/_tree.html.erb mode change 100644 => 100755 app/views/games/answer.js.erb mode change 100644 => 100755 app/views/games/check_test_sets.js.erb mode change 100644 => 100755 app/views/games/edit_file.html.erb mode change 100644 => 100755 app/views/games/entry.js.erb mode change 100644 => 100755 app/views/games/file_edit.js.erb mode change 100644 => 100755 app/views/games/get_repository_contents.js.erb mode change 100644 => 100755 app/views/games/index.html.erb mode change 100644 => 100755 app/views/games/index.js.erb mode change 100644 => 100755 app/views/games/minus_score.js.erb mode change 100644 => 100755 app/views/games/myshixun_repair.js.erb mode change 100644 => 100755 app/views/games/output_show.js.erb mode change 100644 => 100755 app/views/games/outputs_show.js.erb mode change 100644 => 100755 app/views/games/refresh_game_list.js.erb mode change 100644 => 100755 app/views/games/reset_new_code.js.erb mode change 100644 => 100755 app/views/games/reset_original_code.js.erb mode change 100644 => 100755 app/views/games/show.html.erb mode change 100644 => 100755 app/views/games/show.js.erb mode change 100644 => 100755 app/views/games/sync_codes.js.erb mode change 100644 => 100755 app/views/games/web_display.html.erb mode change 100644 => 100755 app/views/gantts/show.html.erb mode change 100644 => 100755 app/views/graduation_tasks/_form.html.erb mode change 100644 => 100755 app/views/graduation_tasks/_graduation_task_list.html.erb mode change 100644 => 100755 app/views/graduation_tasks/_graduation_task_setting.html.erb mode change 100644 => 100755 app/views/graduation_tasks/_student_work_list.html.erb mode change 100644 => 100755 app/views/graduation_tasks/_task_discuss.html.erb mode change 100644 => 100755 app/views/graduation_tasks/_task_discuss_replies.html.erb mode change 100644 => 100755 app/views/graduation_tasks/_task_index_search.html.erb mode change 100644 => 100755 app/views/graduation_tasks/_task_index_tab.html.erb mode change 100644 => 100755 app/views/graduation_tasks/_task_status.html.erb mode change 100644 => 100755 app/views/graduation_tasks/_task_tag.html.erb mode change 100644 => 100755 app/views/graduation_tasks/edit.html.erb mode change 100644 => 100755 app/views/graduation_tasks/index.html.erb mode change 100644 => 100755 app/views/graduation_tasks/index.js.erb mode change 100644 => 100755 app/views/graduation_tasks/new.html.erb mode change 100644 => 100755 app/views/graduation_tasks/show.html.erb mode change 100644 => 100755 app/views/graduation_tasks/show.js.erb mode change 100644 => 100755 app/views/graduation_tasks/task_discuss.js.erb mode change 100644 => 100755 app/views/graduation_topics/_form.html.erb mode change 100644 => 100755 app/views/graduation_topics/_graduation_task_new.html.erb mode change 100644 => 100755 app/views/graduation_topics/_graduation_topic_index_tab.html.erb mode change 100644 => 100755 app/views/graduation_topics/_graduation_topic_list.html.erb mode change 100644 => 100755 app/views/graduation_topics/_graduation_topic_status.html.erb mode change 100644 => 100755 app/views/graduation_topics/_student_topic_list.html.erb mode change 100644 => 100755 app/views/graduation_topics/_topic_journals.html.erb mode change 100644 => 100755 app/views/graduation_topics/accept_select.js.erb mode change 100644 => 100755 app/views/graduation_topics/edit.html.erb mode change 100644 => 100755 app/views/graduation_topics/index.html.erb mode change 100644 => 100755 app/views/graduation_topics/index.js.erb mode change 100644 => 100755 app/views/graduation_topics/new.html.erb mode change 100644 => 100755 app/views/graduation_topics/set_public.js.erb mode change 100644 => 100755 app/views/graduation_topics/show.html.erb mode change 100644 => 100755 app/views/graduation_topics/show.js.erb mode change 100644 => 100755 app/views/graduation_works/_add_score_div.html.erb mode change 100644 => 100755 app/views/graduation_works/_assign_teacher.html.erb mode change 100644 => 100755 app/views/graduation_works/_connect_project.html.erb mode change 100644 => 100755 app/views/graduation_works/_form.html.erb mode change 100644 => 100755 app/views/graduation_works/_group_member_search_list.html.erb mode change 100644 => 100755 app/views/graduation_works/_search_project_list.html.erb mode change 100644 => 100755 app/views/graduation_works/_upload_file.html.erb mode change 100644 => 100755 app/views/graduation_works/_work_score_comments.html.erb mode change 100644 => 100755 app/views/graduation_works/add_score.js.erb mode change 100644 => 100755 app/views/graduation_works/adjust_score.js.erb mode change 100644 => 100755 app/views/graduation_works/assign_teacher.js.erb mode change 100644 => 100755 app/views/graduation_works/edit.html.erb mode change 100644 => 100755 app/views/graduation_works/new.html.erb mode change 100644 => 100755 app/views/graduation_works/search_course_students.js.erb mode change 100644 => 100755 app/views/graduation_works/search_user_projects.js.erb mode change 100644 => 100755 app/views/graduation_works/show.html.erb mode change 100644 => 100755 app/views/groups/_form.html.erb mode change 100644 => 100755 app/views/groups/_general.html.erb mode change 100644 => 100755 app/views/groups/_memberships.html.erb mode change 100644 => 100755 app/views/groups/_users.html.erb mode change 100644 => 100755 app/views/groups/add_users.js.erb mode change 100644 => 100755 app/views/groups/autocomplete_for_user.js.erb mode change 100644 => 100755 app/views/groups/destroy_membership.js.erb mode change 100644 => 100755 app/views/groups/edit.html.erb mode change 100644 => 100755 app/views/groups/edit_membership.js.erb mode change 100644 => 100755 app/views/groups/index.api.rsb mode change 100644 => 100755 app/views/groups/index.html.erb mode change 100644 => 100755 app/views/groups/new.html.erb mode change 100644 => 100755 app/views/groups/remove_user.js.erb mode change 100644 => 100755 app/views/groups/show.api.rsb mode change 100644 => 100755 app/views/groups/show.html.erb mode change 100644 => 100755 app/views/homepages/_article_list.html.erb mode change 100644 => 100755 app/views/homepages/_articles.html.erb mode change 100644 => 100755 app/views/homepages/index.html.erb mode change 100644 => 100755 app/views/homepages/index.js.erb mode change 100644 => 100755 app/views/homework_attach/_add_jour_reply.html.erb mode change 100644 => 100755 app/views/homework_attach/_addjour.html.erb mode change 100644 => 100755 app/views/homework_attach/_app_link.html.erb mode change 100644 => 100755 app/views/homework_attach/_comprehensive_evaluation.html.erb mode change 100644 => 100755 app/views/homework_attach/_evaluation.html.erb mode change 100644 => 100755 app/views/homework_attach/_evaluation_add_jour.html.erb mode change 100644 => 100755 app/views/homework_attach/_histoey_new.html.erb mode change 100644 => 100755 app/views/homework_attach/_history.erb mode change 100644 => 100755 app/views/homework_attach/_homework.html.erb mode change 100644 => 100755 app/views/homework_attach/_homework_jours.html.erb mode change 100644 => 100755 app/views/homework_attach/_homework_member.html.erb mode change 100644 => 100755 app/views/homework_attach/_homework_praise.html.erb mode change 100644 => 100755 app/views/homework_attach/_homeworks_list.html.erb mode change 100644 => 100755 app/views/homework_attach/_jour.html.erb mode change 100644 => 100755 app/views/homework_attach/_jour_reply.html.erb mode change 100644 => 100755 app/views/homework_attach/_journal_reply_items.html.erb mode change 100644 => 100755 app/views/homework_attach/_member_list_partial.html.erb mode change 100644 => 100755 app/views/homework_attach/_new_homework.html.erb mode change 100644 => 100755 app/views/homework_attach/_praise_alert.html.erb mode change 100644 => 100755 app/views/homework_attach/_pre_show.html.erb mode change 100644 => 100755 app/views/homework_attach/_review.html.erb mode change 100644 => 100755 app/views/homework_attach/_show.html.erb mode change 100644 => 100755 app/views/homework_attach/_show_score.html.erb mode change 100644 => 100755 app/views/homework_attach/_show_star.html.erb mode change 100644 => 100755 app/views/homework_attach/_show_static_star.html.erb mode change 100644 => 100755 app/views/homework_attach/_showjour.html.erb mode change 100644 => 100755 app/views/homework_attach/_teacher_evaluation.html.erb mode change 100644 => 100755 app/views/homework_attach/add_homework_users.js.erb mode change 100644 => 100755 app/views/homework_attach/add_jour_reply.js.erb mode change 100644 => 100755 app/views/homework_attach/addjours.js.erb mode change 100644 => 100755 app/views/homework_attach/destory_homework_users.js.erb mode change 100644 => 100755 app/views/homework_attach/destroy.js.erb mode change 100644 => 100755 app/views/homework_attach/destroy_jour.js.erb mode change 100644 => 100755 app/views/homework_attach/edit.html.erb mode change 100644 => 100755 app/views/homework_attach/get_batch_homeworks.js.erb mode change 100644 => 100755 app/views/homework_attach/get_homework_jours.js.erb mode change 100644 => 100755 app/views/homework_attach/get_homework_member_list.js.erb mode change 100644 => 100755 app/views/homework_attach/get_homeworks.js.erb mode change 100644 => 100755 app/views/homework_attach/get_my_homework.js.erb mode change 100644 => 100755 app/views/homework_attach/get_not_batch_homework.js.erb mode change 100644 => 100755 app/views/homework_attach/get_student_batch_homework.js.erb mode change 100644 => 100755 app/views/homework_attach/new.html.erb mode change 100644 => 100755 app/views/homework_attach/praise_homework.js.erb mode change 100644 => 100755 app/views/homework_attach/show.html.erb mode change 100644 => 100755 app/views/homework_attach/show.js.erb mode change 100644 => 100755 app/views/homework_bank/_homework_bank_list.html.erb mode change 100644 => 100755 app/views/homework_bank/_hw_search_course_list.html.erb mode change 100644 => 100755 app/views/homework_bank/_new_common_homework.html.erb mode change 100644 => 100755 app/views/homework_bank/_new_group_homework.html.erb mode change 100644 => 100755 app/views/homework_bank/_new_program_homework.html.erb mode change 100644 => 100755 app/views/homework_bank/_new_shixun_homework_list.html.erb mode change 100644 => 100755 app/views/homework_bank/_send_homework_bank.html.erb mode change 100644 => 100755 app/views/homework_bank/_shixuns.html.erb mode change 100644 => 100755 app/views/homework_bank/choose_user_course.js.erb mode change 100644 => 100755 app/views/homework_bank/edit.html.erb mode change 100644 => 100755 app/views/homework_bank/index.html.erb mode change 100644 => 100755 app/views/homework_bank/index.js.erb mode change 100644 => 100755 app/views/homework_bank/new.html.erb mode change 100644 => 100755 app/views/homework_bank/send_h_bank_to_course.js.erb mode change 100644 => 100755 app/views/homework_bank/set_public.js.erb mode change 100644 => 100755 app/views/homework_bank/shixuns.js.erb mode change 100644 => 100755 app/views/homework_bank/show.html.erb mode change 100644 => 100755 app/views/homework_common/_alert_anonyoms.html.erb mode change 100644 => 100755 app/views/homework_common/_alert_open_student_works.html.erb mode change 100644 => 100755 app/views/homework_common/_alert_score_open_modal.html.erb mode change 100644 => 100755 app/views/homework_common/_create_shixun_homework.html.erb mode change 100644 => 100755 app/views/homework_common/_edit_anon_setting.html.erb mode change 100644 => 100755 app/views/homework_common/_edit_late_setting.html.erb mode change 100644 => 100755 app/views/homework_common/_edit_public_setting.html.erb mode change 100644 => 100755 app/views/homework_common/_edit_publish_setting.html.erb mode change 100644 => 100755 app/views/homework_common/_edit_score_setting.html.erb mode change 100644 => 100755 app/views/homework_common/_end_notice.html.erb mode change 100644 => 100755 app/views/homework_common/_group_list.html.erb mode change 100644 => 100755 app/views/homework_common/_homework_index_list.html.erb mode change 100644 => 100755 app/views/homework_common/_homework_index_tab.html.erb mode change 100644 => 100755 app/views/homework_common/_homework_search_form.html.erb mode change 100644 => 100755 app/views/homework_common/_new_common_homework.html.erb mode change 100644 => 100755 app/views/homework_common/_new_group_homework.html.erb mode change 100644 => 100755 app/views/homework_common/_new_program_homework.html.erb mode change 100644 => 100755 app/views/homework_common/_new_shixun_homework_list.html.erb mode change 100644 => 100755 app/views/homework_common/_publish_notice.html.erb mode change 100644 => 100755 app/views/homework_common/_reference_answers_attachments.html.erb mode change 100644 => 100755 app/views/homework_common/_set_evalutation_att.html.erb mode change 100644 => 100755 app/views/homework_common/_set_score_rule_non_pro.html.erb mode change 100644 => 100755 app/views/homework_common/_set_score_rule_none_pro_anon.html.erb mode change 100644 => 100755 app/views/homework_common/_set_score_rule_pro.html.erb mode change 100644 => 100755 app/views/homework_common/_set_score_rule_pro_anon.html.erb mode change 100644 => 100755 app/views/homework_common/_shixun_group_list.html.erb mode change 100644 => 100755 app/views/homework_common/_shixun_search_form.html.erb mode change 100644 => 100755 app/views/homework_common/_shixun_tab_div.html.erb mode change 100644 => 100755 app/views/homework_common/_shixuns.html.erb mode change 100644 => 100755 app/views/homework_common/_show_anon_setting.html.erb mode change 100644 => 100755 app/views/homework_common/_show_late_setting.html.erb mode change 100644 => 100755 app/views/homework_common/_show_public_setting.html.erb mode change 100644 => 100755 app/views/homework_common/_show_publish_setting.html.erb mode change 100644 => 100755 app/views/homework_common/_show_score_setting.html.erb mode change 100644 => 100755 app/views/homework_common/_sub_moveWorkItem.html.erb mode change 100644 => 100755 app/views/homework_common/_sub_shixunWork.html.erb create mode 100755 app/views/homework_common/_subject_list.html.erb create mode 100755 app/views/homework_common/_subject_search_form.html.erb create mode 100755 app/views/homework_common/_subject_tab_div.html.erb create mode 100755 app/views/homework_common/_subjects.html.erb mode change 100644 => 100755 app/views/homework_common/add_to_homework_bank.js.erb mode change 100644 => 100755 app/views/homework_common/alert_anonymous_comment.js.erb mode change 100644 => 100755 app/views/homework_common/alert_forbidden_anonymous_comment.js.erb mode change 100644 => 100755 app/views/homework_common/alert_open_student_works.js.erb mode change 100644 => 100755 app/views/homework_common/alert_score_open_modal.js.erb mode change 100644 => 100755 app/views/homework_common/create_shixun_homework.js.erb create mode 100755 app/views/homework_common/create_subject_homework.js.erb mode change 100644 => 100755 app/views/homework_common/edit.html.erb mode change 100644 => 100755 app/views/homework_common/end_notice.js.erb mode change 100644 => 100755 app/views/homework_common/homework_code_repeat.js.erb mode change 100644 => 100755 app/views/homework_common/index.html.erb mode change 100644 => 100755 app/views/homework_common/index.js.erb mode change 100644 => 100755 app/views/homework_common/move_to_category.js.erb mode change 100644 => 100755 app/views/homework_common/new.html.erb mode change 100644 => 100755 app/views/homework_common/open_student_works.js.erb mode change 100644 => 100755 app/views/homework_common/programing_test.js.erb mode change 100644 => 100755 app/views/homework_common/publish_homework.js.erb mode change 100644 => 100755 app/views/homework_common/publish_notice.js.erb mode change 100644 => 100755 app/views/homework_common/publish_shixun_homework.js.erb mode change 100644 => 100755 app/views/homework_common/review_detail.html.erb mode change 100644 => 100755 app/views/homework_common/score_rule_set.js.erb mode change 100644 => 100755 app/views/homework_common/set_evaluation_attr.js.erb mode change 100644 => 100755 app/views/homework_common/set_public.js.erb mode change 100644 => 100755 app/views/homework_common/set_score_open.js.erb mode change 100644 => 100755 app/views/homework_common/setting.html.erb mode change 100644 => 100755 app/views/homework_common/shixuns.js.erb mode change 100644 => 100755 app/views/homework_common/start_anonymous_comment.js.erb mode change 100644 => 100755 app/views/homework_common/start_evaluation_set.js.erb mode change 100644 => 100755 app/views/homework_common/stop_anonymous_comment.js.erb create mode 100755 app/views/homework_common/subjects.js.erb mode change 100644 => 100755 app/views/homework_common/update_explanation.js.erb mode change 100644 => 100755 app/views/iframes/_html_show.html.erb mode change 100644 => 100755 app/views/iframes/html_content.html.erb mode change 100644 => 100755 app/views/iframes/html_content.html.erb.BASE.erb mode change 100644 => 100755 app/views/iframes/html_content.html.erb.LOCAL.erb mode change 100644 => 100755 app/views/iframes/html_content.html.erb.REMOTE.erb mode change 100644 => 100755 app/views/iframes/html_content.js.erb mode change 100644 => 100755 app/views/iframes/show.html.erb mode change 100644 => 100755 app/views/issue_categories/_form.html.erb mode change 100644 => 100755 app/views/issue_categories/_new_modal.html.erb mode change 100644 => 100755 app/views/issue_categories/create.js.erb mode change 100644 => 100755 app/views/issue_categories/destroy.html.erb mode change 100644 => 100755 app/views/issue_categories/edit.html.erb mode change 100644 => 100755 app/views/issue_categories/index.api.rsb mode change 100644 => 100755 app/views/issue_categories/issue_categories_helper.rb mode change 100644 => 100755 app/views/issue_categories/new.html.erb mode change 100644 => 100755 app/views/issue_categories/new.js.erb mode change 100644 => 100755 app/views/issue_categories/show.api.rsb mode change 100644 => 100755 app/views/issue_relations/_form.html.erb mode change 100644 => 100755 app/views/issue_relations/create.js.erb mode change 100644 => 100755 app/views/issue_relations/destroy.js.erb mode change 100644 => 100755 app/views/issue_relations/index.api.rsb mode change 100644 => 100755 app/views/issue_relations/show.api.rsb mode change 100644 => 100755 app/views/issue_statuses/_form.html.erb mode change 100644 => 100755 app/views/issue_statuses/edit.html.erb mode change 100644 => 100755 app/views/issue_statuses/index.api.rsb mode change 100644 => 100755 app/views/issue_statuses/index.html.erb mode change 100644 => 100755 app/views/issue_statuses/new.html.erb mode change 100644 => 100755 app/views/issues/_action_menu.html.erb mode change 100644 => 100755 app/views/issues/_all_list.html.erb mode change 100644 => 100755 app/views/issues/_attributes.html.erb mode change 100644 => 100755 app/views/issues/_attributes_show.html.erb mode change 100644 => 100755 app/views/issues/_changesets.html.erb mode change 100644 => 100755 app/views/issues/_conflict.html.erb mode change 100644 => 100755 app/views/issues/_detail.html.erb mode change 100644 => 100755 app/views/issues/_edit.html.erb mode change 100644 => 100755 app/views/issues/_form.html.erb mode change 100644 => 100755 app/views/issues/_form_custom_fields.html.erb mode change 100644 => 100755 app/views/issues/_history.html.erb mode change 100644 => 100755 app/views/issues/_issue_attachments.html.erb mode change 100644 => 100755 app/views/issues/_issue_commit_ids.html.erb mode change 100644 => 100755 app/views/issues/_issue_commit_ids_show.html.erb mode change 100644 => 100755 app/views/issues/_issue_commits.html.erb mode change 100644 => 100755 app/views/issues/_issue_commits_list.html.erb mode change 100644 => 100755 app/views/issues/_issue_filter.html.erb mode change 100644 => 100755 app/views/issues/_issue_filter_all.html.erb mode change 100644 => 100755 app/views/issues/_issue_filter_author.html.erb mode change 100644 => 100755 app/views/issues/_issue_replies.html.erb mode change 100644 => 100755 app/views/issues/_issue_reply_banner.html.erb mode change 100644 => 100755 app/views/issues/_issue_reply_ke_form.html.erb mode change 100644 => 100755 app/views/issues/_jounal_refresh.js.erb mode change 100644 => 100755 app/views/issues/_list.html.erb mode change 100644 => 100755 app/views/issues/_list_simple.html.erb mode change 100644 => 100755 app/views/issues/_new_issue_list.html.erb mode change 100644 => 100755 app/views/issues/_project_issue.html.erb mode change 100644 => 100755 app/views/issues/_relations.html.erb mode change 100644 => 100755 app/views/issues/_sidebar.html.erb mode change 100644 => 100755 app/views/issues/_statistics.html.erb mode change 100644 => 100755 app/views/issues/_statistics_all.html.erb mode change 100644 => 100755 app/views/issues/_statistics_lock.html.erb mode change 100644 => 100755 app/views/issues/_statistics_open.html.erb mode change 100644 => 100755 app/views/issues/_versions_choise.html.erb mode change 100644 => 100755 app/views/issues/add_journal.js.erb mode change 100644 => 100755 app/views/issues/add_journal_in_org.js.erb mode change 100644 => 100755 app/views/issues/add_reply.js.erb mode change 100644 => 100755 app/views/issues/bulk_edit.html.erb mode change 100644 => 100755 app/views/issues/bulk_edit.js.erb mode change 100644 => 100755 app/views/issues/commit_for_issue.js.erb mode change 100644 => 100755 app/views/issues/delete_journal.js.erb mode change 100644 => 100755 app/views/issues/destroy.html.erb mode change 100644 => 100755 app/views/issues/edit.html.erb mode change 100644 => 100755 app/views/issues/index.api.rsb mode change 100644 => 100755 app/views/issues/index.html.erb mode change 100644 => 100755 app/views/issues/index.js.erb mode change 100644 => 100755 app/views/issues/issue_commit_delete.js.erb mode change 100644 => 100755 app/views/issues/issue_commits.js.erb mode change 100644 => 100755 app/views/issues/new.html.erb mode change 100644 => 100755 app/views/issues/reply.js.erb mode change 100644 => 100755 app/views/issues/show.api.rsb mode change 100644 => 100755 app/views/issues/show.html.erb mode change 100644 => 100755 app/views/issues/show.js.erb mode change 100644 => 100755 app/views/issues/statistics.js.erb mode change 100644 => 100755 app/views/issues/update.js.erb mode change 100644 => 100755 app/views/issues/update_form.js.erb mode change 100644 => 100755 app/views/journals/_notes_form.html.erb mode change 100644 => 100755 app/views/journals/diff.html.erb mode change 100644 => 100755 app/views/journals/edit.js.erb mode change 100644 => 100755 app/views/journals/index.builder mode change 100644 => 100755 app/views/journals/new.js.erb mode change 100644 => 100755 app/views/journals/update.js.erb mode change 100644 => 100755 app/views/kaminari/_first_page.html.erb mode change 100644 => 100755 app/views/kaminari/_gap.html.erb mode change 100644 => 100755 app/views/kaminari/_last_page.html.erb mode change 100644 => 100755 app/views/kaminari/_next_page.html.erb mode change 100644 => 100755 app/views/kaminari/_page.html.erb mode change 100644 => 100755 app/views/kaminari/_paginator.html.erb mode change 100644 => 100755 app/views/kaminari/_prev_page.html.erb mode change 100644 => 100755 app/views/kubernete/exec_container.jsl.erb mode change 100644 => 100755 app/views/kubernete/new.html.erb mode change 100644 => 100755 app/views/layouts/_base_ad.html.erb mode change 100644 => 100755 app/views/layouts/_base_college_header.html.erb mode change 100644 => 100755 app/views/layouts/_base_enterprise_header.html.erb mode change 100644 => 100755 app/views/layouts/_base_feedback.html.erb mode change 100644 => 100755 app/views/layouts/_base_footer.html.erb mode change 100644 => 100755 app/views/layouts/_base_footer_new.html.erb mode change 100644 => 100755 app/views/layouts/_base_footer_public.html.erb mode change 100644 => 100755 app/views/layouts/_base_header.html.erb mode change 100644 => 100755 app/views/layouts/_base_header_new.html.erb mode change 100644 => 100755 app/views/layouts/_base_home_menu.html.erb mode change 100644 => 100755 app/views/layouts/_base_homework_attach.html.erb mode change 100644 => 100755 app/views/layouts/_base_project_top.html.erb mode change 100644 => 100755 app/views/layouts/_base_softapplication_index_top_content.html.erb mode change 100644 => 100755 app/views/layouts/_base_softapplication_top_content.html.erb mode change 100644 => 100755 app/views/layouts/_bigdata_footer.html.erb mode change 100644 => 100755 app/views/layouts/_bigdata_header.html.erb mode change 100644 => 100755 app/views/layouts/_board_children_list.html.erb mode change 100644 => 100755 app/views/layouts/_bootstrap_base_footer.html.erb mode change 100644 => 100755 app/views/layouts/_bootstrap_base_header.html.erb mode change 100644 => 100755 app/views/layouts/_contest_board_children_list.html.erb mode change 100644 => 100755 app/views/layouts/_course_base_info.html.erb mode change 100644 => 100755 app/views/layouts/_course_left_info.html.erb mode change 100644 => 100755 app/views/layouts/_footer.html.erb mode change 100644 => 100755 app/views/layouts/_footer_force.html.erb mode change 100644 => 100755 app/views/layouts/_footer_show.html.erb mode change 100644 => 100755 app/views/layouts/_forbidden_new_feedback.html.erb mode change 100644 => 100755 app/views/layouts/_group_children_list.html.erb mode change 100644 => 100755 app/views/layouts/_homepage_left_contest_list.html.erb mode change 100644 => 100755 app/views/layouts/_homepage_left_course_list.html.erb mode change 100644 => 100755 app/views/layouts/_homepage_left_project_list.html.erb mode change 100644 => 100755 app/views/layouts/_join_exit_project.html.erb mode change 100644 => 100755 app/views/layouts/_logined_force_header.html.erb mode change 100644 => 100755 app/views/layouts/_logined_header.html.erb mode change 100644 => 100755 app/views/layouts/_logined_header_show.html.erb mode change 100644 => 100755 app/views/layouts/_message_loading.html.erb mode change 100644 => 100755 app/views/layouts/_new_feedback.html.erb mode change 100644 => 100755 app/views/layouts/_new_footer.html.erb mode change 100644 => 100755 app/views/layouts/_new_header.html.erb mode change 100644 => 100755 app/views/layouts/_no_content.html.erb mode change 100644 => 100755 app/views/layouts/_org_courses.html.erb mode change 100644 => 100755 app/views/layouts/_org_custom_footer.html.erb mode change 100644 => 100755 app/views/layouts/_org_projects.html.erb mode change 100644 => 100755 app/views/layouts/_org_subdomain_footer.html.erb mode change 100644 => 100755 app/views/layouts/_point_browser.html.erb mode change 100644 => 100755 app/views/layouts/_project_info.html.erb mode change 100644 => 100755 app/views/layouts/_public_left_info.html.erb mode change 100644 => 100755 app/views/layouts/_show_messages_list.html.erb mode change 100644 => 100755 app/views/layouts/_syllabus_base_info.html.erb mode change 100644 => 100755 app/views/layouts/_syllabus_edit_info.html.erb mode change 100644 => 100755 app/views/layouts/_syllabus_eng_name.html.erb mode change 100644 => 100755 app/views/layouts/_syllabus_info.html.erb mode change 100644 => 100755 app/views/layouts/_syllabus_teacher_list.html.erb mode change 100644 => 100755 app/views/layouts/_syllabus_title.html.erb mode change 100644 => 100755 app/views/layouts/_tag.html.erb mode change 100644 => 100755 app/views/layouts/_tag_name.html.erb mode change 100644 => 100755 app/views/layouts/_unlogin_header.html.erb mode change 100644 => 100755 app/views/layouts/_upload_avatar.html.erb mode change 100644 => 100755 app/views/layouts/_user_brief_introduction.html.erb mode change 100644 => 100755 app/views/layouts/_user_contests.html.erb mode change 100644 => 100755 app/views/layouts/_user_courses.html.erb mode change 100644 => 100755 app/views/layouts/_user_courses_list.html.erb mode change 100644 => 100755 app/views/layouts/_user_fans_list.html.erb mode change 100644 => 100755 app/views/layouts/_user_homework_list.html.erb mode change 100644 => 100755 app/views/layouts/_user_project_list.html.erb mode change 100644 => 100755 app/views/layouts/_user_projects.html.erb mode change 100644 => 100755 app/views/layouts/_user_watch_btn.html.erb mode change 100644 => 100755 app/views/layouts/_user_watch_list.html.erb mode change 100644 => 100755 app/views/layouts/admin.html.erb mode change 100644 => 100755 app/views/layouts/base.html.erb mode change 100644 => 100755 app/views/layouts/base.html_old.erb mode change 100644 => 100755 app/views/layouts/base_.html.erb mode change 100644 => 100755 app/views/layouts/base_admin.html.erb mode change 100644 => 100755 app/views/layouts/base_bids.html.erb mode change 100644 => 100755 app/views/layouts/base_ccf.html.erb mode change 100644 => 100755 app/views/layouts/base_competition.html.erb mode change 100644 => 100755 app/views/layouts/base_contest_community.html.erb mode change 100644 => 100755 app/views/layouts/base_contests.html.erb mode change 100644 => 100755 app/views/layouts/base_course_community.html.erb mode change 100644 => 100755 app/views/layouts/base_courses.html.erb mode change 100644 => 100755 app/views/layouts/base_ec.html.erb mode change 100644 => 100755 app/views/layouts/base_edu.html.erb mode change 100644 => 100755 app/views/layouts/base_edu_account.html.erb mode change 100644 => 100755 app/views/layouts/base_edu_course.html.erb mode change 100644 => 100755 app/views/layouts/base_edu_syllabus.html.erb mode change 100644 => 100755 app/views/layouts/base_edu_user.html.erb mode change 100644 => 100755 app/views/layouts/base_forums.html.erb mode change 100644 => 100755 app/views/layouts/base_homework.html.erb delete mode 100644 app/views/layouts/base_local.html.erb mode change 100644 => 100755 app/views/layouts/base_mail.html.erb mode change 100644 => 100755 app/views/layouts/base_management.html.erb mode change 100644 => 100755 app/views/layouts/base_md.html.erb mode change 100644 => 100755 app/views/layouts/base_memos.html.erb mode change 100644 => 100755 app/views/layouts/base_myshixun.html.erb mode change 100644 => 100755 app/views/layouts/base_new_forum.html.erb mode change 100644 => 100755 app/views/layouts/base_newcontest.html.erb mode change 100644 => 100755 app/views/layouts/base_old.html.erb mode change 100644 => 100755 app/views/layouts/base_opensource_p.html.erb mode change 100644 => 100755 app/views/layouts/base_org.html.erb mode change 100644 => 100755 app/views/layouts/base_org2.html.erb mode change 100644 => 100755 app/views/layouts/base_org_custom.html.erb mode change 100644 => 100755 app/views/layouts/base_org_newstyle.html.erb mode change 100644 => 100755 app/views/layouts/base_organization.html.erb mode change 100644 => 100755 app/views/layouts/base_project_community.html.erb mode change 100644 => 100755 app/views/layouts/base_projects.html.erb mode change 100644 => 100755 app/views/layouts/base_shixun.html.erb mode change 100644 => 100755 app/views/layouts/base_stores.html.erb mode change 100644 => 100755 app/views/layouts/base_sub_domain.html.erb mode change 100644 => 100755 app/views/layouts/base_subject.html.erb mode change 100644 => 100755 app/views/layouts/base_syllabus.html.erb mode change 100644 => 100755 app/views/layouts/base_tags.html.erb mode change 100644 => 100755 app/views/layouts/base_trainings.html.erb mode change 100644 => 100755 app/views/layouts/base_users.html.erb mode change 100644 => 100755 app/views/layouts/base_users_new.html.erb mode change 100644 => 100755 app/views/layouts/base_wechat.html.erb mode change 100644 => 100755 app/views/layouts/base_welcome.html.erb mode change 100644 => 100755 app/views/layouts/bootstrap_base.html.erb mode change 100644 => 100755 app/views/layouts/clear_base.html.erb mode change 100644 => 100755 app/views/layouts/contest_base.html.erb mode change 100644 => 100755 app/views/layouts/course_base.html.erb mode change 100644 => 100755 app/views/layouts/edu_new_base_user.html.erb mode change 100644 => 100755 app/views/layouts/educoder.html.erb mode change 100644 => 100755 app/views/layouts/left.html.erb mode change 100644 => 100755 app/views/layouts/login.html.erb mode change 100644 => 100755 app/views/layouts/login_bigdata.html.erb mode change 100644 => 100755 app/views/layouts/mailer.html.erb mode change 100644 => 100755 app/views/layouts/mailer.text.erb mode change 100644 => 100755 app/views/layouts/new_base.html.erb mode change 100644 => 100755 app/views/layouts/new_base_user.html.erb mode change 100644 => 100755 app/views/layouts/new_base_user_show.html.erb mode change 100644 => 100755 app/views/layouts/pdf.html.erb mode change 100644 => 100755 app/views/layouts/right.html.erb mode change 100644 => 100755 app/views/layouts/static_base.html.erb mode change 100644 => 100755 app/views/layouts/statictis.html.erb mode change 100644 => 100755 app/views/layouts/system_log.html.erb mode change 100644 => 100755 app/views/layouts/users_base.html.erb mode change 100644 => 100755 app/views/list/members.html.erb mode change 100644 => 100755 app/views/local_settings/_form.html.erb mode change 100644 => 100755 app/views/local_settings/edit.html.erb mode change 100644 => 100755 app/views/local_settings/index.html.erb mode change 100644 => 100755 app/views/local_settings/new.html.erb mode change 100644 => 100755 app/views/local_settings/show.html.erb mode change 100644 => 100755 app/views/mailer/_issue.html.erb mode change 100644 => 100755 app/views/mailer/_issue.text.erb mode change 100644 => 100755 app/views/mailer/account_activated.html.erb mode change 100644 => 100755 app/views/mailer/account_activated.text.erb mode change 100644 => 100755 app/views/mailer/account_activation_request.html.erb mode change 100644 => 100755 app/views/mailer/account_activation_request.text.erb mode change 100644 => 100755 app/views/mailer/account_information.html.erb mode change 100644 => 100755 app/views/mailer/account_information.text.erb mode change 100644 => 100755 app/views/mailer/applied_project.html.erb mode change 100644 => 100755 app/views/mailer/applied_project.text.erb mode change 100644 => 100755 app/views/mailer/attachments_added.html.erb mode change 100644 => 100755 app/views/mailer/attachments_added.text.erb mode change 100644 => 100755 app/views/mailer/bind_email.html.erb mode change 100644 => 100755 app/views/mailer/bind_email.text.erb mode change 100644 => 100755 app/views/mailer/code_login.html.erb mode change 100644 => 100755 app/views/mailer/code_login.text.erb mode change 100644 => 100755 app/views/mailer/document_added.html.erb mode change 100644 => 100755 app/views/mailer/document_added.text.erb mode change 100644 => 100755 app/views/mailer/email_register.html.erb mode change 100644 => 100755 app/views/mailer/email_register.text.erb mode change 100644 => 100755 app/views/mailer/forum_add.html.erb mode change 100644 => 100755 app/views/mailer/forum_add.text.erb mode change 100644 => 100755 app/views/mailer/forum_message_added.html.erb mode change 100644 => 100755 app/views/mailer/forum_message_added.text.erb mode change 100644 => 100755 app/views/mailer/homework_added.html.erb mode change 100644 => 100755 app/views/mailer/homework_added.text.erb mode change 100644 => 100755 app/views/mailer/homework_endtime__added.html.erb mode change 100644 => 100755 app/views/mailer/homework_endtime__added.text.erb mode change 100644 => 100755 app/views/mailer/issue_add.html.erb mode change 100644 => 100755 app/views/mailer/issue_add.text.erb mode change 100644 => 100755 app/views/mailer/issue_due_date.html.erb mode change 100644 => 100755 app/views/mailer/issue_due_date.text.erb mode change 100644 => 100755 app/views/mailer/issue_edit.html.erb mode change 100644 => 100755 app/views/mailer/issue_edit.text.erb mode change 100644 => 100755 app/views/mailer/join_course_request.html.erb mode change 100644 => 100755 app/views/mailer/join_course_request.text.erb mode change 100644 => 100755 app/views/mailer/journals_for_message_add.html.erb mode change 100644 => 100755 app/views/mailer/journals_for_message_add.text.erb mode change 100644 => 100755 app/views/mailer/journals_for_message_added.html.erb mode change 100644 => 100755 app/views/mailer/lost_password.html.erb mode change 100644 => 100755 app/views/mailer/lost_password.text.erb mode change 100644 => 100755 app/views/mailer/message_posted.html.erb mode change 100644 => 100755 app/views/mailer/message_posted.text.erb mode change 100644 => 100755 app/views/mailer/news_added.html.erb mode change 100644 => 100755 app/views/mailer/news_added.text.erb mode change 100644 => 100755 app/views/mailer/news_comment_added.html.erb mode change 100644 => 100755 app/views/mailer/news_comment_added.text.erb mode change 100644 => 100755 app/views/mailer/register.html.erb mode change 100644 => 100755 app/views/mailer/register.text.erb mode change 100644 => 100755 app/views/mailer/reminder.html.erb mode change 100644 => 100755 app/views/mailer/reminder.text.erb mode change 100644 => 100755 app/views/mailer/request_member_to_project.html.erb mode change 100644 => 100755 app/views/mailer/request_member_to_project.text.erb mode change 100644 => 100755 app/views/mailer/send_for_user_activities.html.erb mode change 100644 => 100755 app/views/mailer/send_for_user_activities.text.erb mode change 100644 => 100755 app/views/mailer/send_invite_in_project.html.erb mode change 100644 => 100755 app/views/mailer/send_invite_in_project.text.erb mode change 100644 => 100755 app/views/mailer/send_mail_anonymous_comment_close.html.erb mode change 100644 => 100755 app/views/mailer/send_mail_anonymous_comment_close.text.erb mode change 100644 => 100755 app/views/mailer/send_mail_anonymous_comment_fail.html.erb mode change 100644 => 100755 app/views/mailer/send_mail_anonymous_comment_fail.text.erb mode change 100644 => 100755 app/views/mailer/send_mail_anonymous_comment_open.html.erb mode change 100644 => 100755 app/views/mailer/send_mail_anonymous_comment_open.text.erb mode change 100644 => 100755 app/views/mailer/test_email.html.erb mode change 100644 => 100755 app/views/mailer/test_email.text.erb mode change 100644 => 100755 app/views/mailer/wiki_content_added.html.erb mode change 100644 => 100755 app/views/mailer/wiki_content_added.text.erb mode change 100644 => 100755 app/views/mailer/wiki_content_updated.html.erb mode change 100644 => 100755 app/views/mailer/wiki_content_updated.text.erb mode change 100644 => 100755 app/views/managements/_add_auto_users_trial.html.erb mode change 100644 => 100755 app/views/managements/_all_department.html.erb mode change 100644 => 100755 app/views/managements/_all_schools.html.erb mode change 100644 => 100755 app/views/managements/_applicable_course_list.html.erb mode change 100644 => 100755 app/views/managements/_audit_authentication_list.html.erb mode change 100644 => 100755 app/views/managements/_audit_pro_authentication_list.html.erb mode change 100644 => 100755 app/views/managements/_auth_AddUnit.html.erb mode change 100644 => 100755 app/views/managements/_auth_AddUnitManager.html.erb mode change 100644 => 100755 app/views/managements/_auth_professionalcatalog.html.erb mode change 100644 => 100755 app/views/managements/_authentication_list.html.erb mode change 100644 => 100755 app/views/managements/_auto_users_authorization_list.html.erb mode change 100644 => 100755 app/views/managements/_bg_know_edit.html.erb mode change 100644 => 100755 app/views/managements/_bg_know_show.html.erb mode change 100644 => 100755 app/views/managements/_choose_mirror.html.erb mode change 100644 => 100755 app/views/managements/_class_publish_shixuns_list.html.erb mode change 100644 => 100755 app/views/managements/_class_shixuns_list.html.erb mode change 100644 => 100755 app/views/managements/_classroom_classment_list.html.erb mode change 100644 => 100755 app/views/managements/_classroom_list.html.erb mode change 100644 => 100755 app/views/managements/_close_shixun_list.html.erb mode change 100644 => 100755 app/views/managements/_competionList.html.erb mode change 100644 => 100755 app/views/managements/_competition_enroll_list.html.erb mode change 100644 => 100755 app/views/managements/_competition_list_page.html.erb mode change 100644 => 100755 app/views/managements/_competition_stage_lists.html.erb mode change 100644 => 100755 app/views/managements/_course_message_list.html.erb mode change 100644 => 100755 app/views/managements/_create_department.html.erb mode change 100644 => 100755 app/views/managements/_create_mirror_model.html.erb mode change 100644 => 100755 app/views/managements/_create_tech_system.html.erb delete mode 100644 app/views/managements/_customer_addUnit.html.erb delete mode 100644 app/views/managements/_customers_search_form.html.erb mode change 100644 => 100755 app/views/managements/_delete_depart_message.html.erb mode change 100644 => 100755 app/views/managements/_delete_school_message.html.erb mode change 100644 => 100755 app/views/managements/_depart_host_count.html.erb mode change 100644 => 100755 app/views/managements/_depart_list.html.erb mode change 100644 => 100755 app/views/managements/_depart_member_cell.html.erb mode change 100644 => 100755 app/views/managements/_depart_member_search_list.html.erb mode change 100644 => 100755 app/views/managements/_departmentUnit_addManger.html.erb mode change 100644 => 100755 app/views/managements/_departmentUnit_url.html.erb mode change 100644 => 100755 app/views/managements/_departments_list.html.erb mode change 100644 => 100755 app/views/managements/_departments_part_list.html.erb mode change 100644 => 100755 app/views/managements/_door_banner.html.erb mode change 100644 => 100755 app/views/managements/_edit_score_sets.html.erb mode change 100644 => 100755 app/views/managements/_evaluate_recode_time.html.erb mode change 100644 => 100755 app/views/managements/_evaluate_records_list.html.erb mode change 100644 => 100755 app/views/managements/_graduation_standard_list.html.erb mode change 100644 => 100755 app/views/managements/_import_student_accounts.html.erb mode change 100644 => 100755 app/views/managements/_leave_message_list.html.erb mode change 100644 => 100755 app/views/managements/_management_Import_Template.html.erb mode change 100644 => 100755 app/views/managements/_manager_list.html.erb mode change 100644 => 100755 app/views/managements/_message_list.html.erb mode change 100644 => 100755 app/views/managements/_migrate_class_list.html.erb mode change 100644 => 100755 app/views/managements/_mirror_info.html.erb mode change 100644 => 100755 app/views/managements/_mirror_list_show.html.erb mode change 100644 => 100755 app/views/managements/_mirror_picture_shixuns_list.html.erb mode change 100644 => 100755 app/views/managements/_modify_class.html.erb mode change 100644 => 100755 app/views/managements/_modify_mirror_modal.html.erb mode change 100644 => 100755 app/views/managements/_myshixun_list.html.erb mode change 100644 => 100755 app/views/managements/_new_add_unit.html.erb mode change 100644 => 100755 app/views/managements/_new_major.html.erb mode change 100644 => 100755 app/views/managements/_new_or_edit_score_indicator.html.erb mode change 100644 => 100755 app/views/managements/_new_or_edit_score_sets.html.erb delete mode 100644 app/views/managements/_partner_addManage.html.erb delete mode 100644 app/views/managements/_partner_addUnit.html.erb delete mode 100644 app/views/managements/_partner_customer_list.html.erb delete mode 100644 app/views/managements/_partner_list.html.erb delete mode 100644 app/views/managements/_partner_main_div.html.erb delete mode 100644 app/views/managements/_partner_member_list.html.erb delete mode 100644 app/views/managements/_partner_member_search_list.html.erb delete mode 100644 app/views/managements/_partner_search_form.html.erb delete mode 100644 app/views/managements/_partners_list.html.erb mode change 100644 => 100755 app/views/managements/_pro_authentication_list.html.erb mode change 100644 => 100755 app/views/managements/_profession_index.html.erb mode change 100644 => 100755 app/views/managements/_profession_list.html.erb mode change 100644 => 100755 app/views/managements/_project_list_div.html.erb mode change 100644 => 100755 app/views/managements/_publish_shixun_list.html.erb mode change 100644 => 100755 app/views/managements/_rename_tech_system.html.erb mode change 100644 => 100755 app/views/managements/_replace_mirror_modal.html.erb mode change 100644 => 100755 app/views/managements/_sample_edit.html.erb mode change 100644 => 100755 app/views/managements/_sample_show.html.erb mode change 100644 => 100755 app/views/managements/_school_image_banner.html.erb mode change 100644 => 100755 app/views/managements/_school_lists.html.erb delete mode 100644 app/views/managements/_schooladd_list.html.erb delete mode 100644 app/views/managements/_schoolcontrast_list.html.erb delete mode 100644 app/views/managements/_schoolstatistics_list.html.erb mode change 100644 => 100755 app/views/managements/_score_sets_list.html.erb mode change 100644 => 100755 app/views/managements/_shixun_authorization_list.html.erb mode change 100644 => 100755 app/views/managements/_shixun_authorization_passed_list.html.erb mode change 100644 => 100755 app/views/managements/_shixun_feedback_list.html.erb mode change 100644 => 100755 app/views/managements/_shixun_list.html.erb mode change 100644 => 100755 app/views/managements/_shixun_member_list.html.erb mode change 100644 => 100755 app/views/managements/_shixun_mirror_list.html mode change 100644 => 100755 app/views/managements/_shixun_setting_list.html.erb mode change 100644 => 100755 app/views/managements/_shixun_task_list.html.erb mode change 100644 => 100755 app/views/managements/_subject_authorization_list.html.erb mode change 100644 => 100755 app/views/managements/_subject_authorization_passed_list.html.erb delete mode 100644 app/views/managements/_subject_level_list.html.erb mode change 100644 => 100755 app/views/managements/_subject_list.html.erb mode change 100644 => 100755 app/views/managements/_summary_edit.html.erb mode change 100644 => 100755 app/views/managements/_summary_show.html.erb mode change 100644 => 100755 app/views/managements/_tech_system.html.erb mode change 100644 => 100755 app/views/managements/_training_item.html.erb mode change 100644 => 100755 app/views/managements/_training_list.html.erb mode change 100644 => 100755 app/views/managements/_trial_authorization_list.html.erb mode change 100644 => 100755 app/views/managements/_trial_authorization_passed_list.html.erb delete mode 100644 app/views/managements/_unit_cooperativePartner.html.erb mode change 100644 => 100755 app/views/managements/_unit_list.html.erb mode change 100644 => 100755 app/views/managements/_update_department.html.erb mode change 100644 => 100755 app/views/managements/_update_department_form.html.erb mode change 100644 => 100755 app/views/managements/_update_department_school.html.erb mode change 100644 => 100755 app/views/managements/_update_school_form.html.erb mode change 100644 => 100755 app/views/managements/_user_list.html.erb mode change 100644 => 100755 app/views/managements/_users_authorization_list.html.erb mode change 100644 => 100755 app/views/managements/add_depart_member.js.erb mode change 100644 => 100755 app/views/managements/add_depart_member_box.js.erb mode change 100644 => 100755 app/views/managements/add_department.js.erb mode change 100644 => 100755 app/views/managements/add_departments_part.html.erb mode change 100644 => 100755 app/views/managements/add_departments_part.js.erb delete mode 100644 app/views/managements/add_partner_member.js.erb delete mode 100644 app/views/managements/add_partner_member_box.js.erb mode change 100644 => 100755 app/views/managements/add_template.js.erb mode change 100644 => 100755 app/views/managements/agree_authentication.js.erb mode change 100644 => 100755 app/views/managements/agree_authentication_pro.js.erb mode change 100644 => 100755 app/views/managements/all_department.js.erb delete mode 100644 app/views/managements/all_partners.js.erb mode change 100644 => 100755 app/views/managements/all_schools.js.erb mode change 100644 => 100755 app/views/managements/applicable_course.html.erb mode change 100644 => 100755 app/views/managements/applicable_course.js.erb mode change 100644 => 100755 app/views/managements/auth_school.html.erb mode change 100644 => 100755 app/views/managements/auto_users_trial.html.erb mode change 100644 => 100755 app/views/managements/auto_users_trial.js.erb mode change 100644 => 100755 app/views/managements/career_list.html.erb mode change 100644 => 100755 app/views/managements/career_list.js.erb mode change 100644 => 100755 app/views/managements/choose_mirror.js.erb mode change 100644 => 100755 app/views/managements/class_publish_shixuns.html.erb mode change 100644 => 100755 app/views/managements/class_publish_shixuns.js.erb mode change 100644 => 100755 app/views/managements/class_shixuns.html.erb mode change 100644 => 100755 app/views/managements/class_shixuns.js.erb mode change 100644 => 100755 app/views/managements/classroom.html.erb mode change 100644 => 100755 app/views/managements/classroom.js.erb mode change 100644 => 100755 app/views/managements/classroom_classment.html.erb mode change 100644 => 100755 app/views/managements/classroom_classment.js.erb mode change 100644 => 100755 app/views/managements/close_shixuns.html.erb mode change 100644 => 100755 app/views/managements/close_shixuns.js.erb mode change 100644 => 100755 app/views/managements/codemirror_template.html.erb mode change 100644 => 100755 app/views/managements/codemirror_template.js.erb mode change 100644 => 100755 app/views/managements/competition.html.erb mode change 100644 => 100755 app/views/managements/competition.js.erb mode change 100644 => 100755 app/views/managements/competition_setting.html.erb mode change 100644 => 100755 app/views/managements/course_guide_template.html.erb mode change 100644 => 100755 app/views/managements/course_homepage_show.js.erb mode change 100644 => 100755 app/views/managements/course_messages_list.html.erb mode change 100644 => 100755 app/views/managements/course_messages_list.js.erb mode change 100644 => 100755 app/views/managements/create_departments.js.erb mode change 100644 => 100755 app/views/managements/create_school_image.js.erb mode change 100644 => 100755 app/views/managements/create_standard.js.erb delete mode 100644 app/views/managements/customers_list.js.erb mode change 100644 => 100755 app/views/managements/deal_shixun_authorization.js.erb mode change 100644 => 100755 app/views/managements/deal_subject_authorization.js.erb mode change 100644 => 100755 app/views/managements/delete_career.js.erb delete mode 100644 app/views/managements/delete_customers.js.erb mode change 100644 => 100755 app/views/managements/delete_depart_member.js.erb mode change 100644 => 100755 app/views/managements/delete_mirror.js.erb delete mode 100644 app/views/managements/delete_partner_member.js.erb mode change 100644 => 100755 app/views/managements/delete_school_image.js.erb mode change 100644 => 100755 app/views/managements/depart.html.erb mode change 100644 => 100755 app/views/managements/depart.js.erb mode change 100644 => 100755 app/views/managements/departments.html.erb mode change 100644 => 100755 app/views/managements/departments.js.erb mode change 100644 => 100755 app/views/managements/departments_part.html.erb mode change 100644 => 100755 app/views/managements/departments_part.js.erb mode change 100644 => 100755 app/views/managements/destroy.js.erb mode change 100644 => 100755 app/views/managements/ec_template.html.erb mode change 100644 => 100755 app/views/managements/edit_score_indicator.js.erb mode change 100644 => 100755 app/views/managements/edit_score_set.js.erb mode change 100644 => 100755 app/views/managements/editmd_template.html.erb mode change 100644 => 100755 app/views/managements/editmd_template.js.erb mode change 100644 => 100755 app/views/managements/enroll_list.html.erb mode change 100644 => 100755 app/views/managements/enroll_list.js.erb mode change 100644 => 100755 app/views/managements/evaluate_recod_time.js.erb mode change 100644 => 100755 app/views/managements/evaluate_records.html.erb mode change 100644 => 100755 app/views/managements/evaluate_records.js.erb mode change 100644 => 100755 app/views/managements/graduation_standard.html.erb mode change 100644 => 100755 app/views/managements/hidden_course.js.erb mode change 100644 => 100755 app/views/managements/identity_authentication.html.erb mode change 100644 => 100755 app/views/managements/identity_authentication.js.erb mode change 100644 => 100755 app/views/managements/import_course_members.js.erb mode change 100644 => 100755 app/views/managements/import_departments.js.erb mode change 100644 => 100755 app/views/managements/import_student_accounts.js.erb mode change 100644 => 100755 app/views/managements/index.html.erb mode change 100644 => 100755 app/views/managements/leave_message.html.erb mode change 100644 => 100755 app/views/managements/leave_message.js.erb mode change 100644 => 100755 app/views/managements/major_information.html.erb mode change 100644 => 100755 app/views/managements/messages_list.html.erb mode change 100644 => 100755 app/views/managements/messages_list.js.erb mode change 100644 => 100755 app/views/managements/migrate_class.js.erb mode change 100644 => 100755 app/views/managements/migrate_data_and_script.js.erb mode change 100644 => 100755 app/views/managements/mirror_picture_shixuns.html.erb mode change 100644 => 100755 app/views/managements/mirror_picture_shixuns.js.erb mode change 100644 => 100755 app/views/managements/mirror_replace.js.erb mode change 100644 => 100755 app/views/managements/mirror_repository.html.erb mode change 100644 => 100755 app/views/managements/mirror_repository.js.erb mode change 100644 => 100755 app/views/managements/mirror_search.js.erb mode change 100644 => 100755 app/views/managements/modify_mirror.js.erb mode change 100644 => 100755 app/views/managements/modify_script.html.erb mode change 100644 => 100755 app/views/managements/mul_statics.html.erb mode change 100644 => 100755 app/views/managements/mul_test.html.erb mode change 100644 => 100755 app/views/managements/myshixun_info.html.erb mode change 100644 => 100755 app/views/managements/myshixuns.html.erb mode change 100644 => 100755 app/views/managements/myshixuns.js.erb mode change 100644 => 100755 app/views/managements/new_major.js.erb mode change 100644 => 100755 app/views/managements/new_score_indicator.js.erb delete mode 100644 app/views/managements/partners.html.erb delete mode 100644 app/views/managements/partners.js.erb mode change 100644 => 100755 app/views/managements/profession.html.erb mode change 100644 => 100755 app/views/managements/profession.js.erb mode change 100644 => 100755 app/views/managements/professional_authentication.html.erb mode change 100644 => 100755 app/views/managements/professional_authentication.js.erb mode change 100644 => 100755 app/views/managements/project_list.html.erb mode change 100644 => 100755 app/views/managements/project_list.js.erb mode change 100644 => 100755 app/views/managements/publish_shixuns.html.erb mode change 100644 => 100755 app/views/managements/publish_shixuns.js.erb mode change 100644 => 100755 app/views/managements/published_career.js.erb mode change 100644 => 100755 app/views/managements/reject_authentication_pro.js.erb mode change 100644 => 100755 app/views/managements/remove_auth_school.js.erb mode change 100644 => 100755 app/views/managements/remove_manager.js.erb mode change 100644 => 100755 app/views/managements/rename_class.js.erb mode change 100644 => 100755 app/views/managements/rename_tech_system.js.erb delete mode 100644 app/views/managements/schooladd.html.erb delete mode 100644 app/views/managements/schoolcontrast.html.erb delete mode 100644 app/views/managements/schoolstatistics.html.erb mode change 100644 => 100755 app/views/managements/search_authorization_school.js.erb mode change 100644 => 100755 app/views/managements/search_manager.js.erb mode change 100644 => 100755 app/views/managements/search_school.js.erb mode change 100644 => 100755 app/views/managements/search_user.js.erb mode change 100644 => 100755 app/views/managements/setting_banner.html.erb mode change 100644 => 100755 app/views/managements/setting_banner.js.erb mode change 100644 => 100755 app/views/managements/shixun_authorization.html.erb mode change 100644 => 100755 app/views/managements/shixun_authorization.js.erb mode change 100644 => 100755 app/views/managements/shixun_feedback.html.erb mode change 100644 => 100755 app/views/managements/shixun_feedback.js.erb mode change 100644 => 100755 app/views/managements/shixun_feedback_message.html.erb mode change 100644 => 100755 app/views/managements/shixun_feedback_message.js.erb mode change 100644 => 100755 app/views/managements/shixun_member.html.erb mode change 100644 => 100755 app/views/managements/shixun_member.js.erb mode change 100644 => 100755 app/views/managements/shixun_quality_score.html.erb mode change 100644 => 100755 app/views/managements/shixun_quality_score.js.erb mode change 100644 => 100755 app/views/managements/shixun_setting_list.html.erb mode change 100644 => 100755 app/views/managements/shixun_setting_list.js.erb mode change 100644 => 100755 app/views/managements/shixun_task.html.erb mode change 100644 => 100755 app/views/managements/shixun_task.js.erb mode change 100644 => 100755 app/views/managements/shixuns.html.erb mode change 100644 => 100755 app/views/managements/shixuns.js.erb mode change 100644 => 100755 app/views/managements/subject_authorization.html.erb mode change 100644 => 100755 app/views/managements/subject_authorization.js.erb delete mode 100644 app/views/managements/subject_level_system.html.erb delete mode 100644 app/views/managements/subject_level_system.js.erb mode change 100644 => 100755 app/views/managements/subject_setting_list.html.erb mode change 100644 => 100755 app/views/managements/subject_setting_list.js.erb mode change 100644 => 100755 app/views/managements/task_pass_template2.html.erb mode change 100644 => 100755 app/views/managements/task_pass_template2.js.erb mode change 100644 => 100755 app/views/managements/tech_system.html.erb mode change 100644 => 100755 app/views/managements/tech_system.js.erb mode change 100644 => 100755 app/views/managements/training_2018.html.erb mode change 100644 => 100755 app/views/managements/training_2018.js.erb mode change 100644 => 100755 app/views/managements/trial_authorization.html.erb mode change 100644 => 100755 app/views/managements/trial_authorization.js.erb mode change 100644 => 100755 app/views/managements/trial_authorization_operation.js.erb mode change 100644 => 100755 app/views/managements/unit.html.erb mode change 100644 => 100755 app/views/managements/unit.js.erb mode change 100644 => 100755 app/views/managements/up_or_down_school_image.js.erb mode change 100644 => 100755 app/views/managements/update_depart_identifier.js.erb mode change 100644 => 100755 app/views/managements/update_department.js.erb mode change 100644 => 100755 app/views/managements/update_host_count.js.erb mode change 100644 => 100755 app/views/managements/update_mirror.js.erb mode change 100644 => 100755 app/views/managements/update_notice.html.erb mode change 100644 => 100755 app/views/managements/update_pay_status.js.erb mode change 100644 => 100755 app/views/managements/update_school_image.js.erb mode change 100644 => 100755 app/views/managements/update_user.html.erb mode change 100644 => 100755 app/views/managements/upload_logo.html.erb mode change 100644 => 100755 app/views/managements/users.html.erb mode change 100644 => 100755 app/views/managements/users.js.erb mode change 100644 => 100755 app/views/managements/users_trial.html.erb mode change 100644 => 100755 app/views/managements/users_trial.js.erb mode change 100644 => 100755 app/views/mark_down/example.html.erb mode change 100644 => 100755 app/views/members/_delete_message_tip.html.erb mode change 100644 => 100755 app/views/members/allow_to_join_project.js.erb mode change 100644 => 100755 app/views/members/appliedproject.js.erb mode change 100644 => 100755 app/views/members/autocomplete.js.erb mode change 100644 => 100755 app/views/members/create.js.erb mode change 100644 => 100755 app/views/members/destroy.js.erb mode change 100644 => 100755 app/views/members/index.api.rsb mode change 100644 => 100755 app/views/members/refused_allow_to_join_project.js.erb mode change 100644 => 100755 app/views/members/show.api.rsb mode change 100644 => 100755 app/views/members/update.js.erb mode change 100644 => 100755 app/views/memos/_attachments_links.html.erb mode change 100644 => 100755 app/views/memos/_common_reply_box.html.erb mode change 100644 => 100755 app/views/memos/_form.html.erb mode change 100644 => 100755 app/views/memos/_memo_all_replies.html.erb mode change 100644 => 100755 app/views/memos/_my_count_message.html.erb mode change 100644 => 100755 app/views/memos/_my_show_count_message.html.erb mode change 100644 => 100755 app/views/memos/_new.html.erb mode change 100644 => 100755 app/views/memos/_praise_tread.html.erb mode change 100644 => 100755 app/views/memos/_reply_box.html.erb mode change 100644 => 100755 app/views/memos/_reply_message.html.erb mode change 100644 => 100755 app/views/memos/_topic_form.html.erb mode change 100644 => 100755 app/views/memos/create.js.erb mode change 100644 => 100755 app/views/memos/destroy.js.erb mode change 100644 => 100755 app/views/memos/edit.html.erb mode change 100644 => 100755 app/views/memos/message_replies.js.erb mode change 100644 => 100755 app/views/memos/new.html.erb mode change 100644 => 100755 app/views/memos/new.js.erb mode change 100644 => 100755 app/views/memos/quote.js.erb mode change 100644 => 100755 app/views/memos/show.html.erb mode change 100644 => 100755 app/views/memos/show.js.erb mode change 100644 => 100755 app/views/memos/update.js.erb mode change 100644 => 100755 app/views/messages/_common_reply_box.html.erb mode change 100644 => 100755 app/views/messages/_contest_show.html.erb mode change 100644 => 100755 app/views/messages/_contest_show_replies.html.erb mode change 100644 => 100755 app/views/messages/_course_new.html.erb mode change 100644 => 100755 app/views/messages/_course_show.html.erb mode change 100644 => 100755 app/views/messages/_course_show_old.html.erb mode change 100644 => 100755 app/views/messages/_course_show_replies.html.erb mode change 100644 => 100755 app/views/messages/_form.html.erb mode change 100644 => 100755 app/views/messages/_form_course.html.erb mode change 100644 => 100755 app/views/messages/_form_project.html.erb mode change 100644 => 100755 app/views/messages/_join_org_subfield_menu.html.erb mode change 100644 => 100755 app/views/messages/_message_all_replies.html.erb mode change 100644 => 100755 app/views/messages/_message_reply.html.erb mode change 100644 => 100755 app/views/messages/_org_show_replies.html.erb mode change 100644 => 100755 app/views/messages/_org_subfield_show.html.erb mode change 100644 => 100755 app/views/messages/_project_new_topic.html.erb mode change 100644 => 100755 app/views/messages/_project_rereply_message.html.erb mode change 100644 => 100755 app/views/messages/_project_show.html.erb mode change 100644 => 100755 app/views/messages/_project_show_replies.html.erb mode change 100644 => 100755 app/views/messages/_reply_message.html.erb mode change 100644 => 100755 app/views/messages/_show_org_subfields.html.erb mode change 100644 => 100755 app/views/messages/destroy.js.erb mode change 100644 => 100755 app/views/messages/edit.html.erb mode change 100644 => 100755 app/views/messages/get_subfield_on_click_org.js.erb mode change 100644 => 100755 app/views/messages/join_org_subfield.js.erb mode change 100644 => 100755 app/views/messages/join_org_subfields.js.erb mode change 100644 => 100755 app/views/messages/message_replies.js.erb mode change 100644 => 100755 app/views/messages/new.html.erb mode change 100644 => 100755 app/views/messages/quote.js.erb mode change 100644 => 100755 app/views/messages/reply.js.erb mode change 100644 => 100755 app/views/messages/show.html.erb mode change 100644 => 100755 app/views/messages/show.js.erb mode change 100644 => 100755 app/views/messages/sticky_topic.js.erb mode change 100644 => 100755 app/views/my/_apply_add_department.html.erb mode change 100644 => 100755 app/views/my/_apply_add_school.html.erb mode change 100644 => 100755 app/views/my/_block.html.erb mode change 100644 => 100755 app/views/my/_edit_account.html.erb mode change 100644 => 100755 app/views/my/_show_account.html.erb mode change 100644 => 100755 app/views/my/_sidebar.html.erb mode change 100644 => 100755 app/views/my/account.html.erb mode change 100644 => 100755 app/views/my/account.js.erb mode change 100644 => 100755 app/views/my/blocks/_assiagn_issue.html.erb mode change 100644 => 100755 app/views/my/blocks/_calendar.html.erb mode change 100644 => 100755 app/views/my/blocks/_documents.html.erb mode change 100644 => 100755 app/views/my/blocks/_issuesassignedtome.html.erb mode change 100644 => 100755 app/views/my/blocks/_issuesreportedbyme.html.erb mode change 100644 => 100755 app/views/my/blocks/_issueswatched.html.erb mode change 100644 => 100755 app/views/my/blocks/_news.html.erb mode change 100644 => 100755 app/views/my/blocks/_timelog.html.erb mode change 100644 => 100755 app/views/my/clear_user_avatar_temp.js.erb mode change 100644 => 100755 app/views/my/destroy.html.erb mode change 100644 => 100755 app/views/my/page.html.erb mode change 100644 => 100755 app/views/my/page.js.erb mode change 100644 => 100755 app/views/my/page2.js.erb mode change 100644 => 100755 app/views/my/page_layout.html.erb mode change 100644 => 100755 app/views/my/password.html.erb mode change 100644 => 100755 app/views/my/password.js.erb mode change 100644 => 100755 app/views/my/save_user_avatar.js.erb mode change 100644 => 100755 app/views/myshixuns/_achieve_ways.html.erb mode change 100644 => 100755 app/views/myshixuns/_myshixun_top.html.erb mode change 100644 => 100755 app/views/myshixuns/search_file_list.js.erb mode change 100644 => 100755 app/views/news/_contest_news.html.erb mode change 100644 => 100755 app/views/news/_contest_news_detail.html.erb mode change 100644 => 100755 app/views/news/_contest_news_new.html.erb mode change 100644 => 100755 app/views/news/_contest_show.html.erb mode change 100644 => 100755 app/views/news/_course_form.html.erb mode change 100644 => 100755 app/views/news/_course_news.html.erb mode change 100644 => 100755 app/views/news/_course_news_detail.html.erb mode change 100644 => 100755 app/views/news/_course_news_list.html.erb mode change 100644 => 100755 app/views/news/_course_news_new.html.erb mode change 100644 => 100755 app/views/news/_course_show.html.erb mode change 100644 => 100755 app/views/news/_edit_for_org_subfield.html.erb mode change 100644 => 100755 app/views/news/_form.html.erb mode change 100644 => 100755 app/views/news/_news.html.erb mode change 100644 => 100755 app/views/news/_news_all_replies.html.erb mode change 100644 => 100755 app/views/news/_news_replies_detail.html.erb mode change 100644 => 100755 app/views/news/_organization_show.html.erb mode change 100644 => 100755 app/views/news/_project_form.html.erb mode change 100644 => 100755 app/views/news/_project_news.html.erb mode change 100644 => 100755 app/views/news/_project_news_detail.html.erb mode change 100644 => 100755 app/views/news/_project_news_new.html.erb mode change 100644 => 100755 app/views/news/_project_show.html.erb mode change 100644 => 100755 app/views/news/edit.html.erb mode change 100644 => 100755 app/views/news/index.api.rsb mode change 100644 => 100755 app/views/news/index.html.erb mode change 100644 => 100755 app/views/news/index.js.erb mode change 100644 => 100755 app/views/news/new.html.erb mode change 100644 => 100755 app/views/news/show.html.erb mode change 100644 => 100755 app/views/news/show.js.erb mode change 100644 => 100755 app/views/newsold/_form.html.erb mode change 100644 => 100755 app/views/newsold/_news.html.erb mode change 100644 => 100755 app/views/newsold/edit.html.erb mode change 100644 => 100755 app/views/newsold/index.api.rsb mode change 100644 => 100755 app/views/newsold/index.html.erb mode change 100644 => 100755 app/views/newsold/new.html.erb mode change 100644 => 100755 app/views/newsold/show.html.erb mode change 100644 => 100755 app/views/no_uses/_form.html.erb mode change 100644 => 100755 app/views/no_uses/_set_no_use.js.erb mode change 100644 => 100755 app/views/no_uses/edit.html.erb mode change 100644 => 100755 app/views/no_uses/index.html.erb mode change 100644 => 100755 app/views/no_uses/new.html.erb mode change 100644 => 100755 app/views/no_uses/show.html.erb mode change 100644 => 100755 app/views/open_source_projects/_form.html.erb mode change 100644 => 100755 app/views/open_source_projects/_os_project.html.erb mode change 100644 => 100755 app/views/open_source_projects/_show_bug.html.erb mode change 100644 => 100755 app/views/open_source_projects/_show_memo.html.erb mode change 100644 => 100755 app/views/open_source_projects/_show_topics.html.erb mode change 100644 => 100755 app/views/open_source_projects/allbug.html.erb mode change 100644 => 100755 app/views/open_source_projects/edit.html.erb mode change 100644 => 100755 app/views/open_source_projects/index.html.erb mode change 100644 => 100755 app/views/open_source_projects/master_apply.html.erb mode change 100644 => 100755 app/views/open_source_projects/new.html.erb mode change 100644 => 100755 app/views/open_source_projects/show.html.erb mode change 100644 => 100755 app/views/open_source_projects/showbug.html.erb mode change 100644 => 100755 app/views/open_source_projects/showmemo.html.erb mode change 100644 => 100755 app/views/org_courses/create.js.erb mode change 100644 => 100755 app/views/org_courses/destroy.js.erb mode change 100644 => 100755 app/views/org_document_comments/_attachment.html.erb mode change 100644 => 100755 app/views/org_document_comments/_document_show_replies.html.erb mode change 100644 => 100755 app/views/org_document_comments/_form.html.erb mode change 100644 => 100755 app/views/org_document_comments/_new.html.erb mode change 100644 => 100755 app/views/org_document_comments/_reply_form.html.erb mode change 100644 => 100755 app/views/org_document_comments/_show_custom_org_document_comment.html.erb mode change 100644 => 100755 app/views/org_document_comments/_simple_ke_reply_form.html.erb mode change 100644 => 100755 app/views/org_document_comments/add_reply.js.erb mode change 100644 => 100755 app/views/org_document_comments/add_reply_in_doc.js.erb mode change 100644 => 100755 app/views/org_document_comments/destroy.js.erb mode change 100644 => 100755 app/views/org_document_comments/edit.html.erb mode change 100644 => 100755 app/views/org_document_comments/index.html.erb mode change 100644 => 100755 app/views/org_document_comments/new.html.erb mode change 100644 => 100755 app/views/org_document_comments/quote.js.erb mode change 100644 => 100755 app/views/org_document_comments/reply.js.erb mode change 100644 => 100755 app/views/org_document_comments/show.html.erb mode change 100644 => 100755 app/views/org_document_comments/show.js.erb mode change 100644 => 100755 app/views/org_document_comments/update.js.erb mode change 100644 => 100755 app/views/org_member/create.js.erb mode change 100644 => 100755 app/views/org_member/deleteOrgMember.js.erb mode change 100644 => 100755 app/views/org_member/destroy.js.erb mode change 100644 => 100755 app/views/org_member/org_member_autocomplete.js.erb mode change 100644 => 100755 app/views/org_member/org_member_paging.js.erb mode change 100644 => 100755 app/views/org_member/update.js.erb mode change 100644 => 100755 app/views/org_projects/create.js.erb mode change 100644 => 100755 app/views/org_projects/destroy.js.erb mode change 100644 => 100755 app/views/org_subfields/_resource.html.erb mode change 100644 => 100755 app/views/org_subfields/_show_details.html.erb mode change 100644 => 100755 app/views/org_subfields/_show_post_type.html.erb mode change 100644 => 100755 app/views/org_subfields/create.js.erb mode change 100644 => 100755 app/views/org_subfields/destroy.js.erb mode change 100644 => 100755 app/views/org_subfields/show.html.erb mode change 100644 => 100755 app/views/org_subfields/show.js.erb mode change 100644 => 100755 app/views/org_subfields/update.js.erb mode change 100644 => 100755 app/views/org_subfields/update_priority.js.erb mode change 100644 => 100755 app/views/org_subfields/update_status.js.erb mode change 100644 => 100755 app/views/org_subfields/update_sub_dir.js.erb mode change 100644 => 100755 app/views/organizations/_applied_organization_domain_tip.html.erb mode change 100644 => 100755 app/views/organizations/_join_course_menu.html.erb mode change 100644 => 100755 app/views/organizations/_join_project_menu.html.erb mode change 100644 => 100755 app/views/organizations/_link_subfield_more.html.erb mode change 100644 => 100755 app/views/organizations/_math_js.html.erb mode change 100644 => 100755 app/views/organizations/_new_org_avatar_form.html.erb mode change 100644 => 100755 app/views/organizations/_org2_footer.html.erb mode change 100644 => 100755 app/views/organizations/_org_activities.html.erb mode change 100644 => 100755 app/views/organizations/_org_avater_swap.html.erb mode change 100644 => 100755 app/views/organizations/_org_container.html.erb mode change 100644 => 100755 app/views/organizations/_org_content.html.erb mode change 100644 => 100755 app/views/organizations/_org_course_create.html.erb mode change 100644 => 100755 app/views/organizations/_org_course_homework.html.erb mode change 100644 => 100755 app/views/organizations/_org_course_message.html.erb mode change 100644 => 100755 app/views/organizations/_org_course_news.html.erb mode change 100644 => 100755 app/views/organizations/_org_course_poll.html.erb mode change 100644 => 100755 app/views/organizations/_org_custom_admin.html.erb mode change 100644 => 100755 app/views/organizations/_org_custom_header.html.erb mode change 100644 => 100755 app/views/organizations/_org_custom_left1.html.erb mode change 100644 => 100755 app/views/organizations/_org_custom_left2.html.erb mode change 100644 => 100755 app/views/organizations/_org_custom_left3.html.erb mode change 100644 => 100755 app/views/organizations/_org_custom_right1.html.erb mode change 100644 => 100755 app/views/organizations/_org_custom_right2.html.erb mode change 100644 => 100755 app/views/organizations/_org_custom_right3.html.erb mode change 100644 => 100755 app/views/organizations/_org_document_post_reply.html.erb mode change 100644 => 100755 app/views/organizations/_org_field_menu.html.erb mode change 100644 => 100755 app/views/organizations/_org_left_subfield_list.html.erb mode change 100644 => 100755 app/views/organizations/_org_logined_header.html.erb mode change 100644 => 100755 app/views/organizations/_org_member_list.html.erb mode change 100644 => 100755 app/views/organizations/_org_members.html.erb mode change 100644 => 100755 app/views/organizations/_org_message_post_reply.html.erb mode change 100644 => 100755 app/views/organizations/_org_new_course_act_list.html.erb mode change 100644 => 100755 app/views/organizations/_org_new_course_create.html.erb mode change 100644 => 100755 app/views/organizations/_org_new_course_homework.html.erb mode change 100644 => 100755 app/views/organizations/_org_new_course_message.html.erb mode change 100644 => 100755 app/views/organizations/_org_new_course_news.html.erb mode change 100644 => 100755 app/views/organizations/_org_new_course_pic.html.erb mode change 100644 => 100755 app/views/organizations/_org_new_course_poll.html.erb mode change 100644 => 100755 app/views/organizations/_org_new_forum.html.erb mode change 100644 => 100755 app/views/organizations/_org_new_forum_list.html.erb mode change 100644 => 100755 app/views/organizations/_org_new_forum_pic.html.erb mode change 100644 => 100755 app/views/organizations/_org_new_forum_reply.html.erb mode change 100644 => 100755 app/views/organizations/_org_new_project_act_list.html.erb mode change 100644 => 100755 app/views/organizations/_org_new_project_create.html.erb mode change 100644 => 100755 app/views/organizations/_org_new_project_issues.html.erb mode change 100644 => 100755 app/views/organizations/_org_new_project_message.html.erb mode change 100644 => 100755 app/views/organizations/_org_new_project_pic.html.erb mode change 100644 => 100755 app/views/organizations/_org_new_resource.html.erb mode change 100644 => 100755 app/views/organizations/_org_project_activities.html.erb mode change 100644 => 100755 app/views/organizations/_org_project_issue.html.erb mode change 100644 => 100755 app/views/organizations/_org_students_list.html.erb mode change 100644 => 100755 app/views/organizations/_org_subdomain.html.erb mode change 100644 => 100755 app/views/organizations/_org_subfield_leftD.html.erb mode change 100644 => 100755 app/views/organizations/_org_subfield_leftD_default.html.erb mode change 100644 => 100755 app/views/organizations/_org_subfield_leftM1.html.erb mode change 100644 => 100755 app/views/organizations/_org_subfield_leftM1_default.html.erb mode change 100644 => 100755 app/views/organizations/_org_subfield_leftM2.html.erb mode change 100644 => 100755 app/views/organizations/_org_subfield_leftM2_default.html.erb mode change 100644 => 100755 app/views/organizations/_org_subfield_leftMD.html.erb mode change 100644 => 100755 app/views/organizations/_org_subfield_leftMD_default.html.erb mode change 100644 => 100755 app/views/organizations/_org_subfield_leftT.html.erb mode change 100644 => 100755 app/views/organizations/_org_subfield_leftT_default.html.erb mode change 100644 => 100755 app/views/organizations/_org_subfield_message.html.erb mode change 100644 => 100755 app/views/organizations/_org_subfield_news.html.erb mode change 100644 => 100755 app/views/organizations/_org_subfield_rightD.html.erb mode change 100644 => 100755 app/views/organizations/_org_subfield_rightM.html.erb mode change 100644 => 100755 app/views/organizations/_org_subfield_rightM2.html.erb mode change 100644 => 100755 app/views/organizations/_org_subfield_rightT.html.erb mode change 100644 => 100755 app/views/organizations/_org_subfield_rightT_default.html.erb mode change 100644 => 100755 app/views/organizations/_org_teachers_list.html.erb mode change 100644 => 100755 app/views/organizations/_organization_content_extension.html.erb mode change 100644 => 100755 app/views/organizations/_organization_message_ajax_tip.html.erb mode change 100644 => 100755 app/views/organizations/_project_create.html.erb mode change 100644 => 100755 app/views/organizations/_project_message.html.erb mode change 100644 => 100755 app/views/organizations/_setting_excellent_students.html.erb mode change 100644 => 100755 app/views/organizations/_setting_excellent_teachers.html.erb mode change 100644 => 100755 app/views/organizations/_show_custom.html.erb mode change 100644 => 100755 app/views/organizations/_show_custom_org_subfield.html.erb mode change 100644 => 100755 app/views/organizations/_show_home_page.html.erb mode change 100644 => 100755 app/views/organizations/_show_org_document.html.erb mode change 100644 => 100755 app/views/organizations/_show_students.html.erb mode change 100644 => 100755 app/views/organizations/_show_teachers.html.erb mode change 100644 => 100755 app/views/organizations/_show_type2.html.erb mode change 100644 => 100755 app/views/organizations/_subfield_list.html.erb mode change 100644 => 100755 app/views/organizations/_subfield_sub_domains_list.html.erb mode change 100644 => 100755 app/views/organizations/_unlogged_tip.js.erb mode change 100644 => 100755 app/views/organizations/acts.html.erb mode change 100644 => 100755 app/views/organizations/agree_apply_subdomain.js.erb mode change 100644 => 100755 app/views/organizations/apply_subdomain.js.erb mode change 100644 => 100755 app/views/organizations/autocomplete_search.js.erb mode change 100644 => 100755 app/views/organizations/cancel_homepage.js.erb mode change 100644 => 100755 app/views/organizations/check_uniq.js.erb mode change 100644 => 100755 app/views/organizations/check_uniq_domain.js.erb mode change 100644 => 100755 app/views/organizations/courses.html.erb mode change 100644 => 100755 app/views/organizations/courses.js.erb mode change 100644 => 100755 app/views/organizations/create.js.erb mode change 100644 => 100755 app/views/organizations/destroy.js.erb mode change 100644 => 100755 app/views/organizations/edit.html.erb mode change 100644 => 100755 app/views/organizations/hide_org_subfield.js.erb mode change 100644 => 100755 app/views/organizations/join_course_menu.js.erb mode change 100644 => 100755 app/views/organizations/join_courses.js.erb mode change 100644 => 100755 app/views/organizations/join_project_menu.js.erb mode change 100644 => 100755 app/views/organizations/join_projects.js.erb mode change 100644 => 100755 app/views/organizations/members.html.erb mode change 100644 => 100755 app/views/organizations/more_org_courses.js.erb mode change 100644 => 100755 app/views/organizations/more_org_projects.js.erb mode change 100644 => 100755 app/views/organizations/more_org_submains.js.erb mode change 100644 => 100755 app/views/organizations/new.html.erb mode change 100644 => 100755 app/views/organizations/org_resources_subfield.js.erb mode change 100644 => 100755 app/views/organizations/org_subfield_message_edit.html.erb mode change 100644 => 100755 app/views/organizations/org_subfield_rightT_default.html.erb mode change 100644 => 100755 app/views/organizations/projects.html.erb mode change 100644 => 100755 app/views/organizations/projects.js.erb mode change 100644 => 100755 app/views/organizations/refused_apply_subdomain.js.erb mode change 100644 => 100755 app/views/organizations/reject_apply_subdomain.js.erb mode change 100644 => 100755 app/views/organizations/reset_excellent_student.js.erb mode change 100644 => 100755 app/views/organizations/reset_excellent_teacher.js.erb mode change 100644 => 100755 app/views/organizations/search_courses.js.erb mode change 100644 => 100755 app/views/organizations/search_projects.js.erb mode change 100644 => 100755 app/views/organizations/set_excellent_student.js.erb mode change 100644 => 100755 app/views/organizations/set_excellent_teacher.js.erb mode change 100644 => 100755 app/views/organizations/set_homepage.js.erb mode change 100644 => 100755 app/views/organizations/setting.html.erb mode change 100644 => 100755 app/views/organizations/show.html.erb mode change 100644 => 100755 app/views/organizations/show.js.erb mode change 100644 => 100755 app/views/organizations/show_org_subfield.js.erb mode change 100644 => 100755 app/views/organizations/students.html.erb mode change 100644 => 100755 app/views/organizations/students.js.erb mode change 100644 => 100755 app/views/organizations/teacher_search.js.erb mode change 100644 => 100755 app/views/organizations/teachers.html.erb mode change 100644 => 100755 app/views/organizations/teachers.js.erb mode change 100644 => 100755 app/views/organizations/update_field_by_admin.js.erb mode change 100644 => 100755 app/views/poll/_alert.html.erb mode change 100644 => 100755 app/views/poll/_cancel_poll.html.erb mode change 100644 => 100755 app/views/poll/_choice_show.html.erb mode change 100644 => 100755 app/views/poll/_commit_alert.html.erb mode change 100644 => 100755 app/views/poll/_edit_MC.html.erb mode change 100644 => 100755 app/views/poll/_edit_MCQ.html.erb mode change 100644 => 100755 app/views/poll/_edit_form.html.erb mode change 100644 => 100755 app/views/poll/_edit_head.html.erb mode change 100644 => 100755 app/views/poll/_edit_mulit.html.erb mode change 100644 => 100755 app/views/poll/_edit_single.html.erb mode change 100644 => 100755 app/views/poll/_end_notice.html.erb mode change 100644 => 100755 app/views/poll/_fresh_about.html mode change 100644 => 100755 app/views/poll/_fresh_write.html mode change 100644 => 100755 app/views/poll/_multi_answers.html.erb mode change 100644 => 100755 app/views/poll/_new_MC.html.erb mode change 100644 => 100755 app/views/poll/_new_MCQ.html.erb mode change 100644 => 100755 app/views/poll/_new_head.html.erb mode change 100644 => 100755 app/views/poll/_new_mulit.html.erb mode change 100644 => 100755 app/views/poll/_new_question.html.erb mode change 100644 => 100755 app/views/poll/_new_single.html.erb mode change 100644 => 100755 app/views/poll/_other_poll.html.erb mode change 100644 => 100755 app/views/poll/_poll.html.erb mode change 100644 => 100755 app/views/poll/_poll_content.html.erb mode change 100644 => 100755 app/views/poll/_poll_deal_btn.html.erb mode change 100644 => 100755 app/views/poll/_poll_form.html.erb mode change 100644 => 100755 app/views/poll/_poll_index_tab.html.erb mode change 100644 => 100755 app/views/poll/_poll_list.html.erb mode change 100644 => 100755 app/views/poll/_poll_question.html.erb mode change 100644 => 100755 app/views/poll/_poll_republish.html.erb mode change 100644 => 100755 app/views/poll/_poll_save.html.erb mode change 100644 => 100755 app/views/poll/_poll_setting.html.erb mode change 100644 => 100755 app/views/poll/_poll_show.html.erb mode change 100644 => 100755 app/views/poll/_poll_statistics_result.html.erb mode change 100644 => 100755 app/views/poll/_poll_submit.html.erb mode change 100644 => 100755 app/views/poll/_poll_tool_bar.html.erb mode change 100644 => 100755 app/views/poll/_polls_list.html.erb mode change 100644 => 100755 app/views/poll/_publish_notice.html.erb mode change 100644 => 100755 app/views/poll/_quiz_answers.html.erb mode change 100644 => 100755 app/views/poll/_select_poll_list.html.erb mode change 100644 => 100755 app/views/poll/_show_MC.html.erb mode change 100644 => 100755 app/views/poll/_show_MCQ.html.erb mode change 100644 => 100755 app/views/poll/_show_MCQ_result.html.erb mode change 100644 => 100755 app/views/poll/_show_MC_result.html.erb mode change 100644 => 100755 app/views/poll/_show_head.html.erb mode change 100644 => 100755 app/views/poll/_show_mulit.html.erb mode change 100644 => 100755 app/views/poll/_show_mulit_result.html.erb mode change 100644 => 100755 app/views/poll/_show_single.html.erb mode change 100644 => 100755 app/views/poll/_show_single_result.html.erb mode change 100644 => 100755 app/views/poll/_student_poll.html.erb mode change 100644 => 100755 app/views/poll/_total_questions_score.html.erb mode change 100644 => 100755 app/views/poll/add_answer.html.erb mode change 100644 => 100755 app/views/poll/add_to_exercise_bank.js.erb mode change 100644 => 100755 app/views/poll/commit_answer.js.erb mode change 100644 => 100755 app/views/poll/commit_poll.js.erb mode change 100644 => 100755 app/views/poll/create.js.erb mode change 100644 => 100755 app/views/poll/create_poll_question.js.erb mode change 100644 => 100755 app/views/poll/delete_poll_question.js.erb mode change 100644 => 100755 app/views/poll/destroy.js.erb mode change 100644 => 100755 app/views/poll/edit.html.erb mode change 100644 => 100755 app/views/poll/end_notice.js.erb mode change 100644 => 100755 app/views/poll/import_poll.js.erb mode change 100644 => 100755 app/views/poll/index.html.erb mode change 100644 => 100755 app/views/poll/index.js.erb mode change 100644 => 100755 app/views/poll/new.html.erb mode change 100644 => 100755 app/views/poll/other_poll.js.erb mode change 100644 => 100755 app/views/poll/poll_result.html.erb mode change 100644 => 100755 app/views/poll/publish_notice.js.erb mode change 100644 => 100755 app/views/poll/save_poll.js.erb mode change 100644 => 100755 app/views/poll/set_public.js.erb mode change 100644 => 100755 app/views/poll/show.html.erb mode change 100644 => 100755 app/views/poll/statistics_result.html.erb mode change 100644 => 100755 app/views/poll/statistics_result.js.erb mode change 100644 => 100755 app/views/poll/student_poll_list.html.erb mode change 100644 => 100755 app/views/poll/student_poll_list.js.erb mode change 100644 => 100755 app/views/poll/update.js.erb mode change 100644 => 100755 app/views/poll/update_poll_question.js.erb mode change 100644 => 100755 app/views/poll/update_question_num.js.erb mode change 100644 => 100755 app/views/praise_tread/_activity_praise.html.erb mode change 100644 => 100755 app/views/praise_tread/_edu_praise.html.erb mode change 100644 => 100755 app/views/praise_tread/_praise.html.erb mode change 100644 => 100755 app/views/praise_tread/_praise_tread.html.erb mode change 100644 => 100755 app/views/praise_tread/_tread.html.erb mode change 100644 => 100755 app/views/praise_tread/praise_minus.js.erb mode change 100644 => 100755 app/views/praise_tread/praise_plus.js.erb mode change 100644 => 100755 app/views/praise_tread/tread_minus.js.erb mode change 100644 => 100755 app/views/praise_tread/tread_plus.js.erb mode change 100644 => 100755 app/views/previews/issue.html.erb mode change 100644 => 100755 app/views/projects/Copy of show.html.erb mode change 100644 => 100755 app/views/projects/_act_attachments.html.erb mode change 100644 => 100755 app/views/projects/_act_issues.html.erb mode change 100644 => 100755 app/views/projects/_act_messages.html.erb mode change 100644 => 100755 app/views/projects/_act_training_tasks.html.erb mode change 100644 => 100755 app/views/projects/_applied_project.html.erb mode change 100644 => 100755 app/views/projects/_applied_status.html.erb mode change 100644 => 100755 app/views/projects/_attachment_acts.html.erb mode change 100644 => 100755 app/views/projects/_code_submit_score_index.html.erb mode change 100644 => 100755 app/views/projects/_comment_reply_detail.html.erb mode change 100644 => 100755 app/views/projects/_course.html.erb mode change 100644 => 100755 app/views/projects/_delete_member_pop.html.erb mode change 100644 => 100755 app/views/projects/_development_group.html.erb mode change 100644 => 100755 app/views/projects/_edit.html.erb mode change 100644 => 100755 app/views/projects/_file_score_index.html.erb mode change 100644 => 100755 app/views/projects/_form.html.erb mode change 100644 => 100755 app/views/projects/_form_new.html.erb mode change 100644 => 100755 app/views/projects/_friend_group.html.erb mode change 100644 => 100755 app/views/projects/_history.html.erb mode change 100644 => 100755 app/views/projects/_homeworkupload.html.erb mode change 100644 => 100755 app/views/projects/_homeworkupload_homeworkfile.html.erb mode change 100644 => 100755 app/views/projects/_homeworkupload_homeworkproject.html.erb mode change 100644 => 100755 app/views/projects/_invite_code.html.erb mode change 100644 => 100755 app/views/projects/_issue_score_index.html.erb mode change 100644 => 100755 app/views/projects/_join_project.html.erb mode change 100644 => 100755 app/views/projects/_journal_comment_reply.html.erb mode change 100644 => 100755 app/views/projects/_member_div.html.erb mode change 100644 => 100755 app/views/projects/_member_list.html.erb mode change 100644 => 100755 app/views/projects/_members_box.html.erb mode change 100644 => 100755 app/views/projects/_new_homework.html.erb mode change 100644 => 100755 app/views/projects/_new_join.html.erb mode change 100644 => 100755 app/views/projects/_new_respond.html.erb mode change 100644 => 100755 app/views/projects/_newproject_show.html.erb mode change 100644 => 100755 app/views/projects/_news_score_index.html.erb mode change 100644 => 100755 app/views/projects/_no_data.html.erb mode change 100644 => 100755 app/views/projects/_project._attachment.html.erb mode change 100644 => 100755 app/views/projects/_project.html.erb mode change 100644 => 100755 app/views/projects/_project_activities.html.erb mode change 100644 => 100755 app/views/projects/_project_attachment.html.erb mode change 100644 => 100755 app/views/projects/_project_comment_reply_detail.html.erb mode change 100644 => 100755 app/views/projects/_project_commit.html.erb mode change 100644 => 100755 app/views/projects/_project_create.html.erb mode change 100644 => 100755 app/views/projects/_project_intro_content.html.erb mode change 100644 => 100755 app/views/projects/_project_issue_comments_reply.html.erb mode change 100644 => 100755 app/views/projects/_project_issue_comments_reply_detail.html.erb mode change 100644 => 100755 app/views/projects/_project_issue_contents.html.erb mode change 100644 => 100755 app/views/projects/_project_issue_detail.html.erb mode change 100644 => 100755 app/views/projects/_project_issue_expand_show.html.erb mode change 100644 => 100755 app/views/projects/_project_issue_reply.html.erb mode change 100644 => 100755 app/views/projects/_project_journal_comment_reply.html.erb mode change 100644 => 100755 app/views/projects/_project_jours.html.erb mode change 100644 => 100755 app/views/projects/_project_member_list.html.erb mode change 100644 => 100755 app/views/projects/_project_members.html.erb mode change 100644 => 100755 app/views/projects/_project_message_contents.html.erb mode change 100644 => 100755 app/views/projects/_project_message_post_reply.html.erb mode change 100644 => 100755 app/views/projects/_project_message_replies.html.erb mode change 100644 => 100755 app/views/projects/_project_news.html.erb mode change 100644 => 100755 app/views/projects/_project_news_replies.html.erb mode change 100644 => 100755 app/views/projects/_project_reply_banner.html.erb mode change 100644 => 100755 app/views/projects/_project_score_index.html.erb mode change 100644 => 100755 app/views/projects/_projects_topic_score_index.html.erb mode change 100644 => 100755 app/views/projects/_regested.html.erb mode change 100644 => 100755 app/views/projects/_rep_static.html.erb mode change 100644 => 100755 app/views/projects/_reply_to.html.erb mode change 100644 => 100755 app/views/projects/_reposistory_destory_pop.html.erb mode change 100644 => 100755 app/views/projects/_research_team.html.erb mode change 100644 => 100755 app/views/projects/_show_projects_score.html.erb mode change 100644 => 100755 app/views/projects/_show_unlogged.html.erb mode change 100644 => 100755 app/views/projects/_tools_expand.html.erb mode change 100644 => 100755 app/views/projects/_tracker_project.html.erb mode change 100644 => 100755 app/views/projects/_training_child_project_exec.html.erb mode change 100644 => 100755 app/views/projects/_upload_project_files_list.html.erb mode change 100644 => 100755 app/views/projects/_upload_project_files_on_navbar.html.erb mode change 100644 => 100755 app/views/projects/add_script.js.erb mode change 100644 => 100755 app/views/projects/change_project_type.html.erb mode change 100644 => 100755 app/views/projects/code_submit_score_index.js.erb mode change 100644 => 100755 app/views/projects/copy.html.erb mode change 100644 => 100755 app/views/projects/course.html.erb mode change 100644 => 100755 app/views/projects/create.js.erb mode change 100644 => 100755 app/views/projects/delete_member_pop.js.erb mode change 100644 => 100755 app/views/projects/destroy.html.erb mode change 100644 => 100755 app/views/projects/destroy.js.erb mode change 100644 => 100755 app/views/projects/destroy_repository.js.erb mode change 100644 => 100755 app/views/projects/enshrine.html.erb mode change 100644 => 100755 app/views/projects/exit_project.js.erb mode change 100644 => 100755 app/views/projects/feedback.html.erb mode change 100644 => 100755 app/views/projects/file.html.erb mode change 100644 => 100755 app/views/projects/file_score_index.js.erb mode change 100644 => 100755 app/views/projects/files_tags.html.erb mode change 100644 => 100755 app/views/projects/finishcourse.js.erb mode change 100644 => 100755 app/views/projects/focus.html.erb mode change 100644 => 100755 app/views/projects/forked_pop.js.erb mode change 100644 => 100755 app/views/projects/index.api.rsb mode change 100644 => 100755 app/views/projects/index.html.erb mode change 100644 => 100755 app/views/projects/investor.html.erb mode change 100644 => 100755 app/views/projects/invite_members.html.erb mode change 100644 => 100755 app/views/projects/invite_members_by_mail.html.erb mode change 100644 => 100755 app/views/projects/issue.html.erb mode change 100644 => 100755 app/views/projects/issue_score_index.js.erb mode change 100644 => 100755 app/views/projects/join_project.js.erb mode change 100644 => 100755 app/views/projects/list_members.html.erb mode change 100644 => 100755 app/views/projects/member.html.erb mode change 100644 => 100755 app/views/projects/member.js.erb mode change 100644 => 100755 app/views/projects/member_forked.html.erb mode change 100644 => 100755 app/views/projects/mission.html.erb mode change 100644 => 100755 app/views/projects/modules.js.erb mode change 100644 => 100755 app/views/projects/new.html.erb mode change 100644 => 100755 app/views/projects/new_join.js.erb mode change 100644 => 100755 app/views/projects/news_score_index.js.erb mode change 100644 => 100755 app/views/projects/on.html.erb mode change 100644 => 100755 app/views/projects/online_dev.html.erb mode change 100644 => 100755 app/views/projects/project_respond.html.erb mode change 100644 => 100755 app/views/projects/project_respond.js.erb mode change 100644 => 100755 app/views/projects/project_score_index.js.erb mode change 100644 => 100755 app/views/projects/project_watcherlist.html.erb mode change 100644 => 100755 app/views/projects/projects_topic_score_index.js.erb mode change 100644 => 100755 app/views/projects/search.html.erb mode change 100644 => 100755 app/views/projects/search_none_user.js.erb mode change 100644 => 100755 app/views/projects/search_public_orgs_not_in_project.js.erb mode change 100644 => 100755 app/views/projects/send_mail_to_member.js.erb mode change 100644 => 100755 app/views/projects/set_public_or_private.js.erb mode change 100644 => 100755 app/views/projects/settings.html.erb mode change 100644 => 100755 app/views/projects/settings/_activities.html.erb mode change 100644 => 100755 app/views/projects/settings/_added_orgs.html.erb mode change 100644 => 100755 app/views/projects/settings/_boards.html.erb mode change 100644 => 100755 app/views/projects/settings/_issue_categories.html.erb mode change 100644 => 100755 app/views/projects/settings/_join_org.html.erb mode change 100644 => 100755 app/views/projects/settings/_members.html.erb mode change 100644 => 100755 app/views/projects/settings/_members_list.html.erb mode change 100644 => 100755 app/views/projects/settings/_modules.html.erb mode change 100644 => 100755 app/views/projects/settings/_new_activities.html.erb mode change 100644 => 100755 app/views/projects/settings/_new_edit.html.erb mode change 100644 => 100755 app/views/projects/settings/_new_issue_categories.html.erb mode change 100644 => 100755 app/views/projects/settings/_new_members.html.erb mode change 100644 => 100755 app/views/projects/settings/_new_modules.html.erb mode change 100644 => 100755 app/views/projects/settings/_new_repositories.html.erb mode change 100644 => 100755 app/views/projects/settings/_new_trainig_task.html.erb mode change 100644 => 100755 app/views/projects/settings/_new_versions.html.erb mode change 100644 => 100755 app/views/projects/settings/_new_versions_form.html.erb mode change 100644 => 100755 app/views/projects/settings/_rep_forge.html.erb mode change 100644 => 100755 app/views/projects/settings/_rep_gitlab.html.erb mode change 100644 => 100755 app/views/projects/settings/_repositories.html.erb mode change 100644 => 100755 app/views/projects/settings/_training_project_exec_tip.html.erb mode change 100644 => 100755 app/views/projects/settings/_training_projects_filter_tip.html.erb mode change 100644 => 100755 app/views/projects/settings/_versions.html.erb mode change 100644 => 100755 app/views/projects/settings/_wiki.html.erb mode change 100644 => 100755 app/views/projects/share.html.erb mode change 100644 => 100755 app/views/projects/show-old.html.erb mode change 100644 => 100755 app/views/projects/show.api.rsb mode change 100644 => 100755 app/views/projects/show.html.erb mode change 100644 => 100755 app/views/projects/show.js.erb mode change 100644 => 100755 app/views/projects/show_new.html.erb mode change 100644 => 100755 app/views/projects/show_projects_score.js.erb mode change 100644 => 100755 app/views/projects/statistics.html.erb mode change 100644 => 100755 app/views/projects/store_mine.html.erb mode change 100644 => 100755 app/views/projects/store_mine.js.erb mode change 100644 => 100755 app/views/projects/task_execute.js.erb mode change 100644 => 100755 app/views/projects/training_chiled_project_exec.js.erb mode change 100644 => 100755 app/views/projects/training_project_execute.js.erb mode change 100644 => 100755 app/views/projects/training_project_update.js.erb mode change 100644 => 100755 app/views/projects/training_task_status.js.erb mode change 100644 => 100755 app/views/projects/watcherlist.html.erb mode change 100644 => 100755 app/views/pull_requests/_error_message.html.erb mode change 100644 => 100755 app/views/pull_requests/_form.html.erb mode change 100644 => 100755 app/views/pull_requests/_new.html.erb mode change 100644 => 100755 app/views/pull_requests/_pull_request_changes.html.erb mode change 100644 => 100755 app/views/pull_requests/_pull_request_comments.html.erb mode change 100644 => 100755 app/views/pull_requests/_pull_request_commits.html.erb mode change 100644 => 100755 app/views/pull_requests/_pull_request_container.html.erb mode change 100644 => 100755 app/views/pull_requests/_pull_requests_list.html.erb mode change 100644 => 100755 app/views/pull_requests/_show.html.erb mode change 100644 => 100755 app/views/pull_requests/_show_container.html.erb mode change 100644 => 100755 app/views/pull_requests/_tip.html.erb mode change 100644 => 100755 app/views/pull_requests/accept_pull_request.js.erb mode change 100644 => 100755 app/views/pull_requests/create.html.erb mode change 100644 => 100755 app/views/pull_requests/create.js.erb mode change 100644 => 100755 app/views/pull_requests/index.html.erb mode change 100644 => 100755 app/views/pull_requests/index.js.erb mode change 100644 => 100755 app/views/pull_requests/new.html.erb mode change 100644 => 100755 app/views/pull_requests/new.js.erb mode change 100644 => 100755 app/views/pull_requests/pull_request_changes.js.erb mode change 100644 => 100755 app/views/pull_requests/pull_request_comments.js.erb mode change 100644 => 100755 app/views/pull_requests/pull_request_commits.js.erb mode change 100644 => 100755 app/views/pull_requests/show.html.erb mode change 100644 => 100755 app/views/pull_requests/show.js.erb mode change 100644 => 100755 app/views/quality_analysis/_console_output.html.erb mode change 100644 => 100755 app/views/quality_analysis/_edit.html.erb mode change 100644 => 100755 app/views/quality_analysis/_header.html.erb mode change 100644 => 100755 app/views/quality_analysis/_hightchars.html.erb mode change 100644 => 100755 app/views/quality_analysis/_result_list.html.erb mode change 100644 => 100755 app/views/quality_analysis/_show.html.erb mode change 100644 => 100755 app/views/quality_analysis/create.html.erb mode change 100644 => 100755 app/views/quality_analysis/create.js.erb mode change 100644 => 100755 app/views/quality_analysis/edit.js.erb mode change 100644 => 100755 app/views/quality_analysis/error_list.html.erb mode change 100644 => 100755 app/views/quality_analysis/index.html.erb mode change 100644 => 100755 app/views/quality_analysis/show.html.erb mode change 100644 => 100755 app/views/queries/_columns.html.erb mode change 100644 => 100755 app/views/queries/_filters.html.erb mode change 100644 => 100755 app/views/queries/_form.html.erb mode change 100644 => 100755 app/views/queries/edit.html.erb mode change 100644 => 100755 app/views/queries/index.api.rsb mode change 100644 => 100755 app/views/queries/index.html.erb mode change 100644 => 100755 app/views/queries/new.html.erb mode change 100644 => 100755 app/views/question_banks/_task_publish.html.erb mode change 100644 => 100755 app/views/question_banks/choose_user_course.js.erb mode change 100644 => 100755 app/views/question_banks/destroy.js.erb mode change 100644 => 100755 app/views/question_banks/destroy_all.js.erb mode change 100644 => 100755 app/views/question_banks/index.html.erb mode change 100644 => 100755 app/views/question_banks/index.js.erb mode change 100644 => 100755 app/views/question_banks/publish_task.js.erb mode change 100644 => 100755 app/views/question_banks/send_h_bank_to_course.js.erb mode change 100644 => 100755 app/views/question_banks/set_public.js.erb mode change 100644 => 100755 app/views/relative_memos/_reply_box.html.erb mode change 100644 => 100755 app/views/relative_memos/show.html.erb mode change 100644 => 100755 app/views/reports/_details.html.erb mode change 100644 => 100755 app/views/reports/_simple.html.erb mode change 100644 => 100755 app/views/reports/issue_report.html.erb mode change 100644 => 100755 app/views/reports/issue_report_details.html.erb mode change 100644 => 100755 app/views/repositories/_breadcrumbs.html.erb mode change 100644 => 100755 app/views/repositories/_change_diff.html.erb mode change 100644 => 100755 app/views/repositories/_commit_details.html.erb mode change 100644 => 100755 app/views/repositories/_dir_list.html.erb mode change 100644 => 100755 app/views/repositories/_dir_list_content.html.erb mode change 100644 => 100755 app/views/repositories/_forked_popbox.html.erb mode change 100644 => 100755 app/views/repositories/_form.html.erb mode change 100644 => 100755 app/views/repositories/_form_create.html.erb mode change 100644 => 100755 app/views/repositories/_latest_commit.html.erb mode change 100644 => 100755 app/views/repositories/_link_to_functions.html.erb mode change 100644 => 100755 app/views/repositories/_navigation.html.erb mode change 100644 => 100755 app/views/repositories/_quality_analysis.html.erb mode change 100644 => 100755 app/views/repositories/_related_issues.html.erb mode change 100644 => 100755 app/views/repositories/_revision_graph.html.erb mode change 100644 => 100755 app/views/repositories/_revisions.html.erb mode change 100644 => 100755 app/views/repositories/_shixun_breadcrumbs.html.erb mode change 100644 => 100755 app/views/repositories/_shixun_dir_list.html.erb mode change 100644 => 100755 app/views/repositories/_shixun_dir_list_content.html.erb mode change 100644 => 100755 app/views/repositories/_shixun_navigation.html.erb mode change 100644 => 100755 app/views/repositories/_summary.html.erb mode change 100644 => 100755 app/views/repositories/_top.html.erb mode change 100644 => 100755 app/views/repositories/add_related_issue.js.erb mode change 100644 => 100755 app/views/repositories/annotate.html.erb mode change 100644 => 100755 app/views/repositories/changes.html.erb mode change 100644 => 100755 app/views/repositories/commit_diff.html.erb mode change 100644 => 100755 app/views/repositories/commits.html.erb mode change 100644 => 100755 app/views/repositories/committers.html.erb mode change 100644 => 100755 app/views/repositories/diff.html.erb mode change 100644 => 100755 app/views/repositories/edit.html.erb mode change 100644 => 100755 app/views/repositories/entry.html.erb mode change 100644 => 100755 app/views/repositories/forked.js.erb mode change 100644 => 100755 app/views/repositories/new.html.erb mode change 100644 => 100755 app/views/repositories/new.js.erb mode change 100644 => 100755 app/views/repositories/newrepo.html.erb mode change 100644 => 100755 app/views/repositories/newrepo.js.erb mode change 100644 => 100755 app/views/repositories/quality_analyses.html.erb mode change 100644 => 100755 app/views/repositories/quality_analysis.js.erb mode change 100644 => 100755 app/views/repositories/remove_related_issue.js.erb mode change 100644 => 100755 app/views/repositories/revision.html.erb mode change 100644 => 100755 app/views/repositories/revisions.html.erb mode change 100644 => 100755 app/views/repositories/shixun_commit_diff.html.erb mode change 100644 => 100755 app/views/repositories/shixun_entry.html.erb mode change 100644 => 100755 app/views/repositories/shixun_show.html.erb mode change 100644 => 100755 app/views/repositories/show.html.erb mode change 100644 => 100755 app/views/repositories/stats.html.erb mode change 100644 => 100755 app/views/repositories/to_gitlab.html.erb mode change 100644 => 100755 app/views/roles/_form.html.erb mode change 100644 => 100755 app/views/roles/edit.html.erb mode change 100644 => 100755 app/views/roles/index.api.rsb mode change 100644 => 100755 app/views/roles/index.html.erb mode change 100644 => 100755 app/views/roles/new.html.erb mode change 100644 => 100755 app/views/roles/permissions.html.erb mode change 100644 => 100755 app/views/roles/show.api.rsb mode change 100644 => 100755 app/views/school/add_school.js.erb mode change 100644 => 100755 app/views/school/destroy.js.erb mode change 100644 => 100755 app/views/school/index.html.erb mode change 100644 => 100755 app/views/school/upload_logo.html.erb mode change 100644 => 100755 app/views/search/index.html.erb mode change 100644 => 100755 app/views/settings/_authentication.html.erb mode change 100644 => 100755 app/views/settings/_display.html.erb mode change 100644 => 100755 app/views/settings/_general.html.erb mode change 100644 => 100755 app/views/settings/_issues.html.erb mode change 100644 => 100755 app/views/settings/_mail_handler.html.erb mode change 100644 => 100755 app/views/settings/_notifications.html.erb mode change 100644 => 100755 app/views/settings/_projects.html.erb mode change 100644 => 100755 app/views/settings/_repositories.html.erb mode change 100644 => 100755 app/views/settings/edit.html.erb mode change 100644 => 100755 app/views/settings/hidden_courses.js.erb mode change 100644 => 100755 app/views/settings/hidden_non_project.js.erb mode change 100644 => 100755 app/views/settings/plugin.html.erb mode change 100644 => 100755 app/views/shares/_form.html.erb mode change 100644 => 100755 app/views/shares/edit.html.erb mode change 100644 => 100755 app/views/shares/index.html.erb mode change 100644 => 100755 app/views/shares/new.html.erb mode change 100644 => 100755 app/views/shares/show.html.erb mode change 100644 => 100755 app/views/shares/succ.html.erb mode change 100644 => 100755 app/views/shield_activities/create.js.erb mode change 100644 => 100755 app/views/shield_activities/show_acts.js.erb mode change 100644 => 100755 app/views/shield_wechat_messages/create.js.erb mode change 100644 => 100755 app/views/shield_wechat_messages/show_messages.js.erb mode change 100644 => 100755 app/views/shixuns/_achieve_ways.html.erb mode change 100644 => 100755 app/views/shixuns/_add_collaborators.html.erb mode change 100644 => 100755 app/views/shixuns/_add_collaborators_list.html.erb mode change 100644 => 100755 app/views/shixuns/_apply_publish_notice.html.erb mode change 100644 => 100755 app/views/shixuns/_apply_setnew.html.erb mode change 100644 => 100755 app/views/shixuns/_authority_pop.html.erb mode change 100644 => 100755 app/views/shixuns/_challenge_statistics_list.html.erb mode change 100644 => 100755 app/views/shixuns/_change_manager.html.erb mode change 100644 => 100755 app/views/shixuns/_collaborators_change_manager.html.erb mode change 100644 => 100755 app/views/shixuns/_collaborators_list.html.erb mode change 100644 => 100755 app/views/shixuns/_define_scenario.html.erb mode change 100644 => 100755 app/views/shixuns/_directory_file.html.erb mode change 100644 => 100755 app/views/shixuns/_entry_content.html.erb mode change 100644 => 100755 app/views/shixuns/_form.html.erb mode change 100644 => 100755 app/views/shixuns/_jenkins_error.js.erb mode change 100644 => 100755 app/views/shixuns/_monitor_tip.html.erb mode change 100644 => 100755 app/views/shixuns/_rank_cell.html.erb mode change 100644 => 100755 app/views/shixuns/_ranking_list_list.html.erb mode change 100644 => 100755 app/views/shixuns/_review_shixuns.html.erb mode change 100644 => 100755 app/views/shixuns/_search.html.erb mode change 100644 => 100755 app/views/shixuns/_search_course_list.html.erb mode change 100644 => 100755 app/views/shixuns/_send_shixuns.html.erb mode change 100644 => 100755 app/views/shixuns/_settings_challenges.html.erb mode change 100644 => 100755 app/views/shixuns/_settings_challenges_action_tip.html.erb mode change 100644 => 100755 app/views/shixuns/_settings_challenges_result_tip.html.erb mode change 100644 => 100755 app/views/shixuns/_settings_edit.html.erb mode change 100644 => 100755 app/views/shixuns/_settings_repository.html.erb mode change 100644 => 100755 app/views/shixuns/_settings_show.html.erb mode change 100644 => 100755 app/views/shixuns/_shixun_breadcrumbs.html.erb mode change 100644 => 100755 app/views/shixuns/_shixun_course_search.html.erb mode change 100644 => 100755 app/views/shixuns/_shixun_item.html.erb mode change 100644 => 100755 app/views/shixuns/_shixun_list.html.erb mode change 100644 => 100755 app/views/shixuns/_shixun_major_search.html.erb mode change 100644 => 100755 app/views/shixuns/_shixun_pob.html.erb mode change 100644 => 100755 app/views/shixuns/_shixun_reply.html.erb mode change 100644 => 100755 app/views/shixuns/_shixun_reply_detail.html.erb mode change 100644 => 100755 app/views/shixuns/_shixun_top.html.erb mode change 100644 => 100755 app/views/shixuns/_shixun_yx.html mode change 100644 => 100755 app/views/shixuns/_statistics_student_cell.html.erb mode change 100644 => 100755 app/views/shixuns/_statistics_student_list.html.erb mode change 100644 => 100755 app/views/shixuns/add_collaborators.js.erb mode change 100644 => 100755 app/views/shixuns/add_script.js.erb mode change 100644 => 100755 app/views/shixuns/apply_publish.js.erb mode change 100644 => 100755 app/views/shixuns/autocompletion.html.erb mode change 100644 => 100755 app/views/shixuns/challenge_statistics.html.erb mode change 100644 => 100755 app/views/shixuns/challenge_statistics.js.erb mode change 100644 => 100755 app/views/shixuns/change_manager.js.erb mode change 100644 => 100755 app/views/shixuns/collaborators.html.erb mode change 100644 => 100755 app/views/shixuns/collaborators.js.erb mode change 100644 => 100755 app/views/shixuns/collaborators_delete.js.erb mode change 100644 => 100755 app/views/shixuns/departments.js.erb mode change 100644 => 100755 app/views/shixuns/edit.html.erb mode change 100644 => 100755 app/views/shixuns/edit_md.html.erb mode change 100644 => 100755 app/views/shixuns/entry_edit.js.erb mode change 100644 => 100755 app/views/shixuns/entry_update.js.erb mode change 100644 => 100755 app/views/shixuns/fork_list.html.erb mode change 100644 => 100755 app/views/shixuns/game_webssh.html.erb mode change 100644 => 100755 app/views/shixuns/index.html.erb mode change 100644 => 100755 app/views/shixuns/index.js.erb mode change 100644 => 100755 app/views/shixuns/new.html.erb mode change 100644 => 100755 app/views/shixuns/operation.js.erb mode change 100644 => 100755 app/views/shixuns/propaedeutics.html.erb mode change 100644 => 100755 app/views/shixuns/publish.js.erb mode change 100644 => 100755 app/views/shixuns/qrcode.html.erb mode change 100644 => 100755 app/views/shixuns/qrcode.js.erb mode change 100644 => 100755 app/views/shixuns/ranking_list.html.erb mode change 100644 => 100755 app/views/shixuns/ranking_list.js.erb mode change 100644 => 100755 app/views/shixuns/search.js.erb mode change 100644 => 100755 app/views/shixuns/search_file_list.js.erb mode change 100644 => 100755 app/views/shixuns/search_user_courses.js.erb mode change 100644 => 100755 app/views/shixuns/settings.html.erb mode change 100644 => 100755 app/views/shixuns/settings.js.erb mode change 100644 => 100755 app/views/shixuns/shixun_discuss.html.erb mode change 100644 => 100755 app/views/shixuns/shixun_discuss.js.erb mode change 100644 => 100755 app/views/shixuns/shixun_job_create.js.erb mode change 100644 => 100755 app/views/shixuns/shixun_job_update.js.erb mode change 100644 => 100755 app/views/shixuns/shixun_members_added.js.erb mode change 100644 => 100755 app/views/shixuns/shixun_monitor.js.erb mode change 100644 => 100755 app/views/shixuns/show.html.erb mode change 100644 => 100755 app/views/shixuns/statistics.html.erb mode change 100644 => 100755 app/views/shixuns/statistics_students.html.erb mode change 100644 => 100755 app/views/shixuns/statistics_students.js.erb mode change 100644 => 100755 app/views/shixuns/trainee_list.html.erb mode change 100644 => 100755 app/views/shixuns/trainee_list.js.erb mode change 100644 => 100755 app/views/shixuns/update.js.erb mode change 100644 => 100755 app/views/shixuns/update_propaedeutics.html.erb mode change 100644 => 100755 app/views/softapplications/_form.html.erb mode change 100644 => 100755 app/views/softapplications/_list.html.erb mode change 100644 => 100755 app/views/softapplications/_message_history.erb mode change 100644 => 100755 app/views/softapplications/_new_message.erb mode change 100644 => 100755 app/views/softapplications/_pre_show.html.erb mode change 100644 => 100755 app/views/softapplications/back.js.erb mode change 100644 => 100755 app/views/softapplications/create.js.erb mode change 100644 => 100755 app/views/softapplications/create_message.js.erb mode change 100644 => 100755 app/views/softapplications/edit.html.erb mode change 100644 => 100755 app/views/softapplications/index.html.erb mode change 100644 => 100755 app/views/softapplications/more.js.erb mode change 100644 => 100755 app/views/softapplications/new.html.erb mode change 100644 => 100755 app/views/softapplications/new_message.js.erb mode change 100644 => 100755 app/views/softapplications/search.html.erb mode change 100644 => 100755 app/views/softapplications/search.js.erb mode change 100644 => 100755 app/views/softapplications/show.html.erb mode change 100644 => 100755 app/views/ssos/show.html.erb mode change 100644 => 100755 app/views/stages/_edit.html.erb mode change 100644 => 100755 app/views/stages/destroy.js.erb mode change 100644 => 100755 app/views/stages/down_position.js.erb mode change 100644 => 100755 app/views/stages/edit.js.erb mode change 100644 => 100755 app/views/stages/up_position.js.erb mode change 100644 => 100755 app/views/statistics/index.html.erb mode change 100644 => 100755 app/views/statistics/settings.html.erb mode change 100644 => 100755 app/views/stores/_search_bar.html.erb mode change 100644 => 100755 app/views/stores/index.html.erb mode change 100644 => 100755 app/views/stores/search.html.erb mode change 100644 => 100755 app/views/student_work/_add_group_member_block.html.erb mode change 100644 => 100755 app/views/student_work/_add_or_delete_member.html.erb mode change 100644 => 100755 app/views/student_work/_add_score_reply.html.erb mode change 100644 => 100755 app/views/student_work/_adjust_work_score.html.erb mode change 100644 => 100755 app/views/student_work/_alert_forbidden_anonymous.html.erb mode change 100644 => 100755 app/views/student_work/_change_project.html.erb mode change 100644 => 100755 app/views/student_work/_choose_group_member.html.erb mode change 100644 => 100755 app/views/student_work/_code_range.html.erb mode change 100644 => 100755 app/views/student_work/_code_review_results.html.erb mode change 100644 => 100755 app/views/student_work/_common_reply_box.html.erb mode change 100644 => 100755 app/views/student_work/_echart_of_shixun_skills.html.erb mode change 100644 => 100755 app/views/student_work/_evaluation_student_work.html.erb mode change 100644 => 100755 app/views/student_work/_evaluation_title.html.erb mode change 100644 => 100755 app/views/student_work/_evaluation_title_archive.html.erb mode change 100644 => 100755 app/views/student_work/_evaluation_un_common_title.html.erb mode change 100644 => 100755 app/views/student_work/_evaluation_un_common_work.html.erb mode change 100644 => 100755 app/views/student_work/_evaluation_un_group.html.erb mode change 100644 => 100755 app/views/student_work/_evaluation_un_group_member_work.html.erb mode change 100644 => 100755 app/views/student_work/_evaluation_un_group_title.html.erb mode change 100644 => 100755 app/views/student_work/_evaluation_un_group_work.html.erb mode change 100644 => 100755 app/views/student_work/_evaluation_un_pro_title.html.erb mode change 100644 => 100755 app/views/student_work/_evaluation_un_pro_work.html.erb mode change 100644 => 100755 app/views/student_work/_evaluation_un_shixun_title.html.erb mode change 100644 => 100755 app/views/student_work/_evaluation_un_shixun_work.html.erb mode change 100644 => 100755 app/views/student_work/_evaluation_un_title.html.erb mode change 100644 => 100755 app/views/student_work/_evaluation_un_title_archive.erb mode change 100644 => 100755 app/views/student_work/_evaluation_un_work.html.erb mode change 100644 => 100755 app/views/student_work/_evaluation_un_work_archive.html.erb mode change 100644 => 100755 app/views/student_work/_evaluation_work.html.erb mode change 100644 => 100755 app/views/student_work/_evaluation_work_archive.html.erb mode change 100644 => 100755 app/views/student_work/_group_member_search_list.html.erb mode change 100644 => 100755 app/views/student_work/_group_member_work.html.erb mode change 100644 => 100755 app/views/student_work/_has_commit_work.html.erb mode change 100644 => 100755 app/views/student_work/_homework_discuss_detail.html.erb mode change 100644 => 100755 app/views/student_work/_homework_explanation.html.erb mode change 100644 => 100755 app/views/student_work/_homework_post_brief.html.erb mode change 100644 => 100755 app/views/student_work/_homework_reply.html.erb mode change 100644 => 100755 app/views/student_work/_homework_reply_detail.html.erb mode change 100644 => 100755 app/views/student_work/_homework_setting.html.erb mode change 100644 => 100755 app/views/student_work/_import_excel_score.html.erb mode change 100644 => 100755 app/views/student_work/_jour_replay.html.erb mode change 100644 => 100755 app/views/student_work/_new_pro_student_work.html.erb mode change 100644 => 100755 app/views/student_work/_new_project.html.erb mode change 100644 => 100755 app/views/student_work/_new_student_work_alert.html.erb mode change 100644 => 100755 app/views/student_work/_no_teacher_score_notice.html.erb mode change 100644 => 100755 app/views/student_work/_praise_alert.html.erb mode change 100644 => 100755 app/views/student_work/_relate_project.html.erb mode change 100644 => 100755 app/views/student_work/_relate_projects.html.erb mode change 100644 => 100755 app/views/student_work/_review_table_div.html.erb mode change 100644 => 100755 app/views/student_work/_revise_attachment.html.erb mode change 100644 => 100755 app/views/student_work/_score_appeal_box.html.erb mode change 100644 => 100755 app/views/student_work/_set_score_rule.html.erb mode change 100644 => 100755 app/views/student_work/_set_score_rule_detail.html.erb mode change 100644 => 100755 app/views/student_work/_shixun_evaluate_details.html.erb mode change 100644 => 100755 app/views/student_work/_shixun_work_show.html.erb mode change 100644 => 100755 app/views/student_work/_student_work.html.erb mode change 100644 => 100755 app/views/student_work/_student_work_attachment_form.html.erb mode change 100644 => 100755 app/views/student_work/_student_work_list.html.erb mode change 100644 => 100755 app/views/student_work/_student_work_praise.html.erb mode change 100644 => 100755 app/views/student_work/_student_work_replies.html.erb mode change 100644 => 100755 app/views/student_work/_student_work_score.html.erb mode change 100644 => 100755 app/views/student_work/_student_work_score_div.html.erb mode change 100644 => 100755 app/views/student_work/_student_work_score_records.html.erb mode change 100644 => 100755 app/views/student_work/_upload_attachment.html.erb mode change 100644 => 100755 app/views/student_work/_work_attachments.html.erb mode change 100644 => 100755 app/views/student_work/_work_attachments_status.html.erb mode change 100644 => 100755 app/views/student_work/_work_edit_information.html.erb mode change 100644 => 100755 app/views/student_work/_work_information.html.erb mode change 100644 => 100755 app/views/student_work/add_comments_to_work.js.erb mode change 100644 => 100755 app/views/student_work/add_group_member_block.js.erb mode change 100644 => 100755 app/views/student_work/add_score.js.erb mode change 100644 => 100755 app/views/student_work/add_score_reply.js.erb mode change 100644 => 100755 app/views/student_work/add_ultimate_score.js.erb mode change 100644 => 100755 app/views/student_work/adjust_review_score.js.erb mode change 100644 => 100755 app/views/student_work/adjust_score.js.erb mode change 100644 => 100755 app/views/student_work/alert_appeal_box.js.erb mode change 100644 => 100755 app/views/student_work/appeal_anonymous_score.js.erb mode change 100644 => 100755 app/views/student_work/cancel_relate_project.js.erb mode change 100644 => 100755 app/views/student_work/change_project.js.erb mode change 100644 => 100755 app/views/student_work/code_review_results.js.erb mode change 100644 => 100755 app/views/student_work/commit_summary.html.erb mode change 100644 => 100755 app/views/student_work/create.js.erb mode change 100644 => 100755 app/views/student_work/deal_appeal_score.js.erb mode change 100644 => 100755 app/views/student_work/delete_score_comment.js.erb mode change 100644 => 100755 app/views/student_work/destroy_score.js.erb mode change 100644 => 100755 app/views/student_work/destroy_score_reply.js.erb mode change 100644 => 100755 app/views/student_work/edit.html.erb mode change 100644 => 100755 app/views/student_work/forbidden_anonymous_comment.js.erb mode change 100644 => 100755 app/views/student_work/hide_score_detail.js.erb mode change 100644 => 100755 app/views/student_work/homework_discuss.js.erb mode change 100644 => 100755 app/views/student_work/homework_setting.js.erb mode change 100644 => 100755 app/views/student_work/import_score.js.erb mode change 100644 => 100755 app/views/student_work/index.html.erb mode change 100644 => 100755 app/views/student_work/index.js.erb mode change 100644 => 100755 app/views/student_work/new.html.erb mode change 100644 => 100755 app/views/student_work/new_student_work_project.js.erb mode change 100644 => 100755 app/views/student_work/praise_student_work.js.erb mode change 100644 => 100755 app/views/student_work/relate_myshixun.js.erb mode change 100644 => 100755 app/views/student_work/retry_work.js.erb mode change 100644 => 100755 app/views/student_work/revise_attachment.js.erb mode change 100644 => 100755 app/views/student_work/search_course_students.js.erb mode change 100644 => 100755 app/views/student_work/search_user_projects.js.erb mode change 100644 => 100755 app/views/student_work/set_program_score.html.erb mode change 100644 => 100755 app/views/student_work/set_score_rule.js.erb mode change 100644 => 100755 app/views/student_work/shixun_work_report.html.erb mode change 100644 => 100755 app/views/student_work/show.html.erb mode change 100644 => 100755 app/views/student_work/show.js.erb mode change 100644 => 100755 app/views/student_work/show_allwork_test.html.erb mode change 100644 => 100755 app/views/student_work/student_work_absence_penalty.html.erb mode change 100644 => 100755 app/views/student_work/student_work_project.js.erb mode change 100644 => 100755 app/views/student_work/update.js.erb mode change 100644 => 100755 app/views/student_work/view_summary.html.erb mode change 100644 => 100755 app/views/student_work/work_canrepeat.js.erb mode change 100644 => 100755 app/views/sub_document_comments/_attachment.html.erb mode change 100644 => 100755 app/views/sub_document_comments/_new.html.erb mode change 100644 => 100755 app/views/sub_document_comments/_show_newstyle.html.erb mode change 100644 => 100755 app/views/sub_document_comments/_show_sub_document.html.erb mode change 100644 => 100755 app/views/sub_document_comments/_show_sub_document_newstyle.html.erb mode change 100644 => 100755 app/views/sub_document_comments/add_reply.js.erb mode change 100644 => 100755 app/views/sub_document_comments/destroy.js.erb mode change 100644 => 100755 app/views/sub_document_comments/edit.html.erb mode change 100644 => 100755 app/views/sub_document_comments/index.html.erb mode change 100644 => 100755 app/views/sub_document_comments/new.html.erb mode change 100644 => 100755 app/views/sub_document_comments/show.html.erb mode change 100644 => 100755 app/views/sub_document_comments/update.js.erb mode change 100644 => 100755 app/views/sub_domains/_new.html.erb mode change 100644 => 100755 app/views/sub_domains/create.js.erb mode change 100644 => 100755 app/views/sub_domains/destroy.js.erb mode change 100644 => 100755 app/views/sub_domains/domain_update_priority.js.erb mode change 100644 => 100755 app/views/sub_domains/hide_sub_domain.js.erb mode change 100644 => 100755 app/views/sub_domains/new.html.erb mode change 100644 => 100755 app/views/sub_domains/new.js.erb mode change 100644 => 100755 app/views/sub_domains/show.html.erb mode change 100644 => 100755 app/views/sub_domains/show_sub_domain.js.erb mode change 100644 => 100755 app/views/sub_domains/update.js.erb mode change 100644 => 100755 app/views/subfield_subdomain_dirs/update.js.erb mode change 100644 => 100755 app/views/subjects/_add_collaborators.html.erb mode change 100644 => 100755 app/views/subjects/_b_lesson_content.html.erb mode change 100644 => 100755 app/views/subjects/_b_lesson_introduce.html.erb mode change 100644 => 100755 app/views/subjects/_businessPath_new.html.erb mode change 100644 => 100755 app/views/subjects/_business_detail.html.erb mode change 100644 => 100755 app/views/subjects/_choose_SubjectPath.html.erb mode change 100644 => 100755 app/views/subjects/_choose_shixun.html.erb mode change 100644 => 100755 app/views/subjects/_course_shixun_list.html.erb mode change 100644 => 100755 app/views/subjects/_first_tab_statistics.html.erb mode change 100644 => 100755 app/views/subjects/_my_course_shixun_list.html.erb mode change 100644 => 100755 app/views/subjects/_new_or_edit.html.erb mode change 100644 => 100755 app/views/subjects/_new_shixun_list.html.erb mode change 100644 => 100755 app/views/subjects/_new_shixun_subject_list.html.erb mode change 100644 => 100755 app/views/subjects/_paths_list.html.erb mode change 100644 => 100755 app/views/subjects/_publish_notice.html.erb mode change 100644 => 100755 app/views/subjects/_secend_tab_statistics.html.erb mode change 100644 => 100755 app/views/subjects/_shixun_search_form.html.erb mode change 100644 => 100755 app/views/subjects/_shixun_search_form_detail.html.erb mode change 100644 => 100755 app/views/subjects/_shixun_tab_div.html.erb mode change 100644 => 100755 app/views/subjects/_subject_createnew.html mode change 100644 => 100755 app/views/subjects/_subject_item.html.erb mode change 100644 => 100755 app/views/subjects/_subject_list.html.erb mode change 100644 => 100755 app/views/subjects/_subject_members.html.erb mode change 100644 => 100755 app/views/subjects/_subject_sendPath.html.erb mode change 100644 => 100755 app/views/subjects/_subject_statistics.html.erb mode change 100644 => 100755 app/views/subjects/_subject_top.html.erb mode change 100644 => 100755 app/views/subjects/_third_tab_statistics.html.erb mode change 100644 => 100755 app/views/subjects/add_collaborators.js.erb mode change 100644 => 100755 app/views/subjects/add_subject_members.js.erb mode change 100644 => 100755 app/views/subjects/append_to_stage.js.erb mode change 100644 => 100755 app/views/subjects/choose_subject_shixun.js.erb mode change 100644 => 100755 app/views/subjects/delete_member.js.erb mode change 100644 => 100755 app/views/subjects/destroy.js.erb delete mode 100644 app/views/subjects/down_member_position.js.erb mode change 100644 => 100755 app/views/subjects/edit.html.erb mode change 100644 => 100755 app/views/subjects/index.html.erb mode change 100644 => 100755 app/views/subjects/index.js.erb mode change 100644 => 100755 app/views/subjects/new.html.erb mode change 100644 => 100755 app/views/subjects/new_subject.js.erb mode change 100644 => 100755 app/views/subjects/publish.js.erb mode change 100644 => 100755 app/views/subjects/show.html.erb mode change 100644 => 100755 app/views/subjects/statistics.html.erb mode change 100644 => 100755 app/views/subjects/statistics.js.erb delete mode 100644 app/views/subjects/up_member_position.js.erb mode change 100644 => 100755 app/views/syllabus_member/_sy_change_manager.html.erb mode change 100644 => 100755 app/views/syllabus_member/change_manager.js.erb mode change 100644 => 100755 app/views/syllabus_member/change_manager_alert.js.erb mode change 100644 => 100755 app/views/syllabus_member/create.js.erb mode change 100644 => 100755 app/views/syllabus_member/destroy.js.erb mode change 100644 => 100755 app/views/syllabus_member/syl_member_autocomplete.js.erb mode change 100644 => 100755 app/views/syllabus_member/update_rank.js.erb mode change 100644 => 100755 app/views/syllabuses/_add_sy_member_box.html.erb mode change 100644 => 100755 app/views/syllabuses/_courses_list.html.erb mode change 100644 => 100755 app/views/syllabuses/_delete_syllabus.html.erb mode change 100644 => 100755 app/views/syllabuses/_edit_ref.html.erb mode change 100644 => 100755 app/views/syllabuses/_join_syllabuses.html.erb mode change 100644 => 100755 app/views/syllabuses/_my_syllabuses.html.erb mode change 100644 => 100755 app/views/syllabuses/_search_course_list.html.erb mode change 100644 => 100755 app/views/syllabuses/_show_ref.html.erb mode change 100644 => 100755 app/views/syllabuses/_sy_send_homework.html.erb mode change 100644 => 100755 app/views/syllabuses/_sy_send_resource.html.erb mode change 100644 => 100755 app/views/syllabuses/_sy_send_resource_and_homework.html.erb mode change 100644 => 100755 app/views/syllabuses/_syllabus_course_list.html.erb mode change 100644 => 100755 app/views/syllabuses/_syllabus_des.html.erb mode change 100644 => 100755 app/views/syllabuses/_syllabus_homeworks.html.erb mode change 100644 => 100755 app/views/syllabuses/_syllabus_index.html.erb mode change 100644 => 100755 app/views/syllabuses/_syllabus_member_list.html.erb mode change 100644 => 100755 app/views/syllabuses/_syllabus_members.html.erb mode change 100644 => 100755 app/views/syllabuses/_syllabus_post_reply.html.erb mode change 100644 => 100755 app/views/syllabuses/_syllabus_resources.html.erb mode change 100644 => 100755 app/views/syllabuses/add_sy_member_alert.js.erb mode change 100644 => 100755 app/views/syllabuses/choose_user_course.js.erb mode change 100644 => 100755 app/views/syllabuses/delete_syllabus.js.erb mode change 100644 => 100755 app/views/syllabuses/edit.html.erb mode change 100644 => 100755 app/views/syllabuses/edit_ref.js.erb mode change 100644 => 100755 app/views/syllabuses/edit_syllabus_eng_name.js.erb mode change 100644 => 100755 app/views/syllabuses/edit_syllabus_title.js.erb mode change 100644 => 100755 app/views/syllabuses/index.html.erb mode change 100644 => 100755 app/views/syllabuses/index.js.erb mode change 100644 => 100755 app/views/syllabuses/members.html.erb mode change 100644 => 100755 app/views/syllabuses/new.html.erb mode change 100644 => 100755 app/views/syllabuses/search_not_sy_member.js.erb mode change 100644 => 100755 app/views/syllabuses/send_homeworks_to_course.js.erb mode change 100644 => 100755 app/views/syllabuses/send_r_and_h_to_course.js.erb mode change 100644 => 100755 app/views/syllabuses/send_resources_to_course.js.erb mode change 100644 => 100755 app/views/syllabuses/show.html.erb mode change 100644 => 100755 app/views/syllabuses/syllabus_courselist.html.erb mode change 100644 => 100755 app/views/syllabuses/syllabus_courselist.js.erb mode change 100644 => 100755 app/views/syllabuses/syllabus_homeworks.js.erb mode change 100644 => 100755 app/views/syllabuses/syllabus_resources.js.erb mode change 100644 => 100755 app/views/syllabuses/update_base_info.js.erb mode change 100644 => 100755 app/views/syllabuses/update_ref.js.erb mode change 100644 => 100755 app/views/system_log/access_analysis.html.erb mode change 100644 => 100755 app/views/system_log/index.html.erb mode change 100644 => 100755 app/views/system_log/time_analysis.html.erb mode change 100644 => 100755 app/views/system_messages/index.html.erb mode change 100644 => 100755 app/views/tags/_course_attachment_tag_name.erb mode change 100644 => 100755 app/views/tags/_delete.js.erb mode change 100644 => 100755 app/views/tags/_new_tag.html.erb mode change 100644 => 100755 app/views/tags/_new_tag_name.html.erb mode change 100644 => 100755 app/views/tags/_pagination.html.erb mode change 100644 => 100755 app/views/tags/_project_tag.html.erb mode change 100644 => 100755 app/views/tags/_related_tags.html.erb mode change 100644 => 100755 app/views/tags/_selected_tags.html.erb mode change 100644 => 100755 app/views/tags/_show_attachments.html.erb mode change 100644 => 100755 app/views/tags/_show_bids.html.erb mode change 100644 => 100755 app/views/tags/_show_contests.html.erb mode change 100644 => 100755 app/views/tags/_show_courses.html.erb mode change 100644 => 100755 app/views/tags/_show_forums.html.erb mode change 100644 => 100755 app/views/tags/_show_issues.html.erb mode change 100644 => 100755 app/views/tags/_show_open_source_projects.html.erb mode change 100644 => 100755 app/views/tags/_show_projects.html.erb mode change 100644 => 100755 app/views/tags/_show_results.html.erb mode change 100644 => 100755 app/views/tags/_show_users.html.erb mode change 100644 => 100755 app/views/tags/_sidebar_tags.html.erb mode change 100644 => 100755 app/views/tags/_syllabus_tag.html.erb mode change 100644 => 100755 app/views/tags/_tag.html.erb mode change 100644 => 100755 app/views/tags/_tagEx.html.erb mode change 100644 => 100755 app/views/tags/_tag_add.html.erb mode change 100644 => 100755 app/views/tags/_tag_list.html.erb mode change 100644 => 100755 app/views/tags/_tag_name.html.erb mode change 100644 => 100755 app/views/tags/_tag_new.html.erb mode change 100644 => 100755 app/views/tags/_tag_project_new_name.html.erb mode change 100644 => 100755 app/views/tags/_tag_search_results.html.erb mode change 100644 => 100755 app/views/tags/_tag_syllabus_new_name.html.erb mode change 100644 => 100755 app/views/tags/_tag_user_new_name.html.erb mode change 100644 => 100755 app/views/tags/_user_tag.html.erb mode change 100644 => 100755 app/views/tags/add_tag.js.erb mode change 100644 => 100755 app/views/tags/delete_tag.js.erb mode change 100644 => 100755 app/views/tags/index.html.erb mode change 100644 => 100755 app/views/tags/remove_tag.js.erb mode change 100644 => 100755 app/views/tags/remove_tag_new.js.erb mode change 100644 => 100755 app/views/tags/show_all.html.erb mode change 100644 => 100755 app/views/tags/tag_save.js.erb mode change 100644 => 100755 app/views/tags/update_org_subfield_tag_name.js.erb mode change 100644 => 100755 app/views/tags/update_project_tag_name.js.erb mode change 100644 => 100755 app/views/tags/update_tag_name.js.erb mode change 100644 => 100755 app/views/tasks/show.html.erb mode change 100644 => 100755 app/views/test/_message.html.erb mode change 100644 => 100755 app/views/test/_new.html.erb mode change 100644 => 100755 app/views/test/bootstrap.html.erb mode change 100644 => 100755 app/views/test/courselist.html.erb mode change 100644 => 100755 app/views/test/create.js.erb mode change 100644 => 100755 app/views/test/destroy.js.erb mode change 100644 => 100755 app/views/test/index.html.erb mode change 100644 => 100755 app/views/test/new.js.erb mode change 100644 => 100755 app/views/test/zip.html.erb mode change 100644 => 100755 app/views/timelog/_date_range.html.erb mode change 100644 => 100755 app/views/timelog/_form.html.erb mode change 100644 => 100755 app/views/timelog/_list.html.erb mode change 100644 => 100755 app/views/timelog/_report_criteria.html.erb mode change 100644 => 100755 app/views/timelog/bulk_edit.html.erb mode change 100644 => 100755 app/views/timelog/edit.html.erb mode change 100644 => 100755 app/views/timelog/index.api.rsb mode change 100644 => 100755 app/views/timelog/index.html.erb mode change 100644 => 100755 app/views/timelog/new.html.erb mode change 100644 => 100755 app/views/timelog/report.html.erb mode change 100644 => 100755 app/views/timelog/show.api.rsb mode change 100644 => 100755 app/views/trackers/_form.html.erb mode change 100644 => 100755 app/views/trackers/edit.html.erb mode change 100644 => 100755 app/views/trackers/fields.html.erb mode change 100644 => 100755 app/views/trackers/index.api.rsb mode change 100644 => 100755 app/views/trackers/index.html.erb mode change 100644 => 100755 app/views/trackers/new.html.erb mode change 100644 => 100755 app/views/training_tasks/_action_status.html.erb mode change 100644 => 100755 app/views/training_tasks/_all_list.html.erb mode change 100644 => 100755 app/views/training_tasks/_content_list.html.erb mode change 100644 => 100755 app/views/training_tasks/_detail.html.erb mode change 100644 => 100755 app/views/training_tasks/_edit.html.erb mode change 100644 => 100755 app/views/training_tasks/_form.html.erb mode change 100644 => 100755 app/views/training_tasks/_issue_replies.html.erb mode change 100644 => 100755 app/views/training_tasks/_reply_banner.html.erb mode change 100644 => 100755 app/views/training_tasks/_task_attachments.html.erb mode change 100644 => 100755 app/views/training_tasks/_training_task_details.html.erb mode change 100644 => 100755 app/views/training_tasks/_training_tasks_reply_ke_form.html.erb mode change 100644 => 100755 app/views/training_tasks/add_journal.js.erb mode change 100644 => 100755 app/views/training_tasks/add_reply.js.erb mode change 100644 => 100755 app/views/training_tasks/delete_journal.js.erb mode change 100644 => 100755 app/views/training_tasks/edit.html.erb mode change 100644 => 100755 app/views/training_tasks/index.html.erb mode change 100644 => 100755 app/views/training_tasks/index.js.erb mode change 100644 => 100755 app/views/training_tasks/new.html.erb mode change 100644 => 100755 app/views/training_tasks/reply.js.erb mode change 100644 => 100755 app/views/training_tasks/show.html.erb mode change 100644 => 100755 app/views/training_tasks/show.js.erb mode change 100644 => 100755 app/views/trainings/_upload_img.html.erb mode change 100644 => 100755 app/views/trainings/enroll.html.erb mode change 100644 => 100755 app/views/trainings/pay.html.erb mode change 100644 => 100755 app/views/trainings/result.html.erb mode change 100644 => 100755 app/views/trainings/show.html.erb mode change 100644 => 100755 app/views/trainings/test.html.erb mode change 100644 => 100755 app/views/users/_activity_new_score_index.html.erb mode change 100644 => 100755 app/views/users/_activity_score_index.html.erb mode change 100644 => 100755 app/views/users/_all_issue_list.html.erb mode change 100644 => 100755 app/views/users/_anonymous_evaluation_list.html.erb mode change 100644 => 100755 app/views/users/_applied_organization_sundomain.html.erb mode change 100644 => 100755 app/views/users/_applied_project_content.html.erb mode change 100644 => 100755 app/views/users/_apply_for_homework.html.erb mode change 100644 => 100755 app/views/users/_apply_for_resource.html.erb mode change 100644 => 100755 app/views/users/_apply_homework.html.erb mode change 100644 => 100755 app/views/users/_apply_homework_course_message.html.erb mode change 100644 => 100755 app/views/users/_apply_resource.html.erb mode change 100644 => 100755 app/views/users/_apply_resource_course_message.html.erb mode change 100644 => 100755 app/views/users/_apply_resource_course_message_reply.html.erb mode change 100644 => 100755 app/views/users/_attachment_list.html.erb mode change 100644 => 100755 app/views/users/_collect_contest.html.erb mode change 100644 => 100755 app/views/users/_collect_course.html.erb mode change 100644 => 100755 app/views/users/_collect_project.html.erb mode change 100644 => 100755 app/views/users/_comment_reply.html.erb mode change 100644 => 100755 app/views/users/_comment_reply_detail.html.erb mode change 100644 => 100755 app/views/users/_contest_create.html.erb mode change 100644 => 100755 app/views/users/_contest_journalsformessage.html.erb mode change 100644 => 100755 app/views/users/_contest_list.html.erb mode change 100644 => 100755 app/views/users/_contest_list_contents.html.erb mode change 100644 => 100755 app/views/users/_contest_message.html.erb mode change 100644 => 100755 app/views/users/_contest_message_post_reply.html.erb mode change 100644 => 100755 app/views/users/_contest_news.html.erb mode change 100644 => 100755 app/views/users/_contest_newslist.html.erb mode change 100644 => 100755 app/views/users/_contest_work.html.erb mode change 100644 => 100755 app/views/users/_contest_work_base_info.html.erb mode change 100644 => 100755 app/views/users/_contest_work_post_reply.html.erb mode change 100644 => 100755 app/views/users/_course_attachment.html.erb mode change 100644 => 100755 app/views/users/_course_boardlist.html.erb mode change 100644 => 100755 app/views/users/_course_create.html.erb mode change 100644 => 100755 app/views/users/_course_exercise.html.erb mode change 100644 => 100755 app/views/users/_course_file_form.html.erb mode change 100644 => 100755 app/views/users/_course_form.html.erb mode change 100644 => 100755 app/views/users/_course_graduation_task.html.erb mode change 100644 => 100755 app/views/users/_course_graduation_topic.html.erb mode change 100644 => 100755 app/views/users/_course_homework.html.erb mode change 100644 => 100755 app/views/users/_course_item.html.erb mode change 100644 => 100755 app/views/users/_course_journalsformessage.html.erb mode change 100644 => 100755 app/views/users/_course_list_have_entity.html.erb mode change 100644 => 100755 app/views/users/_course_list_have_entity_ex.html.erb mode change 100644 => 100755 app/views/users/_course_message.html.erb mode change 100644 => 100755 app/views/users/_course_message_form.html.erb mode change 100644 => 100755 app/views/users/_course_message_post_reply.html.erb mode change 100644 => 100755 app/views/users/_course_news.html.erb mode change 100644 => 100755 app/views/users/_course_news_form.html.erb mode change 100644 => 100755 app/views/users/_course_news_post_reply.html.erb mode change 100644 => 100755 app/views/users/_course_newslist.html.erb mode change 100644 => 100755 app/views/users/_course_poll.html.erb mode change 100644 => 100755 app/views/users/_courses_list.html.erb mode change 100644 => 100755 app/views/users/_edu_user_watch_fan_list.html.erb mode change 100644 => 100755 app/views/users/_form.html.erb mode change 100644 => 100755 app/views/users/_general.html.erb mode change 100644 => 100755 app/views/users/_groups.html.erb mode change 100644 => 100755 app/views/users/_history.html.erb mode change 100644 => 100755 app/views/users/_homework_base_info.html.erb mode change 100644 => 100755 app/views/users/_homework_detail_information.html.erb mode change 100644 => 100755 app/views/users/_homework_opr.html.erb mode change 100644 => 100755 app/views/users/_homework_post_notice.html.erb mode change 100644 => 100755 app/views/users/_homework_post_reply.html.erb mode change 100644 => 100755 app/views/users/_homework_ref_resources_list.html.erb mode change 100644 => 100755 app/views/users/_homework_repository.html.erb mode change 100644 => 100755 app/views/users/_homework_repository_detail.html.erb mode change 100644 => 100755 app/views/users/_homework_repository_list.html.erb mode change 100644 => 100755 app/views/users/_homework_repository_search.html.erb mode change 100644 => 100755 app/views/users/_homework_repository_sort.html.erb mode change 100644 => 100755 app/views/users/_homework_search_input.html.erb mode change 100644 => 100755 app/views/users/_homework_type_notice.html.erb mode change 100644 => 100755 app/views/users/_import_resource_info.html.erb mode change 100644 => 100755 app/views/users/_influence_new_score_index.html.erb mode change 100644 => 100755 app/views/users/_influence_score_index.html.erb mode change 100644 => 100755 app/views/users/_intro_content.html.erb mode change 100644 => 100755 app/views/users/_intro_content_ex.html.erb mode change 100644 => 100755 app/views/users/_join_contest_applied_message.html.erb mode change 100644 => 100755 app/views/users/_join_course.html.erb mode change 100644 => 100755 app/views/users/_join_course_course_message.html.erb mode change 100644 => 100755 app/views/users/_jour_form.html.erb mode change 100644 => 100755 app/views/users/_journal_comment_reply.html.erb mode change 100644 => 100755 app/views/users/_l_course.html.erb mode change 100644 => 100755 app/views/users/_l_project.html.erb mode change 100644 => 100755 app/views/users/_l_shixun.html.erb mode change 100644 => 100755 app/views/users/_leave_message.html.erb mode change 100644 => 100755 app/views/users/_m_bank.html.erb mode change 100644 => 100755 app/views/users/_mail_notifications.html.erb mode change 100644 => 100755 app/views/users/_manage_homework_list.html.erb mode change 100644 => 100755 app/views/users/_memberships.html.erb mode change 100644 => 100755 app/views/users/_message_contents.html.erb mode change 100644 => 100755 app/views/users/_message_dialogue.html.erb mode change 100644 => 100755 app/views/users/_message_replies.html.erb mode change 100644 => 100755 app/views/users/_mirror_script_edit.html.erb mode change 100644 => 100755 app/views/users/_my_contests.html.erb mode change 100644 => 100755 app/views/users/_my_course.html.erb mode change 100644 => 100755 app/views/users/_my_course_ex.html.erb mode change 100644 => 100755 app/views/users/_my_create_homework.html.erb mode change 100644 => 100755 app/views/users/_my_homepage_course_show.html.erb mode change 100644 => 100755 app/views/users/_my_homepage_courses_list.html.erb mode change 100644 => 100755 app/views/users/_my_homepage_shixuns_list.html.erb mode change 100644 => 100755 app/views/users/_my_homework.html.erb mode change 100644 => 100755 app/views/users/_my_homework_list.html.erb mode change 100644 => 100755 app/views/users/_my_homework_sort.html.erb mode change 100644 => 100755 app/views/users/_my_homeworks_search.html.erb mode change 100644 => 100755 app/views/users/_my_issue_assigned_filter.html.erb mode change 100644 => 100755 app/views/users/_my_issue_filter_all.html.erb mode change 100644 => 100755 app/views/users/_my_issue_list.html.erb mode change 100644 => 100755 app/views/users/_my_joined_contests.html.erb mode change 100644 => 100755 app/views/users/_my_joined_projects.html.erb mode change 100644 => 100755 app/views/users/_my_joinedcourse.html.erb mode change 100644 => 100755 app/views/users/_my_manage_issue_list.html.erb mode change 100644 => 100755 app/views/users/_my_new.html.erb mode change 100644 => 100755 app/views/users/_my_projects.html.erb mode change 100644 => 100755 app/views/users/_my_receive_issue_list.html.erb mode change 100644 => 100755 app/views/users/_myjoin_shixun_list.html.erb mode change 100644 => 100755 app/views/users/_myshixuns_list.html.erb mode change 100644 => 100755 app/views/users/_new_user_message.html.erb mode change 100644 => 100755 app/views/users/_news_contents.html.erb mode change 100644 => 100755 app/views/users/_news_replies.html.erb mode change 100644 => 100755 app/views/users/_no_data.html.erb mode change 100644 => 100755 app/views/users/_org_file_form.html.erb mode change 100644 => 100755 app/views/users/_org_message_form.html.erb mode change 100644 => 100755 app/views/users/_org_news_form.html.erb mode change 100644 => 100755 app/views/users/_org_resources_subfield.html.erb mode change 100644 => 100755 app/views/users/_p_path.html.erb mode change 100644 => 100755 app/views/users/_preferences.html.erb mode change 100644 => 100755 app/views/users/_project_attachment.html.erb mode change 100644 => 100755 app/views/users/_project_boardlist.html.erb mode change 100644 => 100755 app/views/users/_project_com_list.html.erb mode change 100644 => 100755 app/views/users/_project_create.html.erb mode change 100644 => 100755 app/views/users/_project_document.html.erb mode change 100644 => 100755 app/views/users/_project_file_form.html.erb mode change 100644 => 100755 app/views/users/_project_issue.html.erb mode change 100644 => 100755 app/views/users/_project_issue_detail.html.erb mode change 100644 => 100755 app/views/users/_project_issue_reply.html.erb mode change 100644 => 100755 app/views/users/_project_journal.html.erb mode change 100644 => 100755 app/views/users/_project_list.html.erb mode change 100644 => 100755 app/views/users/_project_message.html.erb mode change 100644 => 100755 app/views/users/_project_message_form.html.erb mode change 100644 => 100755 app/views/users/_project_new_score_index.html.erb mode change 100644 => 100755 app/views/users/_project_news.html.erb mode change 100644 => 100755 app/views/users/_project_news_form.html.erb mode change 100644 => 100755 app/views/users/_project_score_index.html.erb mode change 100644 => 100755 app/views/users/_receive_homework_list.html.erb mode change 100644 => 100755 app/views/users/_reply_banner.html.erb mode change 100644 => 100755 app/views/users/_reply_to.html.erb mode change 100644 => 100755 app/views/users/_reply_to_comment.html.erb mode change 100644 => 100755 app/views/users/_resource_search_form.html.erb mode change 100644 => 100755 app/views/users/_resource_share_for_orgs.html.erb mode change 100644 => 100755 app/views/users/_resource_share_for_project_popup.html.erb mode change 100644 => 100755 app/views/users/_resource_share_popup.html.erb mode change 100644 => 100755 app/views/users/_resource_upload_popup.html.erb mode change 100644 => 100755 app/views/users/_resources_list.html.erb mode change 100644 => 100755 app/views/users/_returnTop_btn.html.erb mode change 100644 => 100755 app/views/users/_right_message_list.html.erb mode change 100644 => 100755 app/views/users/_score_index.html.erb mode change 100644 => 100755 app/views/users/_score_new_index.html.erb mode change 100644 => 100755 app/views/users/_selector_for_messages.html.erb mode change 100644 => 100755 app/views/users/_send_homework_to_course.html.erb mode change 100644 => 100755 app/views/users/_send_homework_to_course_form.html.erb mode change 100644 => 100755 app/views/users/_send_notice.html.erb mode change 100644 => 100755 app/views/users/_send_part.html.erb mode change 100644 => 100755 app/views/users/_share_message_to_course.html.erb mode change 100644 => 100755 app/views/users/_share_message_to_org.html.erb mode change 100644 => 100755 app/views/users/_share_message_to_project.html.erb mode change 100644 => 100755 app/views/users/_share_news_to_course.html.erb mode change 100644 => 100755 app/views/users/_share_news_to_org.html.erb mode change 100644 => 100755 app/views/users/_share_news_to_project.html.erb mode change 100644 => 100755 app/views/users/_show_detail_info.html.erb mode change 100644 => 100755 app/views/users/_show_new_score.html.erb mode change 100644 => 100755 app/views/users/_show_new_upload.html.erb mode change 100644 => 100755 app/views/users/_show_score.html.erb mode change 100644 => 100755 app/views/users/_show_unlogged.html.erb mode change 100644 => 100755 app/views/users/_show_unlogged_reply.html.erb mode change 100644 => 100755 app/views/users/_show_user_homework_form.html.erb mode change 100644 => 100755 app/views/users/_show_user_homeworks.html.erb mode change 100644 => 100755 app/views/users/_show_user_org.html.erb mode change 100644 => 100755 app/views/users/_show_user_resource.html.erb mode change 100644 => 100755 app/views/users/_special_user_homework_attachment.html.erb mode change 100644 => 100755 app/views/users/_syllabus_course_list.html.erb mode change 100644 => 100755 app/views/users/_task_tip.html.erb mode change 100644 => 100755 app/views/users/_topic_new_score_index.html.erb mode change 100644 => 100755 app/views/users/_topic_score_index.html.erb mode change 100644 => 100755 app/views/users/_unapproval_applied_list.html.erb mode change 100644 => 100755 app/views/users/_unfinished_homework_list.html.erb mode change 100644 => 100755 app/views/users/_unfinished_poll_list.html.erb mode change 100644 => 100755 app/views/users/_unfinished_test_list.html.erb mode change 100644 => 100755 app/views/users/_unsolved_issues_list.html.erb mode change 100644 => 100755 app/views/users/_upload_avatar.html.erb mode change 100644 => 100755 app/views/users/_upload_resource.html.erb mode change 100644 => 100755 app/views/users/_user_activities.html.erb mode change 100644 => 100755 app/views/users/_user_allPrivate_letter.html.erb mode change 100644 => 100755 app/views/users/_user_archive_course_list.html.erb mode change 100644 => 100755 app/views/users/_user_at_message.html.erb mode change 100644 => 100755 app/views/users/_user_blog.html.erb mode change 100644 => 100755 app/views/users/_user_blog_post_reply.html.erb mode change 100644 => 100755 app/views/users/_user_course_list.html.erb mode change 100644 => 100755 app/views/users/_user_data_bank.html.erb mode change 100644 => 100755 app/views/users/_user_experience.html.erb mode change 100644 => 100755 app/views/users/_user_experience_content.html.erb mode change 100644 => 100755 app/views/users/_user_extensions.html.erb mode change 100644 => 100755 app/views/users/_user_fans_item.html.erb mode change 100644 => 100755 app/views/users/_user_fans_or_watch.html.erb mode change 100644 => 100755 app/views/users/_user_grade.html.erb mode change 100644 => 100755 app/views/users/_user_grade_content.html.erb mode change 100644 => 100755 app/views/users/_user_group_attr.html.erb mode change 100644 => 100755 app/views/users/_user_homework_attachment.html.erb mode change 100644 => 100755 app/views/users/_user_homework_detail.html.erb mode change 100644 => 100755 app/views/users/_user_homework_form.html.erb mode change 100644 => 100755 app/views/users/_user_homework_list.html.erb mode change 100644 => 100755 app/views/users/_user_import_resource_list.html.erb mode change 100644 => 100755 app/views/users/_user_import_resource_search.html.erb mode change 100644 => 100755 app/views/users/_user_info_show.html.erb mode change 100644 => 100755 app/views/users/_user_join_syllabus_list.html.erb mode change 100644 => 100755 app/views/users/_user_jour_reply.html.erb mode change 100644 => 100755 app/views/users/_user_journal_post_reply.html.erb mode change 100644 => 100755 app/views/users/_user_journalsformessage.html.erb mode change 100644 => 100755 app/views/users/_user_jours.html.erb mode change 100644 => 100755 app/views/users/_user_jours_list.html.erb mode change 100644 => 100755 app/views/users/_user_jours_new.html.erb mode change 100644 => 100755 app/views/users/_user_manage_issue_list.html.erb mode change 100644 => 100755 app/views/users/_user_message_applide_action.html.erb mode change 100644 => 100755 app/views/users/_user_message_applide_users.html.erb mode change 100644 => 100755 app/views/users/_user_message_applied.html.erb mode change 100644 => 100755 app/views/users/_user_message_applied_school_action.html.erb mode change 100644 => 100755 app/views/users/_user_message_applied_schools.html.erb mode change 100644 => 100755 app/views/users/_user_message_blog.html.erb mode change 100644 => 100755 app/views/users/_user_message_contest.html.erb mode change 100644 => 100755 app/views/users/_user_message_course.html.erb mode change 100644 => 100755 app/views/users/_user_message_forge.html.erb mode change 100644 => 100755 app/views/users/_user_message_forum.html.erb mode change 100644 => 100755 app/views/users/_user_message_list.html.erb mode change 100644 => 100755 app/views/users/_user_message_org.html.erb mode change 100644 => 100755 app/views/users/_user_message_organization_applied_action.html.erb mode change 100644 => 100755 app/views/users/_user_message_system.html.erb mode change 100644 => 100755 app/views/users/_user_message_userfeedaback.html.erb mode change 100644 => 100755 app/views/users/_user_private_dialogue.html.erb mode change 100644 => 100755 app/views/users/_user_programing_attr.html.erb mode change 100644 => 100755 app/views/users/_user_project_list.html.erb mode change 100644 => 100755 app/views/users/_user_receive_issues_list.html.erb mode change 100644 => 100755 app/views/users/_user_recently_person.html.erb mode change 100644 => 100755 app/views/users/_user_resource_info.html.erb mode change 100644 => 100755 app/views/users/_user_resource_tip_list.html.erb mode change 100644 => 100755 app/views/users/_user_resource_type_filter.html.erb mode change 100644 => 100755 app/views/users/_user_score.html.erb mode change 100644 => 100755 app/views/users/_user_show.html.erb mode change 100644 => 100755 app/views/users/_user_syllabus_list.html.erb mode change 100644 => 100755 app/views/users/_user_tag.html.erb mode change 100644 => 100755 app/views/users/_user_tag_content.html.erb mode change 100644 => 100755 app/views/users/_user_tiddings_list.erb mode change 100644 => 100755 app/views/users/_user_tidingsAndprivate_left.html.erb mode change 100644 => 100755 app/views/users/_user_watcher_or_fans_list.html.erb mode change 100644 => 100755 app/views/users/_user_write_privateLetter.html.erb mode change 100644 => 100755 app/views/users/_watch_btn_for_picture.html.erb mode change 100644 => 100755 app/views/users/_wide_reply_banner.html.erb mode change 100644 => 100755 app/views/users/_work_opr.html.erb mode change 100644 => 100755 app/views/users/activity_new_score_index.js.erb mode change 100644 => 100755 app/views/users/activity_score_index.js.erb mode change 100644 => 100755 app/views/users/add_exist_file_to_course.js.erb mode change 100644 => 100755 app/views/users/add_exist_file_to_org.js.erb mode change 100644 => 100755 app/views/users/add_exist_file_to_project.js.erb mode change 100644 => 100755 app/views/users/all_journals.js.erb mode change 100644 => 100755 app/views/users/anonymous_evaluation_list.js.erb mode change 100644 => 100755 app/views/users/apply_for_homework.js.erb mode change 100644 => 100755 app/views/users/apply_for_resource.js.erb mode change 100644 => 100755 app/views/users/apply_homework.js.erb mode change 100644 => 100755 app/views/users/apply_resource.js.erb mode change 100644 => 100755 app/views/users/attendance.js.erb mode change 100644 => 100755 app/views/users/blocks/_calendar.html.erb mode change 100644 => 100755 app/views/users/blocks/_issuesassignedtome.html.erb mode change 100644 => 100755 app/views/users/cancel_or_collect.js.erb mode change 100644 => 100755 app/views/users/change_org_subfield.js.erb mode change 100644 => 100755 app/views/users/change_user_email.js.erb mode change 100644 => 100755 app/views/users/choose_user_course.js.erb mode change 100644 => 100755 app/views/users/contest_community.html.erb mode change 100644 => 100755 app/views/users/contest_community.js.erb mode change 100644 => 100755 app/views/users/course_community.html.erb mode change 100644 => 100755 app/views/users/course_community.js.erb mode change 100644 => 100755 app/views/users/deal_with_apply_resource.js.erb mode change 100644 => 100755 app/views/users/dealwith_apply_homework.js.erb mode change 100644 => 100755 app/views/users/dealwith_apply_request.js.erb mode change 100644 => 100755 app/views/users/delete_message.js.erb mode change 100644 => 100755 app/views/users/destroy_membership.js.erb mode change 100644 => 100755 app/views/users/edit.html.erb mode change 100644 => 100755 app/views/users/edit_brief_introduction.js.erb mode change 100644 => 100755 app/views/users/edit_membership.js.erb mode change 100644 => 100755 app/views/users/expand_courses.js.erb mode change 100644 => 100755 app/views/users/growth_record.html.erb mode change 100644 => 100755 app/views/users/growth_record.js.erb mode change 100644 => 100755 app/views/users/homepage.html.erb mode change 100644 => 100755 app/views/users/html_show.html.erb mode change 100644 => 100755 app/views/users/import_into_container.js.erb mode change 100644 => 100755 app/views/users/import_resources.js.erb mode change 100644 => 100755 app/views/users/import_resources_search.js.erb mode change 100644 => 100755 app/views/users/import_resources_to_homework.js.erb mode change 100644 => 100755 app/views/users/index.api.rsb mode change 100644 => 100755 app/views/users/index.html.erb mode change 100644 => 100755 app/views/users/influence_new_score_index.js.erb mode change 100644 => 100755 app/views/users/influence_score_index.js.erb mode change 100644 => 100755 app/views/users/info.html.erb mode change 100644 => 100755 app/views/users/leave_message.js.erb mode change 100644 => 100755 app/views/users/list.api.rsb mode change 100644 => 100755 app/views/users/list.html.erb mode change 100644 => 100755 app/views/users/manage_or_receive_homeworks.html.erb mode change 100644 => 100755 app/views/users/manage_or_receive_homeworks.js.erb mode change 100644 => 100755 app/views/users/message_detail.html.erb mode change 100644 => 100755 app/views/users/message_pop.js.erb mode change 100644 => 100755 app/views/users/modify_script.html.erb mode change 100644 => 100755 app/views/users/modify_script.js.erb mode change 100644 => 100755 app/views/users/my_homeworks.html.erb mode change 100644 => 100755 app/views/users/my_homeworks.js.erb mode change 100644 => 100755 app/views/users/my_join_shixuns.js.erb mode change 100644 => 100755 app/views/users/name_update.js.erb mode change 100644 => 100755 app/views/users/new.html.erb mode change 100644 => 100755 app/views/users/new_user_commit_homework.html.erb mode change 100644 => 100755 app/views/users/picture_show.html.erb mode change 100644 => 100755 app/views/users/picture_show.js.erb mode change 100644 => 100755 app/views/users/private_messages.html.erb mode change 100644 => 100755 app/views/users/private_messages.js.erb mode change 100644 => 100755 app/views/users/project_community.html.erb mode change 100644 => 100755 app/views/users/project_community.js.erb mode change 100644 => 100755 app/views/users/project_new_score_index.js.erb mode change 100644 => 100755 app/views/users/project_score_index.js.erb mode change 100644 => 100755 app/views/users/rename_resource.js.erb mode change 100644 => 100755 app/views/users/reply_detail.js.erb mode change 100644 => 100755 app/views/users/reply_message.js.erb mode change 100644 => 100755 app/views/users/reply_to.js.erb mode change 100644 => 100755 app/views/users/reply_to_comment.js.erb mode change 100644 => 100755 app/views/users/resource_preview.js.erb mode change 100644 => 100755 app/views/users/resource_search.js.erb mode change 100644 => 100755 app/views/users/reward_credit.js.erb mode change 100644 => 100755 app/views/users/reward_grade.js.erb mode change 100644 => 100755 app/views/users/score_index.js.erb mode change 100644 => 100755 app/views/users/score_new_index.js.erb mode change 100644 => 100755 app/views/users/search.html.erb mode change 100644 => 100755 app/views/users/search_m_r_homeworks.js.erb mode change 100644 => 100755 app/views/users/search_shixuns_or_courses.html.erb mode change 100644 => 100755 app/views/users/search_user_course.js.erb mode change 100644 => 100755 app/views/users/search_user_org.js.erb mode change 100644 => 100755 app/views/users/search_user_orgs.html.erb mode change 100644 => 100755 app/views/users/search_user_orgs.js.erb mode change 100644 => 100755 app/views/users/search_user_project.js.erb mode change 100644 => 100755 app/views/users/send_homework_to_course.js.erb mode change 100644 => 100755 app/views/users/send_message.js.erb mode change 100644 => 100755 app/views/users/share_message_to_course.js.erb mode change 100644 => 100755 app/views/users/share_message_to_org.js.erb mode change 100644 => 100755 app/views/users/share_message_to_project.js.erb mode change 100644 => 100755 app/views/users/share_news_to_course.js.erb mode change 100644 => 100755 app/views/users/share_news_to_org.js.erb mode change 100644 => 100755 app/views/users/share_news_to_project.js.erb mode change 100644 => 100755 app/views/users/shixuns.html.erb mode change 100644 => 100755 app/views/users/shixuns.js.erb mode change 100644 => 100755 app/views/users/show.api.rsb mode change 100644 => 100755 app/views/users/show.html.erb mode change 100644 => 100755 app/views/users/show.js.erb mode change 100644 => 100755 app/views/users/show_all_replies.js.erb mode change 100644 => 100755 app/views/users/show_homework_detail.js.erb mode change 100644 => 100755 app/views/users/show_new_score.html.erb mode change 100644 => 100755 app/views/users/show_new_score.js.erb mode change 100644 => 100755 app/views/users/show_old.html.erb mode change 100644 => 100755 app/views/users/show_score.js.erb mode change 100644 => 100755 app/views/users/sort_project_list.js.erb mode change 100644 => 100755 app/views/users/sort_syllabus_list.js.erb mode change 100644 => 100755 app/views/users/student_homeworks.html.erb mode change 100644 => 100755 app/views/users/student_homeworks.js.erb mode change 100644 => 100755 app/views/users/switch_user_module.js.erb mode change 100644 => 100755 app/views/users/tag_save.js.erb mode change 100644 => 100755 app/views/users/tag_saveEx.js.erb mode change 100644 => 100755 app/views/users/topic_new_score_index.js.erb mode change 100644 => 100755 app/views/users/topic_score_index.js.erb mode change 100644 => 100755 app/views/users/unapproval_applied_list.js.erb mode change 100644 => 100755 app/views/users/unfinished_homework_list.js.erb mode change 100644 => 100755 app/views/users/unfinished_poll_list.js.erb mode change 100644 => 100755 app/views/users/unfinished_test_list.js.erb mode change 100644 => 100755 app/views/users/unsolved_issues_list.js.erb mode change 100644 => 100755 app/views/users/update_score.js.erb mode change 100644 => 100755 app/views/users/user_activities.html.erb mode change 100644 => 100755 app/views/users/user_archive_courses.html.erb mode change 100644 => 100755 app/views/users/user_archive_courses.js.erb mode change 100644 => 100755 app/views/users/user_comments.html.erb mode change 100644 => 100755 app/views/users/user_commit_homework.html.erb mode change 100644 => 100755 app/views/users/user_contestlist.html.erb mode change 100644 => 100755 app/views/users/user_contests4show.html.erb mode change 100644 => 100755 app/views/users/user_course_activities.html.erb mode change 100644 => 100755 app/views/users/user_courselist.html.erb mode change 100644 => 100755 app/views/users/user_courselist.js.erb mode change 100644 => 100755 app/views/users/user_courses.html.erb mode change 100644 => 100755 app/views/users/user_courses4show.js.erb mode change 100644 => 100755 app/views/users/user_experience.html.erb mode change 100644 => 100755 app/views/users/user_experience.js.erb mode change 100644 => 100755 app/views/users/user_fanslist.html.erb mode change 100644 => 100755 app/views/users/user_fanslist.js.erb mode change 100644 => 100755 app/views/users/user_feedback4show.html.erb mode change 100644 => 100755 app/views/users/user_grade.html.erb mode change 100644 => 100755 app/views/users/user_grade.js.erb mode change 100644 => 100755 app/views/users/user_homework_type.js.erb mode change 100644 => 100755 app/views/users/user_homeworks.html.erb mode change 100644 => 100755 app/views/users/user_homeworks.js.erb mode change 100644 => 100755 app/views/users/user_import_homeworks.js.erb mode change 100644 => 100755 app/views/users/user_import_resource.js.erb mode change 100644 => 100755 app/views/users/user_info.js.erb mode change 100644 => 100755 app/views/users/user_issues.html.erb mode change 100644 => 100755 app/views/users/user_issues.js.erb mode change 100644 => 100755 app/views/users/user_manage_homeworks.html.erb mode change 100644 => 100755 app/views/users/user_manage_homeworks.js.erb mode change 100644 => 100755 app/views/users/user_manage_issues.html.erb mode change 100644 => 100755 app/views/users/user_manage_issues.js.erb mode change 100644 => 100755 app/views/users/user_messages.html.erb mode change 100644 => 100755 app/views/users/user_messages.js.erb mode change 100644 => 100755 app/views/users/user_messages_unviewed.js.erb mode change 100644 => 100755 app/views/users/user_newfeedback.html.erb mode change 100644 => 100755 app/views/users/user_newfeedback.js.erb mode change 100644 => 100755 app/views/users/user_organizations.html.erb mode change 100644 => 100755 app/views/users/user_projectlist.html.erb mode change 100644 => 100755 app/views/users/user_projectlist.js.erb mode change 100644 => 100755 app/views/users/user_projects.html.erb mode change 100644 => 100755 app/views/users/user_projects4show.js.erb mode change 100644 => 100755 app/views/users/user_receive_homeworks.html.erb mode change 100644 => 100755 app/views/users/user_receive_homeworks.js.erb mode change 100644 => 100755 app/views/users/user_receive_issues.html.erb mode change 100644 => 100755 app/views/users/user_receive_issues.js.erb mode change 100644 => 100755 app/views/users/user_ref_resource_search.js.erb mode change 100644 => 100755 app/views/users/user_resource.html.erb mode change 100644 => 100755 app/views/users/user_resource.js.erb mode change 100644 => 100755 app/views/users/user_resource_create.js.erb mode change 100644 => 100755 app/views/users/user_resource_delete.js.erb mode change 100644 => 100755 app/views/users/user_resource_type.js.erb mode change 100644 => 100755 app/views/users/user_search_homeworks.js.erb mode change 100644 => 100755 app/views/users/user_select_homework.js.erb mode change 100644 => 100755 app/views/users/user_shixuns.html.erb mode change 100644 => 100755 app/views/users/user_show_course_list.js.erb mode change 100644 => 100755 app/views/users/user_system_messages.html.erb mode change 100644 => 100755 app/views/users/user_tidings.html.erb mode change 100644 => 100755 app/views/users/user_tidings.js.erb mode change 100644 => 100755 app/views/users/user_watchlist.html.erb mode change 100644 => 100755 app/views/users/user_watchlist.js.erb mode change 100644 => 100755 app/views/users/watch_bids.html.erb mode change 100644 => 100755 app/views/users/watch_projects.html.erb mode change 100644 => 100755 app/views/versions/_edit.html.erb mode change 100644 => 100755 app/views/versions/_form.html.erb mode change 100644 => 100755 app/views/versions/_issue_counts.html.erb mode change 100644 => 100755 app/views/versions/_issue_statistics.html.erb mode change 100644 => 100755 app/views/versions/_list.html.erb mode change 100644 => 100755 app/views/versions/_new_milestone.html.erb mode change 100644 => 100755 app/views/versions/_new_modal.html.erb mode change 100644 => 100755 app/views/versions/_overview.html.erb mode change 100644 => 100755 app/views/versions/_type_ico.html.erb mode change 100644 => 100755 app/views/versions/_version_name_repetition_tip.html.erb mode change 100644 => 100755 app/views/versions/create.js.erb mode change 100644 => 100755 app/views/versions/destroy.js.erb mode change 100644 => 100755 app/views/versions/edit.html.erb mode change 100644 => 100755 app/views/versions/edit.js.erb mode change 100644 => 100755 app/views/versions/index.api.rsb mode change 100644 => 100755 app/views/versions/index.html.erb mode change 100644 => 100755 app/views/versions/index.js.erb mode change 100644 => 100755 app/views/versions/new.html.erb mode change 100644 => 100755 app/views/versions/new.js.erb mode change 100644 => 100755 app/views/versions/show.api.rsb mode change 100644 => 100755 app/views/versions/show.html.erb mode change 100644 => 100755 app/views/versions/status_by.js.erb mode change 100644 => 100755 app/views/versions/update.js.erb mode change 100644 => 100755 app/views/watchers/_fans_num.html.erb mode change 100644 => 100755 app/views/watchers/_new.html.erb mode change 100644 => 100755 app/views/watchers/_set_join.js.erb mode change 100644 => 100755 app/views/watchers/_set_watcher.js.erb mode change 100644 => 100755 app/views/watchers/_watchers.html.erb mode change 100644 => 100755 app/views/watchers/append.js.erb mode change 100644 => 100755 app/views/watchers/autocomplete_for_user.html.erb mode change 100644 => 100755 app/views/watchers/create.js.erb mode change 100644 => 100755 app/views/watchers/destroy.js.erb mode change 100644 => 100755 app/views/watchers/new.js.erb mode change 100644 => 100755 app/views/watchers/unwatch.js.erb mode change 100644 => 100755 app/views/watchers/watch.js.erb mode change 100644 => 100755 app/views/web_footer_companies/edit.html.erb mode change 100644 => 100755 app/views/web_footer_companies/index.html.erb mode change 100644 => 100755 app/views/web_footer_companies/new.html.erb mode change 100644 => 100755 app/views/wechats/bind.html.erb mode change 100644 => 100755 app/views/wechats/login.html.erb mode change 100644 => 100755 app/views/wechats/open_wechat.html.erb mode change 100644 => 100755 app/views/wechats/user_activities.html.erb mode change 100644 => 100755 app/views/welcome/_ccf_header.html.erb mode change 100644 => 100755 app/views/welcome/_course_list.html.erb mode change 100644 => 100755 app/views/welcome/_guidance_mask.html.erb mode change 100644 => 100755 app/views/welcome/_hot_projects_list.html.erb mode change 100644 => 100755 app/views/welcome/_link_to_another.html.erb mode change 100644 => 100755 app/views/welcome/_management_no_data.html.erb mode change 100644 => 100755 app/views/welcome/_more_course.html.erb mode change 100644 => 100755 app/views/welcome/_no_course_title.html.erb mode change 100644 => 100755 app/views/welcome/_no_data.html.erb mode change 100644 => 100755 app/views/welcome/_one_btn_mask_pop.html.erb mode change 100644 => 100755 app/views/welcome/_search_all_results.html.erb mode change 100644 => 100755 app/views/welcome/_search_attachment_results.html.erb mode change 100644 => 100755 app/views/welcome/_search_bar.html.erb mode change 100644 => 100755 app/views/welcome/_search_course.html.erb mode change 100644 => 100755 app/views/welcome/_search_course_results.html.erb mode change 100644 => 100755 app/views/welcome/_search_memo_results.html.erb mode change 100644 => 100755 app/views/welcome/_search_project.html.erb mode change 100644 => 100755 app/views/welcome/_search_project_results.html.erb mode change 100644 => 100755 app/views/welcome/_search_syllabus_results.html.erb mode change 100644 => 100755 app/views/welcome/_search_user_results.html.erb mode change 100644 => 100755 app/views/welcome/_two_btn_mask_pop.html.erb mode change 100644 => 100755 app/views/welcome/_update_nickname.html.erb mode change 100644 => 100755 app/views/welcome/_wei_xin.html.erb mode change 100644 => 100755 app/views/welcome/ccf.html.erb mode change 100644 => 100755 app/views/welcome/contest.html.erb mode change 100644 => 100755 app/views/welcome/course.html.erb mode change 100644 => 100755 app/views/welcome/index.html.erb mode change 100644 => 100755 app/views/welcome/robots.html.erb mode change 100644 => 100755 app/views/welcome/search.html.erb mode change 100644 => 100755 app/views/welcome/search.js.erb mode change 100644 => 100755 app/views/wiki/_content.html.erb mode change 100644 => 100755 app/views/wiki/_sidebar.html.erb mode change 100644 => 100755 app/views/wiki/annotate.html.erb mode change 100644 => 100755 app/views/wiki/date_index.html.erb mode change 100644 => 100755 app/views/wiki/destroy.html.erb mode change 100644 => 100755 app/views/wiki/diff.html.erb mode change 100644 => 100755 app/views/wiki/edit.html.erb mode change 100644 => 100755 app/views/wiki/export.html.erb mode change 100644 => 100755 app/views/wiki/export_multiple.html.erb mode change 100644 => 100755 app/views/wiki/history.html.erb mode change 100644 => 100755 app/views/wiki/index.api.rsb mode change 100644 => 100755 app/views/wiki/index.html.erb mode change 100644 => 100755 app/views/wiki/rename.html.erb mode change 100644 => 100755 app/views/wiki/show.api.rsb mode change 100644 => 100755 app/views/wiki/show.html.erb mode change 100644 => 100755 app/views/wikis/destroy.html.erb mode change 100644 => 100755 app/views/wikis/edit.js.erb mode change 100644 => 100755 app/views/words/_feedback.html.erb mode change 100644 => 100755 app/views/words/_journal_reply.html.erb mode change 100644 => 100755 app/views/words/_journal_reply_items.html.erb mode change 100644 => 100755 app/views/words/_message.html.erb mode change 100644 => 100755 app/views/words/_new.html.erb mode change 100644 => 100755 app/views/words/_new_respond.html.erb mode change 100644 => 100755 app/views/words/_new_respond_course.html.erb mode change 100644 => 100755 app/views/words/_new_respond_project.html.erb mode change 100644 => 100755 app/views/words/_pre_show.html.erb mode change 100644 => 100755 app/views/words/back.js.erb mode change 100644 => 100755 app/views/words/create.js.erb mode change 100644 => 100755 app/views/words/create_reply.js.erb mode change 100644 => 100755 app/views/words/destroy.js.erb mode change 100644 => 100755 app/views/words/destroyJournal.js.erb mode change 100644 => 100755 app/views/words/leave_contest_work_message.js.erb mode change 100644 => 100755 app/views/words/leave_homework_message.js.erb mode change 100644 => 100755 app/views/words/leave_topic_message.js.erb mode change 100644 => 100755 app/views/words/more.js.erb mode change 100644 => 100755 app/views/words/new.js.erb mode change 100644 => 100755 app/views/words/reply_to_contest_work.js.erb mode change 100644 => 100755 app/views/words/reply_to_graduation_topic.js.erb mode change 100644 => 100755 app/views/words/reply_to_homework.js.erb mode change 100644 => 100755 app/views/words/reply_to_syllabus.js.erb mode change 100644 => 100755 app/views/workflows/_action_menu.html.erb mode change 100644 => 100755 app/views/workflows/_form.html.erb mode change 100644 => 100755 app/views/workflows/copy.html.erb mode change 100644 => 100755 app/views/workflows/edit.html.erb mode change 100644 => 100755 app/views/workflows/index.html.erb mode change 100644 => 100755 app/views/workflows/permissions.html.erb mode change 100644 => 100755 app/views/works/_alert_score_open_modal.html.erb mode change 100644 => 100755 app/views/works/_contest_work_form.html.erb mode change 100644 => 100755 app/views/works/_set_score_rule.html.erb mode change 100644 => 100755 app/views/works/_work_group_attr.html.erb mode change 100644 => 100755 app/views/works/_work_index_list.html.erb mode change 100644 => 100755 app/views/works/_work_search_form.html.erb mode change 100644 => 100755 app/views/works/alert_score_open_modal.js.erb mode change 100644 => 100755 app/views/works/destroy.js.erb mode change 100644 => 100755 app/views/works/edit.html.erb mode change 100644 => 100755 app/views/works/index.html.erb mode change 100644 => 100755 app/views/works/index.js.erb mode change 100644 => 100755 app/views/works/open_contestant_works.js.erb mode change 100644 => 100755 app/views/works/score_rule_set.js.erb mode change 100644 => 100755 app/views/works/set_score_open.js.erb mode change 100644 => 100755 app/views/works/set_score_rule.js.erb mode change 100644 => 100755 app/views/zipdown/assort.html.erb mode change 100644 => 100755 app/views/zipdown/file_not_fond.js.erb mode change 100644 => 100755 app/views/zipdown/no_file_dowmload.js.erb diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb old mode 100644 new mode 100755 index d7f04759..eba39722 --- a/app/api/mobile/api.rb +++ b/app/api/mobile/api.rb @@ -62,9 +62,14 @@ module Mobile end def memo_authenticate! - if LocalSetting.first.try(:exam) && !current_user.admin? - redirect '/' + pass = (request.path.match(/memos\/\d+/).present? && !request.path.include?("reply")) || + request.path.include?("get_memos_list") || + request.path.include?("memos?page=") || request.path.match(/memos$/).present? + + unless pass + error!('401 Unauthorized', 401) unless current_user end + end def discusses_authenticate! @@ -154,7 +159,6 @@ module Mobile mount Apis::Sources mount Apis::Careers mount Apis::Assets - mount Apis::Ecloud diff --git a/app/api/mobile/apis/activities.rb b/app/api/mobile/apis/activities.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/apis/assets.rb b/app/api/mobile/apis/assets.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/apis/auth.rb b/app/api/mobile/apis/auth.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/apis/blog_comments.rb b/app/api/mobile/apis/blog_comments.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/apis/careers.rb b/app/api/mobile/apis/careers.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/apis/comments.rb b/app/api/mobile/apis/comments.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/apis/discusses.rb b/app/api/mobile/apis/discusses.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/apis/ecloud.rb b/app/api/mobile/apis/ecloud.rb deleted file mode 100644 index 23725226..00000000 --- a/app/api/mobile/apis/ecloud.rb +++ /dev/null @@ -1,19 +0,0 @@ -# encoding=utf-8 -module Mobile - module Apis - class Ecloud < Grape::API - # before {authenticate!} - content_type :json, 'application/json;charset=UTF-8' - - resources :ecloud do - - desc "ecloud接口测试" - - post 'list' do - EcloudService.new.list(params) - end - end - - end - end -end \ No newline at end of file diff --git a/app/api/mobile/apis/games.rb b/app/api/mobile/apis/games.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/apis/helers.rb b/app/api/mobile/apis/helers.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/apis/homeworks.rb b/app/api/mobile/apis/homeworks.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/apis/issues.rb b/app/api/mobile/apis/issues.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/apis/journal_for_messages.rb b/app/api/mobile/apis/journal_for_messages.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/apis/memos.rb b/app/api/mobile/apis/memos.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/apis/messages.rb b/app/api/mobile/apis/messages.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/apis/new_comment.rb b/app/api/mobile/apis/new_comment.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/apis/newss.rb b/app/api/mobile/apis/newss.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/apis/praise.rb b/app/api/mobile/apis/praise.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/apis/projects.rb b/app/api/mobile/apis/projects.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/apis/resources.rb b/app/api/mobile/apis/resources.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/apis/shixuns.rb b/app/api/mobile/apis/shixuns.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/apis/sources.rb b/app/api/mobile/apis/sources.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/apis/syllabuses.rb b/app/api/mobile/apis/syllabuses.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/apis/upgrade.rb b/app/api/mobile/apis/upgrade.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/apis/watches.rb b/app/api/mobile/apis/watches.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/apis/whomeworks.rb b/app/api/mobile/apis/whomeworks.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/activity.rb b/app/api/mobile/entities/activity.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/anonymous_works_params.rb b/app/api/mobile/entities/anonymous_works_params.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/attachment.rb b/app/api/mobile/entities/attachment.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/auth.rb b/app/api/mobile/entities/auth.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/blog_comment.rb b/app/api/mobile/entities/blog_comment.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/comment.rb b/app/api/mobile/entities/comment.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/course.rb b/app/api/mobile/entities/course.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/course_dynamic.rb b/app/api/mobile/entities/course_dynamic.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/course_group.rb b/app/api/mobile/entities/course_group.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/courses/board.rb b/app/api/mobile/entities/courses/board.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/courses/comment.rb b/app/api/mobile/entities/courses/comment.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/courses/message.rb b/app/api/mobile/entities/courses/message.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/exercise.rb b/app/api/mobile/entities/exercise.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/game.rb b/app/api/mobile/entities/game.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/homework.rb b/app/api/mobile/entities/homework.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/homework_attach.rb b/app/api/mobile/entities/homework_attach.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/homework_jours.rb b/app/api/mobile/entities/homework_jours.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/homeworkscore.rb b/app/api/mobile/entities/homeworkscore.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/issue.rb b/app/api/mobile/entities/issue.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/journal.rb b/app/api/mobile/entities/journal.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/jours.rb b/app/api/mobile/entities/jours.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/member.rb b/app/api/mobile/entities/member.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/message.rb b/app/api/mobile/entities/message.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/news.rb b/app/api/mobile/entities/news.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/project.rb b/app/api/mobile/entities/project.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/project_member.rb b/app/api/mobile/entities/project_member.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/response.rb b/app/api/mobile/entities/response.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/short_user.rb b/app/api/mobile/entities/short_user.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/student_work.rb b/app/api/mobile/entities/student_work.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/syllabus.rb b/app/api/mobile/entities/syllabus.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/user.rb b/app/api/mobile/entities/user.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/users/course.rb b/app/api/mobile/entities/users/course.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/users/tiding.rb b/app/api/mobile/entities/users/tiding.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/entities/whomework.rb b/app/api/mobile/entities/whomework.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/exceptions/auth_exception.rb b/app/api/mobile/exceptions/auth_exception.rb old mode 100644 new mode 100755 diff --git a/app/api/mobile/middleware/error_handler.rb b/app/api/mobile/middleware/error_handler.rb old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/applied_project.js b/app/assets/javascripts/applied_project.js old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/apply_project_masters.js b/app/assets/javascripts/apply_project_masters.js old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/article_homepages.js.coffee b/app/assets/javascripts/article_homepages.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/attachment_type_edit.js b/app/assets/javascripts/attachment_type_edit.js old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/careers.js.coffee b/app/assets/javascripts/careers.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/categories.js.coffee b/app/assets/javascripts/categories.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/challenges.js.coffee b/app/assets/javascripts/challenges.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/codes.js.coffee b/app/assets/javascripts/codes.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/colleges.js.coffee b/app/assets/javascripts/colleges.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/competition_teams.js.coffee b/app/assets/javascripts/competition_teams.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/competitions.js.coffee b/app/assets/javascripts/competitions.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/contest_members.js.coffee b/app/assets/javascripts/contest_members.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/contestant_works.js.coffee b/app/assets/javascripts/contestant_works.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/contests.js.coffee b/app/assets/javascripts/contests.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/cooperates.js.coffee b/app/assets/javascripts/cooperates.js.coffee deleted file mode 100644 index 76156794..00000000 --- a/app/assets/javascripts/cooperates.js.coffee +++ /dev/null @@ -1,3 +0,0 @@ -# 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/javascripts/cooperation.js.coffee b/app/assets/javascripts/cooperation.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/debates.js.coffee b/app/assets/javascripts/debates.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/department.js.coffee b/app/assets/javascripts/department.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/discusses.js.coffee b/app/assets/javascripts/discusses.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/ec.js.coffee b/app/assets/javascripts/ec.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/ec_course_achievement_methods.js.coffee b/app/assets/javascripts/ec_course_achievement_methods.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/ec_course_evaluation_subitems.js.coffee b/app/assets/javascripts/ec_course_evaluation_subitems.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/ec_course_evaluations.js.coffee b/app/assets/javascripts/ec_course_evaluations.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/ec_course_supports.js.coffee b/app/assets/javascripts/ec_course_supports.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/ec_course_targets.js.coffee b/app/assets/javascripts/ec_course_targets.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/ec_courses.js.coffee b/app/assets/javascripts/ec_courses.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/ec_graduation_requirements.js.coffee b/app/assets/javascripts/ec_graduation_requirements.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/ec_graduation_subitems.js.coffee b/app/assets/javascripts/ec_graduation_subitems.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/ec_graduations.js.coffee b/app/assets/javascripts/ec_graduations.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/ec_major_schools.js.coffee b/app/assets/javascripts/ec_major_schools.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/ec_majors.js.coffee b/app/assets/javascripts/ec_majors.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/ec_training_objectives.js.coffee b/app/assets/javascripts/ec_training_objectives.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/ec_training_subitems.js.coffee b/app/assets/javascripts/ec_training_subitems.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/ec_years.js.coffee b/app/assets/javascripts/ec_years.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/ecloud.js.coffee b/app/assets/javascripts/ecloud.js.coffee deleted file mode 100644 index 76156794..00000000 --- a/app/assets/javascripts/ecloud.js.coffee +++ /dev/null @@ -1,3 +0,0 @@ -# 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/javascripts/ecs.js.coffee b/app/assets/javascripts/ecs.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/enterprises.js.coffee b/app/assets/javascripts/enterprises.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/exercise_bank.js.coffee b/app/assets/javascripts/exercise_bank.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/forums.js b/app/assets/javascripts/forums.js old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/games.js.coffee b/app/assets/javascripts/games.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/graduation_tasks.js.coffee b/app/assets/javascripts/graduation_tasks.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/graduation_topics.js.coffee b/app/assets/javascripts/graduation_topics.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/graduation_works.js.coffee b/app/assets/javascripts/graduation_works.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/homepages.js.coffee b/app/assets/javascripts/homepages.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/homework_bank.js.coffee b/app/assets/javascripts/homework_bank.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/iframes.js.coffee b/app/assets/javascripts/iframes.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/kubernete.js.coffee b/app/assets/javascripts/kubernete.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/local_settings.js.coffee b/app/assets/javascripts/local_settings.js.coffee deleted file mode 100644 index 76156794..00000000 --- a/app/assets/javascripts/local_settings.js.coffee +++ /dev/null @@ -1,3 +0,0 @@ -# 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/javascripts/management.js.coffee b/app/assets/javascripts/management.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/managements.js.coffee b/app/assets/javascripts/managements.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/mark_down.js.coffee b/app/assets/javascripts/mark_down.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/memos.js b/app/assets/javascripts/memos.js old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/myshixuns.js.coffee b/app/assets/javascripts/myshixuns.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/no_uses.js b/app/assets/javascripts/no_uses.js old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/notificationcomments.js.coffee b/app/assets/javascripts/notificationcomments.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/oauth.js.coffee b/app/assets/javascripts/oauth.js.coffee deleted file mode 100644 index 76156794..00000000 --- a/app/assets/javascripts/oauth.js.coffee +++ /dev/null @@ -1,3 +0,0 @@ -# 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/javascripts/open_source_projects.js b/app/assets/javascripts/open_source_projects.js old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/org_courses.js.coffee b/app/assets/javascripts/org_courses.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/org_document_comment.js.coffee b/app/assets/javascripts/org_document_comment.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/org_member.js.coffee b/app/assets/javascripts/org_member.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/org_projects.js.coffee b/app/assets/javascripts/org_projects.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/org_subfields.js.coffee b/app/assets/javascripts/org_subfields.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/organizations.js.coffee b/app/assets/javascripts/organizations.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/praise_tread.js b/app/assets/javascripts/praise_tread.js old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/pull_requests.js.coffee b/app/assets/javascripts/pull_requests.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/quality_analyses.js.coffee b/app/assets/javascripts/quality_analyses.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/question_banks.js.coffee b/app/assets/javascripts/question_banks.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/school.js b/app/assets/javascripts/school.js old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/shares.js b/app/assets/javascripts/shares.js old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/shield_activities.js.coffee b/app/assets/javascripts/shield_activities.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/shield_wechat_messages.js.coffee b/app/assets/javascripts/shield_wechat_messages.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/shixuns.js.coffee b/app/assets/javascripts/shixuns.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/softapplications.js b/app/assets/javascripts/softapplications.js old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/stages.js.coffee b/app/assets/javascripts/stages.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/statistics.js.coffee b/app/assets/javascripts/statistics.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/sub_document_comments.js.coffee b/app/assets/javascripts/sub_document_comments.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/sub_domains.js.coffee b/app/assets/javascripts/sub_domains.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/subfield_subdomain_dirs.js.coffee b/app/assets/javascripts/subfield_subdomain_dirs.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/subjects.js.coffee b/app/assets/javascripts/subjects.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/syllabus_member.js.coffee b/app/assets/javascripts/syllabus_member.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/syllabuses.js.coffee b/app/assets/javascripts/syllabuses.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/system_log.js.coffee b/app/assets/javascripts/system_log.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/system_messages.js.coffee b/app/assets/javascripts/system_messages.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/tasks.js.coffee b/app/assets/javascripts/tasks.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/teachers.js b/app/assets/javascripts/teachers.js old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/training_tasks.js.coffee b/app/assets/javascripts/training_tasks.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/trainings.js.coffee b/app/assets/javascripts/trainings.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/works.js.coffee b/app/assets/javascripts/works.js.coffee old mode 100644 new mode 100755 diff --git a/app/assets/javascripts/zipdown.js b/app/assets/javascripts/zipdown.js old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/applied_project.css b/app/assets/stylesheets/applied_project.css old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/apply_project_masters.css b/app/assets/stylesheets/apply_project_masters.css old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/article_homepages.css.scss b/app/assets/stylesheets/article_homepages.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/attachment_type_edit.css b/app/assets/stylesheets/attachment_type_edit.css old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/careers.css.scss b/app/assets/stylesheets/careers.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/categories.css.scss b/app/assets/stylesheets/categories.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/challenges.css.scss b/app/assets/stylesheets/challenges.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/codes.css.scss b/app/assets/stylesheets/codes.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/colleges.css.scss b/app/assets/stylesheets/colleges.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/competition_teams.css.scss b/app/assets/stylesheets/competition_teams.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/competitions.css.scss b/app/assets/stylesheets/competitions.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/contest_members.css.scss b/app/assets/stylesheets/contest_members.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/contestant_works.css.scss b/app/assets/stylesheets/contestant_works.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/contests.css.scss b/app/assets/stylesheets/contests.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/cooperates.css.scss b/app/assets/stylesheets/cooperates.css.scss deleted file mode 100644 index e362881e..00000000 --- a/app/assets/stylesheets/cooperates.css.scss +++ /dev/null @@ -1,3 +0,0 @@ -// Place all the styles related to the cooperates controller here. -// They will automatically be included in application.css. -// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/assets/stylesheets/cooperation.css.scss b/app/assets/stylesheets/cooperation.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/debates.css.scss b/app/assets/stylesheets/debates.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/department.css.scss b/app/assets/stylesheets/department.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/discusses.css.scss b/app/assets/stylesheets/discusses.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/ec.css.scss b/app/assets/stylesheets/ec.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/ec_course_achievement_methods.css.scss b/app/assets/stylesheets/ec_course_achievement_methods.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/ec_course_evaluation_subitems.css.scss b/app/assets/stylesheets/ec_course_evaluation_subitems.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/ec_course_evaluations.css.scss b/app/assets/stylesheets/ec_course_evaluations.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/ec_course_supports.css.scss b/app/assets/stylesheets/ec_course_supports.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/ec_course_targets.css.scss b/app/assets/stylesheets/ec_course_targets.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/ec_courses.css.scss b/app/assets/stylesheets/ec_courses.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/ec_graduation_requirements.css.scss b/app/assets/stylesheets/ec_graduation_requirements.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/ec_graduation_subitems.css.scss b/app/assets/stylesheets/ec_graduation_subitems.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/ec_graduations.css.scss b/app/assets/stylesheets/ec_graduations.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/ec_major_schools.css.scss b/app/assets/stylesheets/ec_major_schools.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/ec_majors.css.scss b/app/assets/stylesheets/ec_majors.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/ec_training_objectives.css.scss b/app/assets/stylesheets/ec_training_objectives.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/ec_training_subitems.css.scss b/app/assets/stylesheets/ec_training_subitems.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/ec_years.css.scss b/app/assets/stylesheets/ec_years.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/ecloud.css.scss b/app/assets/stylesheets/ecloud.css.scss deleted file mode 100644 index 2152c821..00000000 --- a/app/assets/stylesheets/ecloud.css.scss +++ /dev/null @@ -1,3 +0,0 @@ -// Place all the styles related to the ecloud controller here. -// They will automatically be included in application.css. -// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/assets/stylesheets/ecs.css.scss b/app/assets/stylesheets/ecs.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/enterprises.css.scss b/app/assets/stylesheets/enterprises.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/exercise_bank.css.scss b/app/assets/stylesheets/exercise_bank.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/forums.css b/app/assets/stylesheets/forums.css old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/games.css.scss b/app/assets/stylesheets/games.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/graduation_tasks.css.scss b/app/assets/stylesheets/graduation_tasks.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/graduation_topics.css.scss b/app/assets/stylesheets/graduation_topics.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/graduation_works.css.scss b/app/assets/stylesheets/graduation_works.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/homepages.css.scss b/app/assets/stylesheets/homepages.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/homework_bank.css.scss b/app/assets/stylesheets/homework_bank.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/iframes.css.scss b/app/assets/stylesheets/iframes.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/kubernete.css.scss b/app/assets/stylesheets/kubernete.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/local_settings.css.scss b/app/assets/stylesheets/local_settings.css.scss deleted file mode 100644 index 4cad8d64..00000000 --- a/app/assets/stylesheets/local_settings.css.scss +++ /dev/null @@ -1,3 +0,0 @@ -// Place all the styles related to the local_settings controller here. -// They will automatically be included in application.css. -// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/assets/stylesheets/management.css.scss b/app/assets/stylesheets/management.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/managements.css.scss b/app/assets/stylesheets/managements.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/mark_down.css.scss b/app/assets/stylesheets/mark_down.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/memos.css b/app/assets/stylesheets/memos.css old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/myshixuns.css.scss b/app/assets/stylesheets/myshixuns.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/no_uses.css b/app/assets/stylesheets/no_uses.css old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/notificationcomments.css.scss b/app/assets/stylesheets/notificationcomments.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/oauth.css.scss b/app/assets/stylesheets/oauth.css.scss deleted file mode 100644 index e1c1a010..00000000 --- a/app/assets/stylesheets/oauth.css.scss +++ /dev/null @@ -1,3 +0,0 @@ -// Place all the styles related to the oauth controller here. -// They will automatically be included in application.css. -// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/assets/stylesheets/open_source_projects.css b/app/assets/stylesheets/open_source_projects.css old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/org_courses.css.scss b/app/assets/stylesheets/org_courses.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/org_document_comment.css.scss b/app/assets/stylesheets/org_document_comment.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/org_member.css.scss b/app/assets/stylesheets/org_member.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/org_projects.css.scss b/app/assets/stylesheets/org_projects.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/org_subfields.css.scss b/app/assets/stylesheets/org_subfields.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/organizations.css.scss b/app/assets/stylesheets/organizations.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/praise_tread.css b/app/assets/stylesheets/praise_tread.css old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/pull_requests.css.scss b/app/assets/stylesheets/pull_requests.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/quality_analyses.css.scss b/app/assets/stylesheets/quality_analyses.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/question_banks.css.scss b/app/assets/stylesheets/question_banks.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/scaffold.css b/app/assets/stylesheets/scaffold.css old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/scaffolds.css.scss b/app/assets/stylesheets/scaffolds.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/school.css b/app/assets/stylesheets/school.css old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/shares.css b/app/assets/stylesheets/shares.css old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/shield_activities.css.scss b/app/assets/stylesheets/shield_activities.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/shield_wechat_messages.css.scss b/app/assets/stylesheets/shield_wechat_messages.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/shixuns.css.scss b/app/assets/stylesheets/shixuns.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/softapplications.css b/app/assets/stylesheets/softapplications.css old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/stages.css.scss b/app/assets/stylesheets/stages.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/statistics.css.scss b/app/assets/stylesheets/statistics.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/sub_document_comments.css.scss b/app/assets/stylesheets/sub_document_comments.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/sub_domains.css.scss b/app/assets/stylesheets/sub_domains.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/subfield_subdomain_dirs.css.scss b/app/assets/stylesheets/subfield_subdomain_dirs.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/subjects.css.scss b/app/assets/stylesheets/subjects.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/syllabus_member.css.scss b/app/assets/stylesheets/syllabus_member.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/syllabuses.css.scss b/app/assets/stylesheets/syllabuses.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/system_log.css.scss b/app/assets/stylesheets/system_log.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/system_messages.css.scss b/app/assets/stylesheets/system_messages.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/tasks.css.scss b/app/assets/stylesheets/tasks.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/teachers.css b/app/assets/stylesheets/teachers.css old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/training_tasks.css.scss b/app/assets/stylesheets/training_tasks.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/trainings.css.scss b/app/assets/stylesheets/trainings.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/works.css.scss b/app/assets/stylesheets/works.css.scss old mode 100644 new mode 100755 diff --git a/app/assets/stylesheets/zipdown.css b/app/assets/stylesheets/zipdown.css old mode 100644 new mode 100755 diff --git a/app/controllers/account_controller.rb b/app/controllers/account_controller.rb old mode 100644 new mode 100755 index 88c435a6..48122e3c --- a/app/controllers/account_controller.rb +++ b/app/controllers/account_controller.rb @@ -24,9 +24,9 @@ class AccountController < ApplicationController skip_before_filter :check_if_login_required skip_before_filter :check_authentication, :only => [:login, :logout, :user_join, :avatar, :authentication, :professional_certification, :security_settings, :change_psd, :user_info] before_filter :auth_login1, :only => [:avatar, :authentication, :professional_certification, :security_settings, :change_psd, :reset_psd, :user_info] - skip_before_filter :verify_authenticity_token, :only =>[:codepedia_login, :login, :register] + skip_before_filter :verify_authenticity_token, :only =>[:codepedia_login, :login] before_filter :require_login, only: [:avatar, :authentication, :professional_certification, :security_settings, :change_psd, :user_info, :user_auth, :apply_auth, :apply_pro_certification, :check_student_id, - :bind_email, :change_or_bind] + :bind_email, :change_or_bind] include ApplicationHelper include AccountHelper # Login request and validation @@ -141,7 +141,6 @@ class AccountController < ApplicationController @resubmit = "#{code}" @agreement = Help.first @cooperation = Cooperation.all - @url = params[:url] @com_coop_img = CooImg.where(:img_type => 'com_coop').order("position asc") @edu_coop_img = CooImg.where(:img_type => 'edu_coop').order("position asc") @@ -209,7 +208,7 @@ class AccountController < ApplicationController end def insert_suggest - content = "

[#{params[:question_kind]}]

" + "

问题页面网址:#{params[:url]}

" + params[:description] + content = "

[#{params[:question_kind]}]

" + params[:description] PrivateMessage.create(:user_id => User.current.id, :target_id => 1, :sender_id => User.current.id, :receiver_id => 1, :content => content, :send_time => Time.now, :status => 1) PrivateMessage.create(:user_id => 1, :target_id => User.current.id, :sender_id => User.current.id, :receiver_id => 1, :content => content, :send_time => Time.now, :status => 0) redirect_to message_detail_user_path(User.current, :user_id => 1) @@ -437,15 +436,7 @@ class AccountController < ApplicationController # 注册完/绑定邮箱 后完善资料 def user_info @user = User.current - - #是否是Oschina过来的 - @is_ecoder_user = @user.ecoder_user_id.to_i>0 - - #是否没设置过密码 - @is_set_password = @user.hashed_password.present? - if request.get? - # 如果是登录的请求进来,则需要判断登录名是否合法 if (@user.login =~ /(^(?=.*?[a-zA-Z]).*$)/).nil? || !(@user.login =~ /[@#\$%\^&\*\.]+/).nil? @login_error = true @@ -463,24 +454,9 @@ class AccountController < ApplicationController apply_user.update_all(:status => 2) unless apply_user.blank? end - - if @is_ecoder_user && !@is_set_password - @user.password = params[:new_password] - @user.password_confirmation = params[:new_password_confirmation] - - if @user.password.size<8 - @password_len_error = true - render :user_info and return - end - - if @user.password != @user.password_confirmation - @password_match_error = true - render :user_info and return - end - end - @user.lastname = params[:lastname] @user.firstname = "" + @user.professional_certification = 1 @user.show_realname = params[:hide_realname] ? 0 : 1 @user.nickname = params[:hide_realname] ? params[:nickname] : params[:lastname] @user.pref.attributes = params[:pref] @@ -499,11 +475,23 @@ class AccountController < ApplicationController @se.gender = params[:sex] # @se.location = params[:province] if params[:province] # @se.location_city = params[:city] if params[:city] + pre_identity = @se.identity @se.identity = params[:identity].to_i if params[:identity] if @se.identity == 0 + # 以前不是老师,却变成老师身份的 + if @user.certification == 1 && pre_identity != 0 + @user.update_attributes(:certification => 0) + apply_action = ApplyAction.where(:user_id => @user.id, :container_type => "TrialAuthorization", :status => 0).first + if apply_action.present? + apply_action.update_attributes(:status => 1, :noticed => 1) + else + ApplyAction.create(:user_id => @user.id, :container_type => "TrialAuthorization", :ip_addr => request.remote_ip, :status => 1, :noticed => 1) + end + end @se.technical_title = params[:te_technical_title] if params[:te_technical_title] @se.student_id = nil elsif @se.identity == 1 + @se.student_id = params[:no] if params[:no] @se.technical_title = nil elsif @se.identity == 2 @@ -520,7 +508,6 @@ class AccountController < ApplicationController school_ids = School.where(:auto_users_trial => 1).map(&:id) # 授权单位中的只有学生身份才自动授权,且创建试用授权记录 if !@se.school.nil? && school_ids.include?(@se.school_id) && @se.identity == 1 - @user.certification = 1 @user.update_attributes(:certification => 1) apply_action = ApplyAction.where(:user_id => @user.id, :container_type => "TrialAuthorization", :status => 0).first if apply_action.present? @@ -550,7 +537,6 @@ class AccountController < ApplicationController return else @user.login = lg - logger.info "save user: #{@user.errors}" end end end @@ -678,16 +664,12 @@ class AccountController < ApplicationController req = Hash.new(false) req[:valid] = false type = params[:type].to_i - if Redmine::Configuration['gitlab_address'].include?("test") && params[:code] == "134790" - req[:valid] = true + if type == 1 || type == 2 || type == 4 || type == 6 || params[:phone] =~ /^1\d{10}$/ + code = VerificationCode.where(:phone => params[:phone], :code => params[:code], :code_type => (params[:type].to_i != 1 && params[:type].to_i != 2 && params[:type].to_i != 4) ? 2 : params[:type].to_i ).last else - if type == 1 || type == 2 || type == 4 || type == 6 || params[:phone] =~ /^1\d{10}$/ - code = VerificationCode.where(:phone => params[:phone], :code => params[:code], :code_type => (params[:type].to_i != 1 && params[:type].to_i != 2 && params[:type].to_i != 4) ? 2 : params[:type].to_i ).last - else - code = VerificationCode.where(:email => params[:phone], :code => params[:code], :code_type => params[:type].to_i).last - end - req[:valid] = !code.nil? && (Time.now.to_i - code.created_at.to_i) <= 10*60 + code = VerificationCode.where(:email => params[:phone], :code => params[:code], :code_type => params[:type].to_i).last end + req[:valid] = !code.nil? && (Time.now.to_i - code.created_at.to_i) <= 10*60 render :json => req end @@ -892,15 +874,29 @@ class AccountController < ApplicationController @user = User.current @se = @user.extensions # 已授权的用户修改单位名称,需要重新授权 - if (@se.school_id != params[:occupation].to_i || @se.identity != params[:identity].to_i) && @user.certification == 1 + if @se.school_id != params[:occupation].to_i && @user.certification == 1 @user.certification = 0 apply_user = ApplyAction.where(:user_id => @user.id, :container_type => "TrialAuthorization") apply_user.update_all(:status => 2) unless apply_user.blank? end @se.school_id = params[:occupation] @se.department_id = params[:department_id] + pre_identity = @se.identity @se.identity = params[:identity].to_i if params[:identity] if @se.identity == 0 + logger.info("#####certification #{@user.certification}") + logger.info("#####pre_identity #{pre_identity}") + # 以前不是老师,却变成老师身份的 + if @user.certification == 1 && pre_identity != 0 + @user.update_attributes(:certification => 0) + apply_action = ApplyAction.where(:user_id => @user.id, :container_type => "TrialAuthorization", :status => 0).first + logger.info("#####apply_action #{apply_action.try(:id)}") + if apply_action.present? + apply_action.update_attributes(:status => 1, :noticed => 1) + else + ApplyAction.create(:user_id => @user.id, :container_type => "TrialAuthorization", :ip_addr => request.remote_ip, :status => 1, :noticed => 1) + end + end @se.technical_title = params[:te_technical_title] if params[:te_technical_title] @se.student_id = nil elsif @se.identity == 1 @@ -923,46 +919,47 @@ class AccountController < ApplicationController end # 提交认证 - if params[:save_or_submit] && params[:save_or_submit] == "1" - if @se.identity == 1 - if ApplyUserAuthentication.where(:user_id => @user.id, :status => 0, :auth_type => 2).count == 0 - ApplyUserAuthentication.create(:user_id => @user.id, :status => 0, :auth_type => 2) - begin - status = Trustie::Sms.send(mobile: '18173242757', send_type:'apply_pro_certification' , name: '管理员') - rescue => e - Rails.logger.error "发送验证码出错: #{e}" - end - end - else - if File.exist?(diskfile2) - ApplyUserAuthentication.create(:user_id => @user.id, :status => 0, :auth_type => 2) - begin - status = Trustie::Sms.send(mobile: '18173242757', send_type:'apply_pro_certification' , name: '管理员') - rescue => e - Rails.logger.error "发送验证码出错: #{e}" - end - end - end - end + # if params[:save_or_submit] && params[:save_or_submit] == "1" + # if @se.identity == 1 + # if ApplyUserAuthentication.where(:user_id => @user.id, :status => 0, :auth_type => 2).count == 0 + # ApplyUserAuthentication.create(:user_id => @user.id, :status => 0, :auth_type => 2) + # begin + # status = Trustie::Sms.send(mobile: '18173242757', send_type:'apply_pro_certification' , name: '管理员') + # rescue => e + # Rails.logger.error "发送验证码出错: #{e}" + # end + # end + # else + # if File.exist?(diskfile2) + # ApplyUserAuthentication.create(:user_id => @user.id, :status => 0, :auth_type => 2) + # begin + # status = Trustie::Sms.send(mobile: '18173242757', send_type:'apply_pro_certification' , name: '管理员') + # rescue => e + # Rails.logger.error "发送验证码出错: #{e}" + # end + # end + # end + # end # 只对试用授权的用户处理,修改职业信息的时候,如果变成了教师,则判断用户是否已加入示例课堂,没有则将其加入 if @se.identity == 0 && @user.certification == 1 join_ex_course @user end - if @user.certification != 1 && @se.identity == 1 - school_ids = School.where(:auto_users_trial => 1).map(&:id) - # 授权单位中的只有学生身份才自动授权,且创建试用授权记录 - if !@se.school.nil? && school_ids.include?(@se.school_id) - @user.update_attributes(:certification => 1) - apply_action = ApplyAction.where(:user_id => @user.id, :container_type => "TrialAuthorization", :status => 0).first - if apply_action.present? - apply_action.update_attributes(:status => 1, :noticed => 1) - else - ApplyAction.create(:user_id => @user.id, :container_type => "TrialAuthorization", :ip_addr => request.remote_ip, :status => 1, :noticed => 1) - end - end - end + if @user.certification != 1 && @se.identity == 1 + school_ids = School.where(:auto_users_trial => 1).map(&:id) + # 授权单位中的只有学生身份才自动授权,且创建试用授权记录 + if !@se.school.nil? && school_ids.include?(@se.school_id) + @user.update_attributes(:certification => 1) + apply_action = ApplyAction.where(:user_id => @user.id, :container_type => "TrialAuthorization", :status => 0).first + if apply_action.present? + apply_action.update_attributes(:status => 1, :noticed => 1) + else + ApplyAction.create(:user_id => @user.id, :container_type => "TrialAuthorization", :ip_addr => request.remote_ip, :status => 1, :noticed => 1) + end + end + end + end redirect_to my_account_path end @@ -1053,10 +1050,10 @@ class AccountController < ApplicationController apply_action = ApplyAction.where(:user_id => User.current.id, :container_type => "TrialAuthorization", :status => 0).first school_ids = School.where(:auto_users_trial => 1).map(&:id) user_ex = User.current.user_extensions - if user_ex.identity == 1 && user_ex.student_id.present? && !user_ex.school.nil? && school_ids.include?(user_ex.school_id) + if (user_ex.identity == 2 || (user_ex.identity == 1 && user_ex.student_id.present?)) && !user_ex.school.nil? && school_ids.include?(user_ex.school_id) User.current.update_attributes(:certification => 1) logger.warn("apply_trail #######{User.current.login} ****#{User.current.user_extensions.school_id}") - @tip = "申请已提交,我们将在1分钟内完成审核" + @tip = "申请已提交,我们将在尽快完成审核" unless apply_action.present? ApplyAction.create(:user_id => User.current.id, :status => 1, :ip_addr => request.remote_ip, :container_type => "TrialAuthorization", :apply_reason => params[:apply_reason]) else @@ -1070,14 +1067,14 @@ class AccountController < ApplicationController # Rails.logger.error "发送验证码出错: #{e}" # end elsif !User.current.user_extensions.school.nil? - @tip = "申请已提交,我们将在5分钟内完成审核" + @tip = "申请已提交,我们将尽快完成审核" unless apply_action.present? ApplyAction.create(:user_id => User.current.id, :status => 0, :ip_addr => request.remote_ip, :container_type => "TrialAuthorization", :apply_reason => params[:apply_reason]) - begin - status = Trustie::Sms.send(mobile:18175896138, send_type:'user_apply_auth',name:'管理员' ) - rescue => e - Rails.logger.error "发送验证码出错: #{e}" - end + ##begin + # status = Trustie::Sms.send(mobile:18175896138, send_type:'user_apply_auth',name:'管理员' ) + #rescue => e + # Rails.logger.error "发送验证码出错: #{e}" + # end end end if params[:from_user] && params[:from_user] == '1' @@ -1147,7 +1144,7 @@ class AccountController < ApplicationController reward_grade(@user, @user.id, 'Phone', 500) else @user.update_attributes!(:mail => params[:value]) - # Gitlab.client.edit_user_email(@user.gid, :email => @user.mail) if @user.gid + Gitlab.client.edit_user_email(@user.gid, :email => @user.mail) if @user.gid reward_grade(@user, @user.id, 'Mail', 500) end end @@ -1198,31 +1195,24 @@ class AccountController < ApplicationController def reset_psd if params[:lost_psd_phone] && params[:lost_psd_phone].strip != "" @user = User.where("phone = '#{params[:lost_psd_phone].to_s}'").first - code = VerificationCode.where(:phone => params[:lost_psd_phone], :code => params[:code], :code_type => 2).last - elsif params[:lost_psd_email] && params[:lost_psd_email].strip != "" @user = User.where("mail = '#{params[:lost_psd_email].to_s}'").first - code = VerificationCode.where(:email => params[:lost_psd_email], :code => params[:code], :code_type => 3).last end - if !code.nil? && (Time.now.to_i - code.created_at.to_i) <= 10*60 - if @user.present? - @user.password, @user.password_confirmation = params[:new_password], params[:new_password_confirmation] - if @user.save - Token.where(:user_id => @user, :action => "recovery").destroy_all - respond_to do |format| - format.js - end - else - redirect_to signin_path - return + if @user.present? + @user.password, @user.password_confirmation = params[:new_password], params[:new_password_confirmation] + if @user.save + Token.where(:user_id => @user, :action => "recovery").destroy_all + respond_to do |format| + format.js end else redirect_to signin_path return end else - @status = 0 + redirect_to signin_path + return end end diff --git a/app/controllers/activities_controller.rb b/app/controllers/activities_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/activity_notifys_controller.rb b/app/controllers/activity_notifys_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb old mode 100644 new mode 100755 index a51e0bf6..5f614ccd --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -34,7 +34,6 @@ class ApplicationController < ActionController::Base class_attribute :accept_rss_auth_actions class_attribute :model_object - #before_filter :update_system # skip_before_filter :verify_authenticity_token, @@ -1121,10 +1120,4 @@ class ApplicationController < ActionController::Base end true end - - def update_system - redirect_to "https://www.educoder.net/update.html" if Time.now > Time.new(2019, 4, 23) && - Time.now < Time.new(2019, 4, 23, 2) - end - end diff --git a/app/controllers/applied_project_controller.rb b/app/controllers/applied_project_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/apply_project_masters_controller.rb b/app/controllers/apply_project_masters_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/article_homepages_controller.rb b/app/controllers/article_homepages_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/at_controller.rb b/app/controllers/at_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/attachments_controller.rb b/app/controllers/attachments_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/auth_sources_controller.rb b/app/controllers/auth_sources_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/auto_completes_controller.rb b/app/controllers/auto_completes_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/avatar_controller.rb b/app/controllers/avatar_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/bids_controller.rb b/app/controllers/bids_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/blog_comments_controller.rb b/app/controllers/blog_comments_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/blogs_controller.rb b/app/controllers/blogs_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/boards_controller.rb b/app/controllers/boards_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/calendars_controller.rb b/app/controllers/calendars_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/careers_controller.rb b/app/controllers/careers_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/categories_controller.rb b/app/controllers/categories_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/challenges_controller.rb b/app/controllers/challenges_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/codes_controller.rb b/app/controllers/codes_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/colleges_controller.rb b/app/controllers/colleges_controller.rb old mode 100644 new mode 100755 index 2505a3bf..c814d957 --- a/app/controllers/colleges_controller.rb +++ b/app/controllers/colleges_controller.rb @@ -254,10 +254,7 @@ class CollegesController < ApplicationController def manager_auth # unless (User.current.admin? || DepartmentMember.where(:user_id => User.current.id, :department_id => @department.id).first.present?) - unless (User.current.admin? || - DepartmentMember.where(:user_id => User.current.id, :department_id => @department.id).first.present? || - (User.current.user_extensions.try(:school_id) == @department.school_id && User.current.user_extensions.try(:identity) == 0) || - (@department.school.try(:customer_id) && User.current.try(:partner).try(:customer_ids) && User.current.try(:partner).try(:customer_ids).include?(@department.school.try(:customer_id)))) + unless (User.current.admin? || DepartmentMember.where(:user_id => User.current.id, :department_id => @department.id).first.present? || (User.current.user_extensions.try(:school_id) == @department.school_id && User.current.user_extensions.try(:identity) == 0)) render_403 end end diff --git a/app/controllers/comments_controller.rb b/app/controllers/comments_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/competition_teams_controller.rb b/app/controllers/competition_teams_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/competitions_controller.rb b/app/controllers/competitions_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/contest_members_controller.rb b/app/controllers/contest_members_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/contestant_works_controller.rb b/app/controllers/contestant_works_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/contests_controller.rb b/app/controllers/contests_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/context_menus_controller.rb b/app/controllers/context_menus_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/cooperates_controller.rb b/app/controllers/cooperates_controller.rb deleted file mode 100644 index 12467a36..00000000 --- a/app/controllers/cooperates_controller.rb +++ /dev/null @@ -1,36 +0,0 @@ -class CooperatesController < ApplicationController - before_filter :require_login - before_filter :find_partner, only: [:partner_list] - before_filter :is_admin, only: [:partner_list] - - def partner_list - search = params[:search] - @schools = School.where(customer_id: @partner.customer_ids) - @all_count = @schools.size - - unless search.blank? - @schools = @schools.where("name like ?", "%#{search}%") - end - @search_count = @schools.size - @schools = paginateHelper @schools, 15 - @schools = @schools.includes(:courses, users: :user_extensions) - - respond_to do |format| - format.js - format.html{render :layout => "base_edu"} - end - end - - def find_partner - @partner = Partner.find_by_id(params[:id]) - render_404 if @partner.nil? - rescue ActiveRecord::RecordNotFound - render_404 - end - - def is_admin - unless User.current.admin? || (User.current.partner.present? && User.current.partner == @partner) - render_403 - end - end -end diff --git a/app/controllers/cooperation_controller.rb b/app/controllers/cooperation_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb old mode 100644 new mode 100755 index c8333750..ec4cbaaa --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -1482,14 +1482,14 @@ class CoursesController < ApplicationController def new if User.current.login? - if User.current.user_extensions.try(:identity) == 1 - render_403 - else - @course = Course.new - @course.safe_attributes = params[:course] - # month = Time.now.month - render :layout => 'base_edu' - end + @course_type = params[:course_type] ||= params[:course] + @issue_custom_fields = IssueCustomField.sorted.all + @trackers = Tracker.sorted.all + @course = Course.new + @course.safe_attributes = params[:course] + @syllabus = Syllabus.where("id = #{params[:syllabus_id].to_i}").first if params[:syllabus_id] + # month = Time.now.month + render :layout => 'base_edu' else redirect_to signin_url end diff --git a/app/controllers/custom_fields_controller.rb b/app/controllers/custom_fields_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/debates_controller.rb b/app/controllers/debates_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/department_controller.rb b/app/controllers/department_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/discuss_demos_controller.rb b/app/controllers/discuss_demos_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/discusses_controller.rb b/app/controllers/discusses_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/documents_controller.rb b/app/controllers/documents_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/ec_course_achievement_methods_controller.rb b/app/controllers/ec_course_achievement_methods_controller.rb old mode 100644 new mode 100755 index ecc74a67..39b42de4 --- a/app/controllers/ec_course_achievement_methods_controller.rb +++ b/app/controllers/ec_course_achievement_methods_controller.rb @@ -2,7 +2,6 @@ class EcCourseAchievementMethodsController < ApplicationController before_filter :find_target, :only => [:edit_course_target, :create_evaluation_methods] skip_before_filter :verify_authenticity_token, :only => [:create_evaluation_methods, :sync_course_data] - before_filter :find_ec_course, :only => [:index] include ApplicationHelper @@ -60,9 +59,11 @@ class EcCourseAchievementMethodsController < ApplicationController ############################################################### def index achievement_list = [] + # 具体工程课程 + ec_course = EcCourse.find params[:ec_course_id] # 课程的所有目标 - targets = @ec_course.ec_course_targets + targets = ec_course.ec_course_targets targets.each do |target| evaluate_data = [] # 评价环节 @@ -94,7 +95,7 @@ class EcCourseAchievementMethodsController < ApplicationController end achievement_list << {target_id: target.id, target_evaluate_data: evaluate_data} end - render :json => {achievement_list: achievement_list, is_manager: @is_manager} + render :json => {achievement_list: achievement_list} end @@ -305,13 +306,4 @@ class EcCourseAchievementMethodsController < ApplicationController @target = EcCourseTarget.find params[:ec_course_target_id] end - def find_ec_course - @ec_course = EcCourse.find(params[:ec_course_id]) - @year = @ec_course.ec_year - @ec_major_school = @year.ec_major_school - @template_major = User.current.admin? || @ec_major_school.school.ec_school_users.pluck(:user_id).include?(User.current.id) || - @ec_major_school.ec_major_school_users.pluck(:user_id).include?(User.current.id) - @is_manager = @template_major || @ec_course.ec_course_users.pluck(:user_id).include?(User.current.id) - end - end diff --git a/app/controllers/ec_course_evaluation_subitems_controller.rb b/app/controllers/ec_course_evaluation_subitems_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/ec_course_evaluations_controller.rb b/app/controllers/ec_course_evaluations_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/ec_course_supports_controller.rb b/app/controllers/ec_course_supports_controller.rb old mode 100644 new mode 100755 index 6bb0288b..d81782a8 --- a/app/controllers/ec_course_supports_controller.rb +++ b/app/controllers/ec_course_supports_controller.rb @@ -2,8 +2,6 @@ class EcCourseSupportsController < ApplicationController before_filter :find_year, :except => [:edit_require_vs_course, :destroy_require_vs_course] skip_before_filter :verify_authenticity_token, :only => [:create, :edit_require_vs_course, :destroy_require_vs_course] - before_filter :require_login - before_filter :ec_auth, :except => [:edit_require_vs_course, :destroy_require_vs_course] ############################################################################### # 毕业要求vs课程体系 @@ -49,8 +47,6 @@ class EcCourseSupportsController < ApplicationController course_support_data = [] max_support_count = 0 subitems_count = 0 - major_school = @year.ec_major_school - is_manager = User.current.admin? || major_school.school.ec_school_users.pluck(:user_id).include?(User.current.id) || major_school.ec_major_school_users.pluck(:user_id).include?(User.current.id) ec_graduation_requirements.each_with_index do |gr, i| logger.info("#############index:#{i}#####_ec_gradiation_reqiorements: #{gr.id}") subitems_count += gr.ec_graduation_subitems.count @@ -64,12 +60,7 @@ class EcCourseSupportsController < ApplicationController course_data << { name: name, top_relation: cs.top_relation, weigths: cs.weigths} end gs.ec_course_supports.count > max_support_count && max_support_count = gs.ec_course_supports.count - course_support_data << {sequence_num: sequence_num, - sequence_title: gs.content, - ec_graduation_subitem_id: gs.id, - course_data: course_data, - num_total: gs.ec_course_supports.count, - weights_total: weigths_sum} + course_support_data << {sequence_num: sequence_num, ec_graduation_subitem_id: gs.id, course_data: course_data, num_total: gs.ec_course_supports.count, weights_total: weigths_sum} end end render :json => {ec_year_id: @year.id, @@ -78,8 +69,7 @@ class EcCourseSupportsController < ApplicationController subitems_url: "#{graduation_requirement_ec_major_school_ec_year_path(@year, :ec_major_school_id => @year.ec_major_school_id)}", course_count: @year.ec_courses.count, course_url: "#{ec_course_setting_ec_major_school_ec_year_path(@year, :ec_major_school_id => @year.ec_major_school_id)}", - max_support_count: max_support_count, - is_manager: is_manager} + max_support_count: max_support_count} end # 毕业要求vs课程体系 详情页面 @@ -218,9 +208,4 @@ class EcCourseSupportsController < ApplicationController def find_year @year = EcYear.find(params[:ec_year_id]) end - - # 职业认证的权限判断 - def ec_auth - ec_public_auth @year.ec_major_school - end end diff --git a/app/controllers/ec_course_targets_controller.rb b/app/controllers/ec_course_targets_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/ec_courses_controller.rb b/app/controllers/ec_courses_controller.rb old mode 100644 new mode 100755 index a81d6796..ebd9ca1a --- a/app/controllers/ec_courses_controller.rb +++ b/app/controllers/ec_courses_controller.rb @@ -1,10 +1,8 @@ #encoding: utf-8 class EcCoursesController < ApplicationController layout 'base_ec' - before_filter :find_ec_course, :except => [:create, :get_calculation_data, :sync_all_course_data, :search_courses] + before_filter :find_ec_course, :except => [:create, :get_calculation_data, :sync_all_course_data] before_filter :find_year, :only => [:create, :get_calculation_data] - before_filter :require_login, :except => [:search_courses, :correlation_course] - before_filter :ec_auth, :except => [:sync_all_course_data, :search_courses, :correlation_course] skip_before_filter :verify_authenticity_token, :only => [:crud_targets, :crud_score_level, :sync_all_course_data, :search_courses, :correlation_course, :delete_course] @@ -79,8 +77,7 @@ class EcCoursesController < ApplicationController end calculation_data << {first_level: first_level, first_leval_data: first_leval_data} end - render :json => {calculation_data: calculation_data, calculation_value: @year.calculation_value, course_ids: course_ids.uniq, - is_manager: @template_major} + render :json => {calculation_data: calculation_data, calculation_value: @year.calculation_value, course_ids: course_ids.uniq} end # 课程目标配置 @@ -103,12 +100,6 @@ class EcCoursesController < ApplicationController end end - def ec_course_support_setting_data - course_targets = @ec_course.ec_course_targets.includes(:ec_graduation_subitems) - json_data = target_list_data(course_targets) - render :json => json_data - end - # 课程目标配置的更新操作() # /ec_courses/1/crud_targets def crud_targets @@ -349,11 +340,11 @@ class EcCoursesController < ApplicationController if user.try(:admin?) courses = Course.where(:is_delete => 0) else - course_ids = Member.where("user_id = #{user.try(:id)} and course_id != -1").pluck(:course_id) + course_ids = Member.where("user_id = #{params[:user_id]} and course_id != -1").pluck(:course_id) courses = Course.where(:is_delete => 0, :id => course_ids) end if params[:search] && params[:search].strip != "" - courses = courses.where("name like ?", "%#{params[:search].strip}%").reorder("created_at desc") + courses = courses.where("name like '%#{params[:search].strip}%'").reorder("created_at desc") else courses = courses.reorder("created_at desc") end @@ -423,8 +414,6 @@ class EcCoursesController < ApplicationController def score_level respond_to do |format| format.html{ - Rails.logger.info("1111111111111111111template_major: #{@template_major}") - Rails.logger.info("1111111111111111111is_manager: #{@is_manager}") render "/common/index", :layout => false } format.json{ @@ -440,27 +429,11 @@ class EcCoursesController < ApplicationController {score: 70, level: "中"}, {score: 60, level: "差"}] end - render :json => {levels: ls, is_manager: @is_manager} + render :json => {levels: ls} } end end - def score_level_data - levels = @ec_course.ec_score_levels - ls = [] - if levels.present? - levels.each do |l| - ls << {score: l.score, level: l.level} - end - else - ls = [{score: 90, level: "优"}, - {score: 80, level: "良"}, - {score: 70, level: "中"}, - {score: 60, level: "差"}] - end - render :json => {levels: ls, is_manager: @is_manager} - end - def crud_score_level levels = params[:levels] render :json => {status: -1, message: "参数不能为空"} if levels.blank? @@ -601,11 +574,6 @@ class EcCoursesController < ApplicationController #@is_manager = @template_major || @ec_course.ec_course_users.pluck(:user_id).include?(User.current.id) end - # 职业认证的权限判断 - def ec_auth - ec_public_auth @ec_major_school - end - def target_list_data course_targets targets = [] course_targets.each do |ct| @@ -627,10 +595,6 @@ class EcCoursesController < ApplicationController end end - Rails.logger.info("111111111111111user_id: #{User.current.try(:id)}") - Rails.logger.info("template_major: #{@template_major}") - Rails.logger.info("is_manager: #{@is_manager}") - return {ec_year_id: @ec_course.ec_year_id, ec_course_id: @ec_course.id, course_targets: targets, requirements: requirements, is_manager: @is_manager} end @@ -666,7 +630,7 @@ class EcCoursesController < ApplicationController # 遍历学生成绩统计数据 student_scores.each do |sc| sub_ecss = EcCourseStudentScore.where(:ec_course_id => @ec_course.id, :ec_year_student_id => sc.ec_year_student_id).first - sub_score = base_score == 0 || sc.try(:score).nil? ? 0 : ((sc.try(:score).to_f/base_score) * percentage).round(3) + sub_score = base_score == 0 ? 0 : ((sc.try(:score).to_f/base_score) * percentage).round(3) if sub_ecss ess_target = sub_ecss.ec_student_score_targets.where(:ec_course_target_id => target.id, @@ -696,16 +660,15 @@ class EcCoursesController < ApplicationController # 毕业要求指标点达成评价 total_rate = [] total_arry = EcCourseStudentScore.find_by_sql("SELECT avg(score) as averge_score, ec_target_position as position, - ect.weigths FROM ec_student_score_targets esst, ec_course_targets ect where - esst.ec_course_target_id=ect.id and ect.ec_course_id = #{course_id} - group by ec_course_target_id") + ect.weigths FROM ec_student_score_targets esst, ec_course_targets ect + where esst.ec_course_target_id=ect.id group by ec_course_target_id") all_score = 0 total_arry.try(:each) do |ta| - total_rate << {:position => ta.position, :score => ta.averge_score.round(2), :rate => ta.weigths} + total_rate << {:position => ta.position, :score => ta.averge_score.round(1), :rate => ta.weigths} logger.info("##############total_rate: #{total_rate.to_json}") all_score += ta.averge_score * ta.weigths end - total_rate << {:total_score => (all_score).round(2)} + total_rate << {:total_score => (all_score).round(1)} ecg_targets = EcGraduationSubitemCourseTarget.where(:ec_course_target_id => @ec_course.ec_course_targets) ecg_targets.chunk{|c| c.ec_graduation_subitem_id}.try(:each) do |key, egs_t| @@ -725,12 +688,8 @@ class EcCoursesController < ApplicationController va = total_rate.select{|tra| tra[:position] == po}.first reach_real_target += va[:score] * va[:rate] if va.present? end - - Rails.logger.info("######round11111111#{(target_total_rates == 0 ? 0 : (reach_real_target * weight)/(target_total_rates.round(3)*100))}") reach_real_target = target_total_rates == 0 ? 0 : (reach_real_target * weight)/(target_total_rates*100) - Rails.logger.info("######round2222222#{reach_real_target}") - if ec_course_support.present? logger.info("----------ec_course_support: #{ec_course_support.id}") egrc = ec_course_support.ec_graduation_requirement_calculation diff --git a/app/controllers/ec_graduation_requirements_controller.rb b/app/controllers/ec_graduation_requirements_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/ec_graduation_subitems_controller.rb b/app/controllers/ec_graduation_subitems_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/ec_major_schools_controller.rb b/app/controllers/ec_major_schools_controller.rb old mode 100644 new mode 100755 index 236f57d5..e22114da --- a/app/controllers/ec_major_schools_controller.rb +++ b/app/controllers/ec_major_schools_controller.rb @@ -2,10 +2,7 @@ class EcMajorSchoolsController < ApplicationController layout "base_ec" - before_filter :require_login - before_filter :find_major_school, :except => [:get_navigation_data] - before_filter :ec_auth, :except => [:get_navigation_data] def show @years = @major_school.ec_years @@ -128,8 +125,7 @@ class EcMajorSchoolsController < ApplicationController evaluation_methods_url: evaluation_methods_url, competition_calculation_info_url: competition_calculation_info_url, score_level_setting_url: score_level_setting_url, - example_major: example_major, - allow_visit: User.current.admin? || (User.current.ec_school.present? && User.current.ec_school == major.school.id) + example_major: example_major } end @@ -185,9 +181,4 @@ class EcMajorSchoolsController < ApplicationController # 管理员权限 @major_manager = User.current.admin? || @major_school.school.ec_school_users.pluck(:user_id).include?(User.current.id) || @major_school.ec_major_school_users.pluck(:user_id).include?(User.current.id) end - - # 职业认证的权限判断 - def ec_auth - ec_public_auth @major_school - end end diff --git a/app/controllers/ec_majors_controller.rb b/app/controllers/ec_majors_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/ec_training_objectives_controller.rb b/app/controllers/ec_training_objectives_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/ec_training_subitems_controller.rb b/app/controllers/ec_training_subitems_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/ec_years_controller.rb b/app/controllers/ec_years_controller.rb old mode 100644 new mode 100755 index 4661fd7b..7a847c7b --- a/app/controllers/ec_years_controller.rb +++ b/app/controllers/ec_years_controller.rb @@ -3,9 +3,6 @@ class EcYearsController < ApplicationController layout "base_ec" before_filter :find_major_and_year, except: [:create] - before_filter :require_login - before_filter :ec_auth, except: [:create] - #before_filter :find_year, only: [:set_calculation_value] skip_before_filter :verify_authenticity_token, :only => [:import_students, :set_calculation_value, :destroy_students] require 'simple_xlsx_reader' @@ -31,10 +28,12 @@ class EcYearsController < ApplicationController end @status = 1 end - @major_manager = true + @major_manager = User.current.admin? || + @major_school.school.ec_school_users.pluck(:user_id).include?(User.current.id) || + @major_school.ec_major_school_users.pluck(:user_id).include?(User.current.id) @btn_text = @major_school.template_major && User.current.admin? ? "立即配置" : (!@major_school.template_major && @major_manager ? "立即配置" : "查看") - @years = EcYear.where(:ec_major_school_id => @major_school.id) + @years = @major_school.ec_years @years = paginateHelper @years, 10 respond_to do |format| format.js @@ -55,38 +54,37 @@ class EcYearsController < ApplicationController format.html { render "/common/index", :layout => false } - end - end - - def student_lists_data - template_file = EcTemplate.find_by_name "学生列表导入模板" - if template_file.present? - file = template_file.attachments.first - template_url = "/attachments/download/#{file.id}/#{file.filename}" - else - template_url = "javascript:void(0);" - end + format.json { + template_file = EcTemplate.find_by_name "学生列表导入模板" + if template_file.present? + file = template_file.attachments.first + template_url = "/attachments/download/#{file.id}/#{file.filename}" + else + template_url = "javascript:void(0);" + end - students = @year.ec_year_students - show_name = @year.ec_year_students.where(:name => nil).count == 0 + students = @year.ec_year_students + show_name = @year.ec_year_students.where(:name => nil).count == 0 - page = params[:page] || 1 - total_student = students.count - total_page = (total_student / 50.0).ceil - students = paginateHelper students, 50 + page = params[:page] || 1 + total_student = students.count + total_page = (total_student / 50.0).ceil + students = paginateHelper students, 50 - ec_students = [] - students.each_with_index do |student, index| - student = {index: (50*(page.to_i - 1) + index + 1), - student_name: student.name, - student_id: student.student_id} - ec_students << student - end + ec_students = [] + students.each_with_index do |student, index| + student = {index: (50*(page.to_i - 1) + index + 1), + student_name: student.name, + student_id: student.student_id} + ec_students << student + end - import_url = "/ec_major_schools/#{@ec_major_school.id}/academic_years/#{@year.id}/import_students" + import_url = "/ec_major_schools/#{@ec_major_school.id}/academic_years/#{@year.id}/import_students" - render :json => {template_url: template_url, ec_students: ec_students, total_page: total_page, import_url: import_url, - show_name: show_name, :total_student => total_student, :is_manager => @template_major} + render :json => {template_url: template_url, ec_students: ec_students, total_page: total_page, import_url: import_url, + show_name: show_name, :total_student => total_student} + } + end end # DELETE: /ec_major_schools/:major_id/academic_years/:year_id/destroy_students @@ -348,11 +346,6 @@ class EcYearsController < ApplicationController @template_major = User.current.admin? || @ec_major_school.school.ec_school_users.pluck(:user_id).include?(User.current.id) || @ec_major_school.ec_major_school_users.pluck(:user_id).include?(User.current.id) end - # 职业认证的权限判断 - def ec_auth - ec_public_auth @ec_major_school - end - def find_year @year = EcYear.find(params[:id]) end @@ -394,14 +387,6 @@ class EcYearsController < ApplicationController new_egs.save! # 记录新旧对应关系,为之后的中间表做记录 egs_record << [pre_egs.id, new_egs.id] - prev_ersvss = EcRequireSubVsStandard.where(:ec_graduation_subitem_id => pre_egs.id) - prev_ersvss.each do |prev_ersvs| - new_ersvss = EcRequireSubVsStandard.new - new_ersvss.attributes = prev_ersvs.attributes.dup.except("id", "ec_graduation_subitem_id") - new_ersvss.ec_graduation_subitem_id = new_egs.id - new_ersvss.save! - end - end end @@ -412,30 +397,12 @@ class EcYearsController < ApplicationController new_eto.attributes = pre_eto.attributes.dup.except("id", "ec_year_id") new_eto.ec_year_id = ec_year.id new_eto.save! - # 复制 "培养目标分项" pre_eto.ec_training_subitems.try(:each) do |pre_ets| new_ets = EcTrainingSubitem.new new_ets.attributes = pre_ets.attributes.dup.except("id", "ec_training_objective_id") new_ets.ec_training_objective_id = new_eto.id new_ets.save! - - # 复制 "毕业要去 vs 培养目标" - pre_ervsos = EcRequirementVsObjective.where(:ec_training_objective_id => pre_ets.id) - pre_ervsos.each do |ervso| - new_ervso = EcRequirementVsObjective.new - new_ervso.attributes = ervso.attributes.dup.except("id", "ec_training_objective_id", "ec_graduation_requirement_id") - new_ervso.ec_training_objective_id = new_ets.id - new_egr_id = -1 - egr_record.each do |egr_id| - if egr_id[0] == ervso.ec_graduation_requirement_id - new_egr_id = egr_id[1] - end - end - raise("找不对应的毕业要求") if new_egr_id == -1 - new_ervso.ec_graduation_requirement_id = new_egr_id - new_ervso.save! - end end end diff --git a/app/controllers/ecloud_controller.rb b/app/controllers/ecloud_controller.rb deleted file mode 100644 index 3e02c579..00000000 --- a/app/controllers/ecloud_controller.rb +++ /dev/null @@ -1,381 +0,0 @@ -#encoding=utf-8 -# 云启训练场(EduCoder)个人版 产品编码(appId) 9200108 -# 产品名称 计费类型 套餐编码 -# 云启训练场(EduCoder)个人版 固定包月 9200108001 -# 固定包月 9200108002 -# 固定包月 9200108003 -# --------------------------------------------------- -# 产品名称 计费类型 套餐编码 -# 云启训练场(EduCoder))院校版 包月+按license 9200109001 -# 包月+按license 9200109002 - -# 云启训练场(EduCoder))院校版 产品编码(appId) 9200109 - -require 'net/http' -require 'digest' - -class EcloudController < ApplicationController - skip_before_filter :verify_authenticity_token - - before_filter :save_para - before_filter :check_sign, only: [:ps_new, :ps_update, :bs_new, :bs_update] - - before_filter :user_setup - # before_filter :require_login, only: [:authorize] - - - skip_before_filter :verify_authenticity_token, only: [:ps_new, :ps_update, :bs_new, :bs_update, :ecloud_login_callback] - - def index - render file: 'public/react-oschina/build/index.html', :layout => false - end - - def trustie_login - end - - # 测试环境 - # CLIENT_ID = '1022' - # CLIENT_SECRET = '2112037a-6d7a-432b-9081-feb1153d8668' - # SERVER_URL = "https://221.176.54.92:9081/restful/services/" - # - - # 正式环境 - CLIENT_ID = '1056' - CLIENT_SECRET = '2e84256a-3de4-4713-9e02-10ee88a14592' - SERVER_URL = "https://221.176.53.130:44390/services/" - - - ## 签名 - def sign(timestamp) - Digest::MD5.hexdigest("client_id=#{CLIENT_ID}client_key=#{CLIENT_SECRET}timestamp=#{timestamp}").upcase - end - - - # 企业/个人业务开通 - # applyno 申请单号,唯一 - # ecordercode 唯一标志一个企业的订购关系 - # params['opttype']:操作类型。0开通;1变更;2试用转商用;4再次开通 - # 业务列表opttype: 0新增;1注销;2修改 - # serviceparas: 但是由于企业版是按成员收费的,所以serviceparas里面会传成员数;个人版是包月计费的,serviceparas不会传成员数 - def bs_new - ActiveRecord::Base.transaction do - begin - if params['opttype'] == 0 # 开通企业/个人业务 - ecloud = Ecloud.create!(eloud_params) - create_service(params['services'], ecloud.try(:id)) if params['services'].present? - create_product_params(params['productparas'], ecloud.try(:id)) if params['productparas'].present? - # 为管理员添加一条记录 - # 开通的时候都是用户的opttype也是0 - # 如果管理员已经存在,则不用重复开通 - euser = EcloudUser.where(userid: params['userid'], custid: params['custid']).first - unless euser - EcloudUser.create!(custid: params['custid'], opttype: params['opttype'], userid: params['userid'], - username: params['username'], useralias: params['useralias'], - mobile: params['mobile'], email: params['email'], begintime: params['begintime'], - endtime: params['endtime']) - end - elsif params['opttype'] == 2 # 试用转商用 # 变更企业/个人业务 - # 业务列表:注销业务(注销试用的套餐),另一个业务项的操作代码是:新增业务(开通商用的套餐) - # 需要通过产品服务编号和业务编码来区分哪个产品 - ecloud = Ecloud.where(custid: params['custid'], custcode: params['custcode'], productcode: params['productcode'], trial: true).first - - # 注销试用的套餐 - ## 需要注销的套餐; 试用转商用是不会有批量操作的,所以可以使用first - des_service = params['services'].select{|s| s['opttype'] == 1}.first - esd = EcloudService.where(ecloud_id: ecloud.try(:id), code: des_service['code']).first - ecloud.update_attribute(:trial, params['trial']) - esd.update_attributes!(opttype: des_service['opttype'], begintime: des_service['begintime'], endtime: des_service['endtime']) - - # 试用转商用是不会有批量操作的 - # 新增业务 - add_service = params['services'].select{|s| s['opttype'] == 0} - create_service(add_service, ecloud.try(:id)) - # - - elsif params['opttype'] == 1 # 业务变更 - ecloud = Ecloud.where(custid: params['custid'], custcode: params['custcode'], productcode: params['productcode']).first - # 套餐变更 - # 操作代码 0:新增业务,1:注销业务2:修改业务 - # # 新增服务 - add_service = params['services'].select{|s| s['opttype'] == 0} - create_service(add_service, ecloud.try(:id)) if add_service.present? - - # 如果有注销业务,注销业务 - des_services = params['services'].select{|s| s['opttype'] == 1} - if des_services.present? - des_services.each do |ds| - - logger.info("666666#{ecloud.try(:id)}, 55555555#{ds['code']}") - esd = EcloudService.where(ecloud_id: ecloud.try(:id), code: ds['code']).first - esd.update_attributes!(opttype: ds['opttype'], begintime: ds['begintime'], endtime: ds['endtime']) - end - end - - # 变更业务 - edt_services = params['services'].select{|s| s['opttype'] == 2} - if edt_services.present? - edt_services.each do |es| - ese = EcloudService.where(ecloud_id: ecloud.try(:id), code: es['code']).first - ese.update_attributes!(opttype: es['opttype'], begintime: es['begintime'], endtime: es['endtime']) if ese.present? - create_serviceparas(es['serviceparas'].first, ese.id) if ese.present? - end - end - - - # ecloud = Ecloud.where(bossorderid: params['bossorderid']).first - # ecloud.update_attributes!(eloud_params) - # ecloud.ecloud_productparas.destroy - # ecloud.ecloud_services.destroy - # - # ecloud_id = ecloud.try(:id) - - elsif params['opttype'] == 4 # 再次重复开通 - # 再次申请开通,这种情况就是累加时间 - ecloud = Ecloud.where(custid: params['custid'], custcode: params['custcode'], productcode: params['productcode']).first - create_service(params['services'], ecloud.try(:id)) - create_product_params(params['productparas'], ecloud.try(:id)) if params['productparas'].present? - end - - # - # # 非试用情况下,为管理员单独创建一条账号,企业账号 - # unless params['trial'] - # EcloudUser.create!(ecloud_id: ecloud.try(:id), opttype: params['opttype'], userid: params['userid'], - # username: params['username'], useralias: params['useralias'], - # mobile: params['mobile'], email: params['email']) - # end - - render :json => {result: true, errmsg: ""} - # rescue Exception => e - # logger.error(e.message) - # render :json => {code: 500, msg: "#{e.message}"} - # raise ActiveRecord::Rollback - end - end - end - - # 企业/个人业务变更、注销 - # 处理业务平台退订、暂停(欠费暂停,信控暂停等)、暂停后恢复应用业务 - # 这个接口是不会新增业务的 - # 试用退订的时候bossorderid传空字符 - def bs_update - ActiveRecord::Base.transaction do - begin - case params['opttype'] - when 0 # 退订 - opttype = 6 - when 1 # 暂停 - opttype = 7 - when 2 # 恢复 - opttype = 8 - end - if params['bossorderid'].present? - ecloud = Ecloud.where(bossorderid: params['bossorderid']).first - ecloud.update_attribute(:opttype, opttype) - else - # 试用退订 - params['services'].each do |service| - ecloud_id = EcloudService.where(code: service['packagecode']).first.try(:ecloud_id) - Ecloud.find(ecloud_id).update_attribute(:opttype, opttype) - end - end - render :json => {result: true, errmsg: ""} - rescue Exception => e - logger.error(e.message) - render :json => {code: 500, msg: "#{e.message}"} - raise ActiveRecord::Rollback - end - end - end - - # 用户业务开通与变更接口 - # 授权statu为1,取消授权status为0 - # user['opttype']: 操作类型0:开通;1:变更;3: 取消授权;4:暂停;5:恢复; - - def ps_new - ActiveRecord::Base.transaction do - begin - user_params = params['users'] - user_params.each do |user_param| - if user_param['opttype'] == 0 # 开通 - EcloudUser.create!(custid: params['custid'], opttype: user_param['opttype'], userid: user_param['userid'], - username: user_param['username'], useralias: user_param['useralias'], - mobile: user_param['mobile'], email: user_param['email'], begintime: user_param['begintime'].to_s, - endtime: user_param['endtime'].to_s) - elsif user_param['opttype'] == 1 # 变更 - ecloud_user = EcloudUser.where(custid: params['custid'], userid: user_param['userid']).first - ecloud_user.update_attributes!(opttype: user_param['opttype'], username: user_param['username'], - useralias: user_param['useralias'], mobile: user_param['mobile'], email: user_param['email'], - begintime: user_param['begintime'].to_s, endtime: user_param['endtime'].to_s) - end - end - - render :json => {success: true, errmsg: ""} - # end - rescue Exception => e - logger.error(e.message) - render :json => {code: 500, msg: "#{e.message}"} - raise ActiveRecord::Rollback - end - end - end - - # 用户业务状态变更 - # user['opttype']: 操作类型0:开通;1:变更;3: 取消授权;4:暂停;5:恢复; - def ps_update - begin - user_params = params['users'] - user_params.each do |user_param| - case user_param['opttype'] - when 0 # 取消授权 - opttype = 3 - when 1 # 暂停 - opttype = 4 - when 2 # 恢复 - opttype = 5 - end - ecloud_user = EcloudUser.where(custid: params['custid'], userid: user_param['userid']).first - ecloud_user.update_attributes!(opttype: opttype, operatime: params['operatime'], effecttime: params['effecttime']) - end - - render :json => {success: true, errmsg: ""} - rescue Exception => e - logger.error(e.message) - render :json => {code: 500, msg: "#{e.message}"} - end - end - - def ecloud_login_callback - - unless params["test"] == 'true' - #获取code - logger.info "oauth2 login_callback: #{params}" - - raise "没有code" unless params[:code] - - url = "#{SERVER_URL}/oauth2/authorization?grant_type=authorization_code" + - "&client_id=#{CLIENT_ID}&scope=&redirect_uri=&code=#{params[:code]}" - - res = post(url) - logger.info "oauth2 authorization resp: #{res}" - # {"access_token":"ae673b2d-88b4-46cc-aa74-0b031f24b76f","expires":6,"refresh_token":"7380cc67-a59c-4c21-9000-70e12a58d175","username":"15111030087@QW_er","uid":2147} - - body = decode(res) - - raise '登录失败' unless body["access_token"] - - #获取此用户信息 - res = get("#{SERVER_URL}/user/info?access_token=#{body['access_token']}&userid=#{body['uid']}") - logger.info "oauth2 get user info: #{res}" - # {"userid":2147,"custid":2104,"custcode":"E0002018042810010054","custtype":2,"status":2,"username":"15111030087@QW_er","useralias":"15111030087","isadmin":true,"entprise":"04**004","departments":"","departmentnames":"","mobile":"15365386520","email":"15111030087@139.com"} - else - res = '{"userid":2147,"custid":2104,"custcode":"E0002018042810010054","custtype":2,"status":2,"username":"15111030087@QW_er","useralias":"15111030087","isadmin":true,"entprise":"04**004","departments":"","departmentnames":"","mobile":"15365386520","email":"15111030087@139.com"}' - end - - - # 同步用户 - info = decode(res) - - user = User.find_by_ecoder_user_id(info["userid"]) - unless user - #新建用户 - user = User.create_with_ecoder!(info) - end - - self.logged_user = user - - user = UserExtensions.where(:user_id => User.current.id).first - if user.gender.nil? || user.school_id.nil? || User.current.lastname.nil? - redirect_to my_account_path - elsif user.identity == 3 && user.school_id.nil? - redirect_to my_account_path - else - redirect_to User.current - end - - end - - - private - def get(url) - uri = URI(url) - - http = Net::HTTP.new(uri.host, uri.port) - http.use_ssl = url.start_with?('https') - http.verify_mode = OpenSSL::SSL::VERIFY_NONE - request = Net::HTTP::Get.new(uri.request_uri) - request['Content-Type'] = 'application/json' - request['Accept'] = 'application/json' - response = http.request(request) - - response.body - end - - def post(url) - uri = URI(url) - - http = Net::HTTP.new(uri.host, uri.port) - http.use_ssl = url.start_with?('https') - http.verify_mode = OpenSSL::SSL::VERIFY_NONE - request = Net::HTTP::Post.new(uri.request_uri) - request['Content-Type'] = 'application/json' - request['Accept'] = 'application/json' - response = http.request(request) - - response.body - end - - def decode(s) - begin - obj = ActiveSupport::JSON.decode(s) - rescue ActiveSupport::JSON.parse_error - logger.error("Attempted to decode invalid JSON: #{s}") - end - end - - private - def eloud_params - return {applyno: params['applyno'], ecordercode: params['ecordercode'], opttype: params['opttype'], - trial: params['trial'], bossorderid: params['bossorderid'], custid: params['custid'], custtype: params['custtype'], - custcode: params['custcode'], registersource: params['registersource'], custname: params['custname'], - userid: params['userid'], username: params['username'], useralias: params['useralias'], mobile: params['mobile'], - email: params['email'], productcode: params['productcode'], begintime: params['begintime'], - endtime: params['endtime']} - end - - # 新增套餐 - def create_service services, ecloud_id - services.each do |service| - ese = EcloudService.create!(opttype: service['opttype'], code: service['code'], begintime: service['begintime'], - endtime: service['endtime'], ecloud_id: ecloud_id) - if service['serviceparas'].present? - create_serviceparas(service['serviceparas'].first, ese.id) - end - end - end - - def create_serviceparas params_serviceparas, ese_id - if params_serviceparas.present? - EcloudServieceServicepara.create(key: params_serviceparas['key'], value: params_serviceparas['value'], ecloud_service_id: ese_id) - end - end - - def create_product_params params, ecloud_id - params.each do |p| - EcloudProductpara.create(key: p['key'], value: p['value'], ecloud_id: ecloud_id) - end - end - - def check_sign - sign = sign(params['timestamp']) - if sign != params['sign'] - render :json => {code: 501, msg: "sign的值错误"} - return - end - end - - def save_para - EcloudLog.create(url: request.url, para_value: params, applyno: params['applyno'], custid: params['custid'], - custcode: params['custcode'], userid: params['userid'], username: params['username']) - end - -end diff --git a/app/controllers/ecs_controller.rb b/app/controllers/ecs_controller.rb old mode 100644 new mode 100755 index 172d13fc..71095852 --- a/app/controllers/ecs_controller.rb +++ b/app/controllers/ecs_controller.rb @@ -1,7 +1,5 @@ class EcsController < ApplicationController - before_filter :require_login before_filter :find_school, :except => [:get_navigation_url] - before_filter :school_manager, :except => [:department, :get_navigation_url] layout 'base_ec' def department @@ -12,30 +10,26 @@ class EcsController < ApplicationController @major_schools = @school.ec_major_schools.where(:template_major => false) unless @is_school_manager ec_major_school_ids = EcMajorSchoolUser.where(:user_id => User.current.id).pluck(:ec_major_school_id) - ec_course_major_ids = EcYear.where(:id => EcCourse.where(:id => EcCourseUser.where(:user_id => User.current.id).pluck(:ec_course_id)).pluck(:ec_year_id)).pluck(:ec_major_school_id) + ec_course_major_ids = EcYear.where(:id => EcCourseUser.where(:user_id => User.current.id).pluck(:ec_year_id)).pluck(:ec_major_school_id) @major_schools = @major_schools.where(:id => (ec_major_school_ids + ec_course_major_ids).uniq) end @major_count = @major_schools.count - if !@is_school_manager && @major_count == 0 - render_403 - else - if params[:search].present? - major_ids = EcMajor.where("name like '%#{params[:search]}%' or code like '%#{params[:search]}%'").pluck(:id) - @major_schools = @major_schools.where(:ec_major_id => major_ids) - end + if params[:search].present? + major_ids = EcMajor.where("name like '%#{params[:search]}%' or code like '%#{params[:search]}%'").pluck(:id) + @major_schools = @major_schools.where(:ec_major_id => major_ids) + end - @obj_count = @major_schools.count - @limit = 10 - @is_remote = true - @obj_pages = Paginator.new @obj_count, @limit, params['page'] || 1 - @offset ||= @obj_pages.offset - @major_schools = paginateHelper @major_schools, @limit - respond_to do |format| - format.js - format.html - end + @obj_count = @major_schools.count + @limit = 10 + @is_remote = true + @obj_pages = Paginator.new @obj_count, @limit, params['page'] || 1 + @offset ||= @obj_pages.offset + @major_schools = paginateHelper @major_schools, @limit + respond_to do |format| + format.js + format.html end end @@ -68,10 +62,4 @@ class EcsController < ApplicationController def find_school @school = School.find(params[:school_id]) end - - def school_manager - unless User.current.admin? || @school.users.where(:id => User.current.id).count > 0 - render_403 - end - end end diff --git a/app/controllers/enumerations_controller.rb b/app/controllers/enumerations_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/exercise_bank_controller.rb b/app/controllers/exercise_bank_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/exercise_controller.rb b/app/controllers/exercise_controller.rb old mode 100644 new mode 100755 index c9ddb907..202752b7 --- a/app/controllers/exercise_controller.rb +++ b/app/controllers/exercise_controller.rb @@ -74,49 +74,51 @@ class ExerciseController < ApplicationController # end # end @is_teacher = User.current.allowed_to?(:as_teacher,@course) || User.current.admin? - ActiveRecord::Base.transaction do - unless @is_teacher - @exercise_user = ExerciseUser.where("user_id=? and exercise_id=?", User.current.id, @exercise.id).first - if @exercise_user.nil? - @exercise_user = ExerciseUser.create(:user_id => User.current.id, :exercise_id => @exercise.id, :start_at => Time.now, :status => false, :commit_status => 0) - elsif @exercise_user.start_at.nil? - @exercise_user.update_attributes(:start_at => Time.now) + + unless @is_teacher + @exercise_user = ExerciseUser.where("user_id=? and exercise_id=?", User.current.id, @exercise.id).first + if @exercise_user.nil? + @exercise_user = ExerciseUser.create(:user_id => User.current.id, :exercise_id => @exercise.id, :start_at => Time.now, :status => false, :commit_status => 0) + if @exercise.exercise_level_settings.where("num != exercise_questions_count").count > 0 + @exercise.create_user_question_list(@exercise_user.id) end + # @exercise_user = ExerciseUser.where("user_id=? and exercise_id=?", User.current.id, @exercise.id).first + elsif @exercise_user.start_at.nil? if @exercise.exercise_level_settings.where("num != exercise_questions_count").count > 0 @exercise.create_user_question_list(@exercise_user.id) end + @exercise_user.update_attributes(:start_at => Time.now) + end - @can_edit_excercise = can_edit_exercise @exercise, @exercise_user - if !@can_edit_excercise && !@exercise_user.status - time = (@exercise_user.start_at.to_i + @exercise.time.to_i * 60) > @exercise.end_time.to_i ? @exercise.end_time : Time.at(@exercise_user.start_at.to_i + @exercise.time.to_i * 60) - @exercise_user.update_attributes(:status => true, :end_at => time, :commit_status => 1) - s_score = calculate_student_score(@exercise, @exercise_user.user) - @exercise_user.update_attributes(:objective_score => s_score, :score => (s_score + (@exercise_user.subjective_score && @exercise_user.subjective_score > 0 ? @exercise_user.subjective_score : 0))) - if @exercise_user.user.exercise_answer.where(:exercise_question_id => @exercise.exercise_questions.where(:question_type => 4).map(&:id)).empty? - @exercise_user.update_attributes(:subjective_score => 0) - end + @can_edit_excercise = can_edit_exercise @exercise, @exercise_user + if !@can_edit_excercise && !@exercise_user.status + time = (@exercise_user.start_at.to_i + @exercise.time.to_i * 60) > @exercise.end_time.to_i ? @exercise.end_time : Time.at(@exercise_user.start_at.to_i + @exercise.time.to_i * 60) + @exercise_user.update_attributes(:status => true, :end_at => time, :commit_status => 1) + s_score = calculate_student_score(@exercise, @exercise_user.user) + @exercise_user.update_attributes(:objective_score => s_score, :score => (s_score + (@exercise_user.subjective_score && @exercise_user.subjective_score > 0 ? @exercise_user.subjective_score : 0))) + if @exercise_user.user.exercise_answer.where(:exercise_question_id => @exercise.exercise_questions.where(:question_type => 4).map(&:id)).empty? + @exercise_user.update_attributes(:subjective_score => 0) end + end - member = @exercise.course.members.where(:user_id => User.current.id).first if @exercise_user.commit_status == 1 - setting_time = exercise_group_setting @exercise, member.try(:course_group) if @exercise_user.commit_status == 1 - if @exercise_user.commit_status == 1 && setting_time.end_time > Time.now - if @exercise.time == -1 - @cancel_commit = true - else - @cancel_commit = (Time.now.to_i - @exercise_user.start_at.to_i) < @exercise.time.to_i * 60 - end + member = @exercise.course.members.where(:user_id => User.current.id).first if @exercise_user.commit_status == 1 + setting_time = exercise_group_setting @exercise, member.try(:course_group) if @exercise_user.commit_status == 1 + if @exercise_user.commit_status == 1 && setting_time.end_time > Time.now + if @exercise.time == -1 + @cancel_commit = true + else + @cancel_commit = (Time.now.to_i - @exercise_user.start_at.to_i) < @exercise.time.to_i * 60 end - - #score = calculate_student_score(@exercise, User.current) - #@exercise_user.update_attributes(:objective_score => score, :score => (score + (@exercise_user.subjective_score > 0 ? @exercise_user.subjective_score : 0))) - else - @exercise_user = ExerciseUser.where("user_id=? and exercise_id=?", params[:user_id], @exercise.id).first - @can_edit_excercise = false end - @exercise_questions = @exercise.user_question_list @exercise_user.id + #score = calculate_student_score(@exercise, User.current) + #@exercise_user.update_attributes(:objective_score => score, :score => (score + (@exercise_user.subjective_score > 0 ? @exercise_user.subjective_score : 0))) + else + @exercise_user = ExerciseUser.where("user_id=? and exercise_id=?", params[:user_id], @exercise.id).first + @can_edit_excercise = false end + @exercise_questions = @exercise.user_question_list @exercise_user.id # @percent = get_percent(@exercise,User.current) #@exercise_questions = @exercise.exercise_questions diff --git a/app/controllers/files_controller.rb b/app/controllers/files_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/forums_controller.rb b/app/controllers/forums_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/games_controller.rb b/app/controllers/games_controller.rb old mode 100644 new mode 100755 index 1797f3ed..581eaa31 --- a/app/controllers/games_controller.rb +++ b/app/controllers/games_controller.rb @@ -219,10 +219,10 @@ class GamesController < ApplicationController @had_passed_testsests_public_count = had_test.blank? ? 0 : had_test.select{|had_test| had_test.result == true && had_test.is_public == true}.count @mirror_name = @myshixun.mirror_name @final_score = ((@shixun.status <= 1) ? 0 : @game.final_score.to_i) - if @myshixun.shixun.status <= 1 || (@game.final_score != 0 && @game.answer_open > 0) + if @myshixun.shixun.status <= 1 || (@game.final_score != 0 && @game.answer_open?) @gold = 0 else - if @game.answer_open > 0 && @game.final_score ==0 + if @game.answer_open? && @game.final_score ==0 @gold = -@game_challenge.score.to_i else @gold = @game.final_score.to_i diff --git a/app/controllers/gantts_controller.rb b/app/controllers/gantts_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/git_callback_controller.rb b/app/controllers/git_callback_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/graduation_tasks_controller.rb b/app/controllers/graduation_tasks_controller.rb old mode 100644 new mode 100755 index e023adac..1db75db5 --- a/app/controllers/graduation_tasks_controller.rb +++ b/app/controllers/graduation_tasks_controller.rb @@ -21,17 +21,19 @@ class GraduationTasksController < ApplicationController end unless @order.blank? - if @course.is_end - @tasks = @tasks.where("0=1") - else - case @order - when '0', '1', '2', '3' - @tasks = @tasks.where(:status => @order) + case @order when '4' - @tasks = @tasks.where("status > 1 and allow_late = 1 and late_time > '#{Time.now}'") + if @course.is_end + @tasks = @tasks + else + @tasks = @tasks.where("0=1") + end else - @tasks = @tasks.where("0=1") - end + if @course.is_end + @tasks = @tasks.where("0=1") + else + @tasks = @tasks.where(:status => @order) + end end end diff --git a/app/controllers/graduation_topics_controller.rb b/app/controllers/graduation_topics_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/graduation_works_controller.rb b/app/controllers/graduation_works_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/homepages_controller.rb b/app/controllers/homepages_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/homework_attach_controller.rb b/app/controllers/homework_attach_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/homework_bank_controller.rb b/app/controllers/homework_bank_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/homework_common_controller.rb b/app/controllers/homework_common_controller.rb old mode 100644 new mode 100755 index f014f6da..2f327da0 --- a/app/controllers/homework_common_controller.rb +++ b/app/controllers/homework_common_controller.rb @@ -9,7 +9,7 @@ class HomeworkCommonController < ApplicationController include ApplicationHelper # before_filter :check_authentication, :except => [] before_filter :local_exam - before_filter :find_course, :only => [:index,:new,:create, :shixuns, :create_shixun_homework, :publish_shixun_homework] + before_filter :find_course, :only => [:index,:new,:create, :shixuns, :subjects, :create_shixun_homework, :create_subject_homework, :publish_shixun_homework] before_filter :find_homework, :only => [:edit,:update,:alert_anonymous_comment,:start_anonymous_comment,:stop_anonymous_comment,:destroy,:start_evaluation_set, :set_evaluation_attr,:score_rule_set,:alert_forbidden_anonymous_comment,:alert_open_student_works,:open_student_works, :set_score_open,:alert_score_open_modal,:add_to_homework_bank,:publish_notice,:publish_homework,:end_notice,:end_homework, @@ -17,7 +17,7 @@ class HomeworkCommonController < ApplicationController before_filter :teacher_of_course, :only => [:new, :create, :edit, :update, :destroy, :start_anonymous_comment, :stop_anonymous_comment, :alert_anonymous_comment, :start_evaluation_set,:set_evaluation_attr,:score_rule_set,:alert_forbidden_anonymous_comment,:alert_open_student_works, :open_student_works,:add_to_homework_bank,:publish_notice,:end_notice,:publish_homework,:end_homework,:update_explanation, - :cancel_publish, :move_to_category,:homework_setting] + :cancel_publish, :move_to_category] # before_filter :member_of_course, :only => [:index,:setting] @@ -54,19 +54,19 @@ class HomeworkCommonController < ApplicationController @homework_commons = @homework_commons.where(:course_homework_category_id => params[:category]) end if @order.blank? - @homework_commons = @homework_commons.order("IF(ISNULL(homework_commons.publish_time),0,1), homework_commons.publish_time DESC, homework_commons.created_at DESC") + @homework_commons = @homework_commons.order("IF(ISNULL(homework_commons.publish_time),0,1), homework_commons.publish_time DESC, homework_commons.id DESC") else case @order when '1' - @homework_commons = @homework_commons.includes(:homework_detail_manual).where("homework_detail_manuals.comment_status = #{@order} and homework_commons.end_time > '#{Time.now}'").order("IF(ISNULL(homework_commons.publish_time),0,1),homework_commons.publish_time DESC, homework_commons.created_at DESC") + @homework_commons = @homework_commons.includes(:homework_detail_manual).where("homework_detail_manuals.comment_status = #{@order} and homework_commons.end_time > '#{Time.now}'").order("IF(ISNULL(homework_commons.publish_time),0,1),homework_commons.publish_time DESC, homework_commons.id DESC") when '3' - @homework_commons = @homework_commons.includes(:homework_detail_manual).where("homework_detail_manuals.comment_status = #{@order} and homework_detail_manuals.evaluation_end > '#{Time.now}'").order("IF(ISNULL(homework_commons.publish_time),0,1),homework_commons.publish_time DESC, homework_commons.created_at DESC") + @homework_commons = @homework_commons.includes(:homework_detail_manual).where("homework_detail_manuals.comment_status = #{@order} and homework_detail_manuals.evaluation_end > '#{Time.now}'").order("IF(ISNULL(homework_commons.publish_time),0,1),homework_commons.publish_time DESC, homework_commons.id DESC") when '4' - @homework_commons = @homework_commons.includes(:homework_detail_manual).where("(homework_detail_manuals.comment_status = #{@order} and homework_detail_manuals.appeal_time > '#{Time.now}')").order("IF(ISNULL(homework_commons.publish_time),0,1),homework_commons.publish_time DESC, homework_commons.created_at DESC") + @homework_commons = @homework_commons.includes(:homework_detail_manual).where("(homework_detail_manuals.comment_status = #{@order} and homework_detail_manuals.appeal_time > '#{Time.now}')").order("IF(ISNULL(homework_commons.publish_time),0,1),homework_commons.publish_time DESC, homework_commons.id DESC") when '5' - @homework_commons = @homework_commons.includes(:homework_detail_manual).where("(homework_detail_manuals.comment_status = #{@order} or (anonymous_comment = 1 and homework_commons.end_time <= '#{Time.now}'))").order("IF(ISNULL(homework_commons.publish_time),0,1),homework_commons.publish_time DESC, homework_commons.created_at DESC") + @homework_commons = @homework_commons.includes(:homework_detail_manual).where("(homework_detail_manuals.comment_status = #{@order} or (anonymous_comment = 1 and homework_commons.end_time <= '#{Time.now}'))").order("IF(ISNULL(homework_commons.publish_time),0,1),homework_commons.publish_time DESC, homework_commons.id DESC") else - @homework_commons = @homework_commons.includes(:homework_detail_manual).where("homework_detail_manuals.comment_status = #{@order}").order("IF(ISNULL(homework_commons.publish_time),0,1),homework_commons.publish_time DESC, homework_commons.created_at DESC") + @homework_commons = @homework_commons.includes(:homework_detail_manual).where("homework_detail_manuals.comment_status = #{@order}").order("IF(ISNULL(homework_commons.publish_time),0,1),homework_commons.publish_time DESC, homework_commons.id DESC") end end @is_student = User.current.logged? && (User.current.admin? || (User.current.member_of_course?(@course) && !@is_teacher)) @@ -105,6 +105,33 @@ class HomeworkCommonController < ApplicationController end end + # 选用实训路径弹框 + def subjects + @search = params[:search] + @homework = HomeworkCommon.new + @type = params[:type] + if params[:category_id] && params[:category_id].strip != "" + @category = @course.course_homework_categories.where(:id => params[:category_id]).first + end + if @type.nil? || @type == "" || @type == "all" + @subjects = Subject.where("hidden = 0 and name like '%#{@search}%' and status = 2").reorder("updated_at desc") + else + @subjects = Subject.where("hidden = 0 and repertoire_id = #{@type.to_i} and name like '%#{@search}%' and status = 2").reorder("updated_at desc") + end + @tags = Repertoire.where(:id => Subject.where(:hidden => 0, :status => 2).pluck(:repertoire_id).uniq).order("updated_at asc") + @limit = 10 + @page = params['page'] || 1 + @subject_count = @subjects.size + @total_pages = (@subject_count / @limit.to_f).ceil + @subjects = paginateHelper @subjects, @limit + respond_to do |format| + format.js + format.json { + render json: subject_json_data(@subjects) + } + end + end + # 新建实训作业 def shixuns @search = params[:search] @@ -243,9 +270,50 @@ class HomeworkCommonController < ApplicationController end end + def create_subject_homework + unless params[:page] + @shixuns_count = 0 + if params[:category_id] && params[:category_id].strip != "" + @category = @course.course_homework_categories.where(:id => params[:category_id]).first + end + @homework_ids = "" + none_shixun_ids = ShixunSchool.where("school_id != #{User.current.user_extensions.try(:school_id)}").pluck(:shixun_id) + subjects = Subject.where(:id => params[:subject_homework]) + + # 多重循环是为了保证作业的创建顺序与路径的实训顺序一致 + subjects.each do |subject| + subject.stages.each do |stage| + stage.shixuns.each do |shixun| + # 判断该实训是否对当前用户所在单位不公开 + if shixun.status == 2 && !none_shixun_ids.include?(shixun.id) + homework = HomeworkCommon.new(:name => shixun.name, :description => shixun.description, :anonymous_comment => 1, :homework_type => 4, + :late_penalty => 5, :teacher_priority => 1, :user_id => User.current.id, :course_id => params[:course], + :course_homework_category_id => @category.try(:id)) + + homework_detail_manual = HomeworkDetailManual.new(:te_proportion => 1.0, :ta_proportion => 0, :comment_status => 0, :evaluation_num => 0, :absence_penalty => 0) + homework.homework_detail_manual = homework_detail_manual + + if homework.save + homework_detail_manual.save if homework_detail_manual + HomeworkCommonsShixuns.create(:homework_common_id => homework.id, :shixun_id => shixun.id) + create_shixun_homework_cha_setting homework, shixun + create_works_list homework + @homework_ids = @homework_ids == "" ? homework.id.to_s : @homework_ids + "," + homework.id.to_s + + @shixuns_count += 1 + end + end + end + end + end + end + @groups = @course.course_groups + @groups = paginateHelper @groups, 5 + end + def create_shixun_homework unless params[:page] - shixuns = Shixun.where(:id => params[:shixun_homework]).reorder("id desc") + shixuns = Shixun.where(:id => params[:shixun_homework]) @shixuns_count = shixuns.count @homework_ids = "" if params[:category_id] && params[:category_id].strip != "" @@ -283,94 +351,93 @@ class HomeworkCommonController < ApplicationController end def homework_setting - ActiveRecord::Base.transaction do - if @homework.homework_detail_manual.try(:comment_status) == 0 && @course.course_groups.count > 1 - @homework.unified_setting = params[:unified_setting] ? true :false - end + if @homework.homework_detail_manual.try(:comment_status) == 0 && @course.course_groups.count > 1 + @homework.unified_setting = params[:unified_setting] ? true :false + end - if @homework.unified_setting - params_publish_time = params[:homework_publish_time] - params_end_time = params[:homework_end_time] - # params_archive_time = params[:homework_archive_time] - min_publish_time = params_publish_time - max_end_time = params_end_time - else - # 获取最小发布时间和最大截止时间,赋值给homework - params_publish_time = params[:homework_publish_time_group] - params_end_time = params[:homework_end_time_group] - # params_archive_time = params[:homework_archive_time_group] - min_publish_time = @homework.publish_time ? (format_time @homework.publish_time).to_s : "" - max_end_time = @homework.end_time ? (format_time @homework.end_time).to_s : "" - if params[:homework_end_time_group] - max_end_time = "" - params[:homework_end_time_group].each_with_index do |end_time, index| - if end_time != "" - if max_end_time == "" || end_time > max_end_time - max_end_time = end_time - end + if @homework.unified_setting + params_publish_time = params[:homework_publish_time] + params_end_time = params[:homework_end_time] + # params_archive_time = params[:homework_archive_time] + min_publish_time = params_publish_time + max_end_time = params_end_time + else + # 获取最小发布时间和最大截止时间,赋值给homework + params_publish_time = params[:homework_publish_time_group] + params_end_time = params[:homework_end_time_group] + # params_archive_time = params[:homework_archive_time_group] + min_publish_time = @homework.publish_time ? (format_time @homework.publish_time).to_s : "" + max_end_time = @homework.end_time ? (format_time @homework.end_time).to_s : "" + if params[:homework_end_time_group] + max_end_time = "" + params[:homework_end_time_group].each_with_index do |end_time, index| + if end_time != "" + if max_end_time == "" || end_time > max_end_time + max_end_time = end_time end end end + end - if params[:homework_publish_time_group] - params[:homework_publish_time_group].each_with_index do |publish_time, index| - if publish_time != "" - if min_publish_time == "" || publish_time < min_publish_time - min_publish_time = publish_time - end + if params[:homework_publish_time_group] + params[:homework_publish_time_group].each_with_index do |publish_time, index| + if publish_time != "" + if min_publish_time == "" || publish_time < min_publish_time + min_publish_time = publish_time end end end end + end - # 不统一设置且分班数大于一则更新分组设置 - if !@homework.unified_setting && @course.course_groups.count > 1 - @course.course_groups.each_with_index do |group, index| - homework_group_setting = @homework.homework_group_settings.where(:course_group_id => group.id).first - unless homework_group_setting - homework_group_setting = HomeworkGroupSetting.create(:homework_common_id => @homework.id, :course_group_id => group.id, :course_id => @course.id) - end + # 不统一设置且分班数大于一则更新分组设置 + if !@homework.unified_setting && @course.course_groups.count > 1 + @course.course_groups.each_with_index do |group, index| + homework_group_setting = @homework.homework_group_settings.where(:course_group_id => group.id).first + unless homework_group_setting + homework_group_setting = HomeworkGroupSetting.create(:homework_common_id => @homework.id, :course_group_id => group.id, :course_id => @course.id) end - group_id = [] - @homework.homework_group_settings.where("publish_time is null or publish_time > '#{Time.now}'").joins(:course_group).reorder("CONVERT(course_groups.name USING gbk) COLLATE gbk_chinese_ci ASC").each_with_index do |setting, index| - if params[:homework_publish_time_group] && min_publish_time != "" - if params[:homework_publish_time_group][index] && params[:homework_publish_time_group][index] != "" - setting.update_column(:publish_time, params[:homework_publish_time_group][index]) - end - elsif params[:homework_publish_time_group] && min_publish_time == "" - setting.update_column(:publish_time, Time.now) - group_id << setting.course_group_id + end + group_id = [] + @homework.homework_group_settings.where("publish_time is null or publish_time > '#{Time.now}'").joins(:course_group).reorder("CONVERT(course_groups.name USING gbk) COLLATE gbk_chinese_ci ASC").each_with_index do |setting, index| + if params[:homework_publish_time_group] && min_publish_time != "" + if params[:homework_publish_time_group][index] && params[:homework_publish_time_group][index] != "" + setting.update_column(:publish_time, params[:homework_publish_time_group][index]) end + elsif params[:homework_publish_time_group] && min_publish_time == "" + setting.update_column(:publish_time, Time.now) + group_id << setting.course_group_id end + end - @homework.homework_group_settings.where("end_time is null or end_time > '#{Time.now}'").joins(:course_group).reorder("CONVERT(course_groups.name USING gbk) COLLATE gbk_chinese_ci ASC").each_with_index do |setting, index| - if params[:homework_end_time_group] && max_end_time != "" - if params[:homework_end_time_group][index] && params[:homework_end_time_group][index] != "" - setting.update_column(:end_time, params[:homework_end_time_group][index]) - end - elsif params[:homework_end_time_group] && max_end_time == "" - setting.update_column(:end_time, Time.at(((1.month.since.to_i)/3600.0).ceil * 3600)) + @homework.homework_group_settings.where("end_time is null or end_time > '#{Time.now}'").joins(:course_group).reorder("CONVERT(course_groups.name USING gbk) COLLATE gbk_chinese_ci ASC").each_with_index do |setting, index| + if params[:homework_end_time_group] && max_end_time != "" + if params[:homework_end_time_group][index] && params[:homework_end_time_group][index] != "" + setting.update_column(:end_time, params[:homework_end_time_group][index]) end + elsif params[:homework_end_time_group] && max_end_time == "" + setting.update_column(:end_time, Time.at(((1.month.since.to_i)/3600.0).ceil * 3600)) end - # 统一设置则删除分组设置 - elsif @homework.unified_setting - @homework.homework_group_settings.destroy_all end + # 统一设置则删除分组设置 + elsif @homework.unified_setting + @homework.homework_group_settings.destroy_all + end - # homework 的记录更新 - # 发布时间不为空 - if params_publish_time && min_publish_time != "" - @homework.publish_time = min_publish_time if @homework.publish_time.nil? || @homework.publish_time > Time.now - @homework.end_time = max_end_time if @homework.end_time.nil? || @homework.end_time > Time.now - # @homework.archive_time = params_archive_time if params_archive_time - if @homework.publish_time < Time.now and @homework_detail_manual.comment_status == 0 - @homework_detail_manual.comment_status = 1 - create_homework_user = 1 - - if @homework.course_acts.size == 0 - @homework.course_acts << CourseActivity.new(:user_id => @homework.user_id,:course_id => @homework.course_id) - end + # homework 的记录更新 + # 发布时间不为空 + if params_publish_time && min_publish_time != "" + @homework.publish_time = min_publish_time + @homework.end_time = max_end_time + # @homework.archive_time = params_archive_time if params_archive_time + if @homework.publish_time < Time.now and @homework_detail_manual.comment_status == 0 + @homework_detail_manual.comment_status = 1 + create_homework_user = 1 + + if @homework.course_acts.size == 0 + @homework.course_acts << CourseActivity.new(:user_id => @homework.user_id,:course_id => @homework.course_id) end + end =begin if @homework.archive_time < Time.now && @homework_detail_manual.comment_status < 6 @homework_detail_manual.comment_status = 6 @@ -378,22 +445,22 @@ class HomeworkCommonController < ApplicationController @homework_detail_manual.comment_status = 5 end =end - # 发布时间未设置 则按当前时间立即发布 - elsif params_publish_time && min_publish_time == "" - @homework_detail_manual.comment_status = 1 if @homework_detail_manual.comment_status == 0 - @homework.publish_time = Time.now if @homework.publish_time.nil? || @homework.publish_time > Time.now - @homework.unified_setting = 1 - @homework.end_time = Time.at(((1.month.since.to_i)/3600.0).ceil * 3600) if @homework.end_time.nil? || @homework.end_time > Time.now - # @homework.archive_time = Time.at(((2.months.since.to_i)/3600.0).ceil * 3600) - - create_homework_user = 1 - if @homework.course_acts.size == 0 - @homework.course_acts << CourseActivity.new(:user_id => @homework.user_id,:course_id => @homework.course_id) - end - # 已发布的作业,只更新截止时间和结束时间 - else - @homework.end_time = max_end_time if params_end_time && (@homework.end_time.nil? || @homework.end_time > Time.now) - # @homework.archive_time = params_archive_time if params_archive_time + # 发布时间未设置 则按当前时间立即发布 + elsif params_publish_time && min_publish_time == "" + @homework_detail_manual.comment_status = 1 + @homework.publish_time = Time.now + @homework.unified_setting = 1 + @homework.end_time = Time.at(((1.month.since.to_i)/3600.0).ceil * 3600) + # @homework.archive_time = Time.at(((2.months.since.to_i)/3600.0).ceil * 3600) + + create_homework_user = 1 + if @homework.course_acts.size == 0 + @homework.course_acts << CourseActivity.new(:user_id => @homework.user_id,:course_id => @homework.course_id) + end + # 已发布的作业,只更新截止时间和结束时间 + else + @homework.end_time = max_end_time if params_end_time + # @homework.archive_time = params_archive_time if params_archive_time =begin if @homework.archive_time < Time.now && @homework_detail_manual.comment_status < 6 @@ -402,190 +469,189 @@ class HomeworkCommonController < ApplicationController @homework_detail_manual.comment_status = 5 end =end - end + end - if params[:homework_allow_late] == '1' - @homework.allow_late = true - if @homework.late_penalty != params[:homework_late_penalty].to_i - @homework.student_works.where(:work_status => 2).each do |work| - work.late_penalty = params[:homework_late_penalty].to_i - work.save - end + if params[:homework_allow_late] == '1' + @homework.allow_late = true + if @homework.late_penalty != params[:homework_late_penalty].to_i + @homework.student_works.where(:work_status => 2).each do |work| + work.late_penalty = params[:homework_late_penalty].to_i + work.save end - @homework.late_penalty = params[:homework_late_penalty].to_i - else - @homework.allow_late = false - @homework.late_penalty = 0 end + @homework.late_penalty = params[:homework_late_penalty].to_i + else + @homework.allow_late = false + @homework.late_penalty = 0 + end - anonymous_comment = @homework.anonymous_comment - absence_penalty = @homework_detail_manual.absence_penalty - appeal_penalty = @homework_detail_manual.appeal_penalty - if @homework_detail_manual.comment_status < 3 - if params[:homework_anonymous_comment] - @homework.anonymous_comment = 0 - @homework_detail_manual.evaluation_start = params[:homework_evaluation_start] if params[:homework_evaluation_start] - @homework_detail_manual.evaluation_end = params[:homework_evaluation_end] if params[:homework_evaluation_end] - @homework_detail_manual.evaluation_num = params[:homework_evaluation_num] if params[:homework_evaluation_num] - @homework_detail_manual.absence_penalty = params[:homework_absence_penalty] if params[:homework_absence_penalty] - - else - @homework.anonymous_comment = 1 - @homework_detail_manual.evaluation_start = nil - @homework_detail_manual.evaluation_end = nil - @homework_detail_manual.evaluation_num = 0 - @homework_detail_manual.absence_penalty = 0 - end - else + anonymous_comment = @homework.anonymous_comment + absence_penalty = @homework_detail_manual.absence_penalty + appeal_penalty = @homework_detail_manual.appeal_penalty + if @homework_detail_manual.comment_status < 3 + if params[:homework_anonymous_comment] + @homework.anonymous_comment = 0 + @homework_detail_manual.evaluation_start = params[:homework_evaluation_start] if params[:homework_evaluation_start] @homework_detail_manual.evaluation_end = params[:homework_evaluation_end] if params[:homework_evaluation_end] @homework_detail_manual.evaluation_num = params[:homework_evaluation_num] if params[:homework_evaluation_num] @homework_detail_manual.absence_penalty = params[:homework_absence_penalty] if params[:homework_absence_penalty] - end - if anonymous_comment != @homework.anonymous_comment - @homework_detail_manual.te_proportion = 1 - @homework_detail_manual.ta_proportion = 0 - @homework_detail_programing.ta_proportion = 0 if @homework_detail_programing - end - if @homework_detail_manual.comment_status < 4 - if @homework.anonymous_comment == 0 && params[:homework_anonymous_appeal] - @homework.anonymous_appeal = 1 - @homework_detail_manual.appeal_time = params[:homework_appeal_time] if params[:homework_appeal_time] - @homework_detail_manual.appeal_penalty = params[:homework_appeal_penalty] if params[:homework_appeal_penalty] - else - @homework.anonymous_appeal = 0 - @homework_detail_manual.appeal_time = nil - @homework_detail_manual.appeal_penalty = 0 - end else + @homework.anonymous_comment = 1 + @homework_detail_manual.evaluation_start = nil + @homework_detail_manual.evaluation_end = nil + @homework_detail_manual.evaluation_num = 0 + @homework_detail_manual.absence_penalty = 0 + end + else + @homework_detail_manual.evaluation_end = params[:homework_evaluation_end] if params[:homework_evaluation_end] + @homework_detail_manual.evaluation_num = params[:homework_evaluation_num] if params[:homework_evaluation_num] + @homework_detail_manual.absence_penalty = params[:homework_absence_penalty] if params[:homework_absence_penalty] + end + if anonymous_comment != @homework.anonymous_comment + @homework_detail_manual.te_proportion = 1 + @homework_detail_manual.ta_proportion = 0 + @homework_detail_programing.ta_proportion = 0 if @homework_detail_programing + end + if @homework_detail_manual.comment_status < 4 + if @homework.anonymous_comment == 0 && params[:homework_anonymous_appeal] + @homework.anonymous_appeal = 1 @homework_detail_manual.appeal_time = params[:homework_appeal_time] if params[:homework_appeal_time] @homework_detail_manual.appeal_penalty = params[:homework_appeal_penalty] if params[:homework_appeal_penalty] + + else + @homework.anonymous_appeal = 0 + @homework_detail_manual.appeal_time = nil + @homework_detail_manual.appeal_penalty = 0 end - if absence_penalty != @homework_detail_manual.absence_penalty && @homework_detail_manual.comment_status >= 4 - all_dis_eva = StudentWorksEvaluationDistribution.where(:student_work_id => @homework.student_works.map(&:id)) - has_sw_count = all_dis_eva.select("distinct user_id").count - anon_count = all_dis_eva.count / has_sw_count + else + @homework_detail_manual.appeal_time = params[:homework_appeal_time] if params[:homework_appeal_time] + @homework_detail_manual.appeal_penalty = params[:homework_appeal_penalty] if params[:homework_appeal_penalty] + end + if absence_penalty != @homework_detail_manual.absence_penalty && @homework_detail_manual.comment_status >= 4 + all_dis_eva = StudentWorksEvaluationDistribution.where(:student_work_id => @homework.student_works.map(&:id)) + has_sw_count = all_dis_eva.select("distinct user_id").count + anon_count = all_dis_eva.count / has_sw_count + @homework.student_works.where("work_status != 0").each do |student_work| + absence_penalty_count = student_work.user.student_works_evaluation_distributions.where(:student_work_id => @homework.student_works.map(&:id)).count - student_work.user.student_works_scores.where(:student_work_id => @homework.student_works.map(&:id), :reviewer_role => 3).count + student_work.absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * @homework_detail_manual.absence_penalty : 0 + student_work.save + end + end + if appeal_penalty != @homework_detail_manual.appeal_penalty && @homework_detail_manual.comment_status >= 4 + @homework.student_works.each do |student_work| + appeal_penalty_count = student_work.user.student_works_scores.where(:student_work_id => @homework.student_works.map(&:id), :appeal_status => 3).count + student_work.appeal_penalty = appeal_penalty_count > 0 ? appeal_penalty_count * @homework_detail_manual.absence_penalty : 0 + student_work.save + end + end + + # 助教评分模式有变更 则更新学生分数 + if params[:homework_ta_mode] && @homework_detail_manual.ta_mode.to_i != params[:homework_ta_mode].to_i + @homework_detail_manual.ta_mode = params[:ta_mode].to_i + @homework_detail_manual.save + if @homework_detail_manual.ta_mode == 1 @homework.student_works.where("work_status != 0").each do |student_work| - absence_penalty_count = student_work.user.student_works_evaluation_distributions.where(:student_work_id => @homework.student_works.map(&:id)).count - student_work.user.student_works_scores.where(:student_work_id => @homework.student_works.map(&:id), :reviewer_role => 3).count - student_work.absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * @homework_detail_manual.absence_penalty : 0 + ts_score = StudentWorksScore.find_by_sql("SELECT AVG(score) AS score FROM (SELECT * FROM (SELECT * FROM student_works_scores WHERE student_work_id = #{student_work.id} AND reviewer_role = 2 AND score IS NOT NULL ORDER BY created_at DESC) AS t GROUP BY user_id) AS a") + student_work.teaching_asistant_score = ts_score.first.score.nil? ? nil : ts_score.first.score.try(:round, 2).to_f student_work.save end - end - if appeal_penalty != @homework_detail_manual.appeal_penalty && @homework_detail_manual.comment_status >= 4 - @homework.student_works.each do |student_work| - appeal_penalty_count = student_work.user.student_works_scores.where(:student_work_id => @homework.student_works.map(&:id), :appeal_status => 3).count - student_work.appeal_penalty = appeal_penalty_count > 0 ? appeal_penalty_count * @homework_detail_manual.absence_penalty : 0 + else + @homework.student_works.where("work_status != 0").each do |student_work| + ts_score = StudentWorksScore.where("student_work_id = #{student_work.id} AND reviewer_role = 2 AND score IS NOT NULL").order("created_at DESC") + student_work.teaching_asistant_score = ts_score.first.nil? ? nil : ts_score.first.score student_work.save end end + end - # 助教评分模式有变更 则更新学生分数 - if params[:homework_ta_mode] && @homework_detail_manual.ta_mode.to_i != params[:homework_ta_mode].to_i - @homework_detail_manual.ta_mode = params[:ta_mode].to_i - @homework_detail_manual.save - if @homework_detail_manual.ta_mode == 1 - @homework.student_works.where("work_status != 0").each do |student_work| - ts_score = StudentWorksScore.find_by_sql("SELECT AVG(score) AS score FROM (SELECT * FROM (SELECT * FROM student_works_scores WHERE student_work_id = #{student_work.id} AND reviewer_role = 2 AND score IS NOT NULL ORDER BY created_at DESC) AS t GROUP BY user_id) AS a") - student_work.teaching_asistant_score = ts_score.first.score.nil? ? nil : ts_score.first.score.try(:round, 2).to_f - student_work.save - end - else - @homework.student_works.where("work_status != 0").each do |student_work| - ts_score = StudentWorksScore.where("student_work_id = #{student_work.id} AND reviewer_role = 2 AND score IS NOT NULL").order("created_at DESC") - student_work.teaching_asistant_score = ts_score.first.nil? ? nil : ts_score.first.score - student_work.save - end - end + # 最终成绩组成 + if params[:homework_final_mode] && params[:homework_final_mode].to_i != @homework_detail_manual.final_mode + @homework_detail_manual.final_mode = params[:homework_final_mode].to_i + if params[:homework_final_mode].to_i == 0 + @homework_detail_manual.te_proportion = params[:te_proportion] + @homework_detail_manual.ta_proportion = params[:ta_proportion] + @homework_detail_programing.ta_proportion = params[:sy_proportion] if @homework_detail_programing + @homework_detail_programing.save if @homework_detail_programing end + @homework_detail_manual.save if @homework_detail_manual + @homework.save + @homework = HomeworkCommon.find @homework.id + @homework.student_works.where("work_status != 0").each do |student_work| + # set_final_score @homework,student_work + student_work.save + end + elsif params[:homework_final_mode] && @homework_detail_manual.final_mode == 0 + if (params[:te_proportion] && params[:te_proportion].to_s != @homework_detail_manual.te_proportion.to_s) || (params[:ta_proportion] && params[:ta_proportion].to_s != @homework_detail_manual.ta_proportion.to_s) || (@homework_detail_programing && @homework_detail_programing.ta_proportion.to_s != params[:sy_proportion].to_s) + @homework_detail_manual.te_proportion = params[:te_proportion] + @homework_detail_manual.ta_proportion = params[:ta_proportion] + @homework_detail_programing.ta_proportion = params[:sy_proportion] if @homework_detail_programing - # 最终成绩组成 - if params[:homework_final_mode] && params[:homework_final_mode].to_i != @homework_detail_manual.final_mode - @homework_detail_manual.final_mode = params[:homework_final_mode].to_i - if params[:homework_final_mode].to_i == 0 - @homework_detail_manual.te_proportion = params[:te_proportion] - @homework_detail_manual.ta_proportion = params[:ta_proportion] - @homework_detail_programing.ta_proportion = params[:sy_proportion] if @homework_detail_programing - @homework_detail_programing.save if @homework_detail_programing - end @homework_detail_manual.save if @homework_detail_manual + @homework_detail_programing.save if @homework_detail_programing @homework.save @homework = HomeworkCommon.find @homework.id @homework.student_works.where("work_status != 0").each do |student_work| # set_final_score @homework,student_work student_work.save end - elsif params[:homework_final_mode] && @homework_detail_manual.final_mode == 0 - if (params[:te_proportion] && params[:te_proportion].to_s != @homework_detail_manual.te_proportion.to_s) || (params[:ta_proportion] && params[:ta_proportion].to_s != @homework_detail_manual.ta_proportion.to_s) || (@homework_detail_programing && @homework_detail_programing.ta_proportion.to_s != params[:sy_proportion].to_s) - @homework_detail_manual.te_proportion = params[:te_proportion] - @homework_detail_manual.ta_proportion = params[:ta_proportion] - @homework_detail_programing.ta_proportion = params[:sy_proportion] if @homework_detail_programing - - @homework_detail_manual.save if @homework_detail_manual - @homework_detail_programing.save if @homework_detail_programing - @homework.save - @homework = HomeworkCommon.find @homework.id - @homework.student_works.where("work_status != 0").each do |student_work| - # set_final_score @homework,student_work - student_work.save - end - end end + end - if @homework.homework_type == 4 - @homework.work_efficiency = params[:work_efficiency] ? 1 : 0 - if params[:eff_score] != @homework.eff_score - @homework.eff_score = params[:eff_score] - score_change = true - end - if @homework_detail_manual.answer_open_evaluation != params[:answer_open_evaluation].to_i - @homework_detail_manual.answer_open_evaluation = params[:answer_open_evaluation].to_i - score_change = true - end - if @homework_detail_manual.shixun_evaluation != params[:shixun_evaluation].to_i - @homework_detail_manual.shixun_evaluation = params[:shixun_evaluation].to_i - score_change = true - end - if params[:challenge] - score_change = true - params[:challenge].each_with_index do |challenge_id, index| - setting = @homework.homework_challenge_settings.where(:challenge_id => challenge_id).first - if setting - setting.update_attributes(:score => params[:score][index]) - else - HomeworkChallengeSetting.create(:homework_common_id => @homework.id, :challenge_id => challenge_id, :shixun_id => @homework.homework_commons_shixuns.shixun_id, :score => params[:score][index]) - end + if @homework.homework_type == 4 + @homework.work_efficiency = params[:work_efficiency] ? 1 : 0 + if params[:eff_score] != @homework.eff_score + @homework.eff_score = params[:eff_score] + score_change = true + end + if @homework_detail_manual.answer_open_evaluation != params[:answer_open_evaluation].to_i + @homework_detail_manual.answer_open_evaluation = params[:answer_open_evaluation].to_i + score_change = true + end + if @homework_detail_manual.shixun_evaluation != params[:shixun_evaluation].to_i + @homework_detail_manual.shixun_evaluation = params[:shixun_evaluation].to_i + score_change = true + end + if params[:challenge] + score_change = true + params[:challenge].each_with_index do |challenge_id, index| + setting = @homework.homework_challenge_settings.where(:challenge_id => challenge_id).first + if setting + setting.update_attributes(:score => params[:score][index]) + else + HomeworkChallengeSetting.create(:homework_common_id => @homework.id, :challenge_id => challenge_id, :shixun_id => @homework.homework_commons_shixuns.shixun_id, :score => params[:score][index]) end - @homework.homework_challenge_settings.where("challenge_id not in (#{params[:challenge].join(',')})").destroy_all end - @homework.score_open = params[:homework_score_open] ? 1 : 0 - @homework.save! - if score_change - homework_challenge_settings = HomeworkChallengeSetting.where(:homework_common_id => @homework.id) - @homework.student_works.where("work_status != 0").each do |student_work| - set_shixun_final_score student_work, @homework_detail_manual.answer_open_evaluation, homework_challenge_settings - end - # 更新所有学生的效率分 - update_student_eff_score HomeworkCommon.where(:id => @homework.id).first + @homework.homework_challenge_settings.where("challenge_id not in (#{params[:challenge].join(',')})").destroy_all + end + @homework.score_open = params[:homework_score_open] ? 1 : 0 + @homework.save! + if score_change + homework_challenge_settings = HomeworkChallengeSetting.where(:homework_common_id => @homework.id) + @homework.student_works.where("work_status != 0").each do |student_work| + set_shixun_final_score student_work, @homework_detail_manual.answer_open_evaluation, homework_challenge_settings end - else - @homework.work_public = params[:homework_work_public] ? 1 : 0 - @homework.score_open = params[:homework_score_open] ? 1 : 0 - @homework.answer_public = params[:homework_answer_public] ? 1 : 0 - @homework.comment_public = params[:homework_comment_public] ? 1 : 0 - @homework.save! + # 更新所有学生的效率分 + update_student_eff_score HomeworkCommon.where(:id => @homework.id).first end - @homework_detail_manual.save - if create_homework_user.present? - if group_id.present? && group_id.size != 0 - if group_id.size == @course.course_groups.count - create_works_tiding @homework, @course.student - else - members = @course.members.where(:course_group_id => group_id) - create_works_tiding @homework, members - end - else + else + @homework.work_public = params[:homework_work_public] ? 1 : 0 + @homework.score_open = params[:homework_score_open] ? 1 : 0 + @homework.answer_public = params[:homework_answer_public] ? 1 : 0 + @homework.comment_public = params[:homework_comment_public] ? 1 : 0 + @homework.save! + end + @homework_detail_manual.save + if create_homework_user.present? + if group_id.present? && group_id.size != 0 + if group_id.size == @course.course_groups.count create_works_tiding @homework, @course.student + else + members = @course.members.where(:course_group_id => group_id) + create_works_tiding @homework, members end + else + create_works_tiding @homework, @course.student end end redirect_to student_work_index_path(:homework => @homework.id) @@ -674,7 +740,6 @@ class HomeworkCommonController < ApplicationController def destroy if @homework.destroy - StudentWork.where(:homework_common_id => @homework.id).destroy_all #更新CourseHomeworkStatistics中每个学生的未交作品数、已交作品数、迟交作品数 # hw_count = @course.homework_commons.includes(:homework_detail_manual).where("homework_detail_manuals.comment_status > 0").count # homework_ids = @course.homework_commons.empty? ? "(-1)" : "(" + @course.homework_commons.map{|hw| hw.id}.join(",") + ")" @@ -707,7 +772,9 @@ class HomeworkCommonController < ApplicationController respond_to do |format| format.html { - redirect_to homework_common_index_path(:course => @course.id, :homework_type => @homework.homework_type) + redirect_to @homework.course_homework_category_id ? + homework_common_index_path(:course => @course.id, :homework_type => @homework.homework_type, :category => @homework.course_homework_category_id) : + homework_common_index_path(:course => @course.id, :homework_type => @homework.homework_type) } end end @@ -720,11 +787,8 @@ class HomeworkCommonController < ApplicationController myshixuns = Myshixun.where(:id => @homework.student_works.where(:user_id => group.members.pluck(:user_id)).pluck(:myshixun_id)) group[:work_count] = myshixuns.select{|myshixun| myshixun.games.where(:status => 2).count > 0}.count end - @none_group_member_count = @course.student.where(:student_id => @course.members.where(:course_group_id => 0).map(&:user_id)).count - unless @none_group_member_count == 0 - myshixuns = Myshixun.where(:id => @homework.student_works.where(:user_id => @course.members.where(:course_group_id => 0).map(&:user_id)).pluck(:myshixun_id)) - @none_group_work_count = myshixuns.select{|myshixun| myshixun.games.where(:status => 2).count > 0}.count - end + myshixuns = Myshixun.where(:id => @homework.student_works.where(:user_id => @course.members.where(:course_group_id => 0).map(&:user_id)).pluck(:myshixun_id)) + @none_group_work_count = myshixuns.select{|myshixun| myshixun.games.where(:status => 2).count > 0}.count else if params[:code_group] user_lists = [] @@ -932,62 +996,60 @@ class HomeworkCommonController < ApplicationController end def publish_homework - ActiveRecord::Base.transaction do - if @homework.homework_detail_manual.try(:comment_status) == 0 - if params[:group_ids] - if @course.course_groups.where(:id => params[:group_ids].split(",")).count == @course.course_groups.count - @homework.homework_group_settings.destroy_all - @homework.update_attribute("unified_setting", true) - # 发消息 - create_works_tiding @homework, @course.student - else - @homework.update_attribute("unified_setting", false) - @course.course_groups.each do |group| - homework_group_setting = @homework.homework_group_settings.where(:course_group_id => group.id).first - unless homework_group_setting - HomeworkGroupSetting.create(:homework_common_id => @homework.id, :course_group_id => group.id, :course_id => @course.id, :publish_time => @homework.publish_time, :end_time => @homework.end_time) - end - end - @homework.homework_group_settings.where(:course_group_id => params[:group_ids].split(",")).update_all(:publish_time => Time.now) - @homework.homework_group_settings.where(:course_group_id => params[:group_ids].split(","), :end_time => nil).update_all(:end_time => Time.at(((1.month.since.to_i)/3600.0).ceil * 3600)) - # 发消息 - members = @course.members.where(:course_group_id => params[:group_ids].split(",")) - create_works_tiding @homework, members - end - else + if @homework.homework_detail_manual.try(:comment_status) == 0 + if params[:group_ids] + if @course.course_groups.where(:id => params[:group_ids].split(",")).count == @course.course_groups.count @homework.homework_group_settings.destroy_all + @homework.update_attribute("unified_setting", true) + # 发消息 create_works_tiding @homework, @course.student + else + @homework.update_attribute("unified_setting", false) + @course.course_groups.each do |group| + homework_group_setting = @homework.homework_group_settings.where(:course_group_id => group.id).first + unless homework_group_setting + HomeworkGroupSetting.create(:homework_common_id => @homework.id, :course_group_id => group.id, :course_id => @course.id, :publish_time => @homework.publish_time, :end_time => @homework.end_time) + end + end + @homework.homework_group_settings.where(:course_group_id => params[:group_ids].split(",")).update_all(:publish_time => Time.now) + @homework.homework_group_settings.where(:course_group_id => params[:group_ids].split(","), :end_time => nil).update_all(:end_time => Time.at(((1.month.since.to_i)/3600.0).ceil * 3600)) + # 发消息 + members = @course.members.where(:course_group_id => params[:group_ids].split(",")) + create_works_tiding @homework, members end - @homework.update_attribute("publish_time", Time.now) + else + @homework.homework_group_settings.destroy_all + create_works_tiding @homework, @course.student + end + @homework.update_attribute("publish_time", Time.now) - if @homework.end_time.nil? - @homework.update_attribute("end_time", Time.at(((1.month.since.to_i)/3600.0).ceil * 3600)) - elsif HomeworkGroupSetting.where("homework_common_id = #{@homework.id} and end_time is not null").count > 0 - @homework.update_attribute("end_time", HomeworkGroupSetting.where("homework_common_id = #{@homework.id} and end_time is not null").map(&:end_time).max) - end + if @homework.end_time.nil? + @homework.update_attribute("end_time", Time.at(((1.month.since.to_i)/3600.0).ceil * 3600)) + elsif HomeworkGroupSetting.where("homework_common_id = #{@homework.id} and end_time is not null").count > 0 + @homework.update_attribute("end_time", HomeworkGroupSetting.where("homework_common_id = #{@homework.id} and end_time is not null").map(&:end_time).max) + end =begin if @homework.archive_time.nil? @homework.update_attribute("archive_time", Time.at(((2.months.since.to_i)/3600.0).ceil * 3600)) end =end - @homework.homework_detail_manual.update_attribute('comment_status', 1) + @homework.homework_detail_manual.update_attribute('comment_status', 1) - if @homework.course_acts.size == 0 - @homework.course_acts << CourseActivity.new(:user_id => @homework.user_id,:course_id => @homework.course_id) - end - else - @homework.homework_group_settings.where(:course_group_id => params[:group_ids].split(",")).update_all(:publish_time => Time.now) - @homework.homework_group_settings.where(:course_group_id => params[:group_ids].split(","), :end_time => nil).update_all(:end_time => Time.at(((1.month.since.to_i)/3600.0).ceil * 3600)) - if HomeworkGroupSetting.where("homework_common_id = #{@homework.id} and end_time is not null").count > 0 - @homework.update_attribute("end_time", HomeworkGroupSetting.where("homework_common_id = #{@homework.id} and end_time is not null").map(&:end_time).max) - end - # 发消息 - members = @course.members.where(:course_group_id => params[:group_ids].split(",")) - create_works_tiding @homework, members + if @homework.course_acts.size == 0 + @homework.course_acts << CourseActivity.new(:user_id => @homework.user_id,:course_id => @homework.course_id) end - if @homework.end_time > Time.now && @homework.homework_detail_manual.try(:comment_status) > 1 - @homework.homework_detail_manual.update_attribute("comment_status", 1) + else + @homework.homework_group_settings.where(:course_group_id => params[:group_ids].split(",")).update_all(:publish_time => Time.now) + @homework.homework_group_settings.where(:course_group_id => params[:group_ids].split(","), :end_time => nil).update_all(:end_time => Time.at(((1.month.since.to_i)/3600.0).ceil * 3600)) + if HomeworkGroupSetting.where("homework_common_id = #{@homework.id} and end_time is not null").count > 0 + @homework.update_attribute("end_time", HomeworkGroupSetting.where("homework_common_id = #{@homework.id} and end_time is not null").map(&:end_time).max) end + # 发消息 + members = @course.members.where(:course_group_id => params[:group_ids].split(",")) + create_works_tiding @homework, members + end + if @homework.end_time > Time.now && @homework.homework_detail_manual.try(:comment_status) > 1 + @homework.homework_detail_manual.update_attribute("comment_status", 1) end redirect_to student_work_index_path(:homework => @homework.id) end @@ -1037,8 +1099,7 @@ class HomeworkCommonController < ApplicationController def end_homework time = Time.now student_works = @homework.student_works.where("0=1") - ActiveRecord::Base.transaction do -# if @homework.homework_detail_manual.try(:comment_status) == 1 && @homework.end_time > time + # if @homework.homework_detail_manual.try(:comment_status) == 1 && @homework.end_time > time if params[:group_ids] # @homework.homework_group_settings.where(:course_group_id => params[:group_id]).where("publish_time > '#{Time.now}' or publish_time is null").update_all(:publish_time => time) @homework.homework_group_settings.where(:course_group_id => params[:group_ids].split(",")).update_all(:end_time => time) @@ -1075,9 +1136,7 @@ class HomeworkCommonController < ApplicationController # 更新所有学生的效率分 update_student_eff_score HomeworkCommon.where(:id => @homework.id).first end -# end - end - + # end redirect_to student_work_index_path(:homework => @homework.id) end @@ -1356,7 +1415,7 @@ class HomeworkCommonController < ApplicationController def find_homework @homework = HomeworkCommon.find params[:id] @homework_detail_manual = @homework.homework_detail_manual - # @homework_detail_programing = @homework.homework_detail_programing + @homework_detail_programing = @homework.homework_detail_programing @homework_detail_group = @homework.homework_detail_group @course = @homework.course rescue diff --git a/app/controllers/homework_users_controller.rb b/app/controllers/homework_users_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/iframes_controller.rb b/app/controllers/iframes_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/issue_categories_controller.rb b/app/controllers/issue_categories_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/issue_relations_controller.rb b/app/controllers/issue_relations_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/issue_statuses_controller.rb b/app/controllers/issue_statuses_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/journals_controller.rb b/app/controllers/journals_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/kubernete_controller.rb b/app/controllers/kubernete_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/list_controller.rb b/app/controllers/list_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/local_settings_controller.rb b/app/controllers/local_settings_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/mail_handler_controller.rb b/app/controllers/mail_handler_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/managements_controller.rb b/app/controllers/managements_controller.rb old mode 100644 new mode 100755 index 7886b8db..cc5db9d2 --- a/app/controllers/managements_controller.rb +++ b/app/controllers/managements_controller.rb @@ -16,50 +16,6 @@ class ManagementsController < ApplicationController CODES = %W(2 3 4 5 6 7 8 9 A B C D E F G H J K L N M O P Q R S T U V W X Y Z) - # 更新实训课程的等级 - def update_level_for_subject - subject = Subject.find params[:subject_id] - subject.update_attribute(:subject_level_system_id, params[:level_id]) - render :json => {status: 1} - end - - # 实训课程等级体系 - def subject_level_system - @levels = SubjectLevelSystem.all - end - - # 创建课程等级体系 - def create_subject_level - raise("名称不能为空") if params[:name].blank? - repeat_name = SubjectLevelSystem.where(name: params[:name]).count - raise("名称不能重复") if repeat_name > 0 - level = SubjectLevelSystem.pluck(:level).max.to_i + 1 - SubjectLevelSystem.create(name: params[:name], level: level) - redirect_to subject_level_system_managements_path(:format => "js") - end - - # 重命名课程等级 - def rename_subject_level - raise("名称不能为空!") if params[:name].blank? - repeat_name = SubjectLevelSystem.where("name = ? and id != ?", params[:name], params[:id]).count - raise("名称不能重复") if repeat_name > 0 - level = SubjectLevelSystem.find params[:id] - level.update_attribute(:name, params[:name]) - redirect_to subject_level_system_managements_path(:format => "js") - end - - # 删除课程等级 - def delete_subject_level - level = SubjectLevelSystem.find params[:id] - Subject.where(:subject_level_system_id => level).update_all(:subject_level_system_id => nil) - levels = SubjectLevelSystem.where("level > ?", level.level) - levels.each do |l| - l.update_attribute(:level, l.level-1) - end - level.delete - redirect_to subject_level_system_managements_path(:format => "js") - end - # 工程认证视频导入模板 def ec_template @template = EcTemplate.where(nil) @@ -158,11 +114,7 @@ class ManagementsController < ApplicationController @sub_type = 8 @g = Gitlab.client if params[:search] - if params[:search].to_i.to_s == params[:search].to_s - myshixun_id = Game.where(:myshixun_id => params[:search].to_i).pluck(:myshixun_id) - else - myshixun_id = Game.where(:identifier => params[:search]).pluck(:myshixun_id) - end + myshixun_id = Game.where(:identifier => params[:search]).pluck(:myshixun_id) @myshixuns = Myshixun.where(:id => myshixun_id).includes(:shixun) else @myshixuns = Myshixun.where("0=0").includes(:shixun) @@ -795,24 +747,7 @@ class ManagementsController < ApplicationController def shixun_feedback_message @menu_type = 8 @sub_type = 2 - @search = params[:search] - @beginTime = params[:beginTime] - @endTime = params[:endTime] - if @search.present? - shixun_ids = Shixun.where("name like ?", "%#{params[:search]}%").pluck(:id) - @discusses = Discuss.where(:dis_type => "Shixun", :dis_id => shixun_ids).reorder("created_at desc") - else - @discusses = Discuss.where(:dis_type => "Shixun").reorder("created_at desc") - end - - if params[:beginTime] && params[:beginTime].strip != "" - @discusses = @discusses.where("created_at >= '#{Time.parse(params[:beginTime])}'") - end - if params[:endTime] && params[:endTime].strip != "" - @discusses = @discusses.where("created_at <= '#{Time.parse(params[:endTime])}'") - end - - @all_discusses = @discusses + @discusses = Discuss.where(:dis_type => "Shixun").reorder("created_at desc") @discusses_count = @discusses.count @limit = 20 @is_remote = true @@ -823,11 +758,6 @@ class ManagementsController < ApplicationController respond_to do |format| format.js format.html - format.xls{ - shixun_ids = @all_discusses.pluck(:dis_id).uniq - filename = "#{Time.now.strftime("%Y%m%d")}-实训反馈.xls" - send_data(shixun_feedback_xls(shixun_ids, @beginTime, @endTime), :type => "text/excel;charset=utf-8; header=present", :filename => filename_for_content_disposition(filename)) - } end end @@ -854,31 +784,31 @@ class ManagementsController < ApplicationController @pod_num = res['sum'] @pod_dis = JSON.parse(res['distr']) if res['distr'].present? end - - page = (params['page'] || 1).to_i - search = params[:search] - keyword = params[:keyword] - limit = 20 - - if search - if "u_name" == keyword - @evaluate_recods = EvaluateRecord.joins("join users u on evaluate_records.user_id = u.id").where("concat(u.lastname, u.firstname) like '%#{search}%'") - # @evaluate_recods = EvaluateRecord.where(user_id: User.where("concat(lastname, firstname) like '%#{search}%'").pluck(:id)) + @search = params[:search] # 搜索字 + @keyword = params[:keyword].blank? ? "u_name" : params[:keyword] # 根据姓名/课程名搜索 + if "u_name" == @keyword + if @search.blank? + @evaluate_recods = EvaluateRecord.where("0=0") else - @evaluate_recods = EvaluateRecord.joins("join user_extensions ue on evaluate_records.user_id = ue.user_id").where("ue.school_id in (select id from schools where name like '%#{search}%')") - # @evaluate_recods = EvaluateRecord.where(user_id: UserExtensions.where(school_id: School.where("name like '%#{search}%'").pluck(:id)).pluck(:user_id)) + user_id = User.where("concat(lastname, firstname) like '%#{@search}%'") + @evaluate_recods = EvaluateRecord.joins("join users u on evaluate_records.user_id = u.id").where("concat(u.lastname, u.firstname) like '%#{@search}%'") end else - @evaluate_recods = EvaluateRecord.where("0=0") + school_id = School.where("name like '%#{@search}%'").map(&:id) + user_id = UserExtensions.where(:school_id => school_id).map(&:user_id) + @evaluate_recods = EvaluateRecord.where(:user_id => user_id) end - @evaluate_recods_count = @evaluate_recods.count - @evaluate_recods_pages = Paginator.new @evaluate_recods_count, limit, page - @evaluate_recods = @evaluate_recods.page(page).per(limit) - @evaluate_recods = @evaluate_recods.includes(:shixun, :user) + @page = (params['page'] || 1).to_i + @limit = 20 + @is_remote = true + @evaluate_recods_pages = Paginator.new @evaluate_recods_count, @limit, @page + @offset ||= @evaluate_recods_pages.offset + @evaluate_recods = paginateHelper @evaluate_recods, @limit respond_to do |format| format.js format.html + end end @@ -1185,137 +1115,6 @@ end end end - def partners - @menu_type = 6 - @sub_type = 3 - if params[:search].blank? - @partners = Partner.includes(:school).order("partners.created_at desc") - else - @partners = Partner.where("name like ? ", "%#{params[:search]}%").includes(:school).order("partners.created_at desc") - end - - @current_partner = nil - if params[:partner] - @current_partner = @partners.find params[:partner] - else - @current_partner = @partners[0] if @partners.size > 0 - end - - respond_to do |format| - format.js - format.html - end - end - - def get_partner - @partner = Partner.find partner - - end - - # 添加客户 - def customers_list - @search = params[:search] - @province = params[:province] - partner_id = params[:partner_id] - @partner = Partner.find partner_id - @customers = @partner.customers - if @customers.present? - @schools = School.where("(partner_id != ? or partner_id is NULL) and customer_id is NULL", @partner.id) - else - @schools = School.where("customer_id is null and (partner_id != ? or partner_id is NULL)", @partner.id) - end - if params[:search] - @schools = @schools.where("name like ?", "%#{@search}%") - end - - if params[:province] && params[:province] != '0' - @schools = @schools.where("province like ?", "%#{@province}%") - end - @limit = 10 - @page = params[:page] || 1 - @schools_count = @schools.count - - @total_pages = (@schools_count / 10.0).ceil - @schools = paginateHelper @schools, @limit - respond_to do |format| - format.js - format.json { - render json: @schools - } - end - end - - def add_customers - school_ids = params[:school_ids] - if school_ids.length > 0 - school_ids.each do |s| - school = School.where("id = ?",s).first - if school.present? - customer = Customer.new(partner_id: params[:partner_id]) - customer.save! - school.update_attributes(:customer_id => customer.id) - end - end - render :json => {status: 1, message: "创建成功!"} - end - end - - def delete_customers - if params[:customer] - customer = Customer.where(id: params[:customer]).first - @current_partner = customer.partner - customer.school.update_attributes(:customer_id => nil) - customer.destroy - end - end - - def all_partners - @search = params[:search] - @province = params[:province] - @schools = School.where("partner_id IS NULL") - - if params[:search] - @schools = @schools.where("name like ?", "%#{@search}%") - end - - if params[:province] && params[:province] != '0' - @schools = @schools.where("province like ?", "%#{@province}%") - end - - @limit = 10 - @page = params[:page] || 1 - @schools_count = @schools.count - - @total_pages = (@schools_count / 10.0).ceil - @schools = paginateHelper @schools, @limit - respond_to do |format| - format.js - format.json { - render json: @schools - } - end - end - - - def add_partner - school_ids = params[:school_ids] - if school_ids.length > 0 - school_ids.each do |s| - school = School.where("id = ?",s).first - if school.present? && school.partner_id.nil? - partner = Partner.new(name: school.name) - partner.save - school.update_attributes(:partner_id => partner.id) - end - end - end - render :json => {status: 1, message: "创建成功!"} - end - - - - - # 删除部门管理员 def delete_depart_member DepartmentMember.where(:department_id => params[:depart], :user_id => params[:user_id]).destroy_all @@ -1343,55 +1142,8 @@ end @department.department_members << DepartmentMember.new(:user_id => member) end end - redirect_to partners_managments_path - - # respond_to do |format| - # format.html {render :layout => "base_edu"} - # format.js - # end - - end - - # 添加合作伙伴管理员- 弹框 - def add_partner_member_box - @partner = Partner.where(:id => params[:partner]).first - @members = - if params[:search] - User.where("LOWER(concat(lastname, firstname, nickname, mail)) LIKE '%#{params[:search]}%' AND partner_id is NULL") - else - User.where(:certification => 1, :partner_id => nil ) - end - @total_pages = (@members.count / 10.0).ceil - @members = paginateHelper @members, 10 - respond_to do |format| - format.js - format.json { - render json: member_json_data(@members) - } - end end - # 合作伙伴添加管理员 - def add_partner_member - if params[:partner] && params[:partner_member] - @partner = Partner.find_by_id params[:partner] - params[:partner_member].each do |member| - user = User.find_by_id member - user.update_attributes(partner_id: @partner.id) if !@partner.nil? && !user.nil? - end - end - end - - # 合作伙伴删除管理员 - def delete_partner_member - if params[:partner] && params[:partner_member] - @partner = Partner.find_by_id params[:partner] - user = User.find_by_id params[:partner_member] - user.update_attributes(partner_id: nil) if !@partner.nil? && !user.nil? - end - end - - # check 部门 identifier是否重复 def check_depart_identifier logger.info("###############{params}") @@ -1560,7 +1312,6 @@ end after_dep = Department.where(:school_id => params[:school_id], :name => department.name).first if after_dep UserExtensions.where(:school_id => params[:applied_id], :department_id => department.id).update_all(:department_id => after_dep.id) - department.apply_add_departments.destroy_all department.destroy else department.apply_add_departments.update_all(:school_id => params[:school_id]) @@ -2001,7 +1752,7 @@ end @school_id = params[:school_id] if params[:school_id] && params[:school_id] != '' - @courses = @courses.joins("join user_extensions ue on courses.tea_id = ue.user_id").where("ue.school_id = #{params[:school_id]}") + @courses = Course.joins("join users u on courses.tea_id = u.id").joins("join user_extensions ue on u.id = ue.user_id").where("ue.school_id = #{params[:school_id]}") end if params[:homepage_show] @@ -2024,7 +1775,7 @@ end user_id = User.where("concat(lastname, firstname) like '%#{@search}%'") @courses = @courses.joins("join users u on courses.tea_id = u.id").where("concat(u.lastname, u.firstname) like '%#{@search}%'") end - elsif "dep_name" == @keyword + else school = School.where("name like '%#{@search}%'").map(&:id) @courses = @courses.where(:school_id => school) # @courses= @courses.where("name like '%#{@search}%'") @@ -2176,7 +1927,6 @@ end @audit_class_sx_num=Subject.where(:status => 1).count @publish_class_sx_num=Subject.where(:status => 2).count @repertories = Repertoire.where(nil).order("CONVERT( name USING gbk ) COLLATE gbk_chinese_ci ASC") - @levels = SubjectLevelSystem.all search = params[:search] # 搜索字 keyword = params[:keyword].blank? ? "u_name" : params[:keyword] # 根据姓名/课程名搜索 status = params[:status].to_i @@ -2309,36 +2059,25 @@ end condition = (params[:research_condition].nil? || params[:research_condition] == "name") ? "concat(lastname, firstname)" : params[:research_condition] if 0 == status if params[:research_condition] == "phone" && params[:research_contents].blank? - @users = User.where(nil) + @users = User.order("#{@order_key} #{@us_order}") else - @users = User.where("#{condition} like '%#{params[:research_contents]}%'") + @users = User.where("#{condition} like '%#{params[:research_contents]}%'").order("#{@order_key} #{@us_order}") end else if params[:research_condition] == "phone" && params[:research_contents].blank? - @users = User.where(:status => status) + @users = User.where(:status => status).order("#{@order_key} #{@us_order}") else - @users = User.where("status = #{status} and #{condition} like '%#{params[:research_contents]}%'") + @users = User.where("status = #{status} and #{condition} like '%#{params[:research_contents]}%'").order("#{@order_key} #{@us_order}") end end - if params[:identity] && params[:identity].to_i != -1 - @users = @users.includes(:user_extensions).where("user_extensions.identity = ?", params[:identity].to_i) - end - - if params[:auto_school] && params[:auto_school].to_i != 0 - @users = @users.includes(:user_extensions => [:school]).where("schools.auto_users_trial = ?", params[:auto_school].to_i == 1 ? 1 : 0) - end - if params[:school] && params[:school] != '' school_name = params[:school] school = School.where("name like '%#{school_name}%'") school_id = school.map(&:id) user_id = UserExtensions.where(:school_id => school_id).map(&:user_id) - @users = @users.where(:id => user_id) + @users = @users.where(:id => user_id).order("#{@order_key} #{@us_order}") end - - @users = @users.order("#{@order_key} #{@us_order}") - @page = (params['page'] || 1).to_i @users_count = @users.count @limit = 20 @@ -2809,10 +2548,6 @@ end @users_pages = Paginator.new @users_count, @limit, params['page'] || 1 @offset ||= @users_pages.offset @users = paginateHelper @users, @limit - respond_to do |format| - format.js - format.html - end end @@ -2847,57 +2582,56 @@ end path = attachment.disk_directory name = attachment.disk_filename if name.split(".").last == "xls" - begin - xls = Roo::Spreadsheet.open("files/#{path}/#{name}",extension: :xls) - worksheet = xls.sheet(0) - rows = worksheet.last_row #最后一行数 - if rows < 2 - @status = 0 - @message = "请按照模板格式导入" - else - for row in 2 .. rows - student_id = worksheet.cell(row, 1) - student_id = student_id.is_a?(Float) ? student_id.to_i : student_id - member_role = worksheet.cell(row, 4).to_i - course_id = worksheet.cell(row, 3) - group_name = worksheet.cell(row, 5) - school_id = worksheet.cell(row, 6).is_a?(Float) ? worksheet.cell(row, 6).to_i : worksheet.cell(row, 6) - if student_id && member_role && [9, 7, 10].include?(member_role) && course_id && school_id - user = User.find_by_sql("SELECT u.* FROM `users` u, `user_extensions` ue where u.id = ue.user_id and - ue.student_id = '#{student_id}' and ue.school_id= #{school_id}").first - course = Course.where(:id => course_id).first - # 判断用户和课堂是否都存在,存在则判断该用户是否已是课堂成员,不是则加入课堂 - if user.present? && course.present? - course_group = CourseGroup.where(:course_id => course.id, :name => group_name).first || - CourseGroup.create(:name => group_name, :course_id => course.id) if group_name - - member = course.members.where(:user_id => user.id).first - # 如果已是课堂成员且是学生身份and不在指定的分班则移动到该分班 - if member.present? && member.member_roles.pluck(:role_id).include?(10) && member.course_group_id != course_group.try(:id).to_i - member.update_column("course_group_id", course_group.try(:id).to_i) - member_count += 1 - elsif !member.present? - member = Member.new(:role_ids => [member_role], :user_id => user.id) - if member_role == 10 - StudentsForCourse.create(:student_id => user.id, :course_id => course.id) + # begin + xls = Roo::Spreadsheet.open("files/#{path}/#{name}",extension: :xls) + worksheet = xls.sheet(0) + rows = worksheet.last_row #最后一行数 + if rows < 2 + @status = 0 + @message = "请按照模板格式导入" + else + for row in 2 .. rows + student_id = worksheet.cell(row, 1) + student_id = student_id.is_a?(Float) ? student_id.to_i : student_id + member_role = worksheet.cell(row, 4).to_i + course_id = worksheet.cell(row, 3) + group_name = worksheet.cell(row, 5) + if student_id && member_role && [9, 7, 10].include?(member_role) && course_id + user = User.find_by_sql("SELECT u.* FROM `users` u, `user_extensions` ue where u.id = ue.user_id and + ue.student_id = '#{student_id}' and ue.school_id= 2458").first + course = Course.where(:id => course_id).first + # 判断用户和课堂是否都存在,存在则判断该用户是否已是课堂成员,不是则加入课堂 + if user.present? && course.present? + course_group = CourseGroup.where(:course_id => course.id, :name => group_name).first || + CourseGroup.create(:name => group_name, :course_id => course.id) if group_name + + member = course.members.where(:user_id => user.id).first + # 如果已是课堂成员且是学生身份and不在指定的分班则移动到该分班 + if member.present? && member.member_roles.pluck(:role_id).include?(10) && member.course_group_id != course_group.try(:id).to_i + member.update_column("course_group_id", course_group.try(:id).to_i) + member_count += 1 + elsif !member.present? + member = Member.new(:role_ids => [member_role], :user_id => user.id) + if member_role == 10 + StudentsForCourse.create(:student_id => user.id, :course_id => course.id) + end + Tiding.create(:user_id => user.id, :trigger_user_id => course.tea_id, :container_id => course.id, :container_type => 'TeacherJoinCourse', + :belong_container_id => course.id, :belong_container_type => "Course", :tiding_type => "System", :extra => member_role) + member.course_group_id = course_group.try(:id).to_i + course.members << member + + member_count += 1 end - Tiding.create(:user_id => user.id, :trigger_user_id => course.tea_id, :container_id => course.id, :container_type => 'TeacherJoinCourse', - :belong_container_id => course.id, :belong_container_type => "Course", :tiding_type => "System", :extra => member_role) - member.course_group_id = course_group.try(:id).to_i - course.members << member - - member_count += 1 end end end + @status = 1 + @message = "已导入/更新#{member_count}个成员" end - @status = 1 - @message = "已导入/更新#{member_count}个成员" - end - rescue - @status = 0 - @message = "文件内容无法读取" - end + # rescue + # @status = 0 + # @message = "文件内容无法读取" + # end else @status = 0 @message = "只支持xls文件的导入" @@ -2909,6 +2643,7 @@ end def import_student_accounts attachments = params[:attachments] @status = 0 + account_count = 0 attachments.each do |attachment| attachment = Attachment.find_by_token_only(attachment[1]['token']) attachment.container_id = User.current.id @@ -2916,55 +2651,79 @@ end attachment.save path = attachment.disk_directory name = attachment.disk_filename - if name.split(".").last == "xls" || name.split(".").last == "xlsx" - # lists = readXlsData("files/baolong.xlsx") - lists = readXlsData("files/#{path}/#{name}") - school_id = nil - prefix = "" - lists.each_with_index do |list, index| - if list[0] - # logger.info("#{list[0]}---#{list[1]}---#{list[2]}") - if index == 0 - school_id = list[0] - elsif index == 1 - prefix = list[0] - elsif index != 2 && list[3] && [0, 1, 2].include?(list[3].to_i) - if list[3].to_i == 1 - user = User.find_by_sql("SELECT u.* FROM `users` u, `user_extensions` ue where u.id = ue.user_id and ue.identity = 1 and ue.student_id = '#{list[0]}' and ue.school_id= #{school_id.to_i}").first - else - user = User.find_by_sql("SELECT u.* FROM `users` u, `user_extensions` ue where u.id = ue.user_id and ue.identity = '#{list[3]}' and ue.technical_title = '#{list[4]}' and CONCAT(u.lastname,u.firstname) ='#{list[1]}' and ue.school_id= #{school_id.to_i}").first - end - school = School.where(:id => school_id).first - # 用户不存在则创建账号 - if !user.present? && school.present? - department = school.departments.where(:name => list[2]).first - user = User.new - user.admin = false - user.activate - user.login = prefix + list[0] - user.lastname = list[1] - user.nickname = list[1] - user.professional_certification = 1 - user.certification = 1 - user.grade = 0 - user.password = "12345678" - if user.save - ue = UserExtensions.new(:user_id => user.id, :gender => 0, :school_id => school_id, :location => school.province, :location_city => school.city, :identity => list[3], :student_id => list[0], :department_id => department.try(:id)) - if list[3] && list[3].to_i == 0 - ue.technical_title = ["教授", "副教授", "讲师", "助教"].include?(list[4]) ? list[4] : "讲师" - elsif list[3] && list[3].to_i == 2 - ue.technical_title = ["企业管理者", "部门管理者", "高级工程师", "工程师", "助理工程师"].include?(list[4]) ? list[4] : "助理工程师" + if name.split(".").last == "xls" + begin + xls = Roo::Spreadsheet.open("files/#{path}/#{name}",extension: :xls) + worksheet = xls.sheet(0) + rows = worksheet.last_row #最后一行数 + if rows < 4 + @status = 0 + @message = "请按照模板格式导入" + else + school_id = worksheet.cell(1, 1) + prefix = worksheet.cell(2, 1) + for row in 4 .. rows + if worksheet.cell(row, 4) && [0, 1, 2].include?(worksheet.cell(row, 4).to_i) + student_id = worksheet.cell(row, 1).is_a?(Float) ? worksheet.cell(row, 1).to_i : worksheet.cell(row, 1) + user = User.find_by_sql("SELECT u.* FROM `users` u, `user_extensions` ue where u.id = ue.user_id and + ue.student_id = '#{student_id}' and ue.school_id= #{school_id.to_i}").first + school = School.where(:id => school_id).first + # 用户不存在则创建账号 + if school.present? + department = Department.where(:school_id => school.id, :name => worksheet.cell(row, 3)).first + department = Department.create(:school_id => school.id, :name => worksheet.cell(row, 3), :is_auth => 1) if !department.present? + if !user.present? + user = User.new + user.admin = false + user.activate + user.login = prefix + student_id.to_s + user.lastname = worksheet.cell(row, 2) + user.nickname = worksheet.cell(row, 2) + user.professional_certification = 1 + user.certification = 1 + user.grade = 0 + user.password = "12345678" + if user.save + ue = UserExtensions.new(:user_id => user.id, :gender => 0, :school_id => school_id, :location => school.province, + :location_city => school.city, :identity => worksheet.cell(row, 4), :student_id => student_id, + :department_id => department.try(:id)) + if worksheet.cell(row, 4) && worksheet.cell(row, 4).to_i == 0 + ue.technical_title = ["教授", "副教授", "讲师", "助教"].include?(worksheet.cell(row, 5)) ? worksheet.cell(row, 5) : "讲师" + elsif worksheet.cell(row, 4) && worksheet.cell(row, 4).to_i == 2 + ue.technical_title = ["企业管理者", "部门管理者", "高级工程师", "工程师", "助理工程师"].include?(worksheet.cell(row, 5)) ? worksheet.cell(row, 5) : "助理工程师" + end + ue.save + + account_count += 1 + end + elsif user.present? + user.update_attributes(:certification => 1, :status => 1, :lastname => worksheet.cell(row, 2), :professional_certification => 1) + ue = user.user_extensions + if ue.present? + if worksheet.cell(row, 4) && worksheet.cell(row, 4).to_i == 0 + technical_title = ["教授", "副教授", "讲师", "助教"].include?(worksheet.cell(row, 5)) ? worksheet.cell(row, 5) : "讲师" + elsif worksheet.cell(row, 4) && worksheet.cell(row, 4).to_i == 2 + technical_title = ["企业管理者", "部门管理者", "高级工程师", "工程师", "助理工程师"].include?(worksheet.cell(row, 5)) ? worksheet.cell(row, 5) : "助理工程师" + end + ue.update_attributes(:identity => worksheet.cell(row, 4), :student_id => student_id, :department_id => department.try(:id), :technical_title => technical_title) + end + account_count += 1 end - ue.save end - elsif user.present? - user.update_column("certification", 1) end end + @status = 1 + @message = "已导入/更新#{account_count}个账号" end + rescue + @status = 0 + @message = "文件内容无法读取" end - @status = 1 + else + @status = 0 + @message = "只支持xls文件的导入" end + attachment.destroy end end @@ -3345,7 +3104,7 @@ end end @users = User.where(:id => user_id).where("#{sql}").includes(:apply_actions, user_extensions: [:department, :school]).order("last_login_on desc") - @xls_users = @users.reorder("created_on desc").limit(3000) #导出excel用户 + @xls_users = @users #导出excel用户 @page = (params['page'] || 1).to_i @users_count = @users.count @limit = 20 @@ -3381,14 +3140,13 @@ end def update_notice @menu_type = 12 @sub_type = 8 - @notice = SystemUpdateNotice.last + @notice = SystemUpdateNotice.first end def edit_update_notice - notice = SystemUpdateNotice.last - if notice.present? && notice.end_time > Time.now + notice = SystemUpdateNotice.first + if notice.present? notice.update_attributes(:end_time => params[:end_time], :start_time => params[:start_time], :subject => params[:subject], :notes => params[:notes]) - UserSystemNotice.where(:notice_type => notice.notice_type).destroy_all else notice_type = UserSystemNotice.find_by_sql("select max(notice_type) as max_notice_type from user_system_notices").first.try(:max_notice_type).to_i + 1 SystemUpdateNotice.create(:end_time => params[:end_time], :start_time => params[:start_time], :subject => params[:subject], :notes => params[:notes], :notice_type => notice_type) @@ -3399,49 +3157,28 @@ end def trial_authorization @menu_type =10 @sub_type = 2 - name_search = params[:search] + search = params[:search] @status = trial_authorization_status(params[:status]) # @status = (params[:status].blank? || params[:status] == "0") ? 0 : [1,2] - user_id = [] - search = false - @authorizations = ApplyAction.where(:container_type => "TrialAuthorization", :status => @status) - - unless name_search.blank? - new_user_id = User.find_by_sql("select id from users where concat(lastname,firstname) like '%#{name_search}%'").map(&:id) - user_id = user_id.size == 0 ? new_user_id : user_id & new_user_id - search = true + if search.blank? + @authorizations = ApplyAction.where(:container_type => "TrialAuthorization", :status => @status).includes(:user) + else + user_id = User.find_by_sql("select id from users where concat(lastname,firstname) like '%#{search}%'") + @authorizations = ApplyAction.where(:container_type => "TrialAuthorization", :status => @status, :user_id => user_id).includes(:user) end - if params[:sname] && params[:sname].strip != '' + if params[:sname] && params[:sname] != '' school_id = School.where("name like '%#{params[:sname]}%'") - new_user_id = UserExtensions.where(:school_id => school_id).map(&:user_id) - user_id = user_id.size == 0 ? new_user_id : user_id & new_user_id - search = true - end - - if params[:identity] && params[:identity].to_i != -1 - new_user_id = UserExtensions.where(:identity => params[:identity].to_i).map(&:user_id) - user_id = user_id.size == 0 ? new_user_id : user_id & new_user_id - search = true - end - - if params[:auto_school] && params[:auto_school].to_i != 0 - school_id = School.where(auto_users_trial: params[:auto_school].to_i == 1 ? 1 : 0) - new_user_id = UserExtensions.where(:school_id => school_id).map(&:user_id) - user_id = user_id.size == 0 ? new_user_id : user_id & new_user_id - search = true + user_id = UserExtensions.where(:school_id => school_id).map(&:user_id) + @authorizations = @authorizations.where(:user_id => user_id).order("updated_at desc") end - @authorizations = user_id.size == 0 && !search ? @authorizations.order("updated_at desc") : @authorizations.where(:user_id => user_id.uniq).order("updated_at desc") - @autu_count = @authorizations.count @limit = 15 @is_remote = true @autu_pages = Paginator.new @autu_count, @limit, params['page'] || 1 @offset ||= @autu_pages.offset @authorizations = paginateHelper @authorizations, @limit - - @authorizations = @authorizations.includes(:user) respond_to do |format| format.js format.html @@ -4153,7 +3890,7 @@ end sheet1.row(0).default_format = blue sheet1.row(0).concat(["用户姓名","性别","职业","职称","地区"," 单位","子单位","注册时间","最后登录时间","授权"]) count_row = 1 - users.each do |user| + users.find_each do |user| sheet1[count_row,0] = user.try(:show_real_name) sheet1[count_row,1] = user.sex sheet1[count_row,2] = user.user_extensions.try(:show_identity) @@ -4176,7 +3913,7 @@ end sheet1 = book.create_worksheet :name => "course" blue = Spreadsheet::Format.new :color => :blue, :weight => :bold, :size => 10 sheet1.row(0).default_format = blue - sheet1.row(0).concat(["ID","课堂名称","成员","资源","普通作业"," 实训作业","试卷","私有","状态","创建者单位","创建者","动态时间","创建时间"]) + sheet1.row(0).concat(["ID","课堂名称","成员","资源","普通作业"," 实训作业","试卷","私有","状态","创建者单位","创建者","动态时间"]) count_row = 1 courses.each do |course| school = course.teacher.try(:user_extensions).try(:school).try(:name).blank? ? "--" : course.teacher.school_name @@ -4193,7 +3930,6 @@ end sheet1[count_row,9] = school sheet1[count_row,10] = teacher_name sheet1[count_row,11] = format_time(course.updatetime) - sheet1[count_row,12] = format_time(course.created_at) count_row += 1 end book.write xls_report @@ -4251,48 +3987,6 @@ end return sheet.rows end - def shixun_feedback_xls shixun_ids, beginTime, endTime - xls_report = StringIO.new - book = Spreadsheet::Workbook.new - sheet1 = book.create_worksheet :name => "实训反馈" - blue = Spreadsheet::Format.new :color => :blue, :weight => :bold, :size => 10 - sheet1.row(0).default_format = blue - count_row = 1 - shixuns = Shixun.where(:id => shixun_ids).includes(discusses: [:user]) - sheet1.row(0).concat(["序号", "实训ID", "实训名称", "实训作者", "作者单位", "评论数", "评论内容", "关卡", "评论者", "评论者职业", - "评论者单位", "评论时间", "社区导师是否已回复"]) - shixuns.each_with_index do |shixun, i| - discusses = shixun.discusses.where("user_id != ?", 1) - if beginTime.present? - discusses = discusses.where("created_at >= '#{beginTime}'") - end - if endTime.present? - discusses = discusses.where("created_at <= '#{endTime}'") - end - sheet1[count_row, 0] = i + 1 - sheet1[count_row, 1] = shixun.identifier - sheet1[count_row, 2] = shixun.name - sheet1[count_row, 3] = shixun.owner.show_real_name - sheet1[count_row, 4] = shixun.owner.school_name - sheet1[count_row, 5] = discusses.count - discusses.each_with_index do |discuss, j| - user = discuss.user - content = discuss.content.gsub(//, "【图片评论】").gsub(/!\[\].+\)/, "【图片评论】") - sheet1[count_row, 6] = strip_html content - sheet1[count_row, 7] = "第#{discuss.position}关" - sheet1[count_row, 8] = user.show_real_name - sheet1[count_row, 9] = user.identity - sheet1[count_row, 10] = user.school_name - sheet1[count_row, 11] = format_time discuss.created_at - sheet1[count_row, 12] = discuss.children.pluck(:user_id).include?(1) ? "是" : "否" - count_row += 1 - end - #count_row += 1 - end - book.write xls_report - xls_report.string - end - def competition_member_xls members, competition xls_report = StringIO.new book = Spreadsheet::Workbook.new @@ -4378,7 +4072,7 @@ end book = Spreadsheet::Workbook.new sheet1 = book.create_worksheet :name => "已发布实训课程" count_row = 2 - sheet1.row(1).concat(["", "地址", "实训课程名称","章节名称", "实训组成", "关卡数", "状态", "实训发布时间", "课程等级", "更新时间", "发布时间", ]) + sheet1.row(1).concat(["", "地址", "实训课程名称","章节名称", "实训组成", "关卡数", "状态", "更新时间"]) Rails.logger.warn("##########subjects:#{subjects.count}") subjects.each do |subject| sheet1[count_row,1] = "paths/"+subject.id.to_s @@ -4391,46 +4085,24 @@ end sheet1[count_row,4] = "#{s_index + 1}-#{index + 1} #{shixun.name}" sheet1[count_row,5] = shixun.challenges.count sheet1[count_row,6] = shixun.shixun_status - sheet1[count_row,7] = shixun.publish_time if s_index == 0 && index == 0 - sheet1[count_row,7] = subject.subject_level_system.try(:name) || "--" - sheet1[count_row,8] = format_time subject.updated_at - sheet1[count_row,9] = format_time subject.publish_time + sheet1[count_row,7] = format_time subject.updated_at end count_row += 1 end else if s_index == 0 - sheet1[count_row,7] = subject.subject_level_system.try(:name) || "--" - sheet1[count_row,8] = format_time subject.updated_at - sheet1[count_row,9] = format_time subject.publish_time + sheet1[count_row,7] = format_time subject.updated_at end count_row += 1 end end else - sheet1[count_row,7] = subject.subject_level_system.try(:name) || "--" - sheet1[count_row,8] = format_time subject.updated_at - sheet1[count_row,9] = format_time subject.publish_time + sheet1[count_row,7] = format_time subject.updated_at count_row += 1 end end book.write xls_report xls_report.string end - - def member_json_data mmebers - mmebers.map do |member| - real_name = member.show_real_name - identity = member.identity - school_name = member.school_name - user_phone = member.phone || "" - member.attributes.dup.except("login", "hashed_password", "salt", "status", "mail", "experience", "grade", - "authentication", "professional_certification").merge({real_name: real_name, - identity: identity, - school_name: school_name, - user_phone: user_phone}) - end - end - end diff --git a/app/controllers/mark_down_controller.rb b/app/controllers/mark_down_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/members_controller.rb b/app/controllers/members_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/memos_controller.rb b/app/controllers/memos_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/messages_controller.rb b/app/controllers/messages_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/my_controller.rb b/app/controllers/my_controller.rb old mode 100644 new mode 100755 index 54cd15d6..75c186db --- a/app/controllers/my_controller.rb +++ b/app/controllers/my_controller.rb @@ -141,10 +141,6 @@ class MyController < ApplicationController # Edit user's account def account @user = params[:user_id].nil? ? User.current : User.find(params[:user_id]) - - - - ue = @user.user_extensions if @user.lastname.blank? || ue.try(:identity).nil? || (ue.try(:identity) == 1 && ue.try(:student_id).blank?) || (ue.try(:identity) != 1 && ue.try(:technical_title).blank?) || ue.try(:gender).blank? || ue.try(:school_id).blank? redirect_to user_info_path @@ -156,8 +152,7 @@ class MyController < ApplicationController applied_message = AppliedMessage.where(:id => params[:applied_message_id]).first applied_message.update_attribute(:viewed, true) end - - + # @user = User.current # 认证 @trail_authentication = ApplyAction.where(:user_id => User.current.id, :container_type => "TrialAuthorization").order("created_at desc").first if @trail_authentication && (@trail_authentication.status == 1 || @trail_authentication.status == 2) && !@trail_authentication.noticed @@ -165,11 +160,11 @@ class MyController < ApplicationController @trail_authentication.update_attribute("noticed", 1) elsif @user.certification != 1 && (@trail_authentication.nil? || @trail_authentication.try(:status) != 0) first_update = Grade.where(:user_id => @user.id, :container_id => @user.id, :container_type => 'Account').first - if first_update.present? && (Time.now.to_i - first_update.created_at.to_i) > 86400 && @user.user_day_certifications.last.present? && @user.user_day_certifications.last.status == 1 + if first_update.present? && (Time.now.to_i - first_update.created_at.to_i) > 1 && @user.user_day_certifications.last.present? && @user.user_day_certifications.last.status == 1 @require_trail_auth = true @user.user_day_certifications.update_all("status = 2") @certification_expired = 1 - elsif first_update.present? && (Time.now.to_i - first_update.created_at.to_i) > 86400 + elsif first_update.present? && (Time.now.to_i - first_update.created_at.to_i) > 1 @require_trail_auth = true end end diff --git a/app/controllers/myshixuns_controller.rb b/app/controllers/myshixuns_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/news_controller.rb b/app/controllers/news_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/no_uses_controller.rb b/app/controllers/no_uses_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/notificationcomments_controller.rb b/app/controllers/notificationcomments_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/oauth_controller.rb b/app/controllers/oauth_controller.rb deleted file mode 100644 index 54f15c43..00000000 --- a/app/controllers/oauth_controller.rb +++ /dev/null @@ -1,167 +0,0 @@ -#encoding: utf-8 -class OauthController < ApplicationController - require - include ApplicationHelper - - before_filter :user_setup - before_filter :require_login, only: [:authorize] - - - skip_before_filter :verify_authenticity_token, only: [:token] - - - def index - render 'oauth/index', layout: false - end - - - # 客户端申请认证的URI,包含以下参数: - # - # response_type:表示授权类型,必选项,此处的值固定为”code” - # client_id:表示客户端的ID,必选项 - # redirect_uri:表示重定向URI,可选项 - # scope:表示申请的权限范围,可选项 - # state:表示客户端的当前状态,可以指定任意值(最好是随机字符串),认证服务器会原封不动地返回这个值,可防止CSRF攻击 - # - # 这个页显示授权页,如果授权成功,返回redirect_uri+code - # - # - # 服务器回应客户端的URI,包含以下参数: - # - # code:表示授权码,必选项。该码的有效期应该很短,通常设为10分钟,客户端只能使用该码一次, 否则会被授权服务器拒绝。该码与客户端ID和重定向URI,是一一对应关系。 - # state:如果客户端的请求中包含这个参数,认证服务器的回应也必须一模一样包含这个参数。 - def authorize - begin - - #参数检查 - raise "response_type只能为code" unless params["response_type"] == "code" - raise "client_id为必传项" unless params["client_id"].present? - raise "redirect_uri为必传项" unless params["redirect_uri"].present? - - - config = OauthConfig.where(client_id: params["client_id"], redirect_uri: params["redirect_uri"]).first - raise "client_id或redirect_uri不正确" unless config - - - @data = params - - if params[:gen_code] - ## 检查通过,生成code - oauth = Oauth.create!(client_id: config.client_id, - client_secret: config.client_secret, - redirect_uri: config.redirect_uri, - user_id: User.current.id - ) - code = oauth.gen_code - - redirect_to params["redirect_uri"] + "?code=#{code}&state=#{params[:state]}" - else - render 'oauth/authorize', :layout => 'forge' - end - - rescue => e - logger.error e - render :text => e.message - end - - end - - def test_callback - # 申请 token - # - client_id = "88d893c5a345313e7b8c6fcf23d3d024ee08d5e41ce120c3448b6eea77d8de30" - client_secret = "e9240cc5fc913741db5aea93f2986a8ea0631bb67f7c00e41e491b95d9619e64" - redirect_uri = "http://localhost:3000/oauth/cb" - url = "http://127.0.0.1:3000/oauth/token?grant_type=authorization_code&code=#{params['code']}&redirect_uri=#{redirect_uri}&client_id=#{client_id}&client_secret=#{client_secret}" - - render text: url - end - - - # 客户端向认证服务器申请令牌的HTTP请求,包含以下参数: - # - # grant_type:表示使用的授权模式,必选项,此处的值固定为”authorization_code”。 - # code:表示上一步获得的授权码,必选项。 - # redirect_uri:表示重定向URI,必选项,且必须与A步骤中的该参数值保持一致。 - # client_id:表示客户端ID,必选项。 - # client_secret: 表示客户端密钥,必选项。 - # - # - # 认证服务器核对了授权码和”重定向URI”,确认无误后,向客户端发送访问令牌(access token)和更新令牌(refresh token)。 - # - # 认证服务器发送的HTTP回复,包含以下内容: - # - # access_token:表示访问令牌,必选项。 - # token_type:表示令牌类型,该值大小写不敏感,必选项,可以是bearer类型或mac类型。 - # expires_in:表示过期时间,单位为秒。如果省略该参数,必须其他方式设置过期时间。 - # refresh_token:表示更新令牌,用来获取下一次的访问令牌,可选项。 - # scope:表示权限范围,如果与客户端申请的范围一致,此项可省略。 - def token - begin - res = {} - if params[:grant_type] == 'authorization_code' - - raise "code必传" unless params["code"] - raise "client_id必传" unless params["client_id"] - raise "client_secret必传" unless params["client_secret"] - - raise "code错误或已超时" unless Oauth.code_valid?(params["code"]) - - oauth = Oauth.auth_code(params["code"], params["client_id"], params["client_secret"]) - raise "认证不通过" unless oauth - - ## 生成 token - # - oauth.gen_token - - oauth.reload - - res = { - access_token: oauth.access_token, - token_type: 'bearer', - expires_in: oauth.token_expires_in, - refresh_token: oauth.refresh_token - } - - end - - render json: res.to_json - - rescue => e - logger.error e - render text: e.message - end - end - - - def get_userinfo - user = Oauth.auth(params["access_token"]) - - user_info = {} - if user - user_info = { - token: user.id, - login: user.login, - avatar_url: "https://openi.org.cn/images/" + url_to_avatar(user), - name: user.show_name, - email: user.mail, - allow: (user.login == "guange"||user.phone=='15607313899') ? 1 : 0 - } - end - - render json: user_info.to_json - end - - - private - - def require_login - require "base64" - if !User.current.logged? - redirect_to '/login?back_url64=' + Base64.urlsafe_encode64(request.original_url) - end - end - - include Trustie::Http - -end \ No newline at end of file diff --git a/app/controllers/open_source_projects_controller.rb b/app/controllers/open_source_projects_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/org_courses_controller.rb b/app/controllers/org_courses_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/org_document_comments_controller.rb b/app/controllers/org_document_comments_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/org_member_controller.rb b/app/controllers/org_member_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/org_projects_controller.rb b/app/controllers/org_projects_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/org_subfields_controller.rb b/app/controllers/org_subfields_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/organizations_controller.rb b/app/controllers/organizations_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/partners_controller.rb b/app/controllers/partners_controller.rb deleted file mode 100644 index 214948cf..00000000 --- a/app/controllers/partners_controller.rb +++ /dev/null @@ -1,29 +0,0 @@ -class PartnersController < ApplicationController - layout 'base_management' - - def index - @menu_type = 6 - @sub_type = 3 - - @partners = Partner.includes(:school) - end - - def new - - end - - def edit - - end - - def create - - end - - def destroy - - end - - private - -end diff --git a/app/controllers/poll_controller.rb b/app/controllers/poll_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/praise_tread_controller.rb b/app/controllers/praise_tread_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/previews_controller.rb b/app/controllers/previews_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/project_enumerations_controller.rb b/app/controllers/project_enumerations_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/pull_requests_controller.rb b/app/controllers/pull_requests_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/quality_analysis_controller.rb b/app/controllers/quality_analysis_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/queries_controller.rb b/app/controllers/queries_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/question_banks_controller.rb b/app/controllers/question_banks_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/relative_memos_controller.rb b/app/controllers/relative_memos_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/reports_controller.rb b/app/controllers/reports_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/roles_controller.rb b/app/controllers/roles_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/school_controller.rb b/app/controllers/school_controller.rb old mode 100644 new mode 100755 index 1ecd5733..0e0ef9a8 --- a/app/controllers/school_controller.rb +++ b/app/controllers/school_controller.rb @@ -128,18 +128,18 @@ class SchoolController < ApplicationController end if params[:no_school_ids] if(condition == '') - @school = School.where("id not in #{params[:no_school_ids]}").reorder('CONVERT (name USING gbk) COLLATE gbk_chinese_ci asc').page((params[:page].to_i || 1)).per(100) + @school = School.where("id not in #{params[:no_school_ids]}").reorder('id=2458 desc, CONVERT (name USING gbk) COLLATE gbk_chinese_ci asc').page((params[:page].to_i || 1)).per(100) @school_count = School.count else - @school = School.where("id not in #{params[:no_school_ids]} and name like '%#{chinese.join("")}%' and pinyin like '%#{pinyin.join("")}%'").reorder('CONVERT (name USING gbk) COLLATE gbk_chinese_ci asc').page((params[:page].to_i || 1)).per(100) + @school = School.where("id not in #{params[:no_school_ids]} and name like '%#{chinese.join("")}%' and pinyin like '%#{pinyin.join("")}%'").reorder('id=2458 desc, CONVERT (name USING gbk) COLLATE gbk_chinese_ci asc').page((params[:page].to_i || 1)).per(100) @school_count = School.where("id not in #{params[:no_school_ids]} and name like '%#{chinese.join("")}%' and pinyin like '%#{pinyin.join("")}%'").count end else if(condition == '') - @school = School.reorder('CONVERT (name USING gbk) COLLATE gbk_chinese_ci asc').page((params[:page].to_i || 1)).per(100) + @school = School.reorder('id=2458 desc, CONVERT (name USING gbk) COLLATE gbk_chinese_ci asc').page((params[:page].to_i || 1)).per(100) @school_count = School.count else - @school = School.where("name like '%#{chinese.join("")}%' and pinyin like '%#{pinyin.join("")}%'").reorder('CONVERT (name USING gbk) COLLATE gbk_chinese_ci asc').page((params[:page].to_i || 1)).per(100) + @school = School.where("name like '%#{chinese.join("")}%' and pinyin like '%#{pinyin.join("")}%'").reorder('id=2458 desc, CONVERT (name USING gbk) COLLATE gbk_chinese_ci asc').page((params[:page].to_i || 1)).per(100) @school_count = School.where("name like '%#{chinese.join("")}%' and pinyin like '%#{pinyin.join("")}%'").count end end diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/settings_controller.rb b/app/controllers/settings_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/shares_controller.rb b/app/controllers/shares_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/shell/shell b/app/controllers/shell/shell old mode 100644 new mode 100755 diff --git a/app/controllers/shield_activities_controller.rb b/app/controllers/shield_activities_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/shield_wechat_messages_controller.rb b/app/controllers/shield_wechat_messages_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/shixuns_controller.rb b/app/controllers/shixuns_controller.rb old mode 100644 new mode 100755 index b2761b60..dab26ee3 --- a/app/controllers/shixuns_controller.rb +++ b/app/controllers/shixuns_controller.rb @@ -2,16 +2,14 @@ # REDO: 创建版本库权限控制 class ShixunsController < ApplicationController layout 'base_shixun' - before_filter :require_login, :except => [:ghook, :download_file, :show, :index] - before_filter :check_authentication, :except => [:ghook, :download_file, :show, :index] + before_filter :local_exam, only: [:index] + before_filter :require_login, :except => [:ghook, :download_file] + before_filter :check_authentication, :except => [:ghook, :download_file] before_filter :find_shixun, :except => [ :index, :new, :create, :index, :search, :shixun_courses, :new_disscuss, :shixun_migrate, :qrcode, :download_file, :departments, :get_mirror_script, :send_message_to_administrator] - skip_before_filter :verify_authenticity_token, :only => [:ghook, :download_file] - before_filter :view_allow, :only => [:collaborators, :propaedeutics, :shixun_discuss, :ranking_list] + before_filter :view_allow, :only => [:show, :collaborators, :propaedeutics, :shixun_discuss, :ranking_list] before_filter :require_manager, :only => [ :settings, :add_script, :publish, :collaborators_delete, :shixun_members_added, :add_collaborators, :update, :destroy] - before_filter :validation_email, :only => [:new] - # 移动云ToC模式权限控制 - # before_filter :ecloud_auth, :except => [:show, :index] + #before_filter :validation_power, :only => [:new, :create] include ApplicationHelper include ShixunsHelper @@ -324,15 +322,11 @@ class ShixunsController < ApplicationController @search_name = "#{sub.name} / #{tag.name}" end shixun_id = ShixunTagRepertoire.where(:tag_repertoire_id => tag).map(&:shixun_id) - @shixuns = Shixun.select([:id, :name, :user_id, :challenges_count, :visits, :status, :myshixuns_count, - :trainee, :use_scope, :identifier, :image_text, :averge_star]) - .where(:id => shixun_id, :hidden => 0).where("status != -1") - .includes(:challenges, :schools, :shixun_members, :users).order("status = 2 desc, publish_time asc") + @shixuns = Shixun.select([:averge_star, :id, :name, :user_id, :challenges_count, :visits, :status, :myshixuns_count, :trainee, + :use_scope, :identifier, :image_text]).where(:id => shixun_id, :hidden => 0).includes(:tag_repertoires, :challenges).order("status = 2 desc, publish_time asc") else - @shixuns = Shixun.select([:id, :name, :user_id, :challenges_count, :visits, :status, :myshixuns_count, - :trainee, :use_scope, :identifier, :image_text, :averge_star]) - .where("status != ? and hidden = ?", -1, 0).includes(:challenges, :schools, :shixun_members, :users) - .order("status = 2 desc, publish_time asc") + @shixuns = Shixun.select([:averge_star, :id, :name, :user_id, :challenges_count, :visits, :status, :myshixuns_count, :trainee, + :use_scope, :identifier, :image_text]).where(:hidden => 0).includes(:tag_repertoires, :challenges).order("status = 2 desc, publish_time asc") end # # 依据tag和语言推荐实训,如果tag不够,则依据语言推荐;语言不够,则取系统的三个 # @recommend_shixuns = Shixun.find_by_sql("select challenge_id from challenge_tags where name like @@ -393,7 +387,8 @@ class ShixunsController < ApplicationController shixun_id = shixun_id & my_shixun_ids end - @shixuns = Shixun.select([:id, :name, :user_id, :challenges_count, :visits, :status, :myshixuns_count, :trainee, :use_scope, :identifier, :image_text, :averge_star]).where(:id => shixun_id, :hidden => 0, :trainee => diff, :status => status).includes(:challenges, :schools, :shixun_members, :users) + @shixuns = Shixun.select([:averge_star, :id, :name, :user_id, :challenges_count, :visits, :status, :myshixuns_count, :trainee, + :use_scope, :identifier, :image_text]).where(:id => shixun_id, :hidden => 0, :trainee => diff, :status => status).includes(:tag_repertoires, :challenges) if search.present? search_users_id = User.select([:id]).where("concat(lastname, firstname) like '%#{search}%'") @@ -849,7 +844,7 @@ class ShixunsController < ApplicationController begin raise "请先绑定邮箱" if User.current.mail.blank? new_shixun = Shixun.new - new_shixun.attributes = @shixun.attributes.dup.except("id","user_id","visits","gpid","status", "identifier", "homepage_show","git_url") + new_shixun.attributes = @shixun.attributes.dup.except("id","user_id","visits","gpid","status", "identifier", "homepage_show","git_url", "averge_star") new_shixun.user_id = User.current.id new_shixun.identifier = generate_identifier new_shixun.status = 0 @@ -1036,7 +1031,6 @@ class ShixunsController < ApplicationController @shixun.task_pass = params[:task_pass].to_i @shixun.mirror_script_id = params[:mirror_script].to_i @shixun.hide_code = params[:hide_code].to_i - @shixun.forbid_copy = params[:forbid_copy].to_i if params[:public_degree] use_scope = params[:public_degree].to_i else @@ -1121,8 +1115,8 @@ class ShixunsController < ApplicationController g.delete_project(@shixun.gpid) if @shixun.try(:gpid).present? apply_record = ApplyAction.where(:container_id => @shixun.id, :container_type => "ApplyShixun") apply_record.delete_all if apply_record - #HomeworkCommonsShixuns.where(:shixun_id => @shixun).delete_all # 关联删报错,后续解决 - @shixun.update_attribute(:status, -1) + HomeworkCommonsShixuns.where(:shixun_id => @shixun).delete_all # 关联删报错,后续解决 + @shixun.destroy respond_to do |format| if params[:come_from] == "admin" format.html{ redirect_to shixuns_managements_path } @@ -1169,16 +1163,11 @@ class ShixunsController < ApplicationController end def get_script_contents - if params[:script_id].to_i == -1 - render :json => {contents: "", description: ""} - else - mirrir_script = MirrorScript.find(params[:script_id]) - script = mirrir_script.try(:script) - description = mirrir_script.try(:description) - script = modify_shixun_script @shixun, script - render :json => {contents: script, description: description} - end - + mirrir_script = MirrorScript.find(params[:script_id]) + script = mirrir_script.try(:script) + description = mirrir_script.try(:description) + script = modify_shixun_script @shixun, script + render :json => {contents: script, description: description} end def get_common_script @@ -1221,7 +1210,7 @@ class ShixunsController < ApplicationController # Find shixun of id params[:id] def find_shixun @shixun = Shixun.find_by_identifier(params[:id]) - render_404 if @shixun.nil? || @shixun.status == -1 + render_404 if @shixun.nil? rescue ActiveRecord::RecordNotFound render_404 end @@ -1365,11 +1354,4 @@ class ShixunsController < ApplicationController render_403 unless User.current.manager_of_shixun?(@shixun) end - def validation_email - render_403 if User.current.mail.blank? - end - - def validate_shixun - - end end diff --git a/app/controllers/softapplications_controller.rb b/app/controllers/softapplications_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/ssos_controller.rb b/app/controllers/ssos_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/stages_controller.rb b/app/controllers/stages_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/statistics_controller.rb b/app/controllers/statistics_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/stores_controller.rb b/app/controllers/stores_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb old mode 100644 new mode 100755 index dd9b1bda..fef1198d --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -113,7 +113,7 @@ class StudentWorkController < ApplicationController pass_consume_time += (game.cost_time / 60.0).to_f end all_time += (game.cost_time / 60.0).to_f - user_total_score += game.status == 2 ? game.final_score.to_i < 0 ? 0 : game.challenge.score.to_i : 0 + user_total_score += game.final_score.to_i < 0 ? 0 : game.challenge.score.to_i if myshixun.user_id == @work.user.id @game_user_query << [game.id, game.outputs.first.try(:query_index).to_i] end @@ -508,7 +508,7 @@ class StudentWorkController < ApplicationController end @tab = params[:tab].nil? ? 1 : params[:tab].to_i - if (User.current.member_of_course?(@homework.course) || User.current.admin?) && params[:order].nil? && params[:sort].nil? && params[:name].nil? && params[:group].nil? && params[:page].nil? + if User.current.member_of_course?(@homework.course) && params[:order].nil? && params[:sort].nil? && params[:name].nil? && params[:group].nil? && params[:page].nil? if !@course.is_end && @homework.homework_type == 4 && @homework.homework_detail_manual.comment_status > 0 && (@homework.end_time > Time.now || (@homework.end_time <= Time.now && @homework.allow_late)) update_shixun_work_status @homework end @@ -1677,8 +1677,7 @@ class StudentWorkController < ApplicationController def student_work_project project = Project.where(:id => params[:projectName].to_i).first if project.present? - @work = @homework.student_works.where("user_id = #{User.current.id} and work_status = 0").first || - StudentWork.create(homework_common_id: @homework.id, user_id: User.current.id) + @work = @homework.student_works.where("user_id = #{User.current.id} and work_status = 0").first if @work @work.update_column('project_id', params[:projectName].to_i) end diff --git a/app/controllers/sub_document_comments_controller.rb b/app/controllers/sub_document_comments_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/sub_domains_controller.rb b/app/controllers/sub_domains_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/subfield_subdomain_dirs_controller.rb b/app/controllers/subfield_subdomain_dirs_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/subjects_controller.rb b/app/controllers/subjects_controller.rb old mode 100644 new mode 100755 index a59747aa..d251ff4d --- a/app/controllers/subjects_controller.rb +++ b/app/controllers/subjects_controller.rb @@ -1,10 +1,10 @@ # encoding: utf-8 class SubjectsController < ApplicationController layout 'base_subject' - before_filter :require_login, :except => [:show, :index] - before_filter :check_authentication, :except => [:show, :index] + before_filter :require_login, :except => [:show] + before_filter :check_authentication, :except => [:show] before_filter :find_subject, :except => [:index, :new, :create, :create_subject, :new_subject, :append_to_stage, :send_to_course] - + before_filter :validation_power, :only => [:new, :create] include ApplicationHelper include SubjectsHelper @@ -242,56 +242,14 @@ class SubjectsController < ApplicationController memberships = params[:membership][:user_ids] memberships.each do |member| user = User.find(member) - SubjectMember.create!(:user_id => member, :subject_id => @subject.id, :role => 2, - :position => @subject.subject_members.size + 1) + SubjectMember.create!(:user_id => member, :subject_id => @subject.id, :role => 2) end end end def delete_member - if User.current.admin? - ActiveRecord::Base.transaction do - member = @subject.subject_members.where(:id => params[:mem_id]).first - if member.present? && member.role != 1 - @subject.subject_members.where("position > #{member.position}").update_all("position = position - 1") - member.destroy - end - end - else - render_403 - end - end - - def up_member_position - if User.current.member_of_subject?(@subject) - ActiveRecord::Base.transaction do - member = @subject.subject_members.where(:id => params[:mem_id]).first - raise "不能再上移了" if member.position == 1 - up_member = @subject.subject_members.where(:position => member.position - 1).first - up_member.update_attribute(:position, member.position) - member.update_attribute(:position, member.position - 1) - end - else - render_403 - end - end - - def down_member_position - if User.current.member_of_subject?(@subject) - ActiveRecord::Base.transaction do - begin - member = @subject.subject_members.where(:id => params[:mem_id]).first - raise "不能再下移了" if member.position == @subject.subject_members.count - down_member = @subject.subject_members.where(:position => member.position + 1).first - down_member.update_attribute(:position, member.position) - member.update_attribute(:position, member.position + 1) - rescue Exception => e - raise ActiveRecord::Rollback - end - end - else - render_403 - end + member = @subject.subject_members.where(:user_id => params[:mem_id]).first + member.destroy if member end def statistics diff --git a/app/controllers/syllabus_member_controller.rb b/app/controllers/syllabus_member_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/syllabuses_controller.rb b/app/controllers/syllabuses_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/sys_controller.rb b/app/controllers/sys_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/system_log_controller.rb b/app/controllers/system_log_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/system_messages_controller.rb b/app/controllers/system_messages_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/tasks_controller.rb b/app/controllers/tasks_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/teachers_controller.rb b/app/controllers/teachers_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/test_controller.rb b/app/controllers/test_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/timelog_controller.rb b/app/controllers/timelog_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/trackers_controller.rb b/app/controllers/trackers_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/training_tasks_controller.rb b/app/controllers/training_tasks_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/trainings_controller.rb b/app/controllers/trainings_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/user_score_controller.rb b/app/controllers/user_score_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb old mode 100644 new mode 100755 index 61023729..a4ac1388 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -2562,17 +2562,11 @@ class UsersController < ApplicationController # 用户访问自己主页的"我管理的"列表,且是第一页才显示新建入口 page = params[:page] ? params[:page].to_i : 1 - - # 学生身份没有课堂的新建入口 - if @user.user_extensions.try(:identity) == 1 - @new_icon = @user == User.current && ['a_shixun', 'a_project', 'a_path'].include?(@type) && page == 1 - else - @new_icon = @user == User.current && ['a_course', 'a_shixun', 'a_project', 'a_path'].include?(@type) && page == 1 - end + @new_icon = @user == User.current && ['a_course', 'a_shixun', 'a_project', 'a_path'].include?(@type) && page == 1 # 用户进自己主页的全部列表时有个新建入口,加一个"new",view层的第一页需要shift,这样翻页就没问题啦 - @objects = @objects.to_a - @objects.unshift("new") if @new_icon + # @objects = @objects.to_a + # @objects.unshift("new") if @new_icon @objects = paginateHelper @objects, 16 diff --git a/app/controllers/versions_controller.rb b/app/controllers/versions_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/watchers_controller.rb b/app/controllers/watchers_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/web_footer_companies_controller.rb b/app/controllers/web_footer_companies_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/wechats_controller.rb b/app/controllers/wechats_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/welcome_controller.rb b/app/controllers/welcome_controller.rb old mode 100644 new mode 100755 index 729a9564..aeb6d3af --- a/app/controllers/welcome_controller.rb +++ b/app/controllers/welcome_controller.rb @@ -53,12 +53,15 @@ class WelcomeController < ApplicationController local_shixun = LocalShixun.create!(name: shixun.name, description: shixun.description, user_id: User.current.id, status: 0, trainee: shixun.trainee, webssh: shixun.webssh, multi_webssh: shixun.multi_webssh, can_copy: shixun.can_copy, identifier: generate_identifier, shixun_id: shixun.id, - use_scope: shixun.use_scope, visits: 1, evaluate_script: shixun.evaluate_script) + use_scope: shixun.use_scope, visits: 1, evaluate_script: shixun.evaluate_script, + local_giturl: shixun.git_url) # 同步镜像 if shixun.mirror_repositories.present? shixun.mirror_repositories.each do |mirror| - LocalMirrorRepository.create!(:local_shixun_id => local_shixun.id, :mirror_repository_id => mirror.id) + # 本地版的mirror id和线上的可能不一样,所以按名字取,然后再存 + # local_mirror = MirrorRepository.where(type_name: mirror.type_name).first.try(:id) + LocalMirrorRepository.create!(:local_shixun_id => local_shixun.id, :mirror_repository_id => mirror.id, type_name: mirror.type_name) end end @@ -97,10 +100,10 @@ class WelcomeController < ApplicationController end end end - render :json => {status: 0, message: "同步成功"} + render :json => {status: 0, message: "success"} rescue Exception => e logger.error("shixun_local_in ##{e.message}") - render :json => {status: -1, message: "同步失败,#{e.message}"} + render :json => {status: -1, message: "error,#{e.message}"} raise ActiveRecord::Rollback end @@ -123,7 +126,8 @@ class WelcomeController < ApplicationController local_mirrors = LocalMirrorRepository.where(local_shixun_id: local_shixun.id) if local_mirrors.present? local_mirrors.each do |local_mirror| - ShixunMirrorRepository.create!(:shixun_id => shixun.id, :mirror_repository_id => local_mirror.mirror_repository_id) + local_mirror_new = MirrorRepository.where(type_name: local_mirror.try(:type_name)).first + ShixunMirrorRepository.create!(:shixun_id => shixun.id, :mirror_repository_id => local_mirror_new.id) end end @@ -147,6 +151,20 @@ class WelcomeController < ApplicationController raise "版本库创建失败" if shixun.gpid.blank? # 若和gitlab没同步成功,则抛出异常 g = Gitlab.client shixun.update_column(:git_url, g.project(shixun.gpid).path_with_namespace) + local_git_path = local_shixun.local_giturl.split('/').last if local_shixun.local_giturl.present? + new_giturl = "http://educoder:xinhu1ji2qu3@"+g.project(shixun.gpid).http_url_to_repo.split('//').last + # 如果有目录才执行 + logger.info("##########_------------- path: #{File.directory?("/home/pdl/trustie24/tmp/repositories/local/#{local_git_path}")}") + logger.info("##########_------------- new_giturl: #{new_giturl}") + if File.directory?("/home/pdl/trustie24/tmp/repositories/local/#{local_git_path}") + logger.info("@@@@@@@@@@@@@@@@@@@@@@@@@@-----daole") + system("cd /home/pdl/trustie24/tmp/repositories/local/#{local_git_path};git remote remove origin;git remote add origin #{new_giturl}; + git add .;git commit -m '..';git push origin master") + logger.info("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!over") + end + + + # http://Hjqreturn:xinhu1ji2qu3@bdgit.educoder.net/Hjqreturn/pgfqe6ch8.git (fetch) # 同步关卡信息 local_challenges = LocalChallenge.where(local_shixun_id: local_shixun.id) @@ -218,7 +236,7 @@ class WelcomeController < ApplicationController @tea_users = User.where(homepage_teacher: 1).includes(:user_extensions).limit(10).order("experience desc") @stu_users = User.includes(:user_extensions).where(user_extensions: {identity: 1}).limit(10).order("experience desc") - render :layout => 'base_local' + render :layout => 'educoder' end # 自动导入用户 diff --git a/app/controllers/wiki_controller.rb b/app/controllers/wiki_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/wikis_controller.rb b/app/controllers/wikis_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/words_controller.rb b/app/controllers/words_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/workflows_controller.rb b/app/controllers/workflows_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/works_controller.rb b/app/controllers/works_controller.rb old mode 100644 new mode 100755 diff --git a/app/controllers/zipdown_controller.rb b/app/controllers/zipdown_controller.rb old mode 100644 new mode 100755 diff --git a/app/helpers/account_helper.rb b/app/helpers/account_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/activities_helper.rb b/app/helpers/activities_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/activity_notifys_helper.rb b/app/helpers/activity_notifys_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/admin_helper.rb b/app/helpers/admin_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/api_helper.rb b/app/helpers/api_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb old mode 100644 new mode 100755 index 707ff571..89e0cb70 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1,7413 +1,7335 @@ -# encoding: utf-8 -# -# Redmine - project management software -# Copyright (C) 2006-2013 Jean-Philippe Lang -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# 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. - -require 'forwardable' -require 'cgi' -require 'iconv' -module ApplicationHelper - include Redmine::WikiFormatting::Macros::Definitions - include Redmine::I18n - include GravatarHelper::PublicMethods - include Redmine::Pagination::Helper - include AvatarHelper - ## added by william - include PraiseTreadHelper - include CoursesHelper - - extend Forwardable - def_delegators :wiki_helper, :wikitoolbar_for, :heads_for_wiki_formatter - - # 课堂相关controller - def course_controller - ["courses", "homework_common", "student_work", "exercise", "poll", "boards", "messages", "graduation_topics", "graduation_tasks", - "graduation_works", "files"] - end - - # 实训课程相关controller - def subjects_controller - ["subjects", "stages"] - end - - # 实训路径相关controller - def shixuns_controller - ["shixuns", "challenges", "myshixuns", "games"] - end - - # 工程认证相关controller - def ecs_controller - ["ecs", "ec_courses", "ec_course_evaluations", "ec_course_supports", "ec_course_targets", "ec_graduation_requirements", - "ec_major_schools", "ec_majors", "ec_years"] - end - - def exercise_bank_json_data exercises - exercises.map do |exercise| - exercise_path = exercise_bank_path(exercise) - course_list = exercise.course_list.name - user_name = exercise.user.show_real_name - user_path = user_path(exercise.user) - exercise.attributes.dup.except("description", "is_public", "quotes", "container_id", "container_type", "created_at", "updated_at").merge({ - user_name: user_name, - user_path: user_path, - course_list: course_list, - exercise_path: exercise_path - }) - end - end - - def ac_pass?(standard_value, real_value) - standard_value && real_value && real_value >= standard_value ? "达成" : "未达成" - end - - def ec_pass?(standard_value, real_value) - standard_value && real_value && real_value >= standard_value ? 1 : 0 - end - - # 工程认证删除关联课堂 - def delete_course_correlation_ec_course_evaluations ec_course - ec_course_evaluations = ec_course.ec_course_evaluations.where(:is_course_type => true) - ec_course_evaluations.destroy_all if ec_course_evaluations - end - - def sync_ec_year_student_score ec_subitem, ce, year_students, students, works, position=1 - year_students.each do |year_student| - if students.map(&:id).include?(year_student.id) - work = works.where(:user_id => students.select{|s| s.id == year_student.id}[0].try(:user_id)).first - score = work.respond_to?(:work_score) ? work.try(:work_score) : work.try(:score) - else - score = 0 - end - ec_subitem.ec_student_achievements << EcStudentAchievement.new(:ec_year_student_id => year_student.id, :student_number => year_student.student_id, - :student_name => year_student.name, :score => score.to_f, - :position => position, :ec_course_evaluation_id => ce.id) - Rails.logger.info("############work_score:#{score}") - end - end - - # 同步在线课堂的考核标准和考核分项 - # ec_course: 工程认证的课程 - # course: 关联的在线课堂 - def sync_course_correlation_ec_course_evaluations ec_course, course - # 先删除之前的关联数据 - delete_course_correlation_ec_course_evaluations ec_course - - students = EcYearStudent.find_by_sql("SELECT eys.id, eys.student_id, eys.name, uxe.user_id FROM ec_year_students eys JOIN - (SELECT ue.student_id, ue.user_id FROM user_extensions ue JOIN students_for_courses sfc ON ue.`user_id` = sfc.`student_id` - WHERE sfc.`course_id` = #{course.id})uxe ON eys.student_id = uxe.student_id WHERE eys.ec_year_id = #{ec_course.ec_year_id}") - - year_students = ec_course.ec_year.ec_year_students - - # 实训作业模块 - shixun_models = course.homework_commons.where("homework_type = 4 and publish_time < '#{Time.now}'") - unless shixun_models.blank? - ce = EcCourseEvaluation.create(:name => "实训作业", :evluation_count => 1, :status => 2, :ec_course_id => ec_course.id, :is_course_type => true) - shixun_models.each do |shixun| - ec_subitem = EcCourseEvaluationSubitem.create(:name => shixun.name, :ec_course_evaluation_id => ce.id) - - sync_ec_year_student_score ec_subitem, ce, year_students, students, shixun.student_works - end - end - - # 普通作业模块 - common_models = course.homework_commons.where("homework_type = 1 and publish_time < '#{Time.now}'") - unless common_models.blank? - ce = EcCourseEvaluation.create(:name => "普通作业", :evluation_count => 1, :status => 2, :ec_course_id => ec_course.id, :is_course_type => true) - common_models.each do |common| - ec_subitem = EcCourseEvaluationSubitem.create(:name => common.name, :ec_course_evaluation_id => ce.id) - - sync_ec_year_student_score ec_subitem, ce, year_students, students, common.student_works - end - end - - # 分组作业模块 - group_models = course.homework_commons.where("homework_type = 3 and publish_time < '#{Time.now}'") - unless group_models.blank? - ce = EcCourseEvaluation.create(:name => "分组作业", :evluation_count => 1, :status => 2, :ec_course_id => ec_course.id, :is_course_type => true) - group_models.each do |group| - ec_subitem = EcCourseEvaluationSubitem.create(:name => group.name, :ec_course_evaluation_id => ce.id) - - sync_ec_year_student_score ec_subitem, ce, year_students, students, group.student_works - end - end - - # 试卷模块 - exercise_models = course.exercises.where("exercise_status > 1") - unless exercise_models.blank? - ce = EcCourseEvaluation.create(:name => "试卷", :evluation_count => 1, :status => 2, :ec_course_id => ec_course.id, :is_course_type => true) - exercise_models.each do |exercise| - ec_subitem = EcCourseEvaluationSubitem.create(:name => exercise.exercise_name, :ec_course_evaluation_id => ce.id) - - sync_ec_year_student_score ec_subitem, ce, year_students, students, exercise.exercise_users - end - end - - # 毕设任务模块 - task_models = course.graduation_tasks.where("publish_time < '#{Time.now}'") - unless task_models.blank? - ce = EcCourseEvaluation.create(:name => "毕设任务", :evluation_count => task_models.size, :status => 1, :ec_course_id => ec_course.id, :is_course_type => true) - task_models.each_with_index do |task, index| - ec_subitem = EcCourseEvaluationSubitem.create(:name => task.name, :ec_course_evaluation_id => ce.id) - - sync_ec_year_student_score ec_subitem, ce, year_students, students, task.graduation_works, index + 1 - end - end - end - - # 选用实训的学校情况 - def school_user_detail shixun - user_ids = shixun.myshixuns.pluck(:user_id) - schools = School.where(:id => UserExtensions.where(:user_id => user_ids).pluck(:school_id)) - school_size = schools.size - str = school_size > 0 ? "#{schools.limit(2).map(&:name).join("、")}等 #{school_size}所" : "0所" - end - - def shixun_json_data shixuns - shixuns.map do |shixun| - school_detail = school_user_detail shixun - preference = shixun.shixun_preference - shixun_path = shixun_path(shixun) - shixun.attributes.dup.merge({ - school_detail: school_detail, - preference: preference, - shixun_path: shixun_path - }) - end - end - - # 分班 - def member_group_name members, user_id - member = members.where(:user_id => user_id).first - group_name = member.try(:course_group_id).to_i == 0 ? '未分班' : member.course_group.name - end - - # 分班 - def new_member_group_name course_id, user_id - group_id = Member.where(:course_id => course_id, :user_id => user_id).pluck(:course_group_id).first - group_id == 0 ? '未分班' : CourseGroup.where(:id => group_id).pluck(:name).first - end - - # 分班id - def member_group_id members, user_id - member = members.where(:user_id => user_id).first - group_id = member.try(:course_group_id).to_i - end - - # 推荐实训 - def recommend_shixun shixun - shixun_id = ShixunTagRepertoire.where("tag_repertoire_id = #{shixun.tag_repertoires.first.present? ? shixun.tag_repertoires.first.try(:id) : 0} and shixun_id != #{shixun.id}").map(&:shixun_id) - shixuns = Shixun.select([:id, :name, :user_id, :status, :myshixuns_count, :trainee, :identifier]).where(:id => shixun_id, :status => 2, :hidden => 0).order("myshixuns_count desc").limit(3) - if shixuns.size < 3 - ids = shixuns.size == 0 ? "(-1)" : "(" + shixuns.map(&:id).join(',') + ")" - hot_shixuns = Shixun.select([:id, :name, :user_id, :status, :myshixuns_count, :trainee, :identifier]).where("status = 2 and hidden = 0 and id not in #{ids}").order("myshixuns_count desc").limit(3-shixuns.size) - return shixuns + hot_shixuns - else - return shixuns - end - end - - # 用户获取的技能标签 - def user_get_tags challenge_ids, user=User.current - tags = ChallengeTag.where(:challenge_id => user.games.where(:challenge_id => challenge_ids, :status => 2).pluck(:challenge_id)).pluck(:name).uniq - return tags - end - - # 所属路径 - def belongto_path shixun - Subject.where(:id => shixun.stage_shixuns.map(&:subject_id), :hidden => 0).limit(2) - end - - # 已授权老师加入示例课堂 - def join_ex_course user - course = Course.where(:id => 1309).first - if course - if course.members.where(:user_id => user.id).empty? - member = Member.new(:role_ids => [9], :user_id => user.id) - course.members << member - Tiding.create(:user_id => user.id, :trigger_user_id => 1, :container_id => course.id, :container_type => 'TeacherJoinCourse', :belong_container_id => course.id, :belong_container_type => "Course", :tiding_type => "System", :extra => "9") - end - end - end - -# 成员身份 - def member_zh_role member - role = "" - if member.roles.first - case member.roles.first.id - when 3 - role = "管理人员" - when 4 - role = "开发人员" - when 5 - role = "报告人员" - end - end - end - - def container_limit mirror_repositories - container = [] - mirror_repositories.each do |mr| - if mr.name.present? - container << {:image => mr.name, :cpuLimit => mr.cpu_limit, :memoryLimit => "#{mr.memory_limit}M", :type => mr.try(:main_type) == "1" ? "main" : "sub"} - end - end - return container.to_json - end - - # 实训作品列表的提交状态 - def list_work_status work, homework, member - if work.work_status == 0 - str = "未提交" - else - if work.compelete_status == 0 - setting_time = homework_group_setting homework, member.try(:course_group_id) - end_time = setting_time.end_time.present? ? setting_time.end_time : homework.end_time - if end_time > Time.now || (homework.allow_late && !homework.course.is_end) - str = "正在提交" - else - str = "延时提交" - end - else - if work.work_status == 1 - str = "按时提交" - else - str = "延时提交" - end - end - end - str - end - - # 试卷、问卷提交状态 - def ex_poll_work_status status - str = "" - case status - when 0 - str = "未提交" - when 1 - str = "按时提交" - when 2 - str = "延时提交" - end - str - end - - #传入分数,获取对应颜色 - def score_color score - if score - color = score >= 90 ? "color-red" : "color-green" - else - color = "color-grey" - end - color - end - - # 获取两断时间的日期差 - def time_between_days t1, t2 - Date.parse(t1.to_s) - Date.parse(t2.to_s) if t1.present? && t2.present? - end - - def update_valuate_time game_id, column - record = EvaluateRecord.where(:game_id => game_id).first - if record - consume_time = format("%.2f", (Time.now.to_f - record.created_at.to_f)).to_f - if column == "file_update" - record.update_attributes!(:file_update => consume_time) - elsif column == "pull" - record.update_attributes!(:consume_time => consume_time) - elsif column == "create_pod" - record.update_attributes!(:create_pod => consume_time) - elsif column == "pod_execute" - record.update_attributes!(:pod_execute => consume_time) - end - end - end - - # TPM查看权限 - # result一般为页面权限 - def shixun_view_allow shixun, result = nil - if User.current.manager_of_shixun?(shixun) - result ? false : true - else - if shixun.status == 0 || (shixun.use_scope == 1 && !shixun.schools.map(&:name).include?(User.current.school_name)) - result ? true : (render_403) - end - end - end - - # 判断TPM的代码是否被修改了 - # 判断依据是看tpm的最新提交记录和tpi数据库中存储的commit_id是否一致 - def repository_is_modified myshixun, shixun_gpid - g = Gitlab.client - myshixun_commit_id = myshixun.commit_id - if myshixun_commit_id.blank? - myshixun_commit_id = g.commits(myshixun.gpid).last.try(:id) - myshixun.update_column(:commit_id, myshixun_commit_id) - end - shixun_commit_id = g.commits(shixun_gpid).first.try(:id) - Rails.logger.warn("###############shixun_commit_id is #{shixun_commit_id}") - Rails.logger.warn("###############myshixun_commit_id is #{myshixun.commit_id}") - result = myshixun_commit_id != shixun_commit_id ? true :false - return result - end - - # 定义当前关卡是否有权开启下一关 - # :实训若发布了,必须通过当前关卡才能查看下一关 - # :未发布的实训,除了最后一关,其它的关卡都可以进入下一关 - def show_next_stage?(game, shixun_status) - if game.is_final_game? || ([2,3].include?(shixun_status.to_i) && game.try(:status) != 2) - false - else - true - end - end - - # 适用与已经用url_safe编码后,回调字符串形式 - def tran_base64_decode64 str - if str.blank? - str - else - s_size = str.size % 4 - if s_size != 0 - str += "=" * (4 - s_size) - end - Base64.decode64(str.tr("-_", "+/")).force_encoding("utf-8") - end - end - - def challenge_path path - cha_path = path.present? ? path.split(";") : [] - cha_path = cha_path.reject(&:blank?)[0].try(:strip) - cha_path - end - - def open_webssh - # 如果我webssh类型, 开启webssh - jenkins_shixuns = Redmine::Configuration['jenkins_shixuns'] - uri = URI("#{jenkins_shixuns}/jenkins-exec/webssh/getConnectInfo") - user_id = User.current.id - params = {userID:user_id} - res = uri_exec uri, params - return [host, port, username, password] - end - - # 中间层启动那种语言容器的类型 - # language 语言 exec_path 需要编译的文件路径 - def post_tomcat_language language, exec_path - if language == "Html" && !exec_path.blank? - case exec_path.split(".")[1].downcase - when "c" - "C" - when "cpp" - 'C++' - when "py" - 'Python2.7' - else - "Java" - end - elsif exec_path.blank? - "Java" - else - language - end - end - - def only_publish_game shixun, type - shixun_tomcat = Redmine::Configuration['shixun_tomcat'] - gameInfo = shixun.gameInfo - uri ="#{shixun_tomcat}/bridge/game/publishGame" - params = {:gameInfo => "#{gameInfo}"} - logger.info("%%%%%%%%%%%%params is #{params}") - res = uri_exec uri, params - if res && res['code'].to_i != 0 - raise("实训云平台繁忙(繁忙等级:90)") - end - end - - def publish_game_and_tpimodify myshixun, type - shixun_tomcat = Redmine::Configuration['shixun_tomcat'] - git_myshixun_url = gitlab_url myshixun - git_myshixun_url = Base64.urlsafe_encode64(git_myshixun_url) - params = {tpiID: "#{myshixun.try(:id)}", :tpiGitURL => "#{git_myshixun_url}", :tpmID => "#{myshixun.shixun.try(:id)}"} - uri ="#{shixun_tomcat}/bridge/game/resetTpiScript" - params = {:gameInfo => "#{gameInfo}"} - logger.info("%%%%%%%%%%%%params is #{params}") - res = uri_exec uri, params - if res && res['code'].to_i != 0 - raise("实训云平台繁忙(繁忙等级:98)") - end - end - - ## 若实训关卡位置,关卡数等信息发生变化则需要修改脚本内容 - def modify_shixun_script shixun, script - if script.present? - source_class_name = [] - challenge_program_name = [] - shixun.challenges.map(&:exec_path).each do |exec_path| - challenge_program_name << "\"#{exec_path}\"" - if shixun.mirror_name.try(:first) == "Java" - if exec_path.nil? || exec_path.split("src/")[1].nil? - source = "\"\"" - else - source = "\"#{exec_path.split("src/")[1].split(".java")[0]}\"" - end - source_class_name << source.gsub("/", ".") if source.present? - elsif shixun.mirror_name.try(:first) == "C#" - if exec_path.nil? || exec_path.split(".")[1].nil? - source = "\"\"" - else - source = "\"#{exec_path.split(".")[0]}.exe\"" - end - source_class_name << source if source.present? - end - end - script = if script.include?("sourceClassName") && script.include?("challengeProgramName") - script.gsub(/challengeProgramNames=\(.*\)/,"challengeProgramNames=\(#{challenge_program_name.reject(&:blank?).join(" ")}\)").gsub(/sourceClassNames=\(.*\)/, "sourceClassNames=\(#{source_class_name.reject(&:blank?).join(" ")}\)") - else - script.gsub(/challengeProgramNames=\(.*\)/,"challengeProgramNames=\(#{challenge_program_name.reject(&:blank?).join(" ")}\)").gsub(/sourceClassNames=\(.*\)/, "sourceClassNames=\(#{challenge_program_name.reject(&:blank?).join(" ")}\)") - end - end - return script - #shixun.update_column(:evaluate_script, script) - end - - # 若实训有更改,则修改已发不实训的标记为已更改 - # shixun_modifies表中1表示已更改,进入myshixun需要强制重置,0表示没有修改 - # type 0:表示已经是最新的了;1:表示已经有修改 - # res返回结果0表示正确,-1表示有异常 - def add_shixun_modify_status shixun, type - shixun_tomcat = Redmine::Configuration['shixun_tomcat'] - gameInfo = shixun.gameInfo - uri ="#{shixun_tomcat}/bridge/game/publishGame" - params = {:gameInfo => "#{gameInfo}"} - logger.info("%%%%%%%%%%%%params is #{params}") - res = uri_exec uri, params - if res && res['code'].to_i != 0 - raise("实训云平台繁忙(繁忙等级:90)") - end - end - - # 判断实训的路径、language是否更改,如果修改在TPI中需要重置脚本 - # 目前为止,container为challenge和game类型 - # 改工作必须在challenge或者game保存后执行 - # type 1:表示既需要提示又需要更新脚本的,0:表示仅仅需要提示 - def should_modify_myshixun_script shixun, type - if type == 1 - shixun.update_column(:reset_time, shixun.try(:updated_at)) - else - shixun.update_column(:modify_time, shixun.try(:updated_at)) - end - end - - def shixun_modify_status_publish shixun, type - shixun_tomcat = Redmine::Configuration['shixun_tomcat'] - # 更新测试集 - gameInfo = shixun.gameInfo - uri ="#{shixun_tomcat}/bridge/game/publishGame" - # 更新脚本 - tpiList =[] - myshixuns = shixun.myshixuns - if myshixuns.present? - myshixuns.each do |myshixun| - logger.info("tpiID is #{myshixun.id}") - tpiID = myshixun.id - instanceGitURL = gitlab_url myshixun - logger.info("instanceGitURL is #{instanceGitURL}") - tpiList << {:tpiID => tpiID, :instanceGitURL => instanceGitURL} - logger.info("###############{tpiList.to_json unless tpiList.blank?}") - end - end - tpiList = Base64.urlsafe_encode64(tpiList.to_json) unless tpiList.blank? - params = {:gameInfo => "#{gameInfo}", :tpiList => "#{tpiList}" } - logger.info("%%%%%%%%%%%%params is #{params}") - # end - res = uri_exec uri, params - if res && res['code'].to_i != 0 - raise("实训云平台繁忙(繁忙等级:90)") - end - end - - # 仅仅产生记录,用于已执行publish的方法 - # ShixunModify中status 1:表示有更改,开启实训的时候需要重置,0:表示不需要重置或已重置完成 - def shixun_modify_status_without_publish shixun, type - myshixuns = shixun.myshixuns - unless myshixuns.blank? - myshixuns.each do |myshixun| - shixun_modify = ShixunModify.where(:shixun_id => shixun.id, :myshixun_id => myshixun.id).first - if shixun_modify.nil? - ShixunModify.create!(:shixun_id => shixun.id, :myshixun_id => myshixun.id, :status => type) - else - shixun_modify.update_attributes!(:status => type) - end - end - end - end - - # 通关后,把最后一次成功的代码存到数据库 - # type 0 创始内容, 1 最新内容 - def game_passed_code game_id, path, myshixun_gpid, type - g = Gitlab.client - rev = rev.nil? ? "master" : rev - path = path.strip if path.present? - file_content = g.files(myshixun_gpid, path, rev).content - if file_content.blank? - # gitlab缺陷:forked完成,短暂时间内取不了内容的,所以做一个小轮询,间隔0.1秒 - # 超过2秒则失败,需通过页面刷新 - for i in 0..30 do - sleep(0.1) - file_content = g.files(myshixun_gpid, path, rev).content - unless file_content.blank? - break - end - end - end - unless file_content.present? - raise("获取文件代码异常") - end - file_content = tran_base64_decode64(file_content) - game_code = GameCode.where(:game_id => game_id, :path => path).first - if game_code.nil? - GameCode.create!(:game_id => game_id, :new_code => file_content, :path => path) - else - game_code.update_attributes!(:new_code => file_content) - end - end - - def game_code_init game_id, path - game_code = GameCode.where(:game_id => game_id, :path => path).first - GameCode.create(:game_id => game_id, :path => path) if game_code.blank? - end - - # 判断用户是否认证 - def check_authentication - # return true - # if params[:action] == "on_search" || params[:action] == "apply_trail" # 之所以这样处理是为了避开account页面ajax加载 - # return true - # end - Rails.logger.info("check_authentication start") - unless User.current.logged? - url = request.original_url - redirect_to signin_path(:back_url => url) - return - end -=begin - if User.current.created_on.strftime('%Y-%m-%d %H:%M:%S') > "2018-01-01 00:00:00" && User.current.phone.blank? - redirect_to change_or_bind_path(:type => "phone") - return - end -=end - user_e = UserExtensions.where(:user_id => User.current.id).first - if User.current.lastname.blank? || user_e.school_id.blank? || user_e.identity.blank? || User.current.mail.blank? - redirect_to user_info_path() - Rails.logger.info("check_authentication end") - return - elsif User.current.certification != 1 # 系统没有授权 - day_cer = UserDayCertification.where(:user_id => User.current.id).last - unless (Time.now.to_i - day_cer.try(:created_at).to_i) < 86400 - redirect_to my_account_path() - Rails.logger.info("check_authentication end") - return - end - end - end - - def match_specific_symbol(str) - str.gsub(" ", "").gsub(/\r\n$/, "").gsub("\r\n", "
").gsub(/\t/, "").html_safe - end - - # textarea 以/r/n开头时,回车效果会被替换,因此先把\r转换成\r 再添加一个\r(直接添加\r不行) - def match_specific_symbol1(str) - str.gsub(/\A\r/, "\r\r") - end - - # 积分表中建立记录行为,有过奖励则不重复奖励 - def reward_grade(user, container_id, container_type, score) - grade = Grade.where(:user_id => user.id, :container_id => container_id, :container_type => container_type).first - if grade.nil? - Grade.create!(:user_id => user.id, :container_id => container_id, :container_type => container_type, :score => score) - user.update_column(:grade, (score.to_i + user.grade.to_i)) - end - end - - def reward_experience(user, container_id, container_type, score) - experience = Experience.where(:user_id => user.id, :container_id => container_id, :container_type => container_type).first - if experience.nil? - Experience.create!(:user_id => user.id, :container_id => container_id, :container_type => container_type, :score => score) - user.update_column(:experience, (score.to_i + user.experience.to_i)) - end - end - - def shixun_name game_id - game = Game.where(:id => game_id).first - game.nil? ? "---" : game.challenge.shixun.name - end - - def grade_shixun_name shixun_id - shixun = Shixun.where(:id => shixun_id).first - shixun.nil? ? "---" : shixun.name - end - - def game_position game_id - game = Game.where(:id => game_id).first - game.nil? ? "---" : game.challenge.position - end - - def managements_navigation_bar_show menu_type, sub_type, grandchild_type={} - case menu_type - when 2 - sub_type == 1 ? "课程列表" : (sub_type == 2? "课堂列表" : (sub_type == 3? "实训作业" : "项目列表")) - when 3 - case sub_type - when 1 - "实训列表" - when 2 - "实训配置列表" - when 3 - "已发布的实训" - when 4 - "已关闭的实训" - when 5 - "镜像管理" - when 6 - "学员实训列表" - when 7 - "镜像类别图片" - when 8 - "TPI实训列表" - when 9 - "TPI性能测试结果" - end - when 4 - case sub_type - when 1 - "实训课程列表" - when 2 - "实训课程配置" - when 3 - "已发布实训课程" - end - when 5 - case sub_type - when 1 - "竞赛列表" - end - when 6 - if sub_type == 1 - link_to('单位列表', departments_part_managements_path()) + "#{grandchild_type[:next_type] == 1 ? " > #{grandchild_type[:school].name}" : ""}" - elsif sub_type == 3 - "合作伙伴" - else - "单位部门列表" - end - when 7 - sub_type == 1 ? "用户列表" : (sub_type == 2 ? "试用授权列表" : "自动授权列表") - when 8 - sub_type == 1 ? "作业回复" : - (sub_type == 2 ? "实训反馈" : - (sub_type == 3 ? "讨论区" : "课堂讨论区") - ) - when 9 - sub_type == 1 ? "实训留言列表" : "" - when 10 - sub_type == 1 ? "实名认证" : - (sub_type == 2 ? "试用授权" : - (sub_type == 3 ? "部门审批" : - (sub_type == 4 ? "单位审批" : - (sub_type == 5 ? "实训发布" : - (sub_type == 6 ? "实训课程发布" : "职业认证") - ) - ) - ) - ) - when 11 - "工程认证+" - when 12 - sub_type == 1 ? "过关任务模板" : - (sub_type == 2 ? "实训简介模板" : - (sub_type == 3 ? "背景知识模板" : - (sub_type == 4 ? "通用评测模板" : - (sub_type == 5 ? "新课导语模板" : - (sub_type == 6 ? "实训评分设置" : - (sub_type == 7 ? "技术体系" : "升级通知") - ) - ) - ) - ) - ) - end - end - - - # codeMirror语言转换 - def language_switch language - case language - when "Java" - "text/x-java" - when "C" - "text/x-csrc" - when "C++" - "text/x-c++src" - when "Python" - "text/x-python" - when "Ruby" - "text/x-ruby" - end - end - - # 实训语言的种类 - def shixun_language - ["Java", "C", "C++", "Python2.7", "Python3.6", "MySQL/Java", "Html", "JFinal", "Docker", "Ethereum", "Dynamips", "MachineLearning", - "Verilog","Spark","MySQL/Python3.6","PHP","PHP/Web","Hadoop", "Golang","Android","Matlab","Shell", "Git", 'Perl6', 'Kotlin', 'Elixir', 'JavaScript', 'Ruby'] - end - - # 实训试用专业 - def shixun_major_option - content = [] - content << ["选择实训适用的专业", 0] - content << ["计算机科学与技术", 635] - content << ["软件工程", 636] - content << ["网络工程", 637] - content << ["信息安全", 638] - content << ["物联网工程", 639] - content << ["信息工程", 622] - content << ["通信工程", 619] - end - - # 实训面向学员 - def shixun_trainee - content = [] - content << ["初级学员", 1] - content << ["中级学员", 2] - content << ["高级学员", 3] - content << ["顶级学员", 4] - end - - # 班级设置排序中文 - def switch_to_chinese word - case word - when "boards" - result = "讨论区" - when "news" - result = "通知" - when "homework" - result = "作业" - when "exercises" - result = "试卷" - when "poll" - result = "问卷" - when "statistics" - result = "统计" - when "attachment" - result ="资源" - end - return result - end - - def allow_to_view_challenge challenge, shixun - # 判断对应关卡的game是否开启,如果开启则允许查看 - game_count = Game.where(:challenge_id => challenge, :user_id => User.current, :status => [0,1,2]).count - if game_count > 0 - return true - else - return false - end - end - - # 已通过的关卡数 - def had_passed_changllenge_count shixun, user - myshixun = Myshixun.where(:shixun_id => shixun.id, :user_id => user.id).first - if myshixun.nil? - 0 - elsif myshixun.games.select{|game| game.status == 2}.count == 0 - -1 - elsif myshixun.games.select{|game| game.status == 0}.count > 0 - [myshixun.games.select{|game| game.status == 2}.count + 1] - else - myshixun.games.select{|game| game.status == 2}.count - end - end - - # 判断TPM已通过的管卡数 - def had_passed_games_count shixun_id, user_id - #Game.find_by_sql("select count(*) as unpass_count from games where games.status=2 and user_id=#{user_id} and games.challenge_id in (select id from challenges where shixun_id=#{shixun_id})").first.try(:unpass_count) - Game.find_by_sql("SELECT count(*) cnt FROM `games` g join myshixuns m on m.id = g.myshixun_id where m.user_id = #{user_id} and m.shixun_id = #{shixun_id} and g.status = 2;").first.try(:cnt) - end - - # 用户实训评测状态 - def user_evaluate_status shixun, user - myshixun = shixun.myshixuns.where(:user_id => user.id).first - if myshixun.blank? - "--" - else - game_id = myshixun.games.map(&:id) - output = Output.where(:game_id => game_id).reorder("updated_at desc").first - if output.blank? - "--" - else - if output.try(:code) == -1 - time_from_now(output.updated_at).to_s + "评测失败" - else - time_from_now(output.updated_at).to_s + "评测成功" - end - end - end - end - - def student_work_performance score - case score - when (90..100) - '优秀' - when (70...90) - '良好' - when (60...70) - '及格' - when (0...60) - '不及格' - end - end - - # 已通过的关卡数 返回int类型(包含查看参考答案的) - def had_passed_changllenge_num myshixun - if myshixun.nil? - 0 - else - myshixun.games.select{|game| game.status == 2}.count - end - end - - # 已通过的关卡数 返回int类型(未查看参考答案) - def had_passed_no_ans_changllenge_num myshixun - if myshixun.nil? - 0 - else - myshixun.games.select{|game| game.status == 2 && game.final_score > 0}.count - end - end - - # TPI状态 :已通关、未通关、未开启 - def my_shixun_status shixun, user - status = "" - myshixun = Myshixun.where(:shixun_id => shixun.id, :user_id => user.id).first - if myshixun.nil? - status = "未开启" - else - status = myshixun.is_complete? ? "已通关" : "未通关" - end - status - end - - # 定义实训相关方法 - def sum_final_score - Game.find_by_sql("SELECT sum(final_score) as total_score FROM `games` where user_id=#{User.current.id}").first.try(:total_score) - end - - # 获取某个myshixun的得分 - def sum_myshixun_score myshixun_id - Game.find_by_sql("SELECT sum(final_score) as total_score FROM `games` where myshixun_id=#{myshixun_id}").first.try(:total_score) - end - - # myshixun 最高分 - def top_score shixun, position - Game.find_by_sql("SELECT max(final_score) as top_score FROM `games` g, `challenges` c where g.challenge_id = c.id and c.position=#{position} and g.myshixun_id in (SELECT id FROM `myshixuns` ms where ms.shixun_id=#{shixun.id})").first.try(:top_score) - end - - # 实训平均分 - def shixun_avg_score shixun, position - Game.find_by_sql("SELECT avg(g.final_score) as avg_score FROM `games` g, `challenges` c where g.challenge_id=c.id and c.position=#{position} and g.myshixun_id in (SELECT id FROM `myshixuns` ms where ms.shixun_id=#{shixun.id})").first.try(:avg_score) - end - - # 正在进行中任务 - def shixun_running shixun, position - Shixun.find_by_sql("SELECT count(*) as count FROM `myshixuns` ms, `games` g, `challenges` c where g.myshixun_id = ms.id and ms.shixun_id =#{shixun.id} and g.challenge_id=c.id and c.position=#{position} and g.status in ('0','1');").first.try(:count) - end - - # 已完成任务 - def shixun_done shixun, position - Shixun.find_by_sql("SELECT count(*) as count FROM `myshixuns` ms, `games` g, `challenges` c where g.myshixun_id = ms.id and ms.shixun_id =#{shixun.id} and g.challenge_id=c.id and c.position=#{position} and g.status=2;").first.try(:count) - end - - # 测评次数 - def shixun_exec_total_count shixun, position - Game.find_by_sql("SELECT * FROM `outputs` op, `games` g, `myshixuns` m where op.game_id = g.id and g.stage='#{position}' and m.parent_id = '#{shixun.id}';") - end - - # 平均耗时 - def game_avg_day created_at, updated_at - time = (updated_at - created_at).to_i - day = time / 86400 - end - - # 平均耗时 - def game_avg_hour created_at, updated_at - time = (updated_at - created_at).to_i - hour = time % (24*60*60) / (60*60) - end - - # 平均耗时 - def game_avg_min created_at, updated_at - time = (updated_at - created_at).to_i - min = time % (24*60*60) % (60*60) / 60 - end - - # 耗时:天、小时、分、秒 - # 小于1分钟则不显示 - def game_spend_time time - day = time / 86400 - hour = time % (24*60*60) / (60*60) - min = time % (24*60*60) % (60*60) / 60 - sec = time % (24*60*60) % (60*60) % 60 - if day < 1 - if hour < 1 - if min < 1 - if sec < 1 - time = "--" - else - time = "#{sec}秒" - end - else - time = "#{min}分钟 #{sec}秒" - end - else - time = "#{hour}小时 #{min}分钟 #{sec}秒" - end - else - time = "#{day}天 #{hour}小时 #{min}分钟 #{sec}秒" - end - return time - end - - # 耗时:天、小时、分 - # 小于1分钟则不显示 - def work_spend_time time - if time == 0 - time = "0小时" - else - day = time / 86400 - hour = time % (24*60*60) / (60*60) - min = (time % (24*60*60) % (60*60) / 60.0).ceil - if day < 1 - if hour < 1 - if min < 1 - time = "1分" - else - time = "#{min}分" - end - else - time = "#{hour}小时#{min}分" - end - else - time = "#{day}天#{hour}小时#{min}分" - end - end - return time - end - - # 耗时:小时、分、秒 00:00:00 - # 小于1秒钟则不显示 - def com_spend_time time - hour = time / (60*60) - min = time % (60*60) / 60 - sec = time % (60*60) % 60 - hour_str = "00" - min_str = "00" - sec_str = "00" - if hour >= 1 && hour < 10 - hour_str = "0#{hour}" - elsif hour >= 10 - hour_str = "#{hour}" - end - - if min >= 1 && min < 10 - min_str = "0#{min}" - elsif min >= 10 - min_str = "#{min}" - end - - if sec >= 1 && sec < 10 - sec_str = "0#{sec}" - elsif sec >= 10 - sec_str = "#{sec}" - end - - time = "#{hour_str} : #{min_str} : #{sec_str}" - return time - end - - def consume_time time - time.strftime('%Y/%m/%d %H:%M:%S') - end - - def avg_spend_time shixun_id, position - Game.find_by_sql("SELECT avg(g.end_time - g.open_time) as avg_time FROM `games` g, `challenges` c where c.id=g.challenge_id and g.status =2 and c.position = #{position} and g.myshixun_id in (SELECT id FROM `myshixuns` where shixun_id= #{shixun_id});").first.try(:avg_time).to_i - end - - # 已闯关 - def had_pass shixun_id, position - Game.find_by_sql("SELECT count(*) as count FROM `games` g, `challenges` c where c.id=g.challenge_id and g.status =2 and c.position =#{position} and g.myshixun_id in (SELECT id FROM `myshixuns` where shixun_id=#{shixun_id});").first.try(:count) - end - - # 单个game测评次数 - def avg_my_pass game - Output.where(:game_id => game).count - end - - def shixun_final_score myshixun - Game.find_by_sql("SELECT sum(final_score) as final_score FROM `games` where myshixun_id='#{myshixun.id}';").first.try(:final_score) - end - - # def user_blogs_path(resource,parameters={}) - # super - # end - # 复制一个任务 - def publish_games challenge, myshixun_id, index - game = Game.new - game.attributes = challenge.attributes.dup.except("id","shixun_id","user_id","visits") - game.myshixun_id = myshixun_id - game.user_id = User.current.id - game.stage = challenge.position - index == 0 ? game.status = 0 : game.status = 3 - challenge_samples = challenge.challenge_samples - test_sets = challenge.test_sets - if game.save - unless challenge_samples.blank? - challenge_samples.each do |cs| - ChallengeSample.create(:game_id => game.id, :input => cs.input, :output => cs.output, :challenge_id => -1) - end - end - unless test_sets.blank? - test_sets.each do |ts| - TestSet.create(:game_id => game.id, :input => ts.input, :output => ts.output, :challenge_id => -1) - end - end - end - end - - def git_repository_url project, type - if type == "Shixun" - rep_identify = Repository.where(:shixun_id => project.id, :type => "Repository::Gitlab").first.try(:identifier) - elsif type == "Myshixun" - rep_identify = Repository.where(:myshixun_id => project.id, :type => "Repository::Gitlab").first.try(:identifier) - else - rep_identify = Repository.where(:project_id => project.id, :type => "Repository::Gitlab").first.try(:identifier) - end - gitlab_address = Redmine::Configuration['gitlab_address'] - gitUrl = gitlab_address.to_s+"/"+project.owner.to_s+"/"+ rep_identify + "."+"git" - end - - def gitlab_url container - g = Gitlab.client - url = "#{Redmine::Configuration['gitlab_address_ip']}/#{g.project(container.try(:gpid)).try(:path_with_namespace)}.git" - end - - def gitlab_address_url container - g = Gitlab.client - url = "#{Redmine::Configuration['gitlab_address']}/#{g.project(container.try(:gpid)).try(:path_with_namespace)}.git" - end - - # paranet_gpid 为fork的源头 - # u_gid 为当前用户在gitlab中对应的用户id - def sync_gitlab_rep container, parent_gpid, u_gid - Rails.logger.info("# sync_gitlab_rep # parent_gpid is #{parent_gpid}, u_gid is #{u_gid}") - if container.class == Myshixun - gshixun = Gitlab.client.fork(parent_gpid, u_gid) - container.update_attribute(:gpid, gshixun.id) - end - return gshixun.try(:id) - end - - # def git_shixun_url shixun, login - # rep_identify = Repository.where(:shixun_id => shixun.id, :type => "Repository::Gitlab").first.try(:identifier) - # gitlab_address = Redmine::Configuration['gitlab_address'] - # gitUrl = gitlab_address.to_s+"/"+login+"/"+ rep_identify + "."+"git" - # end - - # def git_shixun_url_ip shixun, login - # rep_identify = Repository.where(:shixun_id => shixun.id, :type => "Repository::Gitlab").first.try(:identifier) - # gitlab_address = Redmine::Configuration['gitlab_address_ip'] - # gitUrl = gitlab_address.to_s+"/"+login+"/"+ rep_identify + "."+"git" - # end - - # def git_myshixun_url_ip myshixun, user_id - # g = Gitlab.client - # login = User.where(:id => user_id).first.try(:login) - # rep_identify = g.project(myshixun.gpid).try(:name) - # gitlab_address = Redmine::Configuration['gitlab_address_ip'] - # gitUrl = gitlab_address.to_s+"/"+login+"/"+ rep_identify + "."+"git" - # end - - # myshixun git url by domain - # def git_myshixun_url myshixun, user_id - # g = Gitlab.client - # login = User.where(:id => user_id).first.try(:login) - # rep_identify = g.project(myshixun.gpid).try(:name) - # gitlab_address = Redmine::Configuration['gitlab_address'] - # gitUrl = gitlab_address.to_s+"/"+login+"/"+ rep_identify + "."+"git" - # end - - def uri_exec uri, params - begin - Rails.logger.info("@parmas is #{params}, url is #{uri}") - uri = URI.parse(URI.encode(uri.strip)) - res = Net::HTTP.post_form(uri, params).body - res = JSON.parse(res) - rescue => e - Rails.logger.error("failed to post data to brige! #{e}") - raise("实训云平台繁忙(繁忙等级:84)") - end - end - - # type 为繁忙等级 - # status-> 501:check检查版本库是否有代码异常 - # status-> 502:实训评测异常;503实训版本库check异常 - def interface_post uri, params, status - begin - uri = URI.parse(URI.encode(uri.strip)) - res = Net::HTTP.post_form(uri, params).body - res = JSON.parse(res) - if (res && res['code'] != 0) - raise(status) - end - res - rescue Exception => e - Rails.logger.error("post failed! #{e}") - raise("实训云平台繁忙(繁忙等级:#{status})") - end - end - - def get_url_exec uri, options={} - begin - uri = URI.parse(URI.encode(uri.strip)) - res = Net::HTTP.get_response(uri).body - res = JSON.parse(res) - rescue => e - logger.error("get response failed ! #{e}") - raise("实训云平台繁忙(繁忙等级:84)") - end - end - - def uri_json_exec uri, params - Net::HTTP.start(uri.hostname, uri.port) {|http| - http.post(uri.path, params.to_json) - } - - http = Net::HTTP.new(uri.host, uri.port) - res = Net::HTTP.post(uri, params.to_json).body - res = JSON.parse(res) - end - - def last_reply_time container_id - message = Message.where(:root_id => container_id).order("created_on desc").first - time = message.created_on - return time - end - - def judge_Chinese_num str - cn_reg = /[\u4e00-\u9fa5]{1}/ - cn_number = str.scan(cn_reg).size - en_number = str.size - cn_number - size = 1.9* cn_number + en_number - end - - # homework_common状态 - # 0:挂起;1:提交中;2:匿评中;3:评阅中 - def new_homework_common_status status - case status - when 0 - "未发布" - when 1 - "提交中" - when 2 - "补交中" - when 3 - "匿评中" - when 4 - "申诉中" - when 5 - "评阅中" - when 6 - "已结束" - end - end - - # 作业不同状态的不同样式 - def homework_status_color status - style = "" - case status - when '未发布' - style = 'edu-filter-btn-no-late' - when '提交中', '评阅中', '匿评中', '交叉评阅中' - style = 'edu-filter-btn-orange' - when '已开启补交' - style = 'edu-filter-btn-green' - when '已截止', '未开启补交' - style = 'edu-filter-btn-red' - when '已结束' - style = 'edu-filter-btn-end' - when '申诉中' - style = 'edu-filter-btn-appeal' - end - end - - # 有分班权限的课堂 学生提交作品时发送的消息对象 - def tiding_teachers course, member - if course.teacher_course_groups.count > 0 - member_ids = course.teacher_course_groups.where(:course_group_id => member.try(:course_group_id)).pluck(:member_id) - - teachers = course.teachers.where("members.id not in (#{course.teacher_course_groups.pluck(:member_id).size > 0 ? course.teacher_course_groups.pluck(:member_id).join(',') : -1}) or - members.id in (#{member_ids.size > 0 ? member_ids.join(',') : -1})") - else - teachers = course.teachers - end - teachers - end - - # 分班管理的老师所看到的成员数 - def group_student_count course - member = @course.members.where(:user_id => User.current.id).first - if User.current.allowed_to?(:as_teacher, course) && member.present? && member.teacher_course_groups.count > 0 - student_count = course.members.where(:course_group_id => member.teacher_course_groups.pluck(:course_group_id)).select{|member| member.roles.to_s.include?("Student")}.count - else - student_count = course.student.count - end - student_count - end - - # 已提交作品 - def late_commit_work_status work, homework - if homework.allow_late - link_to "补交附件", student_work_path(work, :is_focus => 1), :class => 'edu-filter-btn edu-activity-orange ml15 fl mt5', :title => "可追加作品修订附件" - else - "未开启补交".html_safe - end - end - - # 未提交作品 - def un_commit_work_status project, homework - if homework.allow_late - if homework.homework_type == 3 && project.nil? && homework.homework_detail_group.base_on_project == 1 - link_to "补交作品", "javascript:void(0)", :class => 'edu-filter-btn edu-activity-orange ml15 fl mt5', :style => "cursor:not-allowed", :title => '请先关联项目再补交作品' - else - link_to "补交作品", new_student_work_url_without_domain(homework.id), :class => 'edu-filter-btn edu-activity-orange ml15 fl mt5' - end - else - "未开启补交".html_safe - end - end - - # 判断作业有多少人提交了 - # - def had_commit_studentwork_count homework_common - member = homework_common.course.members.where(:user_id => User.current.id).first - student_works = homework_common.student_works - if member.present? && member.teacher_course_groups.count > 0 - group_students = homework_common.course.members.where(:course_group_id => member.teacher_course_groups.pluck(:course_group_id)).map(&:user_id) - student_works = student_works.where(:user_id => group_students) - end - student_works.where("work_status !=?", 0).count - end - - # 实训作业的有效作品数 - def effective_shixun_work_count homework_common - count = 0 - shixun = homework_common.shixuns - if shixun - homework_common.student_works.where("work_status !=?", 0).each do |work| - myshixun = work.myshixun - count = count + (myshixun && myshixun.games.select{|game| game.status == 2}.size > 0 ? 1 : 0) - end - end - count - end - - # 实训作业的通关作品数 - def tongguan_shixun_work_count homework_common - count = 0 - shixun = homework_common.shixuns.first - if shixun - challenge_count = shixun.challenges.count - homework_common.student_works.where("work_status !=?", 0).each do |work| - myshixun = work.myshixun - if myshixun && myshixun.games.select{|game| game.status == 2}.size == challenge_count - count = count + 1 - end - end - end - count - end - - # 未提交作品数统计 - def had_uncommit_studentwork_count homework_common - member = homework_common.course.members.where(:user_id => User.current.id).first - student_works = homework_common.student_works - if member.present? && member.teacher_course_groups.count > 0 - group_students = homework_common.course.members.where(:course_group_id => member.teacher_course_groups.pluck(:course_group_id)).map(&:user_id) - student_works = student_works.where(:user_id => group_students) - end - student_works.where("work_status =?", 0).count - end - - # 未评阅 - def had_unevaluate_count homework_common - #count = StudentWorksScore.find_by_sql("SELECT count(distinct student_work_id) as count FROM student_works_scores sws, student_works sw, homework_commons hc where hc.id =#{homework_common.id} and sw.homework_common_id=hc.id and sw.is_delete = 0 and sws.student_work_id = sw.id and sws.user_id=#{User.current.id};").first.try(:count).to_i - member = homework_common.course.members.where(:user_id => User.current.id).first - student_works = homework_common.student_works - if member.present? && member.teacher_course_groups.count > 0 - group_students = homework_common.course.members.where(:course_group_id => member.teacher_course_groups.pluck(:course_group_id)).map(&:user_id) - student_works = student_works.where(:user_id => group_students) - end - has_comment = StudentWorksScore.where(:student_work_id => student_works.map(&:id), :reviewer_role => [1, 2]).group_by(&:student_work_id).count - student_count = student_works.count - return student_count - has_comment - end - - # 该阶段还有多长时间结束/距下一阶段还有多长时间 - def homework_curr_time homework_common - result = {} - status = "" - time = "" - if homework_common.course.try(:is_end) - status = "已结束" - time = format_date homework_common.course.end_date - else - ho_detail_manual = homework_common.homework_detail_manual - if ho_detail_manual - case ho_detail_manual.comment_status - when 0 - status = "未发布" - when 1 - if homework_common.end_time && homework_common.end_time >= Time.now - status = "提交中" - time = how_much_time(homework_common.end_time) - end - when 3 - if ho_detail_manual.evaluation_end && ho_detail_manual.evaluation_end > Time.now - status = "匿评中" - time = how_much_time(ho_detail_manual.evaluation_end) - end - when 4 - if ho_detail_manual.appeal_time && ho_detail_manual.appeal_time > Time.now - status = "申诉中" - time = how_much_time(ho_detail_manual.appeal_time) - end - when 5 - status = "评阅中" - when 6 - status = "评阅中" - end - end - end - result[:status] = status - result[:time] = time - result - end - - # 试卷:该阶段还有多长时间结束/距下一阶段还有多长时间 - def exercise_curr_time exercise - result = {} - status = "" - time = "" - case exercise.exercise_status - when 1 - status = "未发布" - when 2 - if exercise.end_time && exercise.end_time >= Time.now - status = "提交中" - time = how_much_time(exercise.end_time) - end - when 3 - status = "已截止" - time = format_time exercise.end_time - end - result[:status] = status - result[:time] = time - result - end - - # 问卷:该阶段还有多长时间结束/距下一阶段还有多长时间 - def poll_curr_time poll - result = {} - status = "" - time = "" - case poll.polls_status - when 1 - status = "未发布" - when 2 - if poll.end_time && poll.end_time >= Time.now - status = "提交中" - time = how_much_time(poll.end_time) - end - when 3 - status = "已截止" - time = format_time poll.end_time - end - result[:status] = status - result[:time] = time - result - end - - # 公共分页 - def paginator_list objs, objs_count, limit, is_remote - @is_remote = is_remote - @objs_count = objs.count - @obj_pages = Paginator.new @objs_count, limit, params['page'] || 1 - @offset ||= @obj_pages.offset - @objs = paginateHelper @attachments,25 - end - - # 判断当前用户能否对消息进行操作 - def allow_to_show applied_message - (User.current.id == applied_message.user_id && applied_message.status == 0) ? true : false - end - - # 获取竞赛的管理人员 - def contest_managers contest - contest.contest_members.select{|cm| cm.roles.to_s.include?("ContestManager")} - end - - # 获取竞赛的评委人员 - def contest_judges contest - contest.contest_members.select{|cm| cm.roles.to_s.include?("Judge")} - end - - # 获取竞赛的参赛人员 - def contest_contestants contest - contest.contest_members.select{|cm| cm.roles.to_s.include?("Contestant")} - end - - # 字符串加密 - def aes_encrypt(key, encrypted_string) - aes = OpenSSL::Cipher::Cipher.new("AES-128-ECB") - aes.encrypt - aes.key = key - txt = aes.update(encrypted_string) << aes.final - txt.unpack('H*')[0].upcase - end - - # 字符串解密 - def aes_dicrypt(key, dicrypted_string) - aes = OpenSSL::Cipher::Cipher.new("AES-128-ECB") - aes.decrypt - aes.key = key - aes.update([dicrypted_string].pack('H*')) << aes.final - end - # 获取多种类型的user用户名 - def user_message_username user - user.try(:show_name) - end - - # 超出1w后用k+形式显示 - def switch_integer_into_k number - number > 10000 ? (number.to_f / 1000).round.to_s + "k" : number - end - - # 判断某个课程是否包含仅对自己可见的作业 - def course_has_score_open_common_homework course - course.homework_commons.select{|hc| hc.score_open == 0}.count > 0 ? true : false - end - - def welcome_course_message_count course_id - board_id = Board.where(:course_id => course_id).first.try(:id) - message_count = Message.where(:board_id => board_id).count - return message_count - end - - # 可以查看到资源库的资源 - def welcome_course_file_count course - course.attachments.count - end - - # 超级管理员实训评分设置的横轴 - def shixun_quality_show quality - lower = quality.lower_limit - upper = quality.upper_limit - result = "#{quality.name}" - if lower.present? && upper.present? - result = if(lower > lower.round) - "#{result}(#{lower.round}," - else - "#{result}[#{lower.round}," - end - - result = if(upper >= upper.round) - "#{result}#{upper.round}]" - else - "#{result}#{upper.round})" - end - end - return result - end - - # 管理员实训评分中 "指标"与"标准"的对应 - def description_of_quality indicator, position - indicator.score_quality_descriptions.where(:position => position).first.try(:name) if indicator.present? - end - - # 获取目录下所有文件,返回一个文件名的数组 type是查看文件的类型image表示图片 - # type [[1, "图片"], [2, "apk/exe"], [3, "txt"], [4, "html"]] - def get_dir_filename path, type, game_id - answer_picture = [] - image = ["png", "jpg", "gif", "jpeg", "bmp", "pic"] - if File.directory? path - Dir.foreach(path) do |file| - if file !="." and file !=".." - extension = file.split(".")[1].try(:downcase) - if image.include?(extension) && type == 1 - answer_picture << file - @type = "image" - elsif extension == "html" && type == 4 - answer_picture << file - @type = "html" - elsif extension == "txt" && type == 3 - answer_picture << file - @contents = "" - f = File.open("#{path}/#{file}", "r") - # ... process the file - f.each_line do |line| - if line.include?("Your score") - game = Game.find(game_id) - max_query_index = game.query_index - 1 - a = line[11, line.length-1].try(:strip) - outputs = game.outputs.where(:query_index => max_query_index) - outputs.update_all(:text_scor => a) if outputs.present? - end - @contents += "#{line}" - end - f.close - @type = "txt" - end - end - end - end - return answer_picture - end - - # 隐藏项目以外的信息 - # return: true 显示,false 不显示 - def hidden_unproject_infos - hidden_info = Setting.find_by_name("hidden_non_project") - (hidden_info && hidden_info.value == "1") ? true : false - end - - # 获取当前用户的fork数量 - def get_fork_from_project forked_from_project_id - Project.find(forked_from_project_id) - end - - # 判断当前用户是否已经fork过当前项目 - # project: current_project - def has_forked_cur_project project - cur_user_projects = Project.where(:user_id => User.current.id) - if cur_user_projects.count == 0 - false - else - has_forked = cur_user_projects.select{|cur_user_project| cur_user_project.forked_from_project_id == project.id} - has_forked.length > 0 ? true : false - end - end - - # 判断当前用户是否已经实训过当前项目 - # project: current_project - def has_exec_cur_shixun shixun - Myshixun.where(:user_id => User.current.id, :shixun_id => shixun.id).count > 0 ? true : false - end - - # 用户必须登录;必须创建了关卡;有实践任务的必须提交了版本库代码 - def allow_shixun_exec shixun - g = Gitlab.client - result = User.current.logged? && shixun.challenges.count > 0 - if shixun.challenges.where(:st => 0).count > 0 - result = result && g.trees(shixun.gpid).count.to_i > 0 - end - result - end - - # 判断当前用户是否可以开始实战 - def link_to_shixun_exec myshixun, shixun, str - is_modify = ShixunModify.where(:myshixun_id => myshixun.try(:id), :shixun_id => shixun.try(:id), :status => 1).first.blank? - if User.current.mail.blank? - link_to str, "javascript:void(0);", :onclick => "notice_box_redirect('#{security_settings_path}', '开启实训,请先绑定邮箱')", :class => "fr shixun-task-btn task-btn-orange mr15", :target => "_blank" - else - if is_modify || myshixun.blank? - link_to str, shixun_exec_shixun_path(shixun), :class => "fr shixun-task-btn task-btn-orange mr15", :target => "_blank" - else - link_to str, "javascript:void(0);", :onclick => "sure_box_redirect('#{myshixun_reset_myshixun_path(myshixun)}', '实训已经更新啦,系统正在为您重置')", :class => "fr shixun-task-btn task-btn-orange mr15" - end - end - end - - # 通过系统外部邮箱查找用户,如果用户不存在则用邮箱替换 - def get_user_by_mail mail - user = User.find_by_mail(mail) - user.nil? ? User.find(2) : user - end - - # 通过登录名查找用户,能查到返回用户姓名,否则返回登录名 - def link_to_user_login login, css_class - user = User.find_by_login(login) - user = user.nil? ? login : user - if user.is_a?(User) - name = user.show_name - link_to name, {:controller=> 'users', :action => 'show', id: user.id}, :class => css_class, :target => "_blank" - else - "#{h(user.to_s)}".html_safe - end - end - - def link_to_user_mail(mail, css_class) - user = User.find_by_mail(mail) - user = user.nil? ? mail : user - if user.is_a?(User) - name = user.show_name - link_to name, {:controller=> 'users', :action => 'show', id: user.id}, :class => css_class, :target => "_blank" - else - "#{h(user.to_s)}".html_safe - end - end - - # 通过系统外部用户名查找用户,如果用户不存在则用邮箱替换 - def get_user_by_login_and login - user = User.find_by_login(login) - (user.nil? || login == "root") ? User.find(2) : user - end - - # 登录名来自外部系统 - # 通过登录名查找用户,如果用户存在则显示用户姓名,否则显示登录名 - def get_user_by_login login - user = User.find_by_login(login) - user.nil? ? login : user.show_name - end - - # 重置user_path,目的是将id转换成用户名 - def user_path(resource, parameters = {}) - if Fixnum === resource - resource = User.find(resource) - end - super - end - - # 重置user_path,目的是将id转换成用户名 - # def shixun_path(resource, parameters = {}) - # if Fixnum === resource - # resource = Shixun.find(resource) - # end - # super - # end - - # 历史数据(老版本库数据)处理完则可以修改该放放 - def get_rep_identifier_by_project project - identifier = Repository.where(:project_id => project.id, :type => "Repository::Gitlab").first.try(:identifier) - result = identifier.nil? ? Repository.where(:project_id => project.id).first.try(:identifier) : identifier - result - end - - # 项目版本库导出Excel功能 - def export_rep_xls(gpid, options = {}) - g = Gitlab.client - cycle = params[:cycle] - rev = params[:rev] - if cycle == "week" - statics = g.rep_stats_week(gpid, :rev => rev) - elsif cycle == "month" - statics = g.rep_stats_month(gpid, :rev => rev) - end - xls_report = StringIO.new - book = Spreadsheet::Workbook.new - sheet1 = book.create_worksheet :name => l(:project_module_repository) - blue = Spreadsheet::Format.new :color => :blue, :weight => :bold, :size => 10 - sheet1.row(0).default_format = blue - sheet1.row(0).concat([l(:rep_branch),l(:rep_author),l(:rep_changeset),l(:rep_code_add),l(:rep_code_delete),l(:rep_code_modified),l(:rep_sode_time),l(:rep_sode_cycle),l(:rep_author_mail)]) - count_row = 1 - statics.each do |static| - user = User.where(:mail => static.email).first - sheet1[count_row,0] = rev - sheet1[count_row,1] = user.nil? ? static.uname : user.show_name - sheet1[count_row,2] = static.commits_num - sheet1[count_row,3] = static.add - sheet1[count_row,4] = static.del - sheet1[count_row,5] = static.changes - sheet1[count_row,6] = Time.now.strftime('%Y-%m-%d %H:%M:%S') - sheet1[count_row,7] = cycle == "week" ? "最近1周" : "最近一月" - sheet1[count_row,8] = static.email - count_row += 1 - end - book.write xls_report - xls_report.string - end - - # 项目issue列表导出Excel功能 - def issue_list_xls issues - xls_report = StringIO.new - book = Spreadsheet::Workbook.new - sheet1 = book.create_worksheet :name => "issues" - blue = Spreadsheet::Format.new :color => :blue, :weight => :bold, :size => 10 - sheet1.row(0).default_format = blue - sheet1.row(0).concat([l(:issue_xls_id),l(:issue_xls_tracker_id),l(:issue_xls_title),l(:issue_xls_description),l(:issue_xls_status),l(:issue_xls_assign),l(:issue_xls_priority),l(:issue_xls_author),l(:issue_xls_created_at),l(:milestone),l(:issue_xls_start),l(:issue_xls_due),l(:issue_xls_ratio)]) - count_row = 1 - issues.each do |issue| - sheet1[count_row,0] = issue.id - sheet1[count_row,1] = issue_tracker_change(issue.tracker_id) - sheet1[count_row,2] = issue.subject - sheet1[count_row,3] = (issue.description.gsub(/<\/?.*?>/,"")).html_safe - sheet1[count_row,4] = issue_status_change(issue.status_id) - sheet1[count_row,5] = issue.assigned_to.try(:show_name) - sheet1[count_row,6] = issue_priority_change(issue.priority_id) - sheet1[count_row,7] = issue.author.show_name - sheet1[count_row,8] = issue.created_on.nil? ? issue.created_on : issue.created_on.strftime('%Y-%m-%d %H:%M:%S') - sheet1[count_row,9] = issue.fixed_version.try(:name) - sheet1[count_row,10] = issue.start_date.nil? ? issue.start_date : issue.start_date.strftime('%Y-%m-%d') - sheet1[count_row,11] = issue.due_date.nil? ? issue.due_date : issue.due_date.strftime('%Y-%m-%d') - sheet1[count_row,12] = issue_ratio_change(issue.done_ratio, issue.status_id) - count_row += 1 - end - book.write xls_report - xls_report.string - end - - # 用户资料是否完善 - def user_data_complete user - user_extension = UserExtensions.where(:user_id => user.id).first - data = true - if user_extension.gender.nil? || user_extension.school_id.nil? || user.lastname.blank? || (user_extension.identity == 3 && user_extension.school_id.nil?) - data = false - end - return data - end - - # 获取用户单位 - # 优先获取高校信息,如果改信息不存在则获取occupation - def get_occupation_from_user user - School.where("id=?",user.user_extensions.school_id).first.try(:name).nil? ? user.user_extensions.try(:occupation) : School.where("id=?",user.user_extensions.school_id).first.try(:name) - end - - def update_visiti_count container - container.update_column(:visits, container.visits + 1) - end - - def if_hidden_subdomain field - domains = field.sub_domains.select{|domain| domain.hide.to_i == 0} - result = domains.length > 0 ? true : false - return result - end - - # 判断某个资源是否可以申请 - def attach_show_allow attach_id - attachment = Attachment.find(attach_id) - case attachment.container_type - when "Project" - User.current.member_of?(attachment.container) ? true : false - when "Course" - User.current.member_of_course?(attachment.container) ? true : false - when "OrgSubfield" - User.current.member_of_org?(attachment.container.organization) ? true : false - when "Principal" - User.current.id == attachment.author_id ? true : false - end - end - - # 判断某个私有资源是否可以发送下载权限 - # 结果为true不能下载,false可以下载 - def private_attachment_allow attachment_id - attach = Attachment.find(attachment_id) - # 条件取否,result结果为true则不能下载 - result = attach.is_public == 0 && attach.author != User.current && !attach.get_apply_resource_status(attach.id, User.current.id) && !attach_show_allow(attach) - end - - # Time 2015-03-24 15:27:29 - # Author lizanle - # Description 从硬盘上删除对应的资源文件 - def delete_kindeditor_assets_from_disk owner_id,owner_type - assets = Kindeditor::Asset.where(["owner_id = ? and owner_type = ?",owner_id,owner_type]) - if !assets.nil? && !assets.blank? - assets.all.each do |asset| - next if asset.nil? - filepath = File.join(Rails.root,"public","files","uploads", - asset[:created_at].to_s.gsub("+0800","").to_datetime.strftime("%Y%m").to_s, - asset[:asset].to_s) - File.delete(filepath) if File.exist?filepath - end - end - end - - def link_to_user_version(version, options = {}) - return '' unless version && version.is_a?(Version) - link_to_if version.visible?, format_version_name(version), { :controller => 'versions', :action => 'show', :id => version }, :class => "linkBlue" - end - - # 判断课程是否为精品课程 - def is_excellent_course course - (course.is_excellent? or course.excellent_option?) ? true : false - end - - # 判断课程对成员是否可见 - def visible_course?(course) - (course.is_delete? or (!course.is_public? && !User.current.member_of_course?(course))) ? false : true - end - - # 获取项目/课程总分 - # 发布缺陷 4分 回复缺陷 1分 提交一次 4分 讨论帖子 2分 回复帖子 1分 发布新闻 1分 - def static_project_score obj - score = obj.issue_num * 4 + obj.issue_journal_num + (obj.changeset_num||0) * 4 + obj.board_num * 2 + obj.board_message_num + obj.attach_num * 5 - end - - # 获取组织成员中文名字 - def get_org_member_role_name member - unless member.roles[0].nil? - case member.roles[0].name - when 'orgManager' - '管理人员' - when 'orgMember' - '组织成员' - end - end - end - - # 判断组织左侧展开或者隐藏 - def is_hide_org_left obj - if obj.nil? - return true - else - if obj.hide == 0 - return true - else - return false - end - end - end - - # Time 2015-03-24 16:38:05 - # Author lizanle - # Description after save后需要进行资源记录的更新 - # owner_type = 1 对应的是 memo - # owner_type = 2 对应的是forum - # owner_type = 3 对应的是message - # owner_type = 4 对应的是news - # owner_type = 5 对应的是comment - def update_kindeditor_assets_owner ids,owner_id,owner_type - ids.each do |id| - asset = Kindeditor::Asset.find(id.to_i) - asset.owner_id = owner_id - asset.owner_type = owner_type - asset.save - end - end - - # 更新课程活跃度得分 - def course_member_score(course_id,user_id,type) - course_contributor_score = CourseContributorScore.where("course_id =? and user_id =?", course_id, user_id).first - case type - when "HomeworkCommon" - if course_contributor_score.nil? - CourseContributorScore.create(:course_id => course_id, :user_id => user_id, :homework_journal_num => 1) - else - score = course_contributor_score.homework_journal_num.to_i + 1 - course_contributor_score.update_column(:homework_journal_num, score) - end - # 课程留言 - when "Course" - if course_contributor_score.nil? - CourseContributorScore.create(:course_id => course_id, :user_id => user_id, :journal_num => 1) - else - score = course_contributor_score.journal_num.to_i + 1 - course_contributor_score.update_column(:journal_num, score) - end - when "Message" - if course_contributor_score.nil? - CourseContributorScore.create(:course_id => course_id, :user_id => user_id, :message_num => 1) - else - score = course_contributor_score.message_num.to_i + 1 - course_contributor_score.update_column(:message_num, score) - end - when "MessageReply" - if course_contributor_score.nil? - CourseContributorScore.create(:course_id => course_id, :user_id => user_id, :message_reply_num => 1) - else - score = course_contributor_score.message_reply_num.to_i + 1 - course_contributor_score.update_column(:message_reply_num, score) - end - when "NewReply" - if course_contributor_score.nil? - CourseContributorScore.create(:course_id => course_id, :user_id => user_id, :news_reply_num => 1) - else - score = course_contributor_score.news_reply_num.to_i + 1 - course_contributor_score.update_column(:news_reply_num, score) - end - when "News" - if course_contributor_score.nil? - CourseContributorScore.create(:course_id => course_id, :user_id => user_id, :news_num => 1) - else - score = course_contributor_score.news_num.to_i + 1 - course_contributor_score.update_column(:news_num, score) - end - when "Attachment" - if course_contributor_score.nil? - CourseContributorScore.create(:course_id => course_id, :user_id => user_id, :resource_num => 1) - else - score = course_contributor_score.resource_num.to_i + 1 - course_contributor_score.update_column(:resource_num, score) - end - end - end - - # 删除某条记录相应减少课程统计数 - def down_course_score_num (course_id,user_id,type) - course_contributor_score = CourseContributorScore.where("course_id =? and user_id =?", course_id, user_id).first - case type - when "HomeworkCommon" - unless course_contributor_score.nil? - score = course_contributor_score.homework_journal_num.to_i - 1 - course_contributor_score.update_column(:homework_journal_num, score < 0 ? 0 : score) - end - # 课程留言 - when "Course" - unless course_contributor_score.nil? - score = course_contributor_score.journal_num.to_i - 1 - course_contributor_score.update_column(:journal_num, score < 0 ? 0 : score) - end - when "Message" - unless course_contributor_score.nil? - score = course_contributor_score.message_num.to_i - 1 - course_contributor_score.update_column(:message_num, score < 0 ? 0 : score) - end - when "MessageReply" - unless course_contributor_score.nil? - score = course_contributor_score.message_reply_num.to_i - 1 - course_contributor_score.update_column(:message_reply_num, score < 0 ? 0 : score) - end - when "NewReply" - unless course_contributor_score.nil? - score = course_contributor_score.news_reply_num.to_i - 1 - course_contributor_score.update_column(:news_reply_num, score < 0 ? 0 : score) - end - when "News" - unless course_contributor_score.nil? - score = course_contributor_score.news_num.to_i - 1 - course_contributor_score.update_column(:news_num, score < 0 ? 0 : score) - end - when "Attachment" - unless course_contributor_score.nil? - score = course_contributor_score.resource_num.to_i - 1 - course_contributor_score.update_column(:resource_num, score < 0 ? 0 : score) - end - end - end - - # Added by young - # Define the course menu's link class - # 不是数组的转化成数组,然后判断当前menu_item是否在给定的列表 - # REVIEW: 目测menu的机制,貌似不是很需要转换,再说 - def link_class(label) - labels = label.is_a?(Array) ? label : ([] << label) - #a = current_menu_item - labels.include?(current_menu_item) ? 'selected' : '' - - end - #Ended by young - # Return true if user is authorized for controller/action, otherwise false - def authorize_for(controller, action) - User.current.allowed_to?({:controller => controller, :action => action}, @project) - end - - # add by nwb - def authorize_for_course(controller, action) - User.current.allowed_to?({:controller => controller, :action => action}, @course) - end - - def authorize_for_contest(controller, action) - User.current.allowed_to?({:controller => controller, :action => action}, @contest) - end - - # Display a link if user is authorized - # - # @param [String] name Anchor text (passed to link_to) - # @param [Hash] options Hash params. This will checked by authorize_for to see if the user is authorized - # @param [optional, Hash] html_options Options passed to link_to - # @param [optional, Hash] parameters_for_method_reference Extra parameters for link_to - def link_to_if_authorized(name, options = {}, html_options = nil, *parameters_for_method_reference) - link_to(name, options, html_options, *parameters_for_method_reference) if authorize_for(options[:controller] || params[:controller], options[:action]) - end - - def link_to_if_authorized_course(name, options = {}, html_options = nil, *parameters_for_method_reference) - link_to(name, options, html_options, *parameters_for_method_reference) if authorize_for_course(options[:controller] || params[:controller], options[:action]) - end - - def link_to_if_authorized_contest(name, options = {}, html_options = nil, *parameters_for_method_reference) - link_to(name, options, html_options, *parameters_for_method_reference) if authorize_for_contest(options[:controller] || params[:controller], options[:action]) - end - # Displays a link to user's account page if active - def link_to_user(user, canShowRealName = false, options={}) - if user.is_a?(User) - if canShowRealName - name = h(user.realname(options[:format])) - else - name = h(user.name(options[:format])) - end - - #if user.active? || (User.current.admin? && user.logged?) - # link_to name, {:controller=> 'users', :action => 'show', id: user.id, host: Setting.host_user}, :class => user.css_classes - #else - # name - #end - link_to name, {:controller=> 'users', :action => 'show', id: user.id, host: Setting.host_user}, :class => user.css_classes - else - h(user.to_s) - end - end - - def link_to_isuue_user(user, options={}) - if user.is_a?(User) - if options[:format] - name = h(user.name(options[:format])) - else - name = h(user.show_name) - end - link_to name, {:controller=> 'users', :action => 'show', id: user.id, host: Setting.host_user}, :class => "pro_info_p" - else - h(user.to_s) - end - end - - def link_to_settings_user(user, options={}) - if user.is_a?(User) - name = h(user.name(options[:format])) - link_to name, {:controller=> 'users', :action => 'show', id: user.id, host: Setting.host_user}, :class => "w90 c_orange fl" - else - h(user.to_s) - end - end - - #重载上面方法,增加样式显示 - def link_to_user_header user,canShowRealName=false,options={} - if user.is_a?(User) - if canShowRealName - name = user.show_name - name = user.login if name == "" - else - name = user.login - end - link_to name, {:controller=> 'users', :action => 'show', id: user.id, host: Setting.host_user}, :class => options[:class] - else - h(user.to_s) - end - end - - # Displays a link to +issue+ with its subject. - # Examples: - # - # link_to_issue(issue) # => Defect #6: This is the subject - # link_to_issue(issue, :truncate => 6) # => Defect #6: This i... - # link_to_issue(issue, :subject => false) # => Defect #6 - # link_to_issue(issue, :project => true) # => Foo - Defect #6 - # link_to_issue(issue, :subject => false, :tracker => false) # => #6 - # - def link_to_issue(issue, options={}) - title = nil - subject = nil - text = options[:tracker] == false ? "##{issue.id}" : "#{issue.tracker} ##{issue.id}" - if options[:subject] == false - title = truncate(issue.subject, :length => 60) - else - subject = issue.subject - if options[:truncate] - subject = truncate(subject, :length => options[:truncate]) - end - end - s = link_to text, issue_path(issue), :class => issue.css_classes, :title => title - s << h(": #{subject}") if subject - s = h("#{issue.project} - ") + s if options[:project] - s - end - - def link_to_issue_version(issue, options={}) - title = nil - subject = nil - text = options[:tracker] == false ? "##{issue.id}" : "#{issue.tracker} ##{issue.id}" - if options[:subject] == false - title = truncate(issue.subject, :length => 60) - else - subject = issue.subject - if options[:truncate] - subject = truncate(subject, :length => 60) - end - end - # status_id:3、已解决 5、已关闭 - if issue.status_id == 3 - s = link_to text, issue_path(issue), :class => "text_line_s fl", :title => title - elsif issue.status_id == 5 - s = link_to text, issue_path(issue), :class => "text_line_s del_line fl", :title => title - else - s = link_to text, issue_path(issue), :class => "c_blue fl", :title => title - end - s << h("".html_safe) if subject - s = h("#{issue.project} - ") + s if options[:project] - s - end - - # Generates a link to an attachment. - # Options: - # * :text - Link text (default to attachment filename) - # * :download - Force download (default: false) - def link_to_short_attachment(attachment, options={}) - length = options[:length] ? options[:length]:23 - text = h(truncate(options.delete(:text) || attachment.filename, length: length, omission: '...')) - route_method = options.delete(:download) ? :download_named_attachment_url_without_domain : :named_attachment_url_without_domain - html_options = options.slice!(:only_path) - url = send(route_method, attachment, attachment.filename, options) - link_to text, url, html_options - end - - # Generates a link to an attachment. - # Options: - # * :text - Link text (default to attachment filename) - # * :download - Force download (default: false) - def link_to_attachment(attachment, options={}) - token = options[:token] if options[:token] - text = options.delete(:text) || attachment.filename - route_method = options.delete(:download) ? :download_named_attachment_path : :named_attachment_path - html_options = options.slice!(:only_path) - url = send(route_method, attachment, attachment.filename, options) - url << "?token=#{token}" unless token.nil? - link_to text, url, html_options - end - - def link_to_attachment_img(attachment, options={}) - text = options.delete(:text) || attachment.filename - route_method = options.delete(:download) ? :download_named_attachment_path : :named_attachment_path - html_options = options.slice!(:only_path) - url = send(route_method, attachment, attachment.filename, options) - image_tag url, html_options - end - - # Generates a link to a SCM revision - # Options: - # * :text - Link text (default to the formatted revision) - def link_to_revision(revision, repository, options={}) - if repository.is_a?(Project) - repository = repository.repository - end - text = options.delete(:text) || format_revision(revision) - rev = revision.respond_to?(:identifier) ? revision.identifier : revision - link_to( - h(text), - {:controller => 'repositories', :action => 'revision', :id => repository.project, :repository_id => repository.identifier_param, :rev => rev}, - :title => l(:label_revision_id, format_revision(revision)) - ) - end - - # Generates a link to a message - def link_to_message(message, options={}, html_options = nil) - link_to( - truncate(message.subject, :length => 60), - board_message_path(message.board_id, message.parent_id || message.id, { - :r => (message.parent_id && message.id), - :anchor => (message.parent_id ? "message-#{message.id}" : nil) - }.merge(options)), - html_options - ) - end - - # Generates a link to a project if active - # Examples: - # - # link_to_project(project) # => link to the specified project overview - # link_to_project(project, {:only_path => false}, :class => "project") # => 3rd arg adds html options - # link_to_project(project, {}, :class => "project") # => html options with default url (project overview) - # - def link_to_project(project, options={}, html_options = nil) - if project.archived? - h(project.name) - elsif options.key?(:action) - ActiveSupport::Deprecation.warn "#link_to_project with :action option is deprecated and will be removed in Redmine 3.0." - url = {:controller => 'projects', :action => 'show', :id => project}.merge(options) - link_to project.name, url, html_options - else - link_to project.name, project_path(project, options), html_options - end - end - - def link_to_course(course, options={}, html_options = nil) - if course.archived? - h(course.name) - elsif options.key?(:action) - ActiveSupport::Deprecation.warn "#link_to_course with :action option is deprecated and will be removed in Redmine 3.0." - url = {:controller => 'courses', :action => 'show', :id => project}.merge(options) - link_to course.name, url, html_options - else - link_to course.name, course_path(course, options), html_options - end - end - - # Generates a link to a project settings if active - def link_to_project_settings(project, options={}, html_options=nil) - if project.active? - link_to project.name, settings_project_path(project, options), html_options - elsif project.archived? - h(project.name) - else - link_to project.name, project_path(project, options), html_options - end - end - - def wiki_page_path(page, options={}) - url_for({:controller => 'wiki', :action => 'show', :project_id => page.project, :id => page.title}.merge(options)) - end - - def thumbnail_tag(attachment) - link_to image_tag(thumbnail_path(attachment)), - named_attachment_path(attachment, attachment.filename), - :title => attachment.filename - end - - def thumbnail_issue_tag(attachment) - imagesize = attachment.thumbnail(:size => "200*200") - imagepath = named_attachment_path(attachment, attachment.filename) - if imagesize - link_to image_tag(thumbnail_path(attachment), height: '73', width: '100', class: 'issue_attachment_picture'), - imagepath, - :title => attachment.filename - - else - link_to image_tag(imagepath , height: '73', width: '100', class: 'issue_attachment_picture'), - imagepath, - :title => attachment.filename - end - end - - def thumbnail_challenge_tag(attachment) - imagepath = named_attachment_path(attachment, attachment.filename) - image_tag(imagepath) - end - - # 图片缩略图链接 - def thumbnail_small_tag(attachment) - imagesize = attachment.thumbnail(:size => "200*200") - imagepath = named_attachment_path(attachment, attachment.filename) - if imagesize - link_to image_tag(imagesize), - imagepath, - :title => attachment.filename - else - link_to image_tag(imagepath , height: '200', width: '250'), - imagepath, - :title => attachment.filename - end - end - - def toggle_link(name, id, options={}) - onclick = "$('##{id}').slideToggle(); " - onclick << (options[:focus] ? "$('##{options[:focus]}').focus(); " : "this.blur(); ") - onclick << "return false;" - link_to(name, "javascript:void(0)", :onclick => onclick,:class => options[:class]) - end - - def image_to_function(name, function, html_options = {}) - html_options.symbolize_keys! - tag(:input, html_options.merge({ - :type => "image", :src => image_path(name), - :onclick => (html_options[:onclick] ? "#{html_options[:onclick]}; " : "") + "#{function};" - })) - end - - def format_activity_title(text) - h(truncate_single_line(text, :length => 100)) - end - - def format_activity_day(date) - date == User.current.today ? l(:label_today).titleize : format_date(date) - end - - def format_activity_description(text) - h(truncate(text.to_s, :length => 120).gsub(%r{[\r\n]*<(pre|code)>.*$}m, '...')).gsub(/[\r\n]+/, "
").html_safe - #h(truncate(text.to_s, :length => 120).gsub(/<\/?.*?>/,"")).html_safe - end - - def format_version_name(version) - if version.project == @project - h(truncate(version.name,:length=>20)) - else - h("#{version.project} - #{truncate(version.name,:length=>20)}") - end - end - - def due_date_distance_in_words(date) - if date - l((date < Date.today ? :label_roadmap_overdue : :label_roadmap_due_in), distance_of_date_in_words(Date.today, date)) - end - end - - # Renders a tree of projects as a nested set of unordered lists - # The given collection may be a subset of the whole project tree - # (eg. some intermediate nodes are private and can not be seen) - #Modified by nie. - def render_project_nested_lists(projects) - s = '' - if projects.any? - ancestors = [] - original_project = @project - #modified by nie - projects.each do |project| - # set the project environment to please macros. - @project = project - if (ancestors.empty? || project.is_descendant_of?(ancestors.last)) -# s << "\n" * ancestors.size) - @project = original_project - end - s.html_safe - end - - def render_course_nested_lists(courses) - s = '' - if courses.any? - ancestors = [] - original_course = @course - #modified by nie - courses.each do |course| - # set the project environment to please macros. - @course = course - if (ancestors.empty? )#|| course.is_descendant_of?(ancestors.last)) - s << "\n" - end - end - classes = (ancestors.empty? ? 'root' : 'child') - s << "
  • " - - s << (render :partial => 'courses/course', :locals => {:course => course}).to_s - s << "
    \n" - ancestors << course - end - s << ("
  • \n" * ancestors.size) - @course = original_course - end - s.html_safe - end - - - #added by young - def render_project_nested_lists_new(projects) - s = '' - if projects.any? - ancestors = [] - original_project = @project - projects.sort_by(&:lft).each do |project| - # set the project environment to please macros. - @project = project - if (ancestors.empty? || project.is_descendant_of?(ancestors.last)) -# s << "\n" * ancestors.size) - @project = original_project - end - s.html_safe - end - #end - def render_page_hierarchy(pages, node=nil, options={}) - content = '' - if pages[node] - content << "\n" - end - content.html_safe - end - - # Renders flash messages - def render_flash_messages - s = '' - flash.each do |k,v| - s << content_tag('div', v.html_safe, :class => "alert alert-orange mb15 mt15", :id => "flash_#{k}") - end - s.html_safe - end - - # Renders tabs and their content - def render_tabs(tabs) - if tabs.any? - render :partial => 'common/tabs', :locals => {:tabs => tabs} - else - content_tag 'p', l(:label_no_data), :class => "nodata" - end - end - - def render_project_settings_tabs(tabs) - if tabs.any? - render :partial => 'common/project_tab', :locals => {:tabs => tabs} - else - content_tag 'p', l(:label_no_data), :class => "nodata" - end - end - - # Renders the project quick-jump box - def render_project_jump_box - return unless User.current.logged? - projects = User.current.memberships.collect(&:project).compact.select(&:active?).uniq - if projects.any? - options = - ("" + - '').html_safe - - options << project_tree_options_for_select(projects, :selected => @project) do |p| - { :value => project_path(:id => p, :jump => current_menu_item) } - end - - select_tag('project_quick_jump_box', options, :onchange => 'if (this.value != \'\') { window.location = this.value; }') - end - end - - def project_tree_options_for_select(projects, options = {}) - s = '' - project_tree(projects) do |project, level| - name_prefix = (level > 0 ? ' ' * 2 * level + '» ' : '').html_safe - tag_options = {:value => project.id} - tag_options[:title] = project.name - if project == options[:selected] || (options[:selected].respond_to?(:include?) && options[:selected].include?(project)) - tag_options[:selected] = 'selected' - else - tag_options[:selected] = nil - end - tag_options.merge!(yield(project)) if block_given? - s << content_tag('option', name_prefix + h(project), tag_options) - end - s.html_safe - end - - # Yields the given block for each project with its level in the tree - # - # Wrapper for Project#project_tree - def project_tree(projects, &block) - Project.project_tree(projects, &block) - end - - # 项目版本库可见权限判断: - # modules中设置可见 - # 版本库存在 - # 版本库设置了隐藏则仅仅项目成员或超级管理员可见(hidden_repo:1 隐藏版本库) - # return -> true 可见 - def visible_repository?(project) - repository = Repository.where(:project_id => project.id, :type => "Repository::Gitlab").first - if project.enabled_modules.where("name = 'repository'").empty? || repository.nil? - result = false - else - result = (project.hidden_repo && !User.current.admin && !User.current.member_of?(project)) ? false : true - end - end - - # 判断成员在项目中的角色 member_role == Reporter/Manager/Developer 报告人员/管理人员/报告人员; - def role_of_members_in_project(project, user_id) - member = Member.where(:project_id => project, :user_id => user_id) - unless member.blank? - member_role = member.first.roles[0].to_s - end - return member_role - end - - # 判断用户是不是项目成员 - def is_project_member?(user_id, project_id) - @result = false - mem = Member.where("user_id = ? and project_id = ?",user_id, project_id) - unless mem.blank? - @result = true - end - return @result - end - - # 更新各类消息为已读 - def update_messsages_to_viewed(message_type, forge_message_id) - if(message_type == "CourseMessage") - query = CourseMessage.where(:course_message_type => ["JoinCourse", "RemoveFromCourse"], - :user_id => User.current, - :course_id => forge_message_id, - :viewed => false) - elsif(message_type == "ForgeMessage") - query = ForgeMessage.where(:forge_message_type => ["ProjectInvite", "JoinProject", "RemoveFromProject"], - :user_id => User.current, - :project_id => forge_message_id, - :viewed => false) - elsif(message_type == "ContestMessage") - query = ContestMessage.where(:contest_message_type => ["ContestRequestDealResult", "JoinContest", "RemoveFromContest"], - :user_id => User.current, - :contest_id => forge_message_id, - :viewed => false) - elsif(message_type == "BlogMessage") - query = BlogMessage.where(:blog_message_type => "BlogComment", - :user_id => User.current, - :blog_id => forge_message_id, - :viewed => false) - end - query.update_all(:viewed => true) unless query.blank? - end - - def show_attachment_tip container_id, container_type - atts = Attachment.where(:container_id => container_id, :container_type => container_type, :is_public => 0) - atts.count > 0 ? true :false - end - - # 必须是项目成员,项目必须提交过代码 - def allow_pull_request project - return 0 if project.gpid.nil? - g = Gitlab.client - # 之所以这样比较是为了解决gitlab本身的bug - commit_count = g.project(project.gpid).try(:commit_count).to_i - git_commit_cout = g.user_static(project.gpid, :rev => "master").count - count = commit_count > git_commit_cout ? commit_count : git_commit_cout - count - end - - # 判断版本库是否初始为gitlab - def rep_is_gitlab?(project) - rep = project.repositories.where("type =?", "Repository::Gitlab") - return rep.blank? ? true :false - end - - # 获取Gitlab版本库提交总数 - def commit_count(project, branch) - g = Gitlab.client - #add by hx - if g.commits(project.gpid, :ref_name => @rev , :page=>200).count > 0 - count = 4020 - elsif g.commits(project.gpid , :page=>25, :ref_name => branch).count==0 - count = count_commits(project.gpid , 0 , 25) - elsif g.commits(project.gpid , :page=>50, :ref_name => branch).count ==0 - count = count_commits(project.gpid , 25 , 50)+ 25 * 20 - elsif g.commits(project.gpid , :page=>75, :ref_name => branch).count ==0 - count = count_commits(project.gpid , 50 , 75)+ 50 * 20 - elsif g.commits(project.gpid , :page=>100, :ref_name => branch).count== 0 - count = count_commits(project.gpid , 75 , 100) + 75 * 20 - elsif g.commits(project.gpid , :page=>125, :ref_name => branch).count==0 - count = count_commits(project.gpid , 100 , 125) + 100 * 20 - elsif g.commits(project.gpid , :page=>150, :ref_name => branch).count==0 - count = count_commits(project.gpid , 125 , 150) + 125 * 20 - else - count = count_commits(project.gpid , 150 ,200) + 150 * 20 - end - end - - #add by hx - def count_commits(project_id , left , right) - count = 0 - (left..right).each do |page| - if $g.commits(project_id,:page => page).count == 0 - break - else - count = count + $g.commits(project_id, :ref_name => @rev, :page => page).count - end - end - return count - end - - # 获取单一gitlab项目 - def gitlab_repository(project) - rep = Repository.where("project_id =? and type =?", project.id,"Repository::Gitlab" ).first - end - - # 获取单一gitlab项目 - def shixun_repository(shixun) - rep = Repository.where(:shixun_id => shixun, :type => "Repository::Gitlab" ).first - end - - # 判断当前用户是否为项目管理员 - def is_project_manager?(user_id, project_id) - @result = false - mem = Member.where("user_id = ? and project_id = ?",user_id, project_id) - unless mem.blank? - @result = mem.first.roles.to_s.include?("Manager") ? true : false - end - return @result - end - - # 公开项目资源可以引用,admin和管理员和资源上传者拥有设置公开私有权限 - def authority_pubilic_for_files(project, file) - @result = false - if (is_project_manager?(User.current.id, @project.id) && User.current.allowed_to?(:manage_files, project)) || file.author_id == User.current.id || User.current.admin && - project_contains_attachment?(project,file) && file.container_id == project.id && file.container_type == "Project" - @result = true - end - return @result - end - - def principals_check_box_tags(name, principals) - s = '' - principals.each do |principal| - s << "\n" - end - s.html_safe - end - - # 判断模块是否可见 - def project_modules_allow project - @project.enabled_modules.where("name = 'issue_tracking'").empty? - end - - # 计算Pull Request的请求数目 - def pull_request_count project - g = Gitlab.client - g.merge_requests(project.gpid).count - end - - #项目成员列表复选框生成 - def project_member_check_box_tags_ex name, principals - s = '' - principals.each do |principal| - s << "
  • #{ check_box_tag name, principal.id, false, :id => nil} #{h link_to principal.userInfo, user_url_in_org( principal), :target => "_blank"}
  • \n" - end - s.html_safe - end - - def render_shixun_departments - s = '' - if params[:q] && params[:q].lstrip.rstrip != "" - scope = School.where("name like ?", "%#{params[:q]}%") - else - scope = [] - end - scope.each do |name| - s << "
  • #{name}
  • \n" - end - s.html_safe - end - - # REDO:发现搜索列表的功能还是挺多,以前单独写的最好都调用这个方法 - # scope:[] - def render_mirror_name scope = nil - s = '' - if scope.present? - scope.each do |name| - s << "
  • #{name}
  • \n" - end - end - s.html_safe - end - - #缺陷追踪者列表复选框生成 - def issue_watcher_check_box_tags_ex name, principals - s = '' - principals.each do |principal| - s << "
  • #{ check_box_tag name, principal.id, false, :id => nil } #{h link_to principal.userInfo, user_path( principal.id)}
  • \n" - end - s.html_safe - end - - - - #扩展的checkbox生成 - def principals_check_box_tags_ex(name, principals) - s = '' - principals.each do |principal| - s << "\n" - end - s.html_safe - end - - # li标签checkbos扩展 - def principals_check_box_tags_li(name, principals) - s = '' - principals.each do |principal| - s << "
  • #{ check_box_tag name, principal.id, false, :id => nil } #{h link_to principal.userInfo, user_path( principal.id) }
  • \n" - end - s.html_safe - end - - #扩展的checkbox生成 - def principals_radio_box_tags_ex(name, principals) - s = '' - principals.each do |principal| - s << "\n" - end - s.html_safe - end - - - # Returns a string for users/groups option tags - def principals_options_for_select(collection, selected=nil) - s = '' - if collection.include?(User.current) - s << content_tag('option', "<< #{l(:label_me)} >>", :value => User.current.id) - end - groups = '' - collection.sort.each do |element| - selected_attribute = ' selected="selected"' if option_value_selected?(element, selected) - (element.is_a?(Group) ? groups : s) << %() - end - unless groups.empty? - s << %(#{groups}) - end - s.html_safe - end - - def assigned_options_for_select(collection, selected=nil) - conv = Iconv.new("GBK", "utf-8") - s = '' - s << content_tag('option', "#{l(:label_assiged_tip)}", :value => 0) - if collection.include?(User.current) - s << content_tag('option', "<< #{l(:label_me)} >>", :value => User.current.id) - end - groups = '' - collection.sort{|x, y| conv.iconv(x.lastname) <=> conv.iconv(y.lastname)}.each do |element| - selected_attribute = ' selected="selected"' if option_value_selected?(element, selected) - (element.is_a?(Group) ? groups : s) << %() - end - unless groups.empty? - s << %(#{groups}) - end - s.html_safe - end - - - # Options for the new membership projects combo-box - def options_for_membership_project_select(principal, projects) - options = content_tag('option', "--- #{l(:actionview_instancetag_blank_option)} ---") - options << project_tree_options_for_select(projects) do |p| - {:disabled => principal.projects.to_a.include?(p)} - end - options - end - - # Truncates and returns the string as a single line - def truncate_single_line(string, *args) - truncate(string.to_s, *args).gsub(%r{[\r\n]+}m, ' ') - end - - # Truncates at line break after 250 characters or options[:length] - def truncate_lines(string, options={}) - length = options[:length] || 250 - if string.to_s =~ /\A(.{#{length}}.*?)$/m - "#{$1}..." - else - string - end - end - - def anchor(text) - text.to_s.gsub(' ', '_') - end - - def html_hours(text) - text.gsub(%r{(\d+)\.(\d+)}, '\1.\2').html_safe - end - - def authoring(created, author, options={}) - l(options[:label] || :label_added_time_by, :author => link_to_user(author), :age => time_tag(created)).html_safe - end - - def added_time(created) - l(:label_added_time, :age => time_tag(created)).html_safe - end - - def user_url_and_time(user_name, user_url, created) - unless user_name.nil? || user_name == '' - l(:label_added_time_by, :author => link_to(user_name, user_url), :age => time_tag(created)).html_safe - else - l(:label_added_time, :age => time_tag(created)).html_safe - end - end - - #huang - def betweentime(enddate) - ss=(DateTime.parse("#{enddate.to_date}")-DateTime.parse("#{DateTime.now.to_date}")).to_i - return ss - end - - def time_tag(time, *args) - options = args.extract_options! - text = distance_of_time_in_words(Time.now, time) - if @project - content_tag('acronym', text, options.reverse_merge(:title => format_time(time))) - # link_to(text, {:controller => 'activities', :action => 'index', :id => @project, :from => User.current.time_to_date(time)},options.reverse_merge(:title => format_time(time))) - else - content_tag('acronym', text, options.reverse_merge(:title => format_time(time))) - end - end - - def syntax_highlight_lines(name, content) - lines = [] - syntax_highlight(name, content).each_line { |line| lines << line } - lines - end - - def syntax_highlight(name, content) - Redmine::SyntaxHighlighting.highlight_by_filename(content, name) - end - - def to_path_param(path) - str = path.to_s.split(%r{[/\\]}).select{|p| !p.blank?}.join("/") - str.blank? ? nil : str - end - - def reorder_links(name, url, method = :post) - link_to(image_tag('2uparrow.png', :alt => l(:label_sort_highest)), - url.merge({"#{name}[move_to]" => 'highest'}), - :method => method, :title => l(:label_sort_highest)) + - link_to(image_tag('1uparrow.png', :alt => l(:label_sort_higher)), - url.merge({"#{name}[move_to]" => 'higher'}), - :method => method, :title => l(:label_sort_higher)) + - link_to(image_tag('1downarrow.png', :alt => l(:label_sort_lower)), - url.merge({"#{name}[move_to]" => 'lower'}), - :method => method, :title => l(:label_sort_lower)) + - link_to(image_tag('2downarrow.png', :alt => l(:label_sort_lowest)), - url.merge({"#{name}[move_to]" => 'lowest'}), - :method => method, :title => l(:label_sort_lowest)) - end - - def breadcrumb(*args) - elements = args.flatten - elements.any? ? content_tag('p', (args.join(" \xc2\xbb ") + " \xc2\xbb ").html_safe, :class => 'wiki_con_tit"') : nil - end - - def other_formats_links(&block) - concat('

    '.html_safe + l(:label_export_to)) - yield Redmine::Views::OtherFormatsBuilder.new(self) - concat('

    '.html_safe) - end - - def page_header_title - if @project.nil? || @project.new_record? - h(Setting.app_title) - else - b = [] - ancestors = (@project.root? ? [] : @project.ancestors.visible.all) - if ancestors.any? - root = ancestors.shift - b << link_to_project(root, {:jump => current_menu_item}, :class => 'root') - if ancestors.size > 2 - b << "\xe2\x80\xa6" - ancestors = ancestors[-2, 2] - end - b += ancestors.collect {|p| link_to_project(p, {:jump => current_menu_item}, :class => 'ancestor') } - end - b << h(@project) - b.join(" \xc2\xbb ").html_safe - end - end - - def html_title(*args) - #點擊項目版本庫 多觸發一次 字符串為"/" - #暫時解決方法 直接判斷 - if(args == ["/"]) - args = [] - end - # first_page = FirstPage.find_by_page_type('project') - if args.empty? - title = @html_title || [] - if @project - title << (@project.name.present? ? @project.name : "项目") - elsif params[:controller] == "projects" - title << "项目" - elsif @welcome - title << "创新源于实践" - elsif @course - title << (@course.name.nil? ? "课堂" : @course.name) - elsif params[:controller] == "homework_bank" || params[:controller] == "question_banks" || params[:controller] == "exercise_bank" - title << ("题库") - elsif params[:controller] == "managements" - title << ("后台管理") - elsif params[:controller] == "colleges" && params[:action] == "statistics" - title << ("#{@school.name}") - elsif params[:controller] == "account" && params[:action] == "help" - if params[:index] - case params[:index] - when "1" - title << ("关于我们") - when "2" - title << ("联系我们") - when "3" - title << ("合作伙伴") - when "4" - title << ("服务协议") - when "5" - title << ("帮助中心") - when "6" - title << ("意见反馈") - end - else - title << ("关于我们") - end - elsif params[:controller] == "courses" && params[:action] == "index" - title << ("翻转课堂") - elsif params[:controller] == "competitions" && params[:action] == "index" - title << ("竞赛") - elsif @competition - title << (@competition.name.nil? ? "竞赛" : @competition.name) - elsif @contest - title << (@contest.name.nil? ? "创新源于实践" : @contest.name) - elsif @shixun - title << (@shixun.name.nil? ? "开发社区" : @shixun.name) - elsif @my_shixun - title << ("我的实训") - elsif params[:controller] == "shixuns" && params[:action] == "index" - title << ("开发社区") - elsif @subject - title << (@subject.name.nil? ? "实训课程" : @subject.name) - elsif params[:controller] == "subjects" && params[:action] == "index" - title << ("实训课程") - elsif @organization - title << (@organization.name.nil? ? "创新源于实践" : @organization.name) - elsif @forum || params[:controller] == "forums" - title << "讨论区" - elsif @my_syllabuses - title << "我的课堂" - elsif params[:controller] == 'ecs' - title << '专业列表' - elsif params[:controller] == 'ec_major_schools' - name = EcMajorSchool.find(params[:id]).name - title << name - elsif params[:controller] == 'ec_years' - if params[:action] == 'training_objectives' - title << '培养目标' - elsif params[:action] == 'graduation_requirement' - title << '毕业要求' - elsif params[:action] == 'requirement_vs_objective' - title << '毕业要求 vs 培养目标' - elsif params[:action] == 'requirement_vs_standard' - title << '毕业要求 vs 通用标准' - elsif params[:action] == 'ec_course_setting' || params[:action] == 'completion_calculation' - title << '课程体系' - else - title << '工程认证' - end - elsif params[:controller] == 'ec_courses' - if params[:action] == 'ec_course_support_setting' - title << '课程体系 vs 毕业要求' - end - elsif @user - if !@project_community.blank? || !@user_projectlist.blank? - title << "项目" - elsif !@course_community.blank? || !@user_courselist.blank? - title << "课堂" - elsif !@contest_community.blank? - title << @contest_community - elsif !@manage_issues.blank? - title << @manage_issues - elsif !@receive_issues.blank? - title << @receive_issues - elsif !@manage_homeworks.blank? - title << @manage_homeworks - elsif !@receive_homeworks.blank? - title << @receive_homeworks - else - title << @user.show_name - end - elsif @syllabus - title << (@syllabus.title.nil? ? "课堂" : @syllabus.title) - else - title << (User.current.id == 2 ? "未登录" : User.current.show_name) - end - # if first_page.nil? || first_page.web_title.nil? - # title << Setting.app_title unless Setting.app_title == title.last - # else - # title << first_page.web_title unless first_page.web_title == title.last - # end - title.select {|t| !t.blank? }.join(' - ') - else - @html_title ||= [] - @html_title += args - end - end - - # Returns the theme, controller name, and action as css classes for the - # HTML body. - def body_css_classes - css = [] - if theme = Redmine::Themes.theme(Setting.ui_theme) - css << 'theme-' + theme.name - end - - css << 'controller-' + controller_name - css << 'action-' + action_name - css.join(' ') - end - - def accesskey(s) - @used_accesskeys ||= [] - key = Redmine::AccessKeys.key_for(s) - return nil if @used_accesskeys.include?(key) - @used_accesskeys << key - key - end - - # Formats text according to system settings. - # 2 ways to call this method: - # * with a String: textilizable(text, options) - # * with an object and one of its attribute: textilizable(issue, :description, options) - def textilizable(*args) - options = args.last.is_a?(Hash) ? args.pop : {} - case args.size - when 1 - obj = options[:object] - text = args.shift - when 2 - obj = args.shift - attr = args.shift - text = obj.send(attr).to_s - else - raise ArgumentError, 'invalid arguments to textilizable' - end - return '' if text.blank? - project = options[:project] || @project || (obj && obj.respond_to?(:project) ? obj.project : nil) - only_path = options.delete(:only_path) == false ? false : true - - text = text.dup - macros = catch_macros(text) - text = Redmine::WikiFormatting.to_html(Setting.text_formatting, text, :object => obj, :attribute => attr) - - @parsed_headings = [] - @heading_anchors = {} - @current_section = 0 if options[:edit_section_links] - - parse_sections(text, project, obj, attr, only_path, options) - text = parse_non_pre_blocks(text, obj, macros) do |text| - [:parse_inline_attachments, :parse_wiki_links, :parse_redmine_links].each do |method_name| - send method_name, text, project, obj, attr, only_path, options - end - end - parse_headings(text, project, obj, attr, only_path, options) - - if @parsed_headings.any? - replace_toc(text, @parsed_headings) - end - - text.html_safe - end - - # - #格式化字符串,不转义html代码 - def textAreailizable(*args) - options = args.last.is_a?(Hash) ? args.pop : {} - case args.size - when 1 - obj = options[:object] - text = args.shift - when 2 - obj = args.shift - attr = args.shift - text = obj.send(attr).to_s - else - raise ArgumentError, 'invalid arguments to textilizable' - end - return '' if text.blank? - project = options[:project] || @project || (obj && obj.respond_to?(:project) ? obj.project : nil) - only_path = options.delete(:only_path) == false ? false : true - - text = text.dup - macros = catch_macros(text) - #text = Redmine::WikiFormatting.to_html("CKEditor", text, :object => obj, :attribute => attr) - - @parsed_headings = [] - @heading_anchors = {} - @current_section = 0 if options[:edit_section_links] - - parse_sections(text, project, obj, attr, only_path, options) - text = parse_non_pre_blocks(text, obj, macros) do |text| - [:parse_inline_attachments, :parse_wiki_links, :parse_redmine_links].each do |method_name| - send method_name, text, project, obj, attr, only_path, options - end - end - parse_headings(text, project, obj, attr, only_path, options) - - if @parsed_headings.any? - replace_toc(text, @parsed_headings) - end - - text.html_safe - end - - def parse_non_pre_blocks(text, obj, macros) - s = StringScanner.new(text) - tags = [] - parsed = '' - while !s.eos? - s.scan(/(.*?)(<(\/)?(pre|code)(.*?)>|\z)/im) - text, full_tag, closing, tag = s[1], s[2], s[3], s[4] - if tags.empty? - yield text - inject_macros(text, obj, macros) if macros.any? - else - inject_macros(text, obj, macros, false) if macros.any? - end - parsed << text - if tag - if closing - if tags.last == tag.downcase - tags.pop - end - else - tags << tag.downcase - end - parsed << full_tag - end - end - # Close any non closing tags - while tag = tags.pop - parsed << "" - end - parsed - end - - def parse_inline_attachments(text, project, obj, attr, only_path, options) - # when using an image link, try to use an attachment, if possible - attachments = options[:attachments] || [] - attachments += obj.attachments if obj.respond_to?(:attachments) - if attachments.present? - text.gsub!(/src="([^\/"]+\.(bmp|gif|jpg|jpe|jpeg|png))"(\s+alt="([^"]*)")?/i) do |m| - filename, ext, alt, alttext = $1.downcase, $2, $3, $4 - # search for the picture in attachments - if found = Attachment.latest_attach(attachments, filename) - image_url = download_named_attachment_path(found, found.filename, :only_path => only_path) - desc = found.description.to_s.gsub('"', '') - if !desc.blank? && alttext.blank? - alt = " title=\"#{desc}\" alt=\"#{desc}\"" - end - "src=\"#{image_url}\"#{alt}" - else - m - end - end - end - end - - # 判断课程、项目、组织是否有权限删除历史资源 - # 项目管理员或者附件的作者可以删除 - # (is_project_manager?(User.current.id, @project.id) || User.current.id == history.author_id) - def allow_to_delete_attachment history - attachment = history.attachment - case attachment.try(:container_type) - when "Project" - result = is_project_manager?(User.current.id, attachment.container_id) || User.current.id == history.author_id || User.current.admin? - when "Course" - result = User.current.allowed_to?(:as_teacher, attachment.container) || User.current.id == history.author_id || User.current.admin? - when "OrgSubfield" - result = User.current.id == history.author_id || User.current.admin_of_org?(attachment.container) || User.current.admin? - end - end - - # Wiki links - # - # Examples: - # [[mypage]] - # [[mypage|mytext]] - # wiki links can refer other project wikis, using project name or identifier: - # [[project:]] -> wiki starting page - # [[project:|mytext]] - # [[project:mypage]] - # [[project:mypage|mytext]] - def parse_wiki_links(text, project, obj, attr, only_path, options) - text.gsub!(/(!)?(\[\[([^\]\n\|]+)(\|([^\]\n\|]+))?\]\])/) do |m| - link_project = project - esc, all, page, title = $1, $2, $3, $5 - if esc.nil? - if page =~ /^([^\:]+)\:(.*)$/ - identifier, page = $1, $2 - link_project = Project.find_by_identifier(identifier) || Project.find_by_name(identifier) - title ||= identifier if page.blank? - end - - if link_project && link_project.wiki - # extract anchor - anchor = nil - if page =~ /^(.+?)\#(.+)$/ - page, anchor = $1, $2 - end - anchor = sanitize_anchor_name(anchor) if anchor.present? - # check if page exists - wiki_page = link_project.wiki.find_page(page) - url = if anchor.present? && wiki_page.present? && (obj.is_a?(WikiContent) || obj.is_a?(WikiContent::Version)) && obj.page == wiki_page - "##{anchor}" - else - case options[:wiki_links] - when :local; "#{page.present? ? Wiki.titleize(page) : ''}.html" + (anchor.present? ? "##{anchor}" : '') - when :anchor; "##{page.present? ? Wiki.titleize(page) : title}" + (anchor.present? ? "_#{anchor}" : '') # used for single-file wiki export - else - wiki_page_id = page.present? ? Wiki.titleize(page) : nil - parent = wiki_page.nil? && obj.is_a?(WikiContent) && obj.page && project == link_project ? obj.page.title : nil - url_for(:only_path => only_path, :controller => 'wiki', :action => 'show', :project_id => link_project, - :id => wiki_page_id, :version => nil, :anchor => anchor, :parent => parent) - end - end - link_to(title.present? ? title.html_safe : h(page), User.current.logged? ? url : signin_url_without_domain, :class => ('wiki-page' + (wiki_page ? '' : ' new'))) - else - # project or wiki doesn't exist - all - end - else - all - end - end - end - - def select_option_helper option - tmp = Hash.new - tmp={"" => ""} - if option.nil? - else - option.each do |project| - tmp[project.name] = project.id - end - end - tmp - end - # Redmine links - # - # Examples: - # Issues: - # #52 -> Link to issue #52 - # Changesets: - # r52 -> Link to revision 52 - # commit:a85130f -> Link to scmid starting with a85130f - # Documents: - # document#17 -> Link to document with id 17 - # document:Greetings -> Link to the document with title "Greetings" - # document:"Some document" -> Link to the document with title "Some document" - # Versions: - # version#3 -> Link to version with id 3 - # version:1.0.0 -> Link to version named "1.0.0" - # version:"1.0 beta 2" -> Link to version named "1.0 beta 2" - # Attachments: - # attachment:file.zip -> Link to the attachment of the current object named file.zip - # Source files: - # source:some/file -> Link to the file located at /some/file in the project's repository - # source:some/file@52 -> Link to the file's revision 52 - # source:some/file#L120 -> Link to line 120 of the file - # source:some/file@52#L120 -> Link to line 120 of the file's revision 52 - # export:some/file -> Force the download of the file - # Forum messages: - # message#1218 -> Link to message with id 1218 - # - # Links can refer other objects from other projects, using project identifier: - # identifier:r52 - # identifier:document:"Some document" - # identifier:version:1.0.0 - # identifier:source:some/file - def parse_redmine_links(text, default_project, obj, attr, only_path, options) - text.gsub!(%r{([\s\(,\-\[\>]|^)(!)?(([a-z0-9\-_]+):)?(attachment|document|version|forum|news|message|project|commit|source|export)?(((#)|((([a-z0-9\-_]+)\|)?(r)))((\d+)((#note)?-(\d+))?)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]][^A-Za-z0-9_/])|,|\s|\]|<|$)}) do |m| - leading, esc, project_prefix, project_identifier, prefix, repo_prefix, repo_identifier, sep, identifier, comment_suffix, comment_id = $1, $2, $3, $4, $5, $10, $11, $8 || $12 || $18, $14 || $19, $15, $17 - link = nil - project = default_project - if project_identifier - project = Project.visible.find_by_identifier(project_identifier) - end - if esc.nil? - if prefix.nil? && sep == 'r' - if project - repository = nil - if repo_identifier - repository = project.repositories.detect {|repo| repo.identifier == repo_identifier} - else - repository = project.repository - end - # project.changesets.visible raises an SQL error because of a double join on repositories - if repository && (changeset = Changeset.visible.find_by_repository_id_and_revision(repository.id, identifier)) - link = link_to(h("#{project_prefix}#{repo_prefix}r#{identifier}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :repository_id => repository.identifier_param, :rev => changeset.revision}, - :class => 'changeset', - :title => truncate_single_line(changeset.comments, :length => 100)) - end - end - elsif sep == '#' - oid = identifier.to_i - case prefix - when nil - if oid.to_s == identifier && issue = Issue.visible.find_by_id(oid, :include => :status) - anchor = comment_id ? "note-#{comment_id}" : nil - link = link_to("##{oid}", {:only_path => only_path, :controller => 'issues', :action => 'show', :id => oid, :anchor => anchor}, - :class => issue.css_classes, - :title => "#{truncate(issue.subject, :length => 100)} (#{issue.status.name})") - end - when 'document' - if document = Document.visible.find_by_id(oid) - link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document}, - :class => 'document' - end - when 'version' - if version = Version.visible.find_by_id(oid) - link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version}, - :class => 'version' - end - when 'message' - if message = Message.visible.find_by_id(oid, :include => :parent) - link = link_to_message(message, {:only_path => only_path}, :class => 'message') - end - when 'forum' - if board = Board.visible.find_by_id(oid) - link = link_to h(board.name), {:only_path => only_path, :controller => 'boards', :action => 'show', :id => board, :project_id => board.project}, - :class => 'board' - end - when 'news' - if news = News.visible.find_by_id(oid) - link = link_to h(news.title), {:only_path => only_path, :controller => 'news', :action => 'show', :id => news}, - :class => 'news' - end - when 'project' - if p = Project.visible.find_by_id(oid) - link = link_to_project(p, {:only_path => only_path}, :class => 'project') - end - end - elsif sep == ':' - # removes the double quotes if any - name = identifier.gsub(%r{^"(.*)"$}, "\\1") - case prefix - when 'document' - if project && document = project.documents.visible.find_by_title(name) - link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document}, - :class => 'document' - end - when 'version' - if project && version = project.versions.visible.find_by_name(name) - link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version}, - :class => 'version' - end - when 'forum' - if project && board = project.boards.visible.find_by_name(name) - link = link_to h(board.name), {:only_path => only_path, :controller => 'boards', :action => 'show', :id => board, :project_id => board.project}, - :class => 'board' - end - when 'news' - if project && news = project.news.visible.find_by_title(name) - link = link_to h(news.title), {:only_path => only_path, :controller => 'news', :action => 'show', :id => news}, - :class => 'news' - end - when 'commit', 'source', 'export' - if project - repository = nil - if name =~ %r{^(([a-z0-9\-_]+)\|)(.+)$} - repo_prefix, repo_identifier, name = $1, $2, $3 - repository = project.repositories.detect {|repo| repo.identifier == repo_identifier} - else - repository = project.repository - end - if prefix == 'commit' - if repository && (changeset = Changeset.visible.where("repository_id = ? AND scmid LIKE ?", repository.id, "#{name}%").first) - link = link_to h("#{project_prefix}#{repo_prefix}#{name}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :repository_id => repository.identifier_param, :rev => changeset.identifier}, - :class => 'changeset', - :title => truncate_single_line(changeset.comments, :length => 100) - end - else - if repository && User.current.allowed_to?(:browse_repository, project) - name =~ %r{^[/\\]*(.*?)(@([^/\\@]+?))?(#(L\d+))?$} - path, rev, anchor = $1, $3, $5 - link = link_to h("#{project_prefix}#{prefix}:#{repo_prefix}#{name}"), {:controller => 'repositories', :action => (prefix == 'export' ? 'raw' : 'entry'), :id => project, :repository_id => repository.identifier_param, - :path => to_path_param(path), - :rev => rev, - :anchor => anchor}, - :class => (prefix == 'export' ? 'source download' : 'source') - end - end - repo_prefix = nil - end - when 'attachment' - attachments = options[:attachments] || (obj && obj.respond_to?(:attachments) ? obj.attachments : nil) - if attachments && attachment = Attachment.latest_attach(attachments, name) - link = link_to_attachment(attachment, :only_path => only_path, :download => true, :class => 'attachment') - end - when 'project' - if p = Project.visible.where("identifier = :s OR LOWER(name) = :s", :s => name.downcase).first - link = link_to_project(p, {:only_path => only_path}, :class => 'project') - end - end - end - end - (leading + (link || "#{project_prefix}#{prefix}#{repo_prefix}#{sep}#{identifier}#{comment_suffix}")) - end - end - - HEADING_RE = /(]+)?>(.+?)<\/h(\d)>)/i unless const_defined?(:HEADING_RE) - - def parse_sections(text, project, obj, attr, only_path, options) - return unless options[:edit_section_links] - text.gsub!(HEADING_RE) do - heading = $1 - @current_section += 1 - if @current_section > 1 - content_tag('div', - link_to(image_tag('edit.png'), options[:edit_section_links].merge(:section => @current_section)), - :class => 'contextual', - :title => l(:button_edit_section)) + heading.html_safe - else - heading - end - end - end - - # Headings and TOC - # Adds ids and links to headings unless options[:headings] is set to false - def parse_headings(text, project, obj, attr, only_path, options) - return if options[:headings] == false - - text.gsub!(HEADING_RE) do - level, attrs, content = $2.to_i, $3, $4 - item = strip_tags(content).strip - anchor = sanitize_anchor_name(item) - # used for single-file wiki export - anchor = "#{obj.page.title}_#{anchor}" if options[:wiki_links] == :anchor && (obj.is_a?(WikiContent) || obj.is_a?(WikiContent::Version)) - @heading_anchors[anchor] ||= 0 - idx = (@heading_anchors[anchor] += 1) - if idx > 1 - anchor = "#{anchor}-#{idx}" - end - @parsed_headings << [level, anchor, item] - "\n#{content}" - end - end - - MACROS_RE = /( - (!)? # escaping - ( - \{\{ # opening tag - ([\w]+) # macro name - (\(([^\n\r]*?)\))? # optional arguments - ([\n\r].*?[\n\r])? # optional block of text - \}\} # closing tag - ) - )/mx unless const_defined?(:MACROS_RE) - - MACRO_SUB_RE = /( - \{\{ - macro\((\d+)\) - \}\} - )/x unless const_defined?(:MACRO_SUB_RE) - - # Extracts macros from text - def catch_macros(text) - macros = {} - text.gsub!(MACROS_RE) do - all, macro = $1, $4.downcase - if macro_exists?(macro) || all =~ MACRO_SUB_RE - index = macros.size - macros[index] = all - "{{macro(#{index})}}" - else - all - end - end - macros - end - - # Executes and replaces macros in text - def inject_macros(text, obj, macros, execute=true) - text.gsub!(MACRO_SUB_RE) do - all, index = $1, $2.to_i - orig = macros.delete(index) - if execute && orig && orig =~ MACROS_RE - esc, all, macro, args, block = $2, $3, $4.downcase, $6.to_s, $7.try(:strip) - if esc.nil? - h(exec_macro(macro, obj, args, block) || all) - else - h(all) - end - elsif orig - h(orig) - else - h(all) - end - end - end - - TOC_RE = /

    \{\{([<>]?)toc\}\}<\/p>/i unless const_defined?(:TOC_RE) - - # Renders the TOC with given headings - def replace_toc(text, headings) - text.gsub!(TOC_RE) do - # Keep only the 4 first levels - headings = headings.select{|level, anchor, item| level <= 4} - if headings.empty? - '' - else - div_class = 'toc' - div_class << ' right' if $1 == '>' - div_class << ' left' if $1 == '<' - out = "

    ' * (current - root) - out << '' - end - end - end - - # Same as Rails' simple_format helper without using paragraphs - def simple_format_without_paragraph(text) - text.to_s. - gsub(/\r\n?/, "\n"). # \r\n and \r -> \n - gsub(/\n\n+/, "

    "). # 2+ newline -> 2 br - gsub(/([^\n]\n)(?=[^\n])/, '\1
    '). # 1 newline -> br - html_safe - end - - def wiki_simple_format_without_paragraph(text) - text.to_s. - gsub(/\r\n?/, "\n"). # \r\n and \r -> \n - gsub(/\n\n+/, "

    "). # 2+ newline -> 2 br - gsub(/([^\n]\n)(?=[^\n])/, '\1
    '). # 1 newline -> br - gsub("&nbsp", " "). #gsub(/<\/?.*?>/,""). - gsub(/<\/?.*?>/, ""). - gsub(""", "'"). - html_safe - end - - def lang_options_for_select(blank=true) - { 'Chinese简体中文 '=> 'zh', :English => :en} - end - - def label_tag_for(name, option_tags = nil, options = {}) - label_text = l(("field_"+field.to_s.gsub(/\_id$/, "")).to_sym) + (options.delete(:required) ? @template.content_tag("span", " *", :class => "required"): "") - content_tag("label", label_text) - end - - def labelled_form_for(*args, &proc) - args << {} unless args.last.is_a?(Hash) - options = args.last - if args.first.is_a?(Symbol) - options.merge!(:as => args.shift) - end - options.merge!({:builder => Redmine::Views::LabelledFormBuilder}) - form_for(*args, &proc) - end - - def labelled_fields_for(*args, &proc) - args << {} unless args.last.is_a?(Hash) - options = args.last - options.merge!({:builder => Redmine::Views::LabelledFormBuilder}) - fields_for(*args, &proc) - end - - def labelled_remote_form_for(*args, &proc) - ActiveSupport::Deprecation.warn "ApplicationHelper#labelled_remote_form_for is deprecated and will be removed in Redmine 2.2." - args << {} unless args.last.is_a?(Hash) - options = args.last - options.merge!({:builder => Redmine::Views::LabelledFormBuilder, :remote => true}) - form_for(*args, &proc) - end - - def error_messages_for(*objects) - html = "" - # modified by fq - if objects.first.is_a?(Array) - objects = objects.first - end - # end - if objects != nil - objects = objects.map {|o| o.is_a?(String) ? instance_variable_get("@#{o}") : o}.compact - errors = objects.map {|o| o.errors.full_messages}.flatten - if errors.any? - html << "
      \n" - errors.each do |error| - ###by xianbo - if(error!=l(:label_repository_path_not_null)) - html << "
    • #{h error}
    • \n" - end - ###xianbo - end - ###by xianbo - unless params[:repository].nil? - if params[:repository][:upassword]=="" - html << "
    • "+ l(:label_password_not_null) +"
    • \n" - end - end - ###xianbo - html << "
    \n" - end - end - html.html_safe - end - - def delete_link(url, options={}) - options = { - :method => :delete, - :data => {:confirm => l(:text_are_you_sure)}, - :class => 'icon icon-del' - }.merge(options) - - link_to l(:button_delete), url, options - end - - def update_status_link(user) - url = {:controller => 'users', :action => 'update', :id => user, :page => params[:page], :status => params[:status], :tab => nil} - - if user.locked? - link_to "解锁", url.merge(:user => {:status => User::STATUS_ACTIVE}), :method => :put, :class => 'mr10 link-color-blue' - elsif user.registered? - link_to "激活", url.merge(:user => {:status => User::STATUS_ACTIVE}), :method => :put, :class => 'mr10 link-color-blue' - elsif user != User.current - link_to "加锁", url.merge(:user => {:status => User::STATUS_LOCKED}), :method => :put, :class => 'mr10 link-color-blue' - end - end - - - def delete_version_link(url, options={}) - options = { - :method => :delete, - :data => {:confirm => l(:text_are_you_sure)}, - :class => 'icon icon-del' - }.merge(options) - - link_to "", url, options - end - - def delete_link_version(url, options={}) - options = { - :method => :delete, - :data => {:confirm => l(:text_are_you_sure)}, - :class => 'c_purple' - }.merge(options) - - link_to l(:button_delete), url, options - end - - - - def delete_new_link(url, options={}) - options = { - :method => :delete, - :data => {:confirm => l(:text_are_you_sure)}, - :class => "c_purple" - }.merge(options) - - link_to l(:button_delete), url, options - end - - def preview_link(url, form, target='preview', options={}) - content_tag 'a', l(:label_preview), { - :href => "#", - :onclick => %|submitPreview("#{escape_javascript url_for(url)}", "#{escape_javascript form}", "#{escape_javascript target}"); return false;|, - :accesskey => accesskey(:preview) - }.merge(options) - end - - def link_to_function(name, function, html_options={}) - content_tag(:a, name, {:href => '#', :onclick => "#{function}; return false;"}.merge(:class => "BlueCirBtnMini ml10",:style => "display:inline-block; height:20px; line-height:20px;")) - end - - def link_to_function_none(name, function, html_options={}) - content_tag(:a, name, {:href => '#', :onclick => "#{function}; return false;"}.merge(:style => "display:inline-block; height:20px; line-height:20px;")) - end - - # Helper to render JSON in views - def raw_json(arg) - arg.to_json.to_s.gsub('/', '\/').html_safe - end - - def back_url - url = params[:back_url] - if url.nil? && referer = request.env['HTTP_REFERER'] - url = CGI.unescape(referer.to_s) - end - url - end - - def back_url_hidden_field_tag - url = back_url - hidden_field_tag('back_url', url, :id => nil) unless url.blank? - end - - def check_all_links(form_name) - link_to_function_none(l(:button_check_all), "checkAll('#{form_name}', true)") + " ".html_safe + " | "+ " ".html_safe + - link_to_function_none(l(:button_uncheck_all), "checkAll('#{form_name}', false)") - end - - # 本次修改,修改为只显示关闭的所占%比 - def progress_bar(pcts, options={}) - pcts = [pcts] unless pcts.is_a?(Array) - pcts = pcts.collect(&:round) - # pcts[1] = pcts[1] + pcts[0] - pcts << (100 - pcts[0]) - width = options[:width] || '100px;' - legend = options[:legend] || '' - content_tag('span', - content_tag('tr', - (pcts[0] > 0 ? content_tag('span', '', :style => "width: #{pcts[0]}%;", :class => 'roadmap_progressbar_inner', :title => "已关闭:#{pcts[0]}%") : ''.html_safe) #+ - # (pcts[1] > 0 ? content_tag('td', '', :style => "width: #{pcts[1]}%;", :class => 'done', :title => "开发中:#{pcts[1]}%") : ''.html_safe) + - #(pcts[1] > 0 ? content_tag('span', '', :style => "width: #{pcts[1]}%;", :class => 'roadmap_progressbar ml5', :title => "未完成:#{pcts[1]}%") : ''.html_safe), :style => "width: #{width}" - ), :class => 'roadmap_progressbar ml5').html_safe - # + content_tag('p', legend, :class => 'percent').html_safe - end - - def checked_image(checked=true) - if checked - image_tag 'toggle_check.png' - end - end - - def context_menu(url) - unless @context_menu_included - content_for :header_tags do - javascript_include_tag('context_menu') + - stylesheet_link_tag('context_menu') - end - if l(:direction) == 'rtl' - content_for :header_tags do - stylesheet_link_tag('context_menu_rtl') - end - end - @context_menu_included = true - end - javascript_tag "contextMenuInit('#{ url_for(url) }')" - end - - def calendar_for(field_id,start_day=nil) - include_calendar_headers_tags(start_day) - javascript_tag("$(function() { $('##{field_id}').datepicker(datepickerOptions); });") - end - - def include_calendar_headers_tags(start_day=nil) - if start_day.nil? - unless @calendar_headers_tags_included - @calendar_headers_tags_included = true - content_for :header_tags do - start_of_week = Setting.start_of_week - start_of_week = l(:general_first_day_of_week, :default => '1') if start_of_week.blank? - # Redmine uses 1..7 (monday..sunday) in settings and locales - # JQuery uses 0..6 (sunday..saturday), 7 needs to be changed to 0 - start_of_week = start_of_week.to_i % 7 - - tags = javascript_tag( - "var datepickerOptions={dateFormat: 'yy-mm-dd', firstDay: #{start_of_week}, " + - "showOn: 'button', buttonImageOnly: true, buttonImage: '" + - path_to_image('/images/public_icon.png') + - "', showButtonPanel: true, showWeek: true, showOtherMonths: true, selectOtherMonths: true};") - jquery_locale = l('jquery.locale', :default => current_language.to_s) - unless jquery_locale == 'en' - tags << javascript_include_tag("i18n/jquery.ui.datepicker-#{jquery_locale}.js") - end - tags - end - end - else - unless @calendar_headers_tags_included - @calendar_headers_tags_included = true - content_for :header_tags do - start_of_week = Setting.start_of_week - start_of_week = l(:general_first_day_of_week, :default => '1') if start_of_week.blank? - # Redmine uses 1..7 (monday..sunday) in settings and locales - # JQuery uses 0..6 (sunday..saturday), 7 needs to be changed to 0 - start_of_week = start_of_week.to_i % 7 - - tags = javascript_tag( - "var datepickerOptions={dateFormat: 'yy-mm-dd',minDate: new Date(), firstDay: #{start_of_week}, " + - "showOn: 'button', buttonImageOnly: true, buttonImage: '" + - path_to_image('/images/public_icon.png') + - "', showButtonPanel: true, showWeek: true, showOtherMonths: true, selectOtherMonths: true, onClose: function(dateText, inst) {TimeClose(dateText,inst);}, beforeShow : function(input){TimeBeforeShow(input);} };") - jquery_locale = l('jquery.locale', :default => current_language.to_s) - unless jquery_locale == 'en' - tags << javascript_include_tag("i18n/jquery.ui.datepicker-#{jquery_locale}.js") - end - tags - end - end - end - - end - - # Overrides Rails' stylesheet_link_tag with themes and plugins support. - # Examples: - # stylesheet_link_tag('styles') # => picks styles.css from the current theme or defaults - # stylesheet_link_tag('styles', :plugin => 'foo) # => picks styles.css from plugin's assets - # - def stylesheet_link_tag(*sources) - options = sources.last.is_a?(Hash) ? sources.pop : {} - plugin = options.delete(:plugin) - sources = sources.map do |source| - if plugin - "/plugin_assets/#{plugin}/stylesheets/#{source}" - elsif current_theme && current_theme.stylesheets.include?(source) - current_theme.stylesheet_path(source) - else - source - end - end - super sources, options - end - - # Overrides Rails' image_tag with themes and plugins support. - # Examples: - # image_tag('image.png') # => picks image.png from the current theme or defaults - # image_tag('image.png', :plugin => 'foo) # => picks image.png from plugin's assets - # - def image_tag(source, options={}) - if plugin = options.delete(:plugin) - source = "/plugin_assets/#{plugin}/images/#{source}" - elsif current_theme && current_theme.images.include?(source) - source = current_theme.image_path(source) - end - super source, options - end - - # Overrides Rails' javascript_include_tag with plugins support - # Examples: - # javascript_include_tag('scripts') # => picks scripts.js from defaults - # javascript_include_tag('scripts', :plugin => 'foo) # => picks scripts.js from plugin's assets - # - def javascript_include_tag(*sources) - options = sources.last.is_a?(Hash) ? sources.pop : {} - - @sources ||= [] - sources = sources.delete_if do|source| - @sources.include?(source) - end - @sources += sources - - if plugin = options.delete(:plugin) - sources = sources.map do |source| - if plugin - "/plugin_assets/#{plugin}/javascripts/#{source}" - else - source - end - end - end - - if sources && !sources.empty? - super(sources, options) - else - '' - end - end - - def content_for(name, content = nil, &block) - @has_content ||= {} - @has_content[name] = true - super(name, content, &block) - end - - def has_content?(name) - (@has_content && @has_content[name]) || false - end - - def sidebar_content? - has_content?(:sidebar) || view_layouts_base_sidebar_hook_response.present? - end - - def view_layouts_base_sidebar_hook_response - @view_layouts_base_sidebar_hook_response ||= call_hook(:view_layouts_base_sidebar) - end - - def email_delivery_enabled? - !!ActionMailer::Base.perform_deliveries - end - - # Returns the avatar image tag for the given +user+ if avatars are enabled - # +user+ can be a User or a string that will be scanned for an email address (eg. 'joe ') - def avatar(user, options = { }) - if Setting.gravatar_enabled? - options.merge!({:ssl => (request && request.ssl?), :default => Setting.gravatar_default}) - email = nil - if user.respond_to?(:mail) - email = user.mail - elsif user.to_s =~ %r{<(.+?)>} - email = $1 - end - return gravatar(email.to_s.downcase, options) unless email.blank? rescue nil - #options ={"class" => ["avatar2"],"width" =>["80px"],"height" =>["80px"]} - #return image_tag url_to_avatar(user), options - else - '' - end - end - - def sanitize_anchor_name(anchor) - if ''.respond_to?(:encoding) || RUBY_PLATFORM == 'java' - anchor.gsub(%r{[^\s\-\p{Word}]}, '').gsub(%r{\s+(\-+\s*)?}, '-') - else - # TODO: remove when ruby1.8 is no longer supported - anchor.gsub(%r{[^\w\s\-]}, '').gsub(%r{\s+(\-+\s*)?}, '-') - end - end - - # Returns the javascript tags that are included in the html layout head - def javascript_heads - tags = javascript_include_tag('jquery-1.8.3-ui-1.9.2-ujs-2.0.3', 'application', 'jquery.colorbox-min', 'baiduTemplate') - unless User.current.pref.warn_on_leaving_unsaved == '0' - tags << "\n".html_safe + javascript_tag("$(window).load(function(){ warnLeavingUnsaved('#{escape_javascript l(:text_warn_on_leaving_unsaved)}'); });") - end - tags - end - def javascript_edu_index_heads - tags = javascript_include_tag('jquery-1.8.3-ui-1.9.2-ujs-2.0.3', 'application') - unless User.current.pref.warn_on_leaving_unsaved == '0' - tags << "\n".html_safe + javascript_tag("$(window).load(function(){ warnLeavingUnsaved('#{escape_javascript l(:text_warn_on_leaving_unsaved)}'); });") - end - tags - end - - def hubspot_head - tags = javascript_include_tag('hubspot/messenger.min', 'hubspot/messenger-theme-future') - tags << stylesheet_link_tag('hubspot/messenger', 'hubspot/messenger-theme-future', 'hubspot/messenger-theme-flat') - end - - def bootstrap_head - tags = stylesheet_link_tag('bootstrap/bootstrap.min', 'bootstrap/bootstrap-theme.min') - tags << javascript_include_tag('bootstrap/affix') - tags << javascript_include_tag('bootstrap/alert') - tags << javascript_include_tag('bootstrap/button') - tags << javascript_include_tag('bootstrap/carousel') - tags << javascript_include_tag('bootstrap/collapse') - tags << javascript_include_tag('bootstrap/dropdown') - tags << javascript_include_tag('bootstrap/modal') - tags << javascript_include_tag('bootstrap/popover') - tags << javascript_include_tag('bootstrap/scrollspy') - tags << javascript_include_tag('bootstrap/tab') - tags << javascript_include_tag('bootstrap/tooltip') - tags << javascript_include_tag('bootstrap/transition') - tags - end - - def favicon - "".html_safe - end - - def robot_exclusion_tag - ''.html_safe - end - - # Returns true if arg is expected in the API response - def include_in_api_response?(arg) - unless @included_in_api_response - param = params[:include] - @included_in_api_response = param.is_a?(Array) ? param.collect(&:to_s) : param.to_s.split(',') - @included_in_api_response.collect!(&:strip) - end - @included_in_api_response.include?(arg.to_s) - end - - # Returns options or nil if nometa param or X-Redmine-Nometa header - # was set in the request - def api_meta(options) - if params[:nometa].present? || request.headers['X-Redmine-Nometa'] - # compatibility mode for activeresource clients that raise - # an error when unserializing an array with attributes - nil - else - options - end - end - - # Add by Tao - def url_to_avatar(source) - source = nil if source.kind_of?(String) - get_avatar(source) - end - # Endof Tao's code - - # cxt - # 获取认证照片 - def url_to_auth_img(user_id, type) - if File.exist?(disk_auth_filename("UserAuthentication",user_id,type)) - File.join(relative_path,avatar_directory("UserAuthentication"), auth_filename(user_id,type)) - else - File.join(relative_path,avatar_directory("UserAuthentication"),type) - end - end - - def url_to_coop_img(type) - File.join(relative_path,avatar_directory('type'),"*") - end - - # 讨论区的平台icon ["Java", "C", "C++", "Python2.7", "Python3.6", "MySQL/Java", "Html", "JFinal", "Docker", "Ethereum", "Dynamips", "MachineLearning", "Verilog","Spark","MySQL/Python3.6","PHP","PHP/Web","Hadoop", "Golang","Android","Matlab","Shell"] - - def url_to_platform_icon language - case language - when 'Python2.7', 'Python3.6' - File.join(relative_path,avatar_directory("Platform"), 'Python') - when 'MySQL/Java', 'MySQL/Python3.6' - File.join(relative_path,avatar_directory("Platform"), 'MySQL') - when 'PHP/Web' - File.join(relative_path,avatar_directory("Platform"), 'PHP') - when 'C#' - File.join(relative_path,avatar_directory("Platform"), 'Cxp') - when 'C/C++' - File.join(relative_path,avatar_directory("Platform"), 'Cjia') - when 'Angular2+' - File.join(relative_path,avatar_directory("Platform"), 'Angular2jia') - else - File.join(relative_path,avatar_directory("Platform"), language.nil? ? "" : language) - end - end - - def identity_authentication_status user - authorization = user.apply_actions.where(:container_type => "TrialAuthorization").last - case user.try(:certification) - when 0 - if authorization.try(:status) == 0 - "处理中" - else - "未授权" - end - when 1 - "已授权" - when 2 - "被拒绝" - end - end - - def user_certification_status user - status = "" - if user.authentication - status = "已实名认证" - else - apply_auth = ApplyUserAuthentication.where(:user_id => user.id, :auth_type => 1).last - if apply_auth && apply_auth.status == 0 - status = "实名认证中" - elsif apply_auth && apply_auth.status == 2 - status = "实名认证未通过" - else - status = "未实名认证" - end - end - end - - def pro_certification_status user - status = "" - if user.professional_certification - status = "已职业认证" - else - apply_auth = ApplyUserAuthentication.where(:user_id => user.id, :auth_type => 2).last - if apply_auth && apply_auth.status == 0 - status = "职业认证中" - elsif apply_auth && apply_auth.status == 2 - status = "职业认证未通过" - else - status = "未职业认证" - end - end - end - - def shixun_authentication_status shixun - case shixun.try(:status) - when 0,nil - "编辑中" - when 1 - "待审核" - when 2 - "已发布" - when 3 - "已关闭" - end - end - - def date_format_local(time) - date = time.strftime("%Y年%m月%d日") - end - - #当TAG数量过多时,更多链接 - #1代表是user类型 2代表是project类型 3代表是issue类型 4代表需求 9代表课程 - def more_tags id,object_flag - a= 1 - case object_flag - when "1" - s = link_to l(:label_more_tags),:controller => "users", :action => "show", :id => id - when "2" - s = link_to l(:label_more_tags),:controller => "projects", :action => "show", :id => id - when "3" - s = link_to l(:label_more_tags),:controller => "issues", :action => "show", :id => id - when "4" - s = link_to l(:label_more_tags),:controller => "bids", :action => "show", :id => id - when "9" - s = link_to l(:label_more_tags),:controller => "courses", :action => "show", :id => id - end - s - end - - def get_user_identity identity - s = "" - case identity - when 0 - s = '教师' - when 1 - s = '学生' - when 2 - s = '组织' - when 3 - s= '开发者' - else - s = '学生' - end - s - end - - # 获取issue类型 - def get_issue_type_new tracker_id - case tracker_id - when 1 - "缺陷" - when 2 - "功能" - when 3 - "支持" - when 4 - "任务" - when 5 - "周报" - end - end - - def get_memo - @new_memo = Memo.new - @public_forum = Forum.find(1) rescue ActiveRecord::RecordNotFound - end - - #获取用户未过期的课程 - def get_user_course user - courses_doing = [] - user.courses.select("courses.*,(SELECT MAX(created_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a").order("a desc").each do |course| - if !course_endTime_timeout?(course) - courses_doing.push course - end - end - courses_doing - end - - def attachment_history_candown attachment_history - if attachment_history.container_type == "Course" - course = Course.find(attachment_history.container_id) - candown = User.current.member_of_course?(course) || (course.is_public && attachment_history.is_public == 1) - elsif attachment_history.container_type == "Project" - project = Project.find(attachment_history.container_id) - candown = User.current.member_of?(project) || (project.is_public && attachment_history.is_public == 1) - elsif attachment_history.container_type == "OrgSubfield" - org = OrgSubfield.find(attachment_history.container_id).organization - candown = User.current.member_of_org?(org) || (org.organization.is_public && attachment_history.is_public == 1 && (User.current.logged? || org.organization.allow_guest_download?)) - end - end - - def resource_bank_candown resource,type - candown = false - if resource.is_public - candown = true - end - if type == 'syllabus' - candown = syllabus_course_member(User.current, resource.course) || User.current.admin? - end - candown - end - - # 课程某个班级的成员 - def syllabus_course_member user, course - result = false - syllabus = course.syllabus - if syllabus - syllabus.courses.each do |course| - if user.member_of_course?(course) - result = true - return result - end - end - end - result - end - - def attachment_candown attachment - candown = false - if attachment.container - if attachment.container.class.to_s=="PhoneAppVersion" - candown = true - elsif attachment.container.class.to_s != "HomeworkAttach" && attachment.container.class.to_s != "StudentWork" && attachment.container.class.to_s != "ContestantWork" && (attachment.container.has_attribute?(:project) || attachment.container.has_attribute?(:project_id)) && attachment.container.project - project = attachment.container.project - candown= User.current.member_of?(project) || (project.is_public && attachment.is_public == 1) - elsif attachment.container.is_a?(Project) - project = attachment.container - candown = User.current.member_of?(project) || (attachment.is_public == 1) || attachment.get_status_by_attach(User.current.id) == 2 - elsif (attachment.container.has_attribute?(:board) || attachment.container.has_attribute?(:board_id)) && attachment.container.board && - attachment.container.board.project - project = attachment.container.board.project - candown = User.current.member_of?(project) || (project.is_public && attachment.is_public == 1) - elsif (attachment.container.has_attribute?(:course) ||attachment.container.has_attribute?(:course_id) ) && attachment.container.course - course = attachment.container.course - candown = User.current.member_of_course?(course) || (attachment.is_public == 1) || attachment.get_status_by_attach(User.current.id) == 2 - elsif attachment.container.is_a?(Course) - course = attachment.container - candown= User.current.member_of_course?(course) || (attachment.is_public == 1) || attachment.get_status_by_attach(User.current.id) == 2 - elsif attachment.container.is_a?(OrgSubfield) - org = attachment.container.organization - candown = User.current.member_of_org?(org) || ((attachment.is_public == 1 || attachment.get_status_by_attach(User.current.id) == 2) && org.allow_guest_download == true) - elsif attachment.container.is_a?(OrgDocumentComment) - org = attachment.container.organization - candown = org.allow_guest_download || User.current.member_of_org?(org) || (org.is_public && attachment.is_public == 1) - elsif (attachment.container.has_attribute?(:board) || attachment.container.has_attribute?(:board_id)) && attachment.container.board && - attachment.container.board.course - course = attachment.container.board.course - candown= User.current.member_of_course?(course) || (course.is_public==1 && attachment.is_public == 1) - elsif attachment.container.class.to_s=="Organization" - candown = true - elsif attachment.container.class.to_s=="HomeworkAttach" - candown = true - elsif attachment.container.class.to_s=="StudentWorksScore" - candown = true - elsif attachment.container.class.to_s=="StudentWork" - candown = true - elsif attachment.container.class.to_s=="Contest" - candown = true - elsif attachment.container.class.to_s=="Work" - candown = true - elsif attachment.container.class.to_s=="ContestantWork" - candown = true - elsif attachment.container.class.to_s=="HomeworkBank" - candown = true - elsif attachment.container.class.to_s=="BlogComment" #博客资源允许下载 - candown = true - elsif attachment.container.class.to_s=="Memo" #论坛资源允许下载 - candown = true - elsif attachment.container.class.to_s=="Syllabus" #论坛资源允许下载 - candown = true - elsif attachment.container.class.to_s=="Competition" #竞赛资源允许下载 - candown = true - elsif attachment.container.class.to_s=="Career" #职业路径资源允许下载 - candown = true - elsif attachment.container_type == "Inform" #竞赛通知公告允许下载 - candown = true - elsif attachment.container.class.to_s == "User" - candown = (attachment.is_public == 1 || attachment.is_public == true || attachment.author_id == User.current.id) - elsif attachment.container_type == "Bid" && attachment.container && attachment.container.courses - course = attachment.container.courses.first - candown = User.current.member_of_course?(attachment.container.courses.first) || (course.is_public == 1 && attachment.is_public == 1) - else - candown = (attachment.is_public == 1 || attachment.is_public == true) - end - else - if attachment.container_type == "MarkDown" || attachment.container_type.nil? || attachment.container_type == 'Subject' || attachment.container_type == "Shixun" || attachment.container_type == "Memo" || attachment.container_type == "Career" || attachment.container_type == "Exercise" || attachment.container_type == "ExerciseBank" - candown = true - end - end - candown - end - - def project_type_link(text, value) - if value == 1 - link_to "#{text}".html_safe,"javascript:void(0)" ,:onClick => "show_window();", :class => "pr_join_a",:id => "setting_project_type" - elsif value == 2 - link_to "#{text}".html_safe,"javascript:void(0)" ,:onClick => "show_window();", :class => "pr_join_a",:id => "setting_project_type" - else - link_to "#{text}".html_safe,"javascript:void(0)" ,:onClick => "show_window();", :class => "pr_join_a",:id => "setting_project_type" - end - - end - - #如果学生作品被打分后修改,应该给老师提示 - def send_message_to_teacher student_work - if StudentWork === student_work - student_work_scores = student_work.student_works_scores.where("reviewer_role != 3") - if student_work_scores.any? - student_work.update_column('re_commit', 1) - course = student_work.homework_common.course - course.teachers.where(:user_id => student_work_scores.map(&:user_id).uniq).each do|mem| - student_work.tidings << Tiding.new(:user_id => mem.user_id, :trigger_user_id => student_work.user_id, :container_id => student_work.id, :container_type => "StudentWork", :parent_container_id => student_work.homework_common_id, :parent_container_type => "HomeworkCommon", - :belong_container_id => course.id, :belong_container_type => "Course", :viewed => 0, :tiding_type => "HomeworkCommon", :extra => "resubmit") - end - end - end - end - - private - - def wiki_helper - helper = Redmine::WikiFormatting.helper_for(Setting.text_formatting) - extend helper - return self - end - - def link_to_content_update(text, url_params = {}, html_options = {}) - link_to(text, url_params, html_options) - end - -#added by nie -# Display watcher picture - def show_more_watchers?(obj) - if User.watched_by(obj.id).count > 6 - return true - else - return false - end - end - - def show_watcher_profile(obj) - count = 0 - html = '' - if User.watched_by(obj.id).count == 0 - html << (content_tag "span", l(:label_no_current_watchers)) - end - for user in User.watched_by(obj.id) - html << (link_to image_tag(url_to_avatar(user), :class => "avatar"), user_path(user), :class => "avatar", :title => "#{user.name}") - count = count + 1 - if count >= 12 - break - end - end - html.html_safe - end - -#display bid project - def show_more_bid_project?(bid) - if bid.projects.where('is_public = 1').count > 12 - return true - else - return false - end - end - - def show_bid_project(bid) - html = '' - if bid.projects.where('is_public = 1').count == 0 - html << (content_tag "p", l(:label_no_bid_project), :class => "font_lighter") - else - bid.projects.where('is_public = 1').take(12).each do |project| - html << (link_to image_tag(url_to_avatar(project), :class => "avatar", :title => project.name), project_path(project), :class => "avatar") - end - end - html.html_safe - end - - def show_bid_fans_picture(obj) - html = '' - if obj.watcher_users.count == 0 - html << (content_tag "span", l(:label_project_no_follow)) - else - obj.watcher_users.take(12).each do |user| - html << (link_to image_tag(url_to_avatar(user), :class => "avatar"), user_path(user), :class => "avatar", :title => user.name) - end - end - html.html_safe - end - -#display contest project - def show_more_contest_project?(contest) - if contest.projects.where('is_public = 1').count > 12 - return true - else - return false - end - end - - def show_more_contest_softapplication?(contest) - if contest.softapplications.where('is_public = 1').count > 12 - return true - else - return false - end - end - - def show_contest_project(bid) - html = '' - if contest.projects.where('is_public = 1').count == 0 - html << (content_tag "p", l(:label_no_bid_project), :class => "font_lighter") - else - contest.projects.where('is_public = 1').take(12).each do |project| - html << (link_to image_tag(url_to_avatar(project), :class => "avatar", :title => project.name), project_path(project), :class => "avatar") - end - end - html.html_safe - end - - def show_contest_project(contest) - html = '' - if contest.projects.where('is_public = 1').count == 0 - html << (content_tag "p", l(:label_no_bid_project), :class => "font_lighter") - else - contest.projects.where('is_public = 1').take(12).each do |project| - html << (link_to image_tag(url_to_avatar(project), :class => "avatar", :title => project.name), project_path(project), :class => "avatar") - end - end - html.html_safe - end - - def show_contest_softapplication(contest) - html = '' - if contest.softapplications.where('is_public = 1').count == 0 - html << (content_tag "p", l(:label_no_contest_softapplication), :class => "font_lighter") - else - contest.softapplications.where('is_public = 1').take(12).each do |softapplication| - html << (link_to image_tag(url_to_avatar(project), :class => "avatar", :title => project.name), project_path(project), :class => "avatar") - end - end - html.html_safe - end - - def show_contest_fans_picture(obj) - html = '' - if obj.watcher_users.count == 0 - html << (content_tag "span", l(:label_project_no_follow)) - else - obj.watcher_users.take(12).each do |user| - html << (link_to image_tag(url_to_avatar(user), :class => "avatar"), user_path(user), :class => "avatar", :title => user.name) - end - end - html.html_safe - end - -#display fans picture - def show_more_fans?(obj) - if obj.watcher_users.count > 12 - return true - else - return false - end - end - - def show_fans_picture(obj) - html = '' - if obj.watcher_users.count == 0 - html << (content_tag "span", l(:label_no_current_fans)) - else - obj.watcher_users.take(12).each do |user| - html << (link_to image_tag(url_to_avatar(user), :class => "avatar"), user_path(user), :class => "avatar", :title => user.name) - end - end - html.html_safe - end - - # added by bai - def show_more_participate?(obj) - if obj.join_in_contests.count > 12 - return true - else - return false - end - end - - def show_participate_picture(obj) - html = '' - count = 0 - if obj.join_in_contests.count == 0 - html << (content_tag "span", l(:label_no_current_participate)) - end - for temp in obj.join_in_contests - html << (link_to image_tag(url_to_avatar(temp.user), :class => "avatar"), user_path(temp.user), :class => "avatar", :title => "#{temp.user.name}") - count = count + 1 - if count >= 12 - break - end - end - html.html_safe - end - -#end - -# add by huang - def show_watcher_list(user) - html = '' - count = 0 - for user in User.watched_by(user.id) - html << (link_to image_tag(url_to_avatar(user), :class => "avatar"), user_path(user), :class => "avatar", :title => "#{user.name}") - count = count + 1 - if count >= 12 - break - end - end - html.html_safe - end -# end - -#added by william - def get_fans_num(user) - user.watcher_users.count - end -#end - - - def hadcommittedhomework(cur,curb) - bid = Bid.find_by_id(curb) - return true if bid.nil? - - case bid.homework_type - when Bid::HomeworkFile - attaches = HomeworkAttach.where(bid_id: curb) - attaches.map(&:user_id).include? cur - when Bid::HomeworkProject - attaches = BidingProject.where(user_id: User.current, bid_id: bid) - attaches.count > 0 # > 0 则有提交记录 - else - true - end - - end - - def render_dynamic_nav - home_link = link_to l(:field_homepage), {:controller => 'welcome', :action => 'index'} - home_link = "
  • " << home_link << "
  • " - # bootstrap_render_dynamic_nav - content_tag :ul, (home_link.html_safe+bootstrap_render_dynamic_nav) - end - - def bootstrap_render_dynamic_nav - hidden_non_project = Setting.find_by_name("hidden_non_project") - visiable = !(hidden_non_project && hidden_non_project.value == "0") - - main_course_link = link_to l(:label_course_practice), {:controller => 'welcome', :action => 'index', :host => Setting.host_course} - main_project_link = link_to l(:label_project_deposit), {:controller => 'welcome', :action => 'index', :host => Setting.host_name} - main_contest_link = link_to l(:label_contest_innovate), {:controller => 'welcome', :action => 'index', :host => Setting.host_contest} - - # course_all_course_link = link_to l(:label_course_all), {:controller => 'courses', :action => 'index'} - course_teacher_all_link = link_to l(:label_teacher_all), {:controller => 'users', :action => 'index', :role => 'teacher', :host => Setting.host_course} - # courses_link = link_to l(:label_course_practice), {:controller => 'courses', :action => 'index'} - #users_link = link_to l(:label_software_user), {:controller => 'users', :action => 'index', :host => Setting.host_user} - # contest_link = link_to l(:label_contest_innovate), {:controller => 'contests', :action => 'index'} - # bids_link = link_to l(:label_requirement_enterprise), {:controller => 'bids', :action => 'index'} - forum_link = link_to l(:label_forum_all), {:controller => "forums", :action => "index"} - stores_link = link_to l(:label_stores_index), {:controller => 'stores', :action=> 'index'} - school_all_school_link = link_to l(:label_school_all), {:controller => 'school', :action => 'index'} - project_new_link = link_to l(:label_project_new), {:controller => 'projects', :action => 'new', :host => Setting.host_name} - # project_mine_link = link_to l(:label_my_project), {:controller => 'users', :action => 'user_projects', :host => Setting.host_name} - - #@nav_dispaly_project_label - nav_list = Array.new - nav_list.push(school_all_school_link) if @nav_dispaly_course_all_label && @show_course == 1 && visiable - # nav_list.push(course_all_course_link) if @nav_dispaly_course_all_label && @show_course == 1 - nav_list.push(course_teacher_all_link) if @nav_dispaly_teacher_all_label && @show_course == 1 && visiable - - nav_list.push(main_project_link) if @nav_dispaly_main_project_label - nav_list.push(main_course_link) if @nav_dispaly_main_course_label && @show_course == 1 && visiable - nav_list.push(main_contest_link) if @nav_dispaly_main_contest_label && @show_contest == 1 && visiable - - nav_list.push(courses_link) if @nav_dispaly_course_label && @show_course == 1 && visiable - nav_list.push(project_new_link) if @nav_dispaly_project_label - # nav_list.push(project_mine_link) if @nav_dispaly_main_project_label - # nav_list.push(projects_link) if @nav_dispaly_project_label - #nav_list.push(users_link) if @nav_dispaly_user_label - # nav_list.push(contest_link) if @nav_dispaly_contest_label && @show_contest == 1 - nav_list.push(bids_link) if @nav_dispaly_bid_label && visiable - nav_list.push(forum_link) if @nav_dispaly_forum_label && visiable - nav_list.push(stores_link) if @nav_dispaly_store_all_label && visiable - - content_li = '' - nav_list.collect do |nav_item| - content_li << content_tag(:li, nav_item, :class => 'topnav_a fl') - end - content_li.html_safe - end - - def current_user - User.current - end - - # def hadcommittedforcontest(curu) - # message = JournalsForMessage.find_by_sql("select * from journals_for_messages where jour_type = 'Softapplication' ") - # message.each do |createmessage| - # if createmessage.user_id == curu - # return true - # end - # end - # end - - # 获取用户的认证状态 - def get_authentication_status user - result = '' - if user.authentication - result += '
  • ' - else - apply_auth = ApplyUserAuthentication.where(:user_id => user.id, :auth_type => 1).last - if apply_auth && apply_auth.status == 0 - result += '
  • ' - else - result += '
  • ' - end - end - if user.professional_certification - result += '
  • ' - else - apply_auth = ApplyUserAuthentication.where(:user_id => user.id, :auth_type => 2).last - if apply_auth && apply_auth.status == 0 - result += '
  • ' - else - result += '
  • ' - end - end - return result.html_safe - end - - def footer_logo(ul_class=nil, li_class=nil) - logos = [] - logos.push(link_to image_tag('/images/footer_logo/nudt.png',:alt=>"nudt"),"http://www.nudt.edu.cn/special.asp?classid=12" ) - logos.push(link_to image_tag('/images/footer_logo/peking_eecs.png', :alt=>"peking_eecs"), "http://www.sei.pku.edu.cn/" ) - logos.push(link_to image_tag('/images/footer_logo/buaa_scse.png', :alt=>"buaa_scse"), "http://scse.buaa.edu.cn/" ) - logos.push(link_to image_tag('/images/footer_logo/iscas.png', :alt=>"iscas"), "http://www.iscas.ac.cn" ) - logos.push(link_to image_tag('/images/footer_logo/inforbus.png', :alt=>"inforbus"), "http://www.inforbus.com" ) - - logos.collect! { |logo| - content_tag(:li, logo.html_safe, :class => li_class.to_s) - } - - content_tag(:ul, logos.join("").html_safe, :class => ul_class.to_s).html_safe - end - - def sort_homework_path(bid, sort, direction) - case self.action_name - when 'show_courseEx' - get_not_batch_homework_homework_attach_index_path(bid_id: bid.id, sort: sort, direction: 'asc') - when 'get_not_batch_homework' - get_not_batch_homework_homework_attach_index_path(bid_id: bid.id, sort: sort, direction: direction) - when 'get_batch_homeworks' - get_batch_homeworks_homework_attach_index_path(bid_id: bid.id, sort: sort, direction: direction) - when 'get_homeworks' - get_homeworks_homework_attach_index_path(bid_id: bid.id, sort: sort, direction: direction) - else - '#' - end - end - - def anonymous_comment_link(bid, course) - link = case bid.comment_status - when 0 - confirm_info = "开启匿评后学生将不能对作品进行提交、修改、删除等操作\n" - confirm_info += anonymous_comment_notice(bid,course) - confirm_info += '是否确定开启匿评?' - link_to '启动匿评', start_anonymous_comment_bid_path(bid), id: "#{bid.id}_start_anonymous_comment", remote: true, :confirm => confirm_info, disable_with: '加载中...' - when 1 - confirm_info = "关闭匿评后所有同学将不能继续进行匿评,且将公开已提交作品列表\n" - confirm_info += anonymous_comment_notice(bid,course) - confirm_info += '是否确定关闭匿评?' - link_to '关闭匿评', stop_anonymous_comment_bid_path(bid), id: "#{bid.id}_stop_anonymous_comment", remote: true, :confirm => confirm_info - when 2 - '匿评结束' - end - content_tag('span', link, id: "#{bid.id}_anonymous_comment") - end - - def anonymous_comment_notice(bid, course) - case bid.comment_status - when 0 - @student_size ||= searchStudent(course).size - @homework_size = bid.homeworks.size - percent = @homework_size.to_f / (@student_size == 0 ? 1 : @student_size) - confirm_info = "目前#{@student_size}个学生,总共提交了#{@homework_size}份作品,占#{number_to_percentage(percent * 100, precision: 1)}\n" - when 1 - @homework_evaluations = 0 - bid.homeworks.map { |homework| @homework_evaluations += 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 - @has_evaluations = 0 - bid.homeworks.map { |homework| @has_evaluations += homework.rates(:quality).where("seems_rateable_rates.rater_id not in #{teachers}").count} - - percent = @has_evaluations.to_f / (@homework_evaluations == 0 ? 1 : @homework_evaluations) - confirm_info = "目前总共分配了#{@homework_evaluations}份匿评作品,已评价#{@has_evaluations}份作品,占#{number_to_percentage(percent * 100, precision: 1)}\n" - end - confirm_info - end - - def get_technical_title user - 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 - - # 用户竞赛总数 - def user_contest_count - @user.favorite_contests.visible.where("is_delete =?", 0).count - end - - # 用户项目总数 - def user_project_count - @my_projects = @user.projects.visible.where("status != 9") - @my_project_total = @my_projects.count - end - - # 用户的课程总数 - def user_course_count - @my_course_count = @user.syllabuses.count - - sy_courses = @user.courses.visible.not_deleted - syllabus_ids = sy_courses.empty? ? '(-1)' : "(" + sy_courses.map{|course| !course.syllabus_id.nil? && course.syllabus_id}.join(",") + ")" - syllabus_members = SyllabusMember.where("user_id = #{@user.id}") - syllabus_member_ids = syllabus_members.empty? ? "(-1)" : "(" + syllabus_members.map{|syl_mem| syl_mem.syllabus_id}.join(',') + ")" - @join_syllabuses = Syllabus.where("(id in #{syllabus_ids} or id in #{syllabus_member_ids}) and user_id != #{@user.id}") - @my_joined_course_count = @join_syllabuses.count - - @user_course_total = @my_joined_course_count + @my_course_count - end - - # 用户发布的作业数 - def user_manage_homework_count - tea_courses = @user.courses.visible.not_deleted.select{|course| @user.has_teacher_role(course)} - tea_course_ids = tea_courses.map{|course| course.id} - @manage_homeworks = HomeworkCommon.where(:course_id => tea_course_ids).count - end - - # 用户收到的作业数 - def user_receive_homework_count - stu_courses = @user.courses.visible.not_deleted.select{|course| @user.has_student_role(course)} - stu_course_ids = stu_courses.empty? ? "(-1)" : "(" + stu_courses.map{|course| course.id}.join(',') + ")" - @homeworks = HomeworkCommon.where("course_id in #{stu_course_ids} and publish_time <= '#{Time.now}'").count - end - - # 用户发布的issue数 - def issues_author_is_self_count - Issue.where(:author_id => @user.id).count - end - - # 用户收到的issue数 - def issues_assigned_is_self_count - Issue.where( :assigned_to_id => @user.id ).count - end - - def get_user_roll user - technical_title = "" - case user.user_extensions.identity.to_s - when "0" - technical_title = get_technical_title user - when "1" - technical_title = l(:label_account_identity_student) - when "2" - technical_title = l(:label_account_identity_enterprise) - when "3" - technical_title = l(:label_account_identity_developer) - end - technical_title - end - - - def ie8? - request.env["HTTP_USER_AGENT"] =~ /MSIE 8.0/ - end - - - #获取指定资源列表的TAG的集合以及每个TAG的数量,降序排序 - def attachment_tag_list attachments - tag_list = Hash.new - attachments.each do |attachment| - attachment.tag_list.map{|tag| tag_list.has_key?(tag) ? tag_list[tag] = tag_list[tag] + 1 : tag_list[tag] = 1} - end - tag_list.sort {|a,b| b[1]<=>a[1]} - end - - #获取课程资源的TAG云 - def get_course_tag_list course - all_attachments = course.attachments - if User.current.admin? || User.current.allowed_to?(:as_teacher, course) - all_attachments = all_attachments.reorder("created_on desc") - elsif User.current.member_of_course?(course) - member = course.members.where(:user_id => User.current.id).first - if member.try(:course_group_id).to_i == 0 - all_attachments = all_attachments.where("is_publish = 1 and unified_setting = 1") - else - not_atta_ids = course.attachment_group_settings.where("course_group_id = #{member.try(:course_group_id)} and publish_time > '#{Time.now}'") - not_atta_ids = not_atta_ids.blank? ? "(-1)" : "(" + not_atta_ids.map(&:attachment_id).join(",") + ")" - all_attachments = all_attachments.where("is_publish = 1 and attachments.id not in #{not_atta_ids}") - end - else - all_attachments = all_attachments.where("is_publish = 1 and unified_setting = 1") - end - tag_list = attachment_tag_list all_attachments - tag_list - end - - # 获取项目资源的Tag云 - def get_project_tag_list project - all_attachments = project.attachments.select{|attachment| attachment.is_public? || - (attachment.container_type == "Project" && User.current.member_of?(project))|| - attachment.author_id == User.current.id - } - tag_list = attachment_tag_list all_attachments - tag_list - end - - # 获取项目fork成员数 - def project_fork_count - @forked_projects = Project.where(:forked_from_project_id => @project.id) - @forked_count = @forked_projects.count - end - - def get_org_subfield_tag_list org_subfield - all_attachments = org_subfield.attachments.select{|attachment| attachment.is_public? || - (attachment.container_type == "OrgSubfield" && User.current.member_of_org?(org_subfield.organization))|| - attachment.author_id == User.current.id - } - tag_list = attachment_tag_list all_attachments - tag_list - end - - #获取匿评相关连接代码 - def homework_anonymous_comment (homework, hw_status, user_activity_id = -1) - if homework.homework_detail_manual.comment_status == 0 || homework.end_time >= Time.now - link = link_to "启动匿评","javascript:void(0)", :class => "wpostOptionLink", :title => "作业截止日期之前不可以启动匿评" - elsif homework.student_works.has_committed.count >= 2 && homework.homework_detail_manual#作业份数大于2 - case homework.homework_detail_manual.comment_status - when 1 - link = link_to '启动匿评', Setting.protocol + "://" + Setting.host_name + "/homework_common/" + homework.id.to_s + "/alert_anonymous_comment?hw_status=" + hw_status.to_s + "&user_activity_id=" + user_activity_id.to_s, id: "#{homework.id}_start_anonymous_comment", remote: true, disable_with: '加载中...',:class => 'wpostOptionLink' - when 2 - link = link_to '关闭匿评', Setting.protocol + "://" + Setting.host_name + "/homework_common/" + homework.id.to_s + "/alert_anonymous_comment?hw_status=" + hw_status.to_s + "&user_activity_id=" + user_activity_id.to_s, id: "#{homework.id}_stop_anonymous_comment", remote: true,:class => 'wpostOptionLink' - when 3 - # link = link_to "匿评结束","javascript:void(0)", :class => "postOptionLink", :title => "匿评结束" - end - else - link = link_to "启动匿评","javascript:void(0)", :class => "wpostOptionLink", :title => "学生提交作业数大于等于2时才可以启动匿评" - end - link - end - #学生根据传入作业确定显示为编辑作品还是新建作品 - def student_new_homework homework - work = cur_user_works_for_homework homework - if work.nil? - link_to "提交作品", new_student_work_path(:homework => homework.id),:class => 'fr mr10 work_edit' - else - if homework.homework_type == 1 && homework.homework_detail_manual && homework.homework_detail_manual.comment_status != 1 #匿评作业,且作业状态不是在开启匿评之前 - link_to "作品已交", "javascript:void(0);", :class => 'fr mr10 pr_join_span c_white', :title => "开启匿评后不可修改作品" - elsif homework.homework_type == 2 #编程作业修改作品 - if homework.homework_detail_manual && homework.homework_detail_manual.comment_status != 1 - link_to "作品已交", "javascript:void(0);", :class => 'fr mr10 pr_join_span c_white', :title => "开启匿评后不可修改作品" - else - link_to "修改作品", new_student_work_path(:homework => homework.id),:class => 'fr mr10 work_edit' - end - else - link_to "修改作品", edit_student_work_path(work.id),:class => 'fr mr10 work_edit' - end - end - end - #动态列表中,确定学生是该提交还是进列表 - def student_work_activity_submit_status(opt={}) - default_opt = {class: 'c_blue'}.merge(opt) - - is_teacher = User.current.user_extensions && User.current.user_extensions.identity == 0 && User.current.allowed_to?(:add_course, nil, :global => true) - - homework = default_opt[:homework] - work = cur_user_works_for_homework homework - if work.nil? && !is_teacher - link_to "提交("+homework.student_works.count.to_s+")", new_student_work_path(:homework => homework.id,:host=> Setting.host_course), :class=> default_opt[:class] - else - link_to "提交("+homework.student_works.count.to_s+")", student_work_index_path(:homework => homework.id,:host=> Setting.host_course), :class=> default_opt[:class] - end - end - - # 试卷动态的按钮 - def user_for_exercise exercise,is_teacher - count = exercise.exercise_users.where(:commit_status => 1, :user_id => exercise.course.student.map(&:student_id)).count - if User.current.logged? - if User.current.member_of_course?(exercise.course) - if is_teacher #老师显示作品数量 - link_to "作品 (#{count})".html_safe, student_exercise_list_exercise_path(exercise), :class => "c_blue homepagePostSubmit" - else #学生显示提交作品、修改作品等按钮 - work = exercise.exercise_users.where("user_id = ?",User.current).first - member = exercise.course.members.where(:user_id => User.current.id).first - setting_time = exercise_group_setting exercise, member.try(:course_group) - if work - if work.commit_status > 0 - link_to "查看答题(#{count})", exercise.exercise_status < 3 ? exercise_path(exercise,:user_id => User.current.id) : show_student_result_exercise_path(exercise,:user_id => User.current.id), :class => "c_blue homepagePostSubmit" - else - if setting_time.publish_time < Time.now && setting_time.end_time > Time.now - link_to (work.start_at.nil? ? "开始答题(#{count})" : "继续答题(#{count})"), exercise_path(exercise,:user_id => User.current.id), :class => "c_blue homepagePostSubmit" - else - link_to "查看作品(#{count})".html_safe, student_exercise_list_exercise_path(exercise), :class => "c_blue homepagePostSubmit" - end - end - else - if setting_time.publish_time < Time.now && setting_time.end_time > Time.now - link_to "开始答题(#{count})", exercise_path(exercise,:user_id => User.current.id), :class => "c_blue homepagePostSubmit" - else - link_to "查看作品(#{count})".html_safe, student_exercise_list_exercise_path(exercise), :class => "c_blue homepagePostSubmit" - end - end - end - else - link_to "作品 (#{count})".html_safe, "javascript:void(0)", :class => "c_blue homepagePostSubmit", :onclick => "notice_sure_box('您不是班级成员,不能答题
    请先从老师处获取邀请码后加入班级,再答题')" - end - else - link_to "作品 (#{count})".html_safe, "javascript:void(0)", :class => "c_blue homepagePostSubmit", :onclick => "login_notice_box('#{signin_url_without_domain}');" - end - end - - # 问卷动态的按钮 - def user_for_poll poll,is_teacher - count = poll.poll_users.where(:commit_status => 1, :user_id => poll.course.student.map(&:student_id)).count - if User.current.logged? - if User.current.member_of_course?(poll.course) - if is_teacher #老师显示作品数量 - link_to "作品 (#{count})".html_safe, student_poll_list_poll_path(poll), :class => "c_blue homepagePostSubmit" - else #学生显示提交作品、修改作品等按钮 - work = poll.poll_users.where("user_id = ?",User.current).first - member = poll.course.members.where(:user_id => User.current.id).first - setting_time = poll_group_setting poll, member.try(:course_group) - if work - if work.commit_status > 0 - link_to "查看答题(#{count})", poll_path(poll,:user_id => User.current.id), :class => "c_blue homepagePostSubmit" - elsif setting_time.publish_time < Time.now && setting_time.end_time > Time.now - link_to (work.start_at.nil? ? "开始答题(#{count})" : "继续答题(#{count})"), poll_path(poll,:user_id => User.current.id), :class => "c_blue homepagePostSubmit" - else - link_to "查看作品(#{count})".html_safe, student_poll_list_poll_path(poll), :class => "c_blue homepagePostSubmit" - end - else - if setting_time.publish_time < Time.now && setting_time.end_time > Time.now - link_to "开始答题(#{count})", poll_path(poll,:user_id => User.current.id), :class => "c_blue homepagePostSubmit" - else - link_to "查看作品(#{count})".html_safe, student_poll_list_poll_path(poll), :class => "c_blue homepagePostSubmit" - end - end - end - else - link_to "作品 (#{count})".html_safe, "javascript:void(0)", :class => "c_blue homepagePostSubmit", :onclick => "notice_sure_box('您不是班级成员,不能答题
    请先从老师处获取邀请码后加入班级,再答题')" - end - else - link_to "作品 (#{count})".html_safe, "javascript:void(0)", :class => "c_blue homepagePostSubmit", :onclick => "login_notice_box('#{signin_url_without_domain}');" - end - end - - #根据传入作业确定显示为编辑作品还是新建作品,或者显示作品数量 - def user_for_homework_common homework,work - if User.current.logged? - project = cur_user_projects_for_homework homework if homework.homework_type == 3 - member = homework.course.members.where(:user_id => User.current.id).first - setting_time = homework_group_setting homework, member.try(:course_group_id) - if homework.homework_type == 4 - if work.nil? - link_to "开始实战", shixun_path(homework.homework_commons_shixuns.shixun), :class => 'edu-default-btn user_bluebg_btn fr mr20 pl7 pr7',:target => "_blank" - else - myshixun = Myshixun.where(:id => work.myshixun_id).first - # is_modify = ShixunModify.where(:myshixun_id => myshixun.try(:id), :shixun_id => myshixun.shixun.try(:id), :status => 1).first - link_to "继续实战", shixun_path(myshixun.shixun), :class => "edu-default-btn user_orangebg_btn fr mr20 pl7 pr7", :target => "_blank" - # if myshixun && is_modify.blank? - # link_to "继续实战", myshixun_game_path(myshixun.current_task, :myshixun_id => myshixun), :class => "edu-default-btn user_orangebg_btn fr mr20 pl7 pr7", :target => "_blank" - # elsif myshixun - # link_to "继续实战", 'javascript:void(0);', :onclick => "sure_box_redirect('#{myshixun_reset_myshixun_path(myshixun)}', '实训已经更新啦,系统正在为您重置');", :class => "edu-default-btn user_orangebg_btn fr mr20 pl7 pr7" - # end - end - elsif work.nil? && setting_time.end_time >= Time.now - if homework.homework_type ==3 && project.nil? && homework.homework_detail_group.base_on_project == 1 - link_to "提交作品", "javascript:void(0)", :class => 'edu-default-btn user_bluebg_btn fr mr20 pl7 pr7',:style=>"cursor:not-allowed",:title => '请先关联项目再提交作品' - else - link_to "提交作品", new_student_work_url_without_domain(homework.id),:class => 'edu-default-btn user_bluebg_btn fr mr20 pl7 pr7' - end - elsif work.nil? && setting_time.end_time < Time.now - if homework.allow_late && !homework.course.is_end - if homework.homework_type ==3 && project.nil? && homework.homework_detail_group.base_on_project == 1 - link_to "补交作品", "javascript:void(0)", :class => 'edu-default-btn user_orangebg_btn fr mr20 pl7 pr7',:style=>"cursor:not-allowed",:title => '请先关联项目再补交作品' - else - link_to "补交作品", new_student_work_url_without_domain(homework.id),:class => 'edu-default-btn user_orangebg_btn fr mr20 pl7 pr7' - end - end - elsif work - work_ids = "(" + homework.student_works.has_committed.map(&:id).join(",") + ")" - if homework.homework_detail_manual && homework.homework_detail_manual.comment_status == 3 && User.current.student_works_evaluation_distributions.where("student_work_id IN #{work_ids}").count > 0 #匿评作业,且作业状态不是在开启匿评之前 - link_to "作品匿评", student_work_index_path(:homework => homework.id), :class => 'edu-default-btn user_orangebg_btn fr mr20 pl7 pr7', :title => "开启匿评后不可修改作品" - elsif homework.homework_detail_manual && homework.homework_detail_manual.comment_status > 3 - link_to "查看作品",student_work_path(work), :class => 'edu-default-btn user_greybg_btn fr mr20 pl7 pr7', :title => "匿评已结束" - elsif setting_time.end_time >= Time.now && work.user_id == User.current.id - link_to "修改作品", edit_student_work_url_without_domain(work.id),:class => 'edu-default-btn user_orangebg_btn fr mr20 pl7 pr7' - else - link_to "查看作品", student_work_path(work), :class => 'edu-default-btn user_greybg_btn fr mr20 pl7 pr7', :title => "作业截止后不可修改作品" - end - end - else - link_to "作品".html_safe, "javascript:void(0)", :class => "edu-default-btn user_greybg_btn fr mr20 pl7 pr7", :onclick => "login_notice_box('#{signin_url_without_domain}');" - end - end - - #根据传入作业确定显示为编辑作品还是新建作品,或者显示作品数量 - def user_for_contest_work homework,is_contestant,work - count = homework.contestant_works.has_committed.count - if User.current.logged? - if User.current.member_of_contest?(homework.contest) || User.current.admin? - if !is_contestant #老师显示作品数量 - link_to "作品(#{count})", contestant_works_path(:work =>homework.id, :tab => 2), :class => "c_blue" - else #学生显示提交作品、修改作品等按钮 - work = cur_user_works_for_work homework - project = cur_user_projects_for_work homework - if work.nil? && homework.work_status == 1 - if homework.work_type ==3 && project.nil? && homework.work_detail_group.base_on_project - link_to "提交作品(#{count})","javascript:void(0)", :class => 'c_grey',:style=>"cursor:not-allowed",:title => '请先关联项目再提交作品' - else - link_to "提交作品(#{count})", new_contestant_work_path(:work => homework.id),:class => 'c_blue' - end - elsif work.nil? && homework.work_status > 1 - if homework.work_type ==3 && project.nil? && homework.work_detail_group.base_on_project - link_to "补交作品(#{count})","javascript:void(0)", :class => 'c_grey',:style=>"cursor:not-allowed",:title => '请先关联项目再补交作品' - else - link_to "补交作品(#{count})", new_contestant_work_path(:work => homework.id),:class => 'c_blue' - end - else - if homework.work_status == 1 && work.user_id == User.current.id - link_to "修改作品(#{count})", edit_contestant_work_path(work.id),:class => 'c_blue' - else - link_to "查看作品(#{count})", contestant_works_path(:work =>homework.id, :tab => 2), :class => 'c_blue', :title => "不可修改作品" - end - end - end - else - link_to "作品(#{count})", "javascript:void(0)", :class => "c_blue", :onclick => "notice_sure_box('您不是参赛者,不能提交作品
    请加入竞赛,待审批通过后再提交作品')" - end - else - link_to "作品(#{count})", "javascript:void(0)", :class => "c_blue", :onclick => "login_notice_box('#{signin_url_without_domain}');" - end - end - - #根据传入作业确定显示为提交作品、补交作品、查看作品等 - def student_for_homework_common homework - if User.current.allowed_to?(:as_teacher, homework.course) - link_to "查看作品", student_work_index_url_in_org(homework.id, 2), :class => 'hw_btn_green fr mt5', :title => "查看作品", :target => '_blank' - else User.current.member_of_course?(homework.course) - work = cur_user_works_for_homework homework - project = cur_user_projects_for_homework homework - if work.nil? && homework.end_time >= Time.now - if homework.homework_type ==3 && project.nil? && homework.homework_detail_group.base_on_project == 1 - link_to "关联项目", student_work_index_url_in_org(homework.id, 1), :class => 'hw_btn_green fr mt5',:title => '查看分组作业详情', :target => '_blank' - else - link_to "提交作品", new_student_work_url_without_domain(homework.id),:class => 'hw_btn_green fr mt5', :target => '_blank' - end - elsif work.nil? && homework.end_time < Time.now - if homework.homework_type ==3 && project.nil? && homework.homework_detail_group.base_on_project == 1 - link_to "关联项目", student_work_index_url_in_org(homework.id, 1), :class => 'hw_btn_green fr mt5',:title => '查看分组作业详情', :target => '_blank' - else - link_to "补交作品", new_student_work_url_without_domain(homework.id),:class => 'btn_orange_big fr mt5', :target => '_blank' - end - else - if homework.homework_detail_manual && homework.homework_detail_manual.comment_status == 2 #匿评作业,且作业状态不是在开启匿评之前 - link_to "作品匿评", student_work_index_url_in_org(homework.id, 2), :class => 'hw_btn_green fr mt5', :title => "开启匿评后不可修改作品", :target => '_blank' - elsif homework.homework_detail_manual && homework.homework_detail_manual.comment_status == 3 - link_to "查看作品",student_work_index_url_in_org(homework.id, 2), :class => 'hw_btn_green fr mt5', :title => "匿评已结束", :target => '_blank' - elsif homework.homework_type == 2 && homework.end_time >= Time.now#编程作业不能修改作品 - link_to "修改作品", new_student_work_url_without_domain(homework.id),:class => 'hw_btn_green fr mt5', :target => '_blank' - elsif homework.end_time >= Time.now && work.user_id == User.current.id - link_to "修改作品", edit_student_work_url_without_domain(work.id),:class => 'hw_btn_green fr mt5', :target => '_blank' - else - link_to "查看作品", student_work_index_url_in_org(homework.id, 2), :class => 'hw_btn_green fr mt5', :title => "作业截止后不可修改作品", :target => '_blank' - end - end - end - end - - def relate_project homework,is_teacher,is_in_course,user_activity_id,course_activity - if User.current.member_of_course?(homework.course) - if is_teacher - #link_to "已关联(#{homework.student_work_projects.count})",student_work_index_path(:homework => homework.id),:class => "c_blue" - else - projects = cur_user_projects_for_homework homework - works = cur_user_works_for_homework homework - if works.nil? && projects.nil? - link_to "关联项目",new_student_work_project_student_work_index_path(:homework => homework.id,:is_in_course=>is_in_course,:user_activity_id=>user_activity_id,:course_activity=>course_activity),remote: true,:class=> 'c_blue', :title=> '请选择分组作业关联的项目' - elsif works.nil? - link_to "取消关联",cancel_relate_project_student_work_index_path(:homework => homework.id,:is_in_course=>is_in_course,:user_activity_id=>user_activity_id,:course_activity=>course_activity), :confirm => "您确定要取消关联吗?", remote: true,:class => "c_blue", :title=> '取消关联项目' - else - #link_to "已关联(#{homework.student_work_projects.count})",student_work_index_path(:homework => homework.id),:class => "c_blue" - end - end - end - end - - def student_anonymous_comment homework - if homework.homework_detail_manual - case homework.homework_detail_manual.comment_status - when 1 - "未开启匿评".html_safe - when 2 - "正在匿评中".html_safe - when 3 - "匿评已结束".html_safe - end - end - end - - #获取当前用户在指定作业下提交的作业的集合 - def cur_user_works_for_homework homework - work = homework.student_works.where("user_id = ? && work_status != 0",User.current).first - # if homework.homework_type == 3 - # pro = homework.student_work_projects.where("user_id = #{User.current.id}").first - # if pro.nil? || pro.student_work_id == "" || pro.student_work_id.nil? - # work = nil - # else - # work = StudentWork.find pro.student_work_id - # end - # end - work - end - #获取当前用户在指定作业下关联的项目的集合 - def cur_user_projects_for_homework homework - homework.student_works.where("user_id = ? and project_id != 0",User.current).first - end - - #获取当前用户在指定题目下提交的作业的集合 - def cur_user_works_for_work homework - work = homework.contestant_works.where("user_id = ? && work_status != 0",User.current).first - if homework.work_type == 3 - pro = homework.contestant_work_projects.where("user_id = #{User.current.id}").first - if pro.nil? || pro.contestant_work_id == "" || pro.contestant_work_id.nil? - work = nil - else - work = ContestantWork.find pro.contestant_work_id - end - end - work - end - #获取当前用户在指定题目下关联的项目的集合 - def cur_user_projects_for_work work - work.contestant_work_projects.where("user_id = ?",User.current).first - end - - #获取当前作业的提交截止时间/互评截止时间 - def cur_homework_end_time homework - str = "" - if homework.anonymous_comment == 0 && homework.end_time && homework.end_time < Time.now && homework.homework_detail_manual - str = "互评截止:#{format_date homework.homework_detail_manual.evaluation_end}" - else - str = "提交截止:#{homework.end_time ? (format_date homework.end_time) : '       --       '}" - end - str - end - - def file_preview_tag(file, html_options={}) - if %w(pdf pptx doc docx xls xlsx).any?{|x| file.filename.downcase.end_with?(x)} - link_to '预览', download_named_attachment_path(file.id, file.filename, preview: true),html_options - end - end - - def file_preview_eye(file, html_options={}) - if %w(pdf pptx doc docx xls xlsx).any?{|x| file.filename.downcase.end_with?(x)} - link_to '', User.current.logged? ? download_named_attachment_path(file.id, file.filename, preview: true) : signin_url_without_domain, html_options - end - end - - #将文本内的/n转换为
    - def text_format text - text.gsub("&","&").gsub("<","<").gsub(">",">").gsub("\n","
    ").html_safe - end - - #评分规则显示 - def scoring_rules late_penalty,homework_id,is_teacher,absence_penalty=nil - if absence_penalty - if late_penalty.to_i == 0 && absence_penalty.to_i == 0 - notice = "尚未设置评分规则" - if is_teacher - notice += ",请 " + link_to("设置",edit_homework_common_path(homework_id),:class => "c_green") - end - elsif late_penalty.to_i != 0 && absence_penalty.to_i == 0 - notice = "迟交扣#{late_penalty}分,缺评扣分未设置" - elsif late_penalty.to_i == 0 && absence_penalty.to_i != 0 - notice = "迟交扣分未设置,缺评一个作品扣#{absence_penalty}分" - elsif late_penalty.to_i != 0 && absence_penalty.to_i != 0 - notice = "迟交扣#{late_penalty}分,缺评一个作品扣#{absence_penalty}分" - end - else - if late_penalty.to_i == 0 - notice = "尚未设置评分规则" - if is_teacher - notice += ",请 " + link_to("设置",edit_homework_common_path(homework_id),:class => "c_green") - end - else - notice = "迟交扣#{late_penalty}分" - end - end - notice.html_safe - end - - #老师C语言的标准代码 - def c_stantard_code_teacher - "// 老师您好!这是一个C语言的样例程序 -// 程序功能:输入两个整数,输出两者之和 -// 测试集合:老师可以给出多组测试集,例如: -// 输入1和2,输出3 -// 输入3和4,输出7 -// ... ... -// 系统将根据您给出的测试集对学生代码进行自动评分 - -// 特别提醒:程序采用命令行传参方式,输入通过argv传入 -// 否则您的作业标准代码将不能通过测试 - -#include //引用必须头文件 -int main(int argc, char** argv) { - int a = atoi(argv[1]); //将第一个输入转成整型 - int b = atoi(argv[2]); //将第二个输入转换为整型 - - printf(\"%d\",a+b); //输出a+b - return 0; -}".html_safe - end - - #老师C++语言的标准代码 - def c_stantard_code_teacher_ - "// 老师您好!这是一个C++语言的样例程序 -// 程序功能:输入两个整数,输出两者之和 -// 测试集合:老师可以给出多组测试集,例如: -// 输入1和2,输出3 -// 输入3和4,输出7 -// ... ... -// 系统将根据您给出的测试集对学生代码进行自动评分 - -// 特别提醒:程序采用命令行传参方式,输入通过argv传入 -// 否则您的作业标准代码将不能通过测试 - -#include //引用必须头文件 -#include -using namespace std; -int main(int argc, char** argv){ - int a = atoi(argv[1]); //将第一个输入转成整型 - int b = atoi(argv[2]); //将第二个输入转换为整型 - cout< //引用必须头文件 -int main(int argc, char** argv) { - int a = atoi(argv[1]); //将第一个输入转成整型 - int b = atoi(argv[2]); //将第二个输入转换为整型 - - printf(\"%d\",a+b); //输出a+b - return 0; -}".html_safe - end - - #学生C++语言的标准代码 - def c_stantard_code_student_ - "// 同学好!这是一个C++语言的样例程序 -// 程序功能:输入两个整数,输出两者之和 -// 测试集合:老师可以给出多组测试集,例如: -// 输入1和2,输出3 -// 输入3和4,输出7 -// ... ... -// 系统将根据您给出的测试集对学生代码进行自动评分 - -// 特别提醒:程序采用命令行传参方式,输入通过argv传入 -// 否则您的作业标准代码将不能通过测试 - -#include //引用必须头文件 -#include -using namespace std; -int main(int argc, char** argv){ - int a = atoi(argv[1]); //将第一个输入转成整型 - int b = atoi(argv[2]); //将第二个输入转换为整型 - cout<&1 | base64) - if [ -z \"$compileResult\" ]; then - compileResult=$(echo -n \"compile successfully\" | base64) - fi - -} -compile $1" - end - - def execute_command - "execute(){ - #执行命令 - executeCommand=\"EXECUTECOMMAND\" - #执行文件名 - sourceClassName=${sourceClassNames[$1 - 1]} - challengeStage=$1 - - output='' - i=0 - while [[ i -lt ${#ins[*]} ]]; do - #执行,并拼接执行结果 - result=$(echo \"${ins[$i]}\" | base64 -d | $executeCommand $sourceClassName 2>&1 | base64) - #拼接输出结果 - output=$output\\\"$result\\\", - let i++ - done - output=\"[${output%?}]\" -} - -execute $1 -" - end - - def challenge_file_path - "#用户打开的文件名,之所以传过来这个,是因为可以从这个里面提取出来执行文件名 -challengeProgramNames=(CHALLENGEPROGRAMNAMES)" - end - - - def import_ke(default_opt={}) - opt = {enable_at: false, prettify: false, init_activity: false}.merge default_opt - ss = '' - - unless Setting.at_enabled? - opt[:enable_at] = false - end - - ss += javascript_include_tag("/assets/kindeditor/kindeditor",'/assets/kindeditor/pasteimg') - if opt[:enable_at] - ss += javascript_include_tag('/assets/kindeditor/at/jquery.caret.min.js', '/assets/kindeditor/at/jquery.atwho.js', '/assets/kindeditor/at/config.js') - ss += stylesheet_link_tag("/assets/kindeditor/at/jquery.atwho.css") - end - - if opt[:prettify] - ss += javascript_include_tag 'prettify' - ss += stylesheet_link_tag 'prettify' - end - - if opt[:init_activity] - ss += javascript_include_tag "create_kindeditor" - end - - ss.html_safe - end - - #竞赛动态的更新 - def update_contest_activity type, id - contest_activity = ContestActivity.where("contest_act_type=? and contest_act_id =?", type.to_s, id).first - if contest_activity - contest_activity.updated_at = Time.now - contest_activity.save - end - end - #课程动态的更新 - def update_course_activity type, id - course_activity = CourseActivity.where("course_act_type=? and course_act_id =?", type.to_s, id).first - if course_activity - course_activity.updated_at = Time.now - course_activity.save - end - end - #首页动态更新 - def update_user_activity type, id -=begin - user_activity = UserActivity.where("act_type=? and act_id =?", type.to_s, id).first - if user_activity - user_activity.updated_at = Time.now - user_activity.save - end -=end - end - #项目动态更新 - def update_forge_activity type, id - forge_activity = ForgeActivity.where("forge_act_type=? and forge_act_id=?", type.to_s, id).first - if forge_activity - forge_activity.updated_at = Time.now - forge_activity.save - end - end - #组织动态更新 - def update_org_activity type , id -=begin - org_activity = OrgActivity.where("org_act_type=? and org_act_id =?", type.to_s, id).first - if org_activity - org_activity.updated_at = Time.now - org_activity.save - end -=end - end - #个人动态更新 - def update_principal_activity type, id -=begin - principal_activity = PrincipalActivity.where("principal_act_type=? and principal_act_id =?", type.to_s, id).first - if principal_activity - principal_activity.updated_at = Time.now - principal_activity.save - end -=end - end - - #项目按更新时间排序 - def project_sort_update projects - unless projects.empty? - project_ids = '('+projects.map{|pro|pro.project_id}.join(',')+')' - sort_projects = ForgeActivity.find_by_sql("SELECT MAX(updated_at) AS updated_at,user_id, project_id FROM forge_activities WHERE project_id IN #{project_ids} GROUP BY project_id ORDER BY MAX(updated_at) DESC") - #sort_projects = sort_projects.sort_by{|sp| (!sp.project.project_score.nil? && !sp.project.project_score.commit_time.nil?) ? '' : sp.project.project_score.commit_time} - return sort_projects - end - end - - def project_sort_first projects - unless projects.empty? - project_ids = '('+projects.map{|pro|pro.project_id}.join(',')+')' - sort_projects = ForgeActivity.find_by_sql("SELECT updated_at,user_id, project_id FROM forge_activities WHERE project_id IN #{project_ids} ORDER BY updated_at DESC limit 1") - return sort_projects - end - end -end - -def user_url_in_org(user_id) - Setting.protocol + "://" + Setting.host_name + "/users/" + user_id.to_s -end - -def project_issues_url_in_org(project_id) - Setting.protocol + "://" + Setting.host_name + "/projects/" + project_id.to_s + "/issues" -end - -def issue_url_in_org(id) - Setting.protocol + "://" + Setting.host_name + "/issues/" + id.to_s -end - -def project_boards_url_in_org(id) - Setting.protocol + "://" + Setting.host_name + "/projects/" + id.to_s + "/boards" -end - -def board_message_url_in_org(board_id, message_id) - Setting.protocol + "://" + Setting.host_name + "/boards/" + board_id.to_s + "/topics/" + message_id.to_s -end - -def project_url_in_org(id) - Setting.protocol + "://" + Setting.host_name + "/projects/" + id.to_s -end - -def homework_common_index_url_in_org(course_id) - Setting.protocol + "://" + Setting.host_name + "/homework_common?course=" + course_id.to_s -end - -def student_work_index_url_in_org(homework_id, tab = 1, is_focus = '', show_work_id = '') - if is_focus != '' - Setting.protocol + "://" + Setting.host_name + "/student_work?homework=" + homework_id.to_s + "&tab=" + tab.to_s + "&is_focus=" + is_focus.to_s - elsif show_work_id != '' - Setting.protocol + "://" + Setting.host_name + "/student_work?homework=" + homework_id.to_s + "&tab=" + tab.to_s + "&show_work_id=" + show_work_id.to_s - else - Setting.protocol + "://" + Setting.host_name + "/student_work?homework=" + homework_id.to_s + "&tab=" + tab.to_s - end -end - - -def contestant_work_index_url_in_org(work_id, tab = 1, is_focus = '', show_work_id = '') - if is_focus != '' - Setting.protocol + "://" + Setting.host_name + "/contestant_work?work=" + work_id.to_s + "&tab=" + tab.to_s + "&is_focus=" + is_focus.to_s - elsif show_work_id != '' - Setting.protocol + "://" + Setting.host_name + "/contestant_work?work=" + work_id.to_s + "&tab=" + tab.to_s + "&show_work_id=" + show_work_id.to_s - else - Setting.protocol + "://" + Setting.host_name + "/contestant_work?work=" + work_id.to_s + "&tab=" + tab.to_s - end -end - -def course_url_in_org(course_id) - Setting.protocol + "://" + Setting.host_name + "/courses/" + course_id.to_s -end - -def user_watchlist_url_in_org(id) - Setting.protocol + "://" + Setting.host_name + "/users/" + id.to_s + "/user_watchlist" -end - -def user_fanslist_url_in_org(id) - Setting.protocol + "://" + Setting.host_name + "/users/" + id.to_s + "/user_fanslist" -end - -def user_blogs_url_in_org(user_id) - Setting.protocol + "://" + Setting.host_name + "/users/" + user_id.to_s + "/blogs" -end - -def feedback_url_in_org(user_id) - Setting.protocol + "://" + Setting.host_name + "/users/" + user_id.to_s + "/user_newfeedback" -end - -def user_activities_url_in_org(user_id) - Setting.protocol + "://" + Setting.host_name + "/users/" + user_id.to_s + "/user_activities" -end - -def course_news_index_url_in_org(course_id) - Setting.protocol + "://" + Setting.host_name + "/courses/" + course_id.to_s + "/news" -end - -def news_url_in_org(news_id) - Setting.protocol + "://" + Setting.host_name + "/news/" + news_id.to_s -end - -def course_boards_url_in_org(course_id) - Setting.protocol + "://" + Setting.host_name + "/courses/" + course_id.to_s + "/boards" -end - -def logout_url_without_domain - Setting.protocol + "://" + Setting.host_name + "/logout" -end - -def signin_url_without_domain - Setting.protocol + "://" + Setting.host_name + "/login?login=true" -end - -def register_url_without_domain - Setting.protocol + "://" + Setting.host_name + "/login?login=false" -end - -def new_student_work_url_without_domain(homework_id) - Setting.protocol + "://" + Setting.host_name + "/student_work/new?homework=" + homework_id.to_s -end - -def edit_student_work_url_without_domain(homework_id) - Setting.protocol + "://" + Setting.host_name + "/student_work/" + homework_id.to_s + "/edit" -end - -def download_named_attachment_url_without_domain(id, filename, option={}) - attachment_id = (Attachment === id ? id.id : id) - Setting.protocol + "://" + Setting.host_name + "/attachments/download/" + attachment_id.to_s + "/" + filename -end - -def named_attachment_url_without_domain(id, filename, option={}) - attachment_id = (Attachment === id ? id.id : id) - Setting.protocol + "://" + Setting.host_name + "/attachments/" + attachment_id.to_s + "/" + filename -end - -#判断是否为默认的组织栏目 -def is_default_field? field - (field.name == 'activity' || field.name == 'course' || field.name == 'project' ) && field.field_type == 'default' -end - -def host_with_protocol - return Setting.protocol + "://" + Setting.host_name -end - -def secdomain_with_protocol secdomain - return Setting.protocol + "://" + secdomain + ".trustie.net" -end - -#根据回复类型获取回复 -def get_reply_by_type type, reply_id - reply = nil - case type - when 'HomeworkCommon', 'Work', 'GraduationTopic', 'GraduationTask' - reply = JournalsForMessage.find reply_id - when 'JournalsForMessage' - reply = JournalsForMessage.find reply_id - when 'Message' - reply = Message.find reply_id - when 'BlogComment' - reply = BlogComment.find reply_id - when 'OrgDocumentComment' - reply = OrgDocumentComment.find reply_id - when 'News','Comment' - reply = Comment.find reply_id - when 'Issue', 'TrainingTask' - reply = Journal.find reply_id - when 'Journal' - reply = Journal.find reply_id - when 'Syllabus' - reply = JournalsForMessage.find reply_id - when 'Memo' - reply = Memo.find reply_id - when 'Challenge' - reply = Discuss.find reply_id - end - reply -end - -#获取不包含子节点的回复(前三个) -def get_no_children_comments comments - result = {} - no_children_comments = [] - count = 0 - three_more = false - comments.each do |comment| - if comment.children.blank? - count = count + 1 - if count > 3 - three_more = true - end - break if count > 3 - no_children_comments << comment - end - end - result[:three_more] = three_more - result[:no_children_comments] = no_children_comments - result -end - -#获取不包含子节点的回复(所有) -def get_no_children_comments_all comments - no_children_comments = [] - comments.each do |comment| - if comment.children.blank? - no_children_comments << comment - end - end - no_children_comments -end - -#获取回复的所有父节点 -def get_reply_parents parents_rely, comment - unless comment.parent.nil? - parents_rely << comment.parent - get_reply_parents parents_rely, comment.parent - end - parents_rely -end - -#获取回复的所有父节点(不包括根节点) -def get_reply_parents_no_root parents_rely, comment - if !comment.parent.nil? && !comment.parent.parent.nil? - parents_rely << comment.parent - get_reply_parents_no_root parents_rely, comment.parent - end - parents_rely -end - -def get_all_children_ex result, jour - if jour.kind_of? Message - jour.children.includes(:author, :praise_tread_cache).each do |jour_child| - result << jour_child - get_all_children_ex result, jour_child - end - elsif (jour.kind_of? JournalsForMessage) || (jour.kind_of? BlogComment) || (jour.kind_of? OrgDocumentComment) - jour.children.each do |jour_child| - result << jour_child - get_all_children_ex result, jour_child - end - end - result -end - -#获取所有子节点 -def get_all_children result, jour - if jour.kind_of? Message - jour.children.includes(:author, :praise_tread_cache).each do |jour_child| - result << jour_child - get_all_children_ex result, jour_child - end - elsif (jour.kind_of? JournalsForMessage) || (jour.kind_of? BlogComment) || (jour.kind_of? OrgDocumentComment) - jour.children.each do |jour_child| - result << jour_child - get_all_children_ex result, jour_child - end - end - if jour.respond_to?(:created_on) - result.sort! { |a,b| b.created_on <=> a.created_on } - elsif jour.respond_to?(:created_at) - result.sort! { |a,b| b.created_at <=> a.created_at } - end - result -end - -#获取该节点所在的帖子 -def get_root_parent comment - while comment.parent - comment = comment.parent - end - comment -end - - - -#将有置顶属性的提到数组前面 -def sort_by_sticky topics - tmpTopics = [] - tmpIndex = 0 - topics.each do |topic| - if topic.sticky == 1 - tmpTopics[tmpIndex] = topic - tmpIndex = tmpIndex + 1 - end - end - - topics.each do |topic| - if topic.sticky == 0 - tmpTopics[tmpIndex] = topic - tmpIndex = tmpIndex + 1 - end - end - return tmpTopics -end - -#按人气排序的时候 相同的人气必须按某种时间顺序排序 有置顶属性 -def sortby_time_countcommon_hassticky topics,sortstr - tmpTopics = [] - tmpTopics = topics - tStart = -1 - tEnd = -1 - - tmpTopics_1 = [] - tmpIndex = 0 - - tmpTopics.each_with_index do |topic,index| - if topic.sticky == 0 - if tStart == -1 - if (index != tmpTopics.count-1) && (topic[:infocount] == tmpTopics[index+1][:infocount]) - tStart = index - end - else - if ((topic[:infocount] == tmpTopics[index-1][:infocount]) && ((index != tmpTopics.count-1) && (topic[:infocount] == tmpTopics[index+1][:infocount]))) - tEnd = index - else - if (topic[:infocount] == tmpTopics[index-1][:infocount]) - tEnd = index - end - if tEnd > tStart - for i in tStart..tEnd - tmpTopics_1[tmpIndex] = tmpTopics[i] - tmpIndex = tmpIndex + 1 - end - - if sortstr == "created_at" - tmpTopics_1 = tmpTopics_1.sort{|x,y| y[:created_at].to_i <=> x[:created_at].to_i } - elsif sortstr == "created_on" - tmpTopics_1 = tmpTopics_1.sort{|x,y| y[:created_on].to_i <=> x[:created_on].to_i } - elsif sortstr == "updated_at" - tmpTopics_1 = tmpTopics_1.sort{|x,y| y[:updated_at].to_i <=> x[:updated_at].to_i } - elsif sortstr == "updated_on" - tmpTopics_1 = tmpTopics_1.sort{|x,y| y[:updated_on].to_i <=> x[:updated_on].to_i } - end - - tmpIndex = 0 - for i in tStart..tEnd - tmpTopics[i] = tmpTopics_1[tmpIndex] - tmpIndex = tmpIndex + 1 - end - end - tStart = -1 - tEnd = -1 - tmpTopics_1 = [] - tmpIndex = 0 - end - end - end - end - return tmpTopics -end - -#按人气排序的时候 相同的人气必须按某种时间顺序排序 无置顶属性 -def sortby_time_countcommon_nosticky topics,sortstr - tmpTopics = [] - tmpTopics = topics - tStart = -1 - tEnd = -1 - - tmpTopics_1 = [] - tmpIndex = 0 - - tmpTopics.each_with_index do |topic,index| - if tStart == -1 - if (index != tmpTopics.count-1) && (topic[:infocount] == tmpTopics[index+1][:infocount]) - tStart = index - end - else - if ((topic[:infocount] == tmpTopics[index-1][:infocount]) && ((index != tmpTopics.count-1) && (topic[:infocount] == tmpTopics[index+1][:infocount]))) - tEnd = index - else - if (topic[:infocount] == tmpTopics[index-1][:infocount]) - tEnd = index - end - if tEnd > tStart - for i in tStart..tEnd - tmpTopics_1[tmpIndex] = tmpTopics[i] - tmpIndex = tmpIndex + 1 - end - - if sortstr == "created_at" - tmpTopics_1 = tmpTopics_1.sort{|x,y| y[:created_at].to_i <=> x[:created_at].to_i } - elsif sortstr == "created_on" - tmpTopics_1 = tmpTopics_1.sort{|x,y| y[:created_on].to_i <=> x[:created_on].to_i } - elsif sortstr == "updated_at" - tmpTopics_1 = tmpTopics_1.sort{|x,y| y[:updated_at].to_i <=> x[:updated_at].to_i } - elsif sortstr == "updated_on" - tmpTopics_1 = tmpTopics_1.sort{|x,y| y[:updated_on].to_i <=> x[:updated_on].to_i } - end - - tmpIndex = 0 - for i in tStart..tEnd - tmpTopics[i] = tmpTopics_1[tmpIndex] - tmpIndex = tmpIndex + 1 - end - end - tStart = -1 - tEnd = -1 - tmpTopics_1 = [] - tmpIndex = 0 - end - end - end - return tmpTopics -end - -def strip_html(text,len=0,endss="...") - ss = "" - if !text.nil? && text.length>0 - ss=text.gsub(/<\/?.*?>/, '').strip - ss = ss.gsub(/ */, ' ') - - if len > 0 && ss.length > len - ss = ss[0, len] + endss - elsif len > 0 && ss.length <= len - ss = ss - #ss = truncate(ss, :length => len) - end - end - return ss -end - -def message_content content - content = (strip_html content).strip - content = content.gsub(/\s+/, " ") - if content.gsub(" ", "") == "" - content = "[非文本消息]" - end - content -end - -def get_work_index(hw,is_teacher) - if is_teacher - works = hw.contest.works.order("created_at asc") - else - works = hw.contest.works.where("publish_time <= '#{Date.today}'").order("created_at asc") - end - hw_ids = works.map{|hw| hw.id} if !works.empty? - index = hw_ids.index(hw.id).to_i - return index -end - -def get_poll_index(poll, course, is_teacher) - if is_teacher - polls = course.polls.order("IF(ISNULL(publish_time),0,1),publish_time DESC, created_at DESC") - elsif User.current.member_of_course?(course) - member = course.members.where(:user_id => User.current.id).first - if member.try(:course_group_id).to_i == 0 - polls = course.polls.where("publish_time <= '#{Time.now}' and unified_setting = 1").order("IF(ISNULL(publish_time),0,1),publish_time DESC, created_at DESC") - else - not_poll_ids = course.poll_group_settings.where("course_group_id = #{member.try(:course_group_id)} and (publish_time > '#{Time.now}' or publish_time is null)") - not_poll_ids = not_poll_ids.blank? ? "(-1)" : "(" + not_poll_ids.map(&:poll_id).join(",") + ")" - polls = course.polls.where("publish_time <= '#{Time.now}' and id not in #{not_poll_ids}").order("IF(ISNULL(publish_time),0,1),publish_time DESC, created_at DESC") - end - else - polls = course.polls.where("publish_time <= '#{Time.now}'").order("IF(ISNULL(publish_time),0,1),publish_time DESC, created_at DESC") - end - poll_ids = polls.map{|poll| poll.id} if !polls.blank? - index = poll_ids.length - 1 - poll_ids.index(poll.id).to_i - return index -end - -def get_ex_index(exercise, course, is_teacher) - if is_teacher - exercises = course.exercises.order("IF(ISNULL(publish_time),0,1),publish_time DESC, created_at DESC") - elsif User.current.member_of_course?(course) - member = course.members.where(:user_id => User.current.id).first - if member.try(:course_group_id).to_i == 0 - exercises = course.exercises.where("publish_time <= '#{Time.now}' and unified_setting = 1").order("IF(ISNULL(publish_time),0,1),publish_time DESC, created_at DESC") - else - not_exercise_ids = course.exercise_group_settings.where("course_group_id = #{member.try(:course_group_id)} and (publish_time > '#{Time.now}' or publish_time is null)") - not_exercise_ids = not_exercise_ids.blank? ? "(-1)" : "(" + not_exercise_ids.map(&:exercise_id).join(",") + ")" - exercises = course.exercises.where("publish_time <= '#{Time.now}' and id not in #{not_exercise_ids}").order("IF(ISNULL(publish_time),0,1),publish_time DESC, created_at DESC") - end - else - exercises = course.exercises.where("publish_time <= '#{Time.now}'").order("IF(ISNULL(publish_time),0,1),publish_time DESC, created_at DESC") - end - ex_ids = exercises.map{|ex| ex.id} if !exercises.blank? - index = ex_ids.length - 1 - ex_ids.index(exercise.id).to_i - return index -end - -def get_task_index task, is_teacher - if is_teacher - tasks = task.course.graduation_tasks.order("IF(ISNULL(publish_time),0,1),publish_time DESC, created_at DESC") - else - tasks = task.course.graduation_tasks.where("publish_time <= '#{Time.now}'").order("IF(ISNULL(publish_time),0,1),publish_time DESC, created_at DESC") - end - task_ids = tasks.pluck(:id) - index = task_ids.length - task_ids.index(task.id).to_i - return index -end - -def get_hw_index(hw,is_teacher,type=0) - homework_commons = hw.course.homework_commons - course = hw.course - category_str = hw.course_homework_category_id.nil? ? "is null" : "= #{hw.course_homework_category_id}" - if is_teacher - if type != 0 - homeworks = homework_commons.where("homework_commons.homework_type = #{type} and course_homework_category_id #{category_str}").order("IF(ISNULL(publish_time),0,1),publish_time DESC, created_at DESC") - else - homeworks = homework_commons.where("course_homework_category_id #{category_str}").order("publish_time desc") - end - elsif User.current.member_of_course?(course) - member = course.members.where(:user_id => User.current.id).first - if member.try(:course_group_id).to_i == 0 - if type != 0 - homeworks = homework_commons.where("course_homework_category_id #{category_str} and homework_commons.homework_type = #{type} and publish_time <= '#{Time.now}' and unified_setting = 1").order("IF(ISNULL(publish_time),0,1),publish_time DESC, created_at DESC") - else - homeworks = homework_commons.where("course_homework_category_id #{category_str} and publish_time <= '#{Time.now}' and unified_setting = 1").order("IF(ISNULL(publish_time),0,1),publish_time DESC, created_at DESC") - end - else - not_homework_ids = course.homework_group_settings.where("course_group_id = #{member.try(:course_group_id)} and (publish_time > '#{Time.now}' or publish_time is null)") - not_homework_ids = not_homework_ids.blank? ? "(-1)" : "(" + not_homework_ids.map(&:homework_common_id).join(",") + ")" - if type != 0 - homeworks = homework_commons.where("course_homework_category_id #{category_str} and homework_commons.homework_type = #{type} and publish_time <= '#{Time.now}' and id not in #{not_homework_ids}").order("IF(ISNULL(publish_time),0,1),publish_time DESC, created_at DESC") - else - homeworks = homework_commons.where("course_homework_category_id #{category_str} and publish_time <= '#{Time.now}' and id not in #{not_homework_ids}").order("IF(ISNULL(publish_time),0,1),publish_time DESC, created_at DESC") - end - end - else - if type != 0 - homeworks = homework_commons.where("course_homework_category_id #{category_str} and homework_commons.homework_type = #{type} and publish_time <= '#{Time.now}'").order("IF(ISNULL(publish_time),0,1),publish_time DESC, created_at DESC") - else - homeworks = homework_commons.where("course_homework_category_id #{category_str} and publish_time <= '#{Time.now}'").order("IF(ISNULL(publish_time),0,1),publish_time DESC, created_at DESC") - end - end - hw_ids = homeworks.map{|hw| hw.id} if !homeworks.blank? - index = hw_ids.blank? ? 1 : (hw_ids.length - 1 - hw_ids.index(hw.id).to_i) - return index -end - -def get_hw_status homework_common - str = "" - if homework_common.homework_detail_manual - if homework_common.homework_detail_manual.comment_status == 0 && homework_common.publish_time.nil? - str += '未发布' - elsif homework_common.homework_detail_manual.comment_status == 0 - str += '未发布' - elsif homework_common.homework_detail_manual.comment_status == 1 - if homework_common.anonymous_comment == 0 - str += '未开启匿评' - else - str += '匿评已禁用' - end - if homework_common.end_time >= Time.now - str += '作品提交中' - elsif homework_common.end_time < Time.now && homework_common.anonymous_comment == 1 && User.current.allowed_to?(:as_teacher, homework_common.course) - str += '教师评阅中' - else - str += '作品补交中' - end - elsif homework_common.homework_detail_manual.comment_status == 2 - if homework_common.anonymous_comment == 0 - str += '匿评中' - else - str += '匿评已禁用' - end - str += '教师评阅中' - elsif homework_common.homework_detail_manual.comment_status == 3 - if homework_common.anonymous_comment == 0 - str += '匿评已结束' - else - str += '匿评已禁用' - end - str += '教师评阅中' - end - end - str -end - -def get_cw_status contest_work - str = "" - if contest_work.work_status == 0 && contest_work.publish_time.nil? - str += '挂起' - elsif contest_work.work_status == 0 - str += '未发布' - elsif contest_work.work_status == 1 - if Time.parse(contest_work.end_time.to_s).strftime("%Y-%m-%d") >= Time.now.strftime("%Y-%m-%d") - str += '作品提交中' - else - str += '作品补交中' - end - elsif contest_work.work_status == 2 - str += '提交已截止' - elsif contest_work.work_status == 3 - str += '在线评审中' - elsif contest_work.work_status == 4 - str += '评审已截止' - end - str -end - - -def get_group_member_names user_ids - result = "" - user_ids.each do |user_id| - user = User.where(:id => user_id).first - unless user.nil? - if result != "" - result += "、#{user.show_name}" - else - result += user.show_name - end - end - end - result -end - -def get_contest_group_member_names work - result = "" - unless work.nil? - work.contestant_work_projects.each do |member| - user = User.where(:id => member.user_id).first - unless user.nil? - if result != "" - result += "、#{user.show_name}" - else - result += user.show_name - end - end - end - end - result -end - -def course_syllabus_option syllabus_id = nil - syllabus_members = SyllabusMember.where("user_id = #{User.current.id}") - syllabus_ids = syllabus_members.map{|mem| mem.syllabus_id} - if syllabus_id && !syllabus_ids.include?(syllabus_id) - syllabus_ids << syllabus_id - end - syllabus_ids = syllabus_ids.empty? ? "(-1)" : "(" + syllabus_ids.join(',') + ")" - syllabuses = Syllabus.where("id in #{syllabus_ids}") - type = [] - option1 = [] - option1 << "请选择课程" - option1 << 0 - type << option1 - unless syllabuses.empty? - syllabuses.each do |syllabus| - option = [] - option << syllabus.title - option << syllabus.id - type << option - end - end - type -end - -def create_polls_tiding poll, members - tid_str = "" - if poll.tidings.where(:parent_container_type => "PollPublish", :user_id => poll.course.teachers.map(&:user_id)).count == 0 - poll.course.teachers.find_each do |member| - tid_str += "," if tid_str != "" - tid_str += "(#{member.user_id}, #{poll.user_id}, #{poll.id}, 'Poll', #{poll.id}, 'PollPublish', #{poll.course.id}, 'Course', 0, 'Poll', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')" - end - end - - members.find_each do |student| - tid_str += "," if tid_str != "" - tid_str += "(#{student.user_id}, #{poll.user_id}, #{poll.id}, 'Poll', #{poll.id}, 'PollPublish', #{poll.course_id}, 'Course', 0, 'Poll', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')" - end - - if tid_str != "" - tid_sql = "insert into tidings (user_id, trigger_user_id, container_id, container_type, parent_container_id, parent_container_type, belong_container_id, belong_container_type, viewed, tiding_type, created_at, updated_at) values" + tid_str - ActiveRecord::Base.connection.execute tid_sql - end -end - -def create_polls_list poll - str = "" - poll.course.student.find_each do |student| - str += "," if str != "" - str += "(#{student.user_id},#{poll.id}, 0, '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')" - end - - if str != "" - sql = "insert into poll_users (user_id, poll_id, commit_status, created_at, updated_at) values" + str - ActiveRecord::Base.connection.execute sql - end -end - -def create_exercises_tiding exercise, members - tid_str = "" - if exercise.tidings.where(:parent_container_type => "ExercisePublish", :user_id => exercise.course.teachers.map(&:user_id)).count == 0 - exercise.course.teachers.find_each do |member| - tid_str += "," if tid_str != "" - tid_str += "(#{member.user_id}, #{exercise.user_id}, #{exercise.id}, 'Exercise', #{exercise.id}, 'ExercisePublish', #{exercise.course.id}, 'Course', 0, 'Exercise', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')" - end - end - - members.find_each do |student| - tid_str += "," if tid_str != "" - tid_str += "(#{student.user_id}, #{exercise.user_id}, #{exercise.id}, 'Exercise', #{exercise.id}, 'ExercisePublish', #{exercise.course_id}, 'Course', 0, 'Exercise', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')" - end - - if tid_str != "" - tid_sql = "insert into tidings (user_id, trigger_user_id, container_id, container_type, parent_container_id, parent_container_type, belong_container_id, belong_container_type, viewed, tiding_type, created_at, updated_at) values" + tid_str - ActiveRecord::Base.connection.execute tid_sql - end -end - -def create_exercises_list exercise - str = "" - exercise.course.student.find_each do |student| - str += "," if str != "" - str += "(#{student.user_id}, #{exercise.id}, 0, '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')" - end - - if str != "" - sql = "insert into exercise_users (user_id, exercise_id, commit_status, created_at, updated_at) values" + str - ActiveRecord::Base.connection.execute sql - end -end - -def create_works_tiding homework, members - tid_str = "" - if homework.tidings.where(:parent_container_type => "HomeworkPublish", :user_id => homework.course.teachers.map(&:user_id)).count == 0 - homework.course.teachers.find_each do |member| - tid_str += "," if tid_str != "" - tid_str += "(#{member.user_id}, #{homework.user_id}, #{homework.id}, 'HomeworkCommon', #{homework.id}, 'HomeworkPublish', #{homework.course.id}, 'Course', 0, 'HomeworkCommon', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')" - end - end - members.find_each do |student| - tid_str += "," if tid_str != "" - tid_str += "(#{student.user_id}, #{homework.user_id}, #{homework.id}, 'HomeworkCommon', #{homework.id}, 'HomeworkPublish', #{homework.course_id}, 'Course', 0, 'HomeworkCommon', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')" - end - if tid_str != "" - tid_sql = "insert into tidings (user_id, trigger_user_id, container_id, container_type, parent_container_id, parent_container_type, belong_container_id, belong_container_type, viewed, tiding_type, created_at, updated_at) values" + tid_str - ActiveRecord::Base.connection.execute tid_sql - end -end - -def create_works_list homework - if homework.course.present? && homework.course.student.count > 0 - str = "" - name = homework.name - name_str = name + "的作品提交" - homework.course.student.each do |student| - str += "," if str != "" - str += "('#{name_str}',#{homework.id},#{student.user_id}, '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')" - end - if str != "" - sql = "insert into student_works (name, homework_common_id, user_id, created_at, updated_at) values" + str - ActiveRecord::Base.connection.execute sql - end - end -end - -def add_to_homework_bank_f homework - homework_bank = HomeworkBank.new(:name => homework.name, :description => homework.description, :user_id => User.current.id, :homework_type => homework.homework_type, - :quotes => 1, :is_public => 0, :applicable_syllabus => homework.course.course_list_name, :homework_common_id => homework.id, - :reference_answer => homework.reference_answer, :course_list_id => homework.course.course_list_id) - if homework.homework_type == 2 && homework.homework_detail_programing - homework_bank.language = homework.homework_detail_programing.language - homework.homework_tests.each_with_index do |homework_test| - homework_bank.homework_bank_tests << HomeworkBankTest.new( - input: homework_test.input, - output: homework_test.output - ) - end - homework.homework_samples.each_with_index do |homework_test| - homework_bank.homework_bank_samples << HomeworkBankSample.new( - input: homework_test.input, - output: homework_test.output - ) - end - elsif homework.homework_type == 3 && homework.homework_detail_group - homework_bank.min_num = homework.homework_detail_group.min_num - homework_bank.max_num = homework.homework_detail_group.max_num - homework_bank.base_on_project = homework.homework_detail_group.base_on_project - end - homework.attachments.each do |attachment| - att = attachment.copy - att.container_id = nil - att.container_type = nil - att.author_id = homework_bank.user_id - att.copy_from = attachment.id - att.save - homework_bank.attachments << att - end - homework_bank -end - -# 获取项目动态更新时间 -def get_forge_act_message(act, type) - forge_act = ForgeActivity.where(:forge_act_id => act.id, :forge_act_type => type).first - format_time(forge_act.nil? ? act.created_on : forge_act.try(:updated_at)) -end - -#作业类型 -def homework_type_option - type = [] - option0 = [] - option0 << "请选择作业类型" - option0 << 0 - option1 = [] - option1 << "普通作业" - option1 << 1 - option2 = [] - option2 << "编程作业" - option2 << 2 - option3 = [] - option3 << "分组作业" - option3 << 3 - type << option0 - type << option1 - type << option2 - type << option3 - type -end - -# 竞赛题目类型 -def work_type_option - type = [] - option0 = [] - option0 << "请选择竞赛类型" - option0 << 0 - option1 = [] - option1 << "普通竞赛" - option1 << 1 - # option2 = [] - # option2 << "编程作业" - # option2 << 2 - option3 = [] - option3 << "团队竞赛" - option3 << 3 - type << option0 - type << option1 - #type << option2 - type << option3 - type -end - -# 当前用户可见的某竞赛下的作品数 -def visable_contest_work contest - if User.current.admin? || User.current.admin_of_contest?(contest) - work_num = contest.works.count - else - work_num = contest.works.where("work_status > 0").count - end - work_num -end - -def searchstudent_by_name users, name - mems = [] - if name != "" - name = name.to_s.downcase - users.each do |m| - username = m.lastname.to_s.downcase + m.firstname.to_s.downcase - if(m.login.to_s.downcase.include?(name) || m.user_extensions[:student_id].to_s.downcase.include?(name) || username.include?(name)) - mems << m - end - end - else - mems = users - end - mems -end - -def contest_feedback_count - @contest.journals_for_messages.where('m_parent_id IS NULL').count -end - -def add_reply_adapter obj, options - #modify by nwb - #添加对课程留言的支持 - #留言回复应该不关系其所属的Class,而关心的是其所属的父留言 - case obj.jour_type - when 'Principal' - obj.jour.add_jour(nil, nil, nil, options) - when 'Project' - Project.add_new_jour(nil, nil, obj.jour_id, options) - when 'Course' - Course.add_new_jour(nil, nil, obj.jour_id, options) - when 'Contest' - Contest.add_new_jour(nil, nil, obj.jour_id, options) - #when 'Bid' - # obj.jour.add_jour(nil, nil, nil, options) - #when 'Contest' - # obj.jour.add_jour(nil, nil, obj.jour_id, options) - #when 'Softapplication' - # obj.jour.add_jour(nil, nil, obj.jour_id, options) - #when 'HomeworkAttach' - # obj.jour.add_jour(nil, nil, obj.jour_id, options) - end - # 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 - -def sy_resources syllabus - courses = syllabus.courses.not_deleted - attachments = Attachment.where(:container_type => 'Course', :container_id => courses.map(&:id)) - resources = ResourceBank.where(:id => attachments.map(&:resource_bank_id)) - resources -end - -def sy_homeworks syllabus - courses = syllabus.courses.not_deleted - homeworks = HomeworkCommon.where(:course_id => courses.map(&:id)) - homeworks = HomeworkBank.where(:id => homeworks.map(&:homework_bank_id)) - homeworks -end - -# 课堂学生的评测次数 -def course_eval_count course - Output.find_by_sql("select sum(g.evaluate_count) as evaluating_count from games g inner join - (select myshixun_id from student_works sw inner join homework_commons hc on sw.homework_common_id=hc.id and - sw.myshixun_id !=0 and hc.course_id=#{course.id} and homework_type=4) aa on g.myshixun_id=aa.myshixun_id").first.try(:evaluating_count).to_i -end - -# 可以查看到资源库的资源 -def visable_attachemnts_incourse course - return[] unless course - result = [] - course.attachments.each do |attachment| - if attachment.unified_setting - if attachment.is_public? && attachment.is_publish == 1 || User.current == attachment.author || User.current.allowed_to?(:as_teacher,course) || (User.current.member_of_course?(course) && attachment.is_publish == 1) || User.current.admin? - result << attachment - end - else - if attachment.is_public? && attachment.is_publish == 1 && !User.current.member_of_course?(course) || User.current == attachment.author || User.current.allowed_to?(:as_teacher,course) || User.current.admin? - result << attachment - elsif User.current.member_of_course?(course) && attachment.is_publish == 1 - member = course.members.where(:user_id => User.current.id).first - if member.try(:course_group_id).to_i == 0 && attachment.unified_setting - result << attachment - elsif attachment.attachment_group_settings.where("course_group_id = #{member.try(:course_group_id)} and publish_time > '#{Time.now}'").count == 0 - result << attachment - end - end - end - end - result -end - -def visable_course_poll course, is_teacher - if is_teacher - poll_num = course.polls.count - elsif User.current.member_of_course?(course) - member = course.members.where(:user_id => User.current.id).first - if member.try(:course_group_id).to_i == 0 - poll_num = course.polls.where("publish_time <= '#{Time.now}' and unified_setting = 1").count - else - not_poll_ids = course.poll_group_settings.where("course_group_id = #{member.try(:course_group_id)} and (publish_time > '#{Time.now}' or publish_time is null)") - not_poll_ids = not_poll_ids.blank? ? "(-1)" : "(" + not_poll_ids.map(&:poll_id).join(",") + ")" - poll_num = course.polls.where("publish_time <= '#{Time.now}' and id not in #{not_poll_ids}").count - end - else - poll_num = course.polls.where("publish_time <= '#{Time.now}' and unified_setting = 1").count - end - poll_num -end - -def visable_course_exercise course, is_teacher - if is_teacher - exercise_num = course.exercises.count - elsif User.current.member_of_course?(course) - member = course.members.where(:user_id => User.current.id).first - if member.try(:course_group_id).to_i == 0 - exercise_num = course.exercises.where("publish_time <= '#{Time.now}' and unified_setting = 1").count - else - not_exercise_ids = course.exercise_group_settings.where("course_group_id = #{member.try(:course_group_id)} and (publish_time > '#{Time.now}' or publish_time is null)") - not_exercise_ids = not_exercise_ids.blank? ? "(-1)" : "(" + not_exercise_ids.map(&:exercise_id).join(",") + ")" - exercise_num = course.exercises.where("publish_time <= '#{Time.now}' and id not in #{not_exercise_ids}").count - end - else - exercise_num = course.exercises.where("publish_time <= '#{Time.now}' and unified_setting = 1").count - end - exercise_num -end - -def visable_course_homework course, type=0, is_teacher, category_id - category_str = category_id.nil? ? "is null" : "= #{category_id}" - if is_teacher - if type != 0 - homework_num = course.homework_commons.where("homework_type = #{type} and course_homework_category_id #{category_str}").count - else - homework_num = course.homework_commons.where(:homework_type => [1,3,4]).count - end - elsif User.current.member_of_course?(course) - member = course.members.where(:user_id => User.current.id).first - if member.try(:course_group_id).to_i == 0 - if type != 0 - homework_num = course.homework_commons.where("homework_commons.homework_type = #{type} and publish_time <= '#{Time.now}' and unified_setting = 1 and course_homework_category_id #{category_str}").count - else - homework_num = course.homework_commons.where("homework_type in (1, 3, 4) and publish_time <= '#{Time.now}' and unified_setting = 1").count - end - else - not_homework_ids = course.homework_group_settings.where("course_group_id = #{member.try(:course_group_id)} and (publish_time > '#{Time.now}' or publish_time is null)") - not_homework_ids = not_homework_ids.blank? ? "(-1)" : "(" + not_homework_ids.map(&:homework_common_id).join(",") + ")" - if type != 0 - homework_num = course.homework_commons.where("homework_commons.homework_type = #{type} and publish_time <= '#{Time.now}' and id not in #{not_homework_ids} and course_homework_category_id #{category_str}").count - else - homework_num = course.homework_commons.where("homework_type in (1, 3, 4) and publish_time <= '#{Time.now}' and id not in #{not_homework_ids}").count - end - end - else - if type != 0 - homework_num = course.homework_commons.where("homework_type = #{type} and publish_time <= '#{Time.now}' and unified_setting = 1 and course_homework_category_id #{category_str}").count - else - homework_num = course.homework_commons.where("homework_type in (1, 3, 4) and publish_time <= '#{Time.now}' and unified_setting = 1").count - end - end - homework_num -end - -def visible_task_count course, is_teacher - task_count = 0 - if is_teacher - task_count = course.graduation_tasks.count - else - task_count = course.graduation_tasks.where("publish_time <= '#{Time.now}'").count - end - task_count -end - -def update_shixun_work_status homework - shixun = homework.shixuns.first - student_works = homework.student_works.where(:work_status => 0) - homework_challenge_settings = homework.homework_challenge_settings - challeng_ids = homework_challenge_settings.map(&:challenge_id) - # 取已发布的作品 - if homework.unified_setting - student_works = student_works - else - setting = homework.homework_group_settings.where("publish_time < '#{Time.now}'") - if setting.blank? - student_works = student_works.where("0=1") - else - users = homework.course.members.where(:course_group_id => setting.map(&:course_group_id)) - student_works = student_works.where(:user_id => users.map(&:user_id)) - end - end - # 已发布作品且状态为未提交的作品 如果有开启过实训则更新状态 - myshixuns = Myshixun.where(:shixun_id => shixun.id, :user_id => student_works.map(&:user_id)) - myshixuns.each do |myshixun| - work = student_works.where(:user_id => myshixun.user_id).first - member = Member.find_by_sql("select course_group_id from members where course_id = #{homework.course_id} and user_id = #{work.user_id}").first - setting_time = homework_group_setting homework, member.try(:course_group_id) - games = myshixun.games.where(:challenge_id => challeng_ids) - myshixun_endtime = games.select{|game| game.status == 2}.size == games.size ? games.map(&:end_time).max : nil - compelete_status = 0 - if myshixun_endtime.present? && myshixun_endtime < setting_time.end_time - if myshixun_endtime < setting_time.publish_time - compelete_status = 2 - else - compelete_status = 1 - end - end - if setting_time.end_time > Time.now - work.update_attributes(:work_status => 1, :late_penalty => 0, :commit_time => myshixun.updated_at, :update_time => myshixun.updated_at, :myshixun_id => myshixun.id, :compelete_status => compelete_status) - else - work.update_attributes(:work_status => ((myshixun.is_complete? && (myshixun.done_time < setting_time.end_time)) ? 1 : 2), :late_penalty => (myshixun.is_complete? && (myshixun.done_time < setting_time.end_time) ? 0 : homework.late_penalty), :commit_time => myshixun.updated_at, :update_time => myshixun.updated_at, :myshixun_id => myshixun.id, :compelete_status => compelete_status) - end - set_shixun_final_score work, homework.homework_detail_manual.answer_open_evaluation, homework_challenge_settings - end - # 更新所有学生的效率分 - update_student_eff_score HomeworkCommon.where(:id => homework.id).first -=begin - student_works.each do |work| - if work.work_status == 0 - myshixun = Myshixun.where(:shixun_id => shixun.id, :user_id => work.user_id).first - if myshixun - member = Member.find_by_sql("select course_group_id from members where course_id = #{homework.course_id} and user_id = #{User.current.id}").first - setting_time = homework_group_setting homework, member.try(:course_group_id) - if setting_time.end_time > Time.now - work.update_attributes(:work_status => 1, :late_penalty => 0, :commit_time => myshixun.updated_at, :update_time => myshixun.updated_at, :myshixun_id => myshixun.id) - else - work.update_attributes(:work_status => ((myshixun.is_complete? && (myshixun.done_time < setting_time.end_time)) ? 1 : 2), :late_penalty => (myshixun.is_complete? && (myshixun.done_time < setting_time.end_time) ? 0 : homework.late_penalty), :commit_time => myshixun.updated_at, :update_time => myshixun.updated_at, :myshixun_id => myshixun.id) - end - end - end - set_shixun_final_score work, homework.homework_detail_manual.answer_open_evaluation, homework_challenge_settings - end -=end -end - -#成绩计算 -def set_final_score homework,student_work - if homework && homework.homework_detail_manual && !student_work.ultimate_score - if !homework.homework_detail_manual.final_mode - tea_ass_proportion = homework.homework_detail_manual.ta_proportion - tea_proportion = homework.homework_detail_manual.te_proportion - if homework.homework_type != 2 #非编程作业 - if student_work.teacher_score - if student_work.teaching_asistant_score.nil? - if student_work.student_score.nil? - student_work.final_score = student_work.teacher_score - else - te_proportion = tea_proportion + tea_ass_proportion / 2 - final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{te_proportion}") - final_s_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{te_proportion}")) - final_score = final_te_score + final_s_score - student_work.final_score = format("%.2f",final_score.to_f) - end - else - if student_work.student_score.nil? - te_proportion = tea_proportion + (1.0 - tea_proportion - tea_ass_proportion) / 2 - final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{te_proportion}") - final_ta_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{te_proportion}")) - final_score = final_te_score + final_ta_score - student_work.final_score = format("%.2f",final_score.to_f) - else - final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{tea_proportion}") - final_ta_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * BigDecimal.new("#{tea_ass_proportion}") - final_s_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{tea_proportion}") - BigDecimal.new("#{tea_ass_proportion}")) - final_score = final_te_score + final_ta_score + final_s_score - student_work.final_score = format("%.2f",final_score.to_f) - end - end - else - if student_work.teaching_asistant_score.nil? - student_work.final_score = student_work.student_score - elsif student_work.student_score.nil? - student_work.final_score = student_work.teaching_asistant_score - else - ta_proportion = tea_ass_proportion + tea_proportion / 2 - final_ta_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * BigDecimal.new("#{ta_proportion}") - final_s_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}")) - final_score = final_ta_score + final_s_score - student_work.final_score = format("%.2f",final_score.to_f) - end - end - elsif homework.homework_type == 2 && homework.homework_detail_programing #编程作业-----设定:系统评分必定不为空 - #if homework.teacher_priority == 1 #教师优先 - sy_proportion = homework.homework_detail_programing.ta_proportion - if student_work.teacher_score - if student_work.teaching_asistant_score.nil? #教辅未评分 - if student_work.student_score.nil? - ta_proportion = tea_proportion + (1 - tea_proportion - sy_proportion) / 2 - final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{ta_proportion}") - final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}")) - final_score = final_sy_score + final_te_score - student_work.final_score = format("%.2f",final_score.to_f) - else - rest_proportion = tea_ass_proportion / 3 - final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{sy_proportion + rest_proportion}") - final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{tea_proportion + rest_proportion}") - final_st_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{sy_proportion + rest_proportion}") - BigDecimal.new("#{tea_proportion + rest_proportion}")) - final_score = final_sy_score + final_te_score + final_st_score - student_work.final_score = format("%.2f",final_score.to_f) - end - elsif student_work.student_score.nil? #学生未评分 - rest_proportion = (1 - tea_proportion - sy_proportion - tea_ass_proportion) / 3 - final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{sy_proportion + rest_proportion}") - final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{tea_proportion + rest_proportion}") - final_ta_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{sy_proportion + rest_proportion}") - BigDecimal.new("#{tea_proportion + rest_proportion}")) - final_score = final_sy_score + final_te_score + final_ta_score - student_work.final_score = format("%.2f",final_score.to_f) - else - final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{sy_proportion}") - final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{tea_proportion}") - final_ta_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * BigDecimal.new("#{tea_ass_proportion}") - final_s_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{sy_proportion}") - BigDecimal.new("#{tea_proportion}") - BigDecimal.new("#{tea_ass_proportion}")) - final_score = final_sy_score + final_ta_score + final_te_score + final_st_score - student_work.final_score = format("%.2f",final_score.to_f) - end - else - if student_work.teaching_asistant_score.nil? #教辅未评分 - if student_work.student_score.nil? - student_work.final_score = student_work.system_score - else - ta_proportion = sy_proportion + (tea_ass_proportion + tea_proportion) / 2 - final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{ta_proportion}") - final_st_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}")) - final_score = final_sy_score + final_st_score - student_work.final_score = format("%.2f",final_score.to_f) - end - elsif student_work.student_score.nil? #学生未评分 - if student_work.teaching_asistant_score.nil? - student_work.final_score = student_work.system_score - else - ta_proportion = sy_proportion + (1.0 - tea_ass_proportion - sy_proportion) / 2 - final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{ta_proportion}") - final_ts_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}")) - final_score = final_sy_score + final_ts_score - student_work.final_score = format("%.2f",final_score.to_f) - end - else - rest_proportion = tea_proportion / 3 - final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{sy_proportion + rest_proportion}") - final_ts_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * BigDecimal.new("#{tea_ass_proportion + rest_proportion}") - final_st_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{sy_proportion + rest_proportion}") - BigDecimal.new("#{tea_ass_proportion + rest_proportion}")) - final_score = final_sy_score + final_ts_score + final_st_score - student_work.final_score = format("%.2f",final_score.to_f) - end - end - end - else - if homework.homework_type != 2 - if student_work.teacher_score - student_work.final_score = student_work.teacher_score - else - if student_work.teaching_asistant_score.nil? - student_work.final_score = student_work.student_score - else - student_work.final_score = student_work.teaching_asistant_score - end - end - elsif homework.homework_type == 2 && homework.homework_detail_programing - if student_work.teacher_score - student_work.final_score = student_work.teacher_score - else - if student_work.teaching_asistant_score - student_work.final_score = student_work.teaching_asistant_score - else - if student_work.system_score - student_work.final_score = student_work.system_score - else - student_work.final_score = student_work.student_score - end - end - end - end - end - if student_work.final_score - score = student_work.final_score - student_work.absence_penalty - student_work.late_penalty - student_work.appeal_penalty - student_work.work_score = format("%.2f",(score < 0 ? 0 : score).to_f) if score - else - student_work.work_score = nil - end - end -end - -# 计算实训作品学生的效率分 -def update_student_eff_score homework - if homework.work_efficiency && homework.max_efficiency != 0 - homework.student_works.where("compelete_status != 0").each do |student_work| - eff_score = student_work.efficiency / homework.max_efficiency * homework.eff_score - student_work.eff_score = format("%.2f", eff_score) - unless student_work.ultimate_score - work_score = student_work.final_score + student_work.eff_score - student_work.late_penalty - student_work.work_score = format("%.2f", work_score < 0 ? 0 : work_score) - end - student_work.save - end - else - homework.student_works.where("compelete_status != 0").each do |student_work| - student_work.eff_score = 0 - unless student_work.ultimate_score - work_score = student_work.final_score + student_work.eff_score - student_work.late_penalty - student_work.work_score = format("%.2f", work_score < 0 ? 0 : work_score) - end - student_work.save - end - end -end - -# 实训作业的评分 -def set_shixun_final_score student_work, answer_open_evaluation, homework_challenge_settings - unless student_work.work_status == 0 - myshixun = student_work.myshixun - final_score = 0 - compelete = true - max_endtime = "" - user_total_score = 0 - pass_consume_time = 0 - homework_challenge_settings.each do |setting| - game = myshixun.games.where(:challenge_id => setting.challenge_id, :status => 2).first - unless game.nil? - pass_consume_time += (game.cost_time / 60.0).to_f - user_total_score += game.final_score.to_i < 0 ? 0 : game.challenge.score.to_i - adjust_score = student_work.challenge_work_scores.where(:challenge_id => setting.challenge_id).last - final_score += adjust_score.present? ? adjust_score.score : (answer_open_evaluation ? setting.score : (game.final_score >= 0 ? setting.score : 0)) - max_endtime = max_endtime == "" ? game.end_time : (game.end_time > max_endtime ? game.end_time : max_endtime) - else - compelete = false - end - end - - efficiency = (pass_consume_time == 0 ? 0 : Math.log((user_total_score / pass_consume_time.to_f) + 1.0)) - student_work.efficiency = efficiency < 0 ? 0 : format("%.2f", efficiency) - - if compelete && max_endtime != "" - homework = student_work.homework_common - member = Member.find_by_sql("select course_group_id from members where course_id = #{homework.course_id} and user_id = #{student_work.user_id}").first - setting_time = homework_group_setting homework, member.try(:course_group_id) - if setting_time.publish_time.present? && setting_time.end_time.present? - if max_endtime < setting_time.publish_time - student_work.compelete_status = 2 - else - if max_endtime < setting_time.end_time || (homework.allow_late && (homework.course.end_date.nil? || max_endtime < homework.course.end_date.end_of_day)) - student_work.compelete_status = 1 - student_work.cost_time = max_endtime.to_i - setting_time.publish_time.to_i - else - student_work.compelete_status = 0 - end - end - end - - if homework.work_efficiency - if homework.max_efficiency < student_work.efficiency - homework.max_efficiency = student_work.efficiency - homework.update_column("max_efficiency", homework.max_efficiency) - end - eff_score = homework.max_efficiency == 0 ? 0 : student_work.efficiency / homework.max_efficiency * homework.eff_score - student_work.eff_score = format("%.2f", eff_score) - else - student_work.eff_score = 0 - end - elsif !compelete - student_work.compelete_status = 0 - end - student_work.final_score = format("%.2f", final_score.to_f) - score = student_work.final_score + student_work.eff_score - student_work.late_penalty - student_work.work_score = format("%.2f", score < 0 ? 0 : score.to_f) unless student_work.ultimate_score - student_work.save! - end -end - -# 用户评测时更新实训作业成绩 -def update_myshixun_work_score myshixun - ActiveRecord::Base.transaction do - student_works = myshixun.student_works - #logger.info("#############student_works_count: #{student_works.count}") - if student_works.count > 0 - student_works.each do |work| - homework = work.homework_common - member = Member.find_by_sql("select course_group_id from members where course_id = #{homework.course_id} and user_id = #{User.current.id}").first - #logger.info("#############member_course_group_id: #{member.try(:course_group_id)}") - setting_time = homework_group_setting homework, member.try(:course_group_id) - if setting_time.end_time.present? && (setting_time.end_time > Time.now || (homework.allow_late && !homework.course.is_end)) - #logger.info("#############setting_time: #{setting_time.end_time}") - - user_total_score = 0 - pass_consume_time = 0 - final_score = 0 - homework.homework_challenge_settings.each do |setting| - game = myshixun.games.where(:challenge_id => setting.challenge_id, :status => 2).first - unless game.nil? - pass_consume_time += (game.cost_time / 60.0).to_f - user_total_score += game.final_score.to_i < 0 ? 0 : game.challenge.score.to_i - adjust_score = work.challenge_work_scores.where(:challenge_id => setting.challenge_id).last - final_score += adjust_score.present? ? adjust_score.score : (homework.homework_detail_manual.answer_open_evaluation ? setting.score : (game.final_score >= 0 ? setting.score : 0)) - end - end - if work.work_status == 0 - is_complete = myshixun.is_complete? && (myshixun.done_time < setting_time.end_time) - work.work_status = setting_time.end_time > Time.now ? 1 : (is_complete ? 1 : 2) - work.late_penalty = setting_time.end_time > Time.now ? 0 : (is_complete ? 0 : homework.late_penalty) - work.commit_time = myshixun.created_at > setting_time.publish_time ? setting_time.publish_time : myshixun.created_at - work.myshixun_id = myshixun.id - end - - efficiency = (pass_consume_time == 0 ? 0 : Math.log((user_total_score / pass_consume_time.to_f) + 1.0)) - work.efficiency = format("%.2f", efficiency) - - games = myshixun.games.where(:challenge_id => homework.homework_challenge_settings.map(&:challenge_id)) - myshixun_endtime = games.select{|game| game.status == 2}.size == games.size ? games.map(&:end_time).max : nil - if myshixun_endtime.present? - min_efficiency_changed = min_efficiency_changed.present? ? min_efficiency_changed : false - work.compelete_status = 1 - work.cost_time = myshixun_endtime.to_i - setting_time.publish_time.to_i - - # 计算作品的效率分(已完成才计算) - if homework.work_efficiency - # 如果作业的最大效率值有变更则更新所有作品的效率分 - if homework.max_efficiency < work.efficiency - homework.max_efficiency = work.efficiency - homework.update_column("max_efficiency", homework.max_efficiency) - update_student_eff_score homework - end - eff_score = homework.max_efficiency == 0 ? 0 : work.efficiency / homework.max_efficiency * homework.eff_score - work.eff_score = format("%.2f", eff_score) - end - end - - work.update_time = Time.now - - # 为迁移的数据做特殊处理, 若分数小于当前通关分数则不更新 - work.final_score = final_score if work.final_score.nil? || final_score > work.final_score - score = work.final_score + work.eff_score - work.late_penalty - work.work_score = format("%.2f",(score < 0 ? 0 : score).to_f) unless work.ultimate_score - #logger.info("#############work_score: #{score}") - work.save! - end - end - end - end -end - -# 用户开启实训时更新作品状态 -def update_myshixun_work_status myshixun - student_works = StudentWork.find_by_sql("SELECT sw.* FROM student_works sw, homework_commons_shixuns hcs WHERE sw.user_id = #{User.current.id} AND sw.`homework_common_id` = hcs.`homework_common_id` AND hcs.`shixun_id` = #{myshixun.shixun_id} and sw.work_status = 0") - logger.info("#############student_works_count: #{student_works.count}") - if student_works.count > 0 - student_works.each do |work| - homework = work.homework_common - member = Member.find_by_sql("select course_group_id from members where course_id = #{homework.course_id} and user_id = #{User.current.id}").first - setting_time = homework_group_setting homework, member.try(:course_group_id) - if setting_time.end_time.present? && (setting_time.end_time > Time.now || (homework.allow_late && !homework.course.is_end)) - logger.info("#############setting_time: #{setting_time.end_time}") - work.work_status = setting_time.end_time > Time.now ? 1 : 2 - work.late_penalty = setting_time.end_time > Time.now ? 0 : homework.late_penalty - work.update_time = Time.now - work.commit_time = Time.now - work.myshixun_id = myshixun.id - work.save - end - end - end -end - -def quote_resource_bank resource, course - atta = Attachment.new(:filename => resource.filename, :disk_filename => resource.disk_filename, :filesize => resource.filesize, :digest => resource.digest, :downloads => 0, :is_publish => 0, - :author_id => User.current.id, :description => resource.description, :disk_directory => resource.disk_directory, :is_public => 0, :copy_from => resource.copy_from.nil? ? resource.id : resource.copy_from, - :quotes => 0, :resource_bank_id => resource.id, :created_on => Time.now, :content_type =>resource.content_type) - if course.attachments << atta - # 更新引用次数 - quotes = resource.quotes.to_i + 1 - resource.update_attribute(:quotes, quotes) - end -end - -def quote_homework_bank homework, course - ActiveRecord::Base.transaction do - new_homework = HomeworkCommon.new(:name => homework.name, :user_id => User.current.id, :description => homework.description, :homework_type => homework.homework_type, :late_penalty => 5, - :course_id => course.id, :teacher_priority => 1, :anonymous_comment => 1, :quotes => 0, :is_open => 0, :homework_bank_id => homework.id, :score_open => 1, - :anonymous_appeal => 0, :is_public => 0, :reference_answer => homework.reference_answer, :answer_public => 1, :allow_late => 1) - - new_homework.homework_detail_manual = HomeworkDetailManual.new - new_homework_detail_manual = new_homework.homework_detail_manual - new_homework_detail_manual.te_proportion = 1.0 - new_homework_detail_manual.ta_proportion = 0 - new_homework_detail_manual.comment_status = 0 - - new_homework_detail_manual.evaluation_num = 0 - new_homework_detail_manual.absence_penalty = 0 - - if new_homework.homework_type == 2 - new_homework.homework_detail_programing = HomeworkDetailPrograming.new - new_homework.homework_detail_programing.ta_proportion = 0 - new_homework.homework_detail_programing.language = homework.language - homework.homework_bank_tests.each_with_index do |homework_test| - new_homework.homework_tests << HomeworkTest.new( - input: homework_test.input, - output: homework_test.output - ) - end - homework.homework_bank_samples.each_with_index do |homework_test| - new_homework.homework_samples << HomeworkSample.new( - input: homework_test.input, - output: homework_test.output - ) - end - end - - if new_homework.homework_type == 3 - new_homework.homework_detail_group = HomeworkDetailGroup.new - new_homework.homework_detail_group.min_num = homework.min_num - new_homework.homework_detail_group.max_num = homework.max_num - new_homework.homework_detail_group.base_on_project = homework.base_on_project - end - - homework.attachments.each do |attachment| - att = attachment.copy - att.container_id = nil - att.container_type = nil - att.author_id = homework.user_id - att.copy_from = attachment.id - att.save - new_homework.attachments << att - end - - if new_homework.save - if new_homework.homework_type == 4 - HomeworkCommonsShixuns.create(:homework_common_id => new_homework.id, :shixun_id => homework.homework_bank_shixun.shixun_id) - end - new_homework_detail_manual.save if new_homework_detail_manual - new_homework.homework_detail_programing.save if new_homework.homework_detail_programing - new_homework.homework_detail_group.save if new_homework.homework_detail_group - create_works_list new_homework - - homework.update_column(:quotes, homework.quotes+1) - QuestionBank.where(:container_id => homework.id, :container_type => ["Common", "Shixun", "Group"]).update_all(:quotes => homework.quotes) - end - return new_homework - end -end - -def quote_exercise_bank exercise, course - ActiveRecord::Base.transaction do - new_exercise = Exercise.new(:exercise_name => exercise.name, :exercise_description => exercise.description, :user_id => User.current.id, :is_public => 0, - :exercise_status => 1, :show_result => 1, :course_id => course.id, :time => -1, :exercise_bank_id => exercise.id) - - exercise.exercise_bank_questions.each do |q| - option = { - :question_title => q[:question_title], - :question_type => q[:question_type] || 1, - :question_number => q[:question_number], - :question_score => q[:question_score], - :shixun_id => q[:shixun_id] - } - exercise_question = new_exercise.exercise_questions.new option - - if q.question_type != 5 - for i in 1..q.exercise_bank_choices.count - choice_option = { - :choice_position => i, - :choice_text => q.exercise_bank_choices[i-1][:choice_text] - } - exercise_question.exercise_choices.new choice_option - end - - for i in 1..q.exercise_bank_standard_answers.count - standard_answer_option = { - :exercise_choice_id => q.exercise_bank_standard_answers[i-1][:exercise_bank_choice_id], - :answer_text => q.exercise_bank_standard_answers[i-1][:answer_text] - } - exercise_question.exercise_standard_answers.new standard_answer_option - end - else - for i in 1..q.exercise_bank_shixun_challenges.count - challenge_option = { - :position => i, - :challenge_id => q.exercise_bank_shixun_challenges[i-1][:challenge_id], - :shixun_id => q.exercise_bank_shixun_challenges[i-1][:shixun_id], - :question_score => q.exercise_bank_shixun_challenges[i-1][:question_score] - } - exercise_question.exercise_shixun_challenges.new challenge_option - end - end - end - if new_exercise.save - create_exercises_list new_exercise - exercise.update_column(:quotes, exercise.quotes+1) - QuestionBank.where(:container_id => exercise.id, :container_type => "Exercise").update_all(:quotes => exercise.quotes) - end - return new_exercise - end -end - -def quote_poll_bank poll, course - ActiveRecord::Base.transaction do - new_poll = Poll.new(:polls_name => poll.name, :polls_description => poll.description, :user_id => User.current.id, :is_public => 0, - :polls_status => 1, :show_result => 1, :polls_type => 'Course', :course_id => course.id, :exercise_bank_id => poll.id) - - poll.exercise_bank_questions.each do |q| - option = { - :question_title => q[:question_title], - :question_type => q[:question_type] || 1, - :is_necessary => q[:is_necessary], - :question_number => q[:question_number], - :max_choices => q[:max_choices], - :min_choices => q[:min_choices] - } - poll_question = new_poll.poll_questions.new option - - for i in 1..q.exercise_bank_choices.count - choice_option = { - :answer_position => i, - :answer_text => q.exercise_bank_choices[i-1][:choice_text] - } - poll_question.poll_answers.new choice_option - end - end - if new_poll.save - create_polls_list new_poll - poll.update_column(:quotes, poll.quotes+1) - QuestionBank.where(:container_id => poll.id, :container_type => "Poll").update_all(:quotes => poll.quotes) - end - return new_poll - end -end - -def major_level_option - content = [] - option0 = [] - option0 << "选择课程所属专业层级" - option0 << 0 - option1 = [] - option1 << "专科" - option1 << 3 - option2 = [] - option2 << "本科" - option2 << 2 - option3 = [] - option3 << "研究生" - option3 << 1 - content << option0 - content << option1 - content << option2 - content << option3 - content -end - -def discipline_category_option major_level = 3 - content = [] - option0 = [] - option0 << "选择课程所属学科门类" - option0 << 0 - content << option0 - DisciplineCategory.where(:major_level => major_level).each do |dis| - option = [] - option << dis.name.to_s - option << dis.id - content << option - end - content -end - -def first_level_discipline_option disc_ca = 27 - content = [] - option0 = [] - option0 << "选择课程所属一级学科" - option0 << 0 - content << option0 - FirstLevelDiscipline.where(:discipline_category_id => disc_ca).each do |fir_dis| - option = [] - option << fir_dis.name.to_s - option << fir_dis.id - content << option - end - content -end - -def syllabus_major_option fir_dis = 213 - content = [] - option0 = [] - option0 << "选择课程所属专业" - option0 << 0 - content << option0 - Major.where(:first_level_discipline_id => fir_dis).each do |major| - option = [] - option << major.name.to_s - option << major.id - content << option - end - content -end - -def convert_to_char(str) - result = "" - length = str.length - unless str.nil? - if length === 1 - result += (str.to_i + 64).chr - return result - elsif length > 1 - for i in 0...length - result += (str[i].to_i + 64).chr - end - return result - end - end - return result -end - -def convert_to_chi_num num - result = "" - case num.to_i - when 1 - result = '一' - when 2 - result = '二' - when 3 - result = '三' - when 4 - result = '四' - when 5 - result = '五' - when 6 - result = '六' - when 7 - result = '七' - when 8 - result = '八' - when 9 - result = '九' - end - return result -end - -#根据条件过滤作业结果 -def search_work_member works,name - if name == "" - select_works = works - else - name = name.downcase - select_works = works.select{ |work| work.user.user_extensions[:student_id].to_s.downcase.include?(name) || (work.user[:lastname].to_s.downcase + work.user[:firstname].to_s.downcase).include?(name) - } - end - select_works -end - -# 作业的分班设置时间 -def homework_group_setting homework, group_id - setting = nil - if homework.homework_group_settings.where(:course_group_id => group_id).first - setting = homework.homework_group_settings.where(:course_group_id => group_id).first - else - setting = homework - end - setting -end - -# 试卷的分班设置时间 -def exercise_group_setting exercise, group - setting = nil - if exercise.exercise_group_settings.where(:course_group_id => group.try(:id)).first - setting = exercise.exercise_group_settings.where(:course_group_id => group.id).first - else - setting = exercise - end - setting -end - -# 问卷的分班设置时间 -def poll_group_setting poll, group - setting = nil - if poll.poll_group_settings.where(:course_group_id => group.try(:id)).first - setting = poll.poll_group_settings.where(:course_group_id => group.id).first - else - setting = poll - end - setting -end - -# 资源的分班设置时间 -def attacment_group_setting attachment, group - setting = nil - if attachment.attachment_group_settings.where(:course_group_id => group.try(:id)).first - setting = attachment.attachment_group_settings.where(:course_group_id => group.id).first - else - setting = attachment - end - setting -end - -#统计答题百分比,统计结果保留两位小数 -def statistics_result_percentage(e, t) - e = e.to_f - t = t.to_f - t == 0 ? 0 : format("%.1f", e*100/t) -end - -def subject_data subject - result = {} - subject_choices = 0 - subject_shixuns = 0 - subject_score = 0 - subject.stage_shixuns.each do |stage_shixun| - shixun = stage_shixun.shixun - subject_choices += shixun.challenges.where(:st => [1, 2]).count - subject_shixuns += shixun.challenges.where(:st => 0).count - subject_score += shixun.shixun_score - end - result[:subject_choices] = subject_choices - result[:subject_shixuns] = subject_shixuns - result[:subject_score] = subject_score - result -end - - -def tiding_url tiding - case tiding.container_type - when "ApplyUserAuthentication" - if tiding.tiding_type == "Apply" - tiding.container.auth_type == 1 ? identity_authentication_managements_path : professional_authentication_managements_path - else - tiding.container.auth_type == 1 ? authentication_account_path : professional_certification_account_path - end - when "CancelUserAuthentication" - authentication_account_path - when "CancelUserProCertification" - professional_certification_account_path - when "ApplyAddDepartment" - tiding.tiding_type == "Apply" ? depart_managements_path() : my_account_path() - when "ApplyAddSchools" - tiding.tiding_type == "Apply" ? unit_managements_path() : my_account_path() - when "ApplyAction" - tiding.tiding_type == "System" ? (tiding.parent_container_type == "ApplyShixun" ? shixun_path(Shixun.find(tiding.parent_container_id).identifier):(tiding.parent_container_type == "TrialAuthorization" ? user_path(tiding.user_id) : subject_path(tiding.parent_container_id))):(tiding.parent_container_type == "ApplyShixun" ? shixun_authorization_managements_path():(tiding.parent_container_type == "TrialAuthorization"? trial_authorization_managements_path(): subject_authorization_managements_path())) - when 'JoinCourse' - course_path(tiding.container_id, :type => "JoinCourse") - when 'StudentJoinCourse', 'DealCourse', 'TeacherJoinCourse' - course_path(tiding.container_id) - when 'Course', 'ArchiveCourse' - course_path(tiding.container_id) - when 'Shixun' - '/shixuns/' + tiding.container.identifier - when 'Subject' - '/paths/' + tiding.container_id.to_s - when 'JournalsForMessage' - case tiding.parent_container_type - when "Principal" - feedback_path(tiding.parent_container_id) - when "HomeworkCommon" - student_work_index_path(:homework => tiding.parent_container_id, :tab => 2) - when "GraduationTopic" - graduation_topic_path(tiding.parent_container_id, :tab => 2) - when "StudentWorksScore" - student_work_path(:id => tiding.container.try(:jour).try(:student_work_id)) - end - when 'Message' - board_message_path(tiding.container.board_id, tiding.parent_container_id) - when 'Memo' - forum_path(tiding.parent_container_id) - when 'Watcher' - user_path(tiding.trigger_user_id) - when 'PraiseTread' - try = tiding.parent_container_type.constantize - object = try.find(tiding.parent_container_id) - case tiding.parent_container_type - when "Challenge" - myshixun_id = Myshixun.where(:user_id => tiding.trigger_user_id, :shixun_id => Challenge.find(tiding.parent_container_id).shixun_id).first - myshixun_game_path(Game.where(:myshixun_id => myshixun_id.id, :challenge_id => tiding.parent_container_id).first, :myshixun_id => myshixun_id) - when "Discuss" - myshixun_game_path(object.user_game, :myshixun_id => object.user_myshixun) - when "Message" - object.parent.present? ? board_message_path(object.board_id, object.root_id) : board_message_path(object.board_id, object) - when "Memo" - object.parent.present? ? forum_path(object.root_id) : forum_path(object) - when "JournalsForMessage" - case object.jour_type - when "Principal" - feedback_path(object.jour_id) - when "HomeworkCommon" - student_work_index_path(:homework => object.jour_id, :tab => 2) - when "StudentWorksScore" - student_work_path(:id => object.try(:jour).try(:student_work_id)) - end - when "HomeworkCommon" - student_work_index_path(:homework => tiding.parent_container_id, :tab => 2) - when "Issue" - issue_path(tiding.parent_container_id) - when "Journal" - issue_path(object.journalized_id) - end - when 'Discuss' - shixun_discuss_shixun_path(tiding.container.dis) - when 'Grade' - user_grade_user_path(User.current) - when 'JoinProject' - project_path(tiding.container_id, :type => "applied_project") - when 'ReporterJoinProject', 'DealProject', 'ManagerJoinProject' - project_path(tiding.container_id) - when 'Poll' - case tiding.parent_container_type - when 'CommitPoll' - student_poll_list_poll_path(tiding.container, :tab => 2) - else - student_poll_list_poll_path(tiding.container) - end - when 'Exercise' - case tiding.parent_container_type - when 'CommitExercise', 'ExerciseScore' - show_student_result_exercise_path(tiding.container,:user_id => tiding.trigger_user_id) - else - student_exercise_list_exercise_path(tiding.container) - end - when 'StudentGraduationTopic', 'DealStudentTopicSelect' - graduation_topic_path(tiding.parent_container_id) - when 'GraduationTask' - graduation_task_path(tiding.container_id) - when 'GraduationWork' - graduation_work_path(tiding.container_id) - when 'GraduationWorkScore' - graduation_work_path(tiding.parent_container_id) - when 'HomeworkCommon' - case tiding.parent_container_type - when 'AnonymousCommentFail' - student_work_index_path(:homework => tiding.container_id, :tab => 4) - when 'HomeworkPublish' - student_work_index_path(:homework => tiding.container_id, :tab => 2) - when 'AnonymousAppeal' - work = tiding.container.student_works(:user_id => User.current.id).first - work.present? ? student_work_path(work.try(:id)) : "javascript:void(0)" - else - student_work_index_path(:homework => tiding.container_id) - end - when 'StudentWork' - student_work_path(tiding.container_id) - when 'StudentWorksScore', 'StudentWorksScoresAppeal' - student_work_path(tiding.parent_container_id) - when 'ChallengeWorkScore' - homework_common_path(tiding.container.try(:student_work).try(:homework_common_id)) - when 'SendMessage' - mirror_repository_managements_path - when 'Journal' - issue_path(tiding.parent_container_id) - when 'Issue' - issue_path(tiding.container_id) - when 'PullRequest' - project_pull_requests_path(tiding.parent_container_id) - when 'Department' - my_account_path - end -end - -def create_shixun_homework_cha_setting homework, shixun - if shixun.present? - sum_score = 0 - total_score = 100.0 - homework.eff_score - shixun.challenges.each_with_index do |challeng, index| - if index < shixun.challenges.length - 1 - score = ((total_score / shixun.challenges.length) * total_score).floor / total_score - sum_score += score - else - score = total_score - sum_score - end - HomeworkChallengeSetting.create(:homework_common_id => homework.id, :challenge_id => challeng.id, :shixun_id => shixun.id, :score => score) - end - end -end +# encoding: utf-8 +# +# Redmine - project management software +# Copyright (C) 2006-2013 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# 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. + +require 'forwardable' +require 'cgi' +require 'iconv' +module ApplicationHelper + include Redmine::WikiFormatting::Macros::Definitions + include Redmine::I18n + include GravatarHelper::PublicMethods + include Redmine::Pagination::Helper + include AvatarHelper + ## added by william + include PraiseTreadHelper + include CoursesHelper + + extend Forwardable + def_delegators :wiki_helper, :wikitoolbar_for, :heads_for_wiki_formatter + + def exercise_bank_json_data exercises + exercises.map do |exercise| + exercise_path = exercise_bank_path(exercise) + course_list = exercise.course_list.name + user_name = exercise.user.show_real_name + user_path = user_path(exercise.user) + exercise.attributes.dup.except("description", "is_public", "quotes", "container_id", "container_type", "created_at", "updated_at").merge({ + user_name: user_name, + user_path: user_path, + course_list: course_list, + exercise_path: exercise_path + }) + end + end + + def ac_pass?(standard_value, real_value) + standard_value && real_value && real_value > standard_value ? "达成" : "未达成" + end + + def ec_pass?(standard_value, real_value) + standard_value && real_value && real_value > standard_value ? 1 : 0 + end + + # 工程认证删除关联课堂 + def delete_course_correlation_ec_course_evaluations ec_course + ec_course_evaluations = ec_course.ec_course_evaluations.where(:is_course_type => true) + ec_course_evaluations.destroy_all if ec_course_evaluations + end + + def sync_ec_year_student_score ec_subitem, ce, year_students, students, works, position=1 + year_students.each do |year_student| + if students.map(&:id).include?(year_student.id) + work = works.where(:user_id => students.select{|s| s.id == year_student.id}[0].try(:user_id)).first + score = work.respond_to?(:work_score) ? work.try(:work_score) : work.try(:score) + else + score = 0 + end + ec_subitem.ec_student_achievements << EcStudentAchievement.new(:ec_year_student_id => year_student.id, :student_number => year_student.student_id, + :student_name => year_student.name, :score => score.to_f, + :position => position, :ec_course_evaluation_id => ce.id) + Rails.logger.info("############work_score:#{score}") + end + end + + # 同步在线课堂的考核标准和考核分项 + # ec_course: 工程认证的课程 + # course: 关联的在线课堂 + def sync_course_correlation_ec_course_evaluations ec_course, course + # 先删除之前的关联数据 + delete_course_correlation_ec_course_evaluations ec_course + + students = EcYearStudent.find_by_sql("SELECT eys.id, eys.student_id, eys.name, uxe.user_id FROM ec_year_students eys JOIN + (SELECT ue.student_id, ue.user_id FROM user_extensions ue JOIN students_for_courses sfc ON ue.`user_id` = sfc.`student_id` + WHERE sfc.`course_id` = #{course.id})uxe ON eys.student_id = uxe.student_id WHERE eys.ec_year_id = #{ec_course.ec_year_id}") + + year_students = ec_course.ec_year.ec_year_students + + # 实训作业模块 + shixun_models = course.homework_commons.where("homework_type = 4 and publish_time < '#{Time.now}'") + unless shixun_models.blank? + ce = EcCourseEvaluation.create(:name => "实训作业", :evluation_count => 1, :status => 2, :ec_course_id => ec_course.id, :is_course_type => true) + shixun_models.each do |shixun| + ec_subitem = EcCourseEvaluationSubitem.create(:name => shixun.name, :ec_course_evaluation_id => ce.id) + + sync_ec_year_student_score ec_subitem, ce, year_students, students, shixun.student_works + end + end + + # 普通作业模块 + common_models = course.homework_commons.where("homework_type = 1 and publish_time < '#{Time.now}'") + unless common_models.blank? + ce = EcCourseEvaluation.create(:name => "普通作业", :evluation_count => 1, :status => 2, :ec_course_id => ec_course.id, :is_course_type => true) + common_models.each do |common| + ec_subitem = EcCourseEvaluationSubitem.create(:name => common.name, :ec_course_evaluation_id => ce.id) + + sync_ec_year_student_score ec_subitem, ce, year_students, students, common.student_works + end + end + + # 分组作业模块 + group_models = course.homework_commons.where("homework_type = 3 and publish_time < '#{Time.now}'") + unless group_models.blank? + ce = EcCourseEvaluation.create(:name => "分组作业", :evluation_count => 1, :status => 2, :ec_course_id => ec_course.id, :is_course_type => true) + group_models.each do |group| + ec_subitem = EcCourseEvaluationSubitem.create(:name => group.name, :ec_course_evaluation_id => ce.id) + + sync_ec_year_student_score ec_subitem, ce, year_students, students, group.student_works + end + end + + # 试卷模块 + exercise_models = course.exercises.where("exercise_status > 1") + unless exercise_models.blank? + ce = EcCourseEvaluation.create(:name => "试卷", :evluation_count => 1, :status => 2, :ec_course_id => ec_course.id, :is_course_type => true) + exercise_models.each do |exercise| + ec_subitem = EcCourseEvaluationSubitem.create(:name => exercise.exercise_name, :ec_course_evaluation_id => ce.id) + + sync_ec_year_student_score ec_subitem, ce, year_students, students, exercise.exercise_users + end + end + + # 毕设任务模块 + task_models = course.graduation_tasks.where("publish_time < '#{Time.now}'") + unless task_models.blank? + ce = EcCourseEvaluation.create(:name => "毕设任务", :evluation_count => task_models.size, :status => 1, :ec_course_id => ec_course.id, :is_course_type => true) + task_models.each_with_index do |task, index| + ec_subitem = EcCourseEvaluationSubitem.create(:name => task.name, :ec_course_evaluation_id => ce.id) + + sync_ec_year_student_score ec_subitem, ce, year_students, students, task.graduation_works, index + 1 + end + end + end + + # 选用实训的学校情况 + def school_user_detail shixun + user_ids = shixun.myshixuns.pluck(:user_id) + schools = School.where(:id => UserExtensions.where(:user_id => user_ids).pluck(:school_id)) + school_size = schools.size + str = school_size > 0 ? "#{schools.limit(2).map(&:name).join("、")}等 #{school_size}所" : "0所" + end + + def shixun_json_data shixuns + shixuns.map do |shixun| + school_detail = school_user_detail shixun + preference = shixun.shixun_preference + shixun_path = shixun_path(shixun) + shixun.attributes.dup.except("description", "user_id", "gpid", "visits", "created_at", "updated_at", "language", "authentication", + "identifier", "propaedeutics", "trainee", "major_id", "webssh", "homepage_show", "hidden", "fork_from", + "can_copy", "modify_time", "reset_time", "publish_time", "closer_id", "end_time", "git_url", "vnc", "challenges_count", + "use_scope", "evaluate_script", "mirror_script_id", "image_text", "code_hidden", "task_pass", "exec_time", "test_set_permission", + "sigle_training", "hide_code", "multi_webssh", "excute_time").merge({ + school_detail: school_detail, + preference: preference, + shixun_path: shixun_path + }) + end + end + + def subject_json_data subjects + subjects.map do |subject| + subject_path = subject_path(subject) + member_count = Myshixun.where(:shixun_id=>subject.stage_shixuns.map(&:shixun_id)).count + published_shixun_count = subject.shixuns.where(:status => 2).count + subject.attributes.dup.except("description", "user_id", "status", "visits", "course_list_id", "major_id", "learning_notes", "introduction", + "stages_count", "stage_shixuns_count", "homepage_show", "score_count", "publish_time", "created_at", "updated_at").merge({ + subject_path: subject_path, + member_count: member_count, + published_shixun_count: published_shixun_count + }) + end + end + + # 分班 + def member_group_name members, user_id + member = members.where(:user_id => user_id).first + group_name = member.try(:course_group_id).to_i == 0 ? '未分班' : member.course_group.name + end + + # 分班 + def new_member_group_name course_id, user_id + group_id = Member.where(:course_id => course_id, :user_id => user_id).pluck(:course_group_id).first + group_id == 0 ? '未分班' : CourseGroup.where(:id => group_id).pluck(:name).first + end + + # 分班id + def member_group_id members, user_id + member = members.where(:user_id => user_id).first + group_id = member.try(:course_group_id).to_i + end + + # 推荐实训 + def recommend_shixun shixun + shixun_id = ShixunTagRepertoire.where("tag_repertoire_id = #{shixun.tag_repertoires.first.present? ? shixun.tag_repertoires.first.try(:id) : 0} and shixun_id != #{shixun.id}").map(&:shixun_id) + shixuns = Shixun.select([:id, :name, :user_id, :status, :myshixuns_count, :trainee, :identifier]).where(:id => shixun_id, :status => 2, :hidden => 0).order("myshixuns_count desc").limit(3) + if shixuns.size < 3 + ids = shixuns.size == 0 ? "(-1)" : "(" + shixuns.map(&:id).join(',') + ")" + hot_shixuns = Shixun.select([:id, :name, :user_id, :status, :myshixuns_count, :trainee, :identifier]).where("status = 2 and hidden = 0 and id not in #{ids}").order("myshixuns_count desc").limit(3-shixuns.size) + return shixuns + hot_shixuns + else + return shixuns + end + end + + # 用户获取的技能标签 + def user_get_tags challenge_ids, user=User.current + tags = ChallengeTag.where(:challenge_id => user.games.where(:challenge_id => challenge_ids, :status => 2).pluck(:challenge_id)).pluck(:name).uniq + return tags + end + + # 所属路径 + def belongto_path shixun + Subject.where(:id => shixun.stage_shixuns.map(&:subject_id), :hidden => 0).limit(2) + end + + # 已授权老师加入示例课堂 + def join_ex_course user + course = Course.where(:id => 1309).first + if course + if course.members.where(:user_id => user.id).empty? + member = Member.new(:role_ids => [9], :user_id => user.id) + course.members << member + Tiding.create(:user_id => user.id, :trigger_user_id => 1, :container_id => course.id, :container_type => 'TeacherJoinCourse', :belong_container_id => course.id, :belong_container_type => "Course", :tiding_type => "System", :extra => "9") + end + end + end + +# 成员身份 + def member_zh_role member + role = "" + if member.roles.first + case member.roles.first.id + when 3 + role = "管理人员" + when 4 + role = "开发人员" + when 5 + role = "报告人员" + end + end + end + + def container_limit mirror_repositories + container = [] + mirror_repositories.each do |mr| + if mr.name.present? + container << {:image => mr.name, :cpuLimit => mr.cpu_limit, :memoryLimit => "#{mr.memory_limit}M"} + end + end + return container.to_json + end + + # 实训作品列表的提交状态 + def list_work_status work, homework, member + if work.work_status == 0 + str = "未提交" + else + if work.compelete_status == 0 + setting_time = homework_group_setting homework, member.try(:course_group_id) + end_time = setting_time.end_time.present? ? setting_time.end_time : homework.end_time + if end_time > Time.now || (homework.allow_late && !homework.course.is_end) + str = "正在提交" + else + str = "延时提交" + end + else + if work.work_status == 1 + str = "按时提交" + else + str = "延时提交" + end + end + end + str + end + + # 试卷、问卷提交状态 + def ex_poll_work_status status + str = "" + case status + when 0 + str = "未提交" + when 1 + str = "按时提交" + when 2 + str = "延时提交" + end + str + end + + #传入分数,获取对应颜色 + def score_color score + if score + color = score >= 90 ? "color-red" : "color-green" + else + color = "color-grey" + end + color + end + + # 获取两断时间的日期差 + def time_between_days t1, t2 + Date.parse(t1.to_s) - Date.parse(t2.to_s) if t1.present? && t2.present? + end + + def update_valuate_time game_id, column + record = EvaluateRecord.where(:game_id => game_id).first + if record + consume_time = format("%.2f", (Time.now.to_f - record.created_at.to_f)).to_f + if column == "file_update" + record.update_attributes!(:file_update => consume_time) + elsif column == "pull" + record.update_attributes!(:consume_time => consume_time) + elsif column == "create_pod" + record.update_attributes!(:create_pod => consume_time) + elsif column == "pod_execute" + record.update_attributes!(:pod_execute => consume_time) + end + end + end + + # TPM查看权限 + # result一般为页面权限 + def shixun_view_allow shixun, result = nil + if User.current.manager_of_shixun?(shixun) + result ? false : true + else + if shixun.status == 0 || (shixun.use_scope == 1 && !shixun.schools.map(&:name).include?(User.current.school_name)) + result ? true : (render_403) + end + end + end + + # 判断TPM的代码是否被修改了 + # 判断依据是看tpm的最新提交记录和tpi数据库中存储的commit_id是否一致 + def repository_is_modified myshixun, shixun_gpid + g = Gitlab.client + myshixun_commit_id = myshixun.commit_id + if myshixun_commit_id.blank? + myshixun_commit_id = g.commits(myshixun.gpid).last.try(:id) + myshixun.update_column(:commit_id, myshixun_commit_id) + end + shixun_commit_id = g.commits(shixun_gpid).first.try(:id) + Rails.logger.warn("###############shixun_commit_id is #{shixun_commit_id}") + Rails.logger.warn("###############myshixun_commit_id is #{myshixun.commit_id}") + result = myshixun_commit_id != shixun_commit_id ? true :false + return result + end + + # 定义当前关卡是否有权开启下一关 + # :实训若发布了,必须通过当前关卡才能查看下一关 + # :未发布的实训,除了最后一关,其它的关卡都可以进入下一关 + def show_next_stage?(game, shixun_status) + if game.is_final_game? || ([2,3].include?(shixun_status.to_i) && game.try(:status) != 2) + false + else + true + end + end + + # 适用与已经用url_safe编码后,回调字符串形式 + def tran_base64_decode64 str + if str.blank? + str + else + s_size = str.size % 4 + if s_size != 0 + str += "=" * (4 - s_size) + end + Base64.decode64(str.tr("-_", "+/")).force_encoding("utf-8") + end + end + + def challenge_path path + cha_path = path.present? ? path.split(";") : [] + cha_path = cha_path.reject(&:blank?)[0].try(:strip) + cha_path + end + + def open_webssh + # 如果我webssh类型, 开启webssh + jenkins_shixuns = Redmine::Configuration['jenkins_shixuns'] + uri = URI("#{jenkins_shixuns}/jenkins-exec/webssh/getConnectInfo") + user_id = User.current.id + params = {userID:user_id} + res = uri_exec uri, params + return [host, port, username, password] + end + + # 中间层启动那种语言容器的类型 + # language 语言 exec_path 需要编译的文件路径 + def post_tomcat_language language, exec_path + if language == "Html" && !exec_path.blank? + case exec_path.split(".")[1].downcase + when "c" + "C" + when "cpp" + 'C++' + when "py" + 'Python2.7' + else + "Java" + end + elsif exec_path.blank? + "Java" + else + language + end + end + + def only_publish_game shixun, type + shixun_tomcat = Redmine::Configuration['shixun_tomcat'] + gameInfo = shixun.gameInfo + uri ="#{shixun_tomcat}/bridge/game/publishGame" + params = {:gameInfo => "#{gameInfo}"} + logger.info("%%%%%%%%%%%%params is #{params}") + res = uri_exec uri, params + if res && res['code'].to_i != 0 + raise("实训云平台繁忙(繁忙等级:90)") + end + end + + def publish_game_and_tpimodify myshixun, type + shixun_tomcat = Redmine::Configuration['shixun_tomcat'] + git_myshixun_url = gitlab_url myshixun + git_myshixun_url = Base64.urlsafe_encode64(git_myshixun_url) + params = {tpiID: "#{myshixun.try(:id)}", :tpiGitURL => "#{git_myshixun_url}", :tpmID => "#{myshixun.shixun.try(:id)}"} + uri ="#{shixun_tomcat}/bridge/game/resetTpiScript" + params = {:gameInfo => "#{gameInfo}"} + logger.info("%%%%%%%%%%%%params is #{params}") + res = uri_exec uri, params + if res && res['code'].to_i != 0 + raise("实训云平台繁忙(繁忙等级:98)") + end + end + + ## 若实训关卡位置,关卡数等信息发生变化则需要修改脚本内容 + def modify_shixun_script shixun, script + if script.present? + source_class_name = [] + challenge_program_name = [] + shixun.challenges.map(&:exec_path).each do |exec_path| + challenge_program_name << "\"#{exec_path}\"" + if shixun.mirror_name.try(:first) == "Java" + if exec_path.nil? || exec_path.split("src/")[1].nil? + source = "\"\"" + else + source = "\"#{exec_path.split("src/")[1].split(".java")[0]}\"" + end + source_class_name << source.gsub("/", ".") if source.present? + elsif shixun.mirror_name.try(:first) == "C#" + if exec_path.nil? || exec_path.split(".")[1].nil? + source = "\"\"" + else + source = "\"#{exec_path.split(".")[0]}.exe\"" + end + source_class_name << source if source.present? + end + end + script = if script.include?("sourceClassName") && script.include?("challengeProgramName") + script.gsub(/challengeProgramNames=\(.*\)/,"challengeProgramNames=\(#{challenge_program_name.reject(&:blank?).join(" ")}\)").gsub(/sourceClassNames=\(.*\)/, "sourceClassNames=\(#{source_class_name.reject(&:blank?).join(" ")}\)") + else + script.gsub(/challengeProgramNames=\(.*\)/,"challengeProgramNames=\(#{challenge_program_name.reject(&:blank?).join(" ")}\)").gsub(/sourceClassNames=\(.*\)/, "sourceClassNames=\(#{challenge_program_name.reject(&:blank?).join(" ")}\)") + end + end + return script + #shixun.update_column(:evaluate_script, script) + end + + # 若实训有更改,则修改已发不实训的标记为已更改 + # shixun_modifies表中1表示已更改,进入myshixun需要强制重置,0表示没有修改 + # type 0:表示已经是最新的了;1:表示已经有修改 + # res返回结果0表示正确,-1表示有异常 + def add_shixun_modify_status shixun, type + shixun_tomcat = Redmine::Configuration['shixun_tomcat'] + gameInfo = shixun.gameInfo + uri ="#{shixun_tomcat}/bridge/game/publishGame" + params = {:gameInfo => "#{gameInfo}"} + logger.info("%%%%%%%%%%%%params is #{params}") + res = uri_exec uri, params + if res && res['code'].to_i != 0 + raise("实训云平台繁忙(繁忙等级:90)") + end + end + + # 判断实训的路径、language是否更改,如果修改在TPI中需要重置脚本 + # 目前为止,container为challenge和game类型 + # 改工作必须在challenge或者game保存后执行 + # type 1:表示既需要提示又需要更新脚本的,0:表示仅仅需要提示 + def should_modify_myshixun_script shixun, type + if type == 1 + shixun.update_column(:reset_time, shixun.try(:updated_at)) + else + shixun.update_column(:modify_time, shixun.try(:updated_at)) + end + end + + def shixun_modify_status_publish shixun, type + shixun_tomcat = Redmine::Configuration['shixun_tomcat'] + # 更新测试集 + gameInfo = shixun.gameInfo + uri ="#{shixun_tomcat}/bridge/game/publishGame" + # 更新脚本 + tpiList =[] + myshixuns = shixun.myshixuns + if myshixuns.present? + myshixuns.each do |myshixun| + logger.info("tpiID is #{myshixun.id}") + tpiID = myshixun.id + instanceGitURL = gitlab_url myshixun + logger.info("instanceGitURL is #{instanceGitURL}") + tpiList << {:tpiID => tpiID, :instanceGitURL => instanceGitURL} + logger.info("###############{tpiList.to_json unless tpiList.blank?}") + end + end + tpiList = Base64.urlsafe_encode64(tpiList.to_json) unless tpiList.blank? + params = {:gameInfo => "#{gameInfo}", :tpiList => "#{tpiList}" } + logger.info("%%%%%%%%%%%%params is #{params}") + # end + res = uri_exec uri, params + if res && res['code'].to_i != 0 + raise("实训云平台繁忙(繁忙等级:90)") + end + end + + # 仅仅产生记录,用于已执行publish的方法 + # ShixunModify中status 1:表示有更改,开启实训的时候需要重置,0:表示不需要重置或已重置完成 + def shixun_modify_status_without_publish shixun, type + myshixuns = shixun.myshixuns + unless myshixuns.blank? + myshixuns.each do |myshixun| + shixun_modify = ShixunModify.where(:shixun_id => shixun.id, :myshixun_id => myshixun.id).first + if shixun_modify.nil? + ShixunModify.create!(:shixun_id => shixun.id, :myshixun_id => myshixun.id, :status => type) + else + shixun_modify.update_attributes!(:status => type) + end + end + end + end + + # 通关后,把最后一次成功的代码存到数据库 + # type 0 创始内容, 1 最新内容 + def game_passed_code game_id, path, myshixun_gpid, type + g = Gitlab.client + rev = rev.nil? ? "master" : rev + path = path.strip if path.present? + file_content = g.files(myshixun_gpid, path, rev).content + if file_content.blank? + # gitlab缺陷:forked完成,短暂时间内取不了内容的,所以做一个小轮询,间隔0.1秒 + # 超过2秒则失败,需通过页面刷新 + for i in 0..30 do + sleep(0.1) + file_content = g.files(myshixun_gpid, path, rev).content + unless file_content.blank? + break + end + end + end + unless file_content.present? + raise("获取文件代码异常") + end + file_content = tran_base64_decode64(file_content) + game_code = GameCode.where(:game_id => game_id, :path => path).first + if game_code.nil? + GameCode.create!(:game_id => game_id, :new_code => file_content, :path => path) + else + game_code.update_attributes!(:new_code => file_content) + end + end + + def game_code_init game_id, path + game_code = GameCode.where(:game_id => game_id, :path => path).first + GameCode.create(:game_id => game_id, :path => path) if game_code.blank? + end + + # 判断用户是否认证 + def check_authentication + # return true + # if params[:action] == "on_search" || params[:action] == "apply_trail" # 之所以这样处理是为了避开account页面ajax加载 + # return true + # end + Rails.logger.info("check_authentication start") + unless User.current.logged? + url = request.original_url + redirect_to signin_path(:back_url => url) + return + end +=begin + if User.current.created_on.strftime('%Y-%m-%d %H:%M:%S') > "2018-01-01 00:00:00" && User.current.phone.blank? + redirect_to change_or_bind_path(:type => "phone") + return + end +=end + user_e = UserExtensions.where(:user_id => User.current.id).first + if User.current.lastname.blank? || user_e.school_id.blank? || user_e.identity.blank? || User.current.mail.blank? + redirect_to user_info_path() + Rails.logger.info("check_authentication end") + return + elsif User.current.certification != 1 + day_cer = UserDayCertification.where(:user_id => User.current.id).last + unless (Time.now.to_i - day_cer.try(:created_at).to_i) < 86400 + redirect_to my_account_path() + Rails.logger.info("check_authentication end") + return + end + end + end + + def match_specific_symbol(str) + str.gsub(" ", "").gsub(/\r\n$/, "").gsub("\r\n", "
    ").gsub(/\t/, "").html_safe + end + + # textarea 以/r/n开头时,回车效果会被替换,因此先把\r转换成\r 再添加一个\r(直接添加\r不行) + def match_specific_symbol1(str) + str.gsub(/\A\r/, "\r\r") + end + + # 积分表中建立记录行为,有过奖励则不重复奖励 + def reward_grade(user, container_id, container_type, score) + grade = Grade.where(:user_id => user.id, :container_id => container_id, :container_type => container_type).first + if grade.nil? + Grade.create!(:user_id => user.id, :container_id => container_id, :container_type => container_type, :score => score) + user.update_column(:grade, (score.to_i + user.grade.to_i)) + end + end + + def reward_experience(user, container_id, container_type, score) + experience = Experience.where(:user_id => user.id, :container_id => container_id, :container_type => container_type).first + if experience.nil? + Experience.create!(:user_id => user.id, :container_id => container_id, :container_type => container_type, :score => score) + user.update_column(:experience, (score.to_i + user.experience.to_i)) + end + end + + def shixun_name game_id + game = Game.where(:id => game_id).first + game.nil? ? "---" : game.challenge.shixun.name + end + + def grade_shixun_name shixun_id + shixun = Shixun.where(:id => shixun_id).first + shixun.nil? ? "---" : shixun.name + end + + def game_position game_id + game = Game.where(:id => game_id).first + game.nil? ? "---" : game.challenge.position + end + + def managements_navigation_bar_show menu_type, sub_type, grandchild_type={} + case menu_type + when 2 + sub_type == 1 ? "课程列表" : (sub_type == 2? "课堂列表" : (sub_type == 3? "实训作业" : "项目列表")) + when 3 + case sub_type + when 1 + "实训列表" + when 2 + "实训配置列表" + when 3 + "已发布的实训" + when 4 + "已关闭的实训" + when 5 + "镜像管理" + when 6 + "学员实训列表" + when 7 + "镜像类别图片" + when 8 + "TPI实训列表" + when 9 + "TPI性能测试结果" + end + when 4 + case sub_type + when 1 + "实训课程列表" + when 2 + "实训课程配置" + when 3 + "已发布实训课程" + end + when 5 + case sub_type + when 1 + "竞赛列表" + end + when 6 + if sub_type == 1 + link_to('单位列表', departments_part_managements_path()) + "#{grandchild_type[:next_type] == 1 ? " > #{grandchild_type[:school].name}" : ""}" + else + "单位部门列表" + end + when 7 + sub_type == 1 ? "用户列表" : (sub_type == 2 ? "试用授权列表" : "自动授权列表") + when 8 + sub_type == 1 ? "作业回复" : + (sub_type == 2 ? "实训反馈" : + (sub_type == 3 ? "讨论区" : "课堂讨论区") + ) + when 9 + sub_type == 1 ? "实训留言列表" : "" + when 10 + sub_type == 1 ? "实名认证" : + (sub_type == 2 ? "试用授权" : + (sub_type == 3 ? "部门审批" : + (sub_type == 4 ? "单位审批" : + (sub_type == 5 ? "实训发布" : + (sub_type == 6 ? "实训课程发布" : "职业认证") + ) + ) + ) + ) + when 11 + "工程认证+" + when 12 + sub_type == 1 ? "过关任务模板" : + (sub_type == 2 ? "实训简介模板" : + (sub_type == 3 ? "背景知识模板" : + (sub_type == 4 ? "通用评测模板" : + (sub_type == 5 ? "新课导语模板" : + (sub_type == 6 ? "实训评分设置" : + (sub_type == 7 ? "技术体系" : "升级通知") + ) + ) + ) + ) + ) + end + end + + + # codeMirror语言转换 + def language_switch language + case language + when "Java" + "text/x-java" + when "C" + "text/x-csrc" + when "C++" + "text/x-c++src" + when "Python" + "text/x-python" + when "Ruby" + "text/x-ruby" + end + end + + # 实训语言的种类 + def shixun_language + ["Java", "C", "C++", "Python2.7", "Python3.6", "MySQL/Java", "Html", "JFinal", "Docker", "Ethereum", "Dynamips", "MachineLearning", + "Verilog","Spark","MySQL/Python3.6","PHP","PHP/Web","Hadoop", "Golang","Android","Matlab","Shell", "Git", 'Perl6', 'Kotlin', 'Elixir', 'JavaScript', 'Ruby'] + end + + # 实训试用专业 + def shixun_major_option + content = [] + content << ["选择实训适用的专业", 0] + content << ["计算机科学与技术", 635] + content << ["软件工程", 636] + content << ["网络工程", 637] + content << ["信息安全", 638] + content << ["物联网工程", 639] + content << ["信息工程", 622] + content << ["通信工程", 619] + end + + # 实训面向学员 + def shixun_trainee + content = [] + content << ["初级学员", 1] + content << ["中级学员", 2] + content << ["高级学员", 3] + content << ["顶级学员", 4] + end + + # 班级设置排序中文 + def switch_to_chinese word + case word + when "boards" + result = "讨论区" + when "news" + result = "通知" + when "homework" + result = "作业" + when "exercises" + result = "试卷" + when "poll" + result = "问卷" + when "statistics" + result = "统计" + when "attachment" + result ="资源" + end + return result + end + + def allow_to_view_challenge challenge, shixun + # 判断对应关卡的game是否开启,如果开启则允许查看 + game_count = Game.where(:challenge_id => challenge, :user_id => User.current, :status => [0,1,2]).count + if game_count > 0 + return true + else + return false + end + end + + # 已通过的关卡数 + def had_passed_changllenge_count shixun, user + myshixun = Myshixun.where(:shixun_id => shixun.id, :user_id => user.id).first + if myshixun.nil? + 0 + elsif myshixun.games.select{|game| game.status == 2}.count == 0 + -1 + elsif myshixun.games.select{|game| game.status == 0}.count > 0 + [myshixun.games.select{|game| game.status == 2}.count + 1] + else + myshixun.games.select{|game| game.status == 2}.count + end + end + + # 判断TPM已通过的管卡数 + def had_passed_games_count shixun_id, user_id + #Game.find_by_sql("select count(*) as unpass_count from games where games.status=2 and user_id=#{user_id} and games.challenge_id in (select id from challenges where shixun_id=#{shixun_id})").first.try(:unpass_count) + Game.find_by_sql("SELECT count(*) cnt FROM `games` g join myshixuns m on m.id = g.myshixun_id where m.user_id = #{user_id} and m.shixun_id = #{shixun_id} and g.status = 2;").first.try(:cnt) + end + + # 用户实训评测状态 + def user_evaluate_status shixun, user + myshixun = shixun.myshixuns.where(:user_id => user.id).first + if myshixun.blank? + "--" + else + game_id = myshixun.games.map(&:id) + output = Output.where(:game_id => game_id).reorder("updated_at desc").first + if output.blank? + "--" + else + if output.try(:code) == -1 + time_from_now(output.updated_at).to_s + "评测失败" + else + time_from_now(output.updated_at).to_s + "评测成功" + end + end + end + end + + def student_work_performance score + case score + when (90..100) + '优秀' + when (70...90) + '良好' + when (60...70) + '及格' + when (0...60) + '不及格' + end + end + + # 已通过的关卡数 返回int类型(包含查看参考答案的) + def had_passed_changllenge_num myshixun + if myshixun.nil? + 0 + else + myshixun.games.select{|game| game.status == 2}.count + end + end + + # 已通过的关卡数 返回int类型(未查看参考答案) + def had_passed_no_ans_changllenge_num myshixun + if myshixun.nil? + 0 + else + myshixun.games.select{|game| game.status == 2 && game.final_score > 0}.count + end + end + + # TPI状态 :已通关、未通关、未开启 + def my_shixun_status shixun, user + status = "" + myshixun = Myshixun.where(:shixun_id => shixun.id, :user_id => user.id).first + if myshixun.nil? + status = "未开启" + else + status = myshixun.is_complete? ? "已通关" : "未通关" + end + status + end + + # 定义实训相关方法 + def sum_final_score + Game.find_by_sql("SELECT sum(final_score) as total_score FROM `games` where user_id=#{User.current.id}").first.try(:total_score) + end + + # 获取某个myshixun的得分 + def sum_myshixun_score myshixun_id + Game.find_by_sql("SELECT sum(final_score) as total_score FROM `games` where myshixun_id=#{myshixun_id}").first.try(:total_score) + end + + # myshixun 最高分 + def top_score shixun, position + Game.find_by_sql("SELECT max(final_score) as top_score FROM `games` g, `challenges` c where g.challenge_id = c.id and c.position=#{position} and g.myshixun_id in (SELECT id FROM `myshixuns` ms where ms.shixun_id=#{shixun.id})").first.try(:top_score) + end + + # 实训平均分 + def shixun_avg_score shixun, position + Game.find_by_sql("SELECT avg(g.final_score) as avg_score FROM `games` g, `challenges` c where g.challenge_id=c.id and c.position=#{position} and g.myshixun_id in (SELECT id FROM `myshixuns` ms where ms.shixun_id=#{shixun.id})").first.try(:avg_score) + end + + # 正在进行中任务 + def shixun_running shixun, position + Shixun.find_by_sql("SELECT count(*) as count FROM `myshixuns` ms, `games` g, `challenges` c where g.myshixun_id = ms.id and ms.shixun_id =#{shixun.id} and g.challenge_id=c.id and c.position=#{position} and g.status in ('0','1');").first.try(:count) + end + + # 已完成任务 + def shixun_done shixun, position + Shixun.find_by_sql("SELECT count(*) as count FROM `myshixuns` ms, `games` g, `challenges` c where g.myshixun_id = ms.id and ms.shixun_id =#{shixun.id} and g.challenge_id=c.id and c.position=#{position} and g.status=2;").first.try(:count) + end + + # 测评次数 + def shixun_exec_total_count shixun, position + Game.find_by_sql("SELECT * FROM `outputs` op, `games` g, `myshixuns` m where op.game_id = g.id and g.stage='#{position}' and m.parent_id = '#{shixun.id}';") + end + + # 平均耗时 + def game_avg_day created_at, updated_at + time = (updated_at - created_at).to_i + day = time / 86400 + end + + # 平均耗时 + def game_avg_hour created_at, updated_at + time = (updated_at - created_at).to_i + hour = time % (24*60*60) / (60*60) + end + + # 平均耗时 + def game_avg_min created_at, updated_at + time = (updated_at - created_at).to_i + min = time % (24*60*60) % (60*60) / 60 + end + + # 耗时:天、小时、分、秒 + # 小于1分钟则不显示 + def game_spend_time time + day = time / 86400 + hour = time % (24*60*60) / (60*60) + min = time % (24*60*60) % (60*60) / 60 + sec = time % (24*60*60) % (60*60) % 60 + if day < 1 + if hour < 1 + if min < 1 + if sec < 1 + time = "--" + else + time = "#{sec}秒" + end + else + time = "#{min}分钟 #{sec}秒" + end + else + time = "#{hour}小时 #{min}分钟 #{sec}秒" + end + else + time = "#{day}天 #{hour}小时 #{min}分钟 #{sec}秒" + end + return time + end + + # 耗时:天、小时、分 + # 小于1分钟则不显示 + def work_spend_time time + if time == 0 + time = "0小时" + else + day = time / 86400 + hour = time % (24*60*60) / (60*60) + min = (time % (24*60*60) % (60*60) / 60.0).ceil + if day < 1 + if hour < 1 + if min < 1 + time = "1分" + else + time = "#{min}分" + end + else + time = "#{hour}小时#{min}分" + end + else + time = "#{day}天#{hour}小时#{min}分" + end + end + return time + end + + # 耗时:小时、分、秒 00:00:00 + # 小于1秒钟则不显示 + def com_spend_time time + hour = time / (60*60) + min = time % (60*60) / 60 + sec = time % (60*60) % 60 + hour_str = "00" + min_str = "00" + sec_str = "00" + if hour >= 1 && hour < 10 + hour_str = "0#{hour}" + elsif hour >= 10 + hour_str = "#{hour}" + end + + if min >= 1 && min < 10 + min_str = "0#{min}" + elsif min >= 10 + min_str = "#{min}" + end + + if sec >= 1 && sec < 10 + sec_str = "0#{sec}" + elsif sec >= 10 + sec_str = "#{sec}" + end + + time = "#{hour_str} : #{min_str} : #{sec_str}" + return time + end + + def consume_time time + time.strftime('%Y/%m/%d %H:%M:%S') + end + + def avg_spend_time shixun_id, position + Game.find_by_sql("SELECT avg(g.end_time - g.open_time) as avg_time FROM `games` g, `challenges` c where c.id=g.challenge_id and g.status =2 and c.position = #{position} and g.myshixun_id in (SELECT id FROM `myshixuns` where shixun_id= #{shixun_id});").first.try(:avg_time).to_i + end + + # 已闯关 + def had_pass shixun_id, position + Game.find_by_sql("SELECT count(*) as count FROM `games` g, `challenges` c where c.id=g.challenge_id and g.status =2 and c.position =#{position} and g.myshixun_id in (SELECT id FROM `myshixuns` where shixun_id=#{shixun_id});").first.try(:count) + end + + # 单个game测评次数 + def avg_my_pass game + Output.where(:game_id => game).count + end + + def shixun_final_score myshixun + Game.find_by_sql("SELECT sum(final_score) as final_score FROM `games` where myshixun_id='#{myshixun.id}';").first.try(:final_score) + end + + # def user_blogs_path(resource,parameters={}) + # super + # end + # 复制一个任务 + def publish_games challenge, myshixun_id, index + game = Game.new + game.attributes = challenge.attributes.dup.except("id","shixun_id","user_id","visits") + game.myshixun_id = myshixun_id + game.user_id = User.current.id + game.stage = challenge.position + index == 0 ? game.status = 0 : game.status = 3 + challenge_samples = challenge.challenge_samples + test_sets = challenge.test_sets + if game.save + unless challenge_samples.blank? + challenge_samples.each do |cs| + ChallengeSample.create(:game_id => game.id, :input => cs.input, :output => cs.output, :challenge_id => -1) + end + end + unless test_sets.blank? + test_sets.each do |ts| + TestSet.create(:game_id => game.id, :input => ts.input, :output => ts.output, :challenge_id => -1) + end + end + end + end + + def git_repository_url project, type + if type == "Shixun" + rep_identify = Repository.where(:shixun_id => project.id, :type => "Repository::Gitlab").first.try(:identifier) + elsif type == "Myshixun" + rep_identify = Repository.where(:myshixun_id => project.id, :type => "Repository::Gitlab").first.try(:identifier) + else + rep_identify = Repository.where(:project_id => project.id, :type => "Repository::Gitlab").first.try(:identifier) + end + gitlab_address = Redmine::Configuration['gitlab_address'] + gitUrl = gitlab_address.to_s+"/"+project.owner.to_s+"/"+ rep_identify + "."+"git" + end + + def gitlab_url container + g = Gitlab.client + url = "#{Redmine::Configuration['gitlab_address_ip']}/#{g.project(container.try(:gpid)).try(:path_with_namespace)}.git" + end + + def gitlab_address_url container + g = Gitlab.client + url = "#{Redmine::Configuration['gitlab_address']}/#{g.project(container.try(:gpid)).try(:path_with_namespace)}.git" + end + + # paranet_gpid 为fork的源头 + # u_gid 为当前用户在gitlab中对应的用户id + def sync_gitlab_rep container, parent_gpid, u_gid + Rails.logger.info("# sync_gitlab_rep # parent_gpid is #{parent_gpid}, u_gid is #{u_gid}") + if container.class == Myshixun + gshixun = Gitlab.client.fork(parent_gpid, u_gid) + container.update_attribute(:gpid, gshixun.id) + end + return gshixun.try(:id) + end + + # def git_shixun_url shixun, login + # rep_identify = Repository.where(:shixun_id => shixun.id, :type => "Repository::Gitlab").first.try(:identifier) + # gitlab_address = Redmine::Configuration['gitlab_address'] + # gitUrl = gitlab_address.to_s+"/"+login+"/"+ rep_identify + "."+"git" + # end + + # def git_shixun_url_ip shixun, login + # rep_identify = Repository.where(:shixun_id => shixun.id, :type => "Repository::Gitlab").first.try(:identifier) + # gitlab_address = Redmine::Configuration['gitlab_address_ip'] + # gitUrl = gitlab_address.to_s+"/"+login+"/"+ rep_identify + "."+"git" + # end + + # def git_myshixun_url_ip myshixun, user_id + # g = Gitlab.client + # login = User.where(:id => user_id).first.try(:login) + # rep_identify = g.project(myshixun.gpid).try(:name) + # gitlab_address = Redmine::Configuration['gitlab_address_ip'] + # gitUrl = gitlab_address.to_s+"/"+login+"/"+ rep_identify + "."+"git" + # end + + # myshixun git url by domain + # def git_myshixun_url myshixun, user_id + # g = Gitlab.client + # login = User.where(:id => user_id).first.try(:login) + # rep_identify = g.project(myshixun.gpid).try(:name) + # gitlab_address = Redmine::Configuration['gitlab_address'] + # gitUrl = gitlab_address.to_s+"/"+login+"/"+ rep_identify + "."+"git" + # end + + def uri_exec uri, params + begin + Rails.logger.info("@parmas is #{params}, url is #{uri}") + uri = URI.parse(URI.encode(uri.strip)) + res = Net::HTTP.post_form(uri, params).body + res = JSON.parse(res) + rescue => e + Rails.logger.error("failed to post data to brige! #{e}") + raise("实训云平台繁忙(繁忙等级:84)") + end + end + + # type 为繁忙等级 + # status-> 501:check检查版本库是否有代码异常 + # status-> 502:实训评测异常;503实训版本库check异常 + def interface_post uri, params, status + begin + uri = URI.parse(URI.encode(uri.strip)) + res = Net::HTTP.post_form(uri, params).body + res = JSON.parse(res) + if (res && res['code'] != 0) + raise(status) + end + res + rescue Exception => e + Rails.logger.error("post failed! #{e}") + raise("实训云平台繁忙(繁忙等级:#{status})") + end + end + + def get_url_exec uri, options={} + begin + uri = URI.parse(URI.encode(uri.strip)) + res = Net::HTTP.get_response(uri).body + res = JSON.parse(res) + rescue => e + logger.error("get response failed ! #{e}") + raise("实训云平台繁忙(繁忙等级:84)") + end + end + + def uri_json_exec uri, params + Net::HTTP.start(uri.hostname, uri.port) {|http| + http.post(uri.path, params.to_json) + } + + http = Net::HTTP.new(uri.host, uri.port) + res = Net::HTTP.post(uri, params.to_json).body + res = JSON.parse(res) + end + + def last_reply_time container_id + message = Message.where(:root_id => container_id).order("created_on desc").first + time = message.created_on + return time + end + + def judge_Chinese_num str + cn_reg = /[\u4e00-\u9fa5]{1}/ + cn_number = str.scan(cn_reg).size + en_number = str.size - cn_number + size = 1.9* cn_number + en_number + end + + # homework_common状态 + # 0:挂起;1:提交中;2:匿评中;3:评阅中 + def new_homework_common_status status + case status + when 0 + "未发布" + when 1 + "提交中" + when 2 + "补交中" + when 3 + "匿评中" + when 4 + "申诉中" + when 5 + "评阅中" + when 6 + "已结束" + end + end + + # 作业不同状态的不同样式 + def homework_status_color status + style = "" + case status + when '未发布' + style = 'edu-filter-btn-no-late' + when '提交中', '评阅中', '匿评中', '交叉评阅中' + style = 'edu-filter-btn-orange' + when '已开启补交' + style = 'edu-filter-btn-green' + when '已截止', '未开启补交' + style = 'edu-filter-btn-red' + when '已结束' + style = 'edu-filter-btn-end' + when '申诉中' + style = 'edu-filter-btn-appeal' + end + end + + # 有分班权限的课堂 学生提交作品时发送的消息对象 + def tiding_teachers course, member + if course.teacher_course_groups.count > 0 + member_ids = course.teacher_course_groups.where(:course_group_id => member.try(:course_group_id)).pluck(:member_id) + + teachers = course.teachers.where("members.id not in (#{course.teacher_course_groups.pluck(:member_id).size > 0 ? course.teacher_course_groups.pluck(:member_id).join(',') : -1}) or + members.id in (#{member_ids.size > 0 ? member_ids.join(',') : -1})") + else + teachers = course.teachers + end + teachers + end + + # 分班管理的老师所看到的成员数 + def group_student_count course + member = @course.members.where(:user_id => User.current.id).first + if User.current.allowed_to?(:as_teacher, course) && member.present? && member.teacher_course_groups.count > 0 + student_count = course.members.where(:course_group_id => member.teacher_course_groups.pluck(:course_group_id)).select{|member| member.roles.to_s.include?("Student")}.count + else + student_count = course.student.count + end + student_count + end + + # 已提交作品 + def late_commit_work_status work, homework + if homework.allow_late + link_to "补交附件", student_work_path(work, :is_focus => 1), :class => 'edu-filter-btn edu-activity-orange ml15 fl mt5', :title => "可追加作品修订附件" + else + "未开启补交".html_safe + end + end + + # 未提交作品 + def un_commit_work_status project, homework + if homework.allow_late + if homework.homework_type == 3 && project.nil? && homework.homework_detail_group.base_on_project == 1 + link_to "补交作品", "javascript:void(0)", :class => 'edu-filter-btn edu-activity-orange ml15 fl mt5', :style => "cursor:not-allowed", :title => '请先关联项目再补交作品' + else + link_to "补交作品", new_student_work_url_without_domain(homework.id), :class => 'edu-filter-btn edu-activity-orange ml15 fl mt5' + end + else + "未开启补交".html_safe + end + end + + # 判断作业有多少人提交了 + # + def had_commit_studentwork_count homework_common + member = homework_common.course.members.where(:user_id => User.current.id).first + student_works = homework_common.student_works + if member.present? && member.teacher_course_groups.count > 0 + group_students = homework_common.course.members.where(:course_group_id => member.teacher_course_groups.pluck(:course_group_id)).map(&:user_id) + student_works = student_works.where(:user_id => group_students) + end + student_works.where("work_status !=?", 0).count + end + + # 实训作业的有效作品数 + def effective_shixun_work_count homework_common + count = 0 + shixun = homework_common.shixuns + if shixun + homework_common.student_works.where("work_status !=?", 0).each do |work| + myshixun = work.myshixun + count = count + (myshixun && myshixun.games.select{|game| game.status == 2}.size > 0 ? 1 : 0) + end + end + count + end + + # 实训作业的通关作品数 + def tongguan_shixun_work_count homework_common + count = 0 + shixun = homework_common.shixuns.first + if shixun + challenge_count = shixun.challenges.count + homework_common.student_works.where("work_status !=?", 0).each do |work| + myshixun = work.myshixun + if myshixun && myshixun.games.select{|game| game.status == 2}.size == challenge_count + count = count + 1 + end + end + end + count + end + + # 未提交作品数统计 + def had_uncommit_studentwork_count homework_common + member = homework_common.course.members.where(:user_id => User.current.id).first + student_works = homework_common.student_works + if member.present? && member.teacher_course_groups.count > 0 + group_students = homework_common.course.members.where(:course_group_id => member.teacher_course_groups.pluck(:course_group_id)).map(&:user_id) + student_works = student_works.where(:user_id => group_students) + end + student_works.where("work_status =?", 0).count + end + + # 未评阅 + def had_unevaluate_count homework_common + #count = StudentWorksScore.find_by_sql("SELECT count(distinct student_work_id) as count FROM student_works_scores sws, student_works sw, homework_commons hc where hc.id =#{homework_common.id} and sw.homework_common_id=hc.id and sw.is_delete = 0 and sws.student_work_id = sw.id and sws.user_id=#{User.current.id};").first.try(:count).to_i + member = homework_common.course.members.where(:user_id => User.current.id).first + student_works = homework_common.student_works + if member.present? && member.teacher_course_groups.count > 0 + group_students = homework_common.course.members.where(:course_group_id => member.teacher_course_groups.pluck(:course_group_id)).map(&:user_id) + student_works = student_works.where(:user_id => group_students) + end + has_comment = StudentWorksScore.where(:student_work_id => student_works.map(&:id), :reviewer_role => [1, 2]).group_by(&:student_work_id).count + student_count = student_works.count + return student_count - has_comment + end + + # 该阶段还有多长时间结束/距下一阶段还有多长时间 + def homework_curr_time homework_common + result = {} + status = "" + time = "" + if homework_common.course.try(:is_end) + status = "已结束" + time = format_date homework_common.course.end_date + else + ho_detail_manual = homework_common.homework_detail_manual + if ho_detail_manual + case ho_detail_manual.comment_status + when 0 + status = "未发布" + when 1 + if homework_common.end_time && homework_common.end_time >= Time.now + status = "提交中" + time = how_much_time(homework_common.end_time) + end + when 3 + if ho_detail_manual.evaluation_end && ho_detail_manual.evaluation_end > Time.now + status = "匿评中" + time = how_much_time(ho_detail_manual.evaluation_end) + end + when 4 + if ho_detail_manual.appeal_time && ho_detail_manual.appeal_time > Time.now + status = "申诉中" + time = how_much_time(ho_detail_manual.appeal_time) + end + when 5 + status = "评阅中" + when 6 + status = "评阅中" + end + end + end + result[:status] = status + result[:time] = time + result + end + + # 试卷:该阶段还有多长时间结束/距下一阶段还有多长时间 + def exercise_curr_time exercise + result = {} + status = "" + time = "" + case exercise.exercise_status + when 1 + status = "未发布" + when 2 + if exercise.end_time && exercise.end_time >= Time.now + status = "提交中" + time = how_much_time(exercise.end_time) + end + when 3 + status = "已截止" + time = format_time exercise.end_time + end + result[:status] = status + result[:time] = time + result + end + + # 问卷:该阶段还有多长时间结束/距下一阶段还有多长时间 + def poll_curr_time poll + result = {} + status = "" + time = "" + case poll.polls_status + when 1 + status = "未发布" + when 2 + if poll.end_time && poll.end_time >= Time.now + status = "提交中" + time = how_much_time(poll.end_time) + end + when 3 + status = "已截止" + time = format_time poll.end_time + end + result[:status] = status + result[:time] = time + result + end + + # 公共分页 + def paginator_list objs, objs_count, limit, is_remote + @is_remote = is_remote + @objs_count = objs.count + @obj_pages = Paginator.new @objs_count, limit, params['page'] || 1 + @offset ||= @obj_pages.offset + @objs = paginateHelper @attachments,25 + end + + # 判断当前用户能否对消息进行操作 + def allow_to_show applied_message + (User.current.id == applied_message.user_id && applied_message.status == 0) ? true : false + end + + # 获取竞赛的管理人员 + def contest_managers contest + contest.contest_members.select{|cm| cm.roles.to_s.include?("ContestManager")} + end + + # 获取竞赛的评委人员 + def contest_judges contest + contest.contest_members.select{|cm| cm.roles.to_s.include?("Judge")} + end + + # 获取竞赛的参赛人员 + def contest_contestants contest + contest.contest_members.select{|cm| cm.roles.to_s.include?("Contestant")} + end + + # 字符串加密 + def aes_encrypt(key, encrypted_string) + aes = OpenSSL::Cipher::Cipher.new("AES-128-ECB") + aes.encrypt + aes.key = key + txt = aes.update(encrypted_string) << aes.final + txt.unpack('H*')[0].upcase + end + + # 字符串解密 + def aes_dicrypt(key, dicrypted_string) + aes = OpenSSL::Cipher::Cipher.new("AES-128-ECB") + aes.decrypt + aes.key = key + aes.update([dicrypted_string].pack('H*')) << aes.final + end + # 获取多种类型的user用户名 + def user_message_username user + user.try(:show_name) + end + + # 超出1w后用k+形式显示 + def switch_integer_into_k number + number > 10000 ? (number.to_f / 1000).round.to_s + "k" : number + end + + # 判断某个课程是否包含仅对自己可见的作业 + def course_has_score_open_common_homework course + course.homework_commons.select{|hc| hc.score_open == 0}.count > 0 ? true : false + end + + def welcome_course_message_count course_id + board_id = Board.where(:course_id => course_id).first.try(:id) + message_count = Message.where(:board_id => board_id).count + return message_count + end + + # 可以查看到资源库的资源 + def welcome_course_file_count course + course.attachments.count + end + + # 超级管理员实训评分设置的横轴 + def shixun_quality_show quality + lower = quality.lower_limit + upper = quality.upper_limit + result = "#{quality.name}" + if lower.present? && upper.present? + result = if(lower > lower.round) + "#{result}(#{lower.round}," + else + "#{result}[#{lower.round}," + end + + result = if(upper >= upper.round) + "#{result}#{upper.round}]" + else + "#{result}#{upper.round})" + end + end + return result + end + + # 管理员实训评分中 "指标"与"标准"的对应 + def description_of_quality indicator, position + indicator.score_quality_descriptions.where(:position => position).first.try(:name) if indicator.present? + end + + # 获取目录下所有文件,返回一个文件名的数组 type是查看文件的类型image表示图片 + # type [[1, "图片"], [2, "apk/exe"], [3, "txt"], [4, "html"]] + def get_dir_filename path, type, game_id + answer_picture = [] + image = ["png", "jpg", "gif", "jpeg", "bmp", "pic"] + if File.directory? path + Dir.foreach(path) do |file| + if file !="." and file !=".." + extension = file.split(".")[1].try(:downcase) + if image.include?(extension) && type == 1 + answer_picture << file + @type = "image" + elsif extension == "html" && type == 4 + answer_picture << file + @type = "html" + elsif extension == "txt" && type == 3 + answer_picture << file + @contents = "" + f = File.open("#{path}/#{file}", "r") + # ... process the file + f.each_line do |line| + if line.include?("Your score") + game = Game.find(game_id) + max_query_index = game.query_index - 1 + a = line[11, line.length-1].try(:strip) + outputs = game.outputs.where(:query_index => max_query_index) + outputs.update_all(:text_scor => a) if outputs.present? + end + @contents += "#{line}" + end + f.close + @type = "txt" + end + end + end + end + return answer_picture + end + + # 隐藏项目以外的信息 + # return: true 显示,false 不显示 + def hidden_unproject_infos + hidden_info = Setting.find_by_name("hidden_non_project") + (hidden_info && hidden_info.value == "1") ? true : false + end + + # 获取当前用户的fork数量 + def get_fork_from_project forked_from_project_id + Project.find(forked_from_project_id) + end + + # 判断当前用户是否已经fork过当前项目 + # project: current_project + def has_forked_cur_project project + cur_user_projects = Project.where(:user_id => User.current.id) + if cur_user_projects.count == 0 + false + else + has_forked = cur_user_projects.select{|cur_user_project| cur_user_project.forked_from_project_id == project.id} + has_forked.length > 0 ? true : false + end + end + + # 判断当前用户是否已经实训过当前项目 + # project: current_project + def has_exec_cur_shixun shixun + Myshixun.where(:user_id => User.current.id, :shixun_id => shixun.id).count > 0 ? true : false + end + + # 用户必须登录;必须创建了关卡;有实践任务的必须提交了版本库代码 + def allow_shixun_exec shixun + g = Gitlab.client + result = User.current.logged? && shixun.challenges.count > 0 + if shixun.challenges.where(:st => 0).count > 0 + result = result && g.trees(shixun.gpid).count.to_i > 0 + end + result + end + + # 判断当前用户是否可以开始实战 + def link_to_shixun_exec myshixun, shixun, str + is_modify = ShixunModify.where(:myshixun_id => myshixun.try(:id), :shixun_id => shixun.try(:id), :status => 1).first.blank? + if User.current.mail.blank? + link_to str, "javascript:void(0);", :onclick => "notice_box_redirect('#{security_settings_path}', '开启实训,请先绑定邮箱')", :class => "fr shixun-task-btn task-btn-orange mr15", :target => "_blank" + else + if is_modify || myshixun.blank? + link_to str, shixun_exec_shixun_path(shixun), :class => "fr shixun-task-btn task-btn-orange mr15", :target => "_blank" + else + link_to str, "javascript:void(0);", :onclick => "sure_box_redirect('#{myshixun_reset_myshixun_path(myshixun)}', '实训已经更新啦,系统正在为您重置')", :class => "fr shixun-task-btn task-btn-orange mr15" + end + end + end + + # 通过系统外部邮箱查找用户,如果用户不存在则用邮箱替换 + def get_user_by_mail mail + user = User.find_by_mail(mail) + user.nil? ? User.find(2) : user + end + + # 通过登录名查找用户,能查到返回用户姓名,否则返回登录名 + def link_to_user_login login, css_class + user = User.find_by_login(login) + user = user.nil? ? login : user + if user.is_a?(User) + name = user.show_name + link_to name, {:controller=> 'users', :action => 'show', id: user.id}, :class => css_class, :target => "_blank" + else + "#{h(user.to_s)}".html_safe + end + end + + def link_to_user_mail(mail, css_class) + user = User.find_by_mail(mail) + user = user.nil? ? mail : user + if user.is_a?(User) + name = user.show_name + link_to name, {:controller=> 'users', :action => 'show', id: user.id}, :class => css_class, :target => "_blank" + else + "#{h(user.to_s)}".html_safe + end + end + + # 通过系统外部用户名查找用户,如果用户不存在则用邮箱替换 + def get_user_by_login_and login + user = User.find_by_login(login) + (user.nil? || login == "root") ? User.find(2) : user + end + + # 登录名来自外部系统 + # 通过登录名查找用户,如果用户存在则显示用户姓名,否则显示登录名 + def get_user_by_login login + user = User.find_by_login(login) + user.nil? ? login : user.show_name + end + + # 重置user_path,目的是将id转换成用户名 + def user_path(resource, parameters = {}) + if Fixnum === resource + resource = User.find(resource) + end + super + end + + # 重置user_path,目的是将id转换成用户名 + # def shixun_path(resource, parameters = {}) + # if Fixnum === resource + # resource = Shixun.find(resource) + # end + # super + # end + + # 历史数据(老版本库数据)处理完则可以修改该放放 + def get_rep_identifier_by_project project + identifier = Repository.where(:project_id => project.id, :type => "Repository::Gitlab").first.try(:identifier) + result = identifier.nil? ? Repository.where(:project_id => project.id).first.try(:identifier) : identifier + result + end + + # 项目版本库导出Excel功能 + def export_rep_xls(gpid, options = {}) + g = Gitlab.client + cycle = params[:cycle] + rev = params[:rev] + if cycle == "week" + statics = g.rep_stats_week(gpid, :rev => rev) + elsif cycle == "month" + statics = g.rep_stats_month(gpid, :rev => rev) + end + xls_report = StringIO.new + book = Spreadsheet::Workbook.new + sheet1 = book.create_worksheet :name => l(:project_module_repository) + blue = Spreadsheet::Format.new :color => :blue, :weight => :bold, :size => 10 + sheet1.row(0).default_format = blue + sheet1.row(0).concat([l(:rep_branch),l(:rep_author),l(:rep_changeset),l(:rep_code_add),l(:rep_code_delete),l(:rep_code_modified),l(:rep_sode_time),l(:rep_sode_cycle),l(:rep_author_mail)]) + count_row = 1 + statics.each do |static| + user = User.where(:mail => static.email).first + sheet1[count_row,0] = rev + sheet1[count_row,1] = user.nil? ? static.uname : user.show_name + sheet1[count_row,2] = static.commits_num + sheet1[count_row,3] = static.add + sheet1[count_row,4] = static.del + sheet1[count_row,5] = static.changes + sheet1[count_row,6] = Time.now.strftime('%Y-%m-%d %H:%M:%S') + sheet1[count_row,7] = cycle == "week" ? "最近1周" : "最近一月" + sheet1[count_row,8] = static.email + count_row += 1 + end + book.write xls_report + xls_report.string + end + + # 项目issue列表导出Excel功能 + def issue_list_xls issues + xls_report = StringIO.new + book = Spreadsheet::Workbook.new + sheet1 = book.create_worksheet :name => "issues" + blue = Spreadsheet::Format.new :color => :blue, :weight => :bold, :size => 10 + sheet1.row(0).default_format = blue + sheet1.row(0).concat([l(:issue_xls_id),l(:issue_xls_tracker_id),l(:issue_xls_title),l(:issue_xls_description),l(:issue_xls_status),l(:issue_xls_assign),l(:issue_xls_priority),l(:issue_xls_author),l(:issue_xls_created_at),l(:milestone),l(:issue_xls_start),l(:issue_xls_due),l(:issue_xls_ratio)]) + count_row = 1 + issues.each do |issue| + sheet1[count_row,0] = issue.id + sheet1[count_row,1] = issue_tracker_change(issue.tracker_id) + sheet1[count_row,2] = issue.subject + sheet1[count_row,3] = (issue.description.gsub(/<\/?.*?>/,"")).html_safe + sheet1[count_row,4] = issue_status_change(issue.status_id) + sheet1[count_row,5] = issue.assigned_to.try(:show_name) + sheet1[count_row,6] = issue_priority_change(issue.priority_id) + sheet1[count_row,7] = issue.author.show_name + sheet1[count_row,8] = issue.created_on.nil? ? issue.created_on : issue.created_on.strftime('%Y-%m-%d %H:%M:%S') + sheet1[count_row,9] = issue.fixed_version.try(:name) + sheet1[count_row,10] = issue.start_date.nil? ? issue.start_date : issue.start_date.strftime('%Y-%m-%d') + sheet1[count_row,11] = issue.due_date.nil? ? issue.due_date : issue.due_date.strftime('%Y-%m-%d') + sheet1[count_row,12] = issue_ratio_change(issue.done_ratio, issue.status_id) + count_row += 1 + end + book.write xls_report + xls_report.string + end + + # 用户资料是否完善 + def user_data_complete user + user_extension = UserExtensions.where(:user_id => user.id).first + data = true + if user_extension.gender.nil? || user_extension.school_id.nil? || user.lastname.blank? || (user_extension.identity == 3 && user_extension.school_id.nil?) + data = false + end + return data + end + + # 获取用户单位 + # 优先获取高校信息,如果改信息不存在则获取occupation + def get_occupation_from_user user + School.where("id=?",user.user_extensions.school_id).first.try(:name).nil? ? user.user_extensions.try(:occupation) : School.where("id=?",user.user_extensions.school_id).first.try(:name) + end + + def update_visiti_count container + container.update_column(:visits, container.visits + 1) + end + + def if_hidden_subdomain field + domains = field.sub_domains.select{|domain| domain.hide.to_i == 0} + result = domains.length > 0 ? true : false + return result + end + + # 判断某个资源是否可以申请 + def attach_show_allow attach_id + attachment = Attachment.find(attach_id) + case attachment.container_type + when "Project" + User.current.member_of?(attachment.container) ? true : false + when "Course" + User.current.member_of_course?(attachment.container) ? true : false + when "OrgSubfield" + User.current.member_of_org?(attachment.container.organization) ? true : false + when "Principal" + User.current.id == attachment.author_id ? true : false + end + end + + # 判断某个私有资源是否可以发送下载权限 + # 结果为true不能下载,false可以下载 + def private_attachment_allow attachment_id + attach = Attachment.find(attachment_id) + # 条件取否,result结果为true则不能下载 + result = attach.is_public == 0 && attach.author != User.current && !attach.get_apply_resource_status(attach.id, User.current.id) && !attach_show_allow(attach) + end + + # Time 2015-03-24 15:27:29 + # Author lizanle + # Description 从硬盘上删除对应的资源文件 + def delete_kindeditor_assets_from_disk owner_id,owner_type + assets = Kindeditor::Asset.where(["owner_id = ? and owner_type = ?",owner_id,owner_type]) + if !assets.nil? && !assets.blank? + assets.all.each do |asset| + next if asset.nil? + filepath = File.join(Rails.root,"public","files","uploads", + asset[:created_at].to_s.gsub("+0800","").to_datetime.strftime("%Y%m").to_s, + asset[:asset].to_s) + File.delete(filepath) if File.exist?filepath + end + end + end + + def link_to_user_version(version, options = {}) + return '' unless version && version.is_a?(Version) + link_to_if version.visible?, format_version_name(version), { :controller => 'versions', :action => 'show', :id => version }, :class => "linkBlue" + end + + # 判断课程是否为精品课程 + def is_excellent_course course + (course.is_excellent? or course.excellent_option?) ? true : false + end + + # 判断课程对成员是否可见 + def visible_course?(course) + (course.is_delete? or (!course.is_public? && !User.current.member_of_course?(course))) ? false : true + end + + # 获取项目/课程总分 + # 发布缺陷 4分 回复缺陷 1分 提交一次 4分 讨论帖子 2分 回复帖子 1分 发布新闻 1分 + def static_project_score obj + score = obj.issue_num * 4 + obj.issue_journal_num + (obj.changeset_num||0) * 4 + obj.board_num * 2 + obj.board_message_num + obj.attach_num * 5 + end + + # 获取组织成员中文名字 + def get_org_member_role_name member + unless member.roles[0].nil? + case member.roles[0].name + when 'orgManager' + '管理人员' + when 'orgMember' + '组织成员' + end + end + end + + # 判断组织左侧展开或者隐藏 + def is_hide_org_left obj + if obj.nil? + return true + else + if obj.hide == 0 + return true + else + return false + end + end + end + + # Time 2015-03-24 16:38:05 + # Author lizanle + # Description after save后需要进行资源记录的更新 + # owner_type = 1 对应的是 memo + # owner_type = 2 对应的是forum + # owner_type = 3 对应的是message + # owner_type = 4 对应的是news + # owner_type = 5 对应的是comment + def update_kindeditor_assets_owner ids,owner_id,owner_type + ids.each do |id| + asset = Kindeditor::Asset.find(id.to_i) + asset.owner_id = owner_id + asset.owner_type = owner_type + asset.save + end + end + + # 更新课程活跃度得分 + def course_member_score(course_id,user_id,type) + course_contributor_score = CourseContributorScore.where("course_id =? and user_id =?", course_id, user_id).first + case type + when "HomeworkCommon" + if course_contributor_score.nil? + CourseContributorScore.create(:course_id => course_id, :user_id => user_id, :homework_journal_num => 1) + else + score = course_contributor_score.homework_journal_num.to_i + 1 + course_contributor_score.update_column(:homework_journal_num, score) + end + # 课程留言 + when "Course" + if course_contributor_score.nil? + CourseContributorScore.create(:course_id => course_id, :user_id => user_id, :journal_num => 1) + else + score = course_contributor_score.journal_num.to_i + 1 + course_contributor_score.update_column(:journal_num, score) + end + when "Message" + if course_contributor_score.nil? + CourseContributorScore.create(:course_id => course_id, :user_id => user_id, :message_num => 1) + else + score = course_contributor_score.message_num.to_i + 1 + course_contributor_score.update_column(:message_num, score) + end + when "MessageReply" + if course_contributor_score.nil? + CourseContributorScore.create(:course_id => course_id, :user_id => user_id, :message_reply_num => 1) + else + score = course_contributor_score.message_reply_num.to_i + 1 + course_contributor_score.update_column(:message_reply_num, score) + end + when "NewReply" + if course_contributor_score.nil? + CourseContributorScore.create(:course_id => course_id, :user_id => user_id, :news_reply_num => 1) + else + score = course_contributor_score.news_reply_num.to_i + 1 + course_contributor_score.update_column(:news_reply_num, score) + end + when "News" + if course_contributor_score.nil? + CourseContributorScore.create(:course_id => course_id, :user_id => user_id, :news_num => 1) + else + score = course_contributor_score.news_num.to_i + 1 + course_contributor_score.update_column(:news_num, score) + end + when "Attachment" + if course_contributor_score.nil? + CourseContributorScore.create(:course_id => course_id, :user_id => user_id, :resource_num => 1) + else + score = course_contributor_score.resource_num.to_i + 1 + course_contributor_score.update_column(:resource_num, score) + end + end + end + + # 删除某条记录相应减少课程统计数 + def down_course_score_num (course_id,user_id,type) + course_contributor_score = CourseContributorScore.where("course_id =? and user_id =?", course_id, user_id).first + case type + when "HomeworkCommon" + unless course_contributor_score.nil? + score = course_contributor_score.homework_journal_num.to_i - 1 + course_contributor_score.update_column(:homework_journal_num, score < 0 ? 0 : score) + end + # 课程留言 + when "Course" + unless course_contributor_score.nil? + score = course_contributor_score.journal_num.to_i - 1 + course_contributor_score.update_column(:journal_num, score < 0 ? 0 : score) + end + when "Message" + unless course_contributor_score.nil? + score = course_contributor_score.message_num.to_i - 1 + course_contributor_score.update_column(:message_num, score < 0 ? 0 : score) + end + when "MessageReply" + unless course_contributor_score.nil? + score = course_contributor_score.message_reply_num.to_i - 1 + course_contributor_score.update_column(:message_reply_num, score < 0 ? 0 : score) + end + when "NewReply" + unless course_contributor_score.nil? + score = course_contributor_score.news_reply_num.to_i - 1 + course_contributor_score.update_column(:news_reply_num, score < 0 ? 0 : score) + end + when "News" + unless course_contributor_score.nil? + score = course_contributor_score.news_num.to_i - 1 + course_contributor_score.update_column(:news_num, score < 0 ? 0 : score) + end + when "Attachment" + unless course_contributor_score.nil? + score = course_contributor_score.resource_num.to_i - 1 + course_contributor_score.update_column(:resource_num, score < 0 ? 0 : score) + end + end + end + + # Added by young + # Define the course menu's link class + # 不是数组的转化成数组,然后判断当前menu_item是否在给定的列表 + # REVIEW: 目测menu的机制,貌似不是很需要转换,再说 + def link_class(label) + labels = label.is_a?(Array) ? label : ([] << label) + #a = current_menu_item + labels.include?(current_menu_item) ? 'selected' : '' + + end + #Ended by young + # Return true if user is authorized for controller/action, otherwise false + def authorize_for(controller, action) + User.current.allowed_to?({:controller => controller, :action => action}, @project) + end + + # add by nwb + def authorize_for_course(controller, action) + User.current.allowed_to?({:controller => controller, :action => action}, @course) + end + + def authorize_for_contest(controller, action) + User.current.allowed_to?({:controller => controller, :action => action}, @contest) + end + + # Display a link if user is authorized + # + # @param [String] name Anchor text (passed to link_to) + # @param [Hash] options Hash params. This will checked by authorize_for to see if the user is authorized + # @param [optional, Hash] html_options Options passed to link_to + # @param [optional, Hash] parameters_for_method_reference Extra parameters for link_to + def link_to_if_authorized(name, options = {}, html_options = nil, *parameters_for_method_reference) + link_to(name, options, html_options, *parameters_for_method_reference) if authorize_for(options[:controller] || params[:controller], options[:action]) + end + + def link_to_if_authorized_course(name, options = {}, html_options = nil, *parameters_for_method_reference) + link_to(name, options, html_options, *parameters_for_method_reference) if authorize_for_course(options[:controller] || params[:controller], options[:action]) + end + + def link_to_if_authorized_contest(name, options = {}, html_options = nil, *parameters_for_method_reference) + link_to(name, options, html_options, *parameters_for_method_reference) if authorize_for_contest(options[:controller] || params[:controller], options[:action]) + end + # Displays a link to user's account page if active + def link_to_user(user, canShowRealName = false, options={}) + if user.is_a?(User) + if canShowRealName + name = h(user.realname(options[:format])) + else + name = h(user.name(options[:format])) + end + + #if user.active? || (User.current.admin? && user.logged?) + # link_to name, {:controller=> 'users', :action => 'show', id: user.id, host: Setting.host_user}, :class => user.css_classes + #else + # name + #end + link_to name, {:controller=> 'users', :action => 'show', id: user.id, host: Setting.host_user}, :class => user.css_classes + else + h(user.to_s) + end + end + + def link_to_isuue_user(user, options={}) + if user.is_a?(User) + if options[:format] + name = h(user.name(options[:format])) + else + name = h(user.show_name) + end + link_to name, {:controller=> 'users', :action => 'show', id: user.id, host: Setting.host_user}, :class => "pro_info_p" + else + h(user.to_s) + end + end + + def link_to_settings_user(user, options={}) + if user.is_a?(User) + name = h(user.name(options[:format])) + link_to name, {:controller=> 'users', :action => 'show', id: user.id, host: Setting.host_user}, :class => "w90 c_orange fl" + else + h(user.to_s) + end + end + + #重载上面方法,增加样式显示 + def link_to_user_header user,canShowRealName=false,options={} + if user.is_a?(User) + if canShowRealName + name = user.show_name + name = user.login if name == "" + else + name = user.login + end + link_to name, {:controller=> 'users', :action => 'show', id: user.id, host: Setting.host_user}, :class => options[:class] + else + h(user.to_s) + end + end + + # Displays a link to +issue+ with its subject. + # Examples: + # + # link_to_issue(issue) # => Defect #6: This is the subject + # link_to_issue(issue, :truncate => 6) # => Defect #6: This i... + # link_to_issue(issue, :subject => false) # => Defect #6 + # link_to_issue(issue, :project => true) # => Foo - Defect #6 + # link_to_issue(issue, :subject => false, :tracker => false) # => #6 + # + def link_to_issue(issue, options={}) + title = nil + subject = nil + text = options[:tracker] == false ? "##{issue.id}" : "#{issue.tracker} ##{issue.id}" + if options[:subject] == false + title = truncate(issue.subject, :length => 60) + else + subject = issue.subject + if options[:truncate] + subject = truncate(subject, :length => options[:truncate]) + end + end + s = link_to text, issue_path(issue), :class => issue.css_classes, :title => title + s << h(": #{subject}") if subject + s = h("#{issue.project} - ") + s if options[:project] + s + end + + def link_to_issue_version(issue, options={}) + title = nil + subject = nil + text = options[:tracker] == false ? "##{issue.id}" : "#{issue.tracker} ##{issue.id}" + if options[:subject] == false + title = truncate(issue.subject, :length => 60) + else + subject = issue.subject + if options[:truncate] + subject = truncate(subject, :length => 60) + end + end + # status_id:3、已解决 5、已关闭 + if issue.status_id == 3 + s = link_to text, issue_path(issue), :class => "text_line_s fl", :title => title + elsif issue.status_id == 5 + s = link_to text, issue_path(issue), :class => "text_line_s del_line fl", :title => title + else + s = link_to text, issue_path(issue), :class => "c_blue fl", :title => title + end + s << h("".html_safe) if subject + s = h("#{issue.project} - ") + s if options[:project] + s + end + + # Generates a link to an attachment. + # Options: + # * :text - Link text (default to attachment filename) + # * :download - Force download (default: false) + def link_to_short_attachment(attachment, options={}) + length = options[:length] ? options[:length]:23 + text = h(truncate(options.delete(:text) || attachment.filename, length: length, omission: '...')) + route_method = options.delete(:download) ? :download_named_attachment_url_without_domain : :named_attachment_url_without_domain + html_options = options.slice!(:only_path) + url = send(route_method, attachment, attachment.filename, options) + link_to text, url, html_options + end + + # Generates a link to an attachment. + # Options: + # * :text - Link text (default to attachment filename) + # * :download - Force download (default: false) + def link_to_attachment(attachment, options={}) + token = options[:token] if options[:token] + text = options.delete(:text) || attachment.filename + route_method = options.delete(:download) ? :download_named_attachment_path : :named_attachment_path + html_options = options.slice!(:only_path) + url = send(route_method, attachment, attachment.filename, options) + url << "?token=#{token}" unless token.nil? + link_to text, url, html_options + end + + def link_to_attachment_img(attachment, options={}) + text = options.delete(:text) || attachment.filename + route_method = options.delete(:download) ? :download_named_attachment_path : :named_attachment_path + html_options = options.slice!(:only_path) + url = send(route_method, attachment, attachment.filename, options) + image_tag url, html_options + end + + # Generates a link to a SCM revision + # Options: + # * :text - Link text (default to the formatted revision) + def link_to_revision(revision, repository, options={}) + if repository.is_a?(Project) + repository = repository.repository + end + text = options.delete(:text) || format_revision(revision) + rev = revision.respond_to?(:identifier) ? revision.identifier : revision + link_to( + h(text), + {:controller => 'repositories', :action => 'revision', :id => repository.project, :repository_id => repository.identifier_param, :rev => rev}, + :title => l(:label_revision_id, format_revision(revision)) + ) + end + + # Generates a link to a message + def link_to_message(message, options={}, html_options = nil) + link_to( + truncate(message.subject, :length => 60), + board_message_path(message.board_id, message.parent_id || message.id, { + :r => (message.parent_id && message.id), + :anchor => (message.parent_id ? "message-#{message.id}" : nil) + }.merge(options)), + html_options + ) + end + + # Generates a link to a project if active + # Examples: + # + # link_to_project(project) # => link to the specified project overview + # link_to_project(project, {:only_path => false}, :class => "project") # => 3rd arg adds html options + # link_to_project(project, {}, :class => "project") # => html options with default url (project overview) + # + def link_to_project(project, options={}, html_options = nil) + if project.archived? + h(project.name) + elsif options.key?(:action) + ActiveSupport::Deprecation.warn "#link_to_project with :action option is deprecated and will be removed in Redmine 3.0." + url = {:controller => 'projects', :action => 'show', :id => project}.merge(options) + link_to project.name, url, html_options + else + link_to project.name, project_path(project, options), html_options + end + end + + def link_to_course(course, options={}, html_options = nil) + if course.archived? + h(course.name) + elsif options.key?(:action) + ActiveSupport::Deprecation.warn "#link_to_course with :action option is deprecated and will be removed in Redmine 3.0." + url = {:controller => 'courses', :action => 'show', :id => project}.merge(options) + link_to course.name, url, html_options + else + link_to course.name, course_path(course, options), html_options + end + end + + # Generates a link to a project settings if active + def link_to_project_settings(project, options={}, html_options=nil) + if project.active? + link_to project.name, settings_project_path(project, options), html_options + elsif project.archived? + h(project.name) + else + link_to project.name, project_path(project, options), html_options + end + end + + def wiki_page_path(page, options={}) + url_for({:controller => 'wiki', :action => 'show', :project_id => page.project, :id => page.title}.merge(options)) + end + + def thumbnail_tag(attachment) + link_to image_tag(thumbnail_path(attachment)), + named_attachment_path(attachment, attachment.filename), + :title => attachment.filename + end + + def thumbnail_issue_tag(attachment) + imagesize = attachment.thumbnail(:size => "200*200") + imagepath = named_attachment_path(attachment, attachment.filename) + if imagesize + link_to image_tag(thumbnail_path(attachment), height: '73', width: '100', class: 'issue_attachment_picture'), + imagepath, + :title => attachment.filename + + else + link_to image_tag(imagepath , height: '73', width: '100', class: 'issue_attachment_picture'), + imagepath, + :title => attachment.filename + end + end + + def thumbnail_challenge_tag(attachment) + imagepath = named_attachment_path(attachment, attachment.filename) + image_tag(imagepath) + end + + # 图片缩略图链接 + def thumbnail_small_tag(attachment) + imagesize = attachment.thumbnail(:size => "200*200") + imagepath = named_attachment_path(attachment, attachment.filename) + if imagesize + link_to image_tag(imagesize), + imagepath, + :title => attachment.filename + else + link_to image_tag(imagepath , height: '200', width: '250'), + imagepath, + :title => attachment.filename + end + end + + def toggle_link(name, id, options={}) + onclick = "$('##{id}').slideToggle(); " + onclick << (options[:focus] ? "$('##{options[:focus]}').focus(); " : "this.blur(); ") + onclick << "return false;" + link_to(name, "javascript:void(0)", :onclick => onclick,:class => options[:class]) + end + + def image_to_function(name, function, html_options = {}) + html_options.symbolize_keys! + tag(:input, html_options.merge({ + :type => "image", :src => image_path(name), + :onclick => (html_options[:onclick] ? "#{html_options[:onclick]}; " : "") + "#{function};" + })) + end + + def format_activity_title(text) + h(truncate_single_line(text, :length => 100)) + end + + def format_activity_day(date) + date == User.current.today ? l(:label_today).titleize : format_date(date) + end + + def format_activity_description(text) + h(truncate(text.to_s, :length => 120).gsub(%r{[\r\n]*<(pre|code)>.*$}m, '...')).gsub(/[\r\n]+/, "
    ").html_safe + #h(truncate(text.to_s, :length => 120).gsub(/<\/?.*?>/,"")).html_safe + end + + def format_version_name(version) + if version.project == @project + h(truncate(version.name,:length=>20)) + else + h("#{version.project} - #{truncate(version.name,:length=>20)}") + end + end + + def due_date_distance_in_words(date) + if date + l((date < Date.today ? :label_roadmap_overdue : :label_roadmap_due_in), distance_of_date_in_words(Date.today, date)) + end + end + + # Renders a tree of projects as a nested set of unordered lists + # The given collection may be a subset of the whole project tree + # (eg. some intermediate nodes are private and can not be seen) + #Modified by nie. + def render_project_nested_lists(projects) + s = '' + if projects.any? + ancestors = [] + original_project = @project + #modified by nie + projects.each do |project| + # set the project environment to please macros. + @project = project + if (ancestors.empty? || project.is_descendant_of?(ancestors.last)) +# s << "
      \n" + s << "
        \n" + else + ancestors.pop + s << "" + while (ancestors.any? && !project.is_descendant_of?(ancestors.last)) + ancestors.pop + s << "
      \n" + end + end + classes = (ancestors.empty? ? 'root' : 'child') + s << "
    • " + if project.try(:project_type) == Project::ProjectType_project + s << h(block_given? ? yield(project) : project.name) + else + end + + if project.try(:project_type) == Project::ProjectType_project + unless User.current.member_of?(@project) + s << "" + s << watcher_link(@project, User.current)#, ['whiteButton']) + s << "" + end + s << (render :partial => 'projects/tracker_project', :locals => {:project => project}).to_s + else + s << (render :partial => 'projects/course', :locals => {:project => project}).to_s + end + s << "
      \n" + ancestors << project + end + s << ("
    \n" * ancestors.size) + @project = original_project + end + s.html_safe + end + + def render_course_nested_lists(courses) + s = '' + if courses.any? + ancestors = [] + original_course = @course + #modified by nie + courses.each do |course| + # set the project environment to please macros. + @course = course + if (ancestors.empty? )#|| course.is_descendant_of?(ancestors.last)) + s << "
      \n" + else + ancestors.pop + s << "" + while (ancestors.any? )#&& !course.is_descendant_of?(ancestors.last)) + ancestors.pop + s << "
    \n" + end + end + classes = (ancestors.empty? ? 'root' : 'child') + s << "
  • " + + s << (render :partial => 'courses/course', :locals => {:course => course}).to_s + s << "
    \n" + ancestors << course + end + s << ("
  • \n" * ancestors.size) + @course = original_course + end + s.html_safe + end + + + #added by young + def render_project_nested_lists_new(projects) + s = '' + if projects.any? + ancestors = [] + original_project = @project + projects.sort_by(&:lft).each do |project| + # set the project environment to please macros. + @project = project + if (ancestors.empty? || project.is_descendant_of?(ancestors.last)) +# s << "
      \n" + s << "
        \n" + else + ancestors.pop + s << "" + while (ancestors.any? && !project.is_descendant_of?(ancestors.last)) + ancestors.pop + s << "
      \n" + end + end + classes = (ancestors.empty? ? 'root' : 'child') + s << h(block_given? ? yield(project) : project.name) + ancestors << project + end + s << ("
    \n" * ancestors.size) + @project = original_project + end + s.html_safe + end + #end + def render_page_hierarchy(pages, node=nil, options={}) + content = '' + if pages[node] + content << "
      \n" + pages[node].each do |page| + content << "
    • " + content << link_to(h(page.pretty_title), {:controller => 'wiki', :action => 'show', :project_id => page.project, :id => page.title, :version => nil}, + :title => (options[:timestamp] && page.updated_on ? l(:label_updated_time, distance_of_time_in_words(Time.now, page.updated_on)) : nil)) + content << "\n" + render_page_hierarchy(pages, page.id, options) if pages[page.id] + content << "
    • \n" + end + content << "
    \n" + end + content.html_safe + end + + # Renders flash messages + def render_flash_messages + s = '' + flash.each do |k,v| + s << content_tag('div', v.html_safe, :class => "alert alert-orange mb15 mt15", :id => "flash_#{k}") + end + s.html_safe + end + + # Renders tabs and their content + def render_tabs(tabs) + if tabs.any? + render :partial => 'common/tabs', :locals => {:tabs => tabs} + else + content_tag 'p', l(:label_no_data), :class => "nodata" + end + end + + def render_project_settings_tabs(tabs) + if tabs.any? + render :partial => 'common/project_tab', :locals => {:tabs => tabs} + else + content_tag 'p', l(:label_no_data), :class => "nodata" + end + end + + # Renders the project quick-jump box + def render_project_jump_box + return unless User.current.logged? + projects = User.current.memberships.collect(&:project).compact.select(&:active?).uniq + if projects.any? + options = + ("" + + '').html_safe + + options << project_tree_options_for_select(projects, :selected => @project) do |p| + { :value => project_path(:id => p, :jump => current_menu_item) } + end + + select_tag('project_quick_jump_box', options, :onchange => 'if (this.value != \'\') { window.location = this.value; }') + end + end + + def project_tree_options_for_select(projects, options = {}) + s = '' + project_tree(projects) do |project, level| + name_prefix = (level > 0 ? ' ' * 2 * level + '» ' : '').html_safe + tag_options = {:value => project.id} + tag_options[:title] = project.name + if project == options[:selected] || (options[:selected].respond_to?(:include?) && options[:selected].include?(project)) + tag_options[:selected] = 'selected' + else + tag_options[:selected] = nil + end + tag_options.merge!(yield(project)) if block_given? + s << content_tag('option', name_prefix + h(project), tag_options) + end + s.html_safe + end + + # Yields the given block for each project with its level in the tree + # + # Wrapper for Project#project_tree + def project_tree(projects, &block) + Project.project_tree(projects, &block) + end + + # 项目版本库可见权限判断: + # modules中设置可见 + # 版本库存在 + # 版本库设置了隐藏则仅仅项目成员或超级管理员可见(hidden_repo:1 隐藏版本库) + # return -> true 可见 + def visible_repository?(project) + repository = Repository.where(:project_id => project.id, :type => "Repository::Gitlab").first + if project.enabled_modules.where("name = 'repository'").empty? || repository.nil? + result = false + else + result = (project.hidden_repo && !User.current.admin && !User.current.member_of?(project)) ? false : true + end + end + + # 判断成员在项目中的角色 member_role == Reporter/Manager/Developer 报告人员/管理人员/报告人员; + def role_of_members_in_project(project, user_id) + member = Member.where(:project_id => project, :user_id => user_id) + unless member.blank? + member_role = member.first.roles[0].to_s + end + return member_role + end + + # 判断用户是不是项目成员 + def is_project_member?(user_id, project_id) + @result = false + mem = Member.where("user_id = ? and project_id = ?",user_id, project_id) + unless mem.blank? + @result = true + end + return @result + end + + # 更新各类消息为已读 + def update_messsages_to_viewed(message_type, forge_message_id) + if(message_type == "CourseMessage") + query = CourseMessage.where(:course_message_type => ["JoinCourse", "RemoveFromCourse"], + :user_id => User.current, + :course_id => forge_message_id, + :viewed => false) + elsif(message_type == "ForgeMessage") + query = ForgeMessage.where(:forge_message_type => ["ProjectInvite", "JoinProject", "RemoveFromProject"], + :user_id => User.current, + :project_id => forge_message_id, + :viewed => false) + elsif(message_type == "ContestMessage") + query = ContestMessage.where(:contest_message_type => ["ContestRequestDealResult", "JoinContest", "RemoveFromContest"], + :user_id => User.current, + :contest_id => forge_message_id, + :viewed => false) + elsif(message_type == "BlogMessage") + query = BlogMessage.where(:blog_message_type => "BlogComment", + :user_id => User.current, + :blog_id => forge_message_id, + :viewed => false) + end + query.update_all(:viewed => true) unless query.blank? + end + + def show_attachment_tip container_id, container_type + atts = Attachment.where(:container_id => container_id, :container_type => container_type, :is_public => 0) + atts.count > 0 ? true :false + end + + # 必须是项目成员,项目必须提交过代码 + def allow_pull_request project + return 0 if project.gpid.nil? + g = Gitlab.client + # 之所以这样比较是为了解决gitlab本身的bug + commit_count = g.project(project.gpid).try(:commit_count).to_i + git_commit_cout = g.user_static(project.gpid, :rev => "master").count + count = commit_count > git_commit_cout ? commit_count : git_commit_cout + count + end + + # 判断版本库是否初始为gitlab + def rep_is_gitlab?(project) + rep = project.repositories.where("type =?", "Repository::Gitlab") + return rep.blank? ? true :false + end + + # 获取Gitlab版本库提交总数 + def commit_count(project, branch) + g = Gitlab.client + #add by hx + if g.commits(project.gpid, :ref_name => @rev , :page=>200).count > 0 + count = 4020 + elsif g.commits(project.gpid , :page=>25, :ref_name => branch).count==0 + count = count_commits(project.gpid , 0 , 25) + elsif g.commits(project.gpid , :page=>50, :ref_name => branch).count ==0 + count = count_commits(project.gpid , 25 , 50)+ 25 * 20 + elsif g.commits(project.gpid , :page=>75, :ref_name => branch).count ==0 + count = count_commits(project.gpid , 50 , 75)+ 50 * 20 + elsif g.commits(project.gpid , :page=>100, :ref_name => branch).count== 0 + count = count_commits(project.gpid , 75 , 100) + 75 * 20 + elsif g.commits(project.gpid , :page=>125, :ref_name => branch).count==0 + count = count_commits(project.gpid , 100 , 125) + 100 * 20 + elsif g.commits(project.gpid , :page=>150, :ref_name => branch).count==0 + count = count_commits(project.gpid , 125 , 150) + 125 * 20 + else + count = count_commits(project.gpid , 150 ,200) + 150 * 20 + end + end + + #add by hx + def count_commits(project_id , left , right) + count = 0 + (left..right).each do |page| + if $g.commits(project_id,:page => page).count == 0 + break + else + count = count + $g.commits(project_id, :ref_name => @rev, :page => page).count + end + end + return count + end + + # 获取单一gitlab项目 + def gitlab_repository(project) + rep = Repository.where("project_id =? and type =?", project.id,"Repository::Gitlab" ).first + end + + # 获取单一gitlab项目 + def shixun_repository(shixun) + rep = Repository.where(:shixun_id => shixun, :type => "Repository::Gitlab" ).first + end + + # 判断当前用户是否为项目管理员 + def is_project_manager?(user_id, project_id) + @result = false + mem = Member.where("user_id = ? and project_id = ?",user_id, project_id) + unless mem.blank? + @result = mem.first.roles.to_s.include?("Manager") ? true : false + end + return @result + end + + # 公开项目资源可以引用,admin和管理员和资源上传者拥有设置公开私有权限 + def authority_pubilic_for_files(project, file) + @result = false + if (is_project_manager?(User.current.id, @project.id) && User.current.allowed_to?(:manage_files, project)) || file.author_id == User.current.id || User.current.admin && + project_contains_attachment?(project,file) && file.container_id == project.id && file.container_type == "Project" + @result = true + end + return @result + end + + def principals_check_box_tags(name, principals) + s = '' + principals.each do |principal| + s << "\n" + end + s.html_safe + end + + # 判断模块是否可见 + def project_modules_allow project + @project.enabled_modules.where("name = 'issue_tracking'").empty? + end + + # 计算Pull Request的请求数目 + def pull_request_count project + g = Gitlab.client + g.merge_requests(project.gpid).count + end + + #项目成员列表复选框生成 + def project_member_check_box_tags_ex name, principals + s = '' + principals.each do |principal| + s << "
  • #{ check_box_tag name, principal.id, false, :id => nil} #{h link_to principal.userInfo, user_url_in_org( principal), :target => "_blank"}
  • \n" + end + s.html_safe + end + + def render_shixun_departments + s = '' + if params[:q] && params[:q].lstrip.rstrip != "" + scope = School.where("name like ?", "%#{params[:q]}%") + else + scope = [] + end + scope.each do |name| + s << "
  • #{name}
  • \n" + end + s.html_safe + end + + # REDO:发现搜索列表的功能还是挺多,以前单独写的最好都调用这个方法 + # scope:[] + def render_mirror_name scope = nil + s = '' + if scope.present? + scope.each do |name| + s << "
  • #{name}
  • \n" + end + end + s.html_safe + end + + #缺陷追踪者列表复选框生成 + def issue_watcher_check_box_tags_ex name, principals + s = '' + principals.each do |principal| + s << "
  • #{ check_box_tag name, principal.id, false, :id => nil } #{h link_to principal.userInfo, user_path( principal.id)}
  • \n" + end + s.html_safe + end + + + + #扩展的checkbox生成 + def principals_check_box_tags_ex(name, principals) + s = '' + principals.each do |principal| + s << "\n" + end + s.html_safe + end + + # li标签checkbos扩展 + def principals_check_box_tags_li(name, principals) + s = '' + principals.each do |principal| + s << "
  • #{ check_box_tag name, principal.id, false, :id => nil } #{h link_to principal.userInfo, user_path( principal.id) }
  • \n" + end + s.html_safe + end + + #扩展的checkbox生成 + def principals_radio_box_tags_ex(name, principals) + s = '' + principals.each do |principal| + s << "\n" + end + s.html_safe + end + + + # Returns a string for users/groups option tags + def principals_options_for_select(collection, selected=nil) + s = '' + if collection.include?(User.current) + s << content_tag('option', "<< #{l(:label_me)} >>", :value => User.current.id) + end + groups = '' + collection.sort.each do |element| + selected_attribute = ' selected="selected"' if option_value_selected?(element, selected) + (element.is_a?(Group) ? groups : s) << %() + end + unless groups.empty? + s << %(#{groups}) + end + s.html_safe + end + + def assigned_options_for_select(collection, selected=nil) + conv = Iconv.new("GBK", "utf-8") + s = '' + s << content_tag('option', "#{l(:label_assiged_tip)}", :value => 0) + if collection.include?(User.current) + s << content_tag('option', "<< #{l(:label_me)} >>", :value => User.current.id) + end + groups = '' + collection.sort{|x, y| conv.iconv(x.lastname) <=> conv.iconv(y.lastname)}.each do |element| + selected_attribute = ' selected="selected"' if option_value_selected?(element, selected) + (element.is_a?(Group) ? groups : s) << %() + end + unless groups.empty? + s << %(#{groups}) + end + s.html_safe + end + + + # Options for the new membership projects combo-box + def options_for_membership_project_select(principal, projects) + options = content_tag('option', "--- #{l(:actionview_instancetag_blank_option)} ---") + options << project_tree_options_for_select(projects) do |p| + {:disabled => principal.projects.to_a.include?(p)} + end + options + end + + # Truncates and returns the string as a single line + def truncate_single_line(string, *args) + truncate(string.to_s, *args).gsub(%r{[\r\n]+}m, ' ') + end + + # Truncates at line break after 250 characters or options[:length] + def truncate_lines(string, options={}) + length = options[:length] || 250 + if string.to_s =~ /\A(.{#{length}}.*?)$/m + "#{$1}..." + else + string + end + end + + def anchor(text) + text.to_s.gsub(' ', '_') + end + + def html_hours(text) + text.gsub(%r{(\d+)\.(\d+)}, '\1.\2').html_safe + end + + def authoring(created, author, options={}) + l(options[:label] || :label_added_time_by, :author => link_to_user(author), :age => time_tag(created)).html_safe + end + + def added_time(created) + l(:label_added_time, :age => time_tag(created)).html_safe + end + + def user_url_and_time(user_name, user_url, created) + unless user_name.nil? || user_name == '' + l(:label_added_time_by, :author => link_to(user_name, user_url), :age => time_tag(created)).html_safe + else + l(:label_added_time, :age => time_tag(created)).html_safe + end + end + + #huang + def betweentime(enddate) + ss=(DateTime.parse("#{enddate.to_date}")-DateTime.parse("#{DateTime.now.to_date}")).to_i + return ss + end + + def time_tag(time, *args) + options = args.extract_options! + text = distance_of_time_in_words(Time.now, time) + if @project + content_tag('acronym', text, options.reverse_merge(:title => format_time(time))) + # link_to(text, {:controller => 'activities', :action => 'index', :id => @project, :from => User.current.time_to_date(time)},options.reverse_merge(:title => format_time(time))) + else + content_tag('acronym', text, options.reverse_merge(:title => format_time(time))) + end + end + + def syntax_highlight_lines(name, content) + lines = [] + syntax_highlight(name, content).each_line { |line| lines << line } + lines + end + + def syntax_highlight(name, content) + Redmine::SyntaxHighlighting.highlight_by_filename(content, name) + end + + def to_path_param(path) + str = path.to_s.split(%r{[/\\]}).select{|p| !p.blank?}.join("/") + str.blank? ? nil : str + end + + def reorder_links(name, url, method = :post) + link_to(image_tag('2uparrow.png', :alt => l(:label_sort_highest)), + url.merge({"#{name}[move_to]" => 'highest'}), + :method => method, :title => l(:label_sort_highest)) + + link_to(image_tag('1uparrow.png', :alt => l(:label_sort_higher)), + url.merge({"#{name}[move_to]" => 'higher'}), + :method => method, :title => l(:label_sort_higher)) + + link_to(image_tag('1downarrow.png', :alt => l(:label_sort_lower)), + url.merge({"#{name}[move_to]" => 'lower'}), + :method => method, :title => l(:label_sort_lower)) + + link_to(image_tag('2downarrow.png', :alt => l(:label_sort_lowest)), + url.merge({"#{name}[move_to]" => 'lowest'}), + :method => method, :title => l(:label_sort_lowest)) + end + + def breadcrumb(*args) + elements = args.flatten + elements.any? ? content_tag('p', (args.join(" \xc2\xbb ") + " \xc2\xbb ").html_safe, :class => 'wiki_con_tit"') : nil + end + + def other_formats_links(&block) + concat('

    '.html_safe + l(:label_export_to)) + yield Redmine::Views::OtherFormatsBuilder.new(self) + concat('

    '.html_safe) + end + + def page_header_title + if @project.nil? || @project.new_record? + h(Setting.app_title) + else + b = [] + ancestors = (@project.root? ? [] : @project.ancestors.visible.all) + if ancestors.any? + root = ancestors.shift + b << link_to_project(root, {:jump => current_menu_item}, :class => 'root') + if ancestors.size > 2 + b << "\xe2\x80\xa6" + ancestors = ancestors[-2, 2] + end + b += ancestors.collect {|p| link_to_project(p, {:jump => current_menu_item}, :class => 'ancestor') } + end + b << h(@project) + b.join(" \xc2\xbb ").html_safe + end + end + + def html_title(*args) + #點擊項目版本庫 多觸發一次 字符串為"/" + #暫時解決方法 直接判斷 + if(args == ["/"]) + args = [] + end + # first_page = FirstPage.find_by_page_type('project') + if args.empty? + title = @html_title || [] + if @project + title << (@project.name.present? ? @project.name : "项目") + elsif params[:controller] == "projects" + title << "项目" + elsif @welcome + title << "创新源于实践" + elsif @course + title << (@course.name.nil? ? "课堂" : @course.name) + elsif params[:controller] == "homework_bank" || params[:controller] == "question_banks" || params[:controller] == "exercise_bank" + title << ("题库") + elsif params[:controller] == "managements" + title << ("后台管理") + elsif params[:controller] == "colleges" && params[:action] == "statistics" + title << ("#{@school.name}") + elsif params[:controller] == "account" && params[:action] == "help" + if params[:index] + case params[:index] + when "1" + title << ("关于我们") + when "2" + title << ("联系我们") + when "3" + title << ("合作伙伴") + when "4" + title << ("服务协议") + when "5" + title << ("帮助中心") + when "6" + title << ("意见反馈") + end + else + title << ("关于我们") + end + elsif params[:controller] == "courses" && params[:action] == "index" + title << ("课堂") + elsif params[:controller] == "competitions" && params[:action] == "index" + title << ("竞赛") + elsif @competition + title << (@competition.name.nil? ? "竞赛" : @competition.name) + elsif @contest + title << (@contest.name.nil? ? "创新源于实践" : @contest.name) + elsif @shixun + title << (@shixun.name.nil? ? "精选实训" : @shixun.name) + elsif @my_shixun + title << ("我的实训") + elsif params[:controller] == "shixuns" && params[:action] == "index" + title << ("精选实训") + elsif @subject + title << (@subject.name.nil? ? "实训课程" : @subject.name) + elsif params[:controller] == "subjects" && params[:action] == "index" + title << ("实训课程") + elsif @organization + title << (@organization.name.nil? ? "创新源于实践" : @organization.name) + elsif @forum || params[:controller] == "forums" + title << "讨论区" + elsif @my_syllabuses + title << "我的课堂" + elsif params[:controller] == 'ecs' + title << '专业列表' + elsif params[:controller] == 'ec_major_schools' + name = EcMajorSchool.find(params[:id]).name + title << name + elsif params[:controller] == 'ec_years' + if params[:action] == 'training_objectives' + title << '培养目标' + elsif params[:action] == 'graduation_requirement' + title << '毕业要求' + elsif params[:action] == 'requirement_vs_objective' + title << '毕业要求 vs 培养目标' + elsif params[:action] == 'requirement_vs_standard' + title << '毕业要求 vs 通用标准' + elsif params[:action] == 'ec_course_setting' || params[:action] == 'completion_calculation' + title << '课程体系' + else + title << '工程认证' + end + elsif params[:controller] == 'ec_courses' + if params[:action] == 'ec_course_support_setting' + title << '课程体系 vs 毕业要求' + end + elsif @user + if !@project_community.blank? || !@user_projectlist.blank? + title << "项目" + elsif !@course_community.blank? || !@user_courselist.blank? + title << "课堂" + elsif !@contest_community.blank? + title << @contest_community + elsif !@manage_issues.blank? + title << @manage_issues + elsif !@receive_issues.blank? + title << @receive_issues + elsif !@manage_homeworks.blank? + title << @manage_homeworks + elsif !@receive_homeworks.blank? + title << @receive_homeworks + else + title << @user.show_name + end + elsif @syllabus + title << (@syllabus.title.nil? ? "课堂" : @syllabus.title) + else + title << (User.current.id == 2 ? "未登录" : User.current.show_name) + end + # if first_page.nil? || first_page.web_title.nil? + # title << Setting.app_title unless Setting.app_title == title.last + # else + # title << first_page.web_title unless first_page.web_title == title.last + # end + title.select {|t| !t.blank? }.join(' - ') + else + @html_title ||= [] + @html_title += args + end + end + + # Returns the theme, controller name, and action as css classes for the + # HTML body. + def body_css_classes + css = [] + if theme = Redmine::Themes.theme(Setting.ui_theme) + css << 'theme-' + theme.name + end + + css << 'controller-' + controller_name + css << 'action-' + action_name + css.join(' ') + end + + def accesskey(s) + @used_accesskeys ||= [] + key = Redmine::AccessKeys.key_for(s) + return nil if @used_accesskeys.include?(key) + @used_accesskeys << key + key + end + + # Formats text according to system settings. + # 2 ways to call this method: + # * with a String: textilizable(text, options) + # * with an object and one of its attribute: textilizable(issue, :description, options) + def textilizable(*args) + options = args.last.is_a?(Hash) ? args.pop : {} + case args.size + when 1 + obj = options[:object] + text = args.shift + when 2 + obj = args.shift + attr = args.shift + text = obj.send(attr).to_s + else + raise ArgumentError, 'invalid arguments to textilizable' + end + return '' if text.blank? + project = options[:project] || @project || (obj && obj.respond_to?(:project) ? obj.project : nil) + only_path = options.delete(:only_path) == false ? false : true + + text = text.dup + macros = catch_macros(text) + text = Redmine::WikiFormatting.to_html(Setting.text_formatting, text, :object => obj, :attribute => attr) + + @parsed_headings = [] + @heading_anchors = {} + @current_section = 0 if options[:edit_section_links] + + parse_sections(text, project, obj, attr, only_path, options) + text = parse_non_pre_blocks(text, obj, macros) do |text| + [:parse_inline_attachments, :parse_wiki_links, :parse_redmine_links].each do |method_name| + send method_name, text, project, obj, attr, only_path, options + end + end + parse_headings(text, project, obj, attr, only_path, options) + + if @parsed_headings.any? + replace_toc(text, @parsed_headings) + end + + text.html_safe + end + + # + #格式化字符串,不转义html代码 + def textAreailizable(*args) + options = args.last.is_a?(Hash) ? args.pop : {} + case args.size + when 1 + obj = options[:object] + text = args.shift + when 2 + obj = args.shift + attr = args.shift + text = obj.send(attr).to_s + else + raise ArgumentError, 'invalid arguments to textilizable' + end + return '' if text.blank? + project = options[:project] || @project || (obj && obj.respond_to?(:project) ? obj.project : nil) + only_path = options.delete(:only_path) == false ? false : true + + text = text.dup + macros = catch_macros(text) + #text = Redmine::WikiFormatting.to_html("CKEditor", text, :object => obj, :attribute => attr) + + @parsed_headings = [] + @heading_anchors = {} + @current_section = 0 if options[:edit_section_links] + + parse_sections(text, project, obj, attr, only_path, options) + text = parse_non_pre_blocks(text, obj, macros) do |text| + [:parse_inline_attachments, :parse_wiki_links, :parse_redmine_links].each do |method_name| + send method_name, text, project, obj, attr, only_path, options + end + end + parse_headings(text, project, obj, attr, only_path, options) + + if @parsed_headings.any? + replace_toc(text, @parsed_headings) + end + + text.html_safe + end + + def parse_non_pre_blocks(text, obj, macros) + s = StringScanner.new(text) + tags = [] + parsed = '' + while !s.eos? + s.scan(/(.*?)(<(\/)?(pre|code)(.*?)>|\z)/im) + text, full_tag, closing, tag = s[1], s[2], s[3], s[4] + if tags.empty? + yield text + inject_macros(text, obj, macros) if macros.any? + else + inject_macros(text, obj, macros, false) if macros.any? + end + parsed << text + if tag + if closing + if tags.last == tag.downcase + tags.pop + end + else + tags << tag.downcase + end + parsed << full_tag + end + end + # Close any non closing tags + while tag = tags.pop + parsed << "" + end + parsed + end + + def parse_inline_attachments(text, project, obj, attr, only_path, options) + # when using an image link, try to use an attachment, if possible + attachments = options[:attachments] || [] + attachments += obj.attachments if obj.respond_to?(:attachments) + if attachments.present? + text.gsub!(/src="([^\/"]+\.(bmp|gif|jpg|jpe|jpeg|png))"(\s+alt="([^"]*)")?/i) do |m| + filename, ext, alt, alttext = $1.downcase, $2, $3, $4 + # search for the picture in attachments + if found = Attachment.latest_attach(attachments, filename) + image_url = download_named_attachment_path(found, found.filename, :only_path => only_path) + desc = found.description.to_s.gsub('"', '') + if !desc.blank? && alttext.blank? + alt = " title=\"#{desc}\" alt=\"#{desc}\"" + end + "src=\"#{image_url}\"#{alt}" + else + m + end + end + end + end + + # 判断课程、项目、组织是否有权限删除历史资源 + # 项目管理员或者附件的作者可以删除 + # (is_project_manager?(User.current.id, @project.id) || User.current.id == history.author_id) + def allow_to_delete_attachment history + attachment = history.attachment + case attachment.try(:container_type) + when "Project" + result = is_project_manager?(User.current.id, attachment.container_id) || User.current.id == history.author_id || User.current.admin? + when "Course" + result = User.current.allowed_to?(:as_teacher, attachment.container) || User.current.id == history.author_id || User.current.admin? + when "OrgSubfield" + result = User.current.id == history.author_id || User.current.admin_of_org?(attachment.container) || User.current.admin? + end + end + + # Wiki links + # + # Examples: + # [[mypage]] + # [[mypage|mytext]] + # wiki links can refer other project wikis, using project name or identifier: + # [[project:]] -> wiki starting page + # [[project:|mytext]] + # [[project:mypage]] + # [[project:mypage|mytext]] + def parse_wiki_links(text, project, obj, attr, only_path, options) + text.gsub!(/(!)?(\[\[([^\]\n\|]+)(\|([^\]\n\|]+))?\]\])/) do |m| + link_project = project + esc, all, page, title = $1, $2, $3, $5 + if esc.nil? + if page =~ /^([^\:]+)\:(.*)$/ + identifier, page = $1, $2 + link_project = Project.find_by_identifier(identifier) || Project.find_by_name(identifier) + title ||= identifier if page.blank? + end + + if link_project && link_project.wiki + # extract anchor + anchor = nil + if page =~ /^(.+?)\#(.+)$/ + page, anchor = $1, $2 + end + anchor = sanitize_anchor_name(anchor) if anchor.present? + # check if page exists + wiki_page = link_project.wiki.find_page(page) + url = if anchor.present? && wiki_page.present? && (obj.is_a?(WikiContent) || obj.is_a?(WikiContent::Version)) && obj.page == wiki_page + "##{anchor}" + else + case options[:wiki_links] + when :local; "#{page.present? ? Wiki.titleize(page) : ''}.html" + (anchor.present? ? "##{anchor}" : '') + when :anchor; "##{page.present? ? Wiki.titleize(page) : title}" + (anchor.present? ? "_#{anchor}" : '') # used for single-file wiki export + else + wiki_page_id = page.present? ? Wiki.titleize(page) : nil + parent = wiki_page.nil? && obj.is_a?(WikiContent) && obj.page && project == link_project ? obj.page.title : nil + url_for(:only_path => only_path, :controller => 'wiki', :action => 'show', :project_id => link_project, + :id => wiki_page_id, :version => nil, :anchor => anchor, :parent => parent) + end + end + link_to(title.present? ? title.html_safe : h(page), User.current.logged? ? url : signin_url_without_domain, :class => ('wiki-page' + (wiki_page ? '' : ' new'))) + else + # project or wiki doesn't exist + all + end + else + all + end + end + end + + def select_option_helper option + tmp = Hash.new + tmp={"" => ""} + if option.nil? + else + option.each do |project| + tmp[project.name] = project.id + end + end + tmp + end + # Redmine links + # + # Examples: + # Issues: + # #52 -> Link to issue #52 + # Changesets: + # r52 -> Link to revision 52 + # commit:a85130f -> Link to scmid starting with a85130f + # Documents: + # document#17 -> Link to document with id 17 + # document:Greetings -> Link to the document with title "Greetings" + # document:"Some document" -> Link to the document with title "Some document" + # Versions: + # version#3 -> Link to version with id 3 + # version:1.0.0 -> Link to version named "1.0.0" + # version:"1.0 beta 2" -> Link to version named "1.0 beta 2" + # Attachments: + # attachment:file.zip -> Link to the attachment of the current object named file.zip + # Source files: + # source:some/file -> Link to the file located at /some/file in the project's repository + # source:some/file@52 -> Link to the file's revision 52 + # source:some/file#L120 -> Link to line 120 of the file + # source:some/file@52#L120 -> Link to line 120 of the file's revision 52 + # export:some/file -> Force the download of the file + # Forum messages: + # message#1218 -> Link to message with id 1218 + # + # Links can refer other objects from other projects, using project identifier: + # identifier:r52 + # identifier:document:"Some document" + # identifier:version:1.0.0 + # identifier:source:some/file + def parse_redmine_links(text, default_project, obj, attr, only_path, options) + text.gsub!(%r{([\s\(,\-\[\>]|^)(!)?(([a-z0-9\-_]+):)?(attachment|document|version|forum|news|message|project|commit|source|export)?(((#)|((([a-z0-9\-_]+)\|)?(r)))((\d+)((#note)?-(\d+))?)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]][^A-Za-z0-9_/])|,|\s|\]|<|$)}) do |m| + leading, esc, project_prefix, project_identifier, prefix, repo_prefix, repo_identifier, sep, identifier, comment_suffix, comment_id = $1, $2, $3, $4, $5, $10, $11, $8 || $12 || $18, $14 || $19, $15, $17 + link = nil + project = default_project + if project_identifier + project = Project.visible.find_by_identifier(project_identifier) + end + if esc.nil? + if prefix.nil? && sep == 'r' + if project + repository = nil + if repo_identifier + repository = project.repositories.detect {|repo| repo.identifier == repo_identifier} + else + repository = project.repository + end + # project.changesets.visible raises an SQL error because of a double join on repositories + if repository && (changeset = Changeset.visible.find_by_repository_id_and_revision(repository.id, identifier)) + link = link_to(h("#{project_prefix}#{repo_prefix}r#{identifier}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :repository_id => repository.identifier_param, :rev => changeset.revision}, + :class => 'changeset', + :title => truncate_single_line(changeset.comments, :length => 100)) + end + end + elsif sep == '#' + oid = identifier.to_i + case prefix + when nil + if oid.to_s == identifier && issue = Issue.visible.find_by_id(oid, :include => :status) + anchor = comment_id ? "note-#{comment_id}" : nil + link = link_to("##{oid}", {:only_path => only_path, :controller => 'issues', :action => 'show', :id => oid, :anchor => anchor}, + :class => issue.css_classes, + :title => "#{truncate(issue.subject, :length => 100)} (#{issue.status.name})") + end + when 'document' + if document = Document.visible.find_by_id(oid) + link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document}, + :class => 'document' + end + when 'version' + if version = Version.visible.find_by_id(oid) + link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version}, + :class => 'version' + end + when 'message' + if message = Message.visible.find_by_id(oid, :include => :parent) + link = link_to_message(message, {:only_path => only_path}, :class => 'message') + end + when 'forum' + if board = Board.visible.find_by_id(oid) + link = link_to h(board.name), {:only_path => only_path, :controller => 'boards', :action => 'show', :id => board, :project_id => board.project}, + :class => 'board' + end + when 'news' + if news = News.visible.find_by_id(oid) + link = link_to h(news.title), {:only_path => only_path, :controller => 'news', :action => 'show', :id => news}, + :class => 'news' + end + when 'project' + if p = Project.visible.find_by_id(oid) + link = link_to_project(p, {:only_path => only_path}, :class => 'project') + end + end + elsif sep == ':' + # removes the double quotes if any + name = identifier.gsub(%r{^"(.*)"$}, "\\1") + case prefix + when 'document' + if project && document = project.documents.visible.find_by_title(name) + link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document}, + :class => 'document' + end + when 'version' + if project && version = project.versions.visible.find_by_name(name) + link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version}, + :class => 'version' + end + when 'forum' + if project && board = project.boards.visible.find_by_name(name) + link = link_to h(board.name), {:only_path => only_path, :controller => 'boards', :action => 'show', :id => board, :project_id => board.project}, + :class => 'board' + end + when 'news' + if project && news = project.news.visible.find_by_title(name) + link = link_to h(news.title), {:only_path => only_path, :controller => 'news', :action => 'show', :id => news}, + :class => 'news' + end + when 'commit', 'source', 'export' + if project + repository = nil + if name =~ %r{^(([a-z0-9\-_]+)\|)(.+)$} + repo_prefix, repo_identifier, name = $1, $2, $3 + repository = project.repositories.detect {|repo| repo.identifier == repo_identifier} + else + repository = project.repository + end + if prefix == 'commit' + if repository && (changeset = Changeset.visible.where("repository_id = ? AND scmid LIKE ?", repository.id, "#{name}%").first) + link = link_to h("#{project_prefix}#{repo_prefix}#{name}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :repository_id => repository.identifier_param, :rev => changeset.identifier}, + :class => 'changeset', + :title => truncate_single_line(changeset.comments, :length => 100) + end + else + if repository && User.current.allowed_to?(:browse_repository, project) + name =~ %r{^[/\\]*(.*?)(@([^/\\@]+?))?(#(L\d+))?$} + path, rev, anchor = $1, $3, $5 + link = link_to h("#{project_prefix}#{prefix}:#{repo_prefix}#{name}"), {:controller => 'repositories', :action => (prefix == 'export' ? 'raw' : 'entry'), :id => project, :repository_id => repository.identifier_param, + :path => to_path_param(path), + :rev => rev, + :anchor => anchor}, + :class => (prefix == 'export' ? 'source download' : 'source') + end + end + repo_prefix = nil + end + when 'attachment' + attachments = options[:attachments] || (obj && obj.respond_to?(:attachments) ? obj.attachments : nil) + if attachments && attachment = Attachment.latest_attach(attachments, name) + link = link_to_attachment(attachment, :only_path => only_path, :download => true, :class => 'attachment') + end + when 'project' + if p = Project.visible.where("identifier = :s OR LOWER(name) = :s", :s => name.downcase).first + link = link_to_project(p, {:only_path => only_path}, :class => 'project') + end + end + end + end + (leading + (link || "#{project_prefix}#{prefix}#{repo_prefix}#{sep}#{identifier}#{comment_suffix}")) + end + end + + HEADING_RE = /(]+)?>(.+?)<\/h(\d)>)/i unless const_defined?(:HEADING_RE) + + def parse_sections(text, project, obj, attr, only_path, options) + return unless options[:edit_section_links] + text.gsub!(HEADING_RE) do + heading = $1 + @current_section += 1 + if @current_section > 1 + content_tag('div', + link_to(image_tag('edit.png'), options[:edit_section_links].merge(:section => @current_section)), + :class => 'contextual', + :title => l(:button_edit_section)) + heading.html_safe + else + heading + end + end + end + + # Headings and TOC + # Adds ids and links to headings unless options[:headings] is set to false + def parse_headings(text, project, obj, attr, only_path, options) + return if options[:headings] == false + + text.gsub!(HEADING_RE) do + level, attrs, content = $2.to_i, $3, $4 + item = strip_tags(content).strip + anchor = sanitize_anchor_name(item) + # used for single-file wiki export + anchor = "#{obj.page.title}_#{anchor}" if options[:wiki_links] == :anchor && (obj.is_a?(WikiContent) || obj.is_a?(WikiContent::Version)) + @heading_anchors[anchor] ||= 0 + idx = (@heading_anchors[anchor] += 1) + if idx > 1 + anchor = "#{anchor}-#{idx}" + end + @parsed_headings << [level, anchor, item] + "\n#{content}" + end + end + + MACROS_RE = /( + (!)? # escaping + ( + \{\{ # opening tag + ([\w]+) # macro name + (\(([^\n\r]*?)\))? # optional arguments + ([\n\r].*?[\n\r])? # optional block of text + \}\} # closing tag + ) + )/mx unless const_defined?(:MACROS_RE) + + MACRO_SUB_RE = /( + \{\{ + macro\((\d+)\) + \}\} + )/x unless const_defined?(:MACRO_SUB_RE) + + # Extracts macros from text + def catch_macros(text) + macros = {} + text.gsub!(MACROS_RE) do + all, macro = $1, $4.downcase + if macro_exists?(macro) || all =~ MACRO_SUB_RE + index = macros.size + macros[index] = all + "{{macro(#{index})}}" + else + all + end + end + macros + end + + # Executes and replaces macros in text + def inject_macros(text, obj, macros, execute=true) + text.gsub!(MACRO_SUB_RE) do + all, index = $1, $2.to_i + orig = macros.delete(index) + if execute && orig && orig =~ MACROS_RE + esc, all, macro, args, block = $2, $3, $4.downcase, $6.to_s, $7.try(:strip) + if esc.nil? + h(exec_macro(macro, obj, args, block) || all) + else + h(all) + end + elsif orig + h(orig) + else + h(all) + end + end + end + + TOC_RE = /

    \{\{([<>]?)toc\}\}<\/p>/i unless const_defined?(:TOC_RE) + + # Renders the TOC with given headings + def replace_toc(text, headings) + text.gsub!(TOC_RE) do + # Keep only the 4 first levels + headings = headings.select{|level, anchor, item| level <= 4} + if headings.empty? + '' + else + div_class = 'toc' + div_class << ' right' if $1 == '>' + div_class << ' left' if $1 == '<' + out = "

    • " + root = headings.map(&:first).min + current = root + started = false + headings.each do |level, anchor, item| + if level > current + out << '
      • ' * (level - current) + elsif level < current + out << "
      \n" * (current - level) + "
    • " + elsif started + out << '
    • ' + end + out << "#{item}" + current = level + started = true + end + out << '
    ' * (current - root) + out << '' + end + end + end + + # Same as Rails' simple_format helper without using paragraphs + def simple_format_without_paragraph(text) + text.to_s. + gsub(/\r\n?/, "\n"). # \r\n and \r -> \n + gsub(/\n\n+/, "

    "). # 2+ newline -> 2 br + gsub(/([^\n]\n)(?=[^\n])/, '\1
    '). # 1 newline -> br + html_safe + end + + def wiki_simple_format_without_paragraph(text) + text.to_s. + gsub(/\r\n?/, "\n"). # \r\n and \r -> \n + gsub(/\n\n+/, "

    "). # 2+ newline -> 2 br + gsub(/([^\n]\n)(?=[^\n])/, '\1
    '). # 1 newline -> br + gsub("&nbsp", " "). #gsub(/<\/?.*?>/,""). + gsub(/<\/?.*?>/, ""). + gsub(""", "'"). + html_safe + end + + def lang_options_for_select(blank=true) + { 'Chinese简体中文 '=> 'zh', :English => :en} + end + + def label_tag_for(name, option_tags = nil, options = {}) + label_text = l(("field_"+field.to_s.gsub(/\_id$/, "")).to_sym) + (options.delete(:required) ? @template.content_tag("span", " *", :class => "required"): "") + content_tag("label", label_text) + end + + def labelled_form_for(*args, &proc) + args << {} unless args.last.is_a?(Hash) + options = args.last + if args.first.is_a?(Symbol) + options.merge!(:as => args.shift) + end + options.merge!({:builder => Redmine::Views::LabelledFormBuilder}) + form_for(*args, &proc) + end + + def labelled_fields_for(*args, &proc) + args << {} unless args.last.is_a?(Hash) + options = args.last + options.merge!({:builder => Redmine::Views::LabelledFormBuilder}) + fields_for(*args, &proc) + end + + def labelled_remote_form_for(*args, &proc) + ActiveSupport::Deprecation.warn "ApplicationHelper#labelled_remote_form_for is deprecated and will be removed in Redmine 2.2." + args << {} unless args.last.is_a?(Hash) + options = args.last + options.merge!({:builder => Redmine::Views::LabelledFormBuilder, :remote => true}) + form_for(*args, &proc) + end + + def error_messages_for(*objects) + html = "" + # modified by fq + if objects.first.is_a?(Array) + objects = objects.first + end + # end + if objects != nil + objects = objects.map {|o| o.is_a?(String) ? instance_variable_get("@#{o}") : o}.compact + errors = objects.map {|o| o.errors.full_messages}.flatten + if errors.any? + html << "
      \n" + errors.each do |error| + ###by xianbo + if(error!=l(:label_repository_path_not_null)) + html << "
    • #{h error}
    • \n" + end + ###xianbo + end + ###by xianbo + unless params[:repository].nil? + if params[:repository][:upassword]=="" + html << "
    • "+ l(:label_password_not_null) +"
    • \n" + end + end + ###xianbo + html << "
    \n" + end + end + html.html_safe + end + + def delete_link(url, options={}) + options = { + :method => :delete, + :data => {:confirm => l(:text_are_you_sure)}, + :class => 'icon icon-del' + }.merge(options) + + link_to l(:button_delete), url, options + end + + def update_status_link(user) + url = {:controller => 'users', :action => 'update', :id => user, :page => params[:page], :status => params[:status], :tab => nil} + + if user.locked? + link_to "解锁", url.merge(:user => {:status => User::STATUS_ACTIVE}), :method => :put, :class => 'mr10 link-color-blue' + elsif user.registered? + link_to "激活", url.merge(:user => {:status => User::STATUS_ACTIVE}), :method => :put, :class => 'mr10 link-color-blue' + elsif user != User.current + link_to "加锁", url.merge(:user => {:status => User::STATUS_LOCKED}), :method => :put, :class => 'mr10 link-color-blue' + end + end + + + def delete_version_link(url, options={}) + options = { + :method => :delete, + :data => {:confirm => l(:text_are_you_sure)}, + :class => 'icon icon-del' + }.merge(options) + + link_to "", url, options + end + + def delete_link_version(url, options={}) + options = { + :method => :delete, + :data => {:confirm => l(:text_are_you_sure)}, + :class => 'c_purple' + }.merge(options) + + link_to l(:button_delete), url, options + end + + + + def delete_new_link(url, options={}) + options = { + :method => :delete, + :data => {:confirm => l(:text_are_you_sure)}, + :class => "c_purple" + }.merge(options) + + link_to l(:button_delete), url, options + end + + def preview_link(url, form, target='preview', options={}) + content_tag 'a', l(:label_preview), { + :href => "#", + :onclick => %|submitPreview("#{escape_javascript url_for(url)}", "#{escape_javascript form}", "#{escape_javascript target}"); return false;|, + :accesskey => accesskey(:preview) + }.merge(options) + end + + def link_to_function(name, function, html_options={}) + content_tag(:a, name, {:href => '#', :onclick => "#{function}; return false;"}.merge(:class => "BlueCirBtnMini ml10",:style => "display:inline-block; height:20px; line-height:20px;")) + end + + def link_to_function_none(name, function, html_options={}) + content_tag(:a, name, {:href => '#', :onclick => "#{function}; return false;"}.merge(:style => "display:inline-block; height:20px; line-height:20px;")) + end + + # Helper to render JSON in views + def raw_json(arg) + arg.to_json.to_s.gsub('/', '\/').html_safe + end + + def back_url + url = params[:back_url] + if url.nil? && referer = request.env['HTTP_REFERER'] + url = CGI.unescape(referer.to_s) + end + url + end + + def back_url_hidden_field_tag + url = back_url + hidden_field_tag('back_url', url, :id => nil) unless url.blank? + end + + def check_all_links(form_name) + link_to_function_none(l(:button_check_all), "checkAll('#{form_name}', true)") + " ".html_safe + " | "+ " ".html_safe + + link_to_function_none(l(:button_uncheck_all), "checkAll('#{form_name}', false)") + end + + # 本次修改,修改为只显示关闭的所占%比 + def progress_bar(pcts, options={}) + pcts = [pcts] unless pcts.is_a?(Array) + pcts = pcts.collect(&:round) + # pcts[1] = pcts[1] + pcts[0] + pcts << (100 - pcts[0]) + width = options[:width] || '100px;' + legend = options[:legend] || '' + content_tag('span', + content_tag('tr', + (pcts[0] > 0 ? content_tag('span', '', :style => "width: #{pcts[0]}%;", :class => 'roadmap_progressbar_inner', :title => "已关闭:#{pcts[0]}%") : ''.html_safe) #+ + # (pcts[1] > 0 ? content_tag('td', '', :style => "width: #{pcts[1]}%;", :class => 'done', :title => "开发中:#{pcts[1]}%") : ''.html_safe) + + #(pcts[1] > 0 ? content_tag('span', '', :style => "width: #{pcts[1]}%;", :class => 'roadmap_progressbar ml5', :title => "未完成:#{pcts[1]}%") : ''.html_safe), :style => "width: #{width}" + ), :class => 'roadmap_progressbar ml5').html_safe + # + content_tag('p', legend, :class => 'percent').html_safe + end + + def checked_image(checked=true) + if checked + image_tag 'toggle_check.png' + end + end + + def context_menu(url) + unless @context_menu_included + content_for :header_tags do + javascript_include_tag('context_menu') + + stylesheet_link_tag('context_menu') + end + if l(:direction) == 'rtl' + content_for :header_tags do + stylesheet_link_tag('context_menu_rtl') + end + end + @context_menu_included = true + end + javascript_tag "contextMenuInit('#{ url_for(url) }')" + end + + def calendar_for(field_id,start_day=nil) + include_calendar_headers_tags(start_day) + javascript_tag("$(function() { $('##{field_id}').datepicker(datepickerOptions); });") + end + + def include_calendar_headers_tags(start_day=nil) + if start_day.nil? + unless @calendar_headers_tags_included + @calendar_headers_tags_included = true + content_for :header_tags do + start_of_week = Setting.start_of_week + start_of_week = l(:general_first_day_of_week, :default => '1') if start_of_week.blank? + # Redmine uses 1..7 (monday..sunday) in settings and locales + # JQuery uses 0..6 (sunday..saturday), 7 needs to be changed to 0 + start_of_week = start_of_week.to_i % 7 + + tags = javascript_tag( + "var datepickerOptions={dateFormat: 'yy-mm-dd', firstDay: #{start_of_week}, " + + "showOn: 'button', buttonImageOnly: true, buttonImage: '" + + path_to_image('/images/public_icon.png') + + "', showButtonPanel: true, showWeek: true, showOtherMonths: true, selectOtherMonths: true};") + jquery_locale = l('jquery.locale', :default => current_language.to_s) + unless jquery_locale == 'en' + tags << javascript_include_tag("i18n/jquery.ui.datepicker-#{jquery_locale}.js") + end + tags + end + end + else + unless @calendar_headers_tags_included + @calendar_headers_tags_included = true + content_for :header_tags do + start_of_week = Setting.start_of_week + start_of_week = l(:general_first_day_of_week, :default => '1') if start_of_week.blank? + # Redmine uses 1..7 (monday..sunday) in settings and locales + # JQuery uses 0..6 (sunday..saturday), 7 needs to be changed to 0 + start_of_week = start_of_week.to_i % 7 + + tags = javascript_tag( + "var datepickerOptions={dateFormat: 'yy-mm-dd',minDate: new Date(), firstDay: #{start_of_week}, " + + "showOn: 'button', buttonImageOnly: true, buttonImage: '" + + path_to_image('/images/public_icon.png') + + "', showButtonPanel: true, showWeek: true, showOtherMonths: true, selectOtherMonths: true, onClose: function(dateText, inst) {TimeClose(dateText,inst);}, beforeShow : function(input){TimeBeforeShow(input);} };") + jquery_locale = l('jquery.locale', :default => current_language.to_s) + unless jquery_locale == 'en' + tags << javascript_include_tag("i18n/jquery.ui.datepicker-#{jquery_locale}.js") + end + tags + end + end + end + + end + + # Overrides Rails' stylesheet_link_tag with themes and plugins support. + # Examples: + # stylesheet_link_tag('styles') # => picks styles.css from the current theme or defaults + # stylesheet_link_tag('styles', :plugin => 'foo) # => picks styles.css from plugin's assets + # + def stylesheet_link_tag(*sources) + options = sources.last.is_a?(Hash) ? sources.pop : {} + plugin = options.delete(:plugin) + sources = sources.map do |source| + if plugin + "/plugin_assets/#{plugin}/stylesheets/#{source}" + elsif current_theme && current_theme.stylesheets.include?(source) + current_theme.stylesheet_path(source) + else + source + end + end + super sources, options + end + + # Overrides Rails' image_tag with themes and plugins support. + # Examples: + # image_tag('image.png') # => picks image.png from the current theme or defaults + # image_tag('image.png', :plugin => 'foo) # => picks image.png from plugin's assets + # + def image_tag(source, options={}) + if plugin = options.delete(:plugin) + source = "/plugin_assets/#{plugin}/images/#{source}" + elsif current_theme && current_theme.images.include?(source) + source = current_theme.image_path(source) + end + super source, options + end + + # Overrides Rails' javascript_include_tag with plugins support + # Examples: + # javascript_include_tag('scripts') # => picks scripts.js from defaults + # javascript_include_tag('scripts', :plugin => 'foo) # => picks scripts.js from plugin's assets + # + def javascript_include_tag(*sources) + options = sources.last.is_a?(Hash) ? sources.pop : {} + + @sources ||= [] + sources = sources.delete_if do|source| + @sources.include?(source) + end + @sources += sources + + if plugin = options.delete(:plugin) + sources = sources.map do |source| + if plugin + "/plugin_assets/#{plugin}/javascripts/#{source}" + else + source + end + end + end + + if sources && !sources.empty? + super(sources, options) + else + '' + end + end + + def content_for(name, content = nil, &block) + @has_content ||= {} + @has_content[name] = true + super(name, content, &block) + end + + def has_content?(name) + (@has_content && @has_content[name]) || false + end + + def sidebar_content? + has_content?(:sidebar) || view_layouts_base_sidebar_hook_response.present? + end + + def view_layouts_base_sidebar_hook_response + @view_layouts_base_sidebar_hook_response ||= call_hook(:view_layouts_base_sidebar) + end + + def email_delivery_enabled? + !!ActionMailer::Base.perform_deliveries + end + + # Returns the avatar image tag for the given +user+ if avatars are enabled + # +user+ can be a User or a string that will be scanned for an email address (eg. 'joe ') + def avatar(user, options = { }) + if Setting.gravatar_enabled? + options.merge!({:ssl => (request && request.ssl?), :default => Setting.gravatar_default}) + email = nil + if user.respond_to?(:mail) + email = user.mail + elsif user.to_s =~ %r{<(.+?)>} + email = $1 + end + return gravatar(email.to_s.downcase, options) unless email.blank? rescue nil + #options ={"class" => ["avatar2"],"width" =>["80px"],"height" =>["80px"]} + #return image_tag url_to_avatar(user), options + else + '' + end + end + + def sanitize_anchor_name(anchor) + if ''.respond_to?(:encoding) || RUBY_PLATFORM == 'java' + anchor.gsub(%r{[^\s\-\p{Word}]}, '').gsub(%r{\s+(\-+\s*)?}, '-') + else + # TODO: remove when ruby1.8 is no longer supported + anchor.gsub(%r{[^\w\s\-]}, '').gsub(%r{\s+(\-+\s*)?}, '-') + end + end + + # Returns the javascript tags that are included in the html layout head + def javascript_heads + tags = javascript_include_tag('jquery-1.8.3-ui-1.9.2-ujs-2.0.3', 'application', 'jquery.colorbox-min', 'baiduTemplate') + unless User.current.pref.warn_on_leaving_unsaved == '0' + tags << "\n".html_safe + javascript_tag("$(window).load(function(){ warnLeavingUnsaved('#{escape_javascript l(:text_warn_on_leaving_unsaved)}'); });") + end + tags + end + def javascript_edu_index_heads + tags = javascript_include_tag('jquery-1.8.3-ui-1.9.2-ujs-2.0.3', 'application') + unless User.current.pref.warn_on_leaving_unsaved == '0' + tags << "\n".html_safe + javascript_tag("$(window).load(function(){ warnLeavingUnsaved('#{escape_javascript l(:text_warn_on_leaving_unsaved)}'); });") + end + tags + end + + def hubspot_head + tags = javascript_include_tag('hubspot/messenger.min', 'hubspot/messenger-theme-future') + tags << stylesheet_link_tag('hubspot/messenger', 'hubspot/messenger-theme-future', 'hubspot/messenger-theme-flat') + end + + def bootstrap_head + tags = stylesheet_link_tag('bootstrap/bootstrap.min', 'bootstrap/bootstrap-theme.min') + tags << javascript_include_tag('bootstrap/affix') + tags << javascript_include_tag('bootstrap/alert') + tags << javascript_include_tag('bootstrap/button') + tags << javascript_include_tag('bootstrap/carousel') + tags << javascript_include_tag('bootstrap/collapse') + tags << javascript_include_tag('bootstrap/dropdown') + tags << javascript_include_tag('bootstrap/modal') + tags << javascript_include_tag('bootstrap/popover') + tags << javascript_include_tag('bootstrap/scrollspy') + tags << javascript_include_tag('bootstrap/tab') + tags << javascript_include_tag('bootstrap/tooltip') + tags << javascript_include_tag('bootstrap/transition') + tags + end + + def favicon + "".html_safe + end + + def robot_exclusion_tag + ''.html_safe + end + + # Returns true if arg is expected in the API response + def include_in_api_response?(arg) + unless @included_in_api_response + param = params[:include] + @included_in_api_response = param.is_a?(Array) ? param.collect(&:to_s) : param.to_s.split(',') + @included_in_api_response.collect!(&:strip) + end + @included_in_api_response.include?(arg.to_s) + end + + # Returns options or nil if nometa param or X-Redmine-Nometa header + # was set in the request + def api_meta(options) + if params[:nometa].present? || request.headers['X-Redmine-Nometa'] + # compatibility mode for activeresource clients that raise + # an error when unserializing an array with attributes + nil + else + options + end + end + + # Add by Tao + def url_to_avatar(source) + source = nil if source.kind_of?(String) + get_avatar(source) + end + # Endof Tao's code + + # cxt + # 获取认证照片 + def url_to_auth_img(user_id, type) + if File.exist?(disk_auth_filename("UserAuthentication",user_id,type)) + File.join(relative_path,avatar_directory("UserAuthentication"), auth_filename(user_id,type)) + else + File.join(relative_path,avatar_directory("UserAuthentication"),type) + end + end + + def url_to_coop_img(type) + File.join(relative_path,avatar_directory('type'),"*") + end + + # 讨论区的平台icon ["Java", "C", "C++", "Python2.7", "Python3.6", "MySQL/Java", "Html", "JFinal", "Docker", "Ethereum", "Dynamips", "MachineLearning", "Verilog","Spark","MySQL/Python3.6","PHP","PHP/Web","Hadoop", "Golang","Android","Matlab","Shell"] + + def url_to_platform_icon language + case language + when 'Python2.7', 'Python3.6' + File.join(relative_path,avatar_directory("Platform"), 'Python') + when 'MySQL/Java', 'MySQL/Python3.6' + File.join(relative_path,avatar_directory("Platform"), 'MySQL') + when 'PHP/Web' + File.join(relative_path,avatar_directory("Platform"), 'PHP') + when 'C#' + File.join(relative_path,avatar_directory("Platform"), 'Cxp') + when 'C/C++' + File.join(relative_path,avatar_directory("Platform"), 'Cjia') + when 'Angular2+' + File.join(relative_path,avatar_directory("Platform"), 'Angular2jia') + else + File.join(relative_path,avatar_directory("Platform"), language.nil? ? "" : language) + end + end + + def identity_authentication_status user + authorization = user.apply_actions.where(:container_type => "TrialAuthorization").last + case user.try(:certification) + when 0 + if authorization.try(:status) == 0 + "处理中" + else + "未授权" + end + when 1 + "已授权" + when 2 + "被拒绝" + end + end + + def user_certification_status user + status = "" + if user.authentication + status = "已实名认证" + else + apply_auth = ApplyUserAuthentication.where(:user_id => user.id, :auth_type => 1).last + if apply_auth && apply_auth.status == 0 + status = "实名认证中" + elsif apply_auth && apply_auth.status == 2 + status = "实名认证未通过" + else + status = "未实名认证" + end + end + end + + def pro_certification_status user + status = "" + if user.professional_certification + status = "已职业认证" + else + apply_auth = ApplyUserAuthentication.where(:user_id => user.id, :auth_type => 2).last + if apply_auth && apply_auth.status == 0 + status = "职业认证中" + elsif apply_auth && apply_auth.status == 2 + status = "职业认证未通过" + else + status = "未职业认证" + end + end + end + + def shixun_authentication_status shixun + case shixun.try(:status) + when 0,nil + "编辑中" + when 1 + "待审核" + when 2 + "已发布" + when 3 + "已关闭" + end + end + + def date_format_local(time) + date = time.strftime("%Y年%m月%d日") + end + + #当TAG数量过多时,更多链接 + #1代表是user类型 2代表是project类型 3代表是issue类型 4代表需求 9代表课程 + def more_tags id,object_flag + a= 1 + case object_flag + when "1" + s = link_to l(:label_more_tags),:controller => "users", :action => "show", :id => id + when "2" + s = link_to l(:label_more_tags),:controller => "projects", :action => "show", :id => id + when "3" + s = link_to l(:label_more_tags),:controller => "issues", :action => "show", :id => id + when "4" + s = link_to l(:label_more_tags),:controller => "bids", :action => "show", :id => id + when "9" + s = link_to l(:label_more_tags),:controller => "courses", :action => "show", :id => id + end + s + end + + def get_user_identity identity + s = "" + case identity + when 0 + s = '教师' + when 1 + s = '学生' + when 2 + s = '组织' + when 3 + s= '开发者' + else + s = '学生' + end + s + end + + # 获取issue类型 + def get_issue_type_new tracker_id + case tracker_id + when 1 + "缺陷" + when 2 + "功能" + when 3 + "支持" + when 4 + "任务" + when 5 + "周报" + end + end + + def get_memo + @new_memo = Memo.new + @public_forum = Forum.find(1) rescue ActiveRecord::RecordNotFound + end + + #获取用户未过期的课程 + def get_user_course user + courses_doing = [] + user.courses.select("courses.*,(SELECT MAX(created_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a").order("a desc").each do |course| + if !course_endTime_timeout?(course) + courses_doing.push course + end + end + courses_doing + end + + def attachment_history_candown attachment_history + if attachment_history.container_type == "Course" + course = Course.find(attachment_history.container_id) + candown = User.current.member_of_course?(course) || (course.is_public && attachment_history.is_public == 1) + elsif attachment_history.container_type == "Project" + project = Project.find(attachment_history.container_id) + candown = User.current.member_of?(project) || (project.is_public && attachment_history.is_public == 1) + elsif attachment_history.container_type == "OrgSubfield" + org = OrgSubfield.find(attachment_history.container_id).organization + candown = User.current.member_of_org?(org) || (org.organization.is_public && attachment_history.is_public == 1 && (User.current.logged? || org.organization.allow_guest_download?)) + end + end + + def resource_bank_candown resource,type + candown = false + if resource.is_public + candown = true + end + if type == 'syllabus' + candown = syllabus_course_member(User.current, resource.course) || User.current.admin? + end + candown + end + + # 课程某个班级的成员 + def syllabus_course_member user, course + result = false + syllabus = course.syllabus + if syllabus + syllabus.courses.each do |course| + if user.member_of_course?(course) + result = true + return result + end + end + end + result + end + + def attachment_candown attachment + candown = false + if attachment.container + if attachment.container.class.to_s=="PhoneAppVersion" + candown = true + elsif attachment.container.class.to_s != "HomeworkAttach" && attachment.container.class.to_s != "StudentWork" && attachment.container.class.to_s != "ContestantWork" && (attachment.container.has_attribute?(:project) || attachment.container.has_attribute?(:project_id)) && attachment.container.project + project = attachment.container.project + candown= User.current.member_of?(project) || (project.is_public && attachment.is_public == 1) + elsif attachment.container.is_a?(Project) + project = attachment.container + candown = User.current.member_of?(project) || (attachment.is_public == 1) || attachment.get_status_by_attach(User.current.id) == 2 + elsif (attachment.container.has_attribute?(:board) || attachment.container.has_attribute?(:board_id)) && attachment.container.board && + attachment.container.board.project + project = attachment.container.board.project + candown = User.current.member_of?(project) || (project.is_public && attachment.is_public == 1) + elsif (attachment.container.has_attribute?(:course) ||attachment.container.has_attribute?(:course_id) ) && attachment.container.course + course = attachment.container.course + candown = User.current.member_of_course?(course) || (attachment.is_public == 1) || attachment.get_status_by_attach(User.current.id) == 2 + elsif attachment.container.is_a?(Course) + course = attachment.container + candown= User.current.member_of_course?(course) || (attachment.is_public == 1) || attachment.get_status_by_attach(User.current.id) == 2 + elsif attachment.container.is_a?(OrgSubfield) + org = attachment.container.organization + candown = User.current.member_of_org?(org) || ((attachment.is_public == 1 || attachment.get_status_by_attach(User.current.id) == 2) && org.allow_guest_download == true) + elsif attachment.container.is_a?(OrgDocumentComment) + org = attachment.container.organization + candown = org.allow_guest_download || User.current.member_of_org?(org) || (org.is_public && attachment.is_public == 1) + elsif (attachment.container.has_attribute?(:board) || attachment.container.has_attribute?(:board_id)) && attachment.container.board && + attachment.container.board.course + course = attachment.container.board.course + candown= User.current.member_of_course?(course) || (course.is_public==1 && attachment.is_public == 1) + elsif attachment.container.class.to_s=="Organization" + candown = true + elsif attachment.container.class.to_s=="HomeworkAttach" + candown = true + elsif attachment.container.class.to_s=="StudentWorksScore" + candown = true + elsif attachment.container.class.to_s=="StudentWork" + candown = true + elsif attachment.container.class.to_s=="Contest" + candown = true + elsif attachment.container.class.to_s=="Work" + candown = true + elsif attachment.container.class.to_s=="ContestantWork" + candown = true + elsif attachment.container.class.to_s=="HomeworkBank" + candown = true + elsif attachment.container.class.to_s=="BlogComment" #博客资源允许下载 + candown = true + elsif attachment.container.class.to_s=="Memo" #论坛资源允许下载 + candown = true + elsif attachment.container.class.to_s=="Syllabus" #论坛资源允许下载 + candown = true + elsif attachment.container.class.to_s=="Competition" #竞赛资源允许下载 + candown = true + elsif attachment.container.class.to_s=="Career" #职业路径资源允许下载 + candown = true + elsif attachment.container_type == "Inform" #竞赛通知公告允许下载 + candown = true + elsif attachment.container.class.to_s == "User" + candown = (attachment.is_public == 1 || attachment.is_public == true || attachment.author_id == User.current.id) + elsif attachment.container_type == "Bid" && attachment.container && attachment.container.courses + course = attachment.container.courses.first + candown = User.current.member_of_course?(attachment.container.courses.first) || (course.is_public == 1 && attachment.is_public == 1) + else + candown = (attachment.is_public == 1 || attachment.is_public == true) + end + else + if attachment.container_type == "MarkDown" || attachment.container_type == "Shixun" || attachment.container_type == "Memo" || attachment.container_type == "Career" || attachment.container_type == "Exercise" || attachment.container_type == "ExerciseBank" + candown = true + end + end + candown + end + + def project_type_link(text, value) + if value == 1 + link_to "#{text}".html_safe,"javascript:void(0)" ,:onClick => "show_window();", :class => "pr_join_a",:id => "setting_project_type" + elsif value == 2 + link_to "#{text}".html_safe,"javascript:void(0)" ,:onClick => "show_window();", :class => "pr_join_a",:id => "setting_project_type" + else + link_to "#{text}".html_safe,"javascript:void(0)" ,:onClick => "show_window();", :class => "pr_join_a",:id => "setting_project_type" + end + + end + + #如果学生作品被打分后修改,应该给老师提示 + def send_message_to_teacher student_work + if StudentWork === student_work + student_work_scores = student_work.student_works_scores.where("reviewer_role != 3") + if student_work_scores.any? + student_work.update_column('re_commit', 1) + course = student_work.homework_common.course + course.teachers.where(:user_id => student_work_scores.map(&:user_id).uniq).each do|mem| + student_work.tidings << Tiding.new(:user_id => mem.user_id, :trigger_user_id => student_work.user_id, :container_id => student_work.id, :container_type => "StudentWork", :parent_container_id => student_work.homework_common_id, :parent_container_type => "HomeworkCommon", + :belong_container_id => course.id, :belong_container_type => "Course", :viewed => 0, :tiding_type => "HomeworkCommon", :extra => "resubmit") + end + end + end + end + + private + + def wiki_helper + helper = Redmine::WikiFormatting.helper_for(Setting.text_formatting) + extend helper + return self + end + + def link_to_content_update(text, url_params = {}, html_options = {}) + link_to(text, url_params, html_options) + end + +#added by nie +# Display watcher picture + def show_more_watchers?(obj) + if User.watched_by(obj.id).count > 6 + return true + else + return false + end + end + + def show_watcher_profile(obj) + count = 0 + html = '' + if User.watched_by(obj.id).count == 0 + html << (content_tag "span", l(:label_no_current_watchers)) + end + for user in User.watched_by(obj.id) + html << (link_to image_tag(url_to_avatar(user), :class => "avatar"), user_path(user), :class => "avatar", :title => "#{user.name}") + count = count + 1 + if count >= 12 + break + end + end + html.html_safe + end + +#display bid project + def show_more_bid_project?(bid) + if bid.projects.where('is_public = 1').count > 12 + return true + else + return false + end + end + + def show_bid_project(bid) + html = '' + if bid.projects.where('is_public = 1').count == 0 + html << (content_tag "p", l(:label_no_bid_project), :class => "font_lighter") + else + bid.projects.where('is_public = 1').take(12).each do |project| + html << (link_to image_tag(url_to_avatar(project), :class => "avatar", :title => project.name), project_path(project), :class => "avatar") + end + end + html.html_safe + end + + def show_bid_fans_picture(obj) + html = '' + if obj.watcher_users.count == 0 + html << (content_tag "span", l(:label_project_no_follow)) + else + obj.watcher_users.take(12).each do |user| + html << (link_to image_tag(url_to_avatar(user), :class => "avatar"), user_path(user), :class => "avatar", :title => user.name) + end + end + html.html_safe + end + +#display contest project + def show_more_contest_project?(contest) + if contest.projects.where('is_public = 1').count > 12 + return true + else + return false + end + end + + def show_more_contest_softapplication?(contest) + if contest.softapplications.where('is_public = 1').count > 12 + return true + else + return false + end + end + + def show_contest_project(bid) + html = '' + if contest.projects.where('is_public = 1').count == 0 + html << (content_tag "p", l(:label_no_bid_project), :class => "font_lighter") + else + contest.projects.where('is_public = 1').take(12).each do |project| + html << (link_to image_tag(url_to_avatar(project), :class => "avatar", :title => project.name), project_path(project), :class => "avatar") + end + end + html.html_safe + end + + def show_contest_project(contest) + html = '' + if contest.projects.where('is_public = 1').count == 0 + html << (content_tag "p", l(:label_no_bid_project), :class => "font_lighter") + else + contest.projects.where('is_public = 1').take(12).each do |project| + html << (link_to image_tag(url_to_avatar(project), :class => "avatar", :title => project.name), project_path(project), :class => "avatar") + end + end + html.html_safe + end + + def show_contest_softapplication(contest) + html = '' + if contest.softapplications.where('is_public = 1').count == 0 + html << (content_tag "p", l(:label_no_contest_softapplication), :class => "font_lighter") + else + contest.softapplications.where('is_public = 1').take(12).each do |softapplication| + html << (link_to image_tag(url_to_avatar(project), :class => "avatar", :title => project.name), project_path(project), :class => "avatar") + end + end + html.html_safe + end + + def show_contest_fans_picture(obj) + html = '' + if obj.watcher_users.count == 0 + html << (content_tag "span", l(:label_project_no_follow)) + else + obj.watcher_users.take(12).each do |user| + html << (link_to image_tag(url_to_avatar(user), :class => "avatar"), user_path(user), :class => "avatar", :title => user.name) + end + end + html.html_safe + end + +#display fans picture + def show_more_fans?(obj) + if obj.watcher_users.count > 12 + return true + else + return false + end + end + + def show_fans_picture(obj) + html = '' + if obj.watcher_users.count == 0 + html << (content_tag "span", l(:label_no_current_fans)) + else + obj.watcher_users.take(12).each do |user| + html << (link_to image_tag(url_to_avatar(user), :class => "avatar"), user_path(user), :class => "avatar", :title => user.name) + end + end + html.html_safe + end + + # added by bai + def show_more_participate?(obj) + if obj.join_in_contests.count > 12 + return true + else + return false + end + end + + def show_participate_picture(obj) + html = '' + count = 0 + if obj.join_in_contests.count == 0 + html << (content_tag "span", l(:label_no_current_participate)) + end + for temp in obj.join_in_contests + html << (link_to image_tag(url_to_avatar(temp.user), :class => "avatar"), user_path(temp.user), :class => "avatar", :title => "#{temp.user.name}") + count = count + 1 + if count >= 12 + break + end + end + html.html_safe + end + +#end + +# add by huang + def show_watcher_list(user) + html = '' + count = 0 + for user in User.watched_by(user.id) + html << (link_to image_tag(url_to_avatar(user), :class => "avatar"), user_path(user), :class => "avatar", :title => "#{user.name}") + count = count + 1 + if count >= 12 + break + end + end + html.html_safe + end +# end + +#added by william + def get_fans_num(user) + user.watcher_users.count + end +#end + + + def hadcommittedhomework(cur,curb) + bid = Bid.find_by_id(curb) + return true if bid.nil? + + case bid.homework_type + when Bid::HomeworkFile + attaches = HomeworkAttach.where(bid_id: curb) + attaches.map(&:user_id).include? cur + when Bid::HomeworkProject + attaches = BidingProject.where(user_id: User.current, bid_id: bid) + attaches.count > 0 # > 0 则有提交记录 + else + true + end + + end + + def render_dynamic_nav + home_link = link_to l(:field_homepage), {:controller => 'welcome', :action => 'index'} + home_link = "
  • " << home_link << "
  • " + # bootstrap_render_dynamic_nav + content_tag :ul, (home_link.html_safe+bootstrap_render_dynamic_nav) + end + + def bootstrap_render_dynamic_nav + hidden_non_project = Setting.find_by_name("hidden_non_project") + visiable = !(hidden_non_project && hidden_non_project.value == "0") + + main_course_link = link_to l(:label_course_practice), {:controller => 'welcome', :action => 'index', :host => Setting.host_course} + main_project_link = link_to l(:label_project_deposit), {:controller => 'welcome', :action => 'index', :host => Setting.host_name} + main_contest_link = link_to l(:label_contest_innovate), {:controller => 'welcome', :action => 'index', :host => Setting.host_contest} + + # course_all_course_link = link_to l(:label_course_all), {:controller => 'courses', :action => 'index'} + course_teacher_all_link = link_to l(:label_teacher_all), {:controller => 'users', :action => 'index', :role => 'teacher', :host => Setting.host_course} + # courses_link = link_to l(:label_course_practice), {:controller => 'courses', :action => 'index'} + #users_link = link_to l(:label_software_user), {:controller => 'users', :action => 'index', :host => Setting.host_user} + # contest_link = link_to l(:label_contest_innovate), {:controller => 'contests', :action => 'index'} + # bids_link = link_to l(:label_requirement_enterprise), {:controller => 'bids', :action => 'index'} + forum_link = link_to l(:label_forum_all), {:controller => "forums", :action => "index"} + stores_link = link_to l(:label_stores_index), {:controller => 'stores', :action=> 'index'} + school_all_school_link = link_to l(:label_school_all), {:controller => 'school', :action => 'index'} + project_new_link = link_to l(:label_project_new), {:controller => 'projects', :action => 'new', :host => Setting.host_name} + # project_mine_link = link_to l(:label_my_project), {:controller => 'users', :action => 'user_projects', :host => Setting.host_name} + + #@nav_dispaly_project_label + nav_list = Array.new + nav_list.push(school_all_school_link) if @nav_dispaly_course_all_label && @show_course == 1 && visiable + # nav_list.push(course_all_course_link) if @nav_dispaly_course_all_label && @show_course == 1 + nav_list.push(course_teacher_all_link) if @nav_dispaly_teacher_all_label && @show_course == 1 && visiable + + nav_list.push(main_project_link) if @nav_dispaly_main_project_label + nav_list.push(main_course_link) if @nav_dispaly_main_course_label && @show_course == 1 && visiable + nav_list.push(main_contest_link) if @nav_dispaly_main_contest_label && @show_contest == 1 && visiable + + nav_list.push(courses_link) if @nav_dispaly_course_label && @show_course == 1 && visiable + nav_list.push(project_new_link) if @nav_dispaly_project_label + # nav_list.push(project_mine_link) if @nav_dispaly_main_project_label + # nav_list.push(projects_link) if @nav_dispaly_project_label + #nav_list.push(users_link) if @nav_dispaly_user_label + # nav_list.push(contest_link) if @nav_dispaly_contest_label && @show_contest == 1 + nav_list.push(bids_link) if @nav_dispaly_bid_label && visiable + nav_list.push(forum_link) if @nav_dispaly_forum_label && visiable + nav_list.push(stores_link) if @nav_dispaly_store_all_label && visiable + + content_li = '' + nav_list.collect do |nav_item| + content_li << content_tag(:li, nav_item, :class => 'topnav_a fl') + end + content_li.html_safe + end + + def current_user + User.current + end + + # def hadcommittedforcontest(curu) + # message = JournalsForMessage.find_by_sql("select * from journals_for_messages where jour_type = 'Softapplication' ") + # message.each do |createmessage| + # if createmessage.user_id == curu + # return true + # end + # end + # end + + # 获取用户的认证状态 + def get_authentication_status user + result = '' + if user.authentication + result += '
  • ' + else + apply_auth = ApplyUserAuthentication.where(:user_id => user.id, :auth_type => 1).last + if apply_auth && apply_auth.status == 0 + result += '
  • ' + else + result += '
  • ' + end + end + if user.professional_certification + result += '
  • ' + else + apply_auth = ApplyUserAuthentication.where(:user_id => user.id, :auth_type => 2).last + if apply_auth && apply_auth.status == 0 + result += '
  • ' + else + result += '
  • ' + end + end + return result.html_safe + end + + def footer_logo(ul_class=nil, li_class=nil) + logos = [] + logos.push(link_to image_tag('/images/footer_logo/nudt.png',:alt=>"nudt"),"http://www.nudt.edu.cn/special.asp?classid=12" ) + logos.push(link_to image_tag('/images/footer_logo/peking_eecs.png', :alt=>"peking_eecs"), "http://www.sei.pku.edu.cn/" ) + logos.push(link_to image_tag('/images/footer_logo/buaa_scse.png', :alt=>"buaa_scse"), "http://scse.buaa.edu.cn/" ) + logos.push(link_to image_tag('/images/footer_logo/iscas.png', :alt=>"iscas"), "http://www.iscas.ac.cn" ) + logos.push(link_to image_tag('/images/footer_logo/inforbus.png', :alt=>"inforbus"), "http://www.inforbus.com" ) + + logos.collect! { |logo| + content_tag(:li, logo.html_safe, :class => li_class.to_s) + } + + content_tag(:ul, logos.join("").html_safe, :class => ul_class.to_s).html_safe + end + + def sort_homework_path(bid, sort, direction) + case self.action_name + when 'show_courseEx' + get_not_batch_homework_homework_attach_index_path(bid_id: bid.id, sort: sort, direction: 'asc') + when 'get_not_batch_homework' + get_not_batch_homework_homework_attach_index_path(bid_id: bid.id, sort: sort, direction: direction) + when 'get_batch_homeworks' + get_batch_homeworks_homework_attach_index_path(bid_id: bid.id, sort: sort, direction: direction) + when 'get_homeworks' + get_homeworks_homework_attach_index_path(bid_id: bid.id, sort: sort, direction: direction) + else + '#' + end + end + + def anonymous_comment_link(bid, course) + link = case bid.comment_status + when 0 + confirm_info = "开启匿评后学生将不能对作品进行提交、修改、删除等操作\n" + confirm_info += anonymous_comment_notice(bid,course) + confirm_info += '是否确定开启匿评?' + link_to '启动匿评', start_anonymous_comment_bid_path(bid), id: "#{bid.id}_start_anonymous_comment", remote: true, :confirm => confirm_info, disable_with: '加载中...' + when 1 + confirm_info = "关闭匿评后所有同学将不能继续进行匿评,且将公开已提交作品列表\n" + confirm_info += anonymous_comment_notice(bid,course) + confirm_info += '是否确定关闭匿评?' + link_to '关闭匿评', stop_anonymous_comment_bid_path(bid), id: "#{bid.id}_stop_anonymous_comment", remote: true, :confirm => confirm_info + when 2 + '匿评结束' + end + content_tag('span', link, id: "#{bid.id}_anonymous_comment") + end + + def anonymous_comment_notice(bid, course) + case bid.comment_status + when 0 + @student_size ||= searchStudent(course).size + @homework_size = bid.homeworks.size + percent = @homework_size.to_f / (@student_size == 0 ? 1 : @student_size) + confirm_info = "目前#{@student_size}个学生,总共提交了#{@homework_size}份作品,占#{number_to_percentage(percent * 100, precision: 1)}\n" + when 1 + @homework_evaluations = 0 + bid.homeworks.map { |homework| @homework_evaluations += 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 + @has_evaluations = 0 + bid.homeworks.map { |homework| @has_evaluations += homework.rates(:quality).where("seems_rateable_rates.rater_id not in #{teachers}").count} + + percent = @has_evaluations.to_f / (@homework_evaluations == 0 ? 1 : @homework_evaluations) + confirm_info = "目前总共分配了#{@homework_evaluations}份匿评作品,已评价#{@has_evaluations}份作品,占#{number_to_percentage(percent * 100, precision: 1)}\n" + end + confirm_info + end + + def get_technical_title user + 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 + + # 用户竞赛总数 + def user_contest_count + @user.favorite_contests.visible.where("is_delete =?", 0).count + end + + # 用户项目总数 + def user_project_count + @my_projects = @user.projects.visible.where("status != 9") + @my_project_total = @my_projects.count + end + + # 用户的课程总数 + def user_course_count + @my_course_count = @user.syllabuses.count + + sy_courses = @user.courses.visible.not_deleted + syllabus_ids = sy_courses.empty? ? '(-1)' : "(" + sy_courses.map{|course| !course.syllabus_id.nil? && course.syllabus_id}.join(",") + ")" + syllabus_members = SyllabusMember.where("user_id = #{@user.id}") + syllabus_member_ids = syllabus_members.empty? ? "(-1)" : "(" + syllabus_members.map{|syl_mem| syl_mem.syllabus_id}.join(',') + ")" + @join_syllabuses = Syllabus.where("(id in #{syllabus_ids} or id in #{syllabus_member_ids}) and user_id != #{@user.id}") + @my_joined_course_count = @join_syllabuses.count + + @user_course_total = @my_joined_course_count + @my_course_count + end + + # 用户发布的作业数 + def user_manage_homework_count + tea_courses = @user.courses.visible.not_deleted.select{|course| @user.has_teacher_role(course)} + tea_course_ids = tea_courses.map{|course| course.id} + @manage_homeworks = HomeworkCommon.where(:course_id => tea_course_ids).count + end + + # 用户收到的作业数 + def user_receive_homework_count + stu_courses = @user.courses.visible.not_deleted.select{|course| @user.has_student_role(course)} + stu_course_ids = stu_courses.empty? ? "(-1)" : "(" + stu_courses.map{|course| course.id}.join(',') + ")" + @homeworks = HomeworkCommon.where("course_id in #{stu_course_ids} and publish_time <= '#{Time.now}'").count + end + + # 用户发布的issue数 + def issues_author_is_self_count + Issue.where(:author_id => @user.id).count + end + + # 用户收到的issue数 + def issues_assigned_is_self_count + Issue.where( :assigned_to_id => @user.id ).count + end + + def get_user_roll user + technical_title = "" + case user.user_extensions.identity.to_s + when "0" + technical_title = get_technical_title user + when "1" + technical_title = l(:label_account_identity_student) + when "2" + technical_title = l(:label_account_identity_enterprise) + when "3" + technical_title = l(:label_account_identity_developer) + end + technical_title + end + + + def ie8? + request.env["HTTP_USER_AGENT"] =~ /MSIE 8.0/ + end + + + #获取指定资源列表的TAG的集合以及每个TAG的数量,降序排序 + def attachment_tag_list attachments + tag_list = Hash.new + attachments.each do |attachment| + attachment.tag_list.map{|tag| tag_list.has_key?(tag) ? tag_list[tag] = tag_list[tag] + 1 : tag_list[tag] = 1} + end + tag_list.sort {|a,b| b[1]<=>a[1]} + end + + #获取课程资源的TAG云 + def get_course_tag_list course + all_attachments = course.attachments + if User.current.admin? || User.current.allowed_to?(:as_teacher, course) + all_attachments = all_attachments.reorder("created_on desc") + elsif User.current.member_of_course?(course) + member = course.members.where(:user_id => User.current.id).first + if member.try(:course_group_id).to_i == 0 + all_attachments = all_attachments.where("is_publish = 1 and unified_setting = 1") + else + not_atta_ids = course.attachment_group_settings.where("course_group_id = #{member.try(:course_group_id)} and publish_time > '#{Time.now}'") + not_atta_ids = not_atta_ids.blank? ? "(-1)" : "(" + not_atta_ids.map(&:attachment_id).join(",") + ")" + all_attachments = all_attachments.where("is_publish = 1 and attachments.id not in #{not_atta_ids}") + end + else + all_attachments = all_attachments.where("is_publish = 1 and unified_setting = 1") + end + tag_list = attachment_tag_list all_attachments + tag_list + end + + # 获取项目资源的Tag云 + def get_project_tag_list project + all_attachments = project.attachments.select{|attachment| attachment.is_public? || + (attachment.container_type == "Project" && User.current.member_of?(project))|| + attachment.author_id == User.current.id + } + tag_list = attachment_tag_list all_attachments + tag_list + end + + # 获取项目fork成员数 + def project_fork_count + @forked_projects = Project.where(:forked_from_project_id => @project.id) + @forked_count = @forked_projects.count + end + + def get_org_subfield_tag_list org_subfield + all_attachments = org_subfield.attachments.select{|attachment| attachment.is_public? || + (attachment.container_type == "OrgSubfield" && User.current.member_of_org?(org_subfield.organization))|| + attachment.author_id == User.current.id + } + tag_list = attachment_tag_list all_attachments + tag_list + end + + #获取匿评相关连接代码 + def homework_anonymous_comment (homework, hw_status, user_activity_id = -1) + if homework.homework_detail_manual.comment_status == 0 || homework.end_time >= Time.now + link = link_to "启动匿评","javascript:void(0)", :class => "wpostOptionLink", :title => "作业截止日期之前不可以启动匿评" + elsif homework.student_works.has_committed.count >= 2 && homework.homework_detail_manual#作业份数大于2 + case homework.homework_detail_manual.comment_status + when 1 + link = link_to '启动匿评', Setting.protocol + "://" + Setting.host_name + "/homework_common/" + homework.id.to_s + "/alert_anonymous_comment?hw_status=" + hw_status.to_s + "&user_activity_id=" + user_activity_id.to_s, id: "#{homework.id}_start_anonymous_comment", remote: true, disable_with: '加载中...',:class => 'wpostOptionLink' + when 2 + link = link_to '关闭匿评', Setting.protocol + "://" + Setting.host_name + "/homework_common/" + homework.id.to_s + "/alert_anonymous_comment?hw_status=" + hw_status.to_s + "&user_activity_id=" + user_activity_id.to_s, id: "#{homework.id}_stop_anonymous_comment", remote: true,:class => 'wpostOptionLink' + when 3 + # link = link_to "匿评结束","javascript:void(0)", :class => "postOptionLink", :title => "匿评结束" + end + else + link = link_to "启动匿评","javascript:void(0)", :class => "wpostOptionLink", :title => "学生提交作业数大于等于2时才可以启动匿评" + end + link + end + #学生根据传入作业确定显示为编辑作品还是新建作品 + def student_new_homework homework + work = cur_user_works_for_homework homework + if work.nil? + link_to "提交作品", new_student_work_path(:homework => homework.id),:class => 'fr mr10 work_edit' + else + if homework.homework_type == 1 && homework.homework_detail_manual && homework.homework_detail_manual.comment_status != 1 #匿评作业,且作业状态不是在开启匿评之前 + link_to "作品已交", "javascript:void(0);", :class => 'fr mr10 pr_join_span c_white', :title => "开启匿评后不可修改作品" + elsif homework.homework_type == 2 #编程作业修改作品 + if homework.homework_detail_manual && homework.homework_detail_manual.comment_status != 1 + link_to "作品已交", "javascript:void(0);", :class => 'fr mr10 pr_join_span c_white', :title => "开启匿评后不可修改作品" + else + link_to "修改作品", new_student_work_path(:homework => homework.id),:class => 'fr mr10 work_edit' + end + else + link_to "修改作品", edit_student_work_path(work.id),:class => 'fr mr10 work_edit' + end + end + end + #动态列表中,确定学生是该提交还是进列表 + def student_work_activity_submit_status(opt={}) + default_opt = {class: 'c_blue'}.merge(opt) + + is_teacher = User.current.user_extensions && User.current.user_extensions.identity == 0 && User.current.allowed_to?(:add_course, nil, :global => true) + + homework = default_opt[:homework] + work = cur_user_works_for_homework homework + if work.nil? && !is_teacher + link_to "提交("+homework.student_works.count.to_s+")", new_student_work_path(:homework => homework.id,:host=> Setting.host_course), :class=> default_opt[:class] + else + link_to "提交("+homework.student_works.count.to_s+")", student_work_index_path(:homework => homework.id,:host=> Setting.host_course), :class=> default_opt[:class] + end + end + + # 试卷动态的按钮 + def user_for_exercise exercise,is_teacher + count = exercise.exercise_users.where(:commit_status => 1, :user_id => exercise.course.student.map(&:student_id)).count + if User.current.logged? + if User.current.member_of_course?(exercise.course) + if is_teacher #老师显示作品数量 + link_to "作品 (#{count})".html_safe, student_exercise_list_exercise_path(exercise), :class => "c_blue homepagePostSubmit" + else #学生显示提交作品、修改作品等按钮 + work = exercise.exercise_users.where("user_id = ?",User.current).first + member = exercise.course.members.where(:user_id => User.current.id).first + setting_time = exercise_group_setting exercise, member.try(:course_group) + if work + if work.commit_status > 0 + link_to "查看答题(#{count})", exercise.exercise_status < 3 ? exercise_path(exercise,:user_id => User.current.id) : show_student_result_exercise_path(exercise,:user_id => User.current.id), :class => "c_blue homepagePostSubmit" + else + if setting_time.publish_time < Time.now && setting_time.end_time > Time.now + link_to (work.start_at.nil? ? "开始答题(#{count})" : "继续答题(#{count})"), exercise_path(exercise,:user_id => User.current.id), :class => "c_blue homepagePostSubmit" + else + link_to "查看作品(#{count})".html_safe, student_exercise_list_exercise_path(exercise), :class => "c_blue homepagePostSubmit" + end + end + else + if setting_time.publish_time < Time.now && setting_time.end_time > Time.now + link_to "开始答题(#{count})", exercise_path(exercise,:user_id => User.current.id), :class => "c_blue homepagePostSubmit" + else + link_to "查看作品(#{count})".html_safe, student_exercise_list_exercise_path(exercise), :class => "c_blue homepagePostSubmit" + end + end + end + else + link_to "作品 (#{count})".html_safe, "javascript:void(0)", :class => "c_blue homepagePostSubmit", :onclick => "notice_sure_box('您不是班级成员,不能答题
    请先从老师处获取邀请码后加入班级,再答题')" + end + else + link_to "作品 (#{count})".html_safe, "javascript:void(0)", :class => "c_blue homepagePostSubmit", :onclick => "login_notice_box('#{signin_url_without_domain}');" + end + end + + # 问卷动态的按钮 + def user_for_poll poll,is_teacher + count = poll.poll_users.where(:commit_status => 1, :user_id => poll.course.student.map(&:student_id)).count + if User.current.logged? + if User.current.member_of_course?(poll.course) + if is_teacher #老师显示作品数量 + link_to "作品 (#{count})".html_safe, student_poll_list_poll_path(poll), :class => "c_blue homepagePostSubmit" + else #学生显示提交作品、修改作品等按钮 + work = poll.poll_users.where("user_id = ?",User.current).first + member = poll.course.members.where(:user_id => User.current.id).first + setting_time = poll_group_setting poll, member.try(:course_group) + if work + if work.commit_status > 0 + link_to "查看答题(#{count})", poll_path(poll,:user_id => User.current.id), :class => "c_blue homepagePostSubmit" + elsif setting_time.publish_time < Time.now && setting_time.end_time > Time.now + link_to (work.start_at.nil? ? "开始答题(#{count})" : "继续答题(#{count})"), poll_path(poll,:user_id => User.current.id), :class => "c_blue homepagePostSubmit" + else + link_to "查看作品(#{count})".html_safe, student_poll_list_poll_path(poll), :class => "c_blue homepagePostSubmit" + end + else + if setting_time.publish_time < Time.now && setting_time.end_time > Time.now + link_to "开始答题(#{count})", poll_path(poll,:user_id => User.current.id), :class => "c_blue homepagePostSubmit" + else + link_to "查看作品(#{count})".html_safe, student_poll_list_poll_path(poll), :class => "c_blue homepagePostSubmit" + end + end + end + else + link_to "作品 (#{count})".html_safe, "javascript:void(0)", :class => "c_blue homepagePostSubmit", :onclick => "notice_sure_box('您不是班级成员,不能答题
    请先从老师处获取邀请码后加入班级,再答题')" + end + else + link_to "作品 (#{count})".html_safe, "javascript:void(0)", :class => "c_blue homepagePostSubmit", :onclick => "login_notice_box('#{signin_url_without_domain}');" + end + end + + #根据传入作业确定显示为编辑作品还是新建作品,或者显示作品数量 + def user_for_homework_common homework,work + if User.current.logged? + project = cur_user_projects_for_homework homework if homework.homework_type == 3 + member = homework.course.members.where(:user_id => User.current.id).first + setting_time = homework_group_setting homework, member.try(:course_group_id) + if homework.homework_type == 4 + if work.nil? + link_to "开始实战", shixun_path(homework.homework_commons_shixuns.shixun), :class => 'edu-default-btn user_bluebg_btn fr mr20 pl7 pr7',:target => "_blank" + else + myshixun = Myshixun.where(:id => work.myshixun_id).first + is_modify = ShixunModify.where(:myshixun_id => myshixun.try(:id), :shixun_id => myshixun.shixun.try(:id), :status => 1).first + if myshixun && is_modify.blank? + link_to "继续实战", myshixun_game_path(myshixun.current_task, :myshixun_id => myshixun), :class => "edu-default-btn user_orangebg_btn fr mr20 pl7 pr7", :target => "_blank" + elsif myshixun + link_to "继续实战", 'javascript:void(0);', :onclick => "sure_box_redirect('#{myshixun_reset_myshixun_path(myshixun)}', '实训已经更新啦,系统正在为您重置');", :class => "edu-default-btn user_orangebg_btn fr mr20 pl7 pr7" + end + end + elsif work.nil? && setting_time.end_time >= Time.now + if homework.homework_type ==3 && project.nil? && homework.homework_detail_group.base_on_project == 1 + link_to "提交作品", "javascript:void(0)", :class => 'edu-default-btn user_bluebg_btn fr mr20 pl7 pr7',:style=>"cursor:not-allowed",:title => '请先关联项目再提交作品' + else + link_to "提交作品", new_student_work_url_without_domain(homework.id),:class => 'edu-default-btn user_bluebg_btn fr mr20 pl7 pr7' + end + elsif work.nil? && setting_time.end_time < Time.now + if homework.allow_late && !homework.course.is_end + if homework.homework_type ==3 && project.nil? && homework.homework_detail_group.base_on_project == 1 + link_to "补交作品", "javascript:void(0)", :class => 'edu-default-btn user_orangebg_btn fr mr20 pl7 pr7',:style=>"cursor:not-allowed",:title => '请先关联项目再补交作品' + else + link_to "补交作品", new_student_work_url_without_domain(homework.id),:class => 'edu-default-btn user_orangebg_btn fr mr20 pl7 pr7' + end + end + elsif work + work_ids = "(" + homework.student_works.has_committed.map(&:id).join(",") + ")" + if homework.homework_detail_manual && homework.homework_detail_manual.comment_status == 3 && User.current.student_works_evaluation_distributions.where("student_work_id IN #{work_ids}").count > 0 #匿评作业,且作业状态不是在开启匿评之前 + link_to "作品匿评", student_work_index_path(:homework => homework.id), :class => 'edu-default-btn user_orangebg_btn fr mr20 pl7 pr7', :title => "开启匿评后不可修改作品" + elsif homework.homework_detail_manual && homework.homework_detail_manual.comment_status > 3 + link_to "查看作品",student_work_path(work), :class => 'edu-default-btn user_greybg_btn fr mr20 pl7 pr7', :title => "匿评已结束" + elsif setting_time.end_time >= Time.now && work.user_id == User.current.id + link_to "修改作品", edit_student_work_url_without_domain(work.id),:class => 'edu-default-btn user_orangebg_btn fr mr20 pl7 pr7' + else + link_to "查看作品", student_work_path(work), :class => 'edu-default-btn user_greybg_btn fr mr20 pl7 pr7', :title => "作业截止后不可修改作品" + end + end + else + link_to "作品".html_safe, "javascript:void(0)", :class => "edu-default-btn user_greybg_btn fr mr20 pl7 pr7", :onclick => "login_notice_box('#{signin_url_without_domain}');" + end + end + + #根据传入作业确定显示为编辑作品还是新建作品,或者显示作品数量 + def user_for_contest_work homework,is_contestant,work + count = homework.contestant_works.has_committed.count + if User.current.logged? + if User.current.member_of_contest?(homework.contest) || User.current.admin? + if !is_contestant #老师显示作品数量 + link_to "作品(#{count})", contestant_works_path(:work =>homework.id, :tab => 2), :class => "c_blue" + else #学生显示提交作品、修改作品等按钮 + work = cur_user_works_for_work homework + project = cur_user_projects_for_work homework + if work.nil? && homework.work_status == 1 + if homework.work_type ==3 && project.nil? && homework.work_detail_group.base_on_project + link_to "提交作品(#{count})","javascript:void(0)", :class => 'c_grey',:style=>"cursor:not-allowed",:title => '请先关联项目再提交作品' + else + link_to "提交作品(#{count})", new_contestant_work_path(:work => homework.id),:class => 'c_blue' + end + elsif work.nil? && homework.work_status > 1 + if homework.work_type ==3 && project.nil? && homework.work_detail_group.base_on_project + link_to "补交作品(#{count})","javascript:void(0)", :class => 'c_grey',:style=>"cursor:not-allowed",:title => '请先关联项目再补交作品' + else + link_to "补交作品(#{count})", new_contestant_work_path(:work => homework.id),:class => 'c_blue' + end + else + if homework.work_status == 1 && work.user_id == User.current.id + link_to "修改作品(#{count})", edit_contestant_work_path(work.id),:class => 'c_blue' + else + link_to "查看作品(#{count})", contestant_works_path(:work =>homework.id, :tab => 2), :class => 'c_blue', :title => "不可修改作品" + end + end + end + else + link_to "作品(#{count})", "javascript:void(0)", :class => "c_blue", :onclick => "notice_sure_box('您不是参赛者,不能提交作品
    请加入竞赛,待审批通过后再提交作品')" + end + else + link_to "作品(#{count})", "javascript:void(0)", :class => "c_blue", :onclick => "login_notice_box('#{signin_url_without_domain}');" + end + end + + #根据传入作业确定显示为提交作品、补交作品、查看作品等 + def student_for_homework_common homework + if User.current.allowed_to?(:as_teacher, homework.course) + link_to "查看作品", student_work_index_url_in_org(homework.id, 2), :class => 'hw_btn_green fr mt5', :title => "查看作品", :target => '_blank' + else User.current.member_of_course?(homework.course) + work = cur_user_works_for_homework homework + project = cur_user_projects_for_homework homework + if work.nil? && homework.end_time >= Time.now + if homework.homework_type ==3 && project.nil? && homework.homework_detail_group.base_on_project == 1 + link_to "关联项目", student_work_index_url_in_org(homework.id, 1), :class => 'hw_btn_green fr mt5',:title => '查看分组作业详情', :target => '_blank' + else + link_to "提交作品", new_student_work_url_without_domain(homework.id),:class => 'hw_btn_green fr mt5', :target => '_blank' + end + elsif work.nil? && homework.end_time < Time.now + if homework.homework_type ==3 && project.nil? && homework.homework_detail_group.base_on_project == 1 + link_to "关联项目", student_work_index_url_in_org(homework.id, 1), :class => 'hw_btn_green fr mt5',:title => '查看分组作业详情', :target => '_blank' + else + link_to "补交作品", new_student_work_url_without_domain(homework.id),:class => 'btn_orange_big fr mt5', :target => '_blank' + end + else + if homework.homework_detail_manual && homework.homework_detail_manual.comment_status == 2 #匿评作业,且作业状态不是在开启匿评之前 + link_to "作品匿评", student_work_index_url_in_org(homework.id, 2), :class => 'hw_btn_green fr mt5', :title => "开启匿评后不可修改作品", :target => '_blank' + elsif homework.homework_detail_manual && homework.homework_detail_manual.comment_status == 3 + link_to "查看作品",student_work_index_url_in_org(homework.id, 2), :class => 'hw_btn_green fr mt5', :title => "匿评已结束", :target => '_blank' + elsif homework.homework_type == 2 && homework.end_time >= Time.now#编程作业不能修改作品 + link_to "修改作品", new_student_work_url_without_domain(homework.id),:class => 'hw_btn_green fr mt5', :target => '_blank' + elsif homework.end_time >= Time.now && work.user_id == User.current.id + link_to "修改作品", edit_student_work_url_without_domain(work.id),:class => 'hw_btn_green fr mt5', :target => '_blank' + else + link_to "查看作品", student_work_index_url_in_org(homework.id, 2), :class => 'hw_btn_green fr mt5', :title => "作业截止后不可修改作品", :target => '_blank' + end + end + end + end + + def relate_project homework,is_teacher,is_in_course,user_activity_id,course_activity + if User.current.member_of_course?(homework.course) + if is_teacher + #link_to "已关联(#{homework.student_work_projects.count})",student_work_index_path(:homework => homework.id),:class => "c_blue" + else + projects = cur_user_projects_for_homework homework + works = cur_user_works_for_homework homework + if works.nil? && projects.nil? + link_to "关联项目",new_student_work_project_student_work_index_path(:homework => homework.id,:is_in_course=>is_in_course,:user_activity_id=>user_activity_id,:course_activity=>course_activity),remote: true,:class=> 'c_blue', :title=> '请选择分组作业关联的项目' + elsif works.nil? + link_to "取消关联",cancel_relate_project_student_work_index_path(:homework => homework.id,:is_in_course=>is_in_course,:user_activity_id=>user_activity_id,:course_activity=>course_activity), :confirm => "您确定要取消关联吗?", remote: true,:class => "c_blue", :title=> '取消关联项目' + else + #link_to "已关联(#{homework.student_work_projects.count})",student_work_index_path(:homework => homework.id),:class => "c_blue" + end + end + end + end + + def student_anonymous_comment homework + if homework.homework_detail_manual + case homework.homework_detail_manual.comment_status + when 1 + "未开启匿评".html_safe + when 2 + "正在匿评中".html_safe + when 3 + "匿评已结束".html_safe + end + end + end + + #获取当前用户在指定作业下提交的作业的集合 + def cur_user_works_for_homework homework + work = homework.student_works.where("user_id = ? && work_status != 0",User.current).first + # if homework.homework_type == 3 + # pro = homework.student_work_projects.where("user_id = #{User.current.id}").first + # if pro.nil? || pro.student_work_id == "" || pro.student_work_id.nil? + # work = nil + # else + # work = StudentWork.find pro.student_work_id + # end + # end + work + end + #获取当前用户在指定作业下关联的项目的集合 + def cur_user_projects_for_homework homework + homework.student_works.where("user_id = ? and project_id != 0",User.current).first + end + + #获取当前用户在指定题目下提交的作业的集合 + def cur_user_works_for_work homework + work = homework.contestant_works.where("user_id = ? && work_status != 0",User.current).first + if homework.work_type == 3 + pro = homework.contestant_work_projects.where("user_id = #{User.current.id}").first + if pro.nil? || pro.contestant_work_id == "" || pro.contestant_work_id.nil? + work = nil + else + work = ContestantWork.find pro.contestant_work_id + end + end + work + end + #获取当前用户在指定题目下关联的项目的集合 + def cur_user_projects_for_work work + work.contestant_work_projects.where("user_id = ?",User.current).first + end + + #获取当前作业的提交截止时间/互评截止时间 + def cur_homework_end_time homework + str = "" + if homework.anonymous_comment == 0 && homework.end_time && homework.end_time < Time.now && homework.homework_detail_manual + str = "互评截止:#{format_date homework.homework_detail_manual.evaluation_end}" + else + str = "提交截止:#{homework.end_time ? (format_date homework.end_time) : '       --       '}" + end + str + end + + def file_preview_tag(file, html_options={}) + if %w(pdf pptx doc docx xls xlsx).any?{|x| file.filename.downcase.end_with?(x)} + link_to '预览', download_named_attachment_path(file.id, file.filename, preview: true),html_options + end + end + + def file_preview_eye(file, html_options={}) + if %w(pdf pptx doc docx xls xlsx).any?{|x| file.filename.downcase.end_with?(x)} + link_to '', User.current.logged? ? download_named_attachment_path(file.id, file.filename, preview: true) : signin_url_without_domain, html_options + end + end + + #将文本内的/n转换为
    + def text_format text + text.gsub("&","&").gsub("<","<").gsub(">",">").gsub("\n","
    ").html_safe + end + + #评分规则显示 + def scoring_rules late_penalty,homework_id,is_teacher,absence_penalty=nil + if absence_penalty + if late_penalty.to_i == 0 && absence_penalty.to_i == 0 + notice = "尚未设置评分规则" + if is_teacher + notice += ",请 " + link_to("设置",edit_homework_common_path(homework_id),:class => "c_green") + end + elsif late_penalty.to_i != 0 && absence_penalty.to_i == 0 + notice = "迟交扣#{late_penalty}分,缺评扣分未设置" + elsif late_penalty.to_i == 0 && absence_penalty.to_i != 0 + notice = "迟交扣分未设置,缺评一个作品扣#{absence_penalty}分" + elsif late_penalty.to_i != 0 && absence_penalty.to_i != 0 + notice = "迟交扣#{late_penalty}分,缺评一个作品扣#{absence_penalty}分" + end + else + if late_penalty.to_i == 0 + notice = "尚未设置评分规则" + if is_teacher + notice += ",请 " + link_to("设置",edit_homework_common_path(homework_id),:class => "c_green") + end + else + notice = "迟交扣#{late_penalty}分" + end + end + notice.html_safe + end + + #老师C语言的标准代码 + def c_stantard_code_teacher + "// 老师您好!这是一个C语言的样例程序 +// 程序功能:输入两个整数,输出两者之和 +// 测试集合:老师可以给出多组测试集,例如: +// 输入1和2,输出3 +// 输入3和4,输出7 +// ... ... +// 系统将根据您给出的测试集对学生代码进行自动评分 + +// 特别提醒:程序采用命令行传参方式,输入通过argv传入 +// 否则您的作业标准代码将不能通过测试 + +#include //引用必须头文件 +int main(int argc, char** argv) { + int a = atoi(argv[1]); //将第一个输入转成整型 + int b = atoi(argv[2]); //将第二个输入转换为整型 + + printf(\"%d\",a+b); //输出a+b + return 0; +}".html_safe + end + + #老师C++语言的标准代码 + def c_stantard_code_teacher_ + "// 老师您好!这是一个C++语言的样例程序 +// 程序功能:输入两个整数,输出两者之和 +// 测试集合:老师可以给出多组测试集,例如: +// 输入1和2,输出3 +// 输入3和4,输出7 +// ... ... +// 系统将根据您给出的测试集对学生代码进行自动评分 + +// 特别提醒:程序采用命令行传参方式,输入通过argv传入 +// 否则您的作业标准代码将不能通过测试 + +#include //引用必须头文件 +#include +using namespace std; +int main(int argc, char** argv){ + int a = atoi(argv[1]); //将第一个输入转成整型 + int b = atoi(argv[2]); //将第二个输入转换为整型 + cout< //引用必须头文件 +int main(int argc, char** argv) { + int a = atoi(argv[1]); //将第一个输入转成整型 + int b = atoi(argv[2]); //将第二个输入转换为整型 + + printf(\"%d\",a+b); //输出a+b + return 0; +}".html_safe + end + + #学生C++语言的标准代码 + def c_stantard_code_student_ + "// 同学好!这是一个C++语言的样例程序 +// 程序功能:输入两个整数,输出两者之和 +// 测试集合:老师可以给出多组测试集,例如: +// 输入1和2,输出3 +// 输入3和4,输出7 +// ... ... +// 系统将根据您给出的测试集对学生代码进行自动评分 + +// 特别提醒:程序采用命令行传参方式,输入通过argv传入 +// 否则您的作业标准代码将不能通过测试 + +#include //引用必须头文件 +#include +using namespace std; +int main(int argc, char** argv){ + int a = atoi(argv[1]); //将第一个输入转成整型 + int b = atoi(argv[2]); //将第二个输入转换为整型 + cout<&1 | base64) + if [ -z \"$compileResult\" ]; then + compileResult=$(echo -n \"compile successfully\" | base64) + fi + +} +compile $1" + end + + def execute_command + "execute(){ + #执行命令 + executeCommand=\"EXECUTECOMMAND\" + #执行文件名 + sourceClassName=${sourceClassNames[$1 - 1]} + challengeStage=$1 + + output='' + i=0 + while [[ i -lt ${#ins[*]} ]]; do + #执行,并拼接执行结果 + result=$(echo \"${ins[$i]}\" | base64 -d | $executeCommand $sourceClassName 2>&1 | base64) + #拼接输出结果 + output=$output\\\"$result\\\", + let i++ + done + output=\"[${output%?}]\" +} + +execute $1 +" + end + + def challenge_file_path + "#用户打开的文件名,之所以传过来这个,是因为可以从这个里面提取出来执行文件名 +challengeProgramNames=(CHALLENGEPROGRAMNAMES)" + end + + + def import_ke(default_opt={}) + opt = {enable_at: false, prettify: false, init_activity: false}.merge default_opt + ss = '' + + unless Setting.at_enabled? + opt[:enable_at] = false + end + + ss += javascript_include_tag("/assets/kindeditor/kindeditor",'/assets/kindeditor/pasteimg') + if opt[:enable_at] + ss += javascript_include_tag('/assets/kindeditor/at/jquery.caret.min.js', '/assets/kindeditor/at/jquery.atwho.js', '/assets/kindeditor/at/config.js') + ss += stylesheet_link_tag("/assets/kindeditor/at/jquery.atwho.css") + end + + if opt[:prettify] + ss += javascript_include_tag 'prettify' + ss += stylesheet_link_tag 'prettify' + end + + if opt[:init_activity] + ss += javascript_include_tag "create_kindeditor" + end + + ss.html_safe + end + + #竞赛动态的更新 + def update_contest_activity type, id + contest_activity = ContestActivity.where("contest_act_type=? and contest_act_id =?", type.to_s, id).first + if contest_activity + contest_activity.updated_at = Time.now + contest_activity.save + end + end + #课程动态的更新 + def update_course_activity type, id + course_activity = CourseActivity.where("course_act_type=? and course_act_id =?", type.to_s, id).first + if course_activity + course_activity.updated_at = Time.now + course_activity.save + end + end + #首页动态更新 + def update_user_activity type, id +=begin + user_activity = UserActivity.where("act_type=? and act_id =?", type.to_s, id).first + if user_activity + user_activity.updated_at = Time.now + user_activity.save + end +=end + end + #项目动态更新 + def update_forge_activity type, id + forge_activity = ForgeActivity.where("forge_act_type=? and forge_act_id=?", type.to_s, id).first + if forge_activity + forge_activity.updated_at = Time.now + forge_activity.save + end + end + #组织动态更新 + def update_org_activity type , id +=begin + org_activity = OrgActivity.where("org_act_type=? and org_act_id =?", type.to_s, id).first + if org_activity + org_activity.updated_at = Time.now + org_activity.save + end +=end + end + #个人动态更新 + def update_principal_activity type, id +=begin + principal_activity = PrincipalActivity.where("principal_act_type=? and principal_act_id =?", type.to_s, id).first + if principal_activity + principal_activity.updated_at = Time.now + principal_activity.save + end +=end + end + + #项目按更新时间排序 + def project_sort_update projects + unless projects.empty? + project_ids = '('+projects.map{|pro|pro.project_id}.join(',')+')' + sort_projects = ForgeActivity.find_by_sql("SELECT MAX(updated_at) AS updated_at,user_id, project_id FROM forge_activities WHERE project_id IN #{project_ids} GROUP BY project_id ORDER BY MAX(updated_at) DESC") + #sort_projects = sort_projects.sort_by{|sp| (!sp.project.project_score.nil? && !sp.project.project_score.commit_time.nil?) ? '' : sp.project.project_score.commit_time} + return sort_projects + end + end + + def project_sort_first projects + unless projects.empty? + project_ids = '('+projects.map{|pro|pro.project_id}.join(',')+')' + sort_projects = ForgeActivity.find_by_sql("SELECT updated_at,user_id, project_id FROM forge_activities WHERE project_id IN #{project_ids} ORDER BY updated_at DESC limit 1") + return sort_projects + end + end +end + +def user_url_in_org(user_id) + Setting.protocol + "://" + Setting.host_name + "/users/" + user_id.to_s +end + +def project_issues_url_in_org(project_id) + Setting.protocol + "://" + Setting.host_name + "/projects/" + project_id.to_s + "/issues" +end + +def issue_url_in_org(id) + Setting.protocol + "://" + Setting.host_name + "/issues/" + id.to_s +end + +def project_boards_url_in_org(id) + Setting.protocol + "://" + Setting.host_name + "/projects/" + id.to_s + "/boards" +end + +def board_message_url_in_org(board_id, message_id) + Setting.protocol + "://" + Setting.host_name + "/boards/" + board_id.to_s + "/topics/" + message_id.to_s +end + +def project_url_in_org(id) + Setting.protocol + "://" + Setting.host_name + "/projects/" + id.to_s +end + +def homework_common_index_url_in_org(course_id) + Setting.protocol + "://" + Setting.host_name + "/homework_common?course=" + course_id.to_s +end + +def student_work_index_url_in_org(homework_id, tab = 1, is_focus = '', show_work_id = '') + if is_focus != '' + Setting.protocol + "://" + Setting.host_name + "/student_work?homework=" + homework_id.to_s + "&tab=" + tab.to_s + "&is_focus=" + is_focus.to_s + elsif show_work_id != '' + Setting.protocol + "://" + Setting.host_name + "/student_work?homework=" + homework_id.to_s + "&tab=" + tab.to_s + "&show_work_id=" + show_work_id.to_s + else + Setting.protocol + "://" + Setting.host_name + "/student_work?homework=" + homework_id.to_s + "&tab=" + tab.to_s + end +end + + +def contestant_work_index_url_in_org(work_id, tab = 1, is_focus = '', show_work_id = '') + if is_focus != '' + Setting.protocol + "://" + Setting.host_name + "/contestant_work?work=" + work_id.to_s + "&tab=" + tab.to_s + "&is_focus=" + is_focus.to_s + elsif show_work_id != '' + Setting.protocol + "://" + Setting.host_name + "/contestant_work?work=" + work_id.to_s + "&tab=" + tab.to_s + "&show_work_id=" + show_work_id.to_s + else + Setting.protocol + "://" + Setting.host_name + "/contestant_work?work=" + work_id.to_s + "&tab=" + tab.to_s + end +end + +def course_url_in_org(course_id) + Setting.protocol + "://" + Setting.host_name + "/courses/" + course_id.to_s +end + +def user_watchlist_url_in_org(id) + Setting.protocol + "://" + Setting.host_name + "/users/" + id.to_s + "/user_watchlist" +end + +def user_fanslist_url_in_org(id) + Setting.protocol + "://" + Setting.host_name + "/users/" + id.to_s + "/user_fanslist" +end + +def user_blogs_url_in_org(user_id) + Setting.protocol + "://" + Setting.host_name + "/users/" + user_id.to_s + "/blogs" +end + +def feedback_url_in_org(user_id) + Setting.protocol + "://" + Setting.host_name + "/users/" + user_id.to_s + "/user_newfeedback" +end + +def user_activities_url_in_org(user_id) + Setting.protocol + "://" + Setting.host_name + "/users/" + user_id.to_s + "/user_activities" +end + +def course_news_index_url_in_org(course_id) + Setting.protocol + "://" + Setting.host_name + "/courses/" + course_id.to_s + "/news" +end + +def news_url_in_org(news_id) + Setting.protocol + "://" + Setting.host_name + "/news/" + news_id.to_s +end + +def course_boards_url_in_org(course_id) + Setting.protocol + "://" + Setting.host_name + "/courses/" + course_id.to_s + "/boards" +end + +def logout_url_without_domain + Setting.protocol + "://" + Setting.host_name + "/logout" +end + +def signin_url_without_domain + Setting.protocol + "://" + Setting.host_name + "/login?login=true" +end + +def register_url_without_domain + Setting.protocol + "://" + Setting.host_name + "/login?login=false" +end + +def new_student_work_url_without_domain(homework_id) + Setting.protocol + "://" + Setting.host_name + "/student_work/new?homework=" + homework_id.to_s +end + +def edit_student_work_url_without_domain(homework_id) + Setting.protocol + "://" + Setting.host_name + "/student_work/" + homework_id.to_s + "/edit" +end + +def download_named_attachment_url_without_domain(id, filename, option={}) + attachment_id = (Attachment === id ? id.id : id) + Setting.protocol + "://" + Setting.host_name + "/attachments/download/" + attachment_id.to_s + "/" + filename +end + +def named_attachment_url_without_domain(id, filename, option={}) + attachment_id = (Attachment === id ? id.id : id) + Setting.protocol + "://" + Setting.host_name + "/attachments/" + attachment_id.to_s + "/" + filename +end + +#判断是否为默认的组织栏目 +def is_default_field? field + (field.name == 'activity' || field.name == 'course' || field.name == 'project' ) && field.field_type == 'default' +end + +def host_with_protocol + return Setting.protocol + "://" + Setting.host_name +end + +def secdomain_with_protocol secdomain + return Setting.protocol + "://" + secdomain + ".trustie.net" +end + +#根据回复类型获取回复 +def get_reply_by_type type, reply_id + reply = nil + case type + when 'HomeworkCommon', 'Work', 'GraduationTopic', 'GraduationTask' + reply = JournalsForMessage.find reply_id + when 'JournalsForMessage' + reply = JournalsForMessage.find reply_id + when 'Message' + reply = Message.find reply_id + when 'BlogComment' + reply = BlogComment.find reply_id + when 'OrgDocumentComment' + reply = OrgDocumentComment.find reply_id + when 'News','Comment' + reply = Comment.find reply_id + when 'Issue', 'TrainingTask' + reply = Journal.find reply_id + when 'Journal' + reply = Journal.find reply_id + when 'Syllabus' + reply = JournalsForMessage.find reply_id + when 'Memo' + reply = Memo.find reply_id + when 'Challenge' + reply = Discuss.find reply_id + end + reply +end + +#获取不包含子节点的回复(前三个) +def get_no_children_comments comments + result = {} + no_children_comments = [] + count = 0 + three_more = false + comments.each do |comment| + if comment.children.blank? + count = count + 1 + if count > 3 + three_more = true + end + break if count > 3 + no_children_comments << comment + end + end + result[:three_more] = three_more + result[:no_children_comments] = no_children_comments + result +end + +#获取不包含子节点的回复(所有) +def get_no_children_comments_all comments + no_children_comments = [] + comments.each do |comment| + if comment.children.blank? + no_children_comments << comment + end + end + no_children_comments +end + +#获取回复的所有父节点 +def get_reply_parents parents_rely, comment + unless comment.parent.nil? + parents_rely << comment.parent + get_reply_parents parents_rely, comment.parent + end + parents_rely +end + +#获取回复的所有父节点(不包括根节点) +def get_reply_parents_no_root parents_rely, comment + if !comment.parent.nil? && !comment.parent.parent.nil? + parents_rely << comment.parent + get_reply_parents_no_root parents_rely, comment.parent + end + parents_rely +end + +def get_all_children_ex result, jour + if jour.kind_of? Message + jour.children.includes(:author, :praise_tread_cache).each do |jour_child| + result << jour_child + get_all_children_ex result, jour_child + end + elsif (jour.kind_of? JournalsForMessage) || (jour.kind_of? BlogComment) || (jour.kind_of? OrgDocumentComment) + jour.children.each do |jour_child| + result << jour_child + get_all_children_ex result, jour_child + end + end + result +end + +#获取所有子节点 +def get_all_children result, jour + if jour.kind_of? Message + jour.children.includes(:author, :praise_tread_cache).each do |jour_child| + result << jour_child + get_all_children_ex result, jour_child + end + elsif (jour.kind_of? JournalsForMessage) || (jour.kind_of? BlogComment) || (jour.kind_of? OrgDocumentComment) + jour.children.each do |jour_child| + result << jour_child + get_all_children_ex result, jour_child + end + end + if jour.respond_to?(:created_on) + result.sort! { |a,b| b.created_on <=> a.created_on } + elsif jour.respond_to?(:created_at) + result.sort! { |a,b| b.created_at <=> a.created_at } + end + result +end + +#获取该节点所在的帖子 +def get_root_parent comment + while comment.parent + comment = comment.parent + end + comment +end + + + +#将有置顶属性的提到数组前面 +def sort_by_sticky topics + tmpTopics = [] + tmpIndex = 0 + topics.each do |topic| + if topic.sticky == 1 + tmpTopics[tmpIndex] = topic + tmpIndex = tmpIndex + 1 + end + end + + topics.each do |topic| + if topic.sticky == 0 + tmpTopics[tmpIndex] = topic + tmpIndex = tmpIndex + 1 + end + end + return tmpTopics +end + +#按人气排序的时候 相同的人气必须按某种时间顺序排序 有置顶属性 +def sortby_time_countcommon_hassticky topics,sortstr + tmpTopics = [] + tmpTopics = topics + tStart = -1 + tEnd = -1 + + tmpTopics_1 = [] + tmpIndex = 0 + + tmpTopics.each_with_index do |topic,index| + if topic.sticky == 0 + if tStart == -1 + if (index != tmpTopics.count-1) && (topic[:infocount] == tmpTopics[index+1][:infocount]) + tStart = index + end + else + if ((topic[:infocount] == tmpTopics[index-1][:infocount]) && ((index != tmpTopics.count-1) && (topic[:infocount] == tmpTopics[index+1][:infocount]))) + tEnd = index + else + if (topic[:infocount] == tmpTopics[index-1][:infocount]) + tEnd = index + end + if tEnd > tStart + for i in tStart..tEnd + tmpTopics_1[tmpIndex] = tmpTopics[i] + tmpIndex = tmpIndex + 1 + end + + if sortstr == "created_at" + tmpTopics_1 = tmpTopics_1.sort{|x,y| y[:created_at].to_i <=> x[:created_at].to_i } + elsif sortstr == "created_on" + tmpTopics_1 = tmpTopics_1.sort{|x,y| y[:created_on].to_i <=> x[:created_on].to_i } + elsif sortstr == "updated_at" + tmpTopics_1 = tmpTopics_1.sort{|x,y| y[:updated_at].to_i <=> x[:updated_at].to_i } + elsif sortstr == "updated_on" + tmpTopics_1 = tmpTopics_1.sort{|x,y| y[:updated_on].to_i <=> x[:updated_on].to_i } + end + + tmpIndex = 0 + for i in tStart..tEnd + tmpTopics[i] = tmpTopics_1[tmpIndex] + tmpIndex = tmpIndex + 1 + end + end + tStart = -1 + tEnd = -1 + tmpTopics_1 = [] + tmpIndex = 0 + end + end + end + end + return tmpTopics +end + +#按人气排序的时候 相同的人气必须按某种时间顺序排序 无置顶属性 +def sortby_time_countcommon_nosticky topics,sortstr + tmpTopics = [] + tmpTopics = topics + tStart = -1 + tEnd = -1 + + tmpTopics_1 = [] + tmpIndex = 0 + + tmpTopics.each_with_index do |topic,index| + if tStart == -1 + if (index != tmpTopics.count-1) && (topic[:infocount] == tmpTopics[index+1][:infocount]) + tStart = index + end + else + if ((topic[:infocount] == tmpTopics[index-1][:infocount]) && ((index != tmpTopics.count-1) && (topic[:infocount] == tmpTopics[index+1][:infocount]))) + tEnd = index + else + if (topic[:infocount] == tmpTopics[index-1][:infocount]) + tEnd = index + end + if tEnd > tStart + for i in tStart..tEnd + tmpTopics_1[tmpIndex] = tmpTopics[i] + tmpIndex = tmpIndex + 1 + end + + if sortstr == "created_at" + tmpTopics_1 = tmpTopics_1.sort{|x,y| y[:created_at].to_i <=> x[:created_at].to_i } + elsif sortstr == "created_on" + tmpTopics_1 = tmpTopics_1.sort{|x,y| y[:created_on].to_i <=> x[:created_on].to_i } + elsif sortstr == "updated_at" + tmpTopics_1 = tmpTopics_1.sort{|x,y| y[:updated_at].to_i <=> x[:updated_at].to_i } + elsif sortstr == "updated_on" + tmpTopics_1 = tmpTopics_1.sort{|x,y| y[:updated_on].to_i <=> x[:updated_on].to_i } + end + + tmpIndex = 0 + for i in tStart..tEnd + tmpTopics[i] = tmpTopics_1[tmpIndex] + tmpIndex = tmpIndex + 1 + end + end + tStart = -1 + tEnd = -1 + tmpTopics_1 = [] + tmpIndex = 0 + end + end + end + return tmpTopics +end + +def strip_html(text,len=0,endss="...") + ss = "" + if !text.nil? && text.length>0 + ss=text.gsub(/<\/?.*?>/, '').strip + ss = ss.gsub(/ */, ' ') + + if len > 0 && ss.length > len + ss = ss[0, len] + endss + elsif len > 0 && ss.length <= len + ss = ss + #ss = truncate(ss, :length => len) + end + end + return ss +end + +def message_content content + content = (strip_html content).strip + content = content.gsub(/\s+/, " ") + if content.gsub(" ", "") == "" + content = "[非文本消息]" + end + content +end + +def get_work_index(hw,is_teacher) + if is_teacher + works = hw.contest.works.order("created_at asc") + else + works = hw.contest.works.where("publish_time <= '#{Date.today}'").order("created_at asc") + end + hw_ids = works.map{|hw| hw.id} if !works.empty? + index = hw_ids.index(hw.id).to_i + return index +end + +def get_poll_index(poll, course, is_teacher) + if is_teacher + polls = course.polls.order("IF(ISNULL(publish_time),0,1),publish_time DESC, created_at DESC") + elsif User.current.member_of_course?(course) + member = course.members.where(:user_id => User.current.id).first + if member.try(:course_group_id).to_i == 0 + polls = course.polls.where("publish_time <= '#{Time.now}' and unified_setting = 1").order("IF(ISNULL(publish_time),0,1),publish_time DESC, created_at DESC") + else + not_poll_ids = course.poll_group_settings.where("course_group_id = #{member.try(:course_group_id)} and (publish_time > '#{Time.now}' or publish_time is null)") + not_poll_ids = not_poll_ids.blank? ? "(-1)" : "(" + not_poll_ids.map(&:poll_id).join(",") + ")" + polls = course.polls.where("publish_time <= '#{Time.now}' and id not in #{not_poll_ids}").order("IF(ISNULL(publish_time),0,1),publish_time DESC, created_at DESC") + end + else + polls = course.polls.where("publish_time <= '#{Time.now}'").order("IF(ISNULL(publish_time),0,1),publish_time DESC, created_at DESC") + end + poll_ids = polls.map{|poll| poll.id} if !polls.blank? + index = poll_ids.length - 1 - poll_ids.index(poll.id).to_i + return index +end + +def get_ex_index(exercise, course, is_teacher) + if is_teacher + exercises = course.exercises.order("IF(ISNULL(publish_time),0,1),publish_time DESC, created_at DESC") + elsif User.current.member_of_course?(course) + member = course.members.where(:user_id => User.current.id).first + if member.try(:course_group_id).to_i == 0 + exercises = course.exercises.where("publish_time <= '#{Time.now}' and unified_setting = 1").order("IF(ISNULL(publish_time),0,1),publish_time DESC, created_at DESC") + else + not_exercise_ids = course.exercise_group_settings.where("course_group_id = #{member.try(:course_group_id)} and (publish_time > '#{Time.now}' or publish_time is null)") + not_exercise_ids = not_exercise_ids.blank? ? "(-1)" : "(" + not_exercise_ids.map(&:exercise_id).join(",") + ")" + exercises = course.exercises.where("publish_time <= '#{Time.now}' and id not in #{not_exercise_ids}").order("IF(ISNULL(publish_time),0,1),publish_time DESC, created_at DESC") + end + else + exercises = course.exercises.where("publish_time <= '#{Time.now}'").order("IF(ISNULL(publish_time),0,1),publish_time DESC, created_at DESC") + end + ex_ids = exercises.map{|ex| ex.id} if !exercises.blank? + index = ex_ids.length - 1 - ex_ids.index(exercise.id).to_i + return index +end + +def get_task_index task, is_teacher + if is_teacher + tasks = task.course.graduation_tasks.order("IF(ISNULL(publish_time),0,1),publish_time DESC, created_at DESC") + else + tasks = task.course.graduation_tasks.where("publish_time <= '#{Time.now}'").order("IF(ISNULL(publish_time),0,1),publish_time DESC, created_at DESC") + end + task_ids = tasks.pluck(:id) + index = task_ids.length - task_ids.index(task.id).to_i + return index +end + +def get_hw_index(hw,is_teacher,type=0) + homework_commons = hw.course.homework_commons + course = hw.course + category_str = hw.course_homework_category_id.nil? ? "is null" : "= #{hw.course_homework_category_id}" + if is_teacher + if type != 0 + homeworks = homework_commons.where("homework_commons.homework_type = #{type} and course_homework_category_id #{category_str}").order("IF(ISNULL(publish_time),0,1),publish_time DESC, id DESC") + else + homeworks = homework_commons.where("course_homework_category_id #{category_str}").order("IF(ISNULL(publish_time),0,1),publish_time DESC, id DESC") + end + elsif User.current.member_of_course?(course) + member = course.members.where(:user_id => User.current.id).first + if member.try(:course_group_id).to_i == 0 + if type != 0 + homeworks = homework_commons.where("course_homework_category_id #{category_str} and homework_commons.homework_type = #{type} and publish_time <= '#{Time.now}' and unified_setting = 1").order("IF(ISNULL(publish_time),0,1),publish_time DESC, id DESC") + else + homeworks = homework_commons.where("course_homework_category_id #{category_str} and publish_time <= '#{Time.now}' and unified_setting = 1").order("IF(ISNULL(publish_time),0,1),publish_time DESC, id DESC") + end + else + not_homework_ids = course.homework_group_settings.where("course_group_id = #{member.try(:course_group_id)} and (publish_time > '#{Time.now}' or publish_time is null)") + not_homework_ids = not_homework_ids.blank? ? "(-1)" : "(" + not_homework_ids.map(&:homework_common_id).join(",") + ")" + if type != 0 + homeworks = homework_commons.where("course_homework_category_id #{category_str} and homework_commons.homework_type = #{type} and publish_time <= '#{Time.now}' and id not in #{not_homework_ids}").order("IF(ISNULL(publish_time),0,1),publish_time DESC, id DESC") + else + homeworks = homework_commons.where("course_homework_category_id #{category_str} and publish_time <= '#{Time.now}' and id not in #{not_homework_ids}").order("IF(ISNULL(publish_time),0,1),publish_time DESC, id DESC") + end + end + else + if type != 0 + homeworks = homework_commons.where("course_homework_category_id #{category_str} and homework_commons.homework_type = #{type} and publish_time <= '#{Time.now}'").order("IF(ISNULL(publish_time),0,1),publish_time DESC, id DESC") + else + homeworks = homework_commons.where("course_homework_category_id #{category_str} and publish_time <= '#{Time.now}'").order("IF(ISNULL(publish_time),0,1),publish_time DESC, id DESC") + end + end + hw_ids = homeworks.map{|hw| hw.id} if !homeworks.blank? + index = hw_ids.blank? ? 1 : (hw_ids.length - 1 - hw_ids.index(hw.id).to_i) + return index +end + +def get_hw_status homework_common + str = "" + if homework_common.homework_detail_manual + if homework_common.homework_detail_manual.comment_status == 0 && homework_common.publish_time.nil? + str += '未发布' + elsif homework_common.homework_detail_manual.comment_status == 0 + str += '未发布' + elsif homework_common.homework_detail_manual.comment_status == 1 + if homework_common.anonymous_comment == 0 + str += '未开启匿评' + else + str += '匿评已禁用' + end + if homework_common.end_time >= Time.now + str += '作品提交中' + elsif homework_common.end_time < Time.now && homework_common.anonymous_comment == 1 && User.current.allowed_to?(:as_teacher, homework_common.course) + str += '教师评阅中' + else + str += '作品补交中' + end + elsif homework_common.homework_detail_manual.comment_status == 2 + if homework_common.anonymous_comment == 0 + str += '匿评中' + else + str += '匿评已禁用' + end + str += '教师评阅中' + elsif homework_common.homework_detail_manual.comment_status == 3 + if homework_common.anonymous_comment == 0 + str += '匿评已结束' + else + str += '匿评已禁用' + end + str += '教师评阅中' + end + end + str +end + +def get_cw_status contest_work + str = "" + if contest_work.work_status == 0 && contest_work.publish_time.nil? + str += '挂起' + elsif contest_work.work_status == 0 + str += '未发布' + elsif contest_work.work_status == 1 + if Time.parse(contest_work.end_time.to_s).strftime("%Y-%m-%d") >= Time.now.strftime("%Y-%m-%d") + str += '作品提交中' + else + str += '作品补交中' + end + elsif contest_work.work_status == 2 + str += '提交已截止' + elsif contest_work.work_status == 3 + str += '在线评审中' + elsif contest_work.work_status == 4 + str += '评审已截止' + end + str +end + + +def get_group_member_names user_ids + result = "" + user_ids.each do |user_id| + user = User.where(:id => user_id).first + unless user.nil? + if result != "" + result += "、#{user.show_name}" + else + result += user.show_name + end + end + end + result +end + +def get_contest_group_member_names work + result = "" + unless work.nil? + work.contestant_work_projects.each do |member| + user = User.where(:id => member.user_id).first + unless user.nil? + if result != "" + result += "、#{user.show_name}" + else + result += user.show_name + end + end + end + end + result +end + +def course_syllabus_option syllabus_id = nil + syllabus_members = SyllabusMember.where("user_id = #{User.current.id}") + syllabus_ids = syllabus_members.map{|mem| mem.syllabus_id} + if syllabus_id && !syllabus_ids.include?(syllabus_id) + syllabus_ids << syllabus_id + end + syllabus_ids = syllabus_ids.empty? ? "(-1)" : "(" + syllabus_ids.join(',') + ")" + syllabuses = Syllabus.where("id in #{syllabus_ids}") + type = [] + option1 = [] + option1 << "请选择课程" + option1 << 0 + type << option1 + unless syllabuses.empty? + syllabuses.each do |syllabus| + option = [] + option << syllabus.title + option << syllabus.id + type << option + end + end + type +end + +def create_polls_tiding poll, members + tid_str = "" + if poll.tidings.where(:parent_container_type => "PollPublish", :user_id => poll.course.teachers.map(&:user_id)).count == 0 + poll.course.teachers.find_each do |member| + tid_str += "," if tid_str != "" + tid_str += "(#{member.user_id}, #{poll.user_id}, #{poll.id}, 'Poll', #{poll.id}, 'PollPublish', #{poll.course.id}, 'Course', 0, 'Poll', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')" + end + end + + members.find_each do |student| + tid_str += "," if tid_str != "" + tid_str += "(#{student.user_id}, #{poll.user_id}, #{poll.id}, 'Poll', #{poll.id}, 'PollPublish', #{poll.course_id}, 'Course', 0, 'Poll', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')" + end + + if tid_str != "" + tid_sql = "insert into tidings (user_id, trigger_user_id, container_id, container_type, parent_container_id, parent_container_type, belong_container_id, belong_container_type, viewed, tiding_type, created_at, updated_at) values" + tid_str + ActiveRecord::Base.connection.execute tid_sql + end +end + +def create_polls_list poll + str = "" + poll.course.student.find_each do |student| + str += "," if str != "" + str += "(#{student.user_id},#{poll.id}, 0, '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')" + end + + if str != "" + sql = "insert into poll_users (user_id, poll_id, commit_status, created_at, updated_at) values" + str + ActiveRecord::Base.connection.execute sql + end +end + +def create_exercises_tiding exercise, members + tid_str = "" + if exercise.tidings.where(:parent_container_type => "ExercisePublish", :user_id => exercise.course.teachers.map(&:user_id)).count == 0 + exercise.course.teachers.find_each do |member| + tid_str += "," if tid_str != "" + tid_str += "(#{member.user_id}, #{exercise.user_id}, #{exercise.id}, 'Exercise', #{exercise.id}, 'ExercisePublish', #{exercise.course.id}, 'Course', 0, 'Exercise', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')" + end + end + + members.find_each do |student| + tid_str += "," if tid_str != "" + tid_str += "(#{student.user_id}, #{exercise.user_id}, #{exercise.id}, 'Exercise', #{exercise.id}, 'ExercisePublish', #{exercise.course_id}, 'Course', 0, 'Exercise', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')" + end + + if tid_str != "" + tid_sql = "insert into tidings (user_id, trigger_user_id, container_id, container_type, parent_container_id, parent_container_type, belong_container_id, belong_container_type, viewed, tiding_type, created_at, updated_at) values" + tid_str + ActiveRecord::Base.connection.execute tid_sql + end +end + +def create_exercises_list exercise + str = "" + exercise.course.student.find_each do |student| + str += "," if str != "" + str += "(#{student.user_id}, #{exercise.id}, 0, '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')" + end + + if str != "" + sql = "insert into exercise_users (user_id, exercise_id, commit_status, created_at, updated_at) values" + str + ActiveRecord::Base.connection.execute sql + end +end + +def create_works_tiding homework, members + tid_str = "" + if homework.tidings.where(:parent_container_type => "HomeworkPublish", :user_id => homework.course.teachers.map(&:user_id)).count == 0 + homework.course.teachers.find_each do |member| + tid_str += "," if tid_str != "" + tid_str += "(#{member.user_id}, #{homework.user_id}, #{homework.id}, 'HomeworkCommon', #{homework.id}, 'HomeworkPublish', #{homework.course.id}, 'Course', 0, 'HomeworkCommon', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')" + end + end + members.find_each do |student| + tid_str += "," if tid_str != "" + tid_str += "(#{student.user_id}, #{homework.user_id}, #{homework.id}, 'HomeworkCommon', #{homework.id}, 'HomeworkPublish', #{homework.course_id}, 'Course', 0, 'HomeworkCommon', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')" + end + if tid_str != "" + tid_sql = "insert into tidings (user_id, trigger_user_id, container_id, container_type, parent_container_id, parent_container_type, belong_container_id, belong_container_type, viewed, tiding_type, created_at, updated_at) values" + tid_str + ActiveRecord::Base.connection.execute tid_sql + end +end + +def create_works_list homework + if homework.course.present? && homework.course.student.count > 0 + str = "" + name = homework.name + name_str = name + "的作品提交" + homework.course.student.each do |student| + str += "," if str != "" + str += "('#{name_str}',#{homework.id},#{student.user_id}, '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')" + end + if str != "" + sql = "insert into student_works (name, homework_common_id, user_id, created_at, updated_at) values" + str + ActiveRecord::Base.connection.execute sql + end + end +end + +def add_to_homework_bank_f homework + homework_bank = HomeworkBank.new(:name => homework.name, :description => homework.description, :user_id => User.current.id, :homework_type => homework.homework_type, + :quotes => 1, :is_public => 0, :applicable_syllabus => homework.course.course_list_name, :homework_common_id => homework.id, + :reference_answer => homework.reference_answer, :course_list_id => homework.course.course_list_id) + if homework.homework_type == 2 && homework.homework_detail_programing + homework_bank.language = homework.homework_detail_programing.language + homework.homework_tests.each_with_index do |homework_test| + homework_bank.homework_bank_tests << HomeworkBankTest.new( + input: homework_test.input, + output: homework_test.output + ) + end + homework.homework_samples.each_with_index do |homework_test| + homework_bank.homework_bank_samples << HomeworkBankSample.new( + input: homework_test.input, + output: homework_test.output + ) + end + elsif homework.homework_type == 3 && homework.homework_detail_group + homework_bank.min_num = homework.homework_detail_group.min_num + homework_bank.max_num = homework.homework_detail_group.max_num + homework_bank.base_on_project = homework.homework_detail_group.base_on_project + end + homework.attachments.each do |attachment| + att = attachment.copy + att.container_id = nil + att.container_type = nil + att.author_id = homework_bank.user_id + att.copy_from = attachment.id + att.save + homework_bank.attachments << att + end + homework_bank +end + +# 获取项目动态更新时间 +def get_forge_act_message(act, type) + forge_act = ForgeActivity.where(:forge_act_id => act.id, :forge_act_type => type).first + format_time(forge_act.nil? ? act.created_on : forge_act.try(:updated_at)) +end + +#作业类型 +def homework_type_option + type = [] + option0 = [] + option0 << "请选择作业类型" + option0 << 0 + option1 = [] + option1 << "普通作业" + option1 << 1 + option2 = [] + option2 << "编程作业" + option2 << 2 + option3 = [] + option3 << "分组作业" + option3 << 3 + type << option0 + type << option1 + type << option2 + type << option3 + type +end + +# 竞赛题目类型 +def work_type_option + type = [] + option0 = [] + option0 << "请选择竞赛类型" + option0 << 0 + option1 = [] + option1 << "普通竞赛" + option1 << 1 + # option2 = [] + # option2 << "编程作业" + # option2 << 2 + option3 = [] + option3 << "团队竞赛" + option3 << 3 + type << option0 + type << option1 + #type << option2 + type << option3 + type +end + +# 当前用户可见的某竞赛下的作品数 +def visable_contest_work contest + if User.current.admin? || User.current.admin_of_contest?(contest) + work_num = contest.works.count + else + work_num = contest.works.where("work_status > 0").count + end + work_num +end + +def searchstudent_by_name users, name + mems = [] + if name != "" + name = name.to_s.downcase + users.each do |m| + username = m.lastname.to_s.downcase + m.firstname.to_s.downcase + if(m.login.to_s.downcase.include?(name) || m.user_extensions[:student_id].to_s.downcase.include?(name) || username.include?(name)) + mems << m + end + end + else + mems = users + end + mems +end + +def contest_feedback_count + @contest.journals_for_messages.where('m_parent_id IS NULL').count +end + +def add_reply_adapter obj, options + #modify by nwb + #添加对课程留言的支持 + #留言回复应该不关系其所属的Class,而关心的是其所属的父留言 + case obj.jour_type + when 'Principal' + obj.jour.add_jour(nil, nil, nil, options) + when 'Project' + Project.add_new_jour(nil, nil, obj.jour_id, options) + when 'Course' + Course.add_new_jour(nil, nil, obj.jour_id, options) + when 'Contest' + Contest.add_new_jour(nil, nil, obj.jour_id, options) + #when 'Bid' + # obj.jour.add_jour(nil, nil, nil, options) + #when 'Contest' + # obj.jour.add_jour(nil, nil, obj.jour_id, options) + #when 'Softapplication' + # obj.jour.add_jour(nil, nil, obj.jour_id, options) + #when 'HomeworkAttach' + # obj.jour.add_jour(nil, nil, obj.jour_id, options) + end + # 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 + +def sy_resources syllabus + courses = syllabus.courses.not_deleted + attachments = Attachment.where(:container_type => 'Course', :container_id => courses.map(&:id)) + resources = ResourceBank.where(:id => attachments.map(&:resource_bank_id)) + resources +end + +def sy_homeworks syllabus + courses = syllabus.courses.not_deleted + homeworks = HomeworkCommon.where(:course_id => courses.map(&:id)) + homeworks = HomeworkBank.where(:id => homeworks.map(&:homework_bank_id)) + homeworks +end + +# 课堂学生的评测次数 +def course_eval_count course + Output.find_by_sql("select sum(g.evaluate_count) as evaluating_count from games g inner join + (select myshixun_id from student_works sw inner join homework_commons hc on sw.homework_common_id=hc.id and + sw.myshixun_id !=0 and hc.course_id=#{course.id} and homework_type=4) aa on g.myshixun_id=aa.myshixun_id").first.try(:evaluating_count).to_i +end + +# 可以查看到资源库的资源 +def visable_attachemnts_incourse course + return[] unless course + result = [] + course.attachments.each do |attachment| + if attachment.unified_setting + if attachment.is_public? && attachment.is_publish == 1 || User.current == attachment.author || User.current.allowed_to?(:as_teacher,course) || (User.current.member_of_course?(course) && attachment.is_publish == 1) || User.current.admin? + result << attachment + end + else + if attachment.is_public? && attachment.is_publish == 1 && !User.current.member_of_course?(course) || User.current == attachment.author || User.current.allowed_to?(:as_teacher,course) || User.current.admin? + result << attachment + elsif User.current.member_of_course?(course) && attachment.is_publish == 1 + member = course.members.where(:user_id => User.current.id).first + if member.try(:course_group_id).to_i == 0 && attachment.unified_setting + result << attachment + elsif attachment.attachment_group_settings.where("course_group_id = #{member.try(:course_group_id)} and publish_time > '#{Time.now}'").count == 0 + result << attachment + end + end + end + end + result +end + +def visable_course_poll course, is_teacher + if is_teacher + poll_num = course.polls.count + elsif User.current.member_of_course?(course) + member = course.members.where(:user_id => User.current.id).first + if member.try(:course_group_id).to_i == 0 + poll_num = course.polls.where("publish_time <= '#{Time.now}' and unified_setting = 1").count + else + not_poll_ids = course.poll_group_settings.where("course_group_id = #{member.try(:course_group_id)} and (publish_time > '#{Time.now}' or publish_time is null)") + not_poll_ids = not_poll_ids.blank? ? "(-1)" : "(" + not_poll_ids.map(&:poll_id).join(",") + ")" + poll_num = course.polls.where("publish_time <= '#{Time.now}' and id not in #{not_poll_ids}").count + end + else + poll_num = course.polls.where("publish_time <= '#{Time.now}' and unified_setting = 1").count + end + poll_num +end + +def visable_course_exercise course, is_teacher + if is_teacher + exercise_num = course.exercises.count + elsif User.current.member_of_course?(course) + member = course.members.where(:user_id => User.current.id).first + if member.try(:course_group_id).to_i == 0 + exercise_num = course.exercises.where("publish_time <= '#{Time.now}' and unified_setting = 1").count + else + not_exercise_ids = course.exercise_group_settings.where("course_group_id = #{member.try(:course_group_id)} and (publish_time > '#{Time.now}' or publish_time is null)") + not_exercise_ids = not_exercise_ids.blank? ? "(-1)" : "(" + not_exercise_ids.map(&:exercise_id).join(",") + ")" + exercise_num = course.exercises.where("publish_time <= '#{Time.now}' and id not in #{not_exercise_ids}").count + end + else + exercise_num = course.exercises.where("publish_time <= '#{Time.now}' and unified_setting = 1").count + end + exercise_num +end + +def visable_course_homework course, type=0, is_teacher, category_id + category_str = category_id.nil? ? "is null" : "= #{category_id}" + if is_teacher + if type != 0 + homework_num = course.homework_commons.where("homework_type = #{type} and course_homework_category_id #{category_str}").count + else + homework_num = course.homework_commons.where(:homework_type => [1,3,4]).count + end + elsif User.current.member_of_course?(course) + member = course.members.where(:user_id => User.current.id).first + if member.try(:course_group_id).to_i == 0 + if type != 0 + homework_num = course.homework_commons.where("homework_commons.homework_type = #{type} and publish_time <= '#{Time.now}' and unified_setting = 1 and course_homework_category_id #{category_str}").count + else + homework_num = course.homework_commons.where("homework_type in (1, 3, 4) and publish_time <= '#{Time.now}' and unified_setting = 1").count + end + else + not_homework_ids = course.homework_group_settings.where("course_group_id = #{member.try(:course_group_id)} and (publish_time > '#{Time.now}' or publish_time is null)") + not_homework_ids = not_homework_ids.blank? ? "(-1)" : "(" + not_homework_ids.map(&:homework_common_id).join(",") + ")" + if type != 0 + homework_num = course.homework_commons.where("homework_commons.homework_type = #{type} and publish_time <= '#{Time.now}' and id not in #{not_homework_ids} and course_homework_category_id #{category_str}").count + else + homework_num = course.homework_commons.where("homework_type in (1, 3, 4) and publish_time <= '#{Time.now}' and id not in #{not_homework_ids}").count + end + end + else + if type != 0 + homework_num = course.homework_commons.where("homework_type = #{type} and publish_time <= '#{Time.now}' and unified_setting = 1 and course_homework_category_id #{category_str}").count + else + homework_num = course.homework_commons.where("homework_type in (1, 3, 4) and publish_time <= '#{Time.now}' and unified_setting = 1").count + end + end + homework_num +end + +def visible_task_count course, is_teacher + task_count = 0 + if is_teacher + task_count = course.graduation_tasks.count + else + task_count = course.graduation_tasks.where("publish_time <= '#{Time.now}'").count + end + task_count +end + +#成绩计算 +def set_final_score homework,student_work + if homework && homework.homework_detail_manual && !student_work.ultimate_score + if !homework.homework_detail_manual.final_mode + tea_ass_proportion = homework.homework_detail_manual.ta_proportion + tea_proportion = homework.homework_detail_manual.te_proportion + if homework.homework_type != 2 #非编程作业 + if student_work.teacher_score + if student_work.teaching_asistant_score.nil? + if student_work.student_score.nil? + student_work.final_score = student_work.teacher_score + else + te_proportion = tea_proportion + tea_ass_proportion / 2 + final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{te_proportion}") + final_s_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{te_proportion}")) + final_score = final_te_score + final_s_score + student_work.final_score = format("%.2f",final_score.to_f) + end + else + if student_work.student_score.nil? + te_proportion = tea_proportion + (1.0 - tea_proportion - tea_ass_proportion) / 2 + final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{te_proportion}") + final_ta_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{te_proportion}")) + final_score = final_te_score + final_ta_score + student_work.final_score = format("%.2f",final_score.to_f) + else + final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{tea_proportion}") + final_ta_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * BigDecimal.new("#{tea_ass_proportion}") + final_s_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{tea_proportion}") - BigDecimal.new("#{tea_ass_proportion}")) + final_score = final_te_score + final_ta_score + final_s_score + student_work.final_score = format("%.2f",final_score.to_f) + end + end + else + if student_work.teaching_asistant_score.nil? + student_work.final_score = student_work.student_score + elsif student_work.student_score.nil? + student_work.final_score = student_work.teaching_asistant_score + else + ta_proportion = tea_ass_proportion + tea_proportion / 2 + final_ta_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * BigDecimal.new("#{ta_proportion}") + final_s_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}")) + final_score = final_ta_score + final_s_score + student_work.final_score = format("%.2f",final_score.to_f) + end + end + elsif homework.homework_type == 2 && homework.homework_detail_programing #编程作业-----设定:系统评分必定不为空 + #if homework.teacher_priority == 1 #教师优先 + sy_proportion = homework.homework_detail_programing.ta_proportion + if student_work.teacher_score + if student_work.teaching_asistant_score.nil? #教辅未评分 + if student_work.student_score.nil? + ta_proportion = tea_proportion + (1 - tea_proportion - sy_proportion) / 2 + final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{ta_proportion}") + final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}")) + final_score = final_sy_score + final_te_score + student_work.final_score = format("%.2f",final_score.to_f) + else + rest_proportion = tea_ass_proportion / 3 + final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{sy_proportion + rest_proportion}") + final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{tea_proportion + rest_proportion}") + final_st_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{sy_proportion + rest_proportion}") - BigDecimal.new("#{tea_proportion + rest_proportion}")) + final_score = final_sy_score + final_te_score + final_st_score + student_work.final_score = format("%.2f",final_score.to_f) + end + elsif student_work.student_score.nil? #学生未评分 + rest_proportion = (1 - tea_proportion - sy_proportion - tea_ass_proportion) / 3 + final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{sy_proportion + rest_proportion}") + final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{tea_proportion + rest_proportion}") + final_ta_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{sy_proportion + rest_proportion}") - BigDecimal.new("#{tea_proportion + rest_proportion}")) + final_score = final_sy_score + final_te_score + final_ta_score + student_work.final_score = format("%.2f",final_score.to_f) + else + final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{sy_proportion}") + final_te_score = BigDecimal.new("#{student_work.teacher_score}") * BigDecimal.new("#{tea_proportion}") + final_ta_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * BigDecimal.new("#{tea_ass_proportion}") + final_s_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{sy_proportion}") - BigDecimal.new("#{tea_proportion}") - BigDecimal.new("#{tea_ass_proportion}")) + final_score = final_sy_score + final_ta_score + final_te_score + final_st_score + student_work.final_score = format("%.2f",final_score.to_f) + end + else + if student_work.teaching_asistant_score.nil? #教辅未评分 + if student_work.student_score.nil? + student_work.final_score = student_work.system_score + else + ta_proportion = sy_proportion + (tea_ass_proportion + tea_proportion) / 2 + final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{ta_proportion}") + final_st_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}")) + final_score = final_sy_score + final_st_score + student_work.final_score = format("%.2f",final_score.to_f) + end + elsif student_work.student_score.nil? #学生未评分 + if student_work.teaching_asistant_score.nil? + student_work.final_score = student_work.system_score + else + ta_proportion = sy_proportion + (1.0 - tea_ass_proportion - sy_proportion) / 2 + final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{ta_proportion}") + final_ts_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{ta_proportion}")) + final_score = final_sy_score + final_ts_score + student_work.final_score = format("%.2f",final_score.to_f) + end + else + rest_proportion = tea_proportion / 3 + final_sy_score = BigDecimal.new("#{student_work.system_score || 0}") * BigDecimal.new("#{sy_proportion + rest_proportion}") + final_ts_score = BigDecimal.new("#{student_work.teaching_asistant_score}") * BigDecimal.new("#{tea_ass_proportion + rest_proportion}") + final_st_score = BigDecimal.new("#{student_work.student_score}") * (BigDecimal.new('1.0') - BigDecimal.new("#{sy_proportion + rest_proportion}") - BigDecimal.new("#{tea_ass_proportion + rest_proportion}")) + final_score = final_sy_score + final_ts_score + final_st_score + student_work.final_score = format("%.2f",final_score.to_f) + end + end + end + else + if homework.homework_type != 2 + if student_work.teacher_score + student_work.final_score = student_work.teacher_score + else + if student_work.teaching_asistant_score.nil? + student_work.final_score = student_work.student_score + else + student_work.final_score = student_work.teaching_asistant_score + end + end + elsif homework.homework_type == 2 && homework.homework_detail_programing + if student_work.teacher_score + student_work.final_score = student_work.teacher_score + else + if student_work.teaching_asistant_score + student_work.final_score = student_work.teaching_asistant_score + else + if student_work.system_score + student_work.final_score = student_work.system_score + else + student_work.final_score = student_work.student_score + end + end + end + end + end + if student_work.final_score + score = student_work.final_score - student_work.absence_penalty - student_work.late_penalty - student_work.appeal_penalty + student_work.work_score = format("%.2f",(score < 0 ? 0 : score).to_f) if score + else + student_work.work_score = nil + end + end +end + +# 计算实训作品学生的效率分 +def update_student_eff_score homework + if homework.work_efficiency && homework.max_efficiency != 0 + homework.student_works.where("compelete_status != 0").each do |student_work| + eff_score = student_work.efficiency / homework.max_efficiency * homework.eff_score + student_work.eff_score = format("%.2f", eff_score) + unless student_work.ultimate_score + work_score = student_work.final_score + student_work.eff_score - student_work.late_penalty + student_work.work_score = format("%.2f", work_score < 0 ? 0 : work_score) + end + student_work.save + end + else + homework.student_works.where("compelete_status != 0").each do |student_work| + student_work.eff_score = 0 + unless student_work.ultimate_score + work_score = student_work.final_score + student_work.eff_score - student_work.late_penalty + student_work.work_score = format("%.2f", work_score < 0 ? 0 : work_score) + end + student_work.save + end + end +end + +# 实训作业的评分 +def set_shixun_final_score student_work, answer_open_evaluation, homework_challenge_settings + unless student_work.work_status == 0 + myshixun = student_work.myshixun + final_score = 0 + compelete = true + max_endtime = "" + user_total_score = 0 + pass_consume_time = 0 + homework_challenge_settings.each do |setting| + game = myshixun.games.where(:challenge_id => setting.challenge_id, :status => 2).first + unless game.nil? + pass_consume_time += (game.cost_time / 60.0).to_f + user_total_score += game.final_score.to_i < 0 ? 0 : game.challenge.score.to_i + adjust_score = student_work.challenge_work_scores.where(:challenge_id => setting.challenge_id).last + final_score += adjust_score.present? ? adjust_score.score : (answer_open_evaluation ? setting.score : (game.final_score >= 0 ? setting.score : 0)) + max_endtime = max_endtime == "" ? game.end_time : (game.end_time > max_endtime ? game.end_time : max_endtime) + else + compelete = false + end + end + + efficiency = (pass_consume_time == 0 ? 0 : Math.log((user_total_score / pass_consume_time.to_f) + 1.0)) + student_work.efficiency = efficiency < 0 ? 0 : format("%.2f", efficiency) + + if compelete && max_endtime != "" + homework = student_work.homework_common + member = Member.find_by_sql("select course_group_id from members where course_id = #{homework.course_id} and user_id = #{student_work.user_id}").first + setting_time = homework_group_setting homework, member.try(:course_group_id) + if setting_time.publish_time.present? && setting_time.end_time.present? + if max_endtime < setting_time.publish_time + student_work.compelete_status = 2 + else + if max_endtime < setting_time.end_time || (homework.allow_late && (homework.course.end_date.nil? || max_endtime < homework.course.end_date.end_of_day)) + student_work.compelete_status = 1 + student_work.cost_time = max_endtime.to_i - setting_time.publish_time.to_i + else + student_work.compelete_status = 0 + end + end + end + + if homework.work_efficiency + if homework.max_efficiency < student_work.efficiency + homework.max_efficiency = student_work.efficiency + homework.update_column("max_efficiency", homework.max_efficiency) + end + eff_score = homework.max_efficiency == 0 ? 0 : student_work.efficiency / homework.max_efficiency * homework.eff_score + student_work.eff_score = format("%.2f", eff_score) + else + student_work.eff_score = 0 + end + elsif !compelete + student_work.compelete_status = 0 + end + student_work.final_score = format("%.2f", final_score.to_f) + score = student_work.final_score + student_work.eff_score - student_work.late_penalty + student_work.work_score = format("%.2f", score < 0 ? 0 : score.to_f) unless student_work.ultimate_score + student_work.save! + end +end + +# 用户评测时更新实训作业成绩 +def update_myshixun_work_score myshixun + student_works = myshixun.student_works + #logger.info("#############student_works_count: #{student_works.count}") + if student_works.count > 0 + student_works.each do |work| + homework = work.homework_common + member = Member.find_by_sql("select course_group_id from members where course_id = #{homework.course_id} and user_id = #{User.current.id}").first + #logger.info("#############member_course_group_id: #{member.try(:course_group_id)}") + setting_time = homework_group_setting homework, member.try(:course_group_id) + if setting_time.end_time.present? && (setting_time.end_time > Time.now || (homework.allow_late && !homework.course.is_end)) + #logger.info("#############setting_time: #{setting_time.end_time}") + + user_total_score = 0 + pass_consume_time = 0 + final_score = 0 + homework.homework_challenge_settings.each do |setting| + game = myshixun.games.where(:challenge_id => setting.challenge_id, :status => 2).first + unless game.nil? + pass_consume_time += (game.cost_time / 60.0).to_f + user_total_score += game.final_score.to_i < 0 ? 0 : game.challenge.score.to_i + adjust_score = work.challenge_work_scores.where(:challenge_id => setting.challenge_id).last + final_score += adjust_score.present? ? adjust_score.score : (homework.homework_detail_manual.answer_open_evaluation ? setting.score : (game.final_score >= 0 ? setting.score : 0)) + end + end + if work.work_status == 0 + is_complete = myshixun.is_complete? && (myshixun.done_time < setting_time.end_time) + work.work_status = setting_time.end_time > Time.now ? 1 : (is_complete ? 1 : 2) + work.late_penalty = setting_time.end_time > Time.now ? 0 : (is_complete ? 0 : homework.late_penalty) + work.commit_time = myshixun.created_at > setting_time.publish_time ? setting_time.publish_time : myshixun.created_at + work.myshixun_id = myshixun.id + end + + efficiency = (pass_consume_time == 0 ? 0 : Math.log((user_total_score / pass_consume_time.to_f) + 1.0)) + work.efficiency = format("%.2f", efficiency) + + games = myshixun.games.where(:challenge_id => homework.homework_challenge_settings.map(&:challenge_id)) + myshixun_endtime = games.select{|game| game.status == 2}.size == games.size ? games.map(&:end_time).max : nil + if myshixun_endtime.present? + min_efficiency_changed = min_efficiency_changed.present? ? min_efficiency_changed : false + work.compelete_status = 1 + work.cost_time = myshixun_endtime.to_i - setting_time.publish_time.to_i + + # 计算作品的效率分(已完成才计算) + if homework.work_efficiency + # 如果作业的最大效率值有变更则更新所有作品的效率分 + if homework.max_efficiency < work.efficiency + homework.max_efficiency = work.efficiency + homework.update_column("max_efficiency", homework.max_efficiency) + update_student_eff_score homework + end + eff_score = homework.max_efficiency == 0 ? 0 : work.efficiency / homework.max_efficiency * homework.eff_score + work.eff_score = format("%.2f", eff_score) + end + end + + work.update_time = Time.now + work.final_score = final_score + score = work.final_score + work.eff_score - work.late_penalty + work.work_score = format("%.2f",(score < 0 ? 0 : score).to_f) unless work.ultimate_score + #logger.info("#############work_score: #{score}") + work.save! + end + end + end +end + +# 用户开启实训时更新作品状态 +def update_myshixun_work_status myshixun + student_works = StudentWork.find_by_sql("SELECT sw.* FROM student_works sw, homework_commons_shixuns hcs WHERE sw.user_id = #{User.current.id} AND sw.`homework_common_id` = hcs.`homework_common_id` AND hcs.`shixun_id` = #{myshixun.shixun_id} and sw.work_status = 0") + logger.info("#############student_works_count: #{student_works.count}") + if student_works.count > 0 + student_works.each do |work| + homework = work.homework_common + member = Member.find_by_sql("select course_group_id from members where course_id = #{homework.course_id} and user_id = #{User.current.id}").first + setting_time = homework_group_setting homework, member.try(:course_group_id) + if setting_time.end_time.present? && (setting_time.end_time > Time.now || (homework.allow_late && !homework.course.is_end)) + logger.info("#############setting_time: #{setting_time.end_time}") + work.work_status = setting_time.end_time > Time.now ? 1 : 2 + work.late_penalty = setting_time.end_time > Time.now ? 0 : homework.late_penalty + work.update_time = Time.now + work.commit_time = Time.now + work.myshixun_id = myshixun.id + work.save + end + end + end +end + +def quote_resource_bank resource, course + atta = Attachment.new(:filename => resource.filename, :disk_filename => resource.disk_filename, :filesize => resource.filesize, :digest => resource.digest, :downloads => 0, :is_publish => 0, + :author_id => User.current.id, :description => resource.description, :disk_directory => resource.disk_directory, :is_public => 0, :copy_from => resource.copy_from.nil? ? resource.id : resource.copy_from, + :quotes => 0, :resource_bank_id => resource.id, :created_on => Time.now, :content_type =>resource.content_type) + if course.attachments << atta + # 更新引用次数 + quotes = resource.quotes.to_i + 1 + resource.update_attribute(:quotes, quotes) + end +end + +def quote_homework_bank homework, course + new_homework = HomeworkCommon.new(:name => homework.name, :user_id => User.current.id, :description => homework.description, :homework_type => homework.homework_type, :late_penalty => 5, + :course_id => course.id, :teacher_priority => 1, :anonymous_comment => 1, :quotes => 0, :is_open => 0, :homework_bank_id => homework.id, :score_open => 1, + :anonymous_appeal => 0, :is_public => 0, :reference_answer => homework.reference_answer, :answer_public => 1, :allow_late => 1) + + new_homework.homework_detail_manual = HomeworkDetailManual.new + new_homework_detail_manual = new_homework.homework_detail_manual + new_homework_detail_manual.te_proportion = 1.0 + new_homework_detail_manual.ta_proportion = 0 + new_homework_detail_manual.comment_status = 0 + + new_homework_detail_manual.evaluation_num = 0 + new_homework_detail_manual.absence_penalty = 0 + + if new_homework.homework_type == 2 + new_homework.homework_detail_programing = HomeworkDetailPrograming.new + new_homework.homework_detail_programing.ta_proportion = 0 + new_homework.homework_detail_programing.language = homework.language + homework.homework_bank_tests.each_with_index do |homework_test| + new_homework.homework_tests << HomeworkTest.new( + input: homework_test.input, + output: homework_test.output + ) + end + homework.homework_bank_samples.each_with_index do |homework_test| + new_homework.homework_samples << HomeworkSample.new( + input: homework_test.input, + output: homework_test.output + ) + end + end + + if new_homework.homework_type == 3 + new_homework.homework_detail_group = HomeworkDetailGroup.new + new_homework.homework_detail_group.min_num = homework.min_num + new_homework.homework_detail_group.max_num = homework.max_num + new_homework.homework_detail_group.base_on_project = homework.base_on_project + end + + homework.attachments.each do |attachment| + att = attachment.copy + att.container_id = nil + att.container_type = nil + att.author_id = homework.user_id + att.copy_from = attachment.id + att.save + new_homework.attachments << att + end + + if new_homework.save + if new_homework.homework_type == 4 + HomeworkCommonsShixuns.create(:homework_common_id => new_homework.id, :shixun_id => homework.homework_bank_shixun.shixun_id) + end + new_homework_detail_manual.save if new_homework_detail_manual + new_homework.homework_detail_programing.save if new_homework.homework_detail_programing + new_homework.homework_detail_group.save if new_homework.homework_detail_group + create_works_list new_homework + + homework.update_column(:quotes, homework.quotes+1) + QuestionBank.where(:container_id => homework.id, :container_type => ["Common", "Shixun", "Group"]).update_all(:quotes => homework.quotes) + end + return new_homework +end + +def quote_exercise_bank exercise, course + new_exercise = Exercise.new(:exercise_name => exercise.name, :exercise_description => exercise.description, :user_id => User.current.id, :is_public => 0, + :exercise_status => 1, :show_result => 1, :course_id => course.id, :time => -1, :exercise_bank_id => exercise.id) + + exercise.exercise_bank_questions.each do |q| + option = { + :question_title => q[:question_title], + :question_type => q[:question_type] || 1, + :question_number => q[:question_number], + :question_score => q[:question_score], + :shixun_id => q[:shixun_id] + } + exercise_question = new_exercise.exercise_questions.new option + + if q.question_type != 5 + for i in 1..q.exercise_bank_choices.count + choice_option = { + :choice_position => i, + :choice_text => q.exercise_bank_choices[i-1][:choice_text] + } + exercise_question.exercise_choices.new choice_option + end + + for i in 1..q.exercise_bank_standard_answers.count + standard_answer_option = { + :exercise_choice_id => q.exercise_bank_standard_answers[i-1][:exercise_bank_choice_id], + :answer_text => q.exercise_bank_standard_answers[i-1][:answer_text] + } + exercise_question.exercise_standard_answers.new standard_answer_option + end + else + for i in 1..q.exercise_bank_shixun_challenges.count + challenge_option = { + :position => i, + :challenge_id => q.exercise_bank_shixun_challenges[i-1][:challenge_id], + :shixun_id => q.exercise_bank_shixun_challenges[i-1][:shixun_id], + :question_score => q.exercise_bank_shixun_challenges[i-1][:question_score] + } + exercise_question.exercise_shixun_challenges.new challenge_option + end + end + end + if new_exercise.save + create_exercises_list new_exercise + exercise.update_column(:quotes, exercise.quotes+1) + QuestionBank.where(:container_id => exercise.id, :container_type => "Exercise").update_all(:quotes => exercise.quotes) + end + return new_exercise +end + +def quote_poll_bank poll, course + new_poll = Poll.new(:polls_name => poll.name, :polls_description => poll.description, :user_id => User.current.id, :is_public => 0, + :polls_status => 1, :show_result => 1, :polls_type => 'Course', :course_id => course.id, :exercise_bank_id => poll.id) + + poll.exercise_bank_questions.each do |q| + option = { + :question_title => q[:question_title], + :question_type => q[:question_type] || 1, + :is_necessary => q[:is_necessary], + :question_number => q[:question_number], + :max_choices => q[:max_choices], + :min_choices => q[:min_choices] + } + poll_question = new_poll.poll_questions.new option + + for i in 1..q.exercise_bank_choices.count + choice_option = { + :answer_position => i, + :answer_text => q.exercise_bank_choices[i-1][:choice_text] + } + poll_question.poll_answers.new choice_option + end + end + if new_poll.save + create_polls_list new_poll + poll.update_column(:quotes, poll.quotes+1) + QuestionBank.where(:container_id => poll.id, :container_type => "Poll").update_all(:quotes => poll.quotes) + end + return new_poll +end + +def major_level_option + content = [] + option0 = [] + option0 << "选择课程所属专业层级" + option0 << 0 + option1 = [] + option1 << "专科" + option1 << 3 + option2 = [] + option2 << "本科" + option2 << 2 + option3 = [] + option3 << "研究生" + option3 << 1 + content << option0 + content << option1 + content << option2 + content << option3 + content +end + +def discipline_category_option major_level = 3 + content = [] + option0 = [] + option0 << "选择课程所属学科门类" + option0 << 0 + content << option0 + DisciplineCategory.where(:major_level => major_level).each do |dis| + option = [] + option << dis.name.to_s + option << dis.id + content << option + end + content +end + +def first_level_discipline_option disc_ca = 27 + content = [] + option0 = [] + option0 << "选择课程所属一级学科" + option0 << 0 + content << option0 + FirstLevelDiscipline.where(:discipline_category_id => disc_ca).each do |fir_dis| + option = [] + option << fir_dis.name.to_s + option << fir_dis.id + content << option + end + content +end + +def syllabus_major_option fir_dis = 213 + content = [] + option0 = [] + option0 << "选择课程所属专业" + option0 << 0 + content << option0 + Major.where(:first_level_discipline_id => fir_dis).each do |major| + option = [] + option << major.name.to_s + option << major.id + content << option + end + content +end + +def convert_to_char(str) + result = "" + length = str.length + unless str.nil? + if length === 1 + result += (str.to_i + 64).chr + return result + elsif length > 1 + for i in 0...length + result += (str[i].to_i + 64).chr + end + return result + end + end + return result +end + +def convert_to_chi_num num + result = "" + case num.to_i + when 1 + result = '一' + when 2 + result = '二' + when 3 + result = '三' + when 4 + result = '四' + when 5 + result = '五' + when 6 + result = '六' + when 7 + result = '七' + when 8 + result = '八' + when 9 + result = '九' + end + return result +end + +#根据条件过滤作业结果 +def search_work_member works,name + if name == "" + select_works = works + else + name = name.downcase + select_works = works.select{ |work| work.user.user_extensions[:student_id].to_s.downcase.include?(name) || (work.user[:lastname].to_s.downcase + work.user[:firstname].to_s.downcase).include?(name) + } + end + select_works +end + +# 作业的分班设置时间 +def homework_group_setting homework, group_id + setting = nil + if homework.homework_group_settings.where(:course_group_id => group_id).first + setting = homework.homework_group_settings.where(:course_group_id => group_id).first + else + setting = homework + end + setting +end + +# 试卷的分班设置时间 +def exercise_group_setting exercise, group + setting = nil + if exercise.exercise_group_settings.where(:course_group_id => group.try(:id)).first + setting = exercise.exercise_group_settings.where(:course_group_id => group.id).first + else + setting = exercise + end + setting +end + +# 问卷的分班设置时间 +def poll_group_setting poll, group + setting = nil + if poll.poll_group_settings.where(:course_group_id => group.try(:id)).first + setting = poll.poll_group_settings.where(:course_group_id => group.id).first + else + setting = poll + end + setting +end + +# 资源的分班设置时间 +def attacment_group_setting attachment, group + setting = nil + if attachment.attachment_group_settings.where(:course_group_id => group.try(:id)).first + setting = attachment.attachment_group_settings.where(:course_group_id => group.id).first + else + setting = attachment + end + setting +end + +#统计答题百分比,统计结果保留两位小数 +def statistics_result_percentage(e, t) + e = e.to_f + t = t.to_f + t == 0 ? 0 : format("%.1f", e*100/t) +end + +def subject_data subject + result = {} + subject_choices = 0 + subject_shixuns = 0 + subject_score = 0 + subject.stage_shixuns.each do |stage_shixun| + shixun = stage_shixun.shixun + subject_choices += shixun.challenges.where(:st => [1, 2]).count + subject_shixuns += shixun.challenges.where(:st => 0).count + subject_score += shixun.shixun_score + end + result[:subject_choices] = subject_choices + result[:subject_shixuns] = subject_shixuns + result[:subject_score] = subject_score + result +end + + +def tiding_url tiding + case tiding.container_type + when "ApplyUserAuthentication" + if tiding.tiding_type == "Apply" + tiding.container.auth_type == 1 ? identity_authentication_managements_path : professional_authentication_managements_path + else + tiding.container.auth_type == 1 ? authentication_account_path : professional_certification_account_path + end + when "CancelUserAuthentication" + authentication_account_path + when "CancelUserProCertification" + professional_certification_account_path + when "ApplyAddDepartment" + tiding.tiding_type == "Apply" ? depart_managements_path() : my_account_path() + when "ApplyAddSchools" + tiding.tiding_type == "Apply" ? unit_managements_path() : my_account_path() + when "ApplyAction" + tiding.tiding_type == "System" ? (tiding.parent_container_type == "ApplyShixun" ? shixun_path(Shixun.find(tiding.parent_container_id).identifier):(tiding.parent_container_type == "TrialAuthorization" ? user_path(tiding.user_id) : subject_path(tiding.parent_container_id))):(tiding.parent_container_type == "ApplyShixun" ? shixun_authorization_managements_path():(tiding.parent_container_type == "TrialAuthorization"? trial_authorization_managements_path(): subject_authorization_managements_path())) + when 'JoinCourse' + course_path(tiding.container_id, :type => "JoinCourse") + when 'StudentJoinCourse', 'DealCourse', 'TeacherJoinCourse' + course_path(tiding.container_id) + when 'Course', 'ArchiveCourse' + course_path(tiding.container_id) + when 'Shixun' + '/shixuns/' + tiding.container.identifier + when 'Subject' + '/paths/' + tiding.container_id.to_s + when 'JournalsForMessage' + case tiding.parent_container_type + when "Principal" + feedback_path(tiding.parent_container_id) + when "HomeworkCommon" + student_work_index_path(:homework => tiding.parent_container_id, :tab => 2) + when "GraduationTopic" + graduation_topic_path(tiding.parent_container_id, :tab => 2) + when "StudentWorksScore" + student_work_path(:id => tiding.container.try(:jour).try(:student_work_id)) + end + when 'Message' + board_message_path(tiding.container.board_id, tiding.parent_container_id) + when 'Memo' + forum_path(tiding.parent_container_id) + when 'Watcher' + user_path(tiding.trigger_user_id) + when 'PraiseTread' + try = tiding.parent_container_type.constantize + object = try.find(tiding.parent_container_id) + case tiding.parent_container_type + when "Challenge" + myshixun_id = Myshixun.where(:user_id => tiding.trigger_user_id, :shixun_id => Challenge.find(tiding.parent_container_id).shixun_id).first + myshixun_game_path(Game.where(:myshixun_id => myshixun_id.id, :challenge_id => tiding.parent_container_id).first, :myshixun_id => myshixun_id) + when "Discuss" + myshixun_game_path(object.user_game, :myshixun_id => object.user_myshixun) + when "Message" + object.parent.present? ? board_message_path(object.board_id, object.root_id) : board_message_path(object.board_id, object) + when "Memo" + object.parent.present? ? forum_path(object.root_id) : forum_path(object) + when "JournalsForMessage" + case object.jour_type + when "Principal" + feedback_path(object.jour_id) + when "HomeworkCommon" + student_work_index_path(:homework => object.jour_id, :tab => 2) + when "StudentWorksScore" + student_work_path(:id => object.try(:jour).try(:student_work_id)) + end + when "HomeworkCommon" + student_work_index_path(:homework => tiding.parent_container_id, :tab => 2) + when "Issue" + issue_path(tiding.parent_container_id) + when "Journal" + issue_path(object.journalized_id) + end + when 'Discuss' + shixun_discuss_shixun_path(tiding.container.dis) + when 'Grade' + user_grade_user_path(User.current) + when 'JoinProject' + project_path(tiding.container_id, :type => "applied_project") + when 'ReporterJoinProject', 'DealProject', 'ManagerJoinProject' + project_path(tiding.container_id) + when 'Poll' + case tiding.parent_container_type + when 'CommitPoll' + student_poll_list_poll_path(tiding.container, :tab => 2) + else + student_poll_list_poll_path(tiding.container) + end + when 'Exercise' + case tiding.parent_container_type + when 'CommitExercise', 'ExerciseScore' + show_student_result_exercise_path(tiding.container,:user_id => tiding.trigger_user_id) + else + student_exercise_list_exercise_path(tiding.container) + end + when 'StudentGraduationTopic', 'DealStudentTopicSelect' + graduation_topic_path(tiding.parent_container_id) + when 'GraduationTask' + graduation_task_path(tiding.container_id) + when 'GraduationWork' + graduation_work_path(tiding.container_id) + when 'GraduationWorkScore' + graduation_work_path(tiding.parent_container_id) + when 'HomeworkCommon' + case tiding.parent_container_type + when 'AnonymousCommentFail' + student_work_index_path(:homework => tiding.container_id, :tab => 4) + when 'HomeworkPublish' + student_work_index_path(:homework => tiding.container_id, :tab => 2) + when 'AnonymousAppeal' + work = tiding.container.student_works(:user_id => User.current.id).first + work.present? ? student_work_path(work.try(:id)) : "javascript:void(0)" + else + student_work_index_path(:homework => tiding.container_id) + end + when 'StudentWork' + student_work_path(tiding.container_id) + when 'StudentWorksScore', 'StudentWorksScoresAppeal' + student_work_path(tiding.parent_container_id) + when 'ChallengeWorkScore' + homework_common_path(tiding.container.try(:student_work).try(:homework_common_id)) + when 'SendMessage' + mirror_repository_managements_path + when 'Journal' + issue_path(tiding.parent_container_id) + when 'Issue' + issue_path(tiding.container_id) + when 'PullRequest' + project_pull_requests_path(tiding.parent_container_id) + when 'Department' + my_account_path + end +end + +def create_shixun_homework_cha_setting homework, shixun + if shixun.present? + sum_score = 0 + total_score = 100.0 - homework.eff_score + shixun.challenges.each_with_index do |challeng, index| + if index < shixun.challenges.length - 1 + score = ((total_score / shixun.challenges.length) * total_score).floor / total_score + sum_score += score + else + score = total_score - sum_score + end + HomeworkChallengeSetting.create(:homework_common_id => homework.id, :challenge_id => challeng.id, :shixun_id => shixun.id, :score => score) + end + end +end diff --git a/app/helpers/applied_project_helper.rb b/app/helpers/applied_project_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/apply_project_masters_helper.rb b/app/helpers/apply_project_masters_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/article_homepages_helper.rb b/app/helpers/article_homepages_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/attachments_helper.rb b/app/helpers/attachments_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/auth_sources_helper.rb b/app/helpers/auth_sources_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/avatar_helper.rb b/app/helpers/avatar_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/bids_helper.rb b/app/helpers/bids_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/blog_comments_helper.rb b/app/helpers/blog_comments_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/blogs_helper.rb b/app/helpers/blogs_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/boards_helper.rb b/app/helpers/boards_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/calendars_helper.rb b/app/helpers/calendars_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/careers_helper.rb b/app/helpers/careers_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/categories_helper.rb b/app/helpers/categories_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/challenges_helper.rb b/app/helpers/challenges_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/codes_helper.rb b/app/helpers/codes_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/colleges_helper.rb b/app/helpers/colleges_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/competition_teams_helper.rb b/app/helpers/competition_teams_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/competitions_helper.rb b/app/helpers/competitions_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/contest_members_helper.rb b/app/helpers/contest_members_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/contestant_works_helper.rb b/app/helpers/contestant_works_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/contests_helper.rb b/app/helpers/contests_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/context_menus_helper.rb b/app/helpers/context_menus_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/cooperates_helper.rb b/app/helpers/cooperates_helper.rb deleted file mode 100644 index 549246a0..00000000 --- a/app/helpers/cooperates_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module CooperatesHelper -end diff --git a/app/helpers/cooperation_helper.rb b/app/helpers/cooperation_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/courses_helper.rb b/app/helpers/courses_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/custom_fields_helper.rb b/app/helpers/custom_fields_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/debates_helper.rb b/app/helpers/debates_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/department_helper.rb b/app/helpers/department_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/discuss_demos_helper.rb b/app/helpers/discuss_demos_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/discusses_helper.rb b/app/helpers/discusses_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/documents_helper.rb b/app/helpers/documents_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/ec_course_achievement_methods_helper.rb b/app/helpers/ec_course_achievement_methods_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/ec_course_evaluation_subitems_helper.rb b/app/helpers/ec_course_evaluation_subitems_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/ec_course_evaluations_helper.rb b/app/helpers/ec_course_evaluations_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/ec_course_supports_helper.rb b/app/helpers/ec_course_supports_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/ec_course_targets_helper.rb b/app/helpers/ec_course_targets_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/ec_courses_helper.rb b/app/helpers/ec_courses_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/ec_graduation_requirements_helper.rb b/app/helpers/ec_graduation_requirements_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/ec_graduation_subitems_helper.rb b/app/helpers/ec_graduation_subitems_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/ec_graduations_helper.rb b/app/helpers/ec_graduations_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/ec_helper.rb b/app/helpers/ec_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/ec_major_schools_helper.rb b/app/helpers/ec_major_schools_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/ec_majors_helper.rb b/app/helpers/ec_majors_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/ec_training_objectives_helper.rb b/app/helpers/ec_training_objectives_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/ec_training_subitems_helper.rb b/app/helpers/ec_training_subitems_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/ec_years_helper.rb b/app/helpers/ec_years_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/ecloud_helper.rb b/app/helpers/ecloud_helper.rb deleted file mode 100644 index 3a825b80..00000000 --- a/app/helpers/ecloud_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module EcloudHelper -end diff --git a/app/helpers/ecs_helper.rb b/app/helpers/ecs_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/enumerations_helper.rb b/app/helpers/enumerations_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/exercise_bank_helper.rb b/app/helpers/exercise_bank_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/exercise_helper.rb b/app/helpers/exercise_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/files_helper.rb b/app/helpers/files_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/forums_helper.rb b/app/helpers/forums_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/games_helper.rb b/app/helpers/games_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/gantt_helper.rb b/app/helpers/gantt_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/gitlab_helper.rb b/app/helpers/gitlab_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/graduation_tasks_helper.rb b/app/helpers/graduation_tasks_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/graduation_topics_helper.rb b/app/helpers/graduation_topics_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/graduation_works_helper.rb b/app/helpers/graduation_works_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/groups_helper.rb b/app/helpers/groups_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/homepages_helper.rb b/app/helpers/homepages_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/homework_attach_helper.rb b/app/helpers/homework_attach_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/homework_bank_helper.rb b/app/helpers/homework_bank_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/homework_common_helper.rb b/app/helpers/homework_common_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/homework_users_helper.rb b/app/helpers/homework_users_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/iframes_helper.rb b/app/helpers/iframes_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/issue_relations_helper.rb b/app/helpers/issue_relations_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/issue_statuses_helper.rb b/app/helpers/issue_statuses_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/journals_helper.rb b/app/helpers/journals_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/kubernete_helper.rb b/app/helpers/kubernete_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/local_settings_helper.rb b/app/helpers/local_settings_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/logger_helper.rb b/app/helpers/logger_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/mail_handler_helper.rb b/app/helpers/mail_handler_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/management_helper.rb b/app/helpers/management_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/managements_helper.rb b/app/helpers/managements_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/mark_down_helper.rb b/app/helpers/mark_down_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/members_helper.rb b/app/helpers/members_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/memos_helper.rb b/app/helpers/memos_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/messages_helper.rb b/app/helpers/messages_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/my_helper.rb b/app/helpers/my_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/myshixuns_helper.rb b/app/helpers/myshixuns_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/news_helper.rb b/app/helpers/news_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/no_uses_helper.rb b/app/helpers/no_uses_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/notificationcomments_helper.rb b/app/helpers/notificationcomments_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/oauth_helper.rb b/app/helpers/oauth_helper.rb deleted file mode 100644 index 010cf9f5..00000000 --- a/app/helpers/oauth_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module OauthHelper -end diff --git a/app/helpers/open_source_projects_helper.rb b/app/helpers/open_source_projects_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/org_courses_helper.rb b/app/helpers/org_courses_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/org_document_comment_helper.rb b/app/helpers/org_document_comment_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/org_member_helper.rb b/app/helpers/org_member_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/org_projects_helper.rb b/app/helpers/org_projects_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/org_subfields_helper.rb b/app/helpers/org_subfields_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/organizations_helper.rb b/app/helpers/organizations_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/owner_type_helper.rb b/app/helpers/owner_type_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/poll_helper.rb b/app/helpers/poll_helper.rb old mode 100644 new mode 100755 index 1ac26aa6..411fc3c3 --- a/app/helpers/poll_helper.rb +++ b/app/helpers/poll_helper.rb @@ -20,11 +20,11 @@ module PollHelper def un_commit_num poll course = poll.course - member = course.members.where(:user_id => User.current.id).first ## 当前用户是否为课堂成员 - poll_users = poll.poll_users # 问卷的全部用户,包含已回答的/为回答,但是浏览的 - student_count = course.student.count # 课堂的学生数 + member = course.members.where(:user_id => User.current.id).first + poll_users = poll.poll_users + student_count = course.student.count if member.present? && member.teacher_course_groups.count > 0 - group_students = course.members.where(:course_group_id => member.teacher_course_groups.pluck(:course_group_id)).map(&:user_id) ## 统计当前用户所在班级的全部学生 + group_students = course.members.where(:course_group_id => member.teacher_course_groups.pluck(:course_group_id)).map(&:user_id) student_count = group_students.size poll_users = poll_users.where(:user_id => group_students) end diff --git a/app/helpers/praise_tread_helper.rb b/app/helpers/praise_tread_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/project_score_helper.rb b/app/helpers/project_score_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/pull_requests_helper.rb b/app/helpers/pull_requests_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/quality_analysis_helper.rb b/app/helpers/quality_analysis_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/queries_helper.rb b/app/helpers/queries_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/question_banks_helper.rb b/app/helpers/question_banks_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/reports_helper.rb b/app/helpers/reports_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/repositories_helper.rb b/app/helpers/repositories_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/roles_helper.rb b/app/helpers/roles_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/routes_helper.rb b/app/helpers/routes_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/school_helper.rb b/app/helpers/school_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/search_helper.rb b/app/helpers/search_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/settings_helper.rb b/app/helpers/settings_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/shares_helper.rb b/app/helpers/shares_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/shield_activities_helper.rb b/app/helpers/shield_activities_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/shield_wechat_messages_helper.rb b/app/helpers/shield_wechat_messages_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/shixuns_helper.rb b/app/helpers/shixuns_helper.rb old mode 100644 new mode 100755 index a42225cd..23168ccf --- a/app/helpers/shixuns_helper.rb +++ b/app/helpers/shixuns_helper.rb @@ -5,7 +5,7 @@ module ShixunsHelper def myshixun_exp myshixun score = 0 myshixun.games.each do |game| - score += game.status == 2 ? game.final_score.to_i < 0 ? 0 : game.challenge.score.to_i : 0 + score += game.final_score.to_i < 0 ? 0 : game.challenge.score.to_i end score end diff --git a/app/helpers/softapplications_helper.rb b/app/helpers/softapplications_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/sort_helper.rb b/app/helpers/sort_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/stages_helper.rb b/app/helpers/stages_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/statistics_helper.rb b/app/helpers/statistics_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/stores_helper.rb b/app/helpers/stores_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/student_work_helper.rb b/app/helpers/student_work_helper.rb old mode 100644 new mode 100755 index 94b8348d..2fb0cd4f --- a/app/helpers/student_work_helper.rb +++ b/app/helpers/student_work_helper.rb @@ -3,6 +3,67 @@ include UserScoreHelper module StudentWorkHelper + def update_shixun_work_status homework + shixun = homework.homework_commons_shixuns.shixun + student_works = homework.student_works.where(:work_status => 0) + homework_challenge_settings = homework.homework_challenge_settings + challeng_ids = homework_challenge_settings.map(&:challenge_id) + # 取已发布的作品 + if homework.unified_setting + student_works = student_works + else + setting = homework.homework_group_settings.where("publish_time < '#{Time.now}'") + if setting.blank? + student_works = student_works.where("0=1") + else + users = homework.course.members.where(:course_group_id => setting.map(&:course_group_id)) + student_works = student_works.where(:user_id => users.map(&:user_id)) + end + end + # 已发布作品且状态为未提交的作品 如果有开启过实训则更新状态 + myshixuns = Myshixun.where(:shixun_id => shixun.id, :user_id => student_works.map(&:user_id)) + myshixuns.each do |myshixun| + work = student_works.where(:user_id => myshixun.user_id).first + member = Member.find_by_sql("select course_group_id from members where course_id = #{homework.course_id} and user_id = #{work.user_id}").first + setting_time = homework_group_setting homework, member.try(:course_group_id) + games = myshixun.games.where(:challenge_id => challeng_ids) + myshixun_endtime = games.select{|game| game.status == 2}.size == games.size ? games.map(&:end_time).max : nil + compelete_status = 0 + if myshixun_endtime.present? && myshixun_endtime < setting_time.end_time + if myshixun_endtime < setting_time.publish_time + compelete_status = 2 + else + compelete_status = 1 + end + end + if setting_time.end_time > Time.now + work.update_attributes(:work_status => 1, :late_penalty => 0, :commit_time => myshixun.updated_at, :update_time => myshixun.updated_at, :myshixun_id => myshixun.id, :compelete_status => compelete_status) + else + work.update_attributes(:work_status => ((myshixun.is_complete? && (myshixun.done_time < setting_time.end_time)) ? 1 : 2), :late_penalty => (myshixun.is_complete? && (myshixun.done_time < setting_time.end_time) ? 0 : homework.late_penalty), :commit_time => myshixun.updated_at, :update_time => myshixun.updated_at, :myshixun_id => myshixun.id, :compelete_status => compelete_status) + end + set_shixun_final_score work, homework.homework_detail_manual.answer_open_evaluation, homework_challenge_settings + end + # 更新所有学生的效率分 + update_student_eff_score HomeworkCommon.where(:id => homework.id).first +=begin + student_works.each do |work| + if work.work_status == 0 + myshixun = Myshixun.where(:shixun_id => shixun.id, :user_id => work.user_id).first + if myshixun + member = Member.find_by_sql("select course_group_id from members where course_id = #{homework.course_id} and user_id = #{User.current.id}").first + setting_time = homework_group_setting homework, member.try(:course_group_id) + if setting_time.end_time > Time.now + work.update_attributes(:work_status => 1, :late_penalty => 0, :commit_time => myshixun.updated_at, :update_time => myshixun.updated_at, :myshixun_id => myshixun.id) + else + work.update_attributes(:work_status => ((myshixun.is_complete? && (myshixun.done_time < setting_time.end_time)) ? 1 : 2), :late_penalty => (myshixun.is_complete? && (myshixun.done_time < setting_time.end_time) ? 0 : homework.late_penalty), :commit_time => myshixun.updated_at, :update_time => myshixun.updated_at, :myshixun_id => myshixun.id) + end + end + end + set_shixun_final_score work, homework.homework_detail_manual.answer_open_evaluation, homework_challenge_settings + end +=end + end + #获取当前用户的项目列表 def user_projects_option projects = User.current.projects.visible @@ -94,7 +155,7 @@ module StudentWorkHelper if homework.homework_type ==3 && project.nil? && homework.homework_detail_group.base_on_project == 1 link_to "提交作品","javascript:void(0)", :class => 'white-btn orange-btn fr mr10 mt8',:style=>"cursor:not-allowed",:title => '请先关联项目再提交作品' else - link_to "提交作品", new_student_work_url_without_domain(homework.id), :class => 'white-btn orange-btn fr mr10 mt8' + link_to "提交作品", new_student_work_path(:homework => homework.id), :class => 'white-btn orange-btn fr mr10 mt8' end end elsif work.nil? && setting_time.end_time < Time.now @@ -105,20 +166,19 @@ module StudentWorkHelper if homework.homework_type ==3 && project.nil? && homework.homework_detail_group.base_on_project == 1 link_to "补交作品","javascript:void(0)", :class => 'white-btn orange-btn fr mr10 mt8',:style=>"cursor:not-allowed",:title => '请先关联项目再补交作品' else - link_to "补交作品", new_student_work_url_without_domain(homework.id), :class => 'white-btn orange-btn fr mr10 mt8' + link_to "补交作品", new_student_work_path(:homework => homework.id), :class => 'white-btn orange-btn fr mr10 mt8' end end end elsif work if homework.homework_type == 4 myshixun = Myshixun.find work.myshixun_id - # is_modify = ShixunModify.where(:myshixun_id => myshixun.try(:id), :shixun_id => myshixun.shixun.try(:id), :status => 1).first - link_to "继续实战", shixun_path(myshixun.shixun), :class => "white-btn orange-btn fr mr10 mt8", :target => "_blank" - # if myshixun && is_modify.blank? - # link_to "继续实战", myshixun_game_path(myshixun.current_task, :myshixun_id => myshixun), :class => "white-btn orange-btn fr mr10 mt8", :target => "_blank" - # elsif myshixun - # link_to "继续实战", 'javascript:void(0);', :onclick => "sure_box_redirect('#{myshixun_reset_myshixun_path(myshixun)}', '实训已经更新啦,系统正在为您重置');", :class => "white-btn orange-btn fr mr10 mt8" - # end + is_modify = ShixunModify.where(:myshixun_id => myshixun.try(:id), :shixun_id => myshixun.shixun.try(:id), :status => 1).first + if myshixun && is_modify.blank? + link_to "继续实战", myshixun_game_path(myshixun.current_task, :myshixun_id => myshixun), :class => "white-btn orange-btn fr mr10 mt8", :target => "_blank" + elsif myshixun + link_to "继续实战", 'javascript:void(0);', :onclick => "sure_box_redirect('#{myshixun_reset_myshixun_path(myshixun)}', '实训已经更新啦,系统正在为您重置');", :class => "white-btn orange-btn fr mr10 mt8" + end else if setting_time.end_time >= Time.now link_to "修改作品", edit_student_work_url_without_domain(work.id), :class => 'white-btn orange-btn fr mr10 mt8' diff --git a/app/helpers/sub_document_comments_helper.rb b/app/helpers/sub_document_comments_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/sub_domains_helper.rb b/app/helpers/sub_domains_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/subfield_subdomain_dirs_helper.rb b/app/helpers/subfield_subdomain_dirs_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/subjects_helper.rb b/app/helpers/subjects_helper.rb old mode 100644 new mode 100755 index 0a8d659f..9bae4a84 --- a/app/helpers/subjects_helper.rb +++ b/app/helpers/subjects_helper.rb @@ -6,36 +6,28 @@ module SubjectsHelper end # 实训路径详情列表,右侧状态显示栏 - def shixun_show_in_subject subject_status, shixun_status, shixun_hidden - content = if shixun_hidden - '暂未公开' - else - if subject_status < 2 - case shixun_status - when 0, 1 - '暂未公开' - when 2 - '已发布' - when 3 - '已关闭' - else - "" - end - else - if shixun_status != 2 - case shixun_status - when 0, 1 - '暂未公开' - when 3 - '已关闭' - else - "" - end - else - "" - end - end - end + def shixun_show_in_subject subject_status, shixun_status + content = if subject_status < 2 + case shixun_status + when 0, 1 + '暂未公开' + when 2 + '已发布' + when 3 + '已关闭' + end + else + if shixun_status != 2 + case shixun_status + when 0, 1 + '暂未公开' + when 3 + '已关闭' + end + else + "" + end + end return content.html_safe end @@ -43,7 +35,7 @@ module SubjectsHelper def start_shixun_in_subject subject, shixun, myshixun is_modify = ShixunModify.where(:myshixun_id => myshixun.try(:id), :shixun_id => shixun.try(:id), :status => 1).first content_before = '' - content = if (shixun.status == 2 && !shixun.hidden) || User.current.manager_of_shixun?(shixun) + content = if shixun.status == 2 || User.current.manager_of_shixun?(shixun) content_before = "查看详情" if User.current.try(:mail).blank? %Q{开始实战} diff --git a/app/helpers/syllabus_member_helper.rb b/app/helpers/syllabus_member_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/syllabuses_helper.rb b/app/helpers/syllabuses_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/system_log_helper.rb b/app/helpers/system_log_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/system_messages_helper.rb b/app/helpers/system_messages_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/tags_helper.rb b/app/helpers/tags_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/tasks_helper.rb b/app/helpers/tasks_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/teachers_helper.rb b/app/helpers/teachers_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/test_helper.rb b/app/helpers/test_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/timelog_helper.rb b/app/helpers/timelog_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/trackers_helper.rb b/app/helpers/trackers_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/training_tasks_helper.rb b/app/helpers/training_tasks_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/trainings_helper.rb b/app/helpers/trainings_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/user_score_helper.rb b/app/helpers/user_score_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb old mode 100644 new mode 100755 index e3054f8e..9df8dda8 --- a/app/helpers/users_helper.rb +++ b/app/helpers/users_helper.rb @@ -91,7 +91,8 @@ module UsersHelper attachments.map do |attach| user_name = attach.author.show_real_name create_time = format_date(attach.created_on) - file_size = (number_to_human_size(attach.filesize, :precision => 2)).gsub("ytes", "") + file_size = (number_to_human_size(attach.filesize)).gsub("ytes", "") + resource_type = get_resource_type(attach.container_type) atta_path = download_named_attachment_path(attach.id, attach.filename) atta_name = truncate(attach.filename, :length => 30) attach.attributes.dup.except("container_id", "container_type", "disk_filename", "filesize", "content_type", @@ -99,6 +100,7 @@ module UsersHelper user_name: user_name, create_time: create_time, file_size: file_size, + resource_type: resource_type, atta_path: atta_path, atta_name: atta_name, }) diff --git a/app/helpers/versions_helper.rb b/app/helpers/versions_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/watchers_helper.rb b/app/helpers/watchers_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/wechats_helper.rb b/app/helpers/wechats_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/welcome_helper.rb b/app/helpers/welcome_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/wiki_helper.rb b/app/helpers/wiki_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/words_helper.rb b/app/helpers/words_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/workflows_helper.rb b/app/helpers/workflows_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/works_helper.rb b/app/helpers/works_helper.rb old mode 100644 new mode 100755 diff --git a/app/helpers/zipdown_helper.rb b/app/helpers/zipdown_helper.rb old mode 100644 new mode 100755 diff --git a/app/models/activity.rb b/app/models/activity.rb old mode 100644 new mode 100755 diff --git a/app/models/activity_notify.rb b/app/models/activity_notify.rb old mode 100644 new mode 100755 diff --git a/app/models/add_base_score_to_statistics.rb b/app/models/add_base_score_to_statistics.rb old mode 100644 new mode 100755 diff --git a/app/models/api_key.rb b/app/models/api_key.rb old mode 100644 new mode 100755 diff --git a/app/models/applied_contest.rb b/app/models/applied_contest.rb old mode 100644 new mode 100755 diff --git a/app/models/applied_message.rb b/app/models/applied_message.rb old mode 100644 new mode 100755 diff --git a/app/models/applied_project.rb b/app/models/applied_project.rb old mode 100644 new mode 100755 diff --git a/app/models/apply_action.rb b/app/models/apply_action.rb old mode 100644 new mode 100755 diff --git a/app/models/apply_add_department.rb b/app/models/apply_add_department.rb old mode 100644 new mode 100755 diff --git a/app/models/apply_add_schools.rb b/app/models/apply_add_schools.rb old mode 100644 new mode 100755 diff --git a/app/models/apply_homework.rb b/app/models/apply_homework.rb old mode 100644 new mode 100755 diff --git a/app/models/apply_project_master.rb b/app/models/apply_project_master.rb old mode 100644 new mode 100755 diff --git a/app/models/apply_resource.rb b/app/models/apply_resource.rb old mode 100644 new mode 100755 diff --git a/app/models/apply_user_authentication.rb b/app/models/apply_user_authentication.rb old mode 100644 new mode 100755 diff --git a/app/models/article_homepage.rb b/app/models/article_homepage.rb old mode 100644 new mode 100755 diff --git a/app/models/at_message.rb b/app/models/at_message.rb old mode 100644 new mode 100755 diff --git a/app/models/attachment.rb b/app/models/attachment.rb old mode 100644 new mode 100755 diff --git a/app/models/attachment_group_setting.rb b/app/models/attachment_group_setting.rb old mode 100644 new mode 100755 diff --git a/app/models/attachment_history.rb b/app/models/attachment_history.rb old mode 100644 new mode 100755 diff --git a/app/models/attachmentstype.rb b/app/models/attachmentstype.rb old mode 100644 new mode 100755 diff --git a/app/models/attendance.rb b/app/models/attendance.rb old mode 100644 new mode 100755 diff --git a/app/models/auth_source.rb b/app/models/auth_source.rb old mode 100644 new mode 100755 diff --git a/app/models/auth_source_ldap.rb b/app/models/auth_source_ldap.rb old mode 100644 new mode 100755 diff --git a/app/models/authentication.rb b/app/models/authentication.rb old mode 100644 new mode 100755 diff --git a/app/models/authentications_users.rb b/app/models/authentications_users.rb old mode 100644 new mode 100755 diff --git a/app/models/bid.rb b/app/models/bid.rb old mode 100644 new mode 100755 diff --git a/app/models/biding_project.rb b/app/models/biding_project.rb old mode 100644 new mode 100755 diff --git a/app/models/blog.rb b/app/models/blog.rb old mode 100644 new mode 100755 diff --git a/app/models/blog_comment.rb b/app/models/blog_comment.rb old mode 100644 new mode 100755 diff --git a/app/models/blog_message.rb b/app/models/blog_message.rb old mode 100644 new mode 100755 diff --git a/app/models/board.rb b/app/models/board.rb old mode 100644 new mode 100755 diff --git a/app/models/bug_to_osp.rb b/app/models/bug_to_osp.rb old mode 100644 new mode 100755 diff --git a/app/models/career.rb b/app/models/career.rb old mode 100644 new mode 100755 diff --git a/app/models/career_faq.rb b/app/models/career_faq.rb old mode 100644 new mode 100755 diff --git a/app/models/career_stage.rb b/app/models/career_stage.rb old mode 100644 new mode 100755 diff --git a/app/models/career_stage_subject.rb b/app/models/career_stage_subject.rb old mode 100644 new mode 100755 diff --git a/app/models/challenge.rb b/app/models/challenge.rb old mode 100644 new mode 100755 diff --git a/app/models/challenge_choose.rb b/app/models/challenge_choose.rb old mode 100644 new mode 100755 diff --git a/app/models/challenge_question.rb b/app/models/challenge_question.rb old mode 100644 new mode 100755 diff --git a/app/models/challenge_sample.rb b/app/models/challenge_sample.rb old mode 100644 new mode 100755 diff --git a/app/models/challenge_tag.rb b/app/models/challenge_tag.rb old mode 100644 new mode 100755 diff --git a/app/models/challenge_work_score.rb b/app/models/challenge_work_score.rb old mode 100644 new mode 100755 diff --git a/app/models/change.rb b/app/models/change.rb old mode 100644 new mode 100755 diff --git a/app/models/changeset.rb b/app/models/changeset.rb old mode 100644 new mode 100755 diff --git a/app/models/chart_rule.rb b/app/models/chart_rule.rb old mode 100644 new mode 100755 diff --git a/app/models/choose_outputs.rb b/app/models/choose_outputs.rb old mode 100644 new mode 100755 diff --git a/app/models/code_tests.rb b/app/models/code_tests.rb old mode 100644 new mode 100755 diff --git a/app/models/comment.rb b/app/models/comment.rb old mode 100644 new mode 100755 diff --git a/app/models/commit.rb b/app/models/commit.rb old mode 100644 new mode 100755 diff --git a/app/models/commit_issues.rb b/app/models/commit_issues.rb old mode 100644 new mode 100755 diff --git a/app/models/competition.rb b/app/models/competition.rb old mode 100644 new mode 100755 diff --git a/app/models/competition_entry.rb b/app/models/competition_entry.rb old mode 100644 new mode 100755 diff --git a/app/models/competition_list.rb b/app/models/competition_list.rb old mode 100644 new mode 100755 diff --git a/app/models/competition_module.rb b/app/models/competition_module.rb old mode 100644 new mode 100755 diff --git a/app/models/competition_module_md_content.rb b/app/models/competition_module_md_content.rb old mode 100644 new mode 100755 diff --git a/app/models/competition_score.rb b/app/models/competition_score.rb old mode 100644 new mode 100755 diff --git a/app/models/competition_stage.rb b/app/models/competition_stage.rb old mode 100644 new mode 100755 diff --git a/app/models/competition_stage_section.rb b/app/models/competition_stage_section.rb old mode 100644 new mode 100755 diff --git a/app/models/competition_team.rb b/app/models/competition_team.rb old mode 100644 new mode 100755 diff --git a/app/models/competition_text_config.rb b/app/models/competition_text_config.rb old mode 100644 new mode 100755 diff --git a/app/models/contest.rb b/app/models/contest.rb old mode 100644 new mode 100755 diff --git a/app/models/contest_activity.rb b/app/models/contest_activity.rb old mode 100644 new mode 100755 diff --git a/app/models/contest_member.rb b/app/models/contest_member.rb old mode 100644 new mode 100755 diff --git a/app/models/contest_member_role.rb b/app/models/contest_member_role.rb old mode 100644 new mode 100755 diff --git a/app/models/contest_message.rb b/app/models/contest_message.rb old mode 100644 new mode 100755 diff --git a/app/models/contestant_for_contest.rb b/app/models/contestant_for_contest.rb old mode 100644 new mode 100755 diff --git a/app/models/contestant_work.rb b/app/models/contestant_work.rb old mode 100644 new mode 100755 diff --git a/app/models/contestant_work_evaluation_distribution.rb b/app/models/contestant_work_evaluation_distribution.rb old mode 100644 new mode 100755 diff --git a/app/models/contestant_work_project.rb b/app/models/contestant_work_project.rb old mode 100644 new mode 100755 diff --git a/app/models/contestant_work_score.rb b/app/models/contestant_work_score.rb old mode 100644 new mode 100755 diff --git a/app/models/coo_img.rb b/app/models/coo_img.rb old mode 100644 new mode 100755 diff --git a/app/models/cooperation.rb b/app/models/cooperation.rb old mode 100644 new mode 100755 diff --git a/app/models/course.rb b/app/models/course.rb old mode 100644 new mode 100755 diff --git a/app/models/course_activity.rb b/app/models/course_activity.rb old mode 100644 new mode 100755 diff --git a/app/models/course_attachment.rb b/app/models/course_attachment.rb old mode 100644 new mode 100755 diff --git a/app/models/course_contributor_score.rb b/app/models/course_contributor_score.rb old mode 100644 new mode 100755 diff --git a/app/models/course_group.rb b/app/models/course_group.rb old mode 100644 new mode 100755 index 9c80c85a..d0d03023 --- a/app/models/course_group.rb +++ b/app/models/course_group.rb @@ -20,7 +20,6 @@ class CourseGroup < ActiveRecord::Base # attr_accessible :name validates :name, :presence => true, :length => {:maximum => 20}, :uniqueness => { :scope => :course_id} - after_create :generate_invite_code # 延迟生成邀请码 def invite_code diff --git a/app/models/course_homework_category.rb b/app/models/course_homework_category.rb old mode 100644 new mode 100755 index 6e27de18..7ba6c597 --- a/app/models/course_homework_category.rb +++ b/app/models/course_homework_category.rb @@ -1,5 +1,5 @@ class CourseHomeworkCategory < ActiveRecord::Base belongs_to :course - has_many :homework_commons - attr_accessible :name + has_many :shixun_homework_categories + # attr_accessible :name end diff --git a/app/models/course_homework_statistics.rb b/app/models/course_homework_statistics.rb old mode 100644 new mode 100755 diff --git a/app/models/course_infos.rb b/app/models/course_infos.rb old mode 100644 new mode 100755 diff --git a/app/models/course_list.rb b/app/models/course_list.rb old mode 100644 new mode 100755 diff --git a/app/models/course_message.rb b/app/models/course_message.rb old mode 100644 new mode 100755 diff --git a/app/models/course_module.rb b/app/models/course_module.rb old mode 100644 new mode 100755 diff --git a/app/models/course_status.rb b/app/models/course_status.rb old mode 100644 new mode 100755 diff --git a/app/models/custom_field.rb b/app/models/custom_field.rb old mode 100644 new mode 100755 diff --git a/app/models/custom_field_value.rb b/app/models/custom_field_value.rb old mode 100644 new mode 100755 diff --git a/app/models/custom_value.rb b/app/models/custom_value.rb old mode 100644 new mode 100755 diff --git a/app/models/customer.rb b/app/models/customer.rb deleted file mode 100644 index 673acd20..00000000 --- a/app/models/customer.rb +++ /dev/null @@ -1,6 +0,0 @@ -class Customer < ActiveRecord::Base - default_scope :order => 'customers.created_at desc' - belongs_to :partner - has_one :school - has_many :users -end diff --git a/app/models/data_exception.rb b/app/models/data_exception.rb old mode 100644 new mode 100755 diff --git a/app/models/department.rb b/app/models/department.rb old mode 100644 new mode 100755 index 360302f0..4f383bf4 --- a/app/models/department.rb +++ b/app/models/department.rb @@ -4,7 +4,7 @@ class Department < ActiveRecord::Base # apply_add_departments 不能关联删除 tidings表有关联 has_many :apply_add_departments has_many :tidings, as: :container, dependent: :destroy - attr_accessible :name, :school_id, :is_auth, :identifier, :is_delete, :host_count + attr_accessible :name, :school_id, :is_auth, :identifier, :is_delete scope :is_active, lambda{where(:is_delete => false)} scope :is_delete, lambda{where(:is_delete => true)} diff --git a/app/models/department_member.rb b/app/models/department_member.rb old mode 100644 new mode 100755 diff --git a/app/models/discipline_category.rb b/app/models/discipline_category.rb old mode 100644 new mode 100755 diff --git a/app/models/discuss.rb b/app/models/discuss.rb old mode 100644 new mode 100755 diff --git a/app/models/document.rb b/app/models/document.rb old mode 100644 new mode 100755 diff --git a/app/models/document_category.rb b/app/models/document_category.rb old mode 100644 new mode 100755 diff --git a/app/models/document_category_custom_field.rb b/app/models/document_category_custom_field.rb old mode 100644 new mode 100755 diff --git a/app/models/dts.rb b/app/models/dts.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_achievement_evaluation_relate.rb b/app/models/ec_achievement_evaluation_relate.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_course.rb b/app/models/ec_course.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_course_achievement_method.rb b/app/models/ec_course_achievement_method.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_course_evaluation.rb b/app/models/ec_course_evaluation.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_course_evaluation_subitem.rb b/app/models/ec_course_evaluation_subitem.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_course_student_score.rb b/app/models/ec_course_student_score.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_course_support.rb b/app/models/ec_course_support.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_course_target.rb b/app/models/ec_course_target.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_course_user.rb b/app/models/ec_course_user.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_discipline.rb b/app/models/ec_discipline.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_discipline_first.rb b/app/models/ec_discipline_first.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_graduation_requirement.rb b/app/models/ec_graduation_requirement.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_graduation_requirement_calculation.rb b/app/models/ec_graduation_requirement_calculation.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_graduation_standard.rb b/app/models/ec_graduation_standard.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_graduation_subitem.rb b/app/models/ec_graduation_subitem.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_graduation_subitem_course.rb b/app/models/ec_graduation_subitem_course.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_graduation_subitem_course_target.rb b/app/models/ec_graduation_subitem_course_target.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_major.rb b/app/models/ec_major.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_major_course.rb b/app/models/ec_major_course.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_major_school.rb b/app/models/ec_major_school.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_major_school_user.rb b/app/models/ec_major_school_user.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_require_sub_vs_standard.rb b/app/models/ec_require_sub_vs_standard.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_requirement_vs_objective.rb b/app/models/ec_requirement_vs_objective.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_school_user.rb b/app/models/ec_school_user.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_score_level.rb b/app/models/ec_score_level.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_student_achievement.rb b/app/models/ec_student_achievement.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_student_score_target.rb b/app/models/ec_student_score_target.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_template.rb b/app/models/ec_template.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_training_objective.rb b/app/models/ec_training_objective.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_training_subitem.rb b/app/models/ec_training_subitem.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_year.rb b/app/models/ec_year.rb old mode 100644 new mode 100755 diff --git a/app/models/ec_year_student.rb b/app/models/ec_year_student.rb old mode 100644 new mode 100755 diff --git a/app/models/ecloud.rb b/app/models/ecloud.rb deleted file mode 100644 index 293948f3..00000000 --- a/app/models/ecloud.rb +++ /dev/null @@ -1,11 +0,0 @@ -#encoding=utf-8 -class Ecloud < ActiveRecord::Base - attr_accessible :applyno, :begintime, :bossorderid, :custcode, :custid, :custname, :custtype, :ecordercode, :endtime, - :mobile, :opttype, :productcode, :registersource, :string, :trial, :useralias, :userid, :username, :email, - :effecttime, :operatime - - has_many :ecloud_services, :dependent => :destroy # 业务列表 - has_many :ecloud_productparas, :dependent => :destroy # 开通参数列表 - - has_one :ecloud_user -end diff --git a/app/models/ecloud_log.rb b/app/models/ecloud_log.rb deleted file mode 100644 index a1ac3636..00000000 --- a/app/models/ecloud_log.rb +++ /dev/null @@ -1,3 +0,0 @@ -class EcloudLog < ActiveRecord::Base - -end diff --git a/app/models/ecloud_productpara.rb b/app/models/ecloud_productpara.rb deleted file mode 100644 index ec1b94bc..00000000 --- a/app/models/ecloud_productpara.rb +++ /dev/null @@ -1,4 +0,0 @@ -class EcloudProductpara < ActiveRecord::Base - attr_accessible :key, :value, :ecloud_id - belongs_to :ecloud -end diff --git a/app/models/ecloud_service.rb b/app/models/ecloud_service.rb deleted file mode 100644 index dba4a7b2..00000000 --- a/app/models/ecloud_service.rb +++ /dev/null @@ -1,6 +0,0 @@ -# 操作代码 0:新增业务,1:注销业务2:修改业务 -class EcloudService < ActiveRecord::Base - attr_accessible :begintime, :code, :endtime, :opttype, :ecloud_id, :packagecode, :bossorderid - belongs_to :ecloud - has_many :ecloud_serviece_serviceparas -end diff --git a/app/models/ecloud_serviece_servicepara.rb b/app/models/ecloud_serviece_servicepara.rb deleted file mode 100644 index 5dbff71f..00000000 --- a/app/models/ecloud_serviece_servicepara.rb +++ /dev/null @@ -1,5 +0,0 @@ -# ket值,license表示人数,对应企业版;duration表示月数,对应个人版; -class EcloudServieceServicepara < ActiveRecord::Base - attr_accessible :key, :value, :ecloud_service_id - belongs_to :ecloud_service -end diff --git a/app/models/ecloud_user.rb b/app/models/ecloud_user.rb deleted file mode 100644 index fad6f470..00000000 --- a/app/models/ecloud_user.rb +++ /dev/null @@ -1,3 +0,0 @@ -class EcloudUser < ActiveRecord::Base - has_many :ecloud_user_paras -end diff --git a/app/models/ecloud_user_para.rb b/app/models/ecloud_user_para.rb deleted file mode 100644 index 3f4ddc5c..00000000 --- a/app/models/ecloud_user_para.rb +++ /dev/null @@ -1,3 +0,0 @@ -class EcloudUserPara < ActiveRecord::Base - belongs_to :ecloud_user -end diff --git a/app/models/ecloud_users.rb b/app/models/ecloud_users.rb deleted file mode 100644 index 99da0df2..00000000 --- a/app/models/ecloud_users.rb +++ /dev/null @@ -1,4 +0,0 @@ -class EcloudUser < ActiveRecord::Base - # opttype: # user['opttype']: 操作类型0:开通;1:变更;3: 取消授权;4:暂停;5:恢复; - attr_accessible :begintime, :email, :endtime, :mobile, :opttype, :paras, :useralias, :userid, :username, :custid -end diff --git a/app/models/editor_of_document.rb b/app/models/editor_of_document.rb old mode 100644 new mode 100755 diff --git a/app/models/enabled_module.rb b/app/models/enabled_module.rb old mode 100644 new mode 100755 diff --git a/app/models/enumeration.rb b/app/models/enumeration.rb old mode 100644 new mode 100755 diff --git a/app/models/error_check.rb b/app/models/error_check.rb old mode 100644 new mode 100755 diff --git a/app/models/evaluate_record.rb b/app/models/evaluate_record.rb old mode 100644 new mode 100755 diff --git a/app/models/exercise.rb b/app/models/exercise.rb old mode 100644 new mode 100755 diff --git a/app/models/exercise_answer.rb b/app/models/exercise_answer.rb old mode 100644 new mode 100755 diff --git a/app/models/exercise_answer_comment.rb b/app/models/exercise_answer_comment.rb old mode 100644 new mode 100755 diff --git a/app/models/exercise_bank.rb b/app/models/exercise_bank.rb old mode 100644 new mode 100755 diff --git a/app/models/exercise_bank_choice.rb b/app/models/exercise_bank_choice.rb old mode 100644 new mode 100755 diff --git a/app/models/exercise_bank_question.rb b/app/models/exercise_bank_question.rb old mode 100644 new mode 100755 diff --git a/app/models/exercise_bank_shixun_challenge.rb b/app/models/exercise_bank_shixun_challenge.rb old mode 100644 new mode 100755 diff --git a/app/models/exercise_bank_standard_answer.rb b/app/models/exercise_bank_standard_answer.rb old mode 100644 new mode 100755 diff --git a/app/models/exercise_choice.rb b/app/models/exercise_choice.rb old mode 100644 new mode 100755 diff --git a/app/models/exercise_group_setting.rb b/app/models/exercise_group_setting.rb old mode 100644 new mode 100755 diff --git a/app/models/exercise_level_setting.rb b/app/models/exercise_level_setting.rb old mode 100644 new mode 100755 diff --git a/app/models/exercise_question.rb b/app/models/exercise_question.rb old mode 100644 new mode 100755 diff --git a/app/models/exercise_shixun_answer.rb b/app/models/exercise_shixun_answer.rb old mode 100644 new mode 100755 diff --git a/app/models/exercise_shixun_challenge.rb b/app/models/exercise_shixun_challenge.rb old mode 100644 new mode 100755 diff --git a/app/models/exercise_standard_answer.rb b/app/models/exercise_standard_answer.rb old mode 100644 new mode 100755 diff --git a/app/models/exercise_user.rb b/app/models/exercise_user.rb old mode 100644 new mode 100755 diff --git a/app/models/exercise_user_question.rb b/app/models/exercise_user_question.rb old mode 100644 new mode 100755 diff --git a/app/models/experience.rb b/app/models/experience.rb old mode 100644 new mode 100755 diff --git a/app/models/first_level_discipline.rb b/app/models/first_level_discipline.rb old mode 100644 new mode 100755 diff --git a/app/models/first_page.rb b/app/models/first_page.rb old mode 100644 new mode 100755 diff --git a/app/models/forge_activity.rb b/app/models/forge_activity.rb old mode 100644 new mode 100755 diff --git a/app/models/forge_message.rb b/app/models/forge_message.rb old mode 100644 new mode 100755 diff --git a/app/models/forum.rb b/app/models/forum.rb old mode 100644 new mode 100755 diff --git a/app/models/forward.rb b/app/models/forward.rb old mode 100644 new mode 100755 diff --git a/app/models/game.rb b/app/models/game.rb old mode 100644 new mode 100755 diff --git a/app/models/game_code.rb b/app/models/game_code.rb old mode 100644 new mode 100755 diff --git a/app/models/game_outputs.rb b/app/models/game_outputs.rb old mode 100644 new mode 100755 diff --git a/app/models/gitlab_url.rb b/app/models/gitlab_url.rb old mode 100644 new mode 100755 diff --git a/app/models/grade.rb b/app/models/grade.rb old mode 100644 new mode 100755 diff --git a/app/models/graduation_group.rb b/app/models/graduation_group.rb old mode 100644 new mode 100755 diff --git a/app/models/graduation_task.rb b/app/models/graduation_task.rb old mode 100644 new mode 100755 diff --git a/app/models/graduation_task_group_assignation.rb b/app/models/graduation_task_group_assignation.rb old mode 100644 new mode 100755 diff --git a/app/models/graduation_topic.rb b/app/models/graduation_topic.rb old mode 100644 new mode 100755 diff --git a/app/models/graduation_work.rb b/app/models/graduation_work.rb old mode 100644 new mode 100755 diff --git a/app/models/graduation_work_comment_assignation.rb b/app/models/graduation_work_comment_assignation.rb old mode 100644 new mode 100755 diff --git a/app/models/graduation_work_score.rb b/app/models/graduation_work_score.rb old mode 100644 new mode 100755 diff --git a/app/models/group.rb b/app/models/group.rb old mode 100644 new mode 100755 diff --git a/app/models/group_custom_field.rb b/app/models/group_custom_field.rb old mode 100644 new mode 100755 diff --git a/app/models/help.rb b/app/models/help.rb old mode 100644 new mode 100755 diff --git a/app/models/homepage.rb b/app/models/homepage.rb old mode 100644 new mode 100755 diff --git a/app/models/homework_attach.rb b/app/models/homework_attach.rb old mode 100644 new mode 100755 diff --git a/app/models/homework_bank.rb b/app/models/homework_bank.rb old mode 100644 new mode 100755 diff --git a/app/models/homework_bank_sample.rb b/app/models/homework_bank_sample.rb old mode 100644 new mode 100755 diff --git a/app/models/homework_bank_shixun.rb b/app/models/homework_bank_shixun.rb old mode 100644 new mode 100755 diff --git a/app/models/homework_bank_test.rb b/app/models/homework_bank_test.rb old mode 100644 new mode 100755 diff --git a/app/models/homework_challenge_setting.rb b/app/models/homework_challenge_setting.rb old mode 100644 new mode 100755 diff --git a/app/models/homework_common.rb b/app/models/homework_common.rb old mode 100644 new mode 100755 index 0b7aa420..6bcdb8fd --- a/app/models/homework_common.rb +++ b/app/models/homework_common.rb @@ -24,21 +24,21 @@ class HomeworkCommon < ActiveRecord::Base has_many :homework_review_results, :dependent => :destroy # 学生的查重情况 belongs_to :course_homework_category - has_many :student_work_projects - # has_many :homework_tests, :dependent => :destroy - # has_many :homework_samples, :dependent => :destroy - has_many :student_works, :conditions => "student_works.is_test=0 and student_works.is_delete != 1" + has_many :student_work_projects, :dependent => :destroy + has_many :homework_tests, :dependent => :destroy + has_many :homework_samples, :dependent => :destroy + has_many :student_works, :dependent => :destroy, :conditions => "student_works.is_test=0 and student_works.is_delete != 1" has_many :student_works_evaluation_distributions, :through => :student_works #一个作业的分配的匿评列表 has_many :journals_for_messages, :as => :jour, :dependent => :destroy - has_many :apply_homeworks + has_many :apply_homeworks, :dependent => :destroy has_many :praise_tread, as: :praise_tread_object, dependent: :destroy has_one :praise_tread_cache, as: :object, dependent: :destroy - # has_many :acts, :class_name => 'Activity', :as => :act, :dependent => :destroy #用户活动 + has_many :acts, :class_name => 'Activity', :as => :act, :dependent => :destroy #用户活动 has_and_belongs_to_many :shixuns # 课程动态 has_many :course_acts, :class_name => 'CourseActivity',:as =>:course_act ,:dependent => :destroy # 课程消息 - # has_many :course_messages, :class_name =>'CourseMessage', :as => :course_message, :dependent => :destroy + has_many :course_messages, :class_name =>'CourseMessage', :as => :course_message, :dependent => :destroy has_many :tidings, as: :container, dependent: :destroy acts_as_attachable acts_as_event :title => Proc.new {|o| "#{l(:label_course_homework)} ##{o.id}: #{o.name}" }, @@ -48,7 +48,7 @@ class HomeworkCommon < ActiveRecord::Base # after_create :act_as_activity after_update :update_activity after_save :act_as_course_activity - # after_destroy :delete_kindeditor_assets + after_destroy :delete_kindeditor_assets before_destroy :update_homework_bank_quotes #删除时更新题库中的引用数 @@ -188,9 +188,9 @@ class HomeworkCommon < ActiveRecord::Base # end end - # def is_program_homework? - # self.homework_type == 2 && self.homework_detail_programing - # end + def is_program_homework? + self.homework_type == 2 && self.homework_detail_programing + end def is_group_homework? self.homework_type == 3 && self.homework_detail_group @@ -225,6 +225,6 @@ class HomeworkCommon < ActiveRecord::Base end end - # delegate :language_name, :language, :to => :homework_detail_programing + delegate :language_name, :language, :to => :homework_detail_programing end diff --git a/app/models/homework_commons_shixuns.rb b/app/models/homework_commons_shixuns.rb old mode 100644 new mode 100755 diff --git a/app/models/homework_detail_group.rb b/app/models/homework_detail_group.rb old mode 100644 new mode 100755 diff --git a/app/models/homework_detail_manual.rb b/app/models/homework_detail_manual.rb old mode 100644 new mode 100755 diff --git a/app/models/homework_detail_programing.rb b/app/models/homework_detail_programing.rb old mode 100644 new mode 100755 diff --git a/app/models/homework_evaluation.rb b/app/models/homework_evaluation.rb old mode 100644 new mode 100755 diff --git a/app/models/homework_for_course.rb b/app/models/homework_for_course.rb old mode 100644 new mode 100755 diff --git a/app/models/homework_group_review.rb b/app/models/homework_group_review.rb old mode 100644 new mode 100755 diff --git a/app/models/homework_group_setting.rb b/app/models/homework_group_setting.rb old mode 100644 new mode 100755 diff --git a/app/models/homework_reference_answer.rb b/app/models/homework_reference_answer.rb old mode 100644 new mode 100755 diff --git a/app/models/homework_review_result.rb b/app/models/homework_review_result.rb old mode 100644 new mode 100755 diff --git a/app/models/homework_sample.rb b/app/models/homework_sample.rb old mode 100644 new mode 100755 diff --git a/app/models/homework_test.rb b/app/models/homework_test.rb old mode 100644 new mode 100755 diff --git a/app/models/homework_user.rb b/app/models/homework_user.rb old mode 100644 new mode 100755 diff --git a/app/models/import_course_user.rb b/app/models/import_course_user.rb old mode 100644 new mode 100755 diff --git a/app/models/import_student.rb b/app/models/import_student.rb old mode 100644 new mode 100755 diff --git a/app/models/inform.rb b/app/models/inform.rb old mode 100644 new mode 100755 diff --git a/app/models/invite_list.rb b/app/models/invite_list.rb old mode 100644 new mode 100755 diff --git a/app/models/issue.rb b/app/models/issue.rb old mode 100644 new mode 100755 diff --git a/app/models/issue_category.rb b/app/models/issue_category.rb old mode 100644 new mode 100755 diff --git a/app/models/issue_custom_field.rb b/app/models/issue_custom_field.rb old mode 100644 new mode 100755 diff --git a/app/models/issue_observer.rb b/app/models/issue_observer.rb old mode 100644 new mode 100755 diff --git a/app/models/issue_overdue.rb b/app/models/issue_overdue.rb old mode 100644 new mode 100755 diff --git a/app/models/issue_priority.rb b/app/models/issue_priority.rb old mode 100644 new mode 100755 diff --git a/app/models/issue_priority_custom_field.rb b/app/models/issue_priority_custom_field.rb old mode 100644 new mode 100755 diff --git a/app/models/issue_query.rb b/app/models/issue_query.rb old mode 100644 new mode 100755 diff --git a/app/models/issue_relation.rb b/app/models/issue_relation.rb old mode 100644 new mode 100755 diff --git a/app/models/issue_status.rb b/app/models/issue_status.rb old mode 100644 new mode 100755 diff --git a/app/models/join_in_competition.rb b/app/models/join_in_competition.rb old mode 100644 new mode 100755 diff --git a/app/models/join_in_contest.rb b/app/models/join_in_contest.rb old mode 100644 new mode 100755 diff --git a/app/models/journal.rb b/app/models/journal.rb old mode 100644 new mode 100755 diff --git a/app/models/journal_detail.rb b/app/models/journal_detail.rb old mode 100644 new mode 100755 diff --git a/app/models/journal_observer.rb b/app/models/journal_observer.rb old mode 100644 new mode 100755 diff --git a/app/models/journal_reply.rb b/app/models/journal_reply.rb old mode 100644 new mode 100755 diff --git a/app/models/journals_for_message.rb b/app/models/journals_for_message.rb old mode 100644 new mode 100755 diff --git a/app/models/journals_for_message_observer.rb b/app/models/journals_for_message_observer.rb old mode 100644 new mode 100755 diff --git a/app/models/kindeditor/asset.rb b/app/models/kindeditor/asset.rb old mode 100644 new mode 100755 diff --git a/app/models/kindeditor/file.rb b/app/models/kindeditor/file.rb old mode 100644 new mode 100755 diff --git a/app/models/kindeditor/flash.rb b/app/models/kindeditor/flash.rb old mode 100644 new mode 100755 diff --git a/app/models/kindeditor/image.rb b/app/models/kindeditor/image.rb old mode 100644 new mode 100755 diff --git a/app/models/kindeditor/media.rb b/app/models/kindeditor/media.rb old mode 100644 new mode 100755 diff --git a/app/models/local_challenge.rb b/app/models/local_challenge.rb old mode 100644 new mode 100755 index 10cf4586..87f89ed3 --- a/app/models/local_challenge.rb +++ b/app/models/local_challenge.rb @@ -1,3 +1,3 @@ -class LocalChallenge < ActiveRecord::Base - -end +class LocalChallenge < ActiveRecord::Base + +end diff --git a/app/models/local_challenge_tag.rb b/app/models/local_challenge_tag.rb old mode 100644 new mode 100755 index 9768ef30..2a1b6ca9 --- a/app/models/local_challenge_tag.rb +++ b/app/models/local_challenge_tag.rb @@ -1,3 +1,3 @@ -class LocalChallengeTag < ActiveRecord::Base - -end +class LocalChallengeTag < ActiveRecord::Base + +end diff --git a/app/models/local_mirror_repository.rb b/app/models/local_mirror_repository.rb old mode 100644 new mode 100755 index d402a2df..7e3446bb --- a/app/models/local_mirror_repository.rb +++ b/app/models/local_mirror_repository.rb @@ -1,3 +1,3 @@ -class LocalMirrorRepository < ActiveRecord::Base - -end +class LocalMirrorRepository < ActiveRecord::Base + +end diff --git a/app/models/local_setting.rb b/app/models/local_setting.rb old mode 100644 new mode 100755 diff --git a/app/models/local_shixun.rb b/app/models/local_shixun.rb old mode 100644 new mode 100755 index b8480236..708c3b70 --- a/app/models/local_shixun.rb +++ b/app/models/local_shixun.rb @@ -1,3 +1,3 @@ -class LocalShixun < ActiveRecord::Base - -end +class LocalShixun < ActiveRecord::Base + +end diff --git a/app/models/local_shixun_tag_repertoire.rb b/app/models/local_shixun_tag_repertoire.rb old mode 100644 new mode 100755 index b3d2721b..d5202b1a --- a/app/models/local_shixun_tag_repertoire.rb +++ b/app/models/local_shixun_tag_repertoire.rb @@ -1,2 +1,2 @@ -class LocalShixunTagRepertoire < ActiveRecord::Base -end +class LocalShixunTagRepertoire < ActiveRecord::Base +end diff --git a/app/models/local_test_set.rb b/app/models/local_test_set.rb old mode 100644 new mode 100755 index f4320b58..e76a8604 --- a/app/models/local_test_set.rb +++ b/app/models/local_test_set.rb @@ -1,3 +1,3 @@ -class LocalTestSet < ActiveRecord::Base - -end +class LocalTestSet < ActiveRecord::Base + +end diff --git a/app/models/mail_handler.rb b/app/models/mail_handler.rb old mode 100644 new mode 100755 diff --git a/app/models/mailer.rb b/app/models/mailer.rb old mode 100644 new mode 100755 diff --git a/app/models/major.rb b/app/models/major.rb old mode 100644 new mode 100755 diff --git a/app/models/major_course.rb b/app/models/major_course.rb old mode 100644 new mode 100755 diff --git a/app/models/mark_down.rb b/app/models/mark_down.rb old mode 100644 new mode 100755 diff --git a/app/models/member.rb b/app/models/member.rb old mode 100644 new mode 100755 diff --git a/app/models/member_role.rb b/app/models/member_role.rb old mode 100644 new mode 100755 diff --git a/app/models/memo.rb b/app/models/memo.rb old mode 100644 new mode 100755 diff --git a/app/models/memo_message.rb b/app/models/memo_message.rb old mode 100644 new mode 100755 diff --git a/app/models/memo_tag_repertoire.rb b/app/models/memo_tag_repertoire.rb old mode 100644 new mode 100755 diff --git a/app/models/message.rb b/app/models/message.rb old mode 100644 new mode 100755 index fff845be..6fb9bb59 --- a/app/models/message.rb +++ b/app/models/message.rb @@ -53,7 +53,6 @@ class Message < ActiveRecord::Base has_many :tidings, :as => :container , :dependent => :destroy belongs_to :reply, :class_name => 'Message', :foreign_key => 'reply_id' - has_one :message_detail, :dependent => :destroy #转发表 has_many :forwards, :as => :from, :dependent => :destroy @@ -118,10 +117,6 @@ class Message < ActiveRecord::Base self.content end - # def content - # self.try(:content) - # end - def topic? parent_id.nil? end diff --git a/app/models/message_all.rb b/app/models/message_all.rb old mode 100644 new mode 100755 diff --git a/app/models/mirror_migrate_error.rb b/app/models/mirror_migrate_error.rb old mode 100644 new mode 100755 diff --git a/app/models/mirror_operation_record.rb b/app/models/mirror_operation_record.rb old mode 100644 new mode 100755 diff --git a/app/models/mirror_repository.rb b/app/models/mirror_repository.rb old mode 100644 new mode 100755 diff --git a/app/models/mirror_repository_type.rb b/app/models/mirror_repository_type.rb old mode 100644 new mode 100755 diff --git a/app/models/mirror_script.rb b/app/models/mirror_script.rb old mode 100644 new mode 100755 diff --git a/app/models/mirror_type.rb b/app/models/mirror_type.rb old mode 100644 new mode 100755 diff --git a/app/models/mirror_update_record.rb b/app/models/mirror_update_record.rb old mode 100644 new mode 100755 diff --git a/app/models/mul_test.rb b/app/models/mul_test.rb old mode 100644 new mode 100755 diff --git a/app/models/myshixun.rb b/app/models/myshixun.rb old mode 100644 new mode 100755 index 774caad9..87400894 --- a/app/models/myshixun.rb +++ b/app/models/myshixun.rb @@ -8,7 +8,7 @@ class Myshixun < ActiveRecord::Base has_many :myshixun_members, :dependent => :destroy has_one :repository, :dependent => :destroy has_many :games, :dependent => :destroy, :order => "games.id ASC" - belongs_to :shixun, counter_cache: true + belongs_to :shixun, counter_cache: :myshixuns_count has_one :shixun_modify, :dependent => :destroy has_one :webssh, :dependent => :destroy has_many :student_works @@ -64,7 +64,7 @@ class Myshixun < ActiveRecord::Base time = 0 self.games.each do |game| if game.status == 2 - time += game.cost_time.to_i + time += (game.end_time.to_i - game.open_time.to_i) > 0 ? (game.end_time.to_i - game.open_time.to_i) : 0 end end time diff --git a/app/models/myshixun_member.rb b/app/models/myshixun_member.rb old mode 100644 new mode 100755 diff --git a/app/models/news.rb b/app/models/news.rb old mode 100644 new mode 100755 diff --git a/app/models/no_use.rb b/app/models/no_use.rb old mode 100644 new mode 100755 diff --git a/app/models/notificationcomment.rb b/app/models/notificationcomment.rb old mode 100644 new mode 100755 diff --git a/app/models/oauth.rb b/app/models/oauth.rb deleted file mode 100644 index 075c1ef0..00000000 --- a/app/models/oauth.rb +++ /dev/null @@ -1,53 +0,0 @@ -require 'base64' - -class Oauth < ActiveRecord::Base - attr_accessible :client_id, :client_secret, :redirect_uri, :access_token, - :refresh_token, :token_created_at,:token_expires_in, :user_id - - belongs_to :user - - def gen_code - code = Base64.urlsafe_encode64 Digest::MD5.hexdigest "#{Time.now}-#{Random.new_seed}" - update_column(:code, code) - code - end - - def gen_token - access_token = Digest::MD5.hexdigest "#{Time.now}-#{Random.new_seed}" - refresh_token = Digest::MD5.hexdigest "#{Random.new_seed}-#{Time.now}-#{Random.new_seed}" - - self.update_attributes(access_token: access_token, - refresh_token: refresh_token, - token_created_at: Time.now.to_i, - token_expires_in: Time.now.to_i + 24*60*60, - ) - end - - - def self.code_valid?(code) - # 1. 是否存在 - oauth = Oauth.where(code: code).order("ID desc").first - return false unless oauth - - # 2. 是否超过10分钟 - return false if Time.now.to_i - oauth.created_at.to_i > 10*60 - - # 3. 是否有使用过 - return false if oauth.access_token.present? - - return true - end - - - def self.auth_code(code, client_id, client_secret) - Oauth.where(code: code, client_id: client_id, client_secret: client_secret).order('id desc').first - end - - def self.auth(access_token) - oauth = self.find_by_access_token(access_token) - return nil unless oauth - oauth.user - end - - -end diff --git a/app/models/oauth_config.rb b/app/models/oauth_config.rb deleted file mode 100644 index 15bfcd82..00000000 --- a/app/models/oauth_config.rb +++ /dev/null @@ -1,3 +0,0 @@ -class OauthConfig < ActiveRecord::Base - attr_accessible :client_id, :client_secret, :redirect_uri, :scope -end diff --git a/app/models/onclick_time.rb b/app/models/onclick_time.rb old mode 100644 new mode 100755 diff --git a/app/models/open_source_project.rb b/app/models/open_source_project.rb old mode 100644 new mode 100755 diff --git a/app/models/option_number.rb b/app/models/option_number.rb old mode 100644 new mode 100755 diff --git a/app/models/org_activity.rb b/app/models/org_activity.rb old mode 100644 new mode 100755 diff --git a/app/models/org_course.rb b/app/models/org_course.rb old mode 100644 new mode 100755 diff --git a/app/models/org_document_comment.rb b/app/models/org_document_comment.rb old mode 100644 new mode 100755 diff --git a/app/models/org_member.rb b/app/models/org_member.rb old mode 100644 new mode 100755 diff --git a/app/models/org_member_role.rb b/app/models/org_member_role.rb old mode 100644 new mode 100755 diff --git a/app/models/org_message.rb b/app/models/org_message.rb old mode 100644 new mode 100755 diff --git a/app/models/org_project.rb b/app/models/org_project.rb old mode 100644 new mode 100755 diff --git a/app/models/org_subfield.rb b/app/models/org_subfield.rb old mode 100644 new mode 100755 diff --git a/app/models/org_subfield_message.rb b/app/models/org_subfield_message.rb old mode 100644 new mode 100755 diff --git a/app/models/organization.rb b/app/models/organization.rb old mode 100644 new mode 100755 diff --git a/app/models/output.rb b/app/models/output.rb old mode 100644 new mode 100755 diff --git a/app/models/partner.rb b/app/models/partner.rb deleted file mode 100644 index 217bc1a7..00000000 --- a/app/models/partner.rb +++ /dev/null @@ -1,8 +0,0 @@ -class Partner < ActiveRecord::Base - # attr_accessible :name, :active - attr_accessor :active - - has_one :school - has_many :customers - has_many :users -end diff --git a/app/models/phone_app_version.rb b/app/models/phone_app_version.rb old mode 100644 new mode 100755 diff --git a/app/models/platform_sample.rb b/app/models/platform_sample.rb old mode 100644 new mode 100755 diff --git a/app/models/poll.rb b/app/models/poll.rb old mode 100644 new mode 100755 diff --git a/app/models/poll_answer.rb b/app/models/poll_answer.rb old mode 100644 new mode 100755 diff --git a/app/models/poll_group_setting.rb b/app/models/poll_group_setting.rb old mode 100644 new mode 100755 diff --git a/app/models/poll_question.rb b/app/models/poll_question.rb old mode 100644 new mode 100755 diff --git a/app/models/poll_user.rb b/app/models/poll_user.rb old mode 100644 new mode 100755 diff --git a/app/models/poll_vote.rb b/app/models/poll_vote.rb old mode 100644 new mode 100755 diff --git a/app/models/portal_image.rb b/app/models/portal_image.rb old mode 100644 new mode 100755 diff --git a/app/models/praise_tread.rb b/app/models/praise_tread.rb old mode 100644 new mode 100755 diff --git a/app/models/praise_tread_cache.rb b/app/models/praise_tread_cache.rb old mode 100644 new mode 100755 diff --git a/app/models/principal.rb b/app/models/principal.rb old mode 100644 new mode 100755 diff --git a/app/models/principal_activity.rb b/app/models/principal_activity.rb old mode 100644 new mode 100755 diff --git a/app/models/private_message.rb b/app/models/private_message.rb old mode 100644 new mode 100755 diff --git a/app/models/professional_level.rb b/app/models/professional_level.rb old mode 100644 new mode 100755 diff --git a/app/models/project.rb b/app/models/project.rb old mode 100644 new mode 100755 diff --git a/app/models/project_custom_field.rb b/app/models/project_custom_field.rb old mode 100644 new mode 100755 diff --git a/app/models/project_info.rb b/app/models/project_info.rb old mode 100644 new mode 100755 diff --git a/app/models/project_score.rb b/app/models/project_score.rb old mode 100644 new mode 100755 diff --git a/app/models/project_status.rb b/app/models/project_status.rb old mode 100644 new mode 100755 diff --git a/app/models/project_tags.rb b/app/models/project_tags.rb old mode 100644 new mode 100755 diff --git a/app/models/projecting_softapplication.rb b/app/models/projecting_softapplication.rb old mode 100644 new mode 100755 diff --git a/app/models/pull_request.rb b/app/models/pull_request.rb old mode 100644 new mode 100755 diff --git a/app/models/quality_analysis.rb b/app/models/quality_analysis.rb old mode 100644 new mode 100755 diff --git a/app/models/query.rb b/app/models/query.rb old mode 100644 new mode 100755 diff --git a/app/models/question_bank.rb b/app/models/question_bank.rb old mode 100644 new mode 100755 diff --git a/app/models/reference_material.rb b/app/models/reference_material.rb old mode 100644 new mode 100755 diff --git a/app/models/relative_memo.rb b/app/models/relative_memo.rb old mode 100644 new mode 100755 diff --git a/app/models/relative_memo_to_open_source_project.rb b/app/models/relative_memo_to_open_source_project.rb old mode 100644 new mode 100755 diff --git a/app/models/rep_statics.rb b/app/models/rep_statics.rb old mode 100644 new mode 100755 diff --git a/app/models/repertoire.rb b/app/models/repertoire.rb old mode 100644 new mode 100755 diff --git a/app/models/reply_for_journal.rb b/app/models/reply_for_journal.rb old mode 100644 new mode 100755 diff --git a/app/models/repository.rb b/app/models/repository.rb old mode 100644 new mode 100755 diff --git a/app/models/repository/bazaar.rb b/app/models/repository/bazaar.rb old mode 100644 new mode 100755 diff --git a/app/models/repository/cvs.rb b/app/models/repository/cvs.rb old mode 100644 new mode 100755 diff --git a/app/models/repository/darcs.rb b/app/models/repository/darcs.rb old mode 100644 new mode 100755 diff --git a/app/models/repository/filesystem.rb b/app/models/repository/filesystem.rb old mode 100644 new mode 100755 diff --git a/app/models/repository/git.rb b/app/models/repository/git.rb old mode 100644 new mode 100755 diff --git a/app/models/repository/gitlab.rb b/app/models/repository/gitlab.rb old mode 100644 new mode 100755 diff --git a/app/models/repository/mercurial.rb b/app/models/repository/mercurial.rb old mode 100644 new mode 100755 diff --git a/app/models/repository/subversion.rb b/app/models/repository/subversion.rb old mode 100644 new mode 100755 diff --git a/app/models/resource_bank.rb b/app/models/resource_bank.rb old mode 100644 new mode 100755 diff --git a/app/models/role.rb b/app/models/role.rb old mode 100644 new mode 100755 diff --git a/app/models/run_code_message.rb b/app/models/run_code_message.rb deleted file mode 100644 index 191ead34..00000000 --- a/app/models/run_code_message.rb +++ /dev/null @@ -1,5 +0,0 @@ -class RunCodeMessage < ActiveRecord::Base - # attr_accessible :title, :body - belongs_to :game - -end diff --git a/app/models/school.rb b/app/models/school.rb old mode 100644 new mode 100755 index 8d377e97..2a33acac --- a/app/models/school.rb +++ b/app/models/school.rb @@ -3,8 +3,7 @@ class School < ActiveRecord::Base attr_accessible :name, :province, :pinyin, :city, :address, :logo_link, :auto_users_trial, :shool_code, :authorization_time, - :identifier, :is_online, :video_desc, :video_name,:course_link, - :course_name, :partner_id, :customer_id + :identifier, :is_online, :video_desc, :video_name,:course_link, :course_name has_many :courses has_many :departments, :dependent => :destroy has_many :shixun_schools, :dependent => :destroy @@ -16,9 +15,6 @@ class School < ActiveRecord::Base has_many :ec_majors, :through => :ec_major_schools has_many :ec_major_schools, :dependent => :destroy - belongs_to :partner - belongs_to :customer - # banner图片信息 has_many :school_images, :dependent => :destroy @@ -30,46 +26,4 @@ class School < ActiveRecord::Base def to_s self.name.to_s end - - def teacher_count - User.find_by_sql("SELECT COUNT(users.`id`) AS teacher_count FROM users LEFT JOIN user_extensions ON - users.id=user_extensions.user_id WHERE user_extensions.`school_id` = #{self.id} AND - user_extensions.`identity` = 0").first.try(:teacher_count) - end - - def student_count - User.find_by_sql("SELECT COUNT(users.`id`) AS student_count FROM users LEFT JOIN user_extensions ON - users.id=user_extensions.user_id WHERE user_extensions.`school_id` = #{self.id} AND - user_extensions.`identity` = 1").first.try(:student_count) - end - - def course_count - Course.find_by_sql("SELECT COUNT(courses.`id`) AS course_count FROM courses LEFT JOIN user_extensions ON - courses.tea_id=user_extensions.user_id WHERE user_extensions.`school_id` = #{self.id} AND - courses.id != 1309").first.try(:course_count) - end - - def shixun_count - Shixun.find_by_sql("select count(s.id) as shixun_count from users u right join shixuns s on u.id=s.user_id and - s.status in (2, 3) inner join user_extensions ue on u.id=ue.user_id and - ue.school_id=#{self.id}").first.try(:shixun_count) - end - - def shixun_report_count - StudentWork.find_by_sql("SELECT count(*) as sw_count FROM `student_works` where user_id in - (SELECT users.id FROM users RIGHT JOIN user_extensions ON users.id=user_extensions.user_id - WHERE user_extensions.`school_id`=#{self.id}) and work_status between 1 and 2 and - myshixun_id !=0").first.try(:sw_count) - end - - def statistic_url - dep = departments.where("identifier is not null").first - url = dep.present? ? "/colleges/#{dep.identifier}/statistics" : "" - end - - def course_act_time - CourseActivity.find_by_sql("SELECT max(ca.updated_at) as max_update FROM course_activities ca left join courses on ca.course_id = - courses.id LEFT JOIN user_extensions ON courses.tea_id=user_extensions.user_id WHERE - user_extensions.`school_id` = #{self.id}").first.try(:max_update) - end end diff --git a/app/models/school_image.rb b/app/models/school_image.rb old mode 100644 new mode 100755 diff --git a/app/models/score_indicator.rb b/app/models/score_indicator.rb old mode 100644 new mode 100755 diff --git a/app/models/score_indicator_quality.rb b/app/models/score_indicator_quality.rb old mode 100644 new mode 100755 diff --git a/app/models/score_quality_description.rb b/app/models/score_quality_description.rb old mode 100644 new mode 100755 diff --git a/app/models/score_set.rb b/app/models/score_set.rb old mode 100644 new mode 100755 diff --git a/app/models/secdomain.rb b/app/models/secdomain.rb old mode 100644 new mode 100755 diff --git a/app/models/seems_rateable_rates.rb b/app/models/seems_rateable_rates.rb old mode 100644 new mode 100755 diff --git a/app/models/setting.rb b/app/models/setting.rb old mode 100644 new mode 100755 diff --git a/app/models/share.rb b/app/models/share.rb old mode 100644 new mode 100755 diff --git a/app/models/shield_activity.rb b/app/models/shield_activity.rb old mode 100644 new mode 100755 diff --git a/app/models/shield_wechat_message.rb b/app/models/shield_wechat_message.rb old mode 100644 new mode 100755 diff --git a/app/models/shixun.rb b/app/models/shixun.rb old mode 100644 new mode 100755 index 6ab98172..eb4f9a83 --- a/app/models/shixun.rb +++ b/app/models/shixun.rb @@ -26,7 +26,7 @@ class Shixun < ActiveRecord::Base attr_accessible :description, :name, :changeset_num, :status, :user_id, :gpid, :language, :identifier, :authentication, :closer_id, :end_time, :publish_time, :propaedeutics, :trainee, :major_id, :homepage_show, :webssh, :hidden, :fork_from, :can_copy, :modify_time, :reset_time, :git_url, :use_scope, - :vnc, :evaluate_script, :image_text, :exec_time, :test_set_permission, :hide_code, :excute_time, :forbid_copy + :vnc, :evaluate_script, :image_text, :exec_time, :test_set_permission, :hide_code, :excute_time, :myshixuns_count has_many :users, :through => :shixun_members has_many :shixun_members, :dependent => :destroy @@ -54,7 +54,7 @@ class Shixun < ActiveRecord::Base scope :visible, lambda{where(status: [2,3])} - scope :min, lambda { select([:id, :name, :gpid, :modify_time, :reset_time, :language, :propaedeutics, :status, :identifier, :test_set_permission, :hide_code, :forbid_copy, + scope :min, lambda { select([:id, :name, :gpid, :modify_time, :reset_time, :language, :propaedeutics, :status, :identifier, :test_set_permission, :hide_code, :webssh, :user_id, :code_hidden, :task_pass, :exec_time, :multi_webssh]) } scope :published, lambda{where(status: 2)} scope :field_for_recommend, lambda{ select([:id, :name, :identifier, :myshixuns_count]) } @@ -73,7 +73,7 @@ class Shixun < ActiveRecord::Base end def fork_identifier - self.fork_from.nil? ? "--" : Shixun.where(id: self.fork_from).first.try(:identifier) + self.fork_from.nil? ? "--" : Shixun.find(self.fork_from).try(:identifier) end def get_fork @@ -353,7 +353,15 @@ class Shixun < ActiveRecord::Base # 大部分是实践题题,因此加入逻辑判断可以减少查询 def shixun_score - self.challenges.map{|c| c.choose_score.to_i }.sum + sum = 0 + self.challenges.each do |challenge| + if challenge.st == 0 + sum += challenge.score + else + sum += challenge.choose_score + end + end + return sum end def shixun_status diff --git a/app/models/shixun_major_course.rb b/app/models/shixun_major_course.rb old mode 100644 new mode 100755 diff --git a/app/models/shixun_member.rb b/app/models/shixun_member.rb old mode 100644 new mode 100755 diff --git a/app/models/shixun_mirror_repository.rb b/app/models/shixun_mirror_repository.rb old mode 100644 new mode 100755 diff --git a/app/models/shixun_modify.rb b/app/models/shixun_modify.rb old mode 100644 new mode 100755 diff --git a/app/models/shixun_port.rb b/app/models/shixun_port.rb old mode 100644 new mode 100755 diff --git a/app/models/shixun_school.rb b/app/models/shixun_school.rb old mode 100644 new mode 100755 diff --git a/app/models/shixun_tag_repertoire.rb b/app/models/shixun_tag_repertoire.rb old mode 100644 new mode 100755 index 8164c98d..83a52ee6 --- a/app/models/shixun_tag_repertoire.rb +++ b/app/models/shixun_tag_repertoire.rb @@ -1,4 +1,4 @@ - class ShixunTagRepertoire < ActiveRecord::Base +class ShixunTagRepertoire < ActiveRecord::Base # attr_accessible :title, :body belongs_to :shixun belongs_to :tag_repertoire diff --git a/app/models/shixun_tags.rb b/app/models/shixun_tags.rb old mode 100644 new mode 100755 diff --git a/app/models/softapplication.rb b/app/models/softapplication.rb old mode 100644 new mode 100755 diff --git a/app/models/sonar_analysis.rb b/app/models/sonar_analysis.rb old mode 100644 new mode 100755 diff --git a/app/models/sonar_error.rb b/app/models/sonar_error.rb old mode 100644 new mode 100755 diff --git a/app/models/sso.rb b/app/models/sso.rb old mode 100644 new mode 100755 diff --git a/app/models/stage.rb b/app/models/stage.rb old mode 100644 new mode 100755 diff --git a/app/models/stage_shixun.rb b/app/models/stage_shixun.rb old mode 100644 new mode 100755 diff --git a/app/models/statistic.rb b/app/models/statistic.rb old mode 100644 new mode 100755 diff --git a/app/models/statistic_score.rb b/app/models/statistic_score.rb old mode 100644 new mode 100755 diff --git a/app/models/student_graduation_topic.rb b/app/models/student_graduation_topic.rb old mode 100644 new mode 100755 diff --git a/app/models/student_work.rb b/app/models/student_work.rb old mode 100644 new mode 100755 index 7a7f5eb3..b6b64523 --- a/app/models/student_work.rb +++ b/app/models/student_work.rb @@ -13,9 +13,9 @@ class StudentWork < ActiveRecord::Base has_many :student_works_scores, :dependent => :destroy has_many :challenge_work_scores, :dependent => :destroy belongs_to :project - # has_many :student_work_tests, order: 'id desc' + has_many :student_work_tests, order: 'id desc' # course's message - # has_many :course_messages, :class_name =>'CourseMessage', :as => :course_message, :dependent => :destroy + has_many :course_messages, :class_name =>'CourseMessage', :as => :course_message, :dependent => :destroy has_many :attachments, :dependent => :destroy has_many :tidings, as: :container, dependent: :destroy belongs_to :myshixun @@ -24,7 +24,7 @@ class StudentWork < ActiveRecord::Base scope :all_commit, lambda{where("work_status != 0")} before_destroy :delete_praise - before_save :set_program_score + before_save :set_program_score, :set_src after_save :update_avg_sum_score # after_create :act_as_message @@ -34,26 +34,25 @@ class StudentWork < ActiveRecord::Base PraiseTread.where("praise_tread_object_id = #{self.id} AND praise_tread_object_type = 'StudentWork'").destroy_all end - # def last_test - # student_work_tests.order('id desc').first - # end + def last_test + student_work_tests.order('id desc').first + end private def set_program_score - # if self.homework_common.is_program_homework? #编程作业,学生提交作品后计算系统得分 - # #根据最后一次测试计算得分 - # unless last_test - # self.system_score = 0 - # else - # self.system_score = last_test.test_score self.homework_common.homework_tests.size - # end - # end + if self.homework_common.is_program_homework? #编程作业,学生提交作品后计算系统得分 + #根据最后一次测试计算得分 + unless last_test + self.system_score = 0 + else + self.system_score = last_test.test_score self.homework_common.homework_tests.size + end + end set_final_score self.homework_common,self end - - # def set_src - # self.description = last_test.src if last_test - # end + def set_src + self.description = last_test.src if last_test + end #成绩计算 def set_final_score homework,student_work @@ -218,8 +217,8 @@ class StudentWork < ActiveRecord::Base # status == 0 : delay def act_as_message - # if self.work_status != 0 && self.created_at > self.homework_common.end_time - # self.course_messages << CourseMessage.new(:user_id => self.user_id, :course_id => self.homework_common.course_id, :viewed => false, :status => false) - # end + if self.work_status != 0 && self.created_at > self.homework_common.end_time + self.course_messages << CourseMessage.new(:user_id => self.user_id, :course_id => self.homework_common.course_id, :viewed => false, :status => false) + end end end diff --git a/app/models/student_work_project.rb b/app/models/student_work_project.rb old mode 100644 new mode 100755 diff --git a/app/models/student_work_test.rb b/app/models/student_work_test.rb old mode 100644 new mode 100755 diff --git a/app/models/student_works_evaluation_distribution.rb b/app/models/student_works_evaluation_distribution.rb old mode 100644 new mode 100755 diff --git a/app/models/student_works_score.rb b/app/models/student_works_score.rb old mode 100644 new mode 100755 diff --git a/app/models/student_works_scores_appeal.rb b/app/models/student_works_scores_appeal.rb old mode 100644 new mode 100755 diff --git a/app/models/students_for_course.rb b/app/models/students_for_course.rb old mode 100644 new mode 100755 diff --git a/app/models/sub_document_comment.rb b/app/models/sub_document_comment.rb old mode 100644 new mode 100755 diff --git a/app/models/sub_domain.rb b/app/models/sub_domain.rb old mode 100644 new mode 100755 diff --git a/app/models/sub_repertoire.rb b/app/models/sub_repertoire.rb old mode 100644 new mode 100755 diff --git a/app/models/subfield_subdomain_dir.rb b/app/models/subfield_subdomain_dir.rb old mode 100644 new mode 100755 diff --git a/app/models/subject.rb b/app/models/subject.rb old mode 100644 new mode 100755 index 819d446c..c416974e --- a/app/models/subject.rb +++ b/app/models/subject.rb @@ -2,7 +2,7 @@ class Subject < ActiveRecord::Base #status :0 编辑中 1 审核中 2 发布 # belongs_to :user has_many :users, :through => :subject_members - has_many :subject_members, :dependent => :destroy, :order => "subject_members.position asc" + has_many :subject_members, :dependent => :destroy, :order => "subject_members.id ASC" has_many :career_stages, :through => :career_stage_subjects has_many :career_stage_subjects, :dependent => :destroy @@ -18,7 +18,6 @@ class Subject < ActiveRecord::Base has_many :tidings, :as => :container, :dependent => :destroy belongs_to :repertoire belongs_to :user - belongs_to :subject_level_system scope :visible, lambda{where(status: 2)} diff --git a/app/models/subject_level_system.rb b/app/models/subject_level_system.rb deleted file mode 100644 index dae815b2..00000000 --- a/app/models/subject_level_system.rb +++ /dev/null @@ -1,7 +0,0 @@ -class SubjectLevelSystem < ActiveRecord::Base - default_scope :order => 'level' - - # attr_accessible :title, :body - has_many :subjects - -end diff --git a/app/models/subject_member.rb b/app/models/subject_member.rb old mode 100644 new mode 100755 diff --git a/app/models/syllabus.rb b/app/models/syllabus.rb old mode 100644 new mode 100755 diff --git a/app/models/syllabus_member.rb b/app/models/syllabus_member.rb old mode 100644 new mode 100755 diff --git a/app/models/syllabus_update_record.rb b/app/models/syllabus_update_record.rb old mode 100644 new mode 100755 diff --git a/app/models/system_message.rb b/app/models/system_message.rb old mode 100644 new mode 100755 diff --git a/app/models/system_update_notice.rb b/app/models/system_update_notice.rb old mode 100644 new mode 100755 diff --git a/app/models/tag_repertoire.rb b/app/models/tag_repertoire.rb old mode 100644 new mode 100755 diff --git a/app/models/teacher.rb b/app/models/teacher.rb old mode 100644 new mode 100755 diff --git a/app/models/teacher_course_group.rb b/app/models/teacher_course_group.rb old mode 100644 new mode 100755 diff --git a/app/models/team_member.rb b/app/models/team_member.rb old mode 100644 new mode 100755 diff --git a/app/models/test_set.rb b/app/models/test_set.rb old mode 100644 new mode 100755 diff --git a/app/models/tiding.rb b/app/models/tiding.rb old mode 100644 new mode 100755 diff --git a/app/models/time_entry.rb b/app/models/time_entry.rb old mode 100644 new mode 100755 diff --git a/app/models/time_entry_activity.rb b/app/models/time_entry_activity.rb old mode 100644 new mode 100755 diff --git a/app/models/time_entry_activity_custom_field.rb b/app/models/time_entry_activity_custom_field.rb old mode 100644 new mode 100755 diff --git a/app/models/time_entry_custom_field.rb b/app/models/time_entry_custom_field.rb old mode 100644 new mode 100755 diff --git a/app/models/time_entry_query.rb b/app/models/time_entry_query.rb old mode 100644 new mode 100755 diff --git a/app/models/token.rb b/app/models/token.rb old mode 100644 new mode 100755 diff --git a/app/models/tracker.rb b/app/models/tracker.rb old mode 100644 new mode 100755 diff --git a/app/models/training.rb b/app/models/training.rb old mode 100644 new mode 100755 diff --git a/app/models/training_payinfo.rb b/app/models/training_payinfo.rb old mode 100644 new mode 100755 diff --git a/app/models/training_task.rb b/app/models/training_task.rb old mode 100644 new mode 100755 diff --git a/app/models/user.rb b/app/models/user.rb old mode 100644 new mode 100755 index 752ea113..6d539017 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -160,7 +160,6 @@ class User < Principal ## added by xianbo for delete # has_many :biding_projects, :dependent => :destroy belongs_to :softapplication, :foreign_key => 'id', :dependent => :destroy - belongs_to :partner ##ended by xianbo #####fq @@ -246,8 +245,6 @@ class User < Principal has_many :ec_major_schools, :through => :ec_major_school_users has_many :ec_major_school_users, :dependent => :destroy - has_many :ec_course_users - ##### scope :logged, lambda { where("#{User.table_name}.status <> #{STATUS_ANONYMOUS}") } @@ -347,21 +344,6 @@ class User < Principal end end } - - # 工程认证的学校 - def ec_school - school_id = self.ec_school_users.pluck(:school_id).first || - self.ec_major_schools.pluck(:school_id).first || - (self.ec_course_users.first && self.ec_course_users.first.try(:ec_course).try(:ec_year).try(:ec_major_school).try(:school_id)) - end - - # 工程认证的权限 - def ec_school_auth school_id - # self.ec_school_users.where(:school_id => school_id).count > 0 || - # self.ec_major_schools.where(:school_id => school_id).count > 0 || - # - end - def challenge_tags games = self.games.where(:id => self.experiences.map(&:container_id), :status => 2) challenge_tags = ChallengeTag.where(:challenge_id => games.map(&:challenge_id)).where("name != ''") @@ -465,7 +447,7 @@ class User < Principal # 平台认证的老师 def is_certification_teacher - self.user_extensions.identity == 0 && self.professional_certification + self.user_extensions.identity == 0 && self.certification == 1 end def job_title @@ -1693,42 +1675,6 @@ class User < Principal end end - def self.create_with_ecoder!(info) - user = User.find_by_phone(info["mobile"]) - - # 如果手机号存在,则直接绑定用户 - # 因为手机号可以取回密码,所以可以视为同一用户 - unless user - user = User.new - user.admin = false - user.login = "ecoder_" + info["mobile"] - - user.phone = info["mobile"] - - unless User.find_by_mail(info["email"]) - user.mail = info["email"] - end - user.nickname = info["username"] - - - user.activate - user.last_login_on = Time.now - - user.ecoder_user_id = info["userid"] - - user.save!(:validate => false) - - - UserStatus.create!(:user_id => user.id, :changsets_count => 0, :watchers_count => 0) - - ue = user.user_extensions ||= UserExtensions.new - ue.user_id = user.id - ue.save! - end - - user - end - end class AnonymousUser < User diff --git a/app/models/user_actions.rb b/app/models/user_actions.rb old mode 100644 new mode 100755 diff --git a/app/models/user_activity.rb b/app/models/user_activity.rb old mode 100644 new mode 100755 diff --git a/app/models/user_custom_field.rb b/app/models/user_custom_field.rb old mode 100644 new mode 100755 diff --git a/app/models/user_day_certification.rb b/app/models/user_day_certification.rb old mode 100644 new mode 100755 diff --git a/app/models/user_extensions.rb b/app/models/user_extensions.rb old mode 100644 new mode 100755 diff --git a/app/models/user_feedback_message.rb b/app/models/user_feedback_message.rb old mode 100644 new mode 100755 diff --git a/app/models/user_grade.rb b/app/models/user_grade.rb old mode 100644 new mode 100755 diff --git a/app/models/user_hidden_module.rb b/app/models/user_hidden_module.rb old mode 100644 new mode 100755 diff --git a/app/models/user_levels.rb b/app/models/user_levels.rb old mode 100644 new mode 100755 diff --git a/app/models/user_preference.rb b/app/models/user_preference.rb old mode 100644 new mode 100755 diff --git a/app/models/user_score.rb b/app/models/user_score.rb old mode 100644 new mode 100755 diff --git a/app/models/user_score_details.rb b/app/models/user_score_details.rb old mode 100644 new mode 100755 diff --git a/app/models/user_search.rb b/app/models/user_search.rb old mode 100644 new mode 100755 diff --git a/app/models/user_status.rb b/app/models/user_status.rb old mode 100644 new mode 100755 diff --git a/app/models/user_system_notice.rb b/app/models/user_system_notice.rb old mode 100644 new mode 100755 diff --git a/app/models/user_wechat.rb b/app/models/user_wechat.rb old mode 100644 new mode 100755 diff --git a/app/models/verification_code.rb b/app/models/verification_code.rb old mode 100644 new mode 100755 diff --git a/app/models/version.rb b/app/models/version.rb old mode 100644 new mode 100755 diff --git a/app/models/version_custom_field.rb b/app/models/version_custom_field.rb old mode 100644 new mode 100755 diff --git a/app/models/visitor.rb b/app/models/visitor.rb old mode 100644 new mode 100755 diff --git a/app/models/watcher.rb b/app/models/watcher.rb old mode 100644 new mode 100755 diff --git a/app/models/watchers_of_projects.rb b/app/models/watchers_of_projects.rb old mode 100644 new mode 100755 diff --git a/app/models/watchers_of_user.rb b/app/models/watchers_of_user.rb old mode 100644 new mode 100755 diff --git a/app/models/web_footer_company.rb b/app/models/web_footer_company.rb old mode 100644 new mode 100755 diff --git a/app/models/web_footer_oranizer.rb b/app/models/web_footer_oranizer.rb old mode 100644 new mode 100755 diff --git a/app/models/webssh.rb b/app/models/webssh.rb old mode 100644 new mode 100755 diff --git a/app/models/wechat_log.rb b/app/models/wechat_log.rb old mode 100644 new mode 100755 diff --git a/app/models/wechat_pay.rb b/app/models/wechat_pay.rb old mode 100644 new mode 100755 diff --git a/app/models/wiki.rb b/app/models/wiki.rb old mode 100644 new mode 100755 diff --git a/app/models/wiki_content.rb b/app/models/wiki_content.rb old mode 100644 new mode 100755 diff --git a/app/models/wiki_content_observer.rb b/app/models/wiki_content_observer.rb old mode 100644 new mode 100755 diff --git a/app/models/wiki_page.rb b/app/models/wiki_page.rb old mode 100644 new mode 100755 diff --git a/app/models/wiki_redirect.rb b/app/models/wiki_redirect.rb old mode 100644 new mode 100755 diff --git a/app/models/work.rb b/app/models/work.rb old mode 100644 new mode 100755 diff --git a/app/models/work_detail_group.rb b/app/models/work_detail_group.rb old mode 100644 new mode 100755 diff --git a/app/models/work_detail_manual.rb b/app/models/work_detail_manual.rb old mode 100644 new mode 100755 diff --git a/app/models/workflow_permission.rb b/app/models/workflow_permission.rb old mode 100644 new mode 100755 diff --git a/app/models/workflow_rule.rb b/app/models/workflow_rule.rb old mode 100644 new mode 100755 diff --git a/app/models/workflow_transition.rb b/app/models/workflow_transition.rb old mode 100644 new mode 100755 diff --git a/app/models/works_category.rb b/app/models/works_category.rb old mode 100644 new mode 100755 diff --git a/app/models/zip_pack.rb b/app/models/zip_pack.rb old mode 100644 new mode 100755 diff --git a/app/models/接口理解文档.md b/app/models/接口理解文档.md old mode 100644 new mode 100755 diff --git a/app/services/careers_service.rb b/app/services/careers_service.rb old mode 100644 new mode 100755 diff --git a/app/services/comment_service.rb b/app/services/comment_service.rb old mode 100644 new mode 100755 diff --git a/app/services/contests_service.rb b/app/services/contests_service.rb old mode 100644 new mode 100755 diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb old mode 100644 new mode 100755 diff --git a/app/services/discusses_service.rb b/app/services/discusses_service.rb old mode 100644 new mode 100755 diff --git a/app/services/ecloud_service.rb b/app/services/ecloud_service.rb deleted file mode 100644 index 9306e57f..00000000 --- a/app/services/ecloud_service.rb +++ /dev/null @@ -1,7 +0,0 @@ -class EcloudService - - def list params - - return {status: 0, message: "test", code: params[:code], params: params} - end -end \ No newline at end of file diff --git a/app/services/games_service.rb b/app/services/games_service.rb old mode 100644 new mode 100755 index cf709c4d..5bbf09fd --- a/app/services/games_service.rb +++ b/app/services/games_service.rb @@ -1,4 +1,4 @@ -# encoding=utf-8 + # encoding=utf-8 class GamesService include ApplicationHelper include GamesHelper @@ -132,7 +132,7 @@ class GamesService output_hash = {:test_sets => test_sets}.merge(:had_test_count => had_test_count, :test_sets_count => test_sets_count, :had_passed_testsests_error_count => had_passed_testsests_error_count) multi_webssh = shixun.webssh == 2 && shixun.multi_webssh - result = {:tpm_modified => tpm_modified, :tpm_cases_modified => tpm_cases_modified, :hide_code => shixun.hide_code, :forbid_copy => shixun.forbid_copy, + result = {:tpm_modified => tpm_modified, :tpm_cases_modified => tpm_cases_modified, :hide_code => shixun.hide_code, :forbid_copy => true, :output_sets => output_hash, :latest_output => latest_output, :mirror_name => mirror_name, :multi_webssh => multi_webssh, :has_answer => has_answer}.merge(container) else # 选择题类型的 @@ -252,7 +252,7 @@ class GamesService is_teacher = (current_user.user_extensions.identity == 0) is_certification_teacher = current_user.is_certification_teacher # 这几种情况可以直接查看答案的:实训未发布;当前用户为实训管理员;已经查看过答案;平台认证的老师; - if (@shixun.status < 2 || shixun_manager(@shixun, current_user) || @game.answer_open == 1 || is_certification_teacher) + if (@shixun.status < 2 || shixun_manager(@shixun, current_user) || @game.answer_open || is_certification_teacher) Rails.logger.info("answer#{params[:identifier]}#### user is #{current_user.id}, status is #{@shixun.status}, manager is #{shixun_manager(@shixun, current_user)}, open #{@game.answer_open}, cer #{is_certification_teacher}") if challenge.st == 0 result = challenge.try(:answer) @@ -277,7 +277,7 @@ class GamesService challenge_score = challenge.try(:score) final_score = @game.final_score if current_user.grade.to_i - challenge_score > 0 - if @game.answer_open == 0 # 如果这是第一次查看答案 + if @game.answer_open # 如果这是第一次查看答案 if challenge.st == 0 final_score = final_score - challenge_score # 积分消耗情况记录 @@ -505,8 +505,8 @@ class GamesService # 更新评测次数 game.update_column(:evaluate_count, (game.evaluate_count.to_i + 1)) # 清空代码评测信息 - msg = game.run_code_message - msg.update_attributes(:status => 0, :message => nil) if msg.present? + # msg = game.run_code_message + # msg.update_attributes(:status => 0, :message => nil) if msg.present? # 更新时间是为了TPM端显示的更新,退出实训及访问实训的时候会更新 myshixun.update_column(:updated_at, Time.now) @@ -718,7 +718,7 @@ class GamesService if had_passed && !game.had_passed? game.update_attributes(:status => 2, :end_time => Time.now) # TPM实训已发布并且没有查看答案 - if shixun.is_published? && game.answer_open == 0 + if shixun.is_published? && game.answer_open.to_i == 0 # 查看答案的时候处理final_scor和扣分记录 experience = score reward_grade(myshixun.owner, game.id, 'Game', score) @@ -802,9 +802,9 @@ class GamesService # 判断评测中的状态有两种:1、如果之前没有通关的,只需判断status为1即可;如果通过关,则判断game的resubmit_identifier是否更新 if (params[:time_out] == "false") && ((params[:resubmit].blank? && game.status==1) || (params[:resubmit].present? && (params[:resubmit] != resubmit_identifier))) # 代码评测的信息 - running_code_status = game.run_code_message.try(:status) - running_code_message = game.run_code_message.try(:message) - return {:running_code_status => running_code_status, :running_code_message => running_code_message} + #running_code_status = game.run_code_message.try(:status) + #running_code_message = game.run_code_message.try(:message) + return #{:running_code_status => running_code_status, :running_code_message => running_code_message} end Rails.logger.info("##### resubmit_identifier is #{resubmit_identifier}") @@ -820,7 +820,7 @@ class GamesService if game_status == 2 # 通关 if shixun.status > 1 score = game.final_score # 查看答案的时候有对最终获得金币进行处理 - experience = game.answer_open > 0 ? 0 : game_challenge.score.to_i + experience = game.answer_open ? 0 : game_challenge.score.to_i else score = 0 experience = 0 @@ -1053,4 +1053,4 @@ class GamesService end user_info end -end \ No newline at end of file +end diff --git a/app/services/homework_service.rb b/app/services/homework_service.rb old mode 100644 new mode 100755 diff --git a/app/services/memos_service.rb b/app/services/memos_service.rb old mode 100644 new mode 100755 diff --git a/app/services/projects_service.rb b/app/services/projects_service.rb old mode 100644 new mode 100755 diff --git a/app/services/resources_service.rb b/app/services/resources_service.rb old mode 100644 new mode 100755 diff --git a/app/services/review_service.rb b/app/services/review_service.rb old mode 100644 new mode 100755 diff --git a/app/services/shixuns_service.rb b/app/services/shixuns_service.rb old mode 100644 new mode 100755 index 69bbc431..ffec7924 --- a/app/services/shixuns_service.rb +++ b/app/services/shixuns_service.rb @@ -125,21 +125,9 @@ class ShixunsService praise_count = d.praise_tread.where(:praise_or_tread => 1).count user_praise= d.praise_tread.select{|pt| pt.user_id == current_user.id}.length > 0 ? true : false # 实训(TPM)的管理员可以看到隐藏的评论 - manager = current_user.manager_of_shixun?(dis, current_user) - game_url = - if manager - position = d.position.nil? ? 1 : d.position - game_identifier = Game.find_by_sql("SELECT g.identifier FROM games g JOIN challenges c on g.challenge_id = c.id - WHERE c.shixun_id = #{dis.id} AND c.position = #{position} AND g.user_id = #{d.user_id}").first.try(:identifier) - "/tasks/#{game_identifier}" - else - "" - end - parents = {:id => d.id, :content => d.content, :time => time_from_now(d.created_at), :position => d.position, - :user_id => d.user.try(:id), :reward => d.reward, :image_url => url_to_avatar(d.user), - :username => d.username, :user_login => d.user.try(:login), :shixun_id => dis.id, :hidden => d.hidden, - :manager => manager, :praise_count => praise_count, game_url: game_url, - :user_praise => user_praise, :admin => current_user.admin?} + parents = {:id => d.id, :content => d.content, :time => time_from_now(d.created_at), :position => d.position, :user_id => d.user.try(:id), :reward => d.reward, + :image_url => url_to_avatar(d.user), :username => d.username, :user_login => d.user.try(:login), :shixun_id => dis.id, :hidden => d.hidden, + :manager => current_user.manager_of_shixun?(dis, current_user), :praise_count => praise_count, :user_praise => user_praise, :admin => current_user.admin?} # 现在没有二级回复,所以查询的时候直接从root_id取 children = Discuss.where(:root_id => d.id).includes(:user).reorder("created_at asc") diff --git a/app/services/sources_service.rb b/app/services/sources_service.rb old mode 100644 new mode 100755 diff --git a/app/services/syllabuses_service.rb b/app/services/syllabuses_service.rb old mode 100644 new mode 100755 diff --git a/app/services/users_service.rb b/app/services/users_service.rb old mode 100644 new mode 100755 diff --git a/app/services/watches_service.rb b/app/services/watches_service.rb old mode 100644 new mode 100755 diff --git a/app/services/wechat_service.rb b/app/services/wechat_service.rb old mode 100644 new mode 100755 diff --git a/app/services/zip_service.rb b/app/services/zip_service.rb old mode 100644 new mode 100755 diff --git a/app/sweepers/NOTEMPTY b/app/sweepers/NOTEMPTY old mode 100644 new mode 100755 diff --git a/app/tasks/destroy_repository_task.rb b/app/tasks/destroy_repository_task.rb old mode 100644 new mode 100755 diff --git a/app/tasks/office_conver_task.rb b/app/tasks/office_conver_task.rb old mode 100644 new mode 100755 diff --git a/app/views/account/_about_us_show.html.erb b/app/views/account/_about_us_show.html.erb old mode 100644 new mode 100755 diff --git a/app/views/account/_agreement_show.erb b/app/views/account/_agreement_show.erb old mode 100644 new mode 100755 diff --git a/app/views/account/_certification_one_day.html.erb b/app/views/account/_certification_one_day.html.erb old mode 100644 new mode 100755 index c9b5ab77..60c009de --- a/app/views/account/_certification_one_day.html.erb +++ b/app/views/account/_certification_one_day.html.erb @@ -1,7 +1,7 @@
    提示
    -

    资料完善成功,可以试用1天
    超过期限,需要经过管理员的授权审核

    +

    资料完善成功,老师身份需要经过管理员的授权审核

    立即申请授权 diff --git a/app/views/account/_change_user_email.html.erb b/app/views/account/_change_user_email.html.erb old mode 100644 new mode 100755 diff --git a/app/views/account/_contact_us_show.html.erb b/app/views/account/_contact_us_show.html.erb old mode 100644 new mode 100755 diff --git a/app/views/account/_cooperative_partner_show.erb b/app/views/account/_cooperative_partner_show.erb old mode 100644 new mode 100755 diff --git a/app/views/account/_copyright_info.html.erb b/app/views/account/_copyright_info.html.erb old mode 100644 new mode 100755 diff --git a/app/views/account/_experience_record_list.html.erb b/app/views/account/_experience_record_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/account/_gold_record_list.html.erb b/app/views/account/_gold_record_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/account/_has_authentication.html.erb b/app/views/account/_has_authentication.html.erb old mode 100644 new mode 100755 index f42f6ca6..83169ed7 --- a/app/views/account/_has_authentication.html.erb +++ b/app/views/account/_has_authentication.html.erb @@ -10,7 +10,7 @@ :locals => { :tip1 => "更多功能,需要经过管理员的授权审核", :tip2 => "认证申请已提交,我们将在1个工作日内完成审核", - :btn => "试用申请", + :btn => "授权申请", :url => "javascript:void(0);" } %> diff --git a/app/views/account/_help_center_show.html.erb b/app/views/account/_help_center_show.html.erb old mode 100644 new mode 100755 diff --git a/app/views/account/_login.html.erb b/app/views/account/_login.html.erb old mode 100644 new mode 100755 index 93146a31..154a5d4f --- a/app/views/account/_login.html.erb +++ b/app/views/account/_login.html.erb @@ -172,7 +172,7 @@ $("#psd_login_btn").attr("disabled", false); } - // 试用申请弹框 + // 授权申请弹框 $("#apply_trail_submit_btn").on('click', function(){ if($("#apply_reason").val().trim() == ""){ $("#hint_message").show(); diff --git a/app/views/account/_new_coop.html.erb b/app/views/account/_new_coop.html.erb old mode 100644 new mode 100755 diff --git a/app/views/account/_new_or_edit.html.erb b/app/views/account/_new_or_edit.html.erb old mode 100644 new mode 100755 diff --git a/app/views/account/_pro_certification_form.html.erb b/app/views/account/_pro_certification_form.html.erb old mode 100644 new mode 100755 index 8c5552af..f9d3acb2 --- a/app/views/account/_pro_certification_form.html.erb +++ b/app/views/account/_pro_certification_form.html.erb @@ -10,9 +10,6 @@ <% end %> diff --git a/app/views/account/_suggest_show.html.erb b/app/views/account/_suggest_show.html.erb old mode 100644 new mode 100755 index e1891d13..9279d45a --- a/app/views/account/_suggest_show.html.erb +++ b/app/views/account/_suggest_show.html.erb @@ -1,6 +1,6 @@ <%= stylesheet_link_tag 'css/public','css/common'%> <%= content_for(:header_tags) do %> - <%= import_ke(enable_at: false, prettify: false, init_activity: false) %> + <%= import_ke(enable_at: false, prettify: false, init_activity: false) %> <% end %>
    @@ -15,94 +15,79 @@ - <%= form_for('new_form',:url => insert_suggest_path(), :html =>{:id => "insert_suggest"}, :method => :post) do |f| %> -
    - *问题分类 -
    - - - - - - -
    -
    -
    - *问题页面网址 -
    - -
    -

    网址不能为空

    -
    -
    - *问题描述 -
    - - -
    -

    内容不能为空

    - - - - - - - 提交 + +
    +

    内容不能为空

    + + + + + + + 提交 + <% end %>
    - <% end %>
    \ No newline at end of file +Educoder
    \ No newline at end of file diff --git a/app/views/competition_teams/_competition_team_form.html.erb b/app/views/competition_teams/_competition_team_form.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competition_teams/_edit.html.erb b/app/views/competition_teams/_edit.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competition_teams/_search_member_list.html.erb b/app/views/competition_teams/_search_member_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competition_teams/_search_teacher_list.html.erb b/app/views/competition_teams/_search_teacher_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competition_teams/_search_user_block.html.erb b/app/views/competition_teams/_search_user_block.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competition_teams/create.js.erb b/app/views/competition_teams/create.js.erb old mode 100644 new mode 100755 diff --git a/app/views/competition_teams/edit.js.erb b/app/views/competition_teams/edit.js.erb old mode 100644 new mode 100755 diff --git a/app/views/competition_teams/exit_team.js.erb b/app/views/competition_teams/exit_team.js.erb old mode 100644 new mode 100755 diff --git a/app/views/competition_teams/join_team.js.erb b/app/views/competition_teams/join_team.js.erb old mode 100644 new mode 100755 diff --git a/app/views/competition_teams/new.js.erb b/app/views/competition_teams/new.js.erb old mode 100644 new mode 100755 diff --git a/app/views/competition_teams/personal_enroll.js.erb b/app/views/competition_teams/personal_enroll.js.erb old mode 100644 new mode 100755 diff --git a/app/views/competition_teams/search_non_user.js.erb b/app/views/competition_teams/search_non_user.js.erb old mode 100644 new mode 100755 diff --git a/app/views/competition_teams/search_teacher.js.erb b/app/views/competition_teams/search_teacher.js.erb old mode 100644 new mode 100755 diff --git a/app/views/competition_teams/update.js.erb b/app/views/competition_teams/update.js.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/_add_announcement.html.erb b/app/views/competitions/_add_announcement.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/_add_md_contents.html.erb b/app/views/competitions/_add_md_contents.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/_annotation_2018_competition.html.erb b/app/views/competitions/_annotation_2018_competition.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/_ccf_competition.html.erb b/app/views/competitions/_ccf_competition.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/_chartList.html.erb b/app/views/competitions/_chartList.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/_edit_rule.html.erb b/app/views/competitions/_edit_rule.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/_enroll_createTeam.html.erb b/app/views/competitions/_enroll_createTeam.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/_header.html.erb b/app/views/competitions/_header.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/_hn_competition.html.erb b/app/views/competitions/_hn_competition.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/_qg_competition.html.erb b/app/views/competitions/_qg_competition.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/_show_rule.html.erb b/app/views/competitions/_show_rule.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/_team_list.html.erb b/app/views/competitions/_team_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/charts.html.erb b/app/views/competitions/charts.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/charts.js.erb b/app/views/competitions/charts.js.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/competition_images.js.erb b/app/views/competitions/competition_images.js.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/competition_setting.js.erb b/app/views/competitions/competition_setting.js.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/db.html.erb b/app/views/competitions/db.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/delete_competition_stage.js.erb b/app/views/competitions/delete_competition_stage.js.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/delete_stage_section.js.erb b/app/views/competitions/delete_stage_section.js.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/edit_inform.html.erb b/app/views/competitions/edit_inform.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/edit_md_content.html.erb b/app/views/competitions/edit_md_content.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/edit_rule.js.erb b/app/views/competitions/edit_rule.js.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/enroll.html.erb b/app/views/competitions/enroll.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/enroll.js.erb b/app/views/competitions/enroll.js.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/home.html.erb b/app/views/competitions/home.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/index.html.erb b/app/views/competitions/index.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/informs.html.erb b/app/views/competitions/informs.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/md_content.html.erb b/app/views/competitions/md_content.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/new_competition_stage.js.erb b/app/views/competitions/new_competition_stage.js.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/new_inform.html.erb b/app/views/competitions/new_inform.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/new_stage_section.js.erb b/app/views/competitions/new_stage_section.js.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/online_switch.js.erb b/app/views/competitions/online_switch.js.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/send_message.js.erb b/app/views/competitions/send_message.js.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/show.html.erb b/app/views/competitions/show.html.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/update_competition_stage.js.erb b/app/views/competitions/update_competition_stage.js.erb old mode 100644 new mode 100755 diff --git a/app/views/competitions/update_stage_section.js.erb b/app/views/competitions/update_stage_section.js.erb old mode 100644 new mode 100755 diff --git a/app/views/contest_members/contest_member_autocomplete.js.erb b/app/views/contest_members/contest_member_autocomplete.js.erb old mode 100644 new mode 100755 diff --git a/app/views/contest_members/create.js.erb b/app/views/contest_members/create.js.erb old mode 100644 new mode 100755 diff --git a/app/views/contest_members/destroy.js.erb b/app/views/contest_members/destroy.js.erb old mode 100644 new mode 100755 diff --git a/app/views/contest_members/update.js.erb b/app/views/contest_members/update.js.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/_add_score.html.erb b/app/views/contestant_works/_add_score.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/_choose_group_member.html.erb b/app/views/contestant_works/_choose_group_member.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/_contest_evaluation_group.html.erb b/app/views/contestant_works/_contest_evaluation_group.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/_contest_evaluation_group_work.html.erb b/app/views/contestant_works/_contest_evaluation_group_work.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/_contest_evaluation_title.html.erb b/app/views/contestant_works/_contest_evaluation_title.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/_contest_evaluation_un_group.html.erb b/app/views/contestant_works/_contest_evaluation_un_group.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/_contest_evaluation_un_group_work.html.erb b/app/views/contestant_works/_contest_evaluation_un_group_work.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/_contest_evaluation_un_title.html.erb b/app/views/contestant_works/_contest_evaluation_un_title.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/_contest_evaluation_un_work.html.erb b/app/views/contestant_works/_contest_evaluation_un_work.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/_contest_evaluation_work.html.erb b/app/views/contestant_works/_contest_evaluation_work.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/_contest_work_attachments_status.html.erb b/app/views/contestant_works/_contest_work_attachments_status.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/_contestant_work_attachment.html.erb b/app/views/contestant_works/_contestant_work_attachment.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/_contestant_work_list.html.erb b/app/views/contestant_works/_contestant_work_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/_contestant_work_score.html.erb b/app/views/contestant_works/_contestant_work_score.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/_contestant_work_score_records.html.erb b/app/views/contestant_works/_contestant_work_score_records.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/_has_commit_work.html.erb b/app/views/contestant_works/_has_commit_work.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/_relate_project.html.erb b/app/views/contestant_works/_relate_project.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/_relate_projects.html.erb b/app/views/contestant_works/_relate_projects.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/_show.html.erb b/app/views/contestant_works/_show.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/_work_edit_information.html.erb b/app/views/contestant_works/_work_edit_information.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/_work_information.html.erb b/app/views/contestant_works/_work_information.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/_work_post_brief.html.erb b/app/views/contestant_works/_work_post_brief.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/add_score.js.erb b/app/views/contestant_works/add_score.js.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/cancel_relate_project.js.erb b/app/views/contestant_works/cancel_relate_project.js.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/create.js.erb b/app/views/contestant_works/create.js.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/edit.html.erb b/app/views/contestant_works/edit.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/index.html.erb b/app/views/contestant_works/index.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/new.html.erb b/app/views/contestant_works/new.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/new_student_work_project.js.erb b/app/views/contestant_works/new_student_work_project.js.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/retry_work.js.erb b/app/views/contestant_works/retry_work.js.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/search_contest_students.js.erb b/app/views/contestant_works/search_contest_students.js.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/show.js.erb b/app/views/contestant_works/show.js.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/student_work_project.js.erb b/app/views/contestant_works/student_work_project.js.erb old mode 100644 new mode 100755 diff --git a/app/views/contestant_works/update.js.erb b/app/views/contestant_works/update.js.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/_boards.html.erb b/app/views/contests/_boards.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/_contest_activity.html.erb b/app/views/contests/_contest_activity.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/_contest_all_member.html.erb b/app/views/contests/_contest_all_member.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/_contest_base_info.html.erb b/app/views/contests/_contest_base_info.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/_contest_jours_list.html.erb b/app/views/contests/_contest_jours_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/_contest_member.html.erb b/app/views/contests/_contest_member.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/_edit.html.erb b/app/views/contests/_edit.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/_join_contest_box.html.erb b/app/views/contests/_join_contest_box.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/_mamager_setting.html.erb b/app/views/contests/_mamager_setting.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/_members.html.erb b/app/views/contests/_members.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/_upload_img.html.erb b/app/views/contests/_upload_img.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/contest_activities.html.erb b/app/views/contests/contest_activities.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/contest_activities.js.erb b/app/views/contests/contest_activities.js.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/dealwith_apply_request.js.erb b/app/views/contests/dealwith_apply_request.js.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/destroy.js.erb b/app/views/contests/destroy.js.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/feedback.html.erb b/app/views/contests/feedback.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/feedback.js.erb b/app/views/contests/feedback.js.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/join_contest.js.erb b/app/views/contests/join_contest.js.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/join_contest_multi_role.js.erb b/app/views/contests/join_contest_multi_role.js.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/member.html.erb b/app/views/contests/member.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/member.js.erb b/app/views/contests/member.js.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/new.html.erb b/app/views/contests/new.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/private_or_public.js.erb b/app/views/contests/private_or_public.js.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/renew.js.erb b/app/views/contests/renew.js.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/set_contest_attribute.js.erb b/app/views/contests/set_contest_attribute.js.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/set_invite_code_halt.js.erb b/app/views/contests/set_invite_code_halt.js.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/settings.html.erb b/app/views/contests/settings.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/show.html.erb b/app/views/contests/show.html.erb old mode 100644 new mode 100755 diff --git a/app/views/contests/show.js.erb b/app/views/contests/show.js.erb old mode 100644 new mode 100755 diff --git a/app/views/context_menus/issues.html.erb b/app/views/context_menus/issues.html.erb old mode 100644 new mode 100755 diff --git a/app/views/context_menus/time_entries.html.erb b/app/views/context_menus/time_entries.html.erb old mode 100644 new mode 100755 diff --git a/app/views/cooperates/_partner_item.html.erb b/app/views/cooperates/_partner_item.html.erb deleted file mode 100644 index b94c7926..00000000 --- a/app/views/cooperates/_partner_item.html.erb +++ /dev/null @@ -1,41 +0,0 @@ -

    - 序号 - 单位名称 - 教师 - 学生 - 课堂 - 发布实训 - 实训报告 - 最新课堂动态时间 - 使用详情 -

    -
      - <% @schools.each_with_index do |school, index| %> -
    • - <%= index + 1 %> - <%= school.name %> - <%= school.teacher_count %> - <%= school.student_count %> - <%= school.course_count %> - <%= school.shixun_count %> - <%= school.shixun_report_count %> - <%= school.course_act_time.present? ? format_time(school.course_act_time) : "--" %> - - <% if school.statistic_url != "" %> - 查看 - <% else %> - -- - <% end %> - -
    • - <% end %> -
    - -
    -
    -
      - <%= pagination_links_full @obj_pages, @obj_count, :per_page_links => false, :remote => true, :flag => true, :is_new => true %> -
    -
    -
    -
    \ No newline at end of file diff --git a/app/views/cooperates/partner_list.html.erb b/app/views/cooperates/partner_list.html.erb deleted file mode 100644 index 06cc0910..00000000 --- a/app/views/cooperates/partner_list.html.erb +++ /dev/null @@ -1,42 +0,0 @@ -
    -
    - -
    - - <%= @obj_count %> - 个检索结果(<%= @all_count %> 单位) - -
    - - -
    -
    - -
    - <%= render :partial => "partner_item" %> -
    -
    - -
    - - \ No newline at end of file diff --git a/app/views/cooperates/partner_list.js.erb b/app/views/cooperates/partner_list.js.erb deleted file mode 100644 index 7b44c9df..00000000 --- a/app/views/cooperates/partner_list.js.erb +++ /dev/null @@ -1,2 +0,0 @@ -$("#partner_school_list").html("<%= j(render :partial => "partner_item") %>"); -$("#search_partner_count").html("<%= @obj_count %>"); \ No newline at end of file diff --git a/app/views/cooperation/index.html.erb b/app/views/cooperation/index.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_act_table.html.erb b/app/views/courses/_act_table.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_add_members.html.erb b/app/views/courses/_add_members.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_compare_code_tips_1.html.erb b/app/views/courses/_compare_code_tips_1.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_compare_code_tips_2.html.erb b/app/views/courses/_compare_code_tips_2.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_comprehensive_statistics.html.erb b/app/views/courses/_comprehensive_statistics.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_copy_course.html.erb b/app/views/courses/_copy_course.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_course.html.erb b/app/views/courses/_course.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_courseList.html.erb b/app/views/courses/_courseList.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_course_activity.html.erb b/app/views/courses/_course_activity.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_course_activity_content.html.erb b/app/views/courses/_course_activity_content.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_course_activity_users.html.erb b/app/views/courses/_course_activity_users.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_course_ad.html.erb b/app/views/courses/_course_ad.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_course_board_settings.html.erb b/app/views/courses/_course_board_settings.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_course_form.html.erb b/app/views/courses/_course_form.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_course_heroes.html.erb b/app/views/courses/_course_heroes.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_course_homework_catagories.html.erb b/app/views/courses/_course_homework_catagories.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_course_index_search.html.erb b/app/views/courses/_course_index_search.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_course_jours_list.html.erb b/app/views/courses/_course_jours_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_course_member_opr.html.erb b/app/views/courses/_course_member_opr.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_course_members.html.erb b/app/views/courses/_course_members.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_course_outlines_list.html.erb b/app/views/courses/_course_outlines_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_course_resources_html.erb b/app/views/courses/_course_resources_html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_course_student.html.erb b/app/views/courses/_course_student.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_course_teacher.html.erb b/app/views/courses/_course_teacher.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_courses_jours.html.erb b/app/views/courses/_courses_jours.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_delete_member_group.html.erb b/app/views/courses/_delete_member_group.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_edit.html.erb b/app/views/courses/_edit.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_groups_name.html.erb b/app/views/courses/_groups_name.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_hero_table.html.erb b/app/views/courses/_hero_table.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_history.html.erb b/app/views/courses/_history.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_homework_form.html.erb b/app/views/courses/_homework_form.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_join_or_add.html.erb b/app/views/courses/_join_or_add.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_join_private_course.html.erb b/app/views/courses/_join_private_course.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_member.html.erb b/app/views/courses/_member.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_member_all_student_list.html.erb b/app/views/courses/_member_all_student_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_member_group_student_list.html.erb b/app/views/courses/_member_group_student_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_member_no_group_student_list.html.erb b/app/views/courses/_member_no_group_student_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_member_teacher_list.html.erb b/app/views/courses/_member_teacher_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_new_groups_name.html.erb b/app/views/courses/_new_groups_name.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_new_member_list.html.erb b/app/views/courses/_new_member_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_project_table.html.erb b/app/views/courses/_project_table.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_recommendation.html.erb b/app/views/courses/_recommendation.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_rename_homework_category.html.erb b/app/views/courses/_rename_homework_category.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_search_member_list.html.erb b/app/views/courses/_search_member_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_searchmembers.html.erb b/app/views/courses/_searchmembers.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_set_course_time.html.erb b/app/views/courses/_set_course_time.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_set_join.js.erb b/app/views/courses/_set_join.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_show_compare_code.html.erb b/app/views/courses/_show_compare_code.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_show_member_act_score.html.erb b/app/views/courses/_show_member_act_score.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_show_member_score.html.erb b/app/views/courses/_show_member_score.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_term_select.html.erb b/app/views/courses/_term_select.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_tool_expand.html.erb b/app/views/courses/_tool_expand.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/_user_homework_search_list.html.erb b/app/views/courses/_user_homework_search_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/addgroups.js.erb b/app/views/courses/addgroups.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/archive_course.js.erb b/app/views/courses/archive_course.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/change_manager.js.erb b/app/views/courses/change_manager.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/choose_course_group.js.erb b/app/views/courses/choose_course_group.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/choose_graduation_group.js.erb b/app/views/courses/choose_graduation_group.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/code_repeat.html.erb b/app/views/courses/code_repeat.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/course_outline.js.erb b/app/views/courses/course_outline.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/course_statistics.html.erb b/app/views/courses/course_statistics.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/course_statistics.js.erb b/app/views/courses/course_statistics.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/create_homework_category.js.erb b/app/views/courses/create_homework_category.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/delete_course_students.js.erb b/app/views/courses/delete_course_students.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/delete_member.js.erb b/app/views/courses/delete_member.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/destroy.js.erb b/app/views/courses/destroy.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/feedback.html.erb b/app/views/courses/feedback.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/file.html.erb b/app/views/courses/file.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/finishcourse.js.erb b/app/views/courses/finishcourse.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/group_member.html.erb b/app/views/courses/group_member.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/has_group_student_list.html.erb b/app/views/courses/has_group_student_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/has_group_student_list.js.erb b/app/views/courses/has_group_student_list.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/homework_search.js.erb b/app/views/courses/homework_search.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/import_course_group.js.erb b/app/views/courses/import_course_group.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/import_excel.js.erb b/app/views/courses/import_excel.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/index.html.erb b/app/views/courses/index.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/index.js.erb b/app/views/courses/index.js.erb old mode 100644 new mode 100755 index f211e3ae..7ed24fff --- a/app/views/courses/index.js.erb +++ b/app/views/courses/index.js.erb @@ -1 +1 @@ -$("#intelligence_course_list").html("<%= j(render :partial => "courses/courseList") %>"); +$("#intelligence_course_list").html("<%= j(render :partial => "courses/courseList") %>"); \ No newline at end of file diff --git a/app/views/courses/join.js.erb b/app/views/courses/join.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/join_course_multi_role.js.erb b/app/views/courses/join_course_multi_role.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/join_group.js.erb b/app/views/courses/join_group.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/join_private_courses.js.erb b/app/views/courses/join_private_courses.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/member.html.erb b/app/views/courses/member.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/member.js.erb b/app/views/courses/member.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/member_score_sort.js.erb b/app/views/courses/member_score_sort.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/new.html.erb b/app/views/courses/new.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/new_join.js.erb b/app/views/courses/new_join.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/no_group_student_list.html.erb b/app/views/courses/no_group_student_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/no_group_student_list.js.erb b/app/views/courses/no_group_student_list.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/none_register_students.html.erb b/app/views/courses/none_register_students.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/open_or_close_os_interface.js.erb b/app/views/courses/open_or_close_os_interface.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/private_or_public.js.erb b/app/views/courses/private_or_public.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/rename_homework_category.js.erb b/app/views/courses/rename_homework_category.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/search.html.erb b/app/views/courses/search.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/search_course_teacher_list.js.erb b/app/views/courses/search_course_teacher_list.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/search_member.js.erb b/app/views/courses/search_member.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/search_not_group_member.js.erb b/app/views/courses/search_not_group_member.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/search_not_students.js.erb b/app/views/courses/search_not_students.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/search_not_teachers.js.erb b/app/views/courses/search_not_teachers.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/search_public_orgs_not_in_course.js.erb b/app/views/courses/search_public_orgs_not_in_course.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/searchgroupmembers.js.erb b/app/views/courses/searchgroupmembers.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/searchmembers.js.erb b/app/views/courses/searchmembers.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/set_course_outline.js.erb b/app/views/courses/set_course_outline.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/set_invite_code_halt.js.erb b/app/views/courses/set_invite_code_halt.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings.html.erb b/app/views/courses/settings.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings/_add_students.html.erb b/app/views/courses/settings/_add_students.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings/_add_teachers.html.erb b/app/views/courses/settings/_add_teachers.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings/_added_orgs.html.erb b/app/views/courses/settings/_added_orgs.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings/_all_student_list.html.erb b/app/views/courses/settings/_all_student_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings/_all_student_list_block.html.erb b/app/views/courses/settings/_all_student_list_block.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings/_all_teacher_list_ul.erb b/app/views/courses/settings/_all_teacher_list_ul.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings/_boards_list.html.erb b/app/views/courses/settings/_boards_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings/_boards_setting.html.erb b/app/views/courses/settings/_boards_setting.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings/_change_manager.html.erb b/app/views/courses/settings/_change_manager.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings/_choose_course_group.html.erb b/app/views/courses/settings/_choose_course_group.html.erb old mode 100644 new mode 100755 index b6b434e5..71f60f90 --- a/app/views/courses/settings/_choose_course_group.html.erb +++ b/app/views/courses/settings/_choose_course_group.html.erb @@ -12,7 +12,7 @@ 请先选择一个分班 <% end %> -
    + diff --git a/app/views/courses/settings/_course_member.html.erb b/app/views/courses/settings/_course_member.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings/_edit.html.erb b/app/views/courses/settings/_edit.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings/_has_group_student_list.html.erb b/app/views/courses/settings/_has_group_student_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings/_has_group_student_list_block.html.erb b/app/views/courses/settings/_has_group_student_list_block.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings/_import_info.html.erb b/app/views/courses/settings/_import_info.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings/_import_students.html.erb b/app/views/courses/settings/_import_students.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings/_import_students_result.html.erb b/app/views/courses/settings/_import_students_result.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings/_join_org.html.erb b/app/views/courses/settings/_join_org.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings/_member.html.erb b/app/views/courses/settings/_member.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings/_members.html.erb b/app/views/courses/settings/_members.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings/_members_addTeam.html.erb b/app/views/courses/settings/_members_addTeam.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings/_moduels.html.erb b/app/views/courses/settings/_moduels.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings/_no_group_student_list.html.erb b/app/views/courses/settings/_no_group_student_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings/_no_group_student_list_block.html.erb b/app/views/courses/settings/_no_group_student_list_block.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings/_search_not_students_list.html.erb b/app/views/courses/settings/_search_not_students_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings/_search_not_teachers_list.html.erb b/app/views/courses/settings/_search_not_teachers_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings/_search_teacher_list.html.erb b/app/views/courses/settings/_search_teacher_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/settings/_student_table.html.erb b/app/views/courses/settings/_student_table.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/show.html.erb b/app/views/courses/show.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/show.js.erb b/app/views/courses/show.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/show_comparecode.html.erb b/app/views/courses/show_comparecode.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/show_comparecode.js.erb b/app/views/courses/show_comparecode.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/show_member_act_score.js.erb b/app/views/courses/show_member_act_score.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/show_member_score.js.erb b/app/views/courses/show_member_score.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/show_old.html.erb b/app/views/courses/show_old.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/statistics_course.html.erb b/app/views/courses/statistics_course.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/students.html.erb b/app/views/courses/students.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/students.js.erb b/app/views/courses/students.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/syllabus.html.erb b/app/views/courses/syllabus.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/sync_students.js.erb b/app/views/courses/sync_students.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/teacher_assign_group.js.erb b/app/views/courses/teacher_assign_group.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/teacher_graduation_group.js.erb b/app/views/courses/teacher_graduation_group.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/teachers.html.erb b/app/views/courses/teachers.html.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/teachers.js.erb b/app/views/courses/teachers.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/unjoin_group.js.erb b/app/views/courses/unjoin_group.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/update.js.erb b/app/views/courses/update.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/update_course_module.js.erb b/app/views/courses/update_course_module.js.erb old mode 100644 new mode 100755 diff --git a/app/views/courses/updategroupname.js.erb b/app/views/courses/updategroupname.js.erb old mode 100644 new mode 100755 diff --git a/app/views/custom_fields/_form.html.erb b/app/views/custom_fields/_form.html.erb old mode 100644 new mode 100755 diff --git a/app/views/custom_fields/_index.html.erb b/app/views/custom_fields/_index.html.erb old mode 100644 new mode 100755 diff --git a/app/views/custom_fields/edit.html.erb b/app/views/custom_fields/edit.html.erb old mode 100644 new mode 100755 diff --git a/app/views/custom_fields/index.html.erb b/app/views/custom_fields/index.html.erb old mode 100644 new mode 100755 diff --git a/app/views/custom_fields/new.html.erb b/app/views/custom_fields/new.html.erb old mode 100644 new mode 100755 diff --git a/app/views/custom_fields/new.js.erb b/app/views/custom_fields/new.js.erb old mode 100644 new mode 100755 diff --git a/app/views/department/destroy.js.erb b/app/views/department/destroy.js.erb old mode 100644 new mode 100755 diff --git a/app/views/discusses/_dis_praise.html.erb b/app/views/discusses/_dis_praise.html.erb old mode 100644 new mode 100755 diff --git a/app/views/discusses/destroy.js.erb b/app/views/discusses/destroy.js.erb old mode 100644 new mode 100755 diff --git a/app/views/discusses/hidden_record.js.erb b/app/views/discusses/hidden_record.js.erb old mode 100644 new mode 100755 diff --git a/app/views/documents/_document.html.erb b/app/views/documents/_document.html.erb old mode 100644 new mode 100755 diff --git a/app/views/documents/_form.html.erb b/app/views/documents/_form.html.erb old mode 100644 new mode 100755 diff --git a/app/views/documents/edit.html.erb b/app/views/documents/edit.html.erb old mode 100644 new mode 100755 diff --git a/app/views/documents/index.html.erb b/app/views/documents/index.html.erb old mode 100644 new mode 100755 diff --git a/app/views/documents/new.html.erb b/app/views/documents/new.html.erb old mode 100644 new mode 100755 diff --git a/app/views/documents/show.html.erb b/app/views/documents/show.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_course_evaluations/_form.html.erb b/app/views/ec_course_evaluations/_form.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_course_evaluations/edit.html.erb b/app/views/ec_course_evaluations/edit.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_course_evaluations/index.html.erb b/app/views/ec_course_evaluations/index.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_course_evaluations/new.html.erb b/app/views/ec_course_evaluations/new.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_course_evaluations/show.html.erb b/app/views/ec_course_evaluations/show.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_course_supports/_form.html.erb b/app/views/ec_course_supports/_form.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_course_supports/edit.html.erb b/app/views/ec_course_supports/edit.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_course_supports/index.html.erb b/app/views/ec_course_supports/index.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_course_supports/new.html.erb b/app/views/ec_course_supports/new.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_course_supports/show.html.erb b/app/views/ec_course_supports/show.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_course_targets/_form.html.erb b/app/views/ec_course_targets/_form.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_course_targets/destroy.js.erb b/app/views/ec_course_targets/destroy.js.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_course_targets/edit.html.erb b/app/views/ec_course_targets/edit.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_course_targets/index.html.erb b/app/views/ec_course_targets/index.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_course_targets/new.html.erb b/app/views/ec_course_targets/new.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_course_targets/show.html.erb b/app/views/ec_course_targets/show.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_courses/_correlation_course.html.erb b/app/views/ec_courses/_correlation_course.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_courses/_ec_course_targets_list.html.erb b/app/views/ec_courses/_ec_course_targets_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_courses/_search_course_list.html.erb b/app/views/ec_courses/_search_course_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_courses/add_manager.js.erb b/app/views/ec_courses/add_manager.js.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_courses/competition_calculation_info.html.erb b/app/views/ec_courses/competition_calculation_info.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_courses/correlation_course.js.erb b/app/views/ec_courses/correlation_course.js.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_courses/create.js.erb b/app/views/ec_courses/create.js.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_courses/delete_course.js.erb b/app/views/ec_courses/delete_course.js.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_courses/delete_manager.js.erb b/app/views/ec_courses/delete_manager.js.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_courses/destroy.js.erb b/app/views/ec_courses/destroy.js.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_courses/ec_course_reach_setting.html.erb b/app/views/ec_courses/ec_course_reach_setting.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_courses/ec_course_support_setting.html.erb b/app/views/ec_courses/ec_course_support_setting.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_courses/search_courses.js.erb b/app/views/ec_courses/search_courses.js.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_courses/search_user.js.erb b/app/views/ec_courses/search_user.js.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_graduation_requirements/_form.html.erb b/app/views/ec_graduation_requirements/_form.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_graduation_requirements/_requirement_lists.html.erb b/app/views/ec_graduation_requirements/_requirement_lists.html.erb old mode 100644 new mode 100755 index 623e910a..8f1edce5 --- a/app/views/ec_graduation_requirements/_requirement_lists.html.erb +++ b/app/views/ec_graduation_requirements/_requirement_lists.html.erb @@ -26,7 +26,7 @@ <% end %> <% end %> -<% elsif @template_major %> +<% else %>

    diff --git a/app/views/ec_graduation_requirements/create.js.erb b/app/views/ec_graduation_requirements/create.js.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_graduation_requirements/destroy.js.erb b/app/views/ec_graduation_requirements/destroy.js.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_graduation_requirements/edit.html.erb b/app/views/ec_graduation_requirements/edit.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_graduation_requirements/edit.js.erb b/app/views/ec_graduation_requirements/edit.js.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_graduation_requirements/index.html.erb b/app/views/ec_graduation_requirements/index.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_graduation_requirements/new.html.erb b/app/views/ec_graduation_requirements/new.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_graduation_requirements/show.html.erb b/app/views/ec_graduation_requirements/show.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_graduation_requirements/update.js.erb b/app/views/ec_graduation_requirements/update.js.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_graduation_subitems/_form.html.erb b/app/views/ec_graduation_subitems/_form.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_graduation_subitems/edit.html.erb b/app/views/ec_graduation_subitems/edit.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_graduation_subitems/index.html.erb b/app/views/ec_graduation_subitems/index.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_graduation_subitems/new.html.erb b/app/views/ec_graduation_subitems/new.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_graduation_subitems/show.html.erb b/app/views/ec_graduation_subitems/show.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_major_schools/_year_list.html.erb b/app/views/ec_major_schools/_year_list.html.erb old mode 100644 new mode 100755 index 45a85d29..98a04678 --- a/app/views/ec_major_schools/_year_list.html.erb +++ b/app/views/ec_major_schools/_year_list.html.erb @@ -49,13 +49,13 @@ - <% if @major_manager && !@major_school.template_major || User.current.admin? %> + <% if @major_manager && !@major_school.template_major %> 删除 <% end %> <%#= link_to '删除', ec_major_school_ec_year_path(year, :ec_major_school_id => @major_school), method: :delete, :class => "mr15 color-grey-c", data: { confirm: '您确定要删除吗' } %> - <%# if @major_manager || @major_school.template_major %> - - <%# end %> + <% if @major_manager || @major_school.template_major %> + 导出 + <% end %> <%= link_to @btn_text, training_objectives_ec_major_school_ec_year_path(year, :ec_major_school_id => @major_school) %> diff --git a/app/views/ec_major_schools/add_manager.js.erb b/app/views/ec_major_schools/add_manager.js.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_major_schools/delete_manager.js.erb b/app/views/ec_major_schools/delete_manager.js.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_major_schools/destroy.js.erb b/app/views/ec_major_schools/destroy.js.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_major_schools/search_user.js.erb b/app/views/ec_major_schools/search_user.js.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_major_schools/show.html.erb b/app/views/ec_major_schools/show.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_major_schools/show.js.erb b/app/views/ec_major_schools/show.js.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_majors/_form.html.erb b/app/views/ec_majors/_form.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_majors/_major_addAcademicYear.html.erb b/app/views/ec_majors/_major_addAcademicYear.html.erb old mode 100644 new mode 100755 index 224f3a47..abe559c1 --- a/app/views/ec_majors/_major_addAcademicYear.html.erb +++ b/app/views/ec_majors/_major_addAcademicYear.html.erb @@ -17,7 +17,7 @@

  • 取消 - 确定 + 确定
  • diff --git a/app/views/ec_majors/edit.html.erb b/app/views/ec_majors/edit.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_majors/index.html.erb b/app/views/ec_majors/index.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_majors/new.html.erb b/app/views/ec_majors/new.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_majors/show.html.erb b/app/views/ec_majors/show.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_training_objectives/_form.html.erb b/app/views/ec_training_objectives/_form.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_training_objectives/edit.html.erb b/app/views/ec_training_objectives/edit.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_training_objectives/index.html.erb b/app/views/ec_training_objectives/index.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_training_objectives/new.html.erb b/app/views/ec_training_objectives/new.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_training_objectives/show.html.erb b/app/views/ec_training_objectives/show.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_training_subitems/_form.html.erb b/app/views/ec_training_subitems/_form.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_training_subitems/create.js.erb b/app/views/ec_training_subitems/create.js.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_training_subitems/destroy.js.erb b/app/views/ec_training_subitems/destroy.js.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_training_subitems/edit.html.erb b/app/views/ec_training_subitems/edit.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_training_subitems/index.html.erb b/app/views/ec_training_subitems/index.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_training_subitems/new.html.erb b/app/views/ec_training_subitems/new.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_training_subitems/show.html.erb b/app/views/ec_training_subitems/show.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_training_subitems/update.js.erb b/app/views/ec_training_subitems/update.js.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_years/_courseSystem_addManage.html.erb b/app/views/ec_years/_courseSystem_addManage.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_years/_course_addManage.html.erb b/app/views/ec_years/_course_addManage.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_years/_course_lists.html.erb b/app/views/ec_years/_course_lists.html.erb old mode 100644 new mode 100755 index b39d9bfe..0905679d --- a/app/views/ec_years/_course_lists.html.erb +++ b/app/views/ec_years/_course_lists.html.erb @@ -46,16 +46,13 @@ + <% if course_manager || @template_major %> @@ -86,7 +83,7 @@ <% end %> - <% if @template_major %> + <% if course_manager || @template_major %> 删除 <% end %> <% redirect_url = course_targets == 0 ? ec_course_support_setting_ec_course_path(course) : ( diff --git a/app/views/ec_years/_course_manager.html.erb b/app/views/ec_years/_course_manager.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_years/_edit_training_objectives.html.erb b/app/views/ec_years/_edit_training_objectives.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_years/_sub_training_objectives.html.erb b/app/views/ec_years/_sub_training_objectives.html.erb old mode 100644 new mode 100755 index fa4ff9db..f86bc5d5 --- a/app/views/ec_years/_sub_training_objectives.html.erb +++ b/app/views/ec_years/_sub_training_objectives.html.erb @@ -13,7 +13,7 @@ <% end %> -<% elsif @ec_training_objective.present? && @template_major && @sub_training_objectives.count == 0 %> +<% elsif @ec_training_objective.present? %>
    • diff --git a/app/views/ec_years/_training_objective_contents.html.erb b/app/views/ec_years/_training_objective_contents.html.erb old mode 100644 new mode 100755 index 67bff24d..36898d55 --- a/app/views/ec_years/_training_objective_contents.html.erb +++ b/app/views/ec_years/_training_objective_contents.html.erb @@ -12,7 +12,7 @@ 取消

      -<% elsif @template_major %> +<% else %>

      diff --git a/app/views/ec_years/completion_calculation.html.erb b/app/views/ec_years/completion_calculation.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_years/create.js.erb b/app/views/ec_years/create.js.erb old mode 100644 new mode 100755 index 8322a289..70099414 --- a/app/views/ec_years/create.js.erb +++ b/app/views/ec_years/create.js.erb @@ -1,7 +1,6 @@ <% if @status.to_i == -1 %> notice_box("该界别已经存在,请勿重复创建") <% else %> - window.location.reload(); - console.log("##########<%= @years.count %>") - //$("#year_list").html('<%#= j(render :partial => "ec_major_schools/year_list") %>') + $("#year_list").html('<%= j(render :partial => "ec_major_schools/year_list") %>') + hideModal(); <% end %> \ No newline at end of file diff --git a/app/views/ec_years/create_training_objectives.js.erb b/app/views/ec_years/create_training_objectives.js.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_years/ec_course_setting.html.erb b/app/views/ec_years/ec_course_setting.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_years/edit_training_objectives.js.erb b/app/views/ec_years/edit_training_objectives.js.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_years/graduation_requirement.html.erb b/app/views/ec_years/graduation_requirement.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_years/import_ec_courses.js.erb b/app/views/ec_years/import_ec_courses.js.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_years/requirement_vs_courses.html.erb b/app/views/ec_years/requirement_vs_courses.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_years/requirement_vs_objective.html.erb b/app/views/ec_years/requirement_vs_objective.html.erb old mode 100644 new mode 100755 index ad49d552..ee3d93f2 --- a/app/views/ec_years/requirement_vs_objective.html.erb +++ b/app/views/ec_years/requirement_vs_objective.html.erb @@ -23,7 +23,7 @@ <% @requirements.each_with_index do |req, index| %> - 指标点<%= index+1 %> + <%= index+1 %> <% @subitem_objectives.each do |to| %> <% checked = EcRequirementVsObjective.where(:ec_graduation_requirement_id => req.id, :ec_training_objective_id => to.id).first %> " data-req-id="<%= req.id %>" data-to-id="<%= to.id %>"> diff --git a/app/views/ec_years/requirement_vs_standard.html.erb b/app/views/ec_years/requirement_vs_standard.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ec_years/training_objectives.html.erb b/app/views/ec_years/training_objectives.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ecs/_authList_addUnit.html.erb b/app/views/ecs/_authList_addUnit.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ecs/_auth_newMajor.html.erb b/app/views/ecs/_auth_newMajor.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ecs/_department_list.html.erb b/app/views/ecs/_department_list.html.erb old mode 100644 new mode 100755 index 0f1e6472..e5079fd0 --- a/app/views/ecs/_department_list.html.erb +++ b/app/views/ecs/_department_list.html.erb @@ -9,7 +9,7 @@

    • 0 000000 - <%= @template_major.name %> + <%= @template_major.name %>(示例) <%= User.current.admin? ? "配置" : "查看" %> @@ -19,7 +19,7 @@
    • <%= index + 1 %> <%= major_school.code %> - <%= major_school.name %> + <%= major_school.name %> <% if major_manager %> @@ -29,7 +29,7 @@

      - <% if @is_school_manager %> + <% if major_manager %> 删除 <% end %> <%= major_manager ? "配置" : "查看" %> diff --git a/app/views/ecs/_ec_no_data.html.erb b/app/views/ecs/_ec_no_data.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ecs/_ec_top_navigation.html.erb b/app/views/ecs/_ec_top_navigation.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ecs/_major_lists.html.erb b/app/views/ecs/_major_lists.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ecs/_school_manager.html.erb b/app/views/ecs/_school_manager.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ecs/_search_user_list.html.erb b/app/views/ecs/_search_user_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ecs/department.html.erb b/app/views/ecs/department.html.erb old mode 100644 new mode 100755 diff --git a/app/views/ecs/department.js.erb b/app/views/ecs/department.js.erb old mode 100644 new mode 100755 diff --git a/app/views/ecs/search_major.js.erb b/app/views/ecs/search_major.js.erb old mode 100644 new mode 100755 diff --git a/app/views/enumerations/_form.html.erb b/app/views/enumerations/_form.html.erb old mode 100644 new mode 100755 diff --git a/app/views/enumerations/destroy.html.erb b/app/views/enumerations/destroy.html.erb old mode 100644 new mode 100755 diff --git a/app/views/enumerations/edit.html.erb b/app/views/enumerations/edit.html.erb old mode 100644 new mode 100755 diff --git a/app/views/enumerations/index.api.rsb b/app/views/enumerations/index.api.rsb old mode 100644 new mode 100755 diff --git a/app/views/enumerations/index.html.erb b/app/views/enumerations/index.html.erb old mode 100644 new mode 100755 diff --git a/app/views/enumerations/new.html.erb b/app/views/enumerations/new.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_alert.html.erb b/app/views/exercise/_alert.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_all_import_exercises.html.erb b/app/views/exercise/_all_import_exercises.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_answer_comment.html.erb b/app/views/exercise/_answer_comment.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_choose_shixuns.html.erb b/app/views/exercise/_choose_shixuns.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_comment_detail_block.html.erb b/app/views/exercise/_comment_detail_block.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_commit_alert.html.erb b/app/views/exercise/_commit_alert.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_edit_MC.html.erb b/app/views/exercise/_edit_MC.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_edit_MCQ.html.erb b/app/views/exercise/_edit_MCQ.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_edit_head.html.erb b/app/views/exercise/_edit_head.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_edit_multi.html.erb b/app/views/exercise/_edit_multi.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_edit_shixun.html.erb b/app/views/exercise/_edit_shixun.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_edit_single.html.erb b/app/views/exercise/_edit_single.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_edu_edit_form.html.erb b/app/views/exercise/_edu_edit_form.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_end_notice.html.erb b/app/views/exercise/_end_notice.html.erb old mode 100644 new mode 100755 index fc273c3c..25405aa3 --- a/app/views/exercise/_end_notice.html.erb +++ b/app/views/exercise/_end_notice.html.erb @@ -3,6 +3,7 @@ #popupWrap{left: 673.5px !important;} +
      立即截止
      diff --git a/app/views/exercise/_exercise.html.erb b/app/views/exercise/_exercise.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_exercise_content.html.erb b/app/views/exercise/_exercise_content.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_exercise_course_list.html.erb b/app/views/exercise/_exercise_course_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_exercise_form.html.erb b/app/views/exercise/_exercise_form.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_exercise_index_tab.html.erb b/app/views/exercise/_exercise_index_tab.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_exercise_redo.html.erb b/app/views/exercise/_exercise_redo.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_exercise_republish.html.erb b/app/views/exercise/_exercise_republish.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_exercise_setting.html.erb b/app/views/exercise/_exercise_setting.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_exercise_statistics_result.html.erb b/app/views/exercise/_exercise_statistics_result.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_exercise_student.html.erb b/app/views/exercise/_exercise_student.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_exercise_student_result.html.erb b/app/views/exercise/_exercise_student_result.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_exercise_submit.html.erb b/app/views/exercise/_exercise_submit.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_exercise_submit_info.html.erb b/app/views/exercise/_exercise_submit_info.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_exercise_teacher.html.erb b/app/views/exercise/_exercise_teacher.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_exercises_list.html.erb b/app/views/exercise/_exercises_list.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_new_MC.html.erb b/app/views/exercise/_new_MC.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_new_MCQ.html.erb b/app/views/exercise/_new_MCQ.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_new_head.html.erb b/app/views/exercise/_new_head.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_new_multi.html.erb b/app/views/exercise/_new_multi.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_new_question.html.erb b/app/views/exercise/_new_question.html.erb old mode 100644 new mode 100755 diff --git a/app/views/exercise/_new_shixun.html.erb b/app/views/exercise/_new_shixun.html.erb old mode 100644 new mode 100755 index ec12fc23..3699e529 --- a/app/views/exercise/_new_shixun.html.erb +++ b/app/views/exercise/_new_shixun.html.erb @@ -113,15 +113,14 @@
      <% end %> +