diff --git a/app/models/event_news.rb b/app/models/event_news.rb
index 1eac057..b9c3e33 100644
--- a/app/models/event_news.rb
+++ b/app/models/event_news.rb
@@ -109,6 +109,8 @@ class EventNews
accepts_nested_attributes_for :event_carousel_images, :allow_destroy => true
before_destroy :destroy_email
+ before_save :calculate_is_event_expired
+
scope :open_in_future, ->{where(:is_hidden.ne=>true,:is_preview.ne => true,:postdate.gt=>Time.now).order(postdate: :asc)}
scope :can_display_and_sorted, ->{
is_approved_and_show
@@ -355,6 +357,17 @@ class EventNews
(self.deadline < Time.now) rescue false
end
+ def calculate_is_event_expired
+ setting = EventNewsSetting.first
+ if setting && setting.expired_event_to_bottom && event_end_date.present? && event_end_date >= Time.now
+ self.is_top = true
+ self.top_end_date = event_end_date
+ elsif setting && setting.expired_event_to_bottom && event_end_date.present? && event_end_date < Time.now
+ self.is_top = false
+ self.top_end_date = nil
+ end
+ end
+
def destroy_email
mail = Email.find(self.email_id) rescue nil
mail.destroy if !mail.nil?
diff --git a/app/models/event_news_file.rb b/app/models/event_news_file.rb
index 26a7c36..f6c4f28 100644
--- a/app/models/event_news_file.rb
+++ b/app/models/event_news_file.rb
@@ -10,6 +10,8 @@ class EventNewsFile
field :title, localize: true
field :choose_lang, :type => Array, :default => ["en","zh_tw"]
field :privacy_type, type: String, default: 'public'
+ field :position, type: Integer, default: 0
+ default_scope ->{ order_by(position: :asc) }
belongs_to :event_news
def self.to_fronted(locale=I18n.locale)
self.all.map{|file| file.to_fronted(locale)}.compact rescue []
diff --git a/app/models/event_news_setting.rb b/app/models/event_news_setting.rb
index cf4e854..6e94b13 100644
--- a/app/models/event_news_setting.rb
+++ b/app/models/event_news_setting.rb
@@ -14,6 +14,7 @@ class EventNewsSetting
field :hour_clock_24, type: Boolean, default: true
field :enable_manually_sort, type: Boolean, default: false
field :is_postdate_sort_first, type: Boolean, default: false
+ field :expired_event_to_bottom, type: Boolean, default: false
field :migrate_flag, type: Array, default: []
@@ -128,4 +129,4 @@ class EventNewsSetting
end
end
end
-end
\ No newline at end of file
+end
diff --git a/app/views/admin/event_news/_form.html.erb b/app/views/admin/event_news/_form.html.erb
index dd72530..0d956d0 100644
--- a/app/views/admin/event_news/_form.html.erb
+++ b/app/views/admin/event_news/_form.html.erb
@@ -3,6 +3,24 @@
<%= stylesheet_link_tag "lib/fileupload" %>
<%= stylesheet_link_tag "lib/main-list" %>
<% end %>
+