Commit 2837298a1968f86bea0a139a4e7214d84b76765b

Authored by Braulio Bhavamitra
1 parent cef870cc

Use type_name method for faceted search

app/models/article.rb
@@ -2,6 +2,12 @@ require 'hpricot' @@ -2,6 +2,12 @@ require 'hpricot'
2 2
3 class Article < ActiveRecord::Base 3 class Article < ActiveRecord::Base
4 4
  5 + # use for internationalizable human type names in search facets
  6 + # reimplement on subclasses
  7 + def self.type_name
  8 + _('Content')
  9 + end
  10 +
5 track_actions :create_article, :after_create, :keep_params => [:name, :url], :if => Proc.new { |a| a.is_trackable? && !a.image? }, :custom_target => :action_tracker_target 11 track_actions :create_article, :after_create, :keep_params => [:name, :url], :if => Proc.new { |a| a.is_trackable? && !a.image? }, :custom_target => :action_tracker_target
6 track_actions :update_article, :before_update, :keep_params => [:name, :url], :if => Proc.new { |a| a.is_trackable? && (a.body_changed? || a.name_changed?) }, :custom_target => :action_tracker_target 12 track_actions :update_article, :before_update, :keep_params => [:name, :url], :if => Proc.new { |a| a.is_trackable? && (a.body_changed? || a.name_changed?) }, :custom_target => :action_tracker_target
7 track_actions :remove_article, :before_destroy, :keep_params => [:name], :if => Proc.new { |a| a.is_trackable? }, :custom_target => :action_tracker_target 13 track_actions :remove_article, :before_destroy, :keep_params => [:name], :if => Proc.new { |a| a.is_trackable? }, :custom_target => :action_tracker_target
@@ -571,33 +577,10 @@ class Article &lt; ActiveRecord::Base @@ -571,33 +577,10 @@ class Article &lt; ActiveRecord::Base
571 577
572 private 578 private
573 579
574 - def self.f_type_proc(klass)  
575 - klass.constantize  
576 - h = {  
577 - 'UploadedFile' => _("Uploaded File"),  
578 - 'TextArticle' => _("Text"),  
579 - 'Folder' => _("Folder"),  
580 - 'Event' => _("Event"),  
581 - 'EnterpriseHomepage' => ("Homepage"),  
582 - 'Gallery' => ("Gallery"),  
583 - 'Blog' => ("Blog"),  
584 - 'Forum' => ("Forum")  
585 - }  
586 - h[klass]  
587 - end  
588 - def self.f_profile_type_proc(klass)  
589 - h = {  
590 - 'Enterprise' => _("Enterprise"),  
591 - 'Community' => _("Community"),  
592 - 'Person' => ("Person"),  
593 - 'BscPlugin::Bsc' => ("BSC")  
594 - }  
595 - h[klass]  
596 - end  
597 -  
598 # FIXME: workaround for development env. 580 # FIXME: workaround for development env.
599 # Subclasses aren't (re)loaded, and acts_as_solr 581 # Subclasses aren't (re)loaded, and acts_as_solr
600 # depends on subclasses method to search 582 # depends on subclasses method to search
  583 + # see http://stackoverflow.com/questions/4138957/activerecordsubclassnotfound-error-when-using-sti-in-rails/4139245
601 UploadedFile 584 UploadedFile
602 TextArticle 585 TextArticle
603 TinyMceArticle 586 TinyMceArticle
@@ -609,20 +592,28 @@ class Article &lt; ActiveRecord::Base @@ -609,20 +592,28 @@ class Article &lt; ActiveRecord::Base
609 Forum 592 Forum
610 Event 593 Event
611 594
  595 + def self.f_type_proc(klass)
  596 + klass.constantize.type_name
  597 + end
  598 + def self.f_profile_type_proc(klass)
  599 + klass.constantize.type_name
  600 + end
  601 +
612 def f_type 602 def f_type
613 - case self.class.to_s 603 + #join common types
  604 + case self.class.name
