diff --git a/app/assets/javascripts/bulletin_form.js.erb b/app/assets/javascripts/bulletin_form.js.erb
index d20f5081..abb908b4 100644
--- a/app/assets/javascripts/bulletin_form.js.erb
+++ b/app/assets/javascripts/bulletin_form.js.erb
@@ -17,4 +17,12 @@ $('.quick_edit_cancel').live('click', function(){
$('#' + tr).hide();
$("tr#bulletin_file_" + $(this).prev().attr('value')).hide();
$("tr#bulletin_link_" + $(this).prev().attr('value')).hide();
+});
+
+$(document).on('click', '.list-remove', function(){
+ $('#delete_bulletins').submit();
+});
+
+$(document).on('click', '#check_all_bulletins', function(){
+ $('.checkbox_in_list').attr("checked", this.checked);
});
\ No newline at end of file
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 6d2cf9a8..2f37a517 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -102,18 +102,10 @@ module ApplicationHelper
' web-symbol' if params[:sort].eql?(name)
end
- def add_filter(param_name, value)
- filter = params[:filter] rescue nil
- if filter && filter.has_key(param_name)
- filter[param_name] << value
- elsif filter
- filter.merge({param_name => [value]})
- else
- {param_name => [value]}
- end
+ def is_filter_active?(type, id)
+ ' active' if (@filter[type].include?(id.to_s) rescue nil)
end
-
def process_page(page, id)
parse_page_noko(page, id)
end
diff --git a/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/bulletins_controller.rb b/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/bulletins_controller.rb
index 3022afe4..e66c51a4 100644
--- a/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/bulletins_controller.rb
+++ b/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/bulletins_controller.rb
@@ -9,11 +9,28 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
get_categorys(params[:bulletin_category_id])
get_tags
+ @filter = params[:filter]
+ new_filter = params[:new_filter]
+
+ if @filter && params[:clear]
+ @filter.delete(params[:type])
+ elsif @filter && new_filter
+ if @filter.has_key?(new_filter[:type]) && @filter[new_filter[:type]].include?(new_filter[:id].to_s)
+ @filter[new_filter[:type]].delete(new_filter[:id].to_s)
+ elsif @filter.has_key?(new_filter[:type])
+ @filter[new_filter[:type]] << new_filter[:id].to_s
+ else
+ @filter.merge!({new_filter[:type] => [new_filter[:id].to_s]})
+ end
+ elsif new_filter
+ @filter = {new_filter[:type] => [new_filter[:id].to_s]}
+ end
+
# @bulletins = Bulletin.where("bulletin_category_id" => params[:bulletin_category_id]).desc("postdate") if params[:bulletin_category_id]
# @bulletins = Bulletin.search(params[:search], params[:category_id])
# @bulletins = Bulletin.all.order_by([params[:sort], params[:direction]])
- @bulletins = params[:sort] ? get_sorted_bulletins : Bulletin.all.page(params[:page]).per(10)
+ @bulletins = (params[:sort] || @filter) ? get_sorted_and_filtered_bulletins : Bulletin.all.page(params[:page]).per(10)
@bulletin_categories = BulletinCategory.all
@bulletin_link = BulletinLink.new
@@ -24,7 +41,7 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
respond_to do |format|
format.html # index.html.erb
- format.js
+ format.js { }
format.xml { render :xml => @bulletins }
end
end
@@ -273,6 +290,13 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
get_tags
end
+ def delete
+ if params[:to_delete]
+ bulletins = Bulletin.any_in(:_id => params[:to_delete]).delete_all
+ end
+ redirect_to panel_announcement_back_end_bulletins_url(:filter => params[:filter], :direction => params[:direction], :sort => params[:sort])
+ end
+
protected
@@ -290,11 +314,11 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
@tags = Tag.all(:conditions => {:module_app_id => module_app.id}).order_by(I18n.locale, :asc)
end
- def get_sorted_bulletins
+ def get_sorted_and_filtered_bulletins
bulletins = Bulletin.all
case params[:sort]
when 'postdate', 'deadline'
- bulletins.order_by([params[:sort], params[:direction]]).page(params[:page]).per(10)
+ bulletins = bulletins.order_by([params[:sort], params[:direction]])
when 'category'
category_ids = bulletins.distinct(:bulletin_category_id)
categories = BulletinCategory.find(category_ids) rescue nil
@@ -303,19 +327,15 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
categories.each { |category| h[category.i18n_variable[I18n.locale]] = category.id }
sorted = params[:direction].eql?('asc') ? h.sort : h.sort.reverse!
sorted_categorys = sorted.collect {|a| bulletins.where(:bulletin_category_id => a[1]).entries }
- sorted_categorys.flatten!
- Kaminari.paginate_array(sorted_categorys).page(params[:page]).per(10)
- else
- nil
+ bulletins = sorted_categorys.flatten!
end
when 'title'
h = Array.new
bulletins.each { |bulletin| h << [bulletin.title[I18n.locale].downcase, bulletin] }
sorted = params[:direction].eql?('asc') ? h.sort : h.sort.reverse!
- sorted_titles = sorted.collect {|a| a[1] }
- Kaminari.paginate_array(sorted_titles).page(params[:page]).per(10)
+ bulletins = sorted.collect {|a| a[1] }
when 'status'
- bulletins.order_by(:is_top, params[:direction]).order_by(:is_hot, params[:direction]).order_by(:is_hidden, params[:direction]).page(params[:page]).per(10)
+ bulletins = bulletins.order_by(:is_top, params[:direction]).order_by(:is_hot, params[:direction]).order_by(:is_hidden, params[:direction])
when 'update_user_id'
user_ids = bulletins.distinct(:update_user_id)
users = User.find(user_ids) rescue nil
@@ -324,10 +344,7 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
users.each { |user| h << [user.name, user.id] }
sorted = params[:direction].eql?('asc') ? h.sort : h.sort.reverse!
sorted_users = sorted.collect {|a| bulletins.where(:update_user_id => a[1]).entries }
- sorted_users.flatten!
- Kaminari.paginate_array(sorted_users).page(params[:page]).per(10)
- else
- nil
+ bulletins = sorted_users.flatten
end
when 'tags'
a = Array.new
@@ -339,10 +356,37 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
sorted = params[:direction].eql?('asc') ? tmp.sort : tmp.sort.reverse!
sorted_titles = sorted.collect {|a| a[1] }
a = params[:direction].eql?('asc') ? (sorted_titles + a) : (a + sorted_titles)
- a.flatten!
- Kaminari.paginate_array(a).page(params[:page]).per(10)
+ bulletins = a.flatten
end
+ if @filter
+ @filter.each do |key, value|
+ case key
+ when 'status'
+ a = Array.new
+ bulletins.each do |bulletin|
+ value.each do |v|
+ a << bulletin if bulletin[v]
+ end
+ end
+ bulletins = a
+ when 'categories'
+ a = Array.new
+ bulletins.each do |bulletin|
+ a << bulletin if value.include?(bulletin.bulletin_category.id.to_s)
+ end
+ bulletins = a
+ when 'tags'
+ a = Array.new
+ bulletins.each do |bulletin|
+ bulletin.tags.each do |tag|
+ a << bulletin if value.include?(tag.id.to_s)
+ end
+ end
+ bulletins = a
+ end if value.size > 0
+ end
+ end
+ Kaminari.paginate_array(bulletins).page(params[:page]).per(10)
end
-
end
diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_bulletin.html.erb b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_bulletin.html.erb
index 62b28c0c..3abf2fa9 100644
--- a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_bulletin.html.erb
+++ b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_bulletin.html.erb
@@ -1,5 +1,5 @@
-
+ <%= check_box_tag 'to_delete[]', bulletin.id, false, :class => "checkbox_in_list" %>
<% if bulletin.is_top? %>
<%= t(:top) %>
diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_bulletins.html.erb b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_bulletins.html.erb
index 81daae8b..d5975fbc 100644
--- a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_bulletins.html.erb
+++ b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_bulletins.html.erb
@@ -10,6 +10,6 @@
-
+
<%= render :partial => 'bulletin', :collection => @bulletins %>
diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_clear_filters.html.erb b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_clear_filters.html.erb
new file mode 100644
index 00000000..e9c9c481
--- /dev/null
+++ b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_clear_filters.html.erb
@@ -0,0 +1,3 @@
+
+ <%= link_to content_tag(:i, nil, :class => 'icons-brush-large') + t(:clear), panel_announcement_back_end_bulletins_path(:filter => @filter, :sort => params[:sort], :direction => params[:direction], :clear => true, :type => type), :class => "btn js_history" %>
+
\ No newline at end of file
diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_filter.html.erb b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_filter.html.erb
index ae4cf6ed..b052a770 100644
--- a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_filter.html.erb
+++ b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_filter.html.erb
@@ -18,73 +18,16 @@
-
-
+ <%= render 'filter_status' %>
-
- <% @bulletin_categories.each do |category| -%>
- <%= link_to category.i18n_variable[I18n.locale], panel_announcement_back_end_bulletins_path(:filter => add_filter(:categories, category.id)), :class => 'btn' %>
- <% end -%>
-
-
+ <%= render 'filter_categories' %>
-
-
+ <%= render 'filter_tags' %>
-
\ No newline at end of file
diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_filter_categories.html.erb b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_filter_categories.html.erb
new file mode 100644
index 00000000..7ffb08f5
--- /dev/null
+++ b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_filter_categories.html.erb
@@ -0,0 +1,6 @@
+
+ <% @bulletin_categories.each do |category| -%>
+ <%= link_to category.i18n_variable[I18n.locale], panel_announcement_back_end_bulletins_path(:filter => @filter, :new_filter => {:type => 'categories', :id => category.id}, :sort => params[:sort], :direction => params[:direction]), :class => "btn js_history#{is_filter_active?('categories', category.id)}" %>
+ <% end -%>
+
+<%= render :partial => 'clear_filters', :locals => {:type => 'categories'} %>
\ No newline at end of file
diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_filter_status.html.erb b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_filter_status.html.erb
new file mode 100644
index 00000000..15a982c1
--- /dev/null
+++ b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_filter_status.html.erb
@@ -0,0 +1,7 @@
+
+ <%= link_to t(:is_top), panel_announcement_back_end_bulletins_path(:filter => @filter, :new_filter => {:type => 'status', :id => 'is_top'}, :sort => params[:sort], :direction => params[:direction]), :class => "btn js_history#{is_filter_active?('status', 'is_top')}" %>
+ <%= link_to t(:is_hot), panel_announcement_back_end_bulletins_path(:filter => @filter, :new_filter => {:type => 'status', :id => 'is_hot'}, :sort => params[:sort], :direction => params[:direction]), :class => "btn js_history#{is_filter_active?('status', 'is_hot')}" %>
+ <%= link_to t(:is_hidden), panel_announcement_back_end_bulletins_path(:filter => @filter, :new_filter => {:type => 'status', :id => 'is_hidden'}, :sort => params[:sort], :direction => params[:direction]), :class => "btn js_history#{is_filter_active?('status', 'is_hidden')}" %>
+ <%= link_to t(:is_checked), panel_announcement_back_end_bulletins_path(:filter => @filter, :new_filter => {:type => 'status', :id => 'is_checked'}, :sort => params[:sort], :direction => params[:direction]), :class => "btn js_history#{is_filter_active?('status', 'is_checked')}" %>
+
+<%= render :partial => 'clear_filters', :locals => {:type => 'status'} %>
\ No newline at end of file
diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_filter_tags.html.erb b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_filter_tags.html.erb
new file mode 100644
index 00000000..b2f11834
--- /dev/null
+++ b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_filter_tags.html.erb
@@ -0,0 +1,6 @@
+
+ <% @tags.each do |tag| -%>
+ <%= link_to tag[I18n.locale], panel_announcement_back_end_bulletins_path(:filter => @filter, :new_filter => {:type => 'tags', :id => tag.id}, :sort => params[:sort], :direction => params[:direction]), :class => "btn js_history#{is_filter_active?('tags', tag.id)}" %>
+ <% end -%>
+
+<%= render :partial => 'clear_filters', :locals => {:type => 'tags'} %>
\ No newline at end of file
diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_index.html.erb b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_index.html.erb
deleted file mode 100644
index 9013cde5..00000000
--- a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_index.html.erb
+++ /dev/null
@@ -1,20 +0,0 @@
- <%= render 'filter' %>
-
- <%= render 'bulletins' %>
-
-
- <%= paginate @bulletins, :params => {:direction => params[:direction], :sort => params[:sort]} %>
-
-
-
- <%= render :partial => "bulletin_link_qe" %>
-
-
-
-
- <%= link_to content_tag(:i, nil, :class => 'icon-plus icon-white') + t('admin.add'), new_panel_announcement_back_end_bulletin_path, :class => 'btn btn-primary' %>
-
-
-<% content_for :page_specific_javascript do %>
- <%= javascript_include_tag "bulletin_form" %>
-<% end %>
diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_sort_header.html.erb b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_sort_header.html.erb
deleted file mode 100644
index c18be27d..00000000
--- a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_sort_header.html.erb
+++ /dev/null
@@ -1,38 +0,0 @@
-
\ No newline at end of file
diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_sort_headers.html.erb b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_sort_headers.html.erb
new file mode 100644
index 00000000..ee08b45b
--- /dev/null
+++ b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_sort_headers.html.erb
@@ -0,0 +1,31 @@
+
\ No newline at end of file
diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/index.html.erb b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/index.html.erb
index a9f90735..78532f00 100644
--- a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/index.html.erb
+++ b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/index.html.erb
@@ -1 +1,25 @@
-<%= render 'index' %>
\ No newline at end of file
+<%= form_for :bulletins, :url => delete_panel_announcement_back_end_bulletins_path(:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil), :html => {:id => 'delete_bulletins'}, :remote => true do %>
+ <%= render 'filter' %>
+
+ <%= render 'bulletins' %>
+
+<% end %>
+
+
+
+
+
+ <%= render :partial => "bulletin_link_qe" %>
+
+
+
+
+ <%= link_to content_tag(:i, nil, :class => 'icon-plus icon-white') + t('admin.add'), new_panel_announcement_back_end_bulletin_path, :class => 'btn btn-primary' %>
+
+
+<% content_for :page_specific_javascript do %>
+ <%= javascript_include_tag "bulletin_form" %>
+<% end %>
+
diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/index.js.erb b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/index.js.erb
index f9bc6a8b..292e97bd 100644
--- a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/index.js.erb
+++ b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/index.js.erb
@@ -1,2 +1,7 @@
-$("#main-wrap").html("<%= j render 'index' %>");
-mainTablePosition();
\ No newline at end of file
+$("#collapse-status").html("<%= j render 'filter_status' %>");
+$("#collapse-category").html("<%= j render 'filter_categories' %>");
+$("#collapse-tags").html("<%= j render 'filter_tags' %>");
+$("#delete_bulletins").attr("action", "<%= delete_panel_announcement_back_end_bulletins_path(:direction => params[:direction], :sort => params[:sort], :filter => @filter]) %>");
+$("#sort_headers").html("<%= j render 'sort_headers' %>");
+$("#tbody_bulletins").html("<%= j render :partial => 'bulletin', :collection => @bulletins %>");
+$("#bulletin_pagination").html("<%= j paginate @bulletins, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>");
\ No newline at end of file
diff --git a/vendor/built_in_modules/announcement/config/routes.rb b/vendor/built_in_modules/announcement/config/routes.rb
index fc1ef4f0..048926cb 100644
--- a/vendor/built_in_modules/announcement/config/routes.rb
+++ b/vendor/built_in_modules/announcement/config/routes.rb
@@ -6,13 +6,15 @@ Rails.application.routes.draw do
match 'fact_check_setting' => "fact_checks#setting" ,:as => :fact_checks_setting
match 'update_setting' => "fact_checks#update_setting" ,:as => :fact_checks_update_setting
- root :to => "bulletins#index"
resources :bulletins do
match "link_quick_add/:bulletin_id" => "bulletins#link_quick_add" ,:as => :link_quick_add
match "link_quick_edit/:bulletin_id" => "bulletins#link_quick_edit" ,:as => :link_quick_edit
member do
get 'load_quick_edit'
end
+ collection do
+ post 'delete'
+ end
match "file_quick_add/:bulletin_id" => "bulletins#file_quick_add" ,:as => :file_quick_add
match "file_quick_edit/:bulletin_id" => "bulletins#file_quick_edit" ,:as => :file_quick_edit
end