From a4ddbb351dd71230e2c1043465a0aa28cffa9e0a Mon Sep 17 00:00:00 2001 From: chiu Date: Thu, 6 Feb 2020 12:46:38 +0800 Subject: [PATCH] add ckeditor to title and add title to a tag --- .../admin/announcements_controller.rb | 8 +- app/controllers/announcements_controller.rb | 4 +- app/models/bulletin.rb | 7 +- app/views/admin/announcements/_form.html.erb | 4 +- app/views/admin/announcements/_index.html.erb | 2 +- app/views/announcements/show.html.erb | 136 +++++++++--------- 6 files changed, 84 insertions(+), 77 deletions(-) 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 @@
<%= 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 = "" - end - if now_index != sorted.length-1 - next_result = sorted[now_index+1] - next_url = params['url'] + '/' + next_result.to_param - next_content = "" - 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 = "" + end + if now_index != sorted.length-1 + next_result = sorted[now_index+1] + next_url = params['url'] + '/' + next_result.to_param + next_content = "" + 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