614 when 'TinyMceArticle', 'TextileArticle' 605 when 'TinyMceArticle', 'TextileArticle'
615 - 'TextArticle' 606 + TextArticle.name
616 else 607 else
617 - self.class.to_s 608 + self.class.name
618 end 609 end
619 end 610 end
  611 + def f_profile_type
  612 + self.profile.class.name
  613 + end
620 def f_published_at 614 def f_published_at
621 self.published_at 615 self.published_at
622 end 616 end
623 - def f_profile_type  
624 - self.profile.class.to_s  
625 - end  
626 def f_category 617 def f_category
627 self.categories.collect(&:name) 618 self.categories.collect(&:name)
628 end 619 end
app/models/blog.rb
@@ -9,6 +9,10 @@ class Blog &lt; Folder @@ -9,6 +9,10 @@ class Blog &lt; Folder
9 end 9 end
10 alias_method_chain :posts, :no_folders 10 alias_method_chain :posts, :no_folders
11 11
  12 + def self.type_name
  13 + _('Blog')
  14 + end
  15 +
12 def self.short_description 16 def self.short_description
13 _('Blog') 17 _('Blog')
14 end 18 end
app/models/community.rb
1 class Community < Organization 1 class Community < Organization
  2 +
  3 + def self.type_name
  4 + _('Community')
  5 + end
  6 +
2 N_('Community') 7 N_('Community')
3 N_('Language') 8 N_('Language')
4 9
app/models/enterprise.rb
@@ -2,6 +2,10 @@ @@ -2,6 +2,10 @@
2 # only enterprises can offer products and services. 2 # only enterprises can offer products and services.
3 class Enterprise < Organization 3 class Enterprise < Organization
4 4
  5 + def self.type_name
  6 + _('Enterprise')
  7 + end
  8 +
5 N_('Enterprise') 9 N_('Enterprise')
6 10
7 has_many :products, :dependent => :destroy, :order => 'name ASC' 11 has_many :products, :dependent => :destroy, :order => 'name ASC'
app/models/enterprise_homepage.rb
1 class EnterpriseHomepage < Article 1 class EnterpriseHomepage < Article
2 2
  3 + def self.type_name
  4 + _('Homepage')
  5 + end
  6 +
3 def self.short_description 7 def self.short_description
4 __('Enterprise homepage.') 8 __('Enterprise homepage.')
5 end 9 end
app/models/event.rb
1 class Event < Article 1 class Event < Article
2 2
  3 + def self.type_name
  4 + _('Event')
  5 + end
  6 +
3 settings_items :address, :type => :string 7 settings_items :address, :type => :string
4 8
5 def link=(value) 9 def link=(value)
app/models/folder.rb
1 class Folder < Article 1 class Folder < Article
2 2
  3 + def self.type_name
  4 + _('Folder')
  5 + end
  6 +
3 validate :not_belong_to_blog 7 validate :not_belong_to_blog
4 8
5 def not_belong_to_blog 9 def not_belong_to_blog
app/models/forum.rb
@@ -2,6 +2,10 @@ class Forum &lt; Folder @@ -2,6 +2,10 @@ class Forum &lt; Folder
2 2
3 acts_as_having_posts :order => 'updated_at DESC' 3 acts_as_having_posts :order => 'updated_at DESC'
4 4
  5 + def self.type_name
  6 + _('Forum')
  7 + end
  8 +
5 def self.short_description 9 def self.short_description
6 _('Forum') 10 _('Forum')
7 end 11 end
app/models/gallery.rb
1 class Gallery < Folder 1 class Gallery < Folder
2 2
  3 + def self.type_name
  4 + _('Gallery')
  5 + end
  6 +
3 def self.short_description 7 def self.short_description
4 _('Gallery') 8 _('Gallery')
5 end 9 end
app/models/person.rb
1 # A person is the profile of an user holding all relationships with the rest of the system 1 # A person is the profile of an user holding all relationships with the rest of the system
2 class Person < Profile 2 class Person < Profile
3 3
  4 + def self.type_name
  5 + _('Person')
  6 + end
  7 +
