| Class | News |
| In: |
app/models/news.rb
|
| Parent: | Document |
Clase para las Noticias. Es subclase de Document, por lo que usa la tabla documents
# File app/models/news.rb, line 48
48: def cuerpo(lang_code=I18n.locale)
49: c = self.pretty_body(lang_code).dup
50: if self.subtitle.present?
51: c = c.gsub(/<[^<]+class="r01Subtitular".*?>#{Regexp.escape(self.subtitle(lang_code))}<\/.+?>/, '')
52: end
53: if self.entradilla.present?
54: c = c.gsub(/<[^<]+class="r01Entradilla".*?>#{Regexp.escape(self.entradilla(lang_code))}<\/.+?>/, '')
55: end
56:
57: return c
58: end
# File app/models/news.rb, line 40
40: def entradilla(lang_code=I18n.locale)
41: if self.send("body_#{lang_code}").present? && m = self.send("body_#{lang_code}").match(/<.+class=\"r01Entradilla\".*?>(.+?)</)
42: return m[1]
43: else
44: return ""
45: end
46: end
Para euskadi.net
# File app/models/news.rb, line 32
32: def subtitle(lang_code=I18n.locale)
33: if self.send("body_#{lang_code}").present? && m = self.send("body_#{lang_code}").match(/<.+class=\"r01Subtitular\".*?>(.+?)</)
34: return m[1]
35: else
36: return ""
37: end
38: end
Garantiza que solo habrá una noticia destacada en OpenIrekia. Se llama before_update
# File app/models/news.rb, line 125
125: def check_only_one_featured
126: Document.update_all("featured='f'") if featured && featured_changed?
127: end
No todas las columnas de la tabla documents se utilizan en las noticias, por lo que nos aseguramos de que están vacías. Se llama desde before_save
# File app/models/news.rb, line 95
95: def disable_unnecessary_fields
96: self.starts_at = nil
97: self.ends_at = nil
98: self.place = nil
99: self.lat = nil
100: self.lng = nil
101: self.location_for_gmaps = nil
102: self.stream_flow_id = false
103: self.journalist_alert_version = 0
104: self.staff_alert_version = 0
105: end
Programa el auto-tweeteo de las noticias publicadas en irekia, con fecha igual a la fecha de publicacion en la web. Se llama desde before_save
# File app/models/news.rb, line 109
109: def schedule_tweets
110: # Si ha pasado más de un mes desde su publicación, no lo twitteamos
111: if self.published_at && self.published_at >= 1.month.ago
112: # Primero borramos los tweets pendientes de este evento, por si ha cambiado la fecha
113: DocumentTweet.delete_all(["document_id= ? AND tweeted_at IS NULL", self.id])
114:
115: Event::LANGUAGES.each do |l|
116: if self.published? && self.show_in_irekia? && self.translated_to?(l) && !DocumentTweet.exists?(:document_id => self.id, :tweet_locale => l)
117: self.tweets.build(:tweet_account => "irekia_news", :tweet_at => self.published_at, :tweet_locale => l)
118: end
119: end
120: end
121: end
Crea el directorio para los contenidos multimedia de esta noticia a partir de lo especificado en el parametro multimedia_dir. Se llama desde before_save.
Ver también documentación de Document#full_multimedia_path
# File app/models/news.rb, line 67
67: def set_and_create_multimedia_path
68: if (self.new_record? && self.multimedia_dir.present?) || (self.multimedia_dir_changed? && self.multimedia_dir_was.blank? && self.multimedia_dir.present?)
69: # if m = self.multimedia_dir.match(/^(\d{4}\/\d{2}\/\d{2}\/)/)
70: self.multimedia_path = self.multimedia_dir.dup
71: self.multimedia_path << "/" unless self.multimedia_path.match(/\/$/)
72:
73: # else
74: # date = self.published_at ? self.published_at.to_date : Date.today
75: # self.multimedia_path = "#{date.year}/#{date.strftime("%m")}/#{date.strftime("%d")}/#{self.multimedia_dir}/"
76: # end
77: m_path_array = self.multimedia_path.split('/')
78: FileUtils.mkdir_p(Document::MULTIMEDIA_PATH + (m_path_array + ["solo_irekia"]).join('/'))
79: logger.info "Creando directorio #{Document::MULTIMEDIA_PATH + (m_path_array + ['solo_irekia']).join('/')}"
80: FileUtils.mkdir_p(Document::MULTIMEDIA_PATH + (m_path_array + ["solo_agencia"]).join('/'))
81: if Document.exists?(:multimedia_path => self.multimedia_path)
82: self.errors.add(:multimedia_dir, I18n.t('activerecord.errors.messages.taken'))
83: return false
84: else
85: return self.multimedia_path
86: end
87: else
88: return true
89: end
90: end