diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index b66439298..af02829e0 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -851,8 +851,6 @@ class CoursesController < ApplicationController # render_403 # return # end - # 统计访问量 - @course.update_column(:visits, @course.visits.to_i + 1) #更新创建课程消息状态 create_course_messages = @course.course_messages.where("user_id =? and course_message_type =? and course_id =? and viewed =?", User.current.id, 'Course', @course.id, 0) create_course_messages.update_all(:viewed => true) diff --git a/app/controllers/organizations_controller.rb b/app/controllers/organizations_controller.rb index a24bcd9a4..e1d623d5a 100644 --- a/app/controllers/organizations_controller.rb +++ b/app/controllers/organizations_controller.rb @@ -352,8 +352,13 @@ class OrganizationsController < ApplicationController if !params[:name].nil? condition = "%#{params[:name].strip}%".gsub(" ","") end - sql = "select courses.* from courses inner join members on courses.id = members.course_id where members.user_id = #{User.current.id} and courses.is_public = 1 and courses.name like '#{condition}'"+ - "and courses.id not in (select distinct org_courses.course_id from org_courses where org_courses.organization_id = #{@organization.id}) and courses.is_delete=0" + if User.current.admin? + sql = "select courses.* from courses where courses.is_public = 1 and courses.name like '#{condition}'"+ + "and courses.id not in (select distinct org_courses.course_id from org_courses where org_courses.organization_id = #{@organization.id}) and courses.is_delete=0" + else + sql = "select courses.* from courses inner join members on courses.id = members.course_id where members.user_id = #{User.current.id} and courses.is_public = 1 and courses.name like '#{condition}'"+ + "and courses.id not in (select distinct org_courses.course_id from org_courses where org_courses.organization_id = #{@organization.id}) and courses.is_delete=0" + end #user_courses = Course.find_by_sql(sql) @courses = Course.find_by_sql(sql) # @added_course_ids = @organization.courses.map(&:id) @@ -396,8 +401,13 @@ class OrganizationsController < ApplicationController if !params[:name].nil? condition = "%#{params[:name].strip}%".gsub(" ","") end - sql = "select projects.* from projects inner join members on projects.id = members.project_id where members.user_id = #{User.current.id} and projects.status != 9 and projects.is_public = 1 and projects.name like '#{condition}'" + + if User.current.admin? + sql = "select projects.* from projects where projects.status != 9 and projects.is_public = 1 and projects.name like '#{condition}'" + " and projects.id not in (select org_projects.project_id from org_projects where organization_id = #{@organization.id}) and status=1" + else + sql = "select projects.* from projects inner join members on projects.id = members.project_id where members.user_id = #{User.current.id} and projects.status != 9 and projects.is_public = 1 and projects.name like '#{condition}'" + + " and projects.id not in (select org_projects.project_id from org_projects where organization_id = #{@organization.id}) and status=1" + end #user_projects = Course.find_by_sql(sql) @projects = Course.find_by_sql(sql) # @added_course_ids = @organization.projects.map(&:id) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 113e37af3..5c8d194b9 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -299,8 +299,6 @@ class ProjectsController < ApplicationController if params[:jump] && redirect_to_project_menu_item(@project, params[:jump]) return end - # 统计访问量 - @project.update_column(:visits, @project.visits + 1) # over @author = params[:user_id].blank? ? nil : User.active.find(params[:user_id]) @page = params[:page] ? params[:page].to_i + 1 : 0 @@ -321,6 +319,10 @@ class ProjectsController < ApplicationController else @events_pages = ForgeActivity.includes(:project).where("forge_activities.project_id = ? and projects.is_public = ? and forge_act_type != ? ",@project,1, "Document").order("created_at desc").page(params['page'|| 1]).per(10); end + g = Gitlab.client + unless @project.gpid.nil? + @static_total_per_user = g.rep_stats(@project.gpid) + end # 根据对应的请求,返回对应的数据 respond_to do |format| format.html diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 9bb6055ee..82a6196cb 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -30,7 +30,7 @@ class RepositoriesController < ApplicationController menu_item :settings, :only => [:new, :create, :edit, :update, :destroy, :committers] default_search_scope :changesets - before_filter :find_project_by_project_id, :only => [:new, :create, :newrepo] + before_filter :find_project_by_project_id, :only => [:new, :create, :newrepo, :stats] before_filter :find_repository, :only => [:edit, :update, :destroy, :committers] before_filter :find_project_repository, :except => [:new, :create, :newcreate, :edit, :update, :destroy, :committers, :newrepo, :to_gitlab, :forked] before_filter :find_changeset, :only => [:revision, :add_related_issue, :remove_related_issue] @@ -332,7 +332,7 @@ update # end #if( !User.current.member_of?(@project) || @project.hidden_repo) - @repository.fetch_changesets if Setting.autofetch_changesets? && @path.empty? + # @repository.fetch_changesets if Setting.autofetch_changesets? && @path.empty? # :name, :path, :kind, :size, :lastrev, :changeset @entries = @repository.entries(@path, @rev) @@ -348,24 +348,25 @@ update # (show_error_not_found; return) unless @entries g = Gitlab.client @changesets = g.commits(@project.gpid, :ref_name => @rev) - # @changesets = @repository.latest_changesets(@path, @rev) - # @changesets_count = @repository.latest_changesets(@path, @rev).count + # 总的提交数 @changesets_all_count = @project.gpid.nil? ? 0 : g.project(@project.gpid).commit_count # 访问该页面的是会后则刷新 if @project.project_score.nil? ProjectScore.create(:project_id => @project.id, :score => false) end + # 刷新改页面的时候,更新统计数 if @changesets_all_count != @project.project_score.changeset_num && @changesets_all_count != 0 update_commits_count(@project, @changesets_all_count) end # end + # 最近一次提交 @changesets_latest_coimmit = @changesets[0] unless @changesets[0].blank? update_commits_date(@project, @changesets_latest_coimmit) end + @creator = User.where("id =?", @project.user_id).first.try(:login) @properties = @repository.properties(@path, @rev) @repositories = @project.repositories - @course_tag = params[:course] project_path_cut = RepositoriesHelper::PROJECT_PATH_CUT ip = RepositoriesHelper::REPO_IP_ADDRESS gitlab_address = Redmine::Configuration['gitlab_address'] @@ -374,11 +375,7 @@ update else @repos_url = "http://"+@repository.login.to_s+"_"+@repository.identifier.to_s+"@"+ip.to_s + @repository.url.slice(project_path_cut, @repository.url.length).to_s end - if @course_tag == 1 - render :action => 'show', :layout => 'base_courses' - else - render :action => 'show', :layout => 'base_projects' - end + render :action => 'show', :layout => 'base_projects' end end @@ -390,7 +387,7 @@ update g = Gitlab.client limit = 20 #每次页面的换回值从1开始,但是gitlab的页面查询是从0开始,所以先改变page的类型减一在改回来 - @commits = g.commits(@project.gpid, page:(params[:page].to_i - 1).to_s) + @commits = g.commits(@project.gpid, page:(params[:page].to_i - 1).to_s, ref_name:@rev) #add by hx #rep_count = commit_count(@project) @@ -565,10 +562,24 @@ update end def stats - @project_id = params[:id] - @repository_id = @repository.identifier - # 提交次数统计 - @status_commit_count = Changeset.count(:conditions => ["#{Changeset.table_name}.repository_id = ?", @repository.id]) + if @project.gpid.nil? + render 404 + return + end + project_id = @project.gpid + # @repository_id = @repository.identifier + # creator = params[:creator] + rev = params[:rev] + g = Gitlab.client + begin + @static_total_per_user = g.rep_stats(project_id, :rev => rev) + @static_total_per_user + # @static_month__per_user = g.rep_stats(project_id, :rev => rev, :creator => creator, :period => 2) + # @static_week_per_user = g.rep_stats(project_id, :rev => rev, :creator => creator, :period => 3) + rescue + render_404 + return + end render :layout => 'base_projects' end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index f61863631..a15f37274 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1206,8 +1206,6 @@ class UsersController < ApplicationController end def show - # 统计访问量 - @user.update_column(:visits, @user.visits.to_i + 1) unless User.current == @user #更新用户申请成为课程老师或教辅消息的状态 if params[:course_id] != nil join_course_messages = CourseMessage.where("course_id =? and course_message_type =? and user_id =? and course_message_id =? and viewed =?", diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 828123675..366cea06b 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -33,6 +33,10 @@ module ApplicationHelper extend Forwardable def_delegators :wiki_helper, :wikitoolbar_for, :heads_for_wiki_formatter + def update_visiti_count container + container.update_column(:visits, container.visits + 1) + end + # Time 2015-03-24 15:27:29 # Author lizanle # Description 从硬盘上删除对应的资源文件 diff --git a/app/views/layouts/base_courses.html.erb b/app/views/layouts/base_courses.html.erb index ff7f20300..a9e859448 100644 --- a/app/views/layouts/base_courses.html.erb +++ b/app/views/layouts/base_courses.html.erb @@ -68,6 +68,10 @@ + <%# 更新访问数,刷新的时候更新访问次数 %> + <% update_visiti_count @course %> + <%# over %> +
+ + <%# 更新访问数,刷新的时候更新访问次数 %> + <% update_visiti_count @user %> + <%# over %> +

@@ -229,7 +234,6 @@ <%=link_to "", new_project_path(:host=> Setting.host_name), :class => "homepageMenuSetting fr", :style => "margin-right:10px;", :title => "新建项目"%> <% end%>

- <% if @user.projects.visible.count > 0 project_order_ids = "(" + ForgeActivity.find_by_sql("SELECT p.project_id, p.updated_at FROM @@ -242,7 +246,7 @@ end %> - <%# projects = @user.projects.visible.select("projects.*, (SELECT MAX(updated_at) FROM `forge_activities` WHERE forge_activities.project_id = projects.id) AS a").order("a desc").limit(5)%> + <%# projects = @user.projects.visible.select("projects.*, (SELECT MAX(created_at) FROM `forge_activities` WHERE forge_activities.project_id = projects.id) AS a").order("a desc").limit(5)%>