4 acts_as_trackable :after_add => Proc.new {|p,t| notify_activity(t)} 8 acts_as_trackable :after_add => Proc.new {|p,t| notify_activity(t)}
5 acts_as_accessor 9 acts_as_accessor
6 10
app/models/profile.rb
@@ -3,6 +3,12 @@ @@ -3,6 +3,12 @@
3 # which by default is the one returned by Environment:default. 3 # which by default is the one returned by Environment:default.
4 class Profile < ActiveRecord::Base 4 class Profile < ActiveRecord::Base
5 5
  6 + # use for internationalizable human type names in search facets
  7 + # reimplement on subclasses
  8 + def self.type_name
  9 + _('Profile')
  10 + end
  11 +
6 module Roles 12 module Roles
7 def self.admin(env_id) 13 def self.admin(env_id)
8 find_role('admin', env_id) 14 find_role('admin', env_id)
@@ -843,10 +849,8 @@ private :generate_url, :url_options @@ -843,10 +849,8 @@ private :generate_url, :url_options
843 def f_type 849 def f_type
844 self.class.name 850 self.class.name
845 end 851 end
846 - def self.f_type_proc(id)  
847 - {'Enterprise' => _('Enterprise'),  
848 - 'BscPlugin::Bsc' => _('BSC')  
849 - }[id] 852 + def self.f_type_proc(klass)
  853 + klass.constantize.type_name
850 end 854 end
851 def name_sort 855 def name_sort
852 name 856 name
app/models/raw_html_article.rb
1 class RawHTMLArticle < TextArticle 1 class RawHTMLArticle < TextArticle
2 2
  3 + def self.type_name
  4 + _('HTML')
  5 + end
  6 +
3 def self.short_description 7 def self.short_description
4 _('Raw HTML text article.') 8 _('Raw HTML text article.')
5 end 9 end
app/models/rss_feed.rb
1 class RssFeed < Article 1 class RssFeed < Article
2 2
  3 + def self.type_name
  4 + _('RssFeed')
  5 + end
  6 +
3 # i dont know why before filter dont work here 7 # i dont know why before filter dont work here
4 def initialize(*args) 8 def initialize(*args)
5 super(*args) 9 super(*args)
app/models/text_article.rb
@@ -3,6 +3,10 @@ class TextArticle &lt; Article @@ -3,6 +3,10 @@ class TextArticle &lt; Article
3 3
4 xss_terminate :only => [ :name ], :on => 'validation' 4 xss_terminate :only => [ :name ], :on => 'validation'
5 5
  6 + def self.type_name
  7 + _('Article')
  8 + end
  9 +
6 include Noosfero::TranslatableContent 10 include Noosfero::TranslatableContent
7 11
8 def self.icon_name(article = nil) 12 def self.icon_name(article = nil)
app/models/textile_article.rb
1 class TextileArticle < TextArticle 1 class TextileArticle < TextArticle
2 2
  3 + def self.type_name
  4 + _('Article')
  5 + end
  6 +
3 def self.short_description 7 def self.short_description
4 _('Text article with Textile markup language') 8 _('Text article with Textile markup language')
5 end 9 end
app/models/tiny_mce_article.rb
1 class TinyMceArticle < TextArticle 1 class TinyMceArticle < TextArticle
2 2
  3 + def self.type_name
  4 + _('Article')
  5 + end
  6 +
3 def self.short_description 7 def self.short_description
4 _('Text article with visual editor.') 8 _('Text article with visual editor.')
5 end 9 end
app/models/uploaded_file.rb
@@ -4,6 +4,10 @@ @@ -4,6 +4,10 @@
4 # of the file itself is kept. (FIXME?) 4 # of the file itself is kept. (FIXME?)
5 class UploadedFile < Article 5 class UploadedFile < Article
6 6
  7 + def self.type_name
  8 + _('File')
  9 + end
  10 +
7 track_actions :upload_image, :after_create, :keep_params => ["view_url", "thumbnail_path", "parent.url", "parent.name"], :if => Proc.new { |a| a.published? && a.image? && !a.parent.nil? && a.parent.gallery? } 11 track_actions :upload_image, :after_create, :keep_params => ["view_url", "thumbnail_path", "parent.url", "parent.name"], :if => Proc.new { |a| a.published? && a.image? && !a.parent.nil? && a.parent.gallery? }
8 12
9 include ShortFilename 13 include ShortFilename