Commit adb6d89d5f41326826466a8c1258cd3a48905da9
1 parent
11a81060
Exists in
staging
and in
32 other branches
Refactoring for community_track plugin
- Remove html from community_track models - Extracts update_categories to categories helper
Showing
9 changed files
with
21 additions
and
47 deletions
Show diff stats
app/controllers/my_profile/cms_controller.rb
| ... | ... | @@ -3,6 +3,7 @@ class CmsController < MyProfileController |
| 3 | 3 | protect 'edit_profile', :profile, :only => [:set_home_page] |
| 4 | 4 | |
| 5 | 5 | include ArticleHelper |
| 6 | + include CategoriesHelper | |
| 6 | 7 | |
| 7 | 8 | def search_tags |
| 8 | 9 | arg = params[:term].downcase |
| ... | ... | @@ -256,12 +257,7 @@ class CmsController < MyProfileController |
| 256 | 257 | |
| 257 | 258 | def update_categories |
| 258 | 259 | @object = params[:id] ? @profile.articles.find(params[:id]) : Article.new |
| 259 | - @categories = @toplevel_categories = environment.top_level_categories | |
| 260 | - if params[:category_id] | |
| 261 | - @current_category = Category.find(params[:category_id]) | |
| 262 | - @categories = @current_category.children | |
| 263 | - end | |
| 264 | - render :template => 'shared/update_categories', :locals => { :category => @current_category, :object_name => 'article' } | |
| 260 | + render_categories 'article' | |
| 265 | 261 | end |
| 266 | 262 | |
| 267 | 263 | def search_communities_to_publish | ... | ... |
app/controllers/my_profile/profile_design_controller.rb
| ... | ... | @@ -6,6 +6,7 @@ class ProfileDesignController < BoxOrganizerController |
| 6 | 6 | |
| 7 | 7 | before_filter :protect_uneditable_block, :only => [:save] |
| 8 | 8 | before_filter :protect_fixed_block, :only => [:move_block] |
| 9 | + include CategoriesHelper | |
| 9 | 10 | |
| 10 | 11 | def protect_uneditable_block |
| 11 | 12 | block = boxes_holder.blocks.find(params[:id].gsub(/^block-/, '')) |
| ... | ... | @@ -69,12 +70,7 @@ class ProfileDesignController < BoxOrganizerController |
| 69 | 70 | |
| 70 | 71 | def update_categories |
| 71 | 72 | @object = params[:id] ? @profile.blocks.find(params[:id]) : Block.new |
| 72 | - @categories = @toplevel_categories = environment.top_level_categories | |
| 73 | - if params[:category_id] | |
| 74 | - @current_category = Category.find(params[:category_id]) | |
| 75 | - @categories = @current_category.children | |
| 76 | - end | |
| 77 | - render :template => 'shared/update_categories', :locals => { :category => @current_category, :object_name => 'block' } | |
| 73 | + render_categories 'block' | |
| 78 | 74 | end |
| 79 | 75 | |
| 80 | 76 | end | ... | ... |
app/controllers/my_profile/profile_editor_controller.rb
| ... | ... | @@ -9,6 +9,7 @@ class ProfileEditorController < MyProfileController |
| 9 | 9 | before_filter :check_user_can_edit_header_footer, :only => [:header_footer] |
| 10 | 10 | helper_method :has_welcome_page |
| 11 | 11 | helper CustomFieldsHelper |
| 12 | + include CategoriesHelper | |
| 12 | 13 | |
| 13 | 14 | def index |
| 14 | 15 | @pending_tasks = Task.to(profile).pending.without_spam.select{|i| user.has_permission?(i.permission, profile)} |
| ... | ... | @@ -60,12 +61,7 @@ class ProfileEditorController < MyProfileController |
| 60 | 61 | |
| 61 | 62 | def update_categories |
| 62 | 63 | @object = profile |
| 63 | - @categories = @toplevel_categories = environment.top_level_categories | |
| 64 | - if params[:category_id] | |
| 65 | - @current_category = Category.find(params[:category_id]) | |
| 66 | - @categories = @current_category.children | |
| 67 | - end | |
| 68 | - render :template => 'shared/update_categories', :locals => { :category => @current_category, :object_name => 'profile_data' } | |
| 64 | + render_categories 'profile_data' | |
| 69 | 65 | end |
| 70 | 66 | |
| 71 | 67 | def header_footer | ... | ... |
app/helpers/categories_helper.rb
| ... | ... | @@ -34,4 +34,15 @@ module CategoriesHelper |
| 34 | 34 | {:id => category_id ? "select-category-#{category_id}-link" : nil, :remote => true, :class => html_class}.merge(html_options) |
| 35 | 35 | end |
| 36 | 36 | |
| 37 | + def render_categories object_name | |
| 38 | + @toplevel_categories = environment.top_level_categories | |
| 39 | + if params[:category_id] | |
| 40 | + @current_category = Category.find(params[:category_id]) | |
| 41 | + @categories = @current_category.children | |
| 42 | + else | |
| 43 | + @categories = @toplevel_categories | |
| 44 | + end | |
| 45 | + render :template => 'shared/update_categories', :locals => { :category => @current_category, :object_name => object_name } | |
| 46 | + end | |
| 47 | + | |
| 37 | 48 | end | ... | ... |
app/models/block.rb
| ... | ... | @@ -4,8 +4,6 @@ class Block < ActiveRecord::Base |
| 4 | 4 | :visualization_format, :language, :display_user, |
| 5 | 5 | :box, :edit_modes, :move_modes, :mirror |
| 6 | 6 | |
| 7 | - # to be able to generate HTML | |
| 8 | - include ActionView::Helpers::UrlHelper | |
| 9 | 7 | include ActionView::Helpers::TagHelper |
| 10 | 8 | |
| 11 | 9 | # Block-specific stuff | ... | ... |
plugins/community_track/lib/community_track_plugin/track_list_block.rb
| ... | ... | @@ -62,26 +62,10 @@ class CommunityTrackPlugin::TrackListBlock < Block |
| 62 | 62 | tracks |
| 63 | 63 | end |
| 64 | 64 | |
| 65 | - def content(args={}) | |
| 66 | - block = self | |
| 67 | - proc do | |
| 68 | - instance_eval(&block.set_seed(true)) | |
| 69 | - render :file => 'blocks/track_list', :locals => {:block => block} | |
| 70 | - end | |
| 71 | - end | |
| 72 | - | |
| 73 | 65 | def has_page?(page, per_page=limit) |
| 74 | 66 | return (page-1) * per_page < count_tracks |
| 75 | 67 | end |
| 76 | 68 | |
| 77 | - def footer | |
| 78 | - block = self | |
| 79 | - return nil if !has_page?(2) | |
| 80 | - proc do | |
| 81 | - render :partial => 'blocks/track_list_more', :locals => {:block => block, :page => 2, :per_page => block.limit} | |
| 82 | - end | |
| 83 | - end | |
| 84 | - | |
| 85 | 69 | def self.expire_on |
| 86 | 70 | { :profile => [:article, :category], :environment => [:article, :category] } |
| 87 | 71 | end | ... | ... |
plugins/community_track/test/unit/community_track_plugin/track_list_block_test.rb
| ... | ... | @@ -34,16 +34,6 @@ class TrackListBlockTest < ActiveSupport::TestCase |
| 34 | 34 | assert_equal @block.limit, @block.tracks.to_a.size |
| 35 | 35 | end |
| 36 | 36 | |
| 37 | - should 'return more link if has more tracks to show' do | |
| 38 | - @block.limit.times { |i| create_track("track#{i}", profile) } | |
| 39 | - assert @block.footer | |
| 40 | - end | |
| 41 | - | |
| 42 | - should 'do not return more link if there is no more tracks to show' do | |
| 43 | - (@block.limit-1).times { |i| create_track("track#{i}", profile) } | |
| 44 | - refute @block.footer | |
| 45 | - end | |
| 46 | - | |
| 47 | 37 | should 'count all tracks' do |
| 48 | 38 | @block.owner.articles.destroy_all |
| 49 | 39 | tracks_to_insert = @block.limit + 1 | ... | ... |
plugins/community_track/views/blocks/_track_list_more.html.erb
| ... | ... | @@ -6,7 +6,7 @@ |
| 6 | 6 | </div> |
| 7 | 7 | <% else %> |
| 8 | 8 | <div class="more"> |
| 9 | - <%= link_to_remote(c_('More'), :url => {:id => block.id, :controller => 'community_track_plugin_public', :action => 'view_tracks', :page => page, :per_page => per_page, :force_same_page => force_same_page}, :method => :get) %> | |
| 9 | + <%= link_to c_('More'), :id => block.id, :controller => 'community_track_plugin_public', :action => 'view_tracks', :page => page, :per_page => per_page, :force_same_page => force_same_page, :remote => true %> | |
| 10 | 10 | </div> |
| 11 | 11 | <% end %> |
| 12 | 12 | </div> | ... | ... |
plugins/community_track/views/blocks/footers/track_list.html.erb
0 → 100644