7 Commits
Author SHA1 Message Date
manson 0b88e53b62 Removed impressionist counter cache 2014-06-17 11:09:27 +08:00
spen b8464ae461 update default_widget field i18n 2014-05-12 11:17:37 +08:00
spen a357ce6669 fix widget reload_web_links 2014-05-08 14:12:32 +08:00
spen be8d8ff1e6 add backend form append note and fix show image 2014-05-02 16:12:25 +08:00
rulingcom f31481af18 fix search result page 2014-04-10 11:01:02 +08:00
Manson Wang 829fc54a1d Remove elasticsearch 2014-04-10 11:00:51 +08:00
spen 6ae35f3b94 Add Approval 2014-03-20 15:02:05 +08:00
10 changed files with 144 additions and 71 deletions

No files matched your search

@@ -1,3 +1,4 @@
# encoding: utf-8
class Panel::Announcement::BackEnd::ApprovalsController < OrbitBackendController class Panel::Announcement::BackEnd::ApprovalsController < OrbitBackendController
before_filter :authenticate_user! before_filter :authenticate_user!
before_filter :is_admin? before_filter :is_admin?
@@ -15,6 +16,14 @@ class Panel::Announcement::BackEnd::ApprovalsController < OrbitBackendControlle
@bulletin.proc_check(params[:bulletin][:is_checked],params[:bulletin][:not_checked_reason]) @bulletin.proc_check(params[:bulletin][:is_checked],params[:bulletin][:not_checked_reason])
@bulletin.de_pending @bulletin.de_pending
if @bulletin.save if @bulletin.save
if @bulletin.email_sent == true && @bulletin.is_checked == true && !@bulletin.is_rejected
send_email_data(@bulletin)
@bulletin.email_sent = false
@bulletin.save
end
notice = t('announcement.approve_bulletin_success') notice = t('announcement.approve_bulletin_success')
else else
notice = t('announcement.approve_bulletin_fail') notice = t('announcement.approve_bulletin_fail')
@@ -62,4 +71,43 @@ class Panel::Announcement::BackEnd::ApprovalsController < OrbitBackendControlle
object_auth object_auth
end end
def send_email_data(bulletin)
@site = Site.first
@user = User.find(bulletin.create_user_id)
@host = request.host_with_port
@group_mail = MailCron.get_send_group_mail( bulletin.email_user_ids , bulletin.other_mailaddress )
if !@group_mail.join.blank?
@mail_content = {
"host" => @host,
"lang" => I18n.locale,
"site_title" => @site.title,
"title" => bulletin.title,
"template" => 'announcement_mailer/cron_mail',
"url" => "http://#{@host}#{panel_announcement_front_end_bulletin_path(bulletin, :category_id => bulletin.category.id)}"
}
@mail_cron = {
:mail_from_app => 'announcement',
# :mail_from => @user.email,
# :mail_reply_to => @user.email,
:mail_subject => "#{t("announcement.mail_subject",:site_title => @site.title)}:#{bulletin.title}",
:mail_to => @group_mail.join(','),
:mail_content => @mail_content ,
:mail_sentdate => bulletin.email_sentdate,
:create_user_id => bulletin.create_user_id,
:update_user_id => bulletin.create_user_id
}
@mail_cron = MailCron.new(@mail_cron)
@mail_cron.save
end
end
end end
@@ -94,23 +94,23 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
@bulletin.create_user_id = current_user.id @bulletin.create_user_id = current_user.id
@bulletin.update_user_id = current_user.id @bulletin.update_user_id = current_user.id
# if(is_manager? || is_admin?)
# @bulletin.is_checked = true if(is_manager? || is_admin?)
# @bulletin.is_rejected = false @bulletin.is_checked = true
# @bulletin.de_pending @bulletin.is_rejected = false
# end @bulletin.de_pending
end
respond_to do |format| respond_to do |format|
if @bulletin.save if @bulletin.save
if @bulletin.email_sent == true && (is_manager? || is_admin?) if @bulletin.email_sent == true && @bulletin.is_checked == true && !@bulletin.is_rejected
send_email_data(@bulletin) send_email_data(@bulletin)
@bulletin.email_sent = false @bulletin.email_sent = false
@bulletin.save @bulletin.save
end end
format.html { redirect_to(panel_announcement_back_end_bulletins_url, :notice => t('announcement.create_bulletin_success')) } format.html { redirect_to(panel_announcement_back_end_bulletins_url, :notice => t('announcement.create_bulletin_success')) }
format.xml { render :xml => @bulletin, :status => :created, :location => @bulletin } format.xml { render :xml => @bulletin, :status => :created, :location => @bulletin }
# format.js # format.js
@@ -135,38 +135,44 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
# PUT /bulletins/1.xml # PUT /bulletins/1.xml
def update def update
@bulletin = Bulletin.find(params[:id]) @bulletin = Bulletin.find(params[:id])
params[:bulletin][:tag_ids] = (params[:bulletin][:tag_ids] ? params[:bulletin][:tag_ids] : []) params[:bulletin][:tag_ids] = (params[:bulletin][:tag_ids] ? params[:bulletin][:tag_ids] : [])
params[:bulletin][:email_user_ids] = params[:bulletin][:email_user_ids].uniq params[:bulletin][:email_user_ids] = params[:bulletin][:email_user_ids].uniq
params[:bulletin][:email_user_ids].delete('') params[:bulletin][:email_user_ids].delete('')
params[:bulletin][:update_user_id] = current_user.id params[:bulletin][:update_user_id] = current_user.id
delete_out_invalid_date_from_params delete_out_invalid_date_from_params
respond_to do |format| respond_to do |format|
if @bulletin.update_attributes(params[:bulletin]) if @bulletin.update_attributes(params[:bulletin])
if @bulletin.email_sent == true && (is_manager? || is_admin?) if(is_manager? || is_admin?)
send_email_data(@bulletin) @bulletin.is_checked = true
@bulletin.is_rejected = false
@bulletin.email_sent = false @bulletin.de_pending!
@bulletin.save
end
format.html { redirect_to(panel_announcement_back_end_bulletins_url, :notice => t('bulletin.update_bulletin_success')) }
format.js { render 'toggle_enable' }
format.xml { head :ok }
else
@tags = get_tags
format.html { render :action => "edit" }
format.xml { render :xml => @bulletin.errors, :status => :unprocessable_entity }
end end
end
if @bulletin.email_sent == true && @bulletin.is_checked == true && !@bulletin.is_rejected
send_email_data(@bulletin)
@bulletin.email_sent = false
@bulletin.save
end
format.html { redirect_to(panel_announcement_back_end_bulletins_url, :notice => t('bulletin.update_bulletin_success')) }
format.js { render 'toggle_enable' }
format.xml { head :ok }
else
@tags = get_tags
format.html { render :action => "edit" }
format.xml { render :xml => @bulletin.errors, :status => :unprocessable_entity }
end
end end
end
# DELETE /bulletins/1 # DELETE /bulletins/1
# DELETE /bulletins/1.xml # DELETE /bulletins/1.xml
def destroy def destroy
+41 -2
View File
@@ -22,13 +22,19 @@ class Bulletin
field :subtitle, localize: true field :subtitle, localize: true
field :text, localize: true field :text, localize: true
field :image_description, localize: true
field :create_user_id field :create_user_id
field :update_user_id, :class_name => "User" field :update_user_id, :class_name => "User"
field :is_top, :type => Boolean, :default => false
field :is_hot, :type => Boolean, :default => false
field :is_hidden, :type => Boolean, :default => false
field :is_checked, :type => Boolean, :default => false
field :is_pending, :type => Boolean, :default => true
field :is_rejected, :type => Boolean, :default => false
field :view_count, :type => Integer, :default => 0 field :view_count, :type => Integer, :default => 0
field :not_checked_reason
field :public, :type => Boolean, :default => true field :public, :type => Boolean, :default => true
field :email_sent, :type => Boolean, :default => false field :email_sent, :type => Boolean, :default => false
@@ -36,6 +42,9 @@ class Bulletin
field :email_user_ids field :email_user_ids
field :other_mailaddress field :other_mailaddress
scope :can_display, where(is_checked: true, is_rejected: false, is_pending: false)
scope :available_for_lang, ->(locale){ where("available_for_#{locale}".to_sym => true) }
mount_uploader :image, ImageUploader mount_uploader :image, ImageUploader
has_many :bulletin_links, :autosave => true, :dependent => :destroy has_many :bulletin_links, :autosave => true, :dependent => :destroy
@@ -116,6 +125,36 @@ class Bulletin
end end
def proc_check(check,not_pass_info = "")
self.is_checked = true
if check =="true"
self.is_rejected = false
elsif check == "false"
self.is_rejected = true
self.not_checked_reason = not_pass_info
end
end
def de_pending
self.is_pending = false
end
def de_pending!
de_pending
self.save!
end
def is_checked?
!self.is_pending && self.is_checked && (self.is_rejected == false)
end
def is_pending?
self.is_pending
end
def is_rejected?
!self.is_pending && self.is_rejected && (self.is_rejected == true)
end
def save_bulletin_links def save_bulletin_links
self.bulletin_links.each do |t| self.bulletin_links.each do |t|
@@ -5,8 +5,18 @@
<a class="close" data-dismiss="modal">×</a> <a class="close" data-dismiss="modal">×</a>
<h3><%= t(:preview) %></h3> <h3><%= t(:preview) %></h3>
</div> </div>
<div class="modal-body"> <div class="modal-body clearfix">
<div class="modal-left">
<%= label_tag t('announcement.email_to') %>
<% if @bulletin.email_sent == true and ( !@bulletin.email_user_ids.blank? || !@bulletin.other_mailaddress.blank? ) %>
<%= MailCron.get_send_group_mail(@bulletin.email_user_ids , @bulletin.other_mailaddress).join("<br />").html_safe %>
<% end %>
</div>
<div class="modal-right">
<iframe src=<%= panel_announcement_front_end_bulletin_path(bulletin, :category_id => bulletin.category.id ,:preview=>true) %>></iframe> <iframe src=<%= panel_announcement_front_end_bulletin_path(bulletin, :category_id => bulletin.category.id ,:preview=>true) %>></iframe>
</div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
@@ -139,32 +139,7 @@
</label> </label>
</div> </div>
</div> </div>
<div class="image_note"><%= t("announcement.image_note")%></div>
</div>
</div>
<!-- Image Description -->
<div class="control-group">
<%= f.label t("announcement.image_description"),{:class=>"control-label muted", :func=>"field_label"} %>
<div class="controls add-input">
<div class="add-target">
<div class="input-append">
<div class="tab-content">
<% @site_in_use_locales.each_with_index do |locale, i| %>
<div class="tab-pane fade <%= ( i == 0 ) ? "active in" : '' %>" id="image_description_<%= locale %>">
<%= f.fields_for :image_description_translations do |f| %>
<%= f.text_field locale, :value => (@bulletin.image_description_translations[locale] rescue nil), :placeholder=>"#{t("announcement.image_description")}" %>
<% end %>
</div>
<% end %>
</div>
<div class="btn-group" data-toggle="buttons-radio">
<% @site_in_use_locales.each_with_index do |locale, i| %>
<a class="btn <%= ( i == 0 ) ? "active" : '' %>" href="#image_description_<%= locale %>" data-toggle="tab"><%= I18nVariable.from_locale(locale) %></a>
<% end %>
</div>
</div>
</div>
</div> </div>
</div> </div>
@@ -6,9 +6,9 @@
quick_edit_link type: 'delete', quick_edit_link type: 'delete',
link: 'panel_announcement_back_end_bulletin_path' link: 'panel_announcement_back_end_bulletin_path'
# can have: title, warning, cancel and submit values # can have: title, warning, cancel and submit values
# quick_edit_link type: 'approval', quick_edit_link type: 'approval',
# link: 'panel_announcement_back_end_bulletin_approval_preview_path' link: 'panel_announcement_back_end_bulletin_approval_preview_path'
# quick_edit_link type: 'reject_reason' quick_edit_link type: 'reject_reason'
field type: 'status', field type: 'status',
db_field: @statuses, db_field: @statuses,
translation: 'status', translation: 'status',
@@ -8,11 +8,6 @@
<span><%= link_to unit,panel_announcement_front_end_index_bulletins_by_unit_path(:name=>unit) unless unit.blank? %></span> <span><%= link_to unit,panel_announcement_front_end_index_bulletins_by_unit_path(:name=>unit) unless unit.blank? %></span>
</div> </div>
</div> </div>
<div class="news_image">
<%#= image_tag(@bulletin.image.url, :size => "320x240") if @bulletin.image.file %>
<%= link_to image_tag(@bulletin.image.url), @bulletin.image.url, {:target => '_blank', :title => @bulletin.image_identifier} if @bulletin.image.file %>
<span class="image_description"><%= @bulletin.image_description unless @bulletin.image_description.blank? %></span>
</div>
<div class="news_paragraph"> <div class="news_paragraph">
<%= @bulletin.text.html_safe rescue '' %> <%= @bulletin.text.html_safe rescue '' %>
</div> </div>
+1 -1
View File
@@ -27,7 +27,7 @@ en:
bulletins: Announcement front-end bulletins: Announcement front-end
search_result: Search result search_result: Search result
image: Cover image image: Cover image
image_description: Cover Image Description image_note: The image will not show in content
link_name: Link Name link_name: Link Name
new_bulletin_category: New Bulletin Category new_bulletin_category: New Bulletin Category
picture: Cover Picture picture: Cover Picture
+1 -1
View File
@@ -29,7 +29,7 @@ zh_tw:
bulletins: 公告前台 bulletins: 公告前台
search_result: 搜尋結果頁 search_result: 搜尋結果頁
image: 封面圖片 image: 封面圖片
image_description: 封面圖片說明 image_note: 此處上傳的圖片不會在公告內文出現
link_name: 連結名稱 link_name: 連結名稱
new_bulletin_category: 新增公告類別 new_bulletin_category: 新增公告類別
picture: 刊頭圖片 picture: 刊頭圖片
+2 -2
View File
@@ -28,13 +28,13 @@ module Announcement
data_count 1..10 data_count 1..10
authorizable authorizable
# approvable approvable
categorizable categorizable
taggable taggable
widgets do widgets do
default_widget do default_widget do
query 'Bulletin' query 'Bulletin.can_display.available_for_lang(I18n.locale).any_of( {deadline: nil,:postdate.lte => Time.now} , {:deadline.gte => Time.now,:postdate.lte => Time.now} )'
enable ["typeA", "typeB_style3", "typeC"] enable ["typeA", "typeB_style3", "typeC"]
image :image image :image
field :postdate field :postdate