0
-class ProjectsController < ApplicationController
0
- helper :application, :todos, :notes
0
- before_filter :set_source_view
0
- before_filter :set_project_from_params, :only => [:update, :destroy, :show, :edit]
0
- before_filter :default_context_filter, :only => [:create, :update]
0
- skip_before_filter :login_required, :only => [:index]
0
- prepend_before_filter :login_or_feed_token_required, :only => [:index]
0
- session :off, :only => :index, :if => Proc.new { |req| ['rss','atom','txt'].include?(req.parameters[:format]) }
0
- @projects = current_user.projects(true)
0
- if params[:projects_and_actions]
0
- @contexts = current_user.contexts(true)
0
- init_not_done_counts(['project'])
0
- if params[:only_active_with_no_next_actions]
0
- @projects = @projects.select { |p| p.active? && count_undone_todos(p) == 0 }
0
- init_project_hidden_todo_counts(['project'])
0
- respond_to do |format|
0
- format.html &render_projects_html
0
- format.m &render_projects_mobile
0
- format.xml { render :xml => @projects.to_xml( :except => :user_id ) }
0
- format.rss &render_rss_feed
0
- format.atom &render_atom_feed
0
- format.text &render_text_feed
0
- def projects_and_actions
0
- @projects = @projects.select { |p| p.active? }
0
- respond_to do |format|
0
- render :action => 'index_text_projects_and_actions', :layout => false, :content_type => Mime::TEXT
0
- init_data_for_sidebar unless mobile?
0
- @projects = current_user.projects
0
- @page_title = "TRACKS::Project: #{@project.name}"
0
- @project.todos.send :with_scope, :find => { :include => [:context, :tags] } do
0
- @not_done = @project.not_done_todos(:include_project_hidden_todos => true)
0
- @deferred = @project.deferred_todos.sort_by { |todo| todo.show_from }
0
- @done = @project.done_todos
0
- @max_completed = current_user.prefs.show_number_completed
0
- @count = @not_done.size
0
- @down_count = @count + @deferred.size
0
- @next_project = current_user.projects.next_from(@project)
0
- @previous_project = current_user.projects.previous_from(@project)
0
- @default_project_context_name_map = build_default_project_context_name_map(@projects).to_json
0
- respond_to do |format|
0
- format.m &render_project_mobile
0
- format.xml { render :xml => @project.to_xml( :except => :user_id ) }
0
- # Example XML usage: curl -H 'Accept: application/xml' -H 'Content-Type:
0
- # -u username:password
0
- # -d '<request><project><name>new project_name</name></project></request>'
0
- # http://our.tracks.host/projects
0
- if params[:format] == 'application/xml' && params['exception']
0
- render_failure "Expected post format is valid xml like so: <request><project><name>project name</name></project></request>."
0
- @project = current_user.projects.build
0
- params_are_invalid = true
0
- if (params['project'] || (params['request'] && params['request']['project']))
0
- @project.attributes = params['project'] || params['request']['project']
0
- params_are_invalid = false
0
- @go_to_project = params['go_to_project']
0
- @saved = @project.save
0
- @project_not_done_counts = { @project.id => 0 }
0
- @active_projects_count = current_user.projects.count(:conditions => "state = 'active'")
0
- @contexts = current_user.contexts
0
- respond_to do |format|
0
- format.js { @down_count = current_user.projects.size }
0
- if @project.new_record? && params_are_invalid
0
- render_failure "Expected post format is valid xml like so: <request><project><name>project name</name></project></request>."
0
- elsif @project.new_record?
0
- render_failure @project.errors.full_messages.join(', ')
0
- head :created, :location => project_url(@project)
0
- # Edit the details of the project
0
- params['project'] ||= {}
0
- if params['project']['state']
0
- @state_changed = @project.state != params['project']['state']
0
- logger.info "@state_changed: #{@project.state} == #{params['project']['state']} != #{@state_changed}"
0
- @project.transition_to(params['project']['state'])
0
- params['project'].delete('state')
0
- success_text = if params['field'] == 'name' && params['value']
0
- params['project']['id'] = params['id']
0
- params['project']['name'] = params['value']
0
- @project.attributes = params['project']
0
- if boolean_param('wants_render')
0
- @project_project_hidden_todo_counts = Hash.new
0
- @project_project_hidden_todo_counts[@project.id] = @project.reload().not_done_todo_count(:include_project_hidden_todos => true)
0
- @project_not_done_counts = Hash.new
0
- @project_not_done_counts[@project.id] = @project.reload().not_done_todo_count(:include_project_hidden_todos => true)
0
- @contexts = current_user.contexts
0
- @active_projects_count = current_user.projects.count(:conditions => "state = 'active'")
0
- @hidden_projects_count = current_user.projects.count(:conditions => "state = 'hidden'")
0
- @completed_projects_count = current_user.projects.count(:conditions => "state = 'completed'")
0
- render :template => 'projects/update.js.rjs'
0
- elsif boolean_param('update_status')
0
- render :template => 'projects/update_status.js.rjs'
0
- elsif boolean_param('update_default_context')
0
- @initial_context_name = @project.default_context.name
0
- render :template => 'projects/update_default_context.js.rjs'
0
- render :text => success_text || 'Success'
0
- notify :warning, "Couldn't update project"
0
- render :template => 'projects/update.js.rjs'
0
- @contexts = current_user.contexts
0
- respond_to do |format|
0
- @active_projects_count = current_user.projects.count(:conditions => "state = 'active'")
0
- @hidden_projects_count = current_user.projects.count(:conditions => "state = 'hidden'")
0
- @completed_projects_count = current_user.projects.count(:conditions => "state = 'completed'")
0
- respond_to do |format|
0
- format.js { @down_count = current_user.projects.size }
0
- format.xml { render :text => "Deleted project #{@project.name}" }
0
- project_ids = params["list-active-projects"] || params["list-hidden-projects"] || params["list-completed-projects"]
0
- projects = current_user.projects.update_positions( project_ids )
0
- render :nothing => true
0
- redirect_to :action => 'index'
0
- @state = params['state']
0
- @projects = current_user.projects.alphabetize(:state => @state) if @state
0
- @contexts = current_user.contexts
0
- init_not_done_counts(['project'])
0
- def render_projects_html
0
- @page_title = "TRACKS::List Projects"
0
- @count = current_user.projects.size
0
- @active_projects = @projects.select{ |p| p.active? }
0
- @hidden_projects = @projects.select{ |p| p.hidden? }
0
- @completed_projects = @projects.select{ |p| p.completed? }
0
- @no_projects = @projects.empty?
0
- @projects.cache_note_counts
0
- @new_project = current_user.projects.build
0
- def render_projects_mobile
0
- @active_projects = @projects.select{ |p| p.active? }
0
- @hidden_projects = @projects.select{ |p| p.hidden? }
0
- @completed_projects = @projects.select{ |p| p.completed? }
0
- @down_count = @active_projects.size + @hidden_projects.size + @completed_projects.size
0
- cookies[:mobile_url]=request.request_uri
0
- render :action => 'index_mobile'
0
- def render_project_mobile
0
- if @project.default_context.nil?
0
- @project_default_context = "This project does not have a default context"
0
- @project_default_context = "The default context for this project is "+
0
- @project.default_context.name
0
- cookies[:mobile_url]=request.request_uri
0
- render :action => 'project_mobile'
0
- render_rss_feed_for @projects, :feed => feed_options,
0
- :item => { :title => :name, :description => lambda { |p| summary(p) } }
0
- render_atom_feed_for @projects, :feed => feed_options,
0
- :item => { :description => lambda { |p| summary(p) },
0
- :author => lambda { |p| nil } }
0
- Project.feed_options(current_user)
0
- init_project_hidden_todo_counts(['project'])
0
- render :action => 'index', :layout => false, :content_type => Mime::TEXT
0
- def set_project_from_params
0
- @project = current_user.projects.find_by_params(params)
0
- @source_view = params['_source_view'] || 'project'
0
- def default_context_filter
0
- p = params['request']['project'] if p.nil? && params['request']
0
- default_context_name = p['default_context_name']
0
- p.delete('default_context_name')
0
- unless default_context_name.blank?
0
- default_context = Context.find_or_create_by_name(default_context_name)
0
- p['default_context_id'] = default_context.id
0
- project_description = ''
0
- project_description += sanitize(markdown( project.description )) unless project.description.blank?
0
- project_description += "<p>#{count_undone_todos_phrase(p)}. "
0
- project_description += "Project is #{project.state}."
0
- project_description += "</p>"
0
+class ProjectsController < ApplicationController
0
+ helper :application, :todos, :notes
0
+ before_filter :set_source_view
0
+ before_filter :set_project_from_params, :only => [:update, :destroy, :show, :edit]
0
+ before_filter :default_context_filter, :only => [:create, :update]
0
+ skip_before_filter :login_required, :only => [:index]
0
+ prepend_before_filter :login_or_feed_token_required, :only => [:index]
0
+ session :off, :only => :index, :if => Proc.new { |req| ['rss','atom','txt'].include?(req.parameters[:format]) }
0
+ @projects = current_user.projects(true)
0
+ if params[:projects_and_actions]
0
+ @contexts = current_user.contexts(true)
0
+ init_not_done_counts(['project'])
0
+ if params[:only_active_with_no_next_actions]
0
+ @projects = @projects.select { |p| p.active? && count_undone_todos(p) == 0 }
0
+ init_project_hidden_todo_counts(['project'])
0
+ respond_to do |format|
0
+ format.html &render_projects_html
0
+ format.m &render_projects_mobile
0
+ format.xml { render :xml => @projects.to_xml( :except => :user_id ) }
0
+ format.rss &render_rss_feed
0
+ format.atom &render_atom_feed
0
+ format.text &render_text_feed
0
+ def projects_and_actions
0
+ @projects = @projects.select { |p| p.active? }
0
+ respond_to do |format|
0
+ render :action => 'index_text_projects_and_actions', :layout => false, :content_type => Mime::TEXT
0
+ init_data_for_sidebar unless mobile?
0
+ @projects = current_user.projects
0
+ @page_title = "TRACKS::Project: #{@project.name}"
0
+ @project.todos.send :with_scope, :find => { :include => [:context, :tags] } do
0
+ @not_done = @project.not_done_todos(:include_project_hidden_todos => true)
0
+ @deferred = @project.deferred_todos.sort_by { |todo| todo.show_from }
0
+ @done = @project.done_todos
0
+ @max_completed = current_user.prefs.show_number_completed
0
+ @count = @not_done.size
0
+ @down_count = @count + @deferred.size
0
+ @next_project = current_user.projects.next_from(@project)
0
+ @previous_project = current_user.projects.previous_from(@project)
0
+ @default_project_context_name_map = build_default_project_context_name_map(@projects).to_json
0
+ respond_to do |format|
0
+ format.m &render_project_mobile
0
+ format.xml { render :xml => @project.to_xml( :except => :user_id ) }
0
+ # Example XML usage: curl -H 'Accept: application/xml' -H 'Content-Type:
0
+ # -u username:password
0
+ # -d '<request><project><name>new project_name</name></project></request>'
0
+ # http://our.tracks.host/projects
0
+ if params[:format] == 'application/xml' && params['exception']
0
+ render_failure "Expected post format is valid xml like so: <request><project><name>project name</name></project></request>."
0
+ @project = current_user.projects.build
0
+ params_are_invalid = true
0
+ if (params['project'] || (params['request'] && params['request']['project']))
0
+ @project.attributes = params['project'] || params['request']['project']
0
+ params_are_invalid = false
0
+ @go_to_project = params['go_to_project']
0
+ @saved = @project.save
0
+ @project_not_done_counts = { @project.id => 0 }
0
+ @active_projects_count = current_user.projects.count(:conditions => "state = 'active'")
0
+ @contexts = current_user.contexts
0
+ respond_to do |format|
0
+ format.js { @down_count = current_user.projects.size }
0
+ if @project.new_record? && params_are_invalid
0
+ render_failure "Expected post format is valid xml like so: <request><project><name>project name</name></project></request>."
0
+ elsif @project.new_record?
0
+ render_failure @project.errors.full_messages.join(', ')
0
+ head :created, :location => project_url(@project)
0
+ # Edit the details of the project
0
+ params['project'] ||= {}
0
+ if params['project']['state']
0
+ @state_changed = @project.state != params['project']['state']
0
+ logger.info "@state_changed: #{@project.state} == #{params['project']['state']} != #{@state_changed}"
0
+ @project.transition_to(params['project']['state'])
0
+ params['project'].delete('state')
0
+ success_text = if params['field'] == 'name' && params['value']
0
+ params['project']['id'] = params['id']
0
+ params['project']['name'] = params['value']
0
+ @project.attributes = params['project']
0
+ if boolean_param('wants_render')
0
+ @project_project_hidden_todo_counts = Hash.new
0
+ @project_project_hidden_todo_counts[@project.id] = @project.reload().not_done_todo_count(:include_project_hidden_todos => true)
0
+ @project_not_done_counts = Hash.new
0
+ @project_not_done_counts[@project.id] = @project.reload().not_done_todo_count(:include_project_hidden_todos => true)
0
+ @contexts = current_user.contexts
0
+ @active_projects_count = current_user.projects.count(:conditions => "state = 'active'")
0
+ @hidden_projects_count = current_user.projects.count(:conditions => "state = 'hidden'")
0
+ @completed_projects_count = current_user.projects.count(:conditions => "state = 'completed'")
0
+ render :template => 'projects/update.js.rjs'
0
+ elsif boolean_param('update_status')
0
+ render :template => 'projects/update_status.js.rjs'
0
+ elsif boolean_param('update_default_context')
0
+ @initial_context_name = @project.default_context.name
0
+ render :template => 'projects/update_default_context.js.rjs'
0
+ render :text => success_text || 'Success'
0
+ notify :warning, "Couldn't update project"
0
+ render :template => 'projects/update.js.rjs'
0
+ @contexts = current_user.contexts
0
+ respond_to do |format|
0
+ @active_projects_count = current_user.projects.count(:conditions => "state = 'active'")
0
+ @hidden_projects_count = current_user.projects.count(:conditions => "state = 'hidden'")
0
+ @completed_projects_count = current_user.projects.count(:conditions => "state = 'completed'")
0
+ respond_to do |format|
0
+ format.js { @down_count = current_user.projects.size }
0
+ format.xml { render :text => "Deleted project #{@project.name}" }
0
+ project_ids = params["list-active-projects"] || params["list-hidden-projects"] || params["list-completed-projects"]
0
+ projects = current_user.projects.update_positions( project_ids )
0
+ render :nothing => true
0
+ redirect_to :action => 'index'
0
+ @state = params['state']
0
+ @projects = current_user.projects.alphabetize(:state => @state) if @state
0
+ @contexts = current_user.contexts
0
+ init_not_done_counts(['project'])
0
+ def render_projects_html
0
+ @page_title = "TRACKS::List Projects"
0
+ @count = current_user.projects.size
0
+ @active_projects = @projects.select{ |p| p.active? }
0
+ @hidden_projects = @projects.select{ |p| p.hidden? }
0
+ @completed_projects = @projects.select{ |p| p.completed? }
0
+ @no_projects = @projects.empty?
0
+ @projects.cache_note_counts
0
+ @new_project = current_user.projects.build
0
+ def render_projects_mobile
0
+ @active_projects = @projects.select{ |p| p.active? }
0
+ @hidden_projects = @projects.select{ |p| p.hidden? }
0
+ @completed_projects = @projects.select{ |p| p.completed? }
0
+ @down_count = @active_projects.size + @hidden_projects.size + @completed_projects.size
0
+ cookies[:mobile_url]=request.request_uri
0
+ render :action => 'index_mobile'
0
+ def render_project_mobile
0
+ if @project.default_context.nil?
0
+ @project_default_context = "This project does not have a default context"
0
+ @project_default_context = "The default context for this project is "+
0
+ @project.default_context.name
0
+ cookies[:mobile_url]=request.request_uri
0
+ @mobile_from_project = @project.id
0
+ render :action => 'project_mobile'
0
+ render_rss_feed_for @projects, :feed => feed_options,
0
+ :item => { :title => :name, :description => lambda { |p| summary(p) } }
0
+ render_atom_feed_for @projects, :feed => feed_options,
0
+ :item => { :description => lambda { |p| summary(p) },
0
+ :author => lambda { |p| nil } }
0
+ Project.feed_options(current_user)
0
+ init_project_hidden_todo_counts(['project'])
0
+ render :action => 'index', :layout => false, :content_type => Mime::TEXT
0
+ def set_project_from_params
0
+ @project = current_user.projects.find_by_params(params)
0
+ @source_view = params['_source_view'] || 'project'
0
+ def default_context_filter
0
+ p = params['request']['project'] if p.nil? && params['request']
0
+ default_context_name = p['default_context_name']
0
+ p.delete('default_context_name')
0
+ unless default_context_name.blank?
0
+ default_context = Context.find_or_create_by_name(default_context_name)
0
+ p['default_context_id'] = default_context.id
0
+ project_description = ''
0
+ project_description += sanitize(markdown( project.description )) unless project.description.blank?
0
+ project_description += "<p>#{count_undone_todos_phrase(p)}. "
0
+ project_description += "Project is #{project.state}."
0
+ project_description += "</p>"