diff --git a/tracks/app/controllers/projects_controller.rb b/tracks/app/controllers/projects_controller.rb index f5a64496..f960e9d1 100644 --- a/tracks/app/controllers/projects_controller.rb +++ b/tracks/app/controllers/projects_controller.rb @@ -2,8 +2,8 @@ class ProjectsController < ApplicationController helper :application, :todos, :notes before_filter :set_source_view - before_filter :set_project_from_params, :only => [:update, :destroy, :show] - before_filter :default_context_filter, :only => [:create,:update] + before_filter :set_project_from_params, :only => [:update, :destroy, :show, :edit] + before_filter :default_context_filter, :only => [:create, :update] skip_before_filter :login_required, :only => [:index] prepend_before_filter :login_or_feed_token_required, :only => [:index] session :off, :only => :index, :if => Proc.new { |req| ['rss','atom','txt'].include?(req.parameters[:format]) } @@ -41,7 +41,7 @@ class ProjectsController < ApplicationController format.xml { render :xml => @project.to_xml( :except => :user_id ) } end end - + # Example XML usage: curl -H 'Accept: application/xml' -H 'Content-Type: application/xml' # -u username:password # -d 'new project_name' @@ -119,6 +119,13 @@ class ProjectsController < ApplicationController end end + def edit + @contexts = current_user.contexts + respond_to do |format| + format.js + end + end + def destroy @project.destroy @active_projects_count = current_user.projects.count(:conditions => "state = 'active'") diff --git a/tracks/app/views/projects/_project_form.rhtml b/tracks/app/views/projects/_project_form.rhtml index b783aa28..55c402d4 100644 --- a/tracks/app/views/projects/_project_form.rhtml +++ b/tracks/app/views/projects/_project_form.rhtml @@ -1,6 +1,9 @@ <% - @project = project_form + project = project_form %> +<% form_tag project_path(project), { :id => dom_id(project, 'edit_form'), :class => "inline-form edit-project-form", :method => :put } do -%> + + @@ -20,7 +23,22 @@ - \ No newline at end of file + + + + + + +
<%= text_field :project, 'name', :class => 'project-name' %>
- <%= text_field_tag("project[default_context_name]", @project.default_context.name, {:tabindex=>1,:size=> 25}) %> + <%= text_field_tag("project[default_context_name]", project.default_context.name, {:tabindex=>1,:size=> 25}) %> <%= render :partial => 'default_context_autocomplete' %>
   Cancel
+ +<%= apply_behavior ".edit-project-form", make_remote_form(:external => false) %> +<%= apply_behavior "a.form_reset:click", :prevent_default => false do |page, element| + element.up('.list').down('.project').toggle + element.up('.edit-form').toggle + element.up('form').reset + end %> + +<% end -%> diff --git a/tracks/app/views/projects/_project_listing.rhtml b/tracks/app/views/projects/_project_listing.rhtml index 736897d7..852e2bcd 100644 --- a/tracks/app/views/projects/_project_listing.rhtml +++ b/tracks/app/views/projects/_project_listing.rhtml @@ -17,38 +17,20 @@ page << " new Ajax.Request(this.href, {asynchronous:true," page << " evalScripts:true, method:'delete'}); };" end -%> - <%= image_tag( "blank.png", :title => "Edit project", :class=>"edit_item") %> - <%= apply_behavior 'a.edit_project_button:click', {:prevent_default => true, :external => true} do |page, element| - element.up('.project').toggle - editform = element.up('.list').down('.edit-form') - editform.toggle - editform.visual_effect(:appear) - editform.down('input').focus - end + <%= image_tag( "blank.png", :title => "Edit project", :class=>"edit_item") %> + <%= apply_behavior "a.edit_project_button:click", { :prevent_default => true, :external => true} do |page| + page << " this.up('.project').startWaiting();" + page << " new Ajax.Request( this.href, {asynchronous:true, evalScripts:true, method:'get'});" + end -%> <% if controller.action_name == 'create' %> -<% end %> \ No newline at end of file +<% end %> diff --git a/tracks/app/views/projects/edit.rjs b/tracks/app/views/projects/edit.rjs new file mode 100644 index 00000000..6fa66f75 --- /dev/null +++ b/tracks/app/views/projects/edit.rjs @@ -0,0 +1,5 @@ +page[dom_id(@project, 'edit')].replace_html :partial => 'project_form', :locals => { :project_form => @project } +page[@project].stop_waiting +page[@project].hide +page[dom_id(@project, 'edit')].show +page[dom_id(@project, 'form')].down('table').down('input').focus \ No newline at end of file diff --git a/tracks/app/views/projects/update.rjs b/tracks/app/views/projects/update.rjs index 81dd4d49..bc9edc33 100644 --- a/tracks/app/views/projects/update.rjs +++ b/tracks/app/views/projects/update.rjs @@ -11,8 +11,8 @@ page.replace_html "active-projects-count", @active_projects_count page.replace_html "hidden-projects-count", @hidden_projects_count page.replace_html "completed-projects-count", @completed_projects_count -page.set_element_visible ("list-hidden-projects-container", @hidden_projects_count > 0) -page.set_element_visible ("list-active-projects-container", @active_projects_count > 0) -page.set_element_visible ("list-completed-projects-container", @completed_projects_count > 0) +page.set_element_visible("list-hidden-projects-container", @hidden_projects_count > 0) +page.set_element_visible("list-active-projects-container", @active_projects_count > 0) +page.set_element_visible("list-completed-projects-container", @completed_projects_count > 0) page.hide "busy" \ No newline at end of file