diff --git a/app/views/layouts/_side_bar.html.erb b/app/views/layouts/_side_bar.html.erb
index 26925aee..c0507e67 100644
--- a/app/views/layouts/_side_bar.html.erb
+++ b/app/views/layouts/_side_bar.html.erb
@@ -75,3 +75,8 @@
 		<%#= content_tag :li, link_to(t('admin.tags'), admin_asset_tags_path), :class => active_for_action('/admin/asset_tags', 'index') %>
 	<%# end -%>
 <%# end -%>
+
+	<% flash.each do |key, msg| %>
+ 		<%= content_tag :span, msg, :class => [key, "notice label label-warning"] %>
+  	<% end%>
+
\ No newline at end of file
diff --git a/lib/orbit_core_lib.rb b/lib/orbit_core_lib.rb
index f3cd2cd5..8e333b7e 100644
--- a/lib/orbit_core_lib.rb
+++ b/lib/orbit_core_lib.rb
@@ -14,7 +14,7 @@ module  OrbitCoreLib
         query1 = auth_object_space.any_in({sub_role_ids: sub_role_ids_ary}).excludes(blocked_user_ids: user.id)
         query2 = auth_object_space.any_of({all: true},{privilege_user_ids: user.id},{role_ids: user.role.id}).excludes(blocked_user_ids: user.id)
         result = (query1 + query2).uniq
-        result.collect{|t| t.obj_authable}
+        result.collect{|t| t.obj_authable}.delete_if{|val| val==nil}
       end
         
     end
diff --git a/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/bulletin_categorys_controller.rb b/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/bulletin_categorys_controller.rb
index b1ce1718..9ba78b90 100644
--- a/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/bulletin_categorys_controller.rb
+++ b/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/bulletin_categorys_controller.rb
@@ -107,13 +107,20 @@ class Panel::Announcement::BackEnd::BulletinCategorysController < OrbitBackendCo
   # DELETE /bulletins/1
   # DELETE /bulletins/1.xml
   def destroy
-    @bulletin_category = BulletinCategory.find(params[:id])
-    @bulletin_category.destroy
+    @bulletin_category = BulletinCategory.find(params[:id]).first
+    @bulletin_category.disable = @bulletin_category.disable ? false : true
 
-    respond_to do |format|
-      format.html { redirect_to(panel_announcement_back_end_bulletin_categorys_url) }
-      # format.xml  { head :ok }
-      format.js
+    if @bulletin_category.save! 
+      respond_to do |format|
+        flash[:notice] = t("bulletin_category.update_success")
+        # flash[:error] +=  @bulletin_category.disable ?  t("bulletin_category.disable_change_to_true") : t("bulletin_category.disable_change_to_false")
+        format.html { redirect_to(panel_announcement_back_end_bulletin_categorys_url) }
+        # format.xml  { head :ok }
+        format.js 
+      end
+    else
+      flash[:error] = t("bulletin_category.update_failed")
+      format.html { render :action => "index" }
     end
   end
 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 f47b41bb..1b6b4336 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
@@ -3,6 +3,7 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
   layout 'new_admin'
   
   before_filter :authenticate_user!
+  before_filter :get_categorys ,:only => [ :new,:edit,:update]
 #  before_filter :for_admin_only,:only => [:]
 #  before_filter :for_app_manager,:only => [:index,:show,] 
   before_filter :for_app_sub_manager,:except => [:index,:show,:get_sorted_and_filtered_bulletins]
@@ -83,15 +84,10 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
 	# @bulletin.bulletin_files.build
 	# @bulletin.bulletin_files.new
 
-	if get_categorys.empty?
-	  flash[:alert] = t("announcement.error.no_avilb_cate_for_posting")
-    redirect_to :action => :index
-  else
 	  get_tags
       respond_to do |format|
         format.html # new.html.erb
         format.xml  { render :xml => @bulletin }
-      end
   	end
   end
 
@@ -105,7 +101,6 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
   	
     	@link_url = panel_announcement_back_end_bulletin_path(@bulletin)
     	
-    	get_categorys
     	get_tags
     end
   end
@@ -268,7 +263,7 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
   			format.xml  { head :ok }
   		  else
           get_tags
-          get_categorys
+          
   			format.html { render :action => "edit" }
   			format.xml  { render :xml => @bulletin.errors, :status => :unprocessable_entity }
   		  end
@@ -333,9 +328,13 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
     @bulletin_categorys = []
     #@unit_list_for_anc = UnitListForAnc.all
     if(is_manager? || is_admin?)
-      @bulletin_categorys = (id ? BulletinCategory.find(id).to_a : BulletinCategory.excludes('disabled' => true))
+      @bulletin_categorys = (id ? BulletinCategory.available.find(id).to_a : BulletinCategory.available)
     elsif is_sub_manager?
