Esta es la super clase para Noticias, Eventos y Páginas de la web. Dicho
de otra forma News, Event
y Page son subclases de Document y comparten la tabla
documents
Usamos este método cuando necesitamos el nombre de la clase “principal” no el del tipo específico del documento. Por ejemplo: News.first.class.to_s devuelve News News.first.class_name devuelve Document Se usa en algunos partials compartidos entre documentos y debates (por ejemplo en attachments y traducciones).
# File app/models/document.rb, line 150 def class_name "Document" end
Accessor para borrar la foto de portada
# File app/models/document.rb, line 135 def delete_cover_photo=(value) self.cover_photo = nil if value.to_i == 1 end
Departamento al que pertenece un documento. Solo para noticias y eventos
# File app/models/document.rb, line 105 def department dept = nil if self.organization dept = self.organization.root end dept end
# File app/models/document.rb, line 129 def has_cover_photo? self.cover_photo_file_name.present? end
# File app/models/document.rb, line 53 def is_private? self.published_at.nil? end
# File app/models/document.rb, line 57 def is_public? !self.is_private? end
Fin de los métodos para compatibilidad con los demás contenidos principales
# File app/models/document.rb, line 125 def past? self.published_at <= 2.days.ago end
Quita del cuerpo del documento el separador de la entradilla
###
# File app/models/document.rb, line 98 def pretty_body(lang_code=I18n.locale) send("body_#{lang_code}") ? send("body_#{lang_code}").gsub(/<p.*>###<.*\/p>/, '').gsub(/<p.*>@@@<.*\/p>/, '') : "" end
Indica si un documento está publicado
# File app/models/document.rb, line 49 def published? !published_at.nil? && published_at <= Time.now end
# File app/models/document.rb, line 113 def qr_code_path(locale = I18n.locale) File.join(RAILS_ROOT, "public", qr_code_url(locale)) end
# File app/models/document.rb, line 117 def qr_code_url(locale = I18n.locale) File.join("/qr_codes/documents/#{id}","#{locale}.png") end
Indica si un documento está traducido a lang_code
Los idiomas
disponibles son Document::LANGUAGES
# File app/models/document.rb, line 93 def translated_to?(lang_code) self.send("title_#{lang_code}").present? && self.send("body_#{lang_code}").present? end
Asigna el tag del departamento al que pertenece el documento. Se llama desde before_save
# File app/models/document.rb, line 163 def assign_department_tag # self.tag_list = self.tag_list - Department.find(:all).map {|dept| dept.tag_name} self.tag_list.add(self.department.tag_name) if self.department end
Al principio se podía elegir si las noticias eran puntuables o no, ahora ya no lo es ninguna. Aquí se desactivan las puntuaciones para todas.
# File app/models/document.rb, line 157 def disable_ratings self.has_ratings = false return true end