|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- class OpenSourceProjectsController < ApplicationController
-
- before_filter :find_osp, :only => [:master_apply, :accept_master_apply, :refuse_master_apply]
- before_filter :require_master, :only => [:master_apply, :accept_master_apply, :refuse_master_apply]
-
- helper :sort
- include SortHelper
- helper :apply_project_masters
- include ApplyProjectMastersHelper
- helper :no_uses
- include NoUsesHelper
- # GET /open_source_projects
- # GET /open_source_projects.json
- def index
-
- @app_dir = params[:app_dir]
- @language = params[:language]
- @created_at = params[:created_at]
- per_page_option = 10
-
- @open_source_projects = OpenSourceProject.filter(@app_dir, @language, @created_at)
- @open_source_projects = @open_source_projects.like(params[:name]) if params[:name].present?
-
- @os_project_count = @open_source_projects.count
- @os_project_pages = Paginator.new @os_project_count, per_page_option, params['page']
-
- @open_source_projects = @open_source_projects.offset(@os_project_pages.offset).limit(@os_project_pages.per_page)
-
- @bugs = BugToOsp.order('created_at desc').limit(8)
-
- # @open_source_projects = OpenSourceProject.all
-
- respond_to do |format|
- format.html # index.html.erb
- format.json { render json: @open_source_projects }
- end
- end
-
- def master_apply
- @apply = @open_source_project.apply_tips
- @applicants = @open_source_project.applicants
-
- respond_to do |format|
- format.html {
- render :layout => "base_opensource_p"
- }
- format.json { render json: @open_source_project }
- end
- end
-
- # GET /open_source_projects/1
- # GET /open_source_projects/1.json
- def show
- @open_source_project = OpenSourceProject.find(params[:id])
-
- sort_init 'updated_at', 'desc'
- sort_update 'created_at' => "#{RelativeMemo.table_name}.created_at",
- 'replies' => "#{RelativeMemo.table_name}.replies_count",
- 'updated_at' => "COALESCE (last_replies_relative_memos.created_at, #{RelativeMemo.table_name}.created_at)"
-
- @memo = RelativeMemo.new(:open_source_project => @open_source_project)
- @topic_count = @open_source_project.topics.count
- @topic_pages = Paginator.new @topic_count, 10, params['page']
- @memos = @open_source_project.topics.
- reorder("#{RelativeMemo.table_name}.sticky DESC").
- includes(:last_reply).
- limit(@topic_pages.per_page).
- offset(@topic_pages.offset).
- order(sort_clause).
- all
-
- @bugs = @open_source_project.bugs.limit(6)
-
- respond_to do |format|
- format.html {
- render :layout => "base_opensource_p"
- }
- format.json { render json: @open_source_project }
- end
- end
-
- def allbug
- @bugs = BugToOsp.visible
-
- @bug_count = @bugs.count
- @bug_pages = Paginator.new @bug_count, per_page_option, params['page']
- @bugs = @bugs.includes(:bug).reorder("#{RelativeMemo.table_name}.created_at DESC").limit(@bug_pages.per_page).offset(@bug_pages.offset).all
-
- respond_to do |format|
- format.html
- format.json { render json: @open_source_project }
- end
- end
-
- def search
-
- end
-
- def showbug
- @open_source_project = OpenSourceProject.find(params[:id])
-
- sort_init 'updated_at', 'desc'
- sort_update 'created_at' => "#{RelativeMemo.table_name}.created_at",
- 'replies' => "#{RelativeMemo.table_name}.replies_count",
- 'updated_at' => "COALESCE (last_replies_relative_memos.created_at, #{RelativeMemo.table_name}.created_at)"
-
- @memo = RelativeMemo.new(:open_source_project => @open_source_project)
- @topic_count = @open_source_project.bugs.count
- @topic_pages = Paginator.new @topic_count, per_page_option, params['page']
- @memos = @open_source_project.bugs.
- reorder("#{RelativeMemo.table_name}.sticky DESC").
- includes(:last_reply).
- limit(@topic_pages.per_page).
- offset(@topic_pages.offset).
- order(sort_clause).
- all
-
- respond_to do |format|
- format.html {
- render :layout => "base_opensource_p"
- }
- format.json { render json: @open_source_project }
- end
- end
-
- # added by yiang 暴力添加,请绕道
- def showmemo
- @open_source_project = OpenSourceProject.find(params[:id])
-
- sort_init 'updated_at', 'desc'
- sort_update 'created_at' => "#{RelativeMemo.table_name}.created_at",
- 'replies' => "#{RelativeMemo.table_name}.replies_count",
- 'updated_at' => "COALESCE (last_replies_relative_memos.created_at, #{RelativeMemo.table_name}.created_at)"
-
- @memo = RelativeMemo.new(:open_source_project => @open_source_project)
- @topic_count = @open_source_project.topics.count
- @topic_pages = Paginator.new @topic_count, per_page_option, params['page']
- @memos = @open_source_project.topics.
- reorder("#{RelativeMemo.table_name}.sticky DESC").
- includes(:last_reply).
- limit(@topic_pages.per_page).
- offset(@topic_pages.offset).
- order(sort_clause).
- all
-
- respond_to do |format|
- format.html {
- render :layout => "base_opensource_p"
- }
- format.json { render json: @open_source_project }
- end
- end
-
- # GET /open_source_projects/new
- # GET /open_source_projects/new.json
- def new
- @open_source_project = OpenSourceProject.new
-
- respond_to do |format|
- format.html # new.html.erb
- format.json { render json: @open_source_project }
- end
- end
-
- # GET /open_source_projects/1/edit
- def edit
- @open_source_project = OpenSourceProject.find(params[:id])
- end
-
- # POST /open_source_projects
- # POST /open_source_projects.json
- def create
- @open_source_project = OpenSourceProject.new(params[:open_source_project])
-
- respond_to do |format|
- if @open_source_project.save
- format.html { redirect_to @open_source_project, notice: 'Open source project was successfully created.' }
- format.json { render json: @open_source_project, status: :created, location: @open_source_project }
- else
- format.html { render action: "new" }
- format.json { render json: @open_source_project.errors, status: :unprocessable_entity }
- end
- end
- end
-
- # PUT /open_source_projects/1
- # PUT /open_source_projects/1.json
- def update
- @open_source_project = OpenSourceProject.find(params[:id])
-
- respond_to do |format|
- if @open_source_project.update_attributes(params[:open_source_project])
- format.html { redirect_to @open_source_project, notice: 'Open source project was successfully updated.' }
- format.json { head :no_content }
- else
- format.html { render action: "edit" }
- format.json { render json: @open_source_project.errors, status: :unprocessable_entity }
- end
- end
- end
-
- # DELETE /open_source_projects/1
- # DELETE /open_source_projects/1.json
- def destroy
- @open_source_project = OpenSourceProject.find(params[:id])
- @open_source_project.destroy
-
- respond_to do |format|
- format.html { redirect_to open_source_projects_url }
- format.json { head :no_content }
- end
- end
-
- def remove_condition
- @app_dir = params[:app_dir]
- @language = params[:language]
- @created_at = params[:created_at]
- redirect_to open_source_projects_path(:app_dir => @app_dir, :language => @language, :created_at => @created_at, :name => params[:name])
- end
-
- def search
- # per_page_option = 10
- #
- # @open_source_projects = OpenSourceProject.filter(@app_dir, @language, @created_at)
- # @open_source_projects = @open_source_projects.like(params[:name]) if params[:name].present?
- #
- # @os_project_count = @open_source_projects.count
- # @os_project_pages = Paginator.new @os_project_count, per_page_option, params['page']
- #
- # @open_source_projects = @open_source_projects.offset(@os_project_pages.offset).limit(@os_project_pages.per_page)
-
- redirect_to open_source_projects_path(:name => params[:name])
-
- end
-
- def refuse_master_apply
- @apply = ApplyProjectMaster.where("user_id = ? and apply_id = ? and apply_type = 'OpenSourceProject'", params[:user_id], @open_source_project.id)
- @apply.first.destory
-
- redirect_to master_apply_open_source_project_path
- end
-
- def accept_master_apply
- @apply = ApplyProjectMaster.where("user_id = ? and apply_id = ? and apply_type = 'OpenSourceProject'", params[:user_id], @open_source_project.id)
- if @apply.count == 1
- @apply.first.update_attributes(:status => 2)
- end
-
- redirect_to master_apply_open_source_project_path
- end
-
- private
-
- def require_master
- render_403 unless @open_source_project.admin?(User.current)
- end
-
- def find_osp
- @open_source_project = OpenSourceProject.find(params[:id])
- render_404 unless @open_source_project.present?
- end
- end
|