2014-03-29 10:57:36 +08:00
|
|
|
class OpenSourceProjectsController < ApplicationController
|
2014-04-03 14:41:04 +08:00
|
|
|
|
|
|
|
helper :sort
|
|
|
|
include SortHelper
|
2014-03-29 10:57:36 +08:00
|
|
|
# GET /open_source_projects
|
|
|
|
# GET /open_source_projects.json
|
|
|
|
def index
|
|
|
|
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
|
|
|
|
|
|
|
|
# GET /open_source_projects/1
|
|
|
|
# GET /open_source_projects/1.json
|
|
|
|
def show
|
|
|
|
@open_source_project = OpenSourceProject.find(params[:id])
|
2014-04-03 14:41:04 +08:00
|
|
|
|
|
|
|
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
|
2014-03-29 10:57:36 +08:00
|
|
|
|
|
|
|
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
|
|
|
|
end
|