diff --git a/app/controllers/admin/announcements_controller.rb b/app/controllers/admin/announcements_controller.rb
index af62201..fea6e28 100644
--- a/app/controllers/admin/announcements_controller.rb
+++ b/app/controllers/admin/announcements_controller.rb
@@ -332,18 +332,20 @@ class Admin::AnnouncementsController < OrbitAdminController
is_sent = bulletin.email.is_sent
is_sent = !params[:resend_mail].eql?("true") if !params[:resend_mail].blank?
-
+ doc = Nokogiri::HTML(bulletin.title)
+ title = doc.text.empty? ? 'no content' : doc.text
+
bulletin.email.update_attributes(
:create_user=>current_user,
:mail_sentdate=>bulletin.email_sentdate,
:module_app=>@module_app,
:mail_lang => I18n.locale,
:mail_to=>bulletin.email_addresses,
- :mail_subject=>bulletin.title,
+ :mail_subject=>title,
:template=>'announcements/email',
:template_data=>{
"host" => request.host_with_port,
- "title" => bulletin.title,
+ "title" => title,
"url" => page_for_bulletin(bulletin)
},
:is_sent=>is_sent
diff --git a/app/controllers/announcements_controller.rb b/app/controllers/announcements_controller.rb
index 2567a1e..8bfd432 100644
--- a/app/controllers/announcements_controller.rb
+++ b/app/controllers/announcements_controller.rb
@@ -22,6 +22,8 @@ class AnnouncementsController < ApplicationController
desc = (desc.nil? || desc == "" ? "announcement image" : desc)
link_to_show = a.is_external_link ? a.external_link : OrbitHelper.url_to_show(a.to_param)
target = a.is_external_link ? "_blank" : "_self"
+ doc = Nokogiri::HTML(a.title)
+ title = doc.text.empty? ? 'no content' : doc.text
anns << {
"bulletin_links" => links,
"bulletin_files" => files,
@@ -35,7 +37,7 @@ class AnnouncementsController < ApplicationController
"postdate" => a.postdate,
"author" => author,
"is_top" => (a.is_top? ? 1 : 0),
- "link_to_show" => link_to_show,
+ "link_to_show" => link_to_show+"\" title=\"#{title}\"",
"target" => target,
"img_src" => a.image.thumb.url || "/assets/announcement-default.jpg",
"img_description" => desc,
diff --git a/app/models/bulletin.rb b/app/models/bulletin.rb
index a7d6b83..6619aa0 100644
--- a/app/models/bulletin.rb
+++ b/app/models/bulletin.rb
@@ -9,7 +9,7 @@ class Bulletin
include OrbitCategory::Categorizable
include Slug
- field :title, as: :slug_title, type: String, localize: true
+ field :title, type: String, localize: true
field :subtitle, localize: true
field :text, localize: true
field :create_user_id
@@ -51,7 +51,10 @@ class Bulletin
scope :is_approved, ->{where(:approved => true)}
before_create :set_expire
-
+ def slug_title
+ doc = Nokogiri::HTML(self.title)
+ title = doc.text.gsub('/','-')
+ end
def set_expire
self.expirable_created_at = Time.now if self.is_preview
return true
diff --git a/app/views/admin/announcements/_form.html.erb b/app/views/admin/announcements/_form.html.erb
index 62ebf88..f295fe9 100644
--- a/app/views/admin/announcements/_form.html.erb
+++ b/app/views/admin/announcements/_form.html.erb
@@ -242,7 +242,7 @@
<%= t(:title) %>
<%= f.fields_for :title_translations do |f| %>
- <%= f.text_field locale, class: "input-block-level", placeholder: t(:title), value: (@bulletin.title_translations[locale] rescue nil) %>
+ <%= f.text_area locale, class: "ckeditor input-block-level", placeholder: t(:title), value: (@bulletin.title_translations[locale] rescue nil) %>
<% end %>
@@ -253,7 +253,7 @@
<%= f.fields_for :subtitle_translations do |f| %>
- <%= f.text_area locale, rows: 2, class: "input-block-level", value: (@bulletin.subtitle_translations[locale] rescue nil) %>
+ <%= f.text_area locale, rows: 2, class: "ckeditor input-block-level", value: (@bulletin.subtitle_translations[locale] rescue nil) %>
<% end %>
diff --git a/app/views/admin/announcements/_index.html.erb b/app/views/admin/announcements/_index.html.erb
index ee3b021..b354fec 100644
--- a/app/views/admin/announcements/_index.html.erb
+++ b/app/views/admin/announcements/_index.html.erb
@@ -26,7 +26,7 @@
<% if b.expired? || (b.category.disable rescue false)%>
<%= b.title %>
<% else %>
- <%= b.title %>
+ <%= b.title.html_safe %>
<% end %>
<% if b.expired? %>
diff --git a/app/views/announcements/show.html.erb b/app/views/announcements/show.html.erb
index d20fef9..fc08394 100644
--- a/app/views/announcements/show.html.erb
+++ b/app/views/announcements/show.html.erb
@@ -1,69 +1,69 @@
-<%
- require 'announcements_helper'
- params = OrbitHelper.params
- page = Page.where(url:params['url']).first
- @show_back_and_next_flag = 0
- if page.methods.include? 'select_option_items'.to_sym
- ModuleApp.all.select{|tmp| tmp.key.to_s=='announcement'}.each do |modile_app|
- @show_option_items = modile_app.show_option_items rescue nil
- end
- page.select_option_items.each do |select_option_item|
- if !(@show_option_items.nil?) && select_option_item.field_name == @show_option_items.keys.first.to_s
- value = YAML.load(select_option_item.value)
- if value[I18n.locale] == t('announcement.not_show')
- @show_back_and_next_flag = 0
- elsif value[I18n.locale] == t('announcement.show_top')
- @show_back_and_next_flag = 1
- elsif value[I18n.locale] == t('announcement.show_bottom')
- @show_back_and_next_flag = 2
- end
- end
- end
- end
- if @show_back_and_next_flag != 0
- uid = params['uid']
- announcements,sorted = get_sorted_annc
- now_index = sorted.to_enum.with_index.select{|v| v[0].uid==uid}[0][1]
- if now_index != 0
- prev_result = sorted[now_index-1]
- prev_url = params['url'] + '/' + prev_result.to_param
- prev_content = "#{t('announcement.prev')} #{prev_result['title'][I18n.locale]}
"
- end
- if now_index != sorted.length-1
- next_result = sorted[now_index+1]
- next_url = params['url'] + '/' + next_result.to_param
- next_content = "#{t('announcement.next')} #{next_result['title'][I18n.locale]}
"
- end
- content = "#{prev_content}#{next_content}
".html_safe
- end
-%>
-<% if @show_back_and_next_flag!=0 %>
-
-<% end %>
-
-<% if @show_back_and_next_flag==1 %>
-<%= content %>
-<% end %>
-<%= render_view %>
-<% if @show_back_and_next_flag==2 %>
-<%= content %>
+<%
+ require 'announcements_helper'
+ params = OrbitHelper.params
+ page = Page.where(url:params['url']).first
+ @show_back_and_next_flag = 0
+ if page.methods.include? 'select_option_items'.to_sym
+ ModuleApp.all.select{|tmp| tmp.key.to_s=='announcement'}.each do |modile_app|
+ @show_option_items = modile_app.show_option_items rescue nil
+ end
+ page.select_option_items.each do |select_option_item|
+ if !(@show_option_items.nil?) && select_option_item.field_name == @show_option_items.keys.first.to_s
+ value = YAML.load(select_option_item.value)
+ if value[I18n.locale] == t('announcement.not_show')
+ @show_back_and_next_flag = 0
+ elsif value[I18n.locale] == t('announcement.show_top')
+ @show_back_and_next_flag = 1
+ elsif value[I18n.locale] == t('announcement.show_bottom')
+ @show_back_and_next_flag = 2
+ end
+ end
+ end
+ end
+ if @show_back_and_next_flag != 0
+ uid = params['uid']
+ announcements,sorted = get_sorted_annc
+ now_index = sorted.to_enum.with_index.select{|v| v[0].uid==uid}[0][1]
+ if now_index != 0
+ prev_result = sorted[now_index-1]
+ prev_url = params['url'] + '/' + prev_result.to_param
+ prev_content = "#{t('announcement.prev')} #{prev_result['title'][I18n.locale]}
"
+ end
+ if now_index != sorted.length-1
+ next_result = sorted[now_index+1]
+ next_url = params['url'] + '/' + next_result.to_param
+ next_content = "#{t('announcement.next')} #{next_result['title'][I18n.locale]}
"
+ end
+ content = "#{prev_content}#{next_content}
".html_safe
+ end
+%>
+<% if @show_back_and_next_flag!=0 %>
+
+<% end %>
+
+<% if @show_back_and_next_flag==1 %>
+<%= content %>
+<% end %>
+<%= render_view %>
+<% if @show_back_and_next_flag==2 %>
+<%= content %>
<% end %>
\ No newline at end of file