myexperiment-hackers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[myexperiment-hackers] [2936] branches/datasets: Made AJAX calls more MV


From: noreply
Subject: [myexperiment-hackers] [2936] branches/datasets: Made AJAX calls more MVC-esque
Date: Fri, 17 Feb 2012 06:39:14 -0500 (EST)

Revision
2936
Author
fbacall
Date
2012-02-17 06:39:13 -0500 (Fri, 17 Feb 2012)

Log Message

Made AJAX calls more MVC-esque

Modified Paths

Added Paths

Diff

Modified: branches/datasets/app/controllers/data_items_controller.rb (2935 => 2936)


--- branches/datasets/app/controllers/data_items_controller.rb	2012-02-16 17:00:37 UTC (rev 2935)
+++ branches/datasets/app/controllers/data_items_controller.rb	2012-02-17 11:39:13 UTC (rev 2936)
@@ -19,16 +19,13 @@
                                     :data_set => @data_set)
       respond_to do |format|
         format.html { redirect_to data_set_url(@data_set) }
+        format.js   { render :layout => false }
       end
     else
       fetch_port_names
       respond_to do |format|
-        if request.xhr?
-          format.html { render :partial => "data_sets/errors", :status => :unprocessable_entity,
-                               :locals => {:errors => @data_item.errors.full_messages} }
-        else
-          format.html { render :action ="" "new", :status => :unprocessable_entity }
-        end
+        format.html { render :action ="" "new", :status => :unprocessable_entity }
+        format.js   { render :layout => false, :status => :unprocessable_entity }
       end
     end
   end
@@ -37,21 +34,14 @@
     if @data_item.update_attributes(:data ="" get_data, :port_name => params[:workflow_port], :port_type => params[:port_type],
                                     :data_set => @data_set)
       respond_to do |format|
-        if request.xhr?
-          format.html { render :partial => "data_items/data_item", :object => @data_item }
-        else
-          format.html { redirect_to data_set_url(@data_set) }
-        end
+        format.html { redirect_to data_set_url(@data_set) }
+        format.js   { render :layout => false }
       end
     else
       fetch_port_names
       respond_to do |format|
-        if request.xhr?
-          format.html { render :partial => "data_sets/errors", :status => :unprocessable_entity,
-                               :locals => {:errors => @data_item.errors.full_messages} }
-        else
-          format.html { render :action ="" "edit", :status => :unprocessable_entity }
-        end
+        format.html { render :action ="" "edit", :status => :unprocessable_entity }
+        format.js   { render :layout => false, :status => :unprocessable_entity  }
       end
     end
   end
@@ -68,11 +58,8 @@
 
   def edit
     respond_to do |format|
-      if request.xhr?
-        format.html { render :partial => "data_items/data_item_form" }
-      else
-        format.html
-      end
+      format.html
+      format.js   { render :layout => false }
     end
   end
 
@@ -81,31 +68,22 @@
 
     if @port_names.empty?
       respond_to do |format|
-        if request.xhr?
-          format.html { render :nothing => true, :status => :unprocessable_entity }
-        else
-          flash[:error] = "No more #{params[:port_type]}s left to specify."
-          format.html { redirect_to data_set_url(@data_set) }
-        end
+        flash[:error] = "No more #{params[:port_type]}s left to specify."
+        format.html { redirect_to data_set_url(@data_set) }
+        format.js   { render :layout => false }
       end
     else
       respond_to do |format|
-        if request.xhr?
-          format.html { render :partial => "data_items/data_item_form" }
-        else
-          format.html
-        end
+        format.html
+        format.js   { render :layout => false }
       end
     end
   end
 
   def show
     respond_to do |format|
-      if request.xhr?
-        format.html { render :partial => "data_items/data_item", :object => @data_item }
-      else
-        format.html
-      end
+      format.html
+      format.js   { render :layout => false }
     end
   end
 
@@ -170,7 +148,10 @@
   def auth
     unless Authorization.is_authorized?("edit", nil, @data_set, current_user)
       respond_to do |format|
-        format.html { render :nothing => true, :status => :forbidden }
+        flash[:error] = "You are not authorized to modify this data set."
+        flash[:error] += " Please log in." unless logged_in?
+        format.html { redirect_to data_set_url(@data_set) }
+        format.js { render :text => "window.location.reload();" } # Refresh the page
       end
     end
   end

Modified: branches/datasets/app/views/data_items/_data_item.rhtml (2935 => 2936)


--- branches/datasets/app/views/data_items/_data_item.rhtml	2012-02-16 17:00:37 UTC (rev 2935)
+++ branches/datasets/app/views/data_items/_data_item.rhtml	2012-02-17 11:39:13 UTC (rev 2936)
@@ -32,8 +32,8 @@
               :title => "Delete this #{data_item.dependent_data? ? "data" : "association"}"}, "", false) %>
     <br/>
   <% end %>
