diff --git a/ReadMe.txt b/ReadMe.txt index f891d6b75..e7444a6c5 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -1,3 +1,12 @@ +patch: +用户姓名的部分,根据issues#655。 +为了修改方便 +alias: +方法 之前显示 调整之后 +name firstname+lastname login +nickname xxx login +realname xxx firstname+lastname +================================================================================ app/models/setting.rb :165 # fixed domain url in development. tantantan's bug if Rails.env.development? diff --git a/app/controllers/applied_project_controller.rb b/app/controllers/applied_project_controller.rb new file mode 100644 index 000000000..fdb45b030 --- /dev/null +++ b/app/controllers/applied_project_controller.rb @@ -0,0 +1,34 @@ +class AppliedProjectController < ApplicationController + + #鐢宠鍔犲叆椤圭洰 + def applied_join_project + @user_id = params[:user_id] + @project = Project.find(params[:project_id]) + @applieds = AppliedProject.where("user_id = ? and project_id = ?", params[:user_id],params[:project_id]) + if @applieds.count == 0 + AppliedProject.create(:user_id => params[:user_id], :project_id => params[:project_id]) + end + + #redirect_to project_path(params[:project_id]) + #redirect_to_referer_or {render :text => ( 'applied success.'), :layout => true} + respond_to do |format| + format.html { redirect_to_referer_or {render :text => (watching ? 'Watcher added.' : 'Watcher removed.'), :layout => true}} + format.js { render :partial => 'set_applied'} + end + end + + #鍙栨秷鐢宠 + def unapplied_join_project + @project = Project.find(params[:project_id]) + #@applied = AppliedProject.find(params[:id]) + #@applied.destroy + + AppliedProject.deleteappiled(params[:user_id], params[:project_id]) + + respond_to do |format| + format.html { redirect_to_referer_or {render :text => (watching ? 'Watcher added.' : 'Watcher removed.'), :layout => true}} + format.js { render :partial => 'set_applied' } + end + end + +end diff --git a/app/controllers/attachments_controller.rb b/app/controllers/attachments_controller.rb index d848b3c37..2f642f544 100644 --- a/app/controllers/attachments_controller.rb +++ b/app/controllers/attachments_controller.rb @@ -209,7 +209,12 @@ private end def read_authorize - @attachment.visible? ? true : deny_access + if @attachment.container_type == "HomeworkAttach" || @attachment.container_type == 'Bid' + true + #User.current.allowed_to?(:view_homework_attaches, @attachment.project) ? true : deny_access + else + @attachment.visible? ? true : deny_access + end end def delete_authorize diff --git a/app/controllers/bids_controller.rb b/app/controllers/bids_controller.rb index 2273de4e4..d63f0cfbb 100644 --- a/app/controllers/bids_controller.rb +++ b/app/controllers/bids_controller.rb @@ -14,6 +14,8 @@ class BidsController < ApplicationController # end before_filter :require_login,:only => [:set_reward, :destroy, :add, :new, ] + before_filter :memberAccess, only: :show_project + helper :watchers helper :attachments include AttachmentsHelper @@ -875,7 +877,14 @@ class BidsController < ApplicationController end rescue render_404 - end + end + + def memberAccess + # 鏄绋嬶紝鍒欏垽鏂綋鍓嶇敤鎴锋槸鍚﹀弬鍔犱簡璇剧▼ + return 0 if @bid.courses.first.project_type == Project::ProjectType_project + currentUser = User.current + render_403 unless currentUser.member_of?(@bid.courses.first) + end end diff --git a/app/controllers/homework_attach_controller.rb b/app/controllers/homework_attach_controller.rb index 2a0f97613..8eae8b855 100644 --- a/app/controllers/homework_attach_controller.rb +++ b/app/controllers/homework_attach_controller.rb @@ -1,4 +1,90 @@ class HomeworkAttachController < ApplicationController + ############################### + def index + @homeworks = HomeworkAttach.all + respond_to do |format| + format.html # index.html.erb + format.json { render json: @homeworks } + end + end + + def add_users users + if users != nil && users.count > 0 + users.each do |user| + @homework.homework_users.build(:user_id => user.id) + @homework.save + end + end + end + + def create + if User.current.logged? && (!Member.where('user_id = ? and project_id = ?', User.current.id, @bid.courses.first.id).first.nil? && (Member.where('user_id = ? and project_id = ?', User.current.id, @bid.courses.first.id).first.roles&Role.where('id = ? or id = ? or id =?',5, 10, 7)).size >0) + user_id = params[:user_id] + bid_id = params[:bid_id] + sta = 0 + name = params[:new_form][:name] + description = params[:new_form][:description] + options = { + :user_id => user_id, + :state => sta, + :name => name, + :description => description, + :bid_id => bid_id + } + + @homework = HomeworkAttach.new(options) + @homework.save_attachments(params[:attachments]) + render_attachment_warning_if_needed(@homework) + + @homework.save + respond_to do |format| + if @homework.save + format.html { redirect_to @homework, notice: 'Post was successfully created.' } + format.json { render json: @homework, status: :created, location: @homework } + else + format.html { render action: "new" } + format.json { render json: @homework.errors, status: :unprocessable_entity } + end + end + end + end + + def new + @homework = HomeworkAttach.new + @bid = Bid.find(params[:id]) + + respond_to do |format| + format.html # new.html.erb + format.json { render json: @homework } + end + end + + def edit + @homework = HomeworkAttach.find(params[:id]) + end + + def update + @homework = HomeworkAttach.find(params[:id]) + respond_to do |format| + if @post.update_attributes(params[:homework]) + format.html { redirect_to @homework, notice: 'Homework was successfully updated.' } + format.json { head :no_content } + else + format.html { render action: "edit" } + format.json { render json: @homework.errors, status: :unprocessable_entity } + end + end + end + + def destroy + @homework = HomeworkAttach.find(params([:id])) + @homework.destroy + respond_to do |format| + format.html {render @homework} + format.json {render json: @homework} + end + end + #鏄剧ず浣滀笟淇℃伅 def show @homework = HomeworkAttach.find(params[:id]) @@ -15,8 +101,8 @@ class HomeworkAttachController < ApplicationController @stars_status_map["star#{star_status.stars.to_i}".to_sym] = percent_m.to_s + "%" end - @jours = @homework.journals_for_messages.order("created_on DESC") @limit = 10 + @jours = @homework.journals_for_messages.order("created_on DESC") @feedback_count = @jours.count @feedback_pages = Paginator.new @feedback_count, @limit, params['page'] @offset ||= @feedback_pages.offset @@ -24,7 +110,7 @@ class HomeworkAttachController < ApplicationController end #鍒犻櫎鐣欒█ - def destroy + def destroy_jour @journal_destroyed = JournalsForMessage.delete_message(params[:object_id]) #@homework = HomeworkAttach.find(params[:id]) #@jours = @homework.journals_for_messages.order("created_on DESC") @@ -43,11 +129,11 @@ class HomeworkAttachController < ApplicationController @homework = HomeworkAttach.find(params[:jour_id]) @homework.addjours User.current.id, params[:new_form][:user_message],0 @jours = @homework.journals_for_messages.order("created_on DESC") - #@limit = 10 - #@feedback_count = @jours.count - #@feedback_pages = Paginator.new @feedback_count, @limit, params['page'] - #@offset ||= @feedback_pages.offset - #@jour = @jours[@offset, @limit] + @limit = 10 + @feedback_count = @jours.count + @feedback_pages = Paginator.new @feedback_count, @limit, params['page'] + @offset ||= @feedback_pages.offset + @jour = @jours[@offset, @limit] respond_to do |format| format.js end diff --git a/app/controllers/members_controller.rb b/app/controllers/members_controller.rb index 5168913a7..d8e583bf7 100644 --- a/app/controllers/members_controller.rb +++ b/app/controllers/members_controller.rb @@ -46,42 +46,58 @@ class MembersController < ApplicationController end def create - members = [] - project_info = [] - user_grades = [] - if params[:membership] - if params[:membership][:user_ids] - attrs = params[:membership].dup - user_ids = attrs.delete(:user_ids) - user_ids.each do |user_id| - members << Member.new(:role_ids => params[:membership][:role_ids], :user_id => user_id) - user_grades << UserGrade.new(:user_id => user_id, :project_id => @project.id) - ## added by nie - if(params[:membership][:role_ids] && params[:membership][:role_ids][0] == "3") - project_info << ProjectInfo.new(:user_id => user_id, :project_id => @project.id) - # ProjectInfo.create(:name => "test", :user_id => 123) + if params[:refusal_button] + members = [] + applied_members = true + if params[:membership] + if params[:membership][:user_ids] + attrs = params[:membership].dup + user_ids = attrs.delete(:user_ids) + user_ids.each do |user_id| + AppliedProject.deleteappiled(user_id, @project.id) end - ## end end - else - members << Member.new(:role_ids => params[:membership][:role_ids], :user_id => params[:membership][:user_id]) - user_grades << UserGrade.new(:user_id => params[:membership][:user_id], :project_id => @project.id) - ## added by nie - if(params[:membership][:role_ids] && params[:membership][:role_ids][0] == "3") - project_info << ProjectInfo.new(:project_id => @project.id, :user_id => params[:membership][:user_id]) + end + else + applied_members = false + members = [] + project_info = [] + user_grades = [] + if params[:membership] + if params[:membership][:user_ids] + attrs = params[:membership].dup + user_ids = attrs.delete(:user_ids) + user_ids.each do |user_id| + members << Member.new(:role_ids => params[:membership][:role_ids], :user_id => user_id) + user_grades << UserGrade.new(:user_id => user_id, :project_id => @project.id) + ## added by nie + if (params[:membership][:role_ids] && params[:membership][:role_ids][0] == "3") + project_info << ProjectInfo.new(:user_id => user_id, :project_id => @project.id) + # ProjectInfo.create(:name => "test", :user_id => 123) + end + ## end + AppliedProject.deleteappiled(user_id, @project.id) + end + else + members << Member.new(:role_ids => params[:membership][:role_ids], :user_id => params[:membership][:user_id]) + user_grades << UserGrade.new(:user_id => params[:membership][:user_id], :project_id => @project.id) + ## added by nie + if (params[:membership][:role_ids] && params[:membership][:role_ids][0] == "3") + project_info << ProjectInfo.new(:project_id => @project.id, :user_id => params[:membership][:user_id]) + end + ## end end - ## end + @project.members << members + # added by nie + @project.project_infos << project_info + @project.user_grades << user_grades + # end end - @project.members << members - # added by nie - @project.project_infos << project_info - @project.user_grades << user_grades - # end end respond_to do |format| format.html { redirect_to_settings_in_projects } - format.js { @members = members } + format.js { @members = members;@applied_members = applied_members; } format.api { @member = members.first if @member.valid? diff --git a/app/controllers/my_controller.rb b/app/controllers/my_controller.rb index c469c72ee..0723cf169 100644 --- a/app/controllers/my_controller.rb +++ b/app/controllers/my_controller.rb @@ -50,95 +50,34 @@ class MyController < ApplicationController def account @user = User.current @pref = @user.pref - - - - # if @user.user_extensions.nil? - # se = UserExtebsions.new - # se.user_id = @user.id - # se.occupation = params[:occupation] - # se.save - # else - # # = @user.user_extensions - # end - # @occupation = UserExtensions.occupation - # @occupation.save - if request.post? @user.safe_attributes = params[:user] @user.pref.attributes = params[:pref] @user.pref[:no_self_notified] = (params[:no_self_notified] == '1') unless @user.user_extensions.nil? if @user.user_extensions.identity == 2 - @user.firstname = params[:enterprise_name] + @user.firstname = params[:enterprise_name] end end - - - # # UserExtensions.create(:user_id => @user.id, :occupation => params[:occupation]) - # else - # ue = @user.user_extensions - # ue.occupation = params[:occupation] - # ue.save - # end - - # added by bai - if @user.user_extensions.nil? - se = UserExtensions.new - se.user_id = @user.id - if params[:occupation] - se.school_id = params[:occupation] - end - - se.gender = params[:gender] - - if params[:province] && params[:city] - se.location = params[:province] - se.location_city = params[:city] - end - if params[:identity] - se.identity = params[:identity].to_i - end - if params[:technical_title] - se.technical_title = params[:technical_title] - end - if params[:no] - se.student_id = params[:no] - end - se.save - else - se = @user.user_extensions - if params[:occupation] - se.school_id = params[:occupation] - end - - se.gender = params[:gender] - - if params[:province] && params[:city] - se.location = params[:province] - se.location_city = params[:city] - end - - if params[:identity] - se.identity= params[:identity].to_i - end - if params[:technical_title] - se.technical_title = params[:technical_title] - end - if params[:no] - se.student_id = params[:no] - end - se.save - end - # end - - if @user.save + + @se = @user.user_extensions ||= UserExtensions.new + @se.school_id = params[:occupation] if params[:occupation] + @se.gender = params[:gender] + @se.location = params[:province] if params[:province] + @se.location_city = params[:city] if params[:city] + @se.identity = params[:identity].to_i if params[:identity] + @se.technical_title = params[:technical_title] if params[:technical_title] + @se.student_id = params[:no] if params[:no] + + if @user.save && @se.save @user.pref.save @user.notified_project_ids = (@user.mail_notification == 'selected' ? params[:notified_project_ids] : []) set_language_if_valid @user.language flash[:notice] = l(:notice_account_updated) redirect_to user_path(@user) return + else + @user end end end diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index d9996e739..82a94614f 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -33,12 +33,12 @@ class ProjectsController < ApplicationController menu_item l(:label_course_news), :only => :index - before_filter :find_project, :except => [ :index, :search,:list, :new, :create, :copy, :statistics, :new_join, :course, :enterprise_course, :course_enterprise] + before_filter :find_project, :except => [ :index, :search,:list, :new, :create, :copy, :statistics, :new_join, :course, :enterprise_course, :course_enterprise,:view_homework_attaches] # before_filter :authorize, :except => [:new_join, :new_homework, :homework, :statistics, :search, :watcherlist, :index, :list, :new, :create, :copy, :archive, :unarchive, :destroy, :member, :focus, :file, # :statistics, :feedback, :course, :enterprise_course, :course_enterprise, :project_respond, :share, # :show_projects_score, :issue_score_index, :news_score_index, :file_score_index, :code_submit_score_index, :projects_topic_score_index] - before_filter :authorize, :only => [:show, :settings, :edit, :sort_project_members, :update, :modules, :close, :reopen] - before_filter :authorize_global, :only => [:new, :create] + before_filter :authorize, :only => [:show, :settings, :edit, :sort_project_members, :update, :modules, :close, :reopen,:view_homework_attaches] + before_filter :authorize_global, :only => [:new, :create,:view_homework_attaches] before_filter :require_admin, :only => [ :copy, :archive, :unarchive, :destroy, :calendar] before_filter :file, :statistics, :watcherlist @@ -767,6 +767,7 @@ class ProjectsController < ApplicationController @subPage_title = l :label_member_list @members = @project.member_principals.includes(:roles, :principal).all @members = sort_project_members(@project, @members) + @applied_members = appied_project_members(@project, @members) end @members = paginateHelper @members render :layout => 'base_courses' if @project.project_type == 1 @@ -797,7 +798,20 @@ class ProjectsController < ApplicationController end memberlist end - + + def appied_project_members (project, members) + users = AppliedProject.where(:project_id => project.id) + memberlist = [] + users.each do |user| + members.each do |member| + if member[:user_id] == user[:user_id] + memberlist << member + end + end + end + memberlist + end + def file end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 7365e4048..6174e2124 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -209,8 +209,6 @@ class UsersController < ApplicationController ## 鍒ゆ柇璇剧▼鏄惁杩囨湡 [闇灏佽] @memberships_doing = [] @memberships_done = [] - @OwningCouses =[] - @JoinCouses=[] now_time = Time.now.year @memberships.map { |e| end_time = e.project.course_extra.get_time.year @@ -220,12 +218,6 @@ class UsersController < ApplicationController else @memberships_doing.push e end - - if e.project.course_extra.tea_id == User.current.id - @OwningCouses.push e - else - @JoinCouses.push e - end } # respond_to do |format| # format.html diff --git a/app/controllers/watchers_controller.rb b/app/controllers/watchers_controller.rb index b06b8cbb3..b1fbfb8ea 100644 --- a/app/controllers/watchers_controller.rb +++ b/app/controllers/watchers_controller.rb @@ -158,6 +158,6 @@ class WatchersController < ApplicationController respond_to do |format| format.html { redirect_to_referer_or {render :text => (watching ? 'Watcher added.' : 'Watcher removed.'), :layout => true}} format.js { render :partial => 'set_watcher', :locals => {:user => user, :watched => watchables} } - end + end end end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index f6966e146..228f57ab6 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -28,7 +28,6 @@ module ApplicationHelper include AvatarHelper ## added by william include PraiseTreadHelper - # add by nyan include CoursesHelper extend Forwardable @@ -1328,6 +1327,15 @@ module ApplicationHelper 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') + 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 favicon "".html_safe end diff --git a/app/helpers/applied_project_helper.rb b/app/helpers/applied_project_helper.rb new file mode 100644 index 000000000..eef4c9ccf --- /dev/null +++ b/app/helpers/applied_project_helper.rb @@ -0,0 +1,28 @@ +module AppliedProjectHelper + + def applied_css(project) + id = project.id + "#{project.class.to_s.underscore}-#{id}-applied" + end + + def applied_link(project, user, options=[]) + return '' unless user && user.logged? + applied = project.applied_projects.find_by_user_id(user.id) + text = applied ? l(:label_unapply_project) : l(:label_apply_project) + + @applied_flag = project.instance_of?(Project) + css = @applied_flag ? ([applied_css(project), applied ? 'icon ' : 'icon '].join(' ') << options[0].to_s) : + ([applied_css(project), applied ? 'icon icon-applied ' : 'icon icon-applied-off '].join(' ') << options[0].to_s) + if applied + appliedid = applied.id + end + url = appliedproject_path( + :id=>appliedid, + :user_id => user.id, + :project_id => project.id + ) + method = applied ? 'delete' : 'post' + + link_to text, url, :remote => true, :method => method ,:class=>css + end +end diff --git a/app/helpers/bids_helper.rb b/app/helpers/bids_helper.rb index 38b32e692..76203fdd7 100644 --- a/app/helpers/bids_helper.rb +++ b/app/helpers/bids_helper.rb @@ -126,17 +126,19 @@ module BidsHelper @users.count end + # 鏌ョ湅瀛﹀彿 def im_watching_student_id? bid people = [] people << bid.author case bid.reward_type # 澶╃厼鐨刡id鍒嗕簡涓夌敤閫旓紝閲岄潰鍚勭hasmany杩樹笉瀹氳兘鐢紒 - when 1 - when 2 + when Bid::Enterprise + when Bid::Contest bid.join_in_contests.each do |jic| people << jic.user end - when 3 - people += bid.courses.first.users.to_a + when Bid::Homework + # people += bid.courses.first.users.to_a + people += searchTeacherAndAssistant(bid.courses.first).to_a else raise 'bids_helper: unknow bid type' # 鍑轰簡閿欑湅杩欓噷锛佷笉鐭ラ亾鐨勬姏寮傚父锛岀渷鐨勬壘涓嶅埌鍑洪敊鐨勫湴鏂癸紒 end diff --git a/app/helpers/courses_helper.rb b/app/helpers/courses_helper.rb index 97cca617e..45ebaf247 100644 --- a/app/helpers/courses_helper.rb +++ b/app/helpers/courses_helper.rb @@ -136,4 +136,15 @@ module CoursesHelper def find_by_extra_from_project extra Course.find_by_extra(try(extra)) end + #鍒ゆ柇鍒跺畾鐢ㄦ埛鏄笉鏄綋鍓嶈绋嬬殑鑰佸笀 + def is_course_teacher user,project + is_teacher = false + searchTeacherAndAssistant(project).each do |teacher| + if user == teacher + is_teacher = true + break + end + end + is_teacher + end end diff --git a/app/helpers/members_helper.rb b/app/helpers/members_helper.rb index 75676f475..91e05d6a8 100644 --- a/app/helpers/members_helper.rb +++ b/app/helpers/members_helper.rb @@ -32,4 +32,21 @@ module MembersHelper s + content_tag('div', content_tag('ul', links), :class => 'pagination_new') end + + # 褰撳墠鐢宠鍔犲叆鐨勬垚鍛樺悕鍗 + def render_principals_for_applied_members(project) + scope = Principal.active.sorted.applied_members(project).like(params[:q]) + principal_count = scope.count + principal_pages = Redmine::Pagination::Paginator.new principal_count, 10, params['page'] + principals = scope.offset(principal_pages.offset).limit(principal_pages.per_page).all + + s = content_tag('div', principals_check_box_tags_ex('membership[user_ids][]', principals), :id => 'principals') + + links = pagination_links_full(principal_pages, principal_count, :per_page_links => false) {|text, parameters, options| + link_to text, appliedproject_project_memberships_path(project, parameters.merge(:q => params[:q], :format => 'js')), :remote => true + } + + s + content_tag('div', content_tag('ul', links), :class => 'applied_new') + end + end diff --git a/app/helpers/watchers_helper.rb b/app/helpers/watchers_helper.rb index fcaf63604..50170ee9e 100644 --- a/app/helpers/watchers_helper.rb +++ b/app/helpers/watchers_helper.rb @@ -30,7 +30,7 @@ module WatchersHelper objects = Array.wrap(objects) watched = objects.any? {|object| object.watched_by?(user)} - @watch_flag = (objects.first.instance_of?(User) or objects.first.instance_of?(Project) or objects.first.instance_of?(Contest) or (objects.first.instance_of?(Bid))) + @watch_flag = (objects.first.instance_of?(User) or objects.first.instance_of?(Project) or objects.first.instance_of?(Contest) or (objects.first.instance_of?(Bid))) css = @watch_flag ? ([watcher_css(objects), watched ? 'icon ' : 'icon '].join(' ') << options[0].to_s) : ([watcher_css(objects), watched ? 'icon icon-fav ' : 'icon icon-fav-off '].join(' ') << options[0].to_s) @@ -187,4 +187,31 @@ module WatchersHelper :class => "floating" end.join.html_safe end -end + + def applied_css(project) + id = project.id + "#{project.class.to_s.underscore}-#{id}-applied" + end + + def applied_link(project, user, options=[]) + return '' unless user && user.logged? + applied = project.applied_projects.find_by_user_id(user.id) + text = applied ? l(:label_unapply_project) : l(:label_apply_project) + + @applied_flag = project.instance_of?(Project) + css = @applied_flag ? ([applied_css(project), applied ? 'icon ' : 'icon '].join(' ') << options[0].to_s) : + ([applied_css(project), applied ? 'icon icon-applied ' : 'icon icon-applied-off '].join(' ') << options[0].to_s) + if applied + appliedid = applied.id + end + url = appliedproject_path( + :id=>appliedid, + :user_id => user.id, + :project_id => project.id + ) + method = applied ? 'delete' : 'post' + + link_to text, url, :remote => true, :method => method ,:class=>css + end + + end diff --git a/app/models/applied_project.rb b/app/models/applied_project.rb new file mode 100644 index 000000000..accbc90e2 --- /dev/null +++ b/app/models/applied_project.rb @@ -0,0 +1,15 @@ +class AppliedProject < ActiveRecord::Base + attr_accessible :project_id, :user_id + + belongs_to :user + belongs_to :project + + #鍒犻櫎鐢ㄦ埛鐢宠 + def self.deleteappiled(userid, projectid) + @applieds = AppliedProject.where("user_id = ? and project_id = ?", userid, projectid) + @applieds.each do |applied| + applied.destroy + end + end + +end diff --git a/app/models/course.rb b/app/models/course.rb index 0420b1744..de383a1f5 100644 --- a/app/models/course.rb +++ b/app/models/course.rb @@ -2,7 +2,7 @@ class Course < ActiveRecord::Base include Redmine::SafeAttributes attr_accessible :code, :extra, :name, :state, :tea_id, :time , :location, :state, :term, :password - belongs_to :project, :class_name => 'Project', :foreign_key => :extra # 瀹氫箟涓涓猵roject鏂规硶锛 璇ユ柟娉曢氳繃extra鏉ヨ皟鐢╬roject琛 + belongs_to :project, :class_name => 'Project', :foreign_key => :extra, primary_key: :identifier belongs_to :teacher, :class_name => 'User', :foreign_key => :tea_id # 瀹氫箟涓涓柟娉晅eacher锛岃鏂规硶閫氳繃tea_id鏉ヨ皟鐢║ser琛 belongs_to :school, :class_name => 'School', :foreign_key => :school_id #瀹氫箟涓涓柟娉晄chool锛岃鏂规硶閫氳繃school_id鏉ヨ皟鐢⊿chool琛 has_many :bid diff --git a/app/models/homework_attach.rb b/app/models/homework_attach.rb index e395e65e5..ac285e606 100644 --- a/app/models/homework_attach.rb +++ b/app/models/homework_attach.rb @@ -29,6 +29,13 @@ class HomeworkAttach < ActiveRecord::Base result end + def project + work = HomeworkForCourse.find_by_bid_id(self.bid_id) + if work + work.project + end + end + def add_jours options jfm = self.journals_for_messages.build(options) jfm.save diff --git a/app/models/homework_user.rb b/app/models/homework_user.rb index da7e65afb..0adef62c4 100644 --- a/app/models/homework_user.rb +++ b/app/models/homework_user.rb @@ -2,5 +2,5 @@ class HomeworkUser < ActiveRecord::Base attr_accessible :homework_attach_id, :user_id belongs_to :homework_attach - has_one :user + belongs_to :user end diff --git a/app/models/principal.rb b/app/models/principal.rb index b6f41d535..15cebdf53 100644 --- a/app/models/principal.rb +++ b/app/models/principal.rb @@ -72,6 +72,12 @@ class Principal < ActiveRecord::Base } scope :sorted, lambda { order(*Principal.fields_for_order_statement)} + scope :applied_members, lambda {|project| + id = project.id + ids1 = project.applied_projects.map(&:user_id) + where("#{Principal.table_name}.id IN (SELECT DISTINCT user_id FROM #{Member.table_name} WHERE user_id in (?))", ids1) + } + before_create :set_default_empty_values def name(formatter = nil) diff --git a/app/models/project.rb b/app/models/project.rb index 3c2956a94..20c5de89b 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -64,7 +64,9 @@ class Project < ActiveRecord::Base # has_many :students_for_courses, :dependent => :destroy has_many :student, :through => :students_for_courses, :source => :user has_one :course_extra, :class_name => 'Course', :foreign_key => :extra,:primary_key => :identifier, :dependent => :destroy - + has_many :applied_projects + + # end #ADDED BY NIE has_many :project_infos, :dependent => :destroy @@ -120,7 +122,8 @@ class Project < ActiveRecord::Base after_save :update_position_under_parent, :if => Proc.new {|project| project.name_changed?} after_save :update_inherited_members, :if => Proc.new {|project| project.inherit_members_changed?} - after_save :create_board_sync #nyan + # 鍒涘缓project涔嬪悗榛樿鍒涘缓涓涓猙oard锛屼箣鍚庣殑board鍘绘帀浜哹oard鐨勬蹇 + after_save :create_board_sync before_destroy :delete_all_members def remove_references_before_destroy return if self.id.nil? diff --git a/app/models/user.rb b/app/models/user.rb index 840275794..e54658274 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -18,6 +18,11 @@ require "digest/sha1" class User < Principal + TEACHER = 0 + STUDENT = 1 + ENTERPRISE = 2 + DEVELOPER = 3 + include Redmine::SafeAttributes # Different ways of displaying/sorting users @@ -68,7 +73,7 @@ class User < Principal ['none', :label_user_mail_option_none] ] - has_one :homework_user + belongs_to :homework_user has_and_belongs_to_many :groups, :after_add => Proc.new {|user, group| group.user_added(user)}, :after_remove => Proc.new {|user, group| group.user_removed(user)} @@ -354,7 +359,7 @@ class User < Principal end # Return user's full name for display - def name(formatter = nil) + def realname(formatter = nil) f = self.class.name_formatter(formatter) if formatter eval('"' + f[:string] + '"') @@ -363,6 +368,10 @@ class User < Principal end end + def name(formatter = nil) + login + end + def active? self.status == STATUS_ACTIVE end diff --git a/app/models/user_extensions.rb b/app/models/user_extensions.rb index 7b35b16b4..b21f0ad36 100644 --- a/app/models/user_extensions.rb +++ b/app/models/user_extensions.rb @@ -7,6 +7,8 @@ 3 寮鍙戣 =end class UserExtensions < ActiveRecord::Base + validate :school, presence: true + belongs_to :user belongs_to :school, :class_name => 'School', :foreign_key => :school_id attr_accessible :user_id,:birthday,:brief_introduction,:gender,:location,:occupation,:work_experience,:zip_code,:identity, :technical_title,:student_id diff --git a/app/views/applied_project/_set_applied.js.erb b/app/views/applied_project/_set_applied.js.erb new file mode 100644 index 000000000..7403b963b --- /dev/null +++ b/app/views/applied_project/_set_applied.js.erb @@ -0,0 +1,13 @@ +<% selector = ".#{applied_css(@project)}" %> +$("<%= selector %>").each(function(){$(this).replaceWith("<%= escape_javascript applied_link(@project, User.current) %>")}); +if (window.Messenger) { + Messenger.options = { + extraClasses: 'messenger-fixed messenger-on-bottom messenger-on-right', + theme: 'flat' + } + Messenger().post({ + id: "label_apply_project_waiting", + message: "<%= l(:label_apply_project_waiting) %>", + showCloseButton: true, + }); +}; diff --git a/app/views/bids/_homework_list.html.erb b/app/views/bids/_homework_list.html.erb index 35c414699..f7db8a375 100644 --- a/app/views/bids/_homework_list.html.erb +++ b/app/views/bids/_homework_list.html.erb @@ -1,23 +1,27 @@ +<% is_teacher = is_course_teacher User.current,@bid.courses.first.project %> <%= form_tag(:controller => 'bids', :action => "show_project", :method => :get) do %>
- +
<%= l(:label_task_plural)%>(<%= @homework_list.count%>)<%= l(:label_task_plural)%>(<%= @homework_list.count%>) + <%= link_to "浣滀笟鎵撳寘涓嬭浇", zipdown_assort_path(obj_class: @bid.class, obj_id: @bid), remote: false, class: "button_submit button_submit_font_white", style: "margin: 5px 10px;line-height: 20px;height: 20px;display: inline-block;" if( + User.current.admin? || + !(User.current.roles_for_project(@bid.courses.first).map(&:id) & ([7,9])).empty? ) || + (Rails.env.development?) %> +
<% end %> <% display_id = im_watching_student_id? @bid%> -<%= link_to "浣滀笟鎵撳寘涓嬭浇", zipdown_assort_path(obj_class: @bid.class, obj_id: @bid), remote: false, class: "button_submit button_submit_font_white", style: "margin: 5px 10px;display: inline-block;" if( - User.current.admin? || - !(User.current.roles_for_project(@bid.courses.first).map(&:id) & ([7,9])).empty? ) || - (Rails.env.development?) %> <% @homework_list.each do |homework|%> <% if homework.attachments.any?%> @@ -25,20 +29,29 @@ @@ -52,14 +51,15 @@ <%= link_to(image_tag('delete.png'), attachment_path(file), :data => {:confirm => l(:text_are_you_sure)}, :method => :delete) if delete_allowed %> - + + <% end -%> diff --git a/app/views/files/_sort_by_attachtypel.html.erb b/app/views/files/_sort_by_attachtypel.html.erb index 9df26d7ed..01c57c490 100644 --- a/app/views/files/_sort_by_attachtypel.html.erb +++ b/app/views/files/_sort_by_attachtypel.html.erb @@ -20,7 +20,6 @@ <%= sort_header_tag('content_type', :caption => l(:attachment_sufix_browse), :default_order => 'desc', :scope =>"col", :id=> "vzebra-contenttype")%> <%= sort_header_tag('downloads', :caption => l(:field_downloads), :default_order => 'desc', :scope => "col", :id => "vzebra-action") %> <%= sort_header_tag('operation', :caption => "", :scope => "col", :id => "vzebra-children") %> - <%= sort_header_tag('tags', :caption => l(:label_tag), :id => "vzebra-tag") %> @@ -48,15 +47,17 @@ <%= link_to(image_tag('delete.png'), attachment_path(file), :data => {:confirm => l(:text_are_you_sure)}, :method => :delete) if delete_allowed %> - + + + <% end -%> <% end -%> diff --git a/app/views/forums/_forum_list.html.erb b/app/views/forums/_forum_list.html.erb index faf1cbe5e..0bbb0ddd4 100644 --- a/app/views/forums/_forum_list.html.erb +++ b/app/views/forums/_forum_list.html.erb @@ -7,7 +7,7 @@

