add ckeditor to title and add title to a tag

This commit is contained in:
chiu 2020-02-06 12:46:38 +08:00
parent 31b331d852
commit a4ddbb351d
6 changed files with 84 additions and 77 deletions

View File

@ -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

View File

@ -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,

View File

@ -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

View File

@ -242,7 +242,7 @@
<label class="control-label muted"><%= t(:title) %></label>
<div class="controls">
<%= 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 %>
</div>
</div>
@ -253,7 +253,7 @@
<div class="controls">
<div class="textarea">
<%= 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 %>
</div>
</div>

View File

@ -26,7 +26,7 @@
<% if b.expired? || (b.category.disable rescue false)%>
<%= b.title %>
<% else %>
<a href="<%= page_for_bulletin(b) %>" target="_blank"><%= b.title %></a>
<a href="<%= page_for_bulletin(b) %>" target="_blank"><%= b.title.html_safe %></a>
<% end %>
<% if b.expired? %>

View File

@ -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 = "<a href='#{prev_url}' class='prev'><b>#{t('announcement.prev')}</b><p>#{prev_result['title'][I18n.locale]}</p></a>"
end
if now_index != sorted.length-1
next_result = sorted[now_index+1]
next_url = params['url'] + '/' + next_result.to_param
next_content = "<a href='#{next_url}' class='next'><b>#{t('announcement.next')}</b><p>#{next_result['title'][I18n.locale]}</p></a>"
end
content = "<div class='see_more_boxTitle'>#{prev_content}#{next_content}</div>".html_safe
end
%>
<% if @show_back_and_next_flag!=0 %>
<style type="text/css">
.see_more_boxTitle{
display: flex;
margin: 1em 0em;
padding: 1em;
border: 0.2em solid;
}
a.prev, a.next{
width: 50%;
border: 0.2em solid;
padding: 1em;
flex: 1;
}
a.next{
margin-left: 1em;
}
a.prev{
margin-right: 1em;
}
</style>
<% 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 = "<a href='#{prev_url}' title='#{t('announcement.prev')}' class='prev'><b>#{t('announcement.prev')}</b><p>#{prev_result['title'][I18n.locale]}</p></a>"
end
if now_index != sorted.length-1
next_result = sorted[now_index+1]
next_url = params['url'] + '/' + next_result.to_param
next_content = "<a href='#{next_url}' title='#{t('announcement.next')}' class='next'><b>#{t('announcement.next')}</b><p>#{next_result['title'][I18n.locale]}</p></a>"
end
content = "<div class='see_more_boxTitle'>#{prev_content}#{next_content}</div>".html_safe
end
%>
<% if @show_back_and_next_flag!=0 %>
<style type="text/css">
.see_more_boxTitle{
display: flex;
margin: 1em 0em;
padding: 1em;
border: 0.2em solid;
}
a.prev, a.next{
width: 50%;
border: 0.2em solid;
padding: 1em;
flex: 1;
}
a.next{
margin-left: 1em;
}
a.prev{
margin-right: 1em;
}
</style>
<% end %>
<% if @show_back_and_next_flag==1 %>
<%= content %>
<% end %>
<%= render_view %>
<% if @show_back_and_next_flag==2 %>
<%= content %>
<% end %>