-  <%= icon('edit', {:url ="" edit_data_item_path(data_item), :method => :get,
-                    :update => {:success => "item_#{data_item.id}"},
+  <%= icon('edit', {:url ="" edit_data_item_path(data_item),
+                    :method => :get,
                     :loading => "$('data_item_#{data_item.id}_spinner').show();",
                     :complete => "$('data_item_#{data_item.id}_spinner').hide();"},
            nil, {:title => "Edit this #{data_item.dependent_data? ? "data" : "association"}"}, "", true) %>

Modified: branches/datasets/app/views/data_items/_data_item_form.rhtml (2935 => 2936)


--- branches/datasets/app/views/data_items/_data_item_form.rhtml	2012-02-16 17:00:37 UTC (rev 2935)
+++ branches/datasets/app/views/data_items/_data_item_form.rhtml	2012-02-17 11:39:13 UTC (rev 2936)
@@ -1,9 +1,8 @@
 <%
-  port_name = @data_item.port_name
   port_type = @data_item.port_type
 
   port_names_for_select = @port_names.map do |p|
-    %(<option #{"selected=\"selected\"" if (port_name == p)}
+    %(<option #{"selected=\"selected\"" if (@data_item.port_name == p)}
         value="#{p}" title="#{h p}">#{h truncate(p, :length => 20)}</option>)
   end.join.html_safe
 
@@ -11,7 +10,6 @@
   container_element = @data_item.id.nil? ? "data_item_#{port_type}_form" : "address@hidden"
   unique_id = (@data_item.id || port_type).to_s
 
-
   # We have to revert using a normal, non-AJAX HTTP request when uploading a file, because files cannot be uploaded using
   # _javascript_, as it is forbidden from accessing the file system for security reasons.
   #
@@ -20,33 +18,28 @@
   form_submit_function = nil
   no_ajax ||= false
 
+  form_submit_function = %(
+    $('data_item_form_spinner_#{unique_id}').show();
+    $('data_item_submit_#{unique_id}').disable().value = "...";
+    return true;
+  )
+
   unless no_ajax || @data_item.id.nil?
     form_submit_function = %(
       if($F('data_type_select_#{unique_id}') == "FileData"){
         //Normal HTTP request
-        $('data_item_form_spinner_#{unique_id}').show();
-        $('data_item_submit_#{unique_id}').disable().value = "...";
-        return true;
+        #{form_submit_function}
       }
       else{
         //AJAX
         #{remote_function(:url ="" data_item_path(@data_item),
                           :method => :put,
-                          :update => {:success => container_element,
-                                      :failure => "data_item_form_errors"},
-                          :failure => "$('data_item_form_errors').show();",
                           :loading => "$('data_item_form_spinner_#{unique_id}').show();",
                           :complete => "$('data_item_form_spinner_#{unique_id}').hide();",
                           :form => true)};
         return false;
       }
     )
-  else
-    form_submit_function = %(
-      $('data_item_form_spinner_#{unique_id}').show();
-      $('data_item_submit_#{unique_id}').disable().value = "...";
-      return true;
-    )
   end
 %>
 
@@ -109,7 +102,6 @@
             <% else %>
               <%= link_to "Cancel", "#", : remote_function(:url ="" data_item_path(@data_item),
                                                        :method => :get,
-                                                       :update => {:success => container_element},
                                                        :loading => "$('data_item_form_spinner_#{unique_id}').show();",
                                                        :complete => "$('data_item_form_spinner_#{unique_id}').hide();")+
                                                        ";return false" %>

Added: branches/datasets/app/views/data_items/create.js.erb (0 => 2936)


--- branches/datasets/app/views/data_items/create.js.erb	                        (rev 0)
+++ branches/datasets/app/views/data_items/create.js.erb	2012-02-17 11:39:13 UTC (rev 2936)
@@ -0,0 +1,7 @@
+<% if @data_item.errors.empty? %>
+  $('data_item_<address@hidden>_form').update(
+      '<%= escape_javascript(render :partial => "data_items/data_item", :object => @data_item) -%>'
+  );
+<% else %>
+  alert('<%= escape_javascript(@data_item.errors.full_messages.join("\n")) -%>');
+<% end %>

Added: branches/datasets/app/views/data_items/edit.js.erb (0 => 2936)


--- branches/datasets/app/views/data_items/edit.js.erb	                        (rev 0)
+++ branches/datasets/app/views/data_items/edit.js.erb	2012-02-17 11:39:13 UTC (rev 2936)
@@ -0,0 +1,3 @@
+$('item_<address@hidden>').update(
+    '<%= escape_javascript(render :partial => "data_items/data_item_form", :object => @data_item) -%>'
+);

Added: branches/datasets/app/views/data_items/new.js.erb (0 => 2936)


--- branches/datasets/app/views/data_items/new.js.erb	                        (rev 0)
+++ branches/datasets/app/views/data_items/new.js.erb	2012-02-17 11:39:13 UTC (rev 2936)
@@ -0,0 +1,7 @@
+<% unless @port_names.empty? %>
+  $('data_item_<address@hidden>_form').update(
+      '<%= escape_javascript(render :partial => "data_items/data_item_form", :object => @data_item) -%>'
+  );
+<% else %>
+  alert('No more <address@hidden>s left to specify, try refreshing the page.');
+<% end %>

Added: branches/datasets/app/views/data_items/show.js.erb (0 => 2936)


--- branches/datasets/app/views/data_items/show.js.erb	                        (rev 0)
+++ branches/datasets/app/views/data_items/show.js.erb	2012-02-17 11:39:13 UTC (rev 2936)
@@ -0,0 +1,3 @@
+$('<address@hidden ? "address@hidden" : "address@hidden"-%>').update(
+    '<%= escape_javascript(render :partial => "data_items/data_item", :object => @data_item) -%>'
+);

Added: branches/datasets/app/views/data_items/update.js.erb (0 => 2936)


--- branches/datasets/app/views/data_items/update.js.erb	                        (rev 0)
+++ branches/datasets/app/views/data_items/update.js.erb	2012-02-17 11:39:13 UTC (rev 2936)
@@ -0,0 +1,7 @@
+<% if @data_item.errors.empty? %>
+  $('item_<address@hidden>').update(
+      '<%= escape_javascript(render :partial => "data_items/data_item", :object => @data_item) -%>'
+  );
+<% else %>
+  alert('<%= escape_javascript(@data_item.errors.full_messages.join("\n")) -%>');
+<% end %>

Modified: branches/datasets/app/views/data_sets/_data_set.rhtml (2935 => 2936)


--- branches/datasets/app/views/data_sets/_data_set.rhtml	2012-02-16 17:00:37 UTC (rev 2935)
+++ branches/datasets/app/views/data_sets/_data_set.rhtml	2012-02-17 11:39:13 UTC (rev 2936)
@@ -56,8 +56,6 @@
     <ul class="sectionIcons">
       <li>
         <%= icon('new', {:url ="" new_data_set_data_item_path(:data_set_id => @data_set.id, :port_type => "input"), :method => :get,
-                         :update => {:success => "data_item_input_form"},
-                         :failure => "alert('No more inputs left to specify.')",
                          :loading => "$('data_item_input_form_spinner').show();",
                          :complete => "$('data_item_input_form_spinner').hide();"}, nil, nil,
                  'Add input data', true) %>
@@ -92,12 +90,11 @@
   <% if @free_output_count > 0 %>
     <ul class="sectionIcons">
       <li>
-        <%= icon('new', {:url ="" new_data_set_data_item_path(:data_set_id => @data_set.id, :port_type => "output"), :method => :get,
-                         :update => {:success => "data_item_output_form"},
-                         :failure => "alert('No more outputs left to specify.')",
+        <%= icon('new', {:url ="" new_data_set_data_item_path(:data_set_id => @data_set.id, :port_type => "output"),
+                         :method => :get,
                          :loading => "$('data_item_output_form_spinner').show();",
-                         :complete => "$('data_item_output_form_spinner').hide();"}, nil, nil,
-                 'Add output data', true) %>
+                         :complete => "$('data_item_output_form_spinner').hide();"},
+                 nil, nil, 'Add output data', true) %>
         <img id="data_item_output_form_spinner" src="" style="display:none; vertical-align: middle;"/>
       </li>
     </ul>

Modified: branches/datasets/test/functional/data_items_controller_test.rb (2935 => 2936)


--- branches/datasets/test/functional/data_items_controller_test.rb	2012-02-16 17:00:37 UTC (rev 2935)
+++ branches/datasets/test/functional/data_items_controller_test.rb	2012-02-17 11:39:13 UTC (rev 2936)
@@ -14,7 +14,7 @@
 
     assert_difference("TextData.count", 1) do
     assert_difference("DataItem.count", 1) do
-      xhr :post, :create, :data_set_id => data_set.id,
+      post :create, :data_set_id => data_set.id,
           :workflow_port => "string1",
           :port_type => "input",
           :data_type => "TextData",
@@ -31,7 +31,7 @@
     login_as(:john)
 
     assert_difference("DataItem.count", 1) do
-      xhr :post, :create, :data_set_id => data_set.id,
+      post :create, :data_set_id => data_set.id,
           :workflow_port => "string1",
           :port_type => "input",
           :data_type => "Blob",
@@ -91,7 +91,7 @@
 
     assert_no_difference("TextData.count") do
     assert_no_difference("DataItem.count") do
-      xhr :post, :create, :data_set_id => data_set.id,
+      post :create, :data_set_id => data_set.id,
           :workflow_port => "string1",
           :port_type => "invalid_port_type_that_will_cause_failure",
           :data_type => "TextData",
@@ -109,7 +109,7 @@
 
     assert_no_difference("TextData.count") do
     assert_no_difference("DataItem.count") do
-      xhr :post, :create, :data_set_id => data_set.id,
+      post :create, :data_set_id => data_set.id,
           :workflow_port => "string1",
           :port_type => "input",
           :data_type => "TextData",
@@ -135,7 +135,7 @@
     end
     end
 
-    assert_response :forbidden
+    assert flash[:error]
   end
 
   test "can replace data in a data set" do

reply via email to

[Prev in Thread] Current Thread [Next in Thread]