diff --git a/app/assets/images/bulletin/AAAAAA.png b/app/assets/images/bulletin/AAAAAA.png new file mode 100644 index 0000000..772a39b Binary files /dev/null and b/app/assets/images/bulletin/AAAAAA.png differ diff --git a/app/controllers/admin/announcements_controller.rb b/app/controllers/admin/announcements_controller.rb index 9ebd14b..873eac0 100644 --- a/app/controllers/admin/announcements_controller.rb +++ b/app/controllers/admin/announcements_controller.rb @@ -32,6 +32,41 @@ class Admin::AnnouncementsController < OrbitAdminController @tags = @module_app.tags @table_fields = [:status, :category, :title, :start_date, :end_date, "announcement.comment", :last_modified] @current_user = current_user + if AnnouncementSetting.first.is_display_edit_only && !current_user.is_admin? && !current_user.is_manager?(@module_app) + current_user_is_sub_manager = !current_user.is_manager?(@module_app) && (current_user.is_sub_manager?(@module_app) || current_user.is_sub_manager_with_role?(@module_app)) rescue false + if current_user_is_sub_manager + @categories = current_user.approved_categories.select{|c| c.module_app_id == @module_app.id} rescue [] + @filter_fields = filter_fields(@categories, @tags) + @bulletins = Bulletin.where(:create_user_id=>current_user.id,:is_preview.in=>[false,nil]) + .order_by(sort) + .with_categories(filters("category")) + .with_tags(filters("tag")) + .with_status(filters("status")) + else + @bulletins = Bulletin.where(:uid=>nil) + @categories = @module_app.categories.enabled + @filter_fields = filter_fields(@categories, @tags) + end + else + @categories = @module_app.categories.enabled + @filter_fields = filter_fields(@categories, @tags) + @bulletins = Bulletin.where(:is_preview.in=>[false,nil]) + .order_by(sort) + .with_categories(filters("category")) + .with_tags(filters("tag")) + .with_status(filters("status")) + end + @bulletins = search_data(@bulletins,[:title]).page(params[:page]).per(10) + + if request.xhr? + render :partial => "index" + end + end + def get_all_anncs_without_subannc + Bulletin.remove_expired_status + @tags = @module_app.tags + @table_fields = [:category, :title, :start_date] + @current_user = current_user if AnnouncementSetting.first.is_display_edit_only && !current_user.is_admin? && !current_user.is_manager?(@module_app) current_user_is_sub_manager = !current_user.is_manager?(@module_app) && (current_user.is_sub_manager?(@module_app) || current_user.is_sub_manager_with_role?(@module_app)) rescue false if current_user_is_sub_manager @@ -56,13 +91,14 @@ class Admin::AnnouncementsController < OrbitAdminController .with_tags(filters("tag")) .with_status(filters("status")) end + @bulletins = @bulletins.where(:id.nin=>params[:subannc_ids]) if params[:subannc_ids] @bulletins = search_data(@bulletins,[:title]).page(params[:page]).per(10) - if request.xhr? - render :partial => "index" + render :partial => "get_all_anncs_without_subannc" + else + render :layout => false end end - def feed @table_feed_fields = ["announcement.feed_name",:tags , :category , "announcement.rssfeed", "announcement.jsonfeed"] @feeds = BulletinFeed.all.asc(:created_at) diff --git a/app/controllers/announcements_controller.rb b/app/controllers/announcements_controller.rb index 95e6cca..8d8b76e 100644 --- a/app/controllers/announcements_controller.rb +++ b/app/controllers/announcements_controller.rb @@ -608,11 +608,49 @@ class AnnouncementsController < ApplicationController pause_btn_title = (I18n.locale.to_s =="zh_tw") ? "暫停播放" : "pause" prev_btn_title = (I18n.locale.to_s =="zh_tw") ? "上一張" : "prev" next_btn_title = (I18n.locale.to_s =="zh_tw") ? "下一張" : "next" + sub_anncs_text = "" + sub_annc_list = announcement.sub_annc_list + if announcement.enable_sub_annc && sub_annc_list.count != 0 + params = OrbitHelper.params + page = OrbitHelper.page rescue Page.where(:url=>params[:url]).first + page_url = page.get_url rescue page.url + sub_anncs = announcement.get_sub_annc_list + display_sub_annc_date = announcement.display_sub_annc_date + sub_anncs_text = "" + sub_anncs_text += "
+ + + #{display_sub_annc_date ? "" : ''} + + " + sub_anncs.each do |sub_annc| + sub_anncs_text += "#{(display_sub_annc_date ? ('') : '')}" + end + sub_anncs_text += "
#{announcement.get_sub_annc_title_trans}#{I18n.t("announcement.table.date")}
#{sub_annc.title}
" + sub_anncs_text += '' + end + carousel_data = { + "bulletin_carousel_images" => bulletin_carousel_images, + "resume_btn_title" => resume_btn_title, + "pause_btn_title" => pause_btn_title, + "prev_btn_title" => prev_btn_title, + "next_btn_title" => next_btn_title, + "carousel_display_style" => (bulletin_carousel_images.count == 0 ? 'display: none' : "width: #{announcement.carousel_image_width};margin: auto;"), + "carousel_count" => bulletin_carousel_images.count} + carousel_html = "" + if carousel_data["carousel_count"] != 0 + carousel_image_type = announcement.carousel_image_type + ac = ActionController::Base.new() + carousel_html = ac.render_to_string(:partial=>'announcements/bulletin_carousels',:locals=>{:data=>carousel_data,:carousel_image_type=>carousel_image_type}) + end { "tags" => tags, "bulletin_files" => files, "bulletin_links" => links, - "bulletin_carousel_images" => bulletin_carousel_images, "data" => { "title" => announcement.title, "subtitle_ann" => subtitle_ann, @@ -624,12 +662,8 @@ class AnnouncementsController < ApplicationController "img_description" => img_description, "hide_class" => announcement.display_img? ? announcement.image_display_class : ' hide', "alt_title" => desc, - "resume_btn_title" => resume_btn_title, - "pause_btn_title" => pause_btn_title, - "prev_btn_title" => prev_btn_title, - "next_btn_title" => next_btn_title, - "carousel_display_style" => (bulletin_carousel_images.count == 0 ? 'display: none' : "width: #{announcement.carousel_image_width};margin: auto;"), - "carousel_count" => bulletin_carousel_images.count + "carousel_html" => carousel_html, + "sub_anncs_text" => sub_anncs_text }, "comments" => announcement.comments, "show_comment_flag" => show_comment_flag, @@ -691,12 +725,23 @@ class AnnouncementsController < ApplicationController pause_btn_title = (I18n.locale.to_s =="zh_tw") ? "暫停播放" : "pause" prev_btn_title = (I18n.locale.to_s =="zh_tw") ? "上一張" : "prev" next_btn_title = (I18n.locale.to_s =="zh_tw") ? "下一張" : "next" - + carousel_data = { + "bulletin_carousel_images" => bulletin_carousel_images, + "resume_btn_title" => resume_btn_title, + "pause_btn_title" => pause_btn_title, + "prev_btn_title" => prev_btn_title, + "next_btn_title" => next_btn_title, + "carousel_display_style" => (bulletin_carousel_images.count == 0 ? 'display: none' : "width: #{AnnouncementSetting.last.carousel_image_width};margin: auto;"), + "carousel_count" => bulletin_carousel_images.count} + carousel_html = "" + if carousel_data["carousel_count"] != 0 + carousel_image_type = announcement["carousel_image_type"].to_i + carousel_html = render(:partial=>'bulletin_carousels',:locals=>{:data=>carousel_data,:carousel_image_type=>carousel_image_type}) + end { "tags" => tags, "bulletin_files" => files, "bulletin_links" => links, - "bulletin_carousel_images" => bulletin_carousel_images, "data" => { "title" => announcement["title_translations"][locale], "subtitle_ann" => subtitle_ann, @@ -708,12 +753,8 @@ class AnnouncementsController < ApplicationController "img_description" => img_description, "hide_class" => announcement["display_img"] ? '' : ' hide', "alt_title" => desc, - "resume_btn_title" => resume_btn_title, - "pause_btn_title" => pause_btn_title, - "prev_btn_title" => prev_btn_title, - "next_btn_title" => next_btn_title, - "carousel_display_style" => (bulletin_carousel_images.count == 0 ? 'display: none' : "width: #{AnnouncementSetting.last.carousel_image_width};margin: auto;"), - "carousel_count" => bulletin_carousel_images.count + "carousel_html" => carousel_html, + "sub_anncs_text" => "" }, "comments" => [], "show_comment_flag" => false, diff --git a/app/models/announcement_setting.rb b/app/models/announcement_setting.rb index 3f19b45..f2d4bd3 100644 --- a/app/models/announcement_setting.rb +++ b/app/models/announcement_setting.rb @@ -1,6 +1,8 @@ class AnnouncementSetting include Mongoid::Document include Mongoid::Timestamps + field :carousel_image_type, :type => Integer, :default => 0 # 0: carousel, 1: album + field :sub_annc_title_trans, :type => String, :default => "", :localize => true field :carousel_image_width, type: String, :default => "75%" field :top_limit, type: Integer, :default => 0 field :pro_enabled, type: Boolean, :default => false @@ -8,9 +10,9 @@ class AnnouncementSetting field :email_to, type: Array, :default => ["admins","managers","approvers"] field :is_display_edit_only, type: Boolean, :default => false field :only_manager_can_edit_status, type: Boolean, :default => false - field :top_text , type: String , localize: true - field :hot_text , type: String , localize: true - field :hidden_text , type: String , localize: true + field :top_text , type: String , localize: true + field :hot_text , type: String , localize: true + field :hidden_text , type: String , localize: true has_many :anns_status_settings, :autosave => true, :dependent => :destroy accepts_nested_attributes_for :anns_status_settings, :allow_destroy => true def self.check_limit_for_user(user_id, b_id = nil) @@ -23,4 +25,10 @@ class AnnouncementSetting def self.is_pro? self.first.pro_enabled rescue false end + + def get_sub_annc_title_trans(locale=I18n.locale) + I18n.with_locale(locale) do + self.sub_annc_title_trans.blank? ? I18n.t("announcement.table.title") : self.sub_annc_title_trans + end + end end \ No newline at end of file diff --git a/app/models/bulletin.rb b/app/models/bulletin.rb index 015c0c4..b056bd5 100644 --- a/app/models/bulletin.rb +++ b/app/models/bulletin.rb @@ -28,6 +28,7 @@ class Bulletin end field :is_edit, type: Boolean, default: false #use to check whether the preview record changed field :copy_id + field :custom_carousel_image_type, :type => Integer, :default => 0 # 0: default, 1: carousel, 2: album field :custom_carousel_image_width, type: String, default: "" field :image_display_class, type: String, default: "full-size-img" #3 choices: full-size-img , pull-left , pull-right field :add_to_calendar,type: Boolean,default: false @@ -69,6 +70,8 @@ class Bulletin field :comment_role, :type => Array, :default => [] field :enable_sub_annc, :type => Boolean, :default => false field :sub_annc_list, :type => Array, :default => [] + field :custom_sub_annc_title_trans, :type => String, :default => "", :localize => true + field :display_sub_annc_date, :type => Boolean, :default => false mount_uploader :image, ImageUploader has_many :bulletin_links, :autosave => true, :dependent => :destroy @@ -239,8 +242,11 @@ class Bulletin def hidden_text I18n.t("announcement.status.hidden") end + def carousel_image_type + (self.custom_carousel_image_type == 0 ? AnnouncementSetting.last.carousel_image_type : self.custom_carousel_image_type - 1) rescue 0 + end def carousel_image_width - (self.custom_carousel_image_width.blank? ? AnnouncementSetting.last.carousel_image_width : self.custom_carousel_image_width) + (self.custom_carousel_image_width.blank? ? AnnouncementSetting.last.carousel_image_width : self.custom_carousel_image_width) rescue "75%" end def self.agenda_events(agenda_start, agenda_end,read_more_url) events = self.monthly_event(agenda_start, agenda_end).convert_front(read_more_url) @@ -260,4 +266,16 @@ class Bulletin :end => re.deadline} end end + def get_sub_annc_title_trans(locale=I18n.locale) + I18n.with_locale(locale) do + self.custom_sub_annc_title_trans.blank? ? (AnnouncementSetting.first.get_sub_annc_title_trans(locale) rescue I18n.t("announcement.table.title")) : self.custom_sub_annc_title_trans + end + end + def get_sub_annc_list + sub_anncs = self.class.where(:id.in=>self.sub_annc_list).to_a + sub_anncs = sub_anncs.sort_by{|a| sub_annc_list.index(a.id.to_s)} + end + def display_postdate + self.postdate.present? ? self.postdate.strftime("%Y/%m/%d") : "" + end end diff --git a/app/views/admin/announcements/_form.html.erb b/app/views/admin/announcements/_form.html.erb index 3993f23..eb4efab 100644 --- a/app/views/admin/announcements/_form.html.erb +++ b/app/views/admin/announcements/_form.html.erb @@ -3,6 +3,28 @@ <%= stylesheet_link_tag "lib/fileupload" %> <%= stylesheet_link_tag "lib/main-list" %> <% end %> + <% content_for :page_specific_javascript do %> <%= javascript_include_tag "lib/bootstrap-fileupload" %> @@ -53,6 +82,7 @@
  • <%= t(:tags) %>
  • <%= t('announcement.image') %>
  • <%= t('announcement.carousel_image') %>
  • +
  • <%= t('announcement.relation_announcements_list') %>
  • <%= t('announcement.email_reminder')%>
  • @@ -271,7 +301,7 @@ <% if @bulletin.image.file %> <%= image_tag @bulletin.image %> <% else %> - + <% end %>
    @@ -303,6 +333,13 @@ - + + +