-      @bulletin_categorys = BulletinCategory.authed_for_user(current_user,'submit')
+      @bulletin_categorys = BulletinCategory.available.authed_for_user(current_user,'submit') 
+    end
+    if @bulletin_categorys.empty? && params[:action] != "index"
+        flash[:alert] = t("announcement.error.no_avilb_cate_for_posting")
+        redirect_to :action => :index
     end
   end
   
diff --git a/vendor/built_in_modules/announcement/app/helpers/panel/announcement/back_end/bulletin_categorys_helper.rb b/vendor/built_in_modules/announcement/app/helpers/panel/announcement/back_end/bulletin_categorys_helper.rb
index 92604985..ea413b54 100644
--- a/vendor/built_in_modules/announcement/app/helpers/panel/announcement/back_end/bulletin_categorys_helper.rb
+++ b/vendor/built_in_modules/announcement/app/helpers/panel/announcement/back_end/bulletin_categorys_helper.rb
@@ -13,4 +13,8 @@ include ActionView::Helpers::UrlHelper
      link_to t('announcement.bulletin.cate_auth'),admin_object_auth_ob_auth_path(oa)
   end
 
+  def show_toggle_archive_btn(bulletin_category)
+    bulletin_category.disable ?  t("bulletin_category.disable_change_to_true") : t("bulletin_category.disable_change_to_false") 
+  end
+
 end
\ No newline at end of file
diff --git a/vendor/built_in_modules/announcement/app/models/bulletin_category.rb b/vendor/built_in_modules/announcement/app/models/bulletin_category.rb
index feb39edb..a5686cc1 100644
--- a/vendor/built_in_modules/announcement/app/models/bulletin_category.rb
+++ b/vendor/built_in_modules/announcement/app/models/bulletin_category.rb
@@ -14,11 +14,22 @@ class BulletinCategory
 
   field :key
   field :display
-  
+  field :disable,type: Boolean,:default => false
+
   has_one :i18n_variable, :as => :language_value, :autosave => true, :dependent => :destroy
   
-  has_many :bulletins,:dependent => :destroy
+  has_many :bulletins
   
+  scope :available,where(disable: false)
+
+    def self.find(*args)
+      if args ==[:all]
+          unscoped
+        else
+          unscoped.find(args) 
+      end
+    end
+
   def pp_object
     i18n_variable[I18n.locale]
   end
diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletin_categorys/_bulletin_category.html.erb b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletin_categorys/_bulletin_category.html.erb
index 6b98e466..58a9a5f9 100644
--- a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletin_categorys/_bulletin_category.html.erb
+++ b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletin_categorys/_bulletin_category.html.erb
@@ -6,7 +6,7 @@
 				
 					<% if is_admin?%>
 						- <%= link_to t('bulletin_category.edit'), edit_panel_announcement_back_end_bulletin_category_path(bulletin_category), :remote => true %>
 
-						- <%= link_to t('bulletin_category.delete'), panel_announcement_back_end_bulletin_category_path(bulletin_category), :confirm => t('announcement.sure?'), :method => :delete, :remote => true %>
 
+						- <%= link_to show_toggle_archive_btn(bulletin_category) , panel_announcement_back_end_bulletin_category_path(bulletin_category), :confirm => t('announcement.sure?'), :method => :delete, :remote => true,:class=> "archive_toggle" %>
 
 					<% end %>
 					<%if is_manager? || is_admin? %>
 						- <%= show_anc_cate_permission_link(bulletin_category) %>
 
diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletin_categorys/destroy.js.erb b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletin_categorys/destroy.js.erb
index 882b13d2..e7f79190 100644
--- a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletin_categorys/destroy.js.erb
+++ b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletin_categorys/destroy.js.erb
@@ -1 +1 @@
-$("#<%= dom_id @bulletin_category %>").remove();
\ No newline at end of file
+$("#<%= dom_id @bulletin_category %>").find(".archive_toggle").text("<%= show_toggle_archive_btn(@bulletin_category) %>  ");
\ No newline at end of file
diff --git a/vendor/built_in_modules/announcement/config/locales/zh_tw.yml b/vendor/built_in_modules/announcement/config/locales/zh_tw.yml
index af1364a9..6aa1d15b 100644
--- a/vendor/built_in_modules/announcement/config/locales/zh_tw.yml
+++ b/vendor/built_in_modules/announcement/config/locales/zh_tw.yml
@@ -79,6 +79,7 @@ zh_tw:
     fact_check: 公告審核
     delete: 刪除
     edit: 編輯
+
 #    action: 行動
 #    add_language: 新增語言
 #    admin: 管理
@@ -178,6 +179,10 @@ zh_tw:
   bulletin_category:
     edit: 修改
     delete: 刪除  
+    update_success: 分類更新成功
+    update_failed: 分類更新失敗
+    disable_change_to_false: 設為停用
+    disable_change_to_true:  重新啓用
     
 # Chinese (Taiwan) translations for Ruby on Rails
 # by tsechingho (http://github.com/tsechingho)