class ProjectsController < ApplicationController before_filter :login_required, :only => [:create, :update, :destroy, :new] before_filter :require_user_has_ssh_keys, :only => [:new, :create] before_filter :find_project, :except => [:index, :category, :new, :create] before_filter :authorised, :only => [ :update, :edit, :destroy, :new, :create ] after_filter :increment_project_view, :only => [ :show ] def index @title = "Projects" @public_projects = Project.find_all_active_public_projects(current_user) #flash[:error] = "No public projects exist." if @public_projects.size == 0 @member_projects = Project.find_all_active_member_projects(current_user) if logged_in? render :action => "ac_list" end def category tags = params[:id].to_s.gsub(/,\ ?/, " ") @projects = Project.paginate_by_tag(tags, :order => 'created_at desc', :page => params[:page]) @atom_auto_discovery_url = formatted_projects_category_path(params[:id], :atom) respond_to do |format| format.html do @tags = Project.tag_counts render :action => "index" end format.xml { render :xml => @projects } format.atom { render :action => "index"} end end def show # @wiki = @project.wiki @title = "Summary" @critical_tickets = Ticket.find_critical(@project.id) @tickets = Ticket.find_recent(@project.id) @url_suffix = "" #FIXME mainline / hardcoded? @repository = @project.repositories.find_by_name!("mainline") @repository.has_commits? ? @commits = @repository.git.commits(@repository.head_candidate.name, 3, 0) : @commits = [] @messages = Message.find_by_project(@project.id, 3) render :action => "ac_show" end def new end def create @project = Project.new(params[:project]) @project.user = current_user if @project.save redirect_to projects_path else render :action => 'new' end end def edit end def update if @project.user != current_user flash[:error] = "You're not the owner of this project" redirect_to(project_path(@project)) and return end @project.attributes = params[:project] if @project.save redirect_to project_path(@project) else render :action => 'new' end end def confirm_delete end def destroy if @project.can_be_deleted_by?(current_user) @project.destroy else flash[:error] = "You're not the owner of this project, or the project has clones" end redirect_to projects_path end def forum @title, @url_suffix = Project.tab_settings(PRJ_TAB_FORUM) render :action => "ac_forum" end def team @title, @url_suffix = Project.tab_settings(PRJ_TAB_TEAM) @messages = Message.find_by_project(@project.id, 40) render :action => "ac_team" end def roadmap @title, @url_suffix = Project.tab_settings(PRJ_TAB_SUMMARY) render :action => "ac_roadmap" end def log # Project events index page, shows list of all wikis for that project @events = Event.find_by_project(@project.id) unless @events.empty? @title = "Log" @url_suffix = "" render :action => "ac_log_index" else flash[:error] = "No log for this project." redirect_to project_path(@project.slug) end end def config @title, @url_suffix = Project.tab_settings(PRJ_TAB_CONFIG) render :action => "ac_config" end def increment_project_view if @project @project.views = @project.views + 1 @project.save! end end end