Skip to content

Commit

Permalink
Use UJS and js.erb in place of RJS
Browse files Browse the repository at this point in the history
  • Loading branch information
scottwillson committed Mar 22, 2012
1 parent cc26f82 commit c0c322c
Show file tree
Hide file tree
Showing 7 changed files with 42 additions and 50 deletions.
13 changes: 6 additions & 7 deletions app/assets/javascripts/categories.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,12 @@ function bindCategoryEvents() {
$('.category').unbind();
jQuery('.category').droppable({
drop: function(ev, ui) {
jQuery.post(
'/admin/categories/add_child',
{
id: encodeURIComponent(jQuery(ui.draggable).attr('data-id')),
parent_id: $(this).attr('data-id')
}
);
var droppedOn = jQuery(this);
jQuery.ajax({
type: 'PUT',
url: '/admin/categories/' + encodeURIComponent(jQuery(ui.draggable).attr('data-id')) + '.js',
data: { category: { parent_id: $(this).attr('data-id') } }
});
},
hoverClass: 'hovering'
});
Expand Down
30 changes: 12 additions & 18 deletions app/controllers/admin/categories_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,29 +7,23 @@ class Admin::CategoriesController < Admin::AdminController
# === Assigns
# * categories
def index
respond_to do |format|
format.html {
@category = Category.find_or_create_by_name(RacingAssociation.current.short_name)
@unknowns = Category.find_all_unknowns
}
format.js {
page.replace_html "category_#{@category.id}_children", :partial => "category", :collection => @category.children.sort
}
if params[:parent_id].present?
@category = Category.find(params[:parent_id], :include => :children)
else
@category = Category.find_or_create_by_name(RacingAssociation.current.short_name)
@unknowns = Category.find_all_unknowns
end
end

# Add category as child
def add_child
category_id = params[:id]
@category = Category.find(category_id)
parent_id = params[:parent_id]
if parent_id.present?
@parent = Category.find(parent_id)
@category.parent = @parent
def update
@category = Category.find(params[:id])
@category.update_attributes(params[:category])
# parent_id could be nil, so can't use @category.children
if @category.parent_id
@children = @category.parent.children
else
@category.parent = nil
@children = Category.find_all_unknowns
end
@category.save!
end

# Calculate MbraBar only
Expand Down
12 changes: 0 additions & 12 deletions app/views/admin/categories/add_child.js.erb

This file was deleted.

4 changes: 2 additions & 2 deletions app/views/admin/categories/index.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
<div class="column_grid_container">
<div class="table_container box-3">
<div class="caption"><%= RacingAssociation.current.short_name %></div>
<div class="category category_root" id="association_category_root" data-id="<%= @category.id %>">
<div class="category category_root association_category_root" id="category_<%= @category.id %>_row" data-id="<%= @category.id %>">
<%= render :partial => "category", :collection => @category.children.sort %>
</div>
</div>
<div class="table_container box-3 last">
<div class="caption">Unknown</div>
<div class="category category_root" id="unknown_category_root" data-id="">
<div class="category category_root unknown_category_root" id="category__row" data-id="">
<%= render :partial => "category", :collection => @unknowns.sort %>
</div>
</div>
Expand Down
2 changes: 1 addition & 1 deletion app/views/admin/categories/index.js.erb
Original file line number Diff line number Diff line change
@@ -1 +1 @@
page.replace_html "category_#{@category.id}_children", :partial => "category", :collection => @category.children.sort
jQuery('#category_<%= @category.id %>_children').html("<%= escape_javascript(render(@category.children.sort)) %>");
11 changes: 11 additions & 0 deletions app/views/admin/categories/update.js.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
jQuery('#category_<%= @category.id %>_row').fadeOut();
jQuery('#category_<%= @category.id %>_row').remove();

<% if @category.parent && @category.parent.name != RacingAssociation.current.short_name %>
expandDisclosure('<%= @category.parent_id %>');
<% else %>
jQuery('#category_<%= @category.parent_id %>_row').html("<%= escape_javascript(render(@children.sort)) %>");
<% end %>

jQuery('#category_<%= @category.id %>_row').effect("highlight", {}, 3000);
bindCategoryEvents();
20 changes: 10 additions & 10 deletions test/acceptance/admin/categories_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,18 @@ def test_edit

visit "/admin/categories"

assert page.has_selector? "#unknown_category_root #category_#{masters_35_plus.id}"
assert page.has_no_selector? "#association_category_root #category_#{masters_35_plus.id}"
assert page.has_selector? ".unknown_category_root #category_#{masters_35_plus.id}"
assert page.has_no_selector? ".association_category_root #category_#{masters_35_plus.id}"

find("#category_#{masters_35_plus.id}").drag_to(find("#association_category_root"))
assert page.has_selector? "#association_category_root #category_#{masters_35_plus.id}"
assert page.has_no_selector? "#unknown_category_root #category_#{masters_35_plus.id}"
find("#category_#{masters_35_plus.id}").drag_to(find(".association_category_root"))
assert page.has_selector? ".association_category_root #category_#{masters_35_plus.id}"
assert page.has_no_selector? ".unknown_category_root #category_#{masters_35_plus.id}"

assert page.has_selector? "#association_category_root #category_#{women_4.id}"
assert page.has_no_selector? "#unknown_category_root #category_#{women_4.id}"
assert page.has_selector? ".association_category_root #category_#{women_4.id}"
assert page.has_no_selector? ".unknown_category_root #category_#{women_4.id}"

find("#category_#{women_4.id}").drag_to(find("#unknown_category_root"))
assert page.has_selector? "#unknown_category_root #category_#{women_4.id}"
assert page.has_no_selector? "#association_category_root #category_#{women_4.id}"
find("#category_#{women_4.id}").drag_to(find(".unknown_category_root"))
assert page.has_selector? ".unknown_category_root #category_#{women_4.id}"
assert page.has_no_selector? ".association_category_root #category_#{women_4.id}"
end
end

0 comments on commit c0c322c

Please sign in to comment.