class OpenSourceProjectsController < ApplicationController before_filter :find_osp, :only => [:master_apply] before_filter :require_master, :only => [: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.all @os_project_count = @open_source_projects.count @os_project_pages = Paginator.new @os_project_count, per_page_option, params['page'] @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, 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 # @offset, @limit = api_offset_and_limit({:limit => 10}) # @forum = Forum.find(params[:id]) # @memos_all = @forum.topics # @topic_count = @memos_all.count # @topic_pages = Paginator.new @topic_count, @limit, params['page'] # @offset ||= @topic_pages.offset # @memos = @memos_all.offset(@offset).limit(@limit).all respond_to do |format| format.html { render :layout => "base_opensource_p" } format.json { render json: @open_source_project } end end def search 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 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