<%= link_to h(forum.name), forum_path(forum) %>

<%= forum.description%>

-

<%= authoring forum.created_at, forum.creator %>

+

<%= authoring forum.created_at, forum.creator %>

<%= image_tag(url_to_avatar(homework.user), :class => "avatar")%> -    浣滀笟   :  - <% filename = "" %> - <% homework.attachments.map do |attachment| %> - <% filename = attachment.filename %> - <% if homework.attachments.count > 1%> - <% filename += "绛#{homework.attachments.count}涓枃浠" %> + + +
+   浣滀笟   :  + <% attachments = homework.attachments.map %> + <% for attachment in attachments %> + <% if attachments.count > 1 && attachment != attachments.first %> +
+ <% for item in 1..7 %> +   + <% end %> + <% end %> + <%= link_to_attachment attachment , :download => true -%> <% end %> - <% break %> - <% end %> - <%= link_to filename , homework_attach_path(homework)%> +
+ <% if display_id %> + <%= link_to "浜掕瘎>>" , homework_attach_path(homework)%> + <% end %> +
  - 鍙戝竷浜:  <%= link_to homework.user, user_path(homework.user)%> + 鍙戝竷浜:  <%= link_to (display_id ? homework.user.realname : homework.user ), user_path(homework.user)%> 浣滀笟璇勫垎锛 @@ -48,7 +61,7 @@ <% sum = sum + star_reates.stars %> <% end %> <% stars_reates_count = stars_reates.count == 0 ? 1 : stars_reates.count %> - <%= sum * 1.0 / stars_reates_count %> + <%= format("%.2f", sum * 1.0 / stars_reates_count) %> <% if Time.parse(@bid.deadline.to_s) < Time.parse(homework.attachments[0].created_on.to_s) %> @@ -58,20 +71,20 @@
  - <% if display_id %> - <%= l(:label_bidding_user_studentcode) %>  锛 <%= homework.user.user_extensions.student_id%> - <% end %> + <% if display_id %> + <%= l(:label_bidding_user_studentcode) %>  锛 <%= homework.user.user_extensions.student_id%> + <% end %>
