From 2837298a1968f86bea0a139a4e7214d84b76765b Mon Sep 17 00:00:00 2001 From: Braulio Bhavamitra Date: Tue, 25 Oct 2011 16:43:54 -0200 Subject: [PATCH] Use type_name method for faceted search --- app/models/article.rb | 51 +++++++++++++++++++++------------------------------ app/models/blog.rb | 4 ++++ app/models/community.rb | 5 +++++ app/models/enterprise.rb | 4 ++++ app/models/enterprise_homepage.rb | 4 ++++ app/models/event.rb | 4 ++++ app/models/folder.rb | 4 ++++ app/models/forum.rb | 4 ++++ app/models/gallery.rb | 4 ++++ app/models/person.rb | 4 ++++ app/models/profile.rb | 12 ++++++++---- app/models/raw_html_article.rb | 4 ++++ app/models/rss_feed.rb | 4 ++++ app/models/text_article.rb | 4 ++++ app/models/textile_article.rb | 4 ++++ app/models/tiny_mce_article.rb | 4 ++++ app/models/uploaded_file.rb | 4 ++++ 17 files changed, 90 insertions(+), 34 deletions(-) diff --git a/app/models/article.rb b/app/models/article.rb index 75e7f60..a98deaa 100644 --- a/app/models/article.rb +++ b/app/models/article.rb @@ -2,6 +2,12 @@ require 'hpricot' class Article < ActiveRecord::Base + # use for internationalizable human type names in search facets + # reimplement on subclasses + def self.type_name + _('Content') + end + track_actions :create_article, :after_create, :keep_params => [:name, :url], :if => Proc.new { |a| a.is_trackable? && !a.image? }, :custom_target => :action_tracker_target 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 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 < ActiveRecord::Base private - def self.f_type_proc(klass) - klass.constantize - h = { - 'UploadedFile' => _("Uploaded File"), - 'TextArticle' => _("Text"), - 'Folder' => _("Folder"), - 'Event' => _("Event"), - 'EnterpriseHomepage' => ("Homepage"), - 'Gallery' => ("Gallery"), - 'Blog' => ("Blog"), - 'Forum' => ("Forum") - } - h[klass] - end - def self.f_profile_type_proc(klass) - h = { - 'Enterprise' => _("Enterprise"), - 'Community' => _("Community"), - 'Person' => ("Person"), - 'BscPlugin::Bsc' => ("BSC") - } - h[klass] - end - # FIXME: workaround for development env. # Subclasses aren't (re)loaded, and acts_as_solr # depends on subclasses method to search + # see http://stackoverflow.com/questions/4138957/activerecordsubclassnotfound-error-when-using-sti-in-rails/4139245 UploadedFile TextArticle TinyMceArticle @@ -609,20 +592,28 @@ class Article < ActiveRecord::Base Forum Event + def self.f_type_proc(klass) + klass.constantize.type_name + end + def self.f_profile_type_proc(klass) + klass.constantize.type_name + end + def f_type - case self.class.to_s + #join common types + case self.class.name when 'TinyMceArticle', 'TextileArticle' - 'TextArticle' + TextArticle.name else - self.class.to_s + self.class.name end end + def f_profile_type + self.profile.class.name + end def f_published_at self.published_at end - def f_profile_type - self.profile.class.to_s - end def f_category self.categories.collect(&:name) end diff --git a/app/models/blog.rb b/app/models/blog.rb index 5dea943..bec9cac 100644 --- a/app/models/blog.rb +++ b/app/models/blog.rb @@ -9,6 +9,10 @@ class Blog < Folder end alias_method_chain :posts, :no_folders + def self.type_name + _('Blog') + end + def self.short_description _('Blog') end diff --git a/app/models/community.rb b/app/models/community.rb index 3c3f7e7..f85d869 100644 --- a/app/models/community.rb +++ b/app/models/community.rb @@ -1,4 +1,9 @@ class Community < Organization + + def self.type_name + _('Community') + end + N_('Community') N_('Language') diff --git a/app/models/enterprise.rb b/app/models/enterprise.rb index 673649b..6bcaecb 100644 --- a/app/models/enterprise.rb +++ b/app/models/enterprise.rb @@ -2,6 +2,10 @@ # only enterprises can offer products and services. class Enterprise < Organization + def self.type_name + _('Enterprise') + end + N_('Enterprise') has_many :products, :dependent => :destroy, :order => 'name ASC' diff --git a/app/models/enterprise_homepage.rb b/app/models/enterprise_homepage.rb index eefcd4f..7c863c2 100644 --- a/app/models/enterprise_homepage.rb +++ b/app/models/enterprise_homepage.rb @@ -1,5 +1,9 @@ class EnterpriseHomepage < Article + def self.type_name + _('Homepage') + end + def self.short_description __('Enterprise homepage.') end diff --git a/app/models/event.rb b/app/models/event.rb index b6722ff..3530855 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -1,5 +1,9 @@ class Event < Article + def self.type_name + _('Event') + end + settings_items :address, :type => :string def link=(value) diff --git a/app/models/folder.rb b/app/models/folder.rb index 46b82a4..2a1b0e2 100644 --- a/app/models/folder.rb +++ b/app/models/folder.rb @@ -1,5 +1,9 @@ class Folder < Article + def self.type_name + _('Folder') + end + validate :not_belong_to_blog def not_belong_to_blog diff --git a/app/models/forum.rb b/app/models/forum.rb index b411e6d..9a428dc 100644 --- a/app/models/forum.rb +++ b/app/models/forum.rb @@ -2,6 +2,10 @@ class Forum < Folder acts_as_having_posts :order => 'updated_at DESC' + def self.type_name + _('Forum') + end + def self.short_description _('Forum') end diff --git a/app/models/gallery.rb b/app/models/gallery.rb index c965147..c4d9480 100644 --- a/app/models/gallery.rb +++ b/app/models/gallery.rb @@ -1,5 +1,9 @@ class Gallery < Folder + def self.type_name + _('Gallery') + end + def self.short_description _('Gallery') end diff --git a/app/models/person.rb b/app/models/person.rb index 6c3c609..b817eb7 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -1,6 +1,10 @@ # A person is the profile of an user holding all relationships with the rest of the system class Person < Profile + def self.type_name + _('Person') + end + acts_as_trackable :after_add => Proc.new {|p,t| notify_activity(t)} acts_as_accessor diff --git a/app/models/profile.rb b/app/models/profile.rb index 07837b3..d2605c2 100644 --- a/app/models/profile.rb +++ b/app/models/profile.rb @@ -3,6 +3,12 @@ # which by default is the one returned by Environment:default. class Profile < ActiveRecord::Base + # use for internationalizable human type names in search facets + # reimplement on subclasses + def self.type_name + _('Profile') + end + module Roles def self.admin(env_id) find_role('admin', env_id) @@ -843,10 +849,8 @@ private :generate_url, :url_options def f_type self.class.name end - def self.f_type_proc(id) - {'Enterprise' => _('Enterprise'), - 'BscPlugin::Bsc' => _('BSC') - }[id] + def self.f_type_proc(klass) + klass.constantize.type_name end def name_sort name diff --git a/app/models/raw_html_article.rb b/app/models/raw_html_article.rb index 7da3671..a435b16 100644 --- a/app/models/raw_html_article.rb +++ b/app/models/raw_html_article.rb @@ -1,5 +1,9 @@ class RawHTMLArticle < TextArticle + def self.type_name + _('HTML') + end + def self.short_description _('Raw HTML text article.') end diff --git a/app/models/rss_feed.rb b/app/models/rss_feed.rb index a688f0b..05fa532 100644 --- a/app/models/rss_feed.rb +++ b/app/models/rss_feed.rb @@ -1,5 +1,9 @@ class RssFeed < Article + def self.type_name + _('RssFeed') + end + # i dont know why before filter dont work here def initialize(*args) super(*args) diff --git a/app/models/text_article.rb b/app/models/text_article.rb index 194cc5a..a07699e 100644 --- a/app/models/text_article.rb +++ b/app/models/text_article.rb @@ -3,6 +3,10 @@ class TextArticle < Article xss_terminate :only => [ :name ], :on => 'validation' + def self.type_name + _('Article') + end + include Noosfero::TranslatableContent def self.icon_name(article = nil) diff --git a/app/models/textile_article.rb b/app/models/textile_article.rb index f6773c5..9cd1349 100644 --- a/app/models/textile_article.rb +++ b/app/models/textile_article.rb @@ -1,5 +1,9 @@ class TextileArticle < TextArticle + def self.type_name + _('Article') + end + def self.short_description _('Text article with Textile markup language') end diff --git a/app/models/tiny_mce_article.rb b/app/models/tiny_mce_article.rb index 2f83470..b7830b1 100644 --- a/app/models/tiny_mce_article.rb +++ b/app/models/tiny_mce_article.rb @@ -1,5 +1,9 @@ class TinyMceArticle < TextArticle + def self.type_name + _('Article') + end + def self.short_description _('Text article with visual editor.') end diff --git a/app/models/uploaded_file.rb b/app/models/uploaded_file.rb index 2f980ca..5733cb7 100644 --- a/app/models/uploaded_file.rb +++ b/app/models/uploaded_file.rb @@ -4,6 +4,10 @@ # of the file itself is kept. (FIXME?) class UploadedFile < Article + def self.type_name + _('File') + end + 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? } include ShortFilename -- libgit2 0.21.2