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