- <% if (User.current == homework.user) || (!Member.where('user_id = ? and project_id = ?', User.current.id, @bid.courses.first.id).first.nil? && (Member.where('user_id = ? and project_id = ?', User.current.id, @bid.courses.first.id).first.roles&Role.where('id = ? or id = ? or id =?',3,7, 9)).size >0) %> -

- <% options = {:author => true, :deletable => attach_delete(homework)} %> - <%= render :partial => 'attachments/links', - :locals => {:attachments => homework.attachments, :options => options} %> -

- <% end %> + <% if (User.current == homework.user) || (!Member.where('user_id = ? and project_id = ?', User.current.id, @bid.courses.first.id).first.nil? && (Member.where('user_id = ? and project_id = ?', User.current.id, @bid.courses.first.id).first.roles&Role.where('id = ? or id = ? or id =?',3,7, 9)).size >0) %> +

+ <% options = {:author => true, :deletable => attach_delete(homework)} %> + <%= render :partial => 'attachments/links', + :locals => {:attachments => homework.attachments, :options => options} %> +

+ <% end %>
diff --git a/app/views/bids/show_project.html.erb b/app/views/bids/show_project.html.erb index 02ef72e7c..c14d2e14c 100644 --- a/app/views/bids/show_project.html.erb +++ b/app/views/bids/show_project.html.erb @@ -1,110 +1,71 @@ - - <% if @bid.homework_type == Bid::HomeworkFile %> - <%= render :partial => 'homework' %> - + <%= render :partial => 'homework' %> + <% else %> - - + <% if User.current.logged? %> + + + + <% end %> +
+ <%= render :partial => 'project_list', :locals => {:bidding_project => @bidding_project, :bid => @bid} %> +
<% end %> diff --git a/app/views/files/_show_all_attachment.html.erb b/app/views/files/_show_all_attachment.html.erb index d34f95f78..07dc6a27f 100644 --- a/app/views/files/_show_all_attachment.html.erb +++ b/app/views/files/_show_all_attachment.html.erb @@ -20,7 +20,6 @@ <%= sort_header_tag('content_type', :caption => l(:attachment_sufix_browse), :default_order => 'desc', :scope => "col", :id => "vzebra-contenttype") %> <%= sort_header_tag('downloads', :caption => l(:field_downloads), :default_order => 'desc', :scope => "col", :id => "vzebra-action") %> <%= sort_header_tag('operation', :caption => "", :scope => "col", :id => "vzebra-children") %> - <%= sort_header_tag('tags', :caption => l(:label_tag), :id => "vzebra-tag") %>
+
<%# @preTags = %w|棰勮A 棰勮B 棰勮C 棰勮D 棰勮E 棰勮Z | %> <%= render :partial => 'tags/tag', :locals => {:obj => file, :object_flag => "6"} %>
- +
-
- <%# @preTags = %w|棰勮A 棰勮B 棰勮C 棰勮D 棰勮E 棰勮Z | %> - <%= render :partial => 'tags/tag', :locals => {:obj => file, :object_flag => "6"} %> -
-
- -
+
+ <%# @preTags = %w|棰勮A 棰勮B 棰勮C 棰勮D 棰勮E 棰勮Z | %> + <%= render :partial => 'tags/tag', :locals => {:obj => file, :object_flag => "6"} %> +
+
+ +
<%= link_to (forum.memo_count), forum_path(forum) %><%= link_to (forum.topic_count), forum_path(forum) %>
鍥炵瓟甯栧瓙
diff --git a/app/views/forums/_show_topics.html.erb b/app/views/forums/_show_topics.html.erb index 057d6a258..7a9eb4316 100644 --- a/app/views/forums/_show_topics.html.erb +++ b/app/views/forums/_show_topics.html.erb @@ -25,6 +25,9 @@ <%= authoring topic.created_at, topic.author %> + + 鏈鍚庡洖澶嶏細<%=link_to_user topic.last_reply.try(:author) %> +
diff --git a/app/views/homework_attach/_app_link.html.erb b/app/views/homework_attach/_app_link.html.erb new file mode 100644 index 000000000..8adf5220e --- /dev/null +++ b/app/views/homework_attach/_app_link.html.erb @@ -0,0 +1,12 @@ + +<% for attachment in attachments %> + <% if attachments.count > 1 && attachment != attachments.first%> +
                 + <% end %> + <%= link_to_attachment attachment, :class => 'icon icon-attachment', :download => true -%> + <% if attachment.is_text? %> + <%= link_to image_tag('magnifier.png'), + :controller => 'attachments', :action => 'show', + :id => attachment, :filename => attachment.filename %> + <% end %> + <% end -%> diff --git a/app/views/homework_attach/_journal_reply_items.html.erb b/app/views/homework_attach/_journal_reply_items.html.erb index 85f7fa304..e9aad84ce 100644 --- a/app/views/homework_attach/_journal_reply_items.html.erb +++ b/app/views/homework_attach/_journal_reply_items.html.erb @@ -19,8 +19,8 @@ %> <% end %> <% if @user == User.current || User.current.admin? || reply.user.id == User.current.id %> - <%= link_to(l(:label_newfeedback_delete), {:controller => 'homework_attach', :action => 'destroy', :object_id => reply, :user_id => reply.user}, - :remote => true, :confirm => l(:text_are_you_sure), :method => 'delete', :class => "delete", :title => l(:button_delete)) %> + <%= link_to(l(:label_newfeedback_delete), {:controller => 'homework_attach', :action => 'destroy_jour', :object_id => reply, :user_id => reply.user}, + :remote => true, :confirm => l(:text_are_you_sure), :title => l(:button_delete)) %> <% end %>

diff --git a/app/views/homework_attach/_showjour.html.erb b/app/views/homework_attach/_showjour.html.erb index dbd7f2547..939deff3b 100644 --- a/app/views/homework_attach/_showjour.html.erb +++ b/app/views/homework_attach/_showjour.html.erb @@ -54,8 +54,8 @@ {:focus => 'project_respond', :onclick => "toggleAndSettingWordsVal($('##{ids}'), $('##{ids} textarea'), '#{l(:label_reply_plural)} #{journal.user.name}: '); $('##{ids} textarea') ;return false;"} %> <% if journal.user==User.current|| User.current.admin? %> - <%= link_to(l(:label_bid_respond_delete), {:controller => 'homework_attach', :action => 'destroy', :object_id => journal, :user_id => journal.user}, - :remote => true, :confirm => l(:text_are_you_sure), :method => 'delete', :class => "delete", :title => l(:button_delete)) %> + <%= link_to(l(:label_bid_respond_delete), {:controller => 'homework_attach', :action => 'destroy_jour', :object_id => journal, :user_id => journal.user}, + :remote => true, :confirm => l(:text_are_you_sure), :title => l(:button_delete)) %> <% end %> diff --git a/app/views/homework_attach/addjours.js.erb b/app/views/homework_attach/addjours.js.erb index e0f32581e..e463237e5 100644 --- a/app/views/homework_attach/addjours.js.erb +++ b/app/views/homework_attach/addjours.js.erb @@ -1,4 +1,4 @@ -$('#message').html('<%= escape_javascript(render(:partial => 'showjour', :locals => {:jour =>@jours, :state => false} )) %>'); +$('#message').html('<%= escape_javascript(render(:partial => 'showjour', :locals => {:jour =>@jour, :state => false} )) %>'); $('#pre_show').html('<%= escape_javascript(render(:partial => 'pre_show', :locals => {:content => nil})) %>'); $('#new_form_user_message').val(""); $('#new_form_reference_user_id').val(""); \ No newline at end of file diff --git a/app/views/homework_attach/destroy.js.erb b/app/views/homework_attach/destroy_jour.js.erb similarity index 100% rename from app/views/homework_attach/destroy.js.erb rename to app/views/homework_attach/destroy_jour.js.erb diff --git a/app/views/homework_attach/edit.html.erb b/app/views/homework_attach/edit.html.erb new file mode 100644 index 000000000..e69de29bb diff --git a/app/views/homework_attach/new.html.erb b/app/views/homework_attach/new.html.erb new file mode 100644 index 000000000..073ab21b2 --- /dev/null +++ b/app/views/homework_attach/new.html.erb @@ -0,0 +1,33 @@ +

<%=raw l(:label_new_homework)%>

+
+ <%= form_for('new_form', :remote => true, :method => :post, + :url => {:controller => 'homework_attach', + :action => 'create', + :user_id => User.current.id, + :bid_id => @bid + }) do |f|%> +

+ 鏍囬锛 + <%= f.text_field "name", :required => true, :size => 60, :style => "width:490px;" %> +

+

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

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

+ <%= render :partial => 'attachments/form' %> +

+
+ + <%= submit_tag t(:label_new), :sta => 0, :class => "enterprise"%> + <%= submit_tag t(:label_memo_create), :sta => 1, :class => "enterprise"%> + +

+ <% end %> +
\ No newline at end of file diff --git a/app/views/homework_attach/show.html.erb b/app/views/homework_attach/show.html.erb index 1400176c2..f2c37d9ac 100644 --- a/app/views/homework_attach/show.html.erb +++ b/app/views/homework_attach/show.html.erb @@ -18,7 +18,9 @@ 浣滀笟鍩虹淇℃伅<%=@count %> - 鍙戝竷浜哄憳锛<%= link_to @homework.user, user_path(@homework.user)%> + + 鍙戝竷浜哄憳锛<%= link_to @homework.user, user_path(@homework.user)%> + 鍙戝竷鏃堕棿锛<%=format_time @homework.created_at %> @@ -26,9 +28,11 @@ 浣滀笟涓嬭浇锛 <% options = {:author => true } %> - <%= render :partial => 'attachments/app_link', :locals => {:attachments => @homework.attachments, :options => options} %> + <%= render :partial => 'app_link', :locals => {:attachments => @homework.attachments, :options => options} %> + + + 鎵灞炰换鍔★細<%= link_to(@homework.bid.name, project_for_bid_path(@homework.bid))%> - 鎵灞炰换鍔★細<%= link_to(@homework.bid.name, project_for_bid_path(@homework.bid))%> @@ -49,7 +53,7 @@ - + <% @homework.attachments.map do |attachment| %> <% if attachment.description != nil && attachment.description != "" %> @@ -67,16 +71,20 @@
-
浣滀笟寰楀垎锛
+
+ 浣滀笟寰楀垎锛 +
寰楀垎姣斾緥
<% 100.step(20,-20) do |star| %> -
+
-
+
<%= @stars_status_map["star#{(star/20).to_s}".to_sym] %> @@ -85,7 +93,11 @@
-
鏈缁堝緱鍒
+
鏈缁堝緱鍒
+
+ <%= @homework.average(:quality).try(:avg).try(:round, 2).to_s %> + 鍒 +
<%= rating_for @homework, :static => true, dimension: :quality, class: 'rateable div_inline' %>
@@ -102,6 +114,18 @@
+ +
浣滀笟璇勮锛
璇勫垎: @@ -118,8 +142,15 @@
- <%= render :partial => 'showjour', :locals => {:jour => @jours} %> + <%= render :partial => 'showjour', :locals => {:jour => @jour} %>
+ + + +
-<%#= link_to '杩斿洖绔炶禌椤甸潰', show_softapplication_contest_path(@softapplication.contest) %>
diff --git a/app/views/issues/_attributes.html.erb b/app/views/issues/_attributes.html.erb index 6aef01e1d..f4857bd22 100644 --- a/app/views/issues/_attributes.html.erb +++ b/app/views/issues/_attributes.html.erb @@ -2,7 +2,7 @@
diff --git a/app/views/layouts/base_homework.html.erb b/app/views/layouts/base_homework.html.erb index aa60f3645..cfdea4a5e 100644 --- a/app/views/layouts/base_homework.html.erb +++ b/app/views/layouts/base_homework.html.erb @@ -151,6 +151,7 @@
  • <%= link_to l(:label_question_student), {:controller => 'bids', :action => 'show' },:class => link_class(:respond)%>
  • + <% if User.current.member_of? @bid.courses.first%>
  • <% if User.current.logged? && @bid.courses.first && (!Member.where('user_id = ? and project_id = ?', User.current.id, @bid.courses.first.id).first.nil? && (Member.where('user_id = ? and project_id = ?', User.current.id, @bid.courses.first.id).first.roles&Role.where('id = ? or id = ? or id =?',5, 10, 7)).size >0) %> <%= link_to l(:label_homework_commit), {:controller => 'bids', :action => 'show_project' },:class => link_class(:project)%> @@ -159,9 +160,10 @@ <% end %>
  • + <% end %> <%= yield %> diff --git a/app/views/layouts/base_projects.html.erb b/app/views/layouts/base_projects.html.erb index 7504e5755..433e8aae6 100644 --- a/app/views/layouts/base_projects.html.erb +++ b/app/views/layouts/base_projects.html.erb @@ -12,6 +12,7 @@ <%= stylesheet_link_tag 'rtl', :media => 'all' if l(:direction) == 'rtl' %> <%= javascript_heads %> <%= heads_for_theme %> + <%= hubspot_head %> <%= call_hook :view_layouts_base_html_head %> <%= yield :header_tags -%> @@ -103,6 +104,14 @@ <%= watcher_link(@project, User.current) %> <% end %> + +
    + <% if ( !(User.current.member_of? @project) && User.current.login?) %> + + <%= applied_link(@project, User.current) %> + <% end %> +
    +
    浣滀笟鎻忚堪锛
    浣滀笟鎻忚堪锛
    - <%= link_to "#{teacherCount(@project)}", project_member_path(@project, :role => 1), :course => '1' %> + <% if User.current.member_of?(@project) %> + <%= link_to "#{teacherCount(@project)}", project_member_path(@project, :role => 1), :course => '1' %> + <% else %> + <%= teacherCount(@project)%> + <% end%> - <%= link_to "#{studentCount(@project)}", project_member_path(@project, :role => 2), :course => '1' %> + <% if User.current.member_of?(@project) %> + <%= link_to "#{studentCount(@project)}", project_member_path(@project, :role => 2), :course => '1' %> + <% else %> + <%= studentCount(@project)%> + <% end %> <%= link_to files_count, project_files_path(@project) %>
    diff --git a/app/views/members/appliedproject.js.erb b/app/views/members/appliedproject.js.erb new file mode 100644 index 000000000..f28558ef6 --- /dev/null +++ b/app/views/members/appliedproject.js.erb @@ -0,0 +1 @@ +$('#principals_for_applied_member').html('<%= escape_javascript(render_principals_for_applied_members(@project)) %>'); diff --git a/app/views/members/create.js.erb b/app/views/members/create.js.erb index 11c468a76..3607ce448 100644 --- a/app/views/members/create.js.erb +++ b/app/views/members/create.js.erb @@ -1,11 +1,13 @@ $('#tab-content-members').html('<%= escape_javascript(render :partial => 'projects/settings/members') %>'); hideOnLoad(); -<% if @members.present? && @members.all? {|m| m.valid? } %> - <% @members.each do |member| %> - $("#member-<%= member.id %>").effect("highlight"); +<%if !@applied_members%> + <% if @members.present? && @members.all? {|m| m.valid? } %> + <% @members.each do |member| %> + $("#member-<%= member.id %>").effect("highlight"); + <% end %> + <% else %> + <% errors = @members.collect {|m| m.errors.full_messages}.flatten.uniq.join(', ') %> + alert('<%= raw(escape_javascript(l(:notice_failed_to_save_members, :errors => errors))) %>'); <% end %> -<% else %> - <% errors = @members.collect {|m| m.errors.full_messages}.flatten.uniq.join(', ') %> - alert('<%= raw(escape_javascript(l(:notice_failed_to_save_members, :errors => errors))) %>'); <% end %> diff --git a/app/views/my/account.html.erb b/app/views/my/account.html.erb index f9b4e9ac3..0418697c3 100644 --- a/app/views/my/account.html.erb +++ b/app/views/my/account.html.erb @@ -33,6 +33,8 @@

    <%= l(:label_my_account) %>

    +<%= error_messages_for 'user' %> +<%= error_messages_for 'se' %>