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 91f458c81..4e33dcd23 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 @@ -9,12 +9,12 @@ class Panel::Announcement::BackEnd::BulletinCategorysController < OrbitBackendCo # @module_app = ModuleApp.where(:title=>'Announcement').first # end # ======= - before_filter :for_app_manager,:except => [:index,:get_categorys_json,:get_bulletins_json] + before_filter :for_app_manager,:except => [:index,:get_categorys_json,:get_bulletins_json, :get_bulletin_categories] before_filter :force_order_for_visitor,:only=>[:index,:get_categorys_json,:get_bulletins_json] - before_filter :force_order_for_user,:except => [:index,:get_categorys_json,:get_bulletins_json] - before_filter :for_app_sub_manager,:except => [:index,:get_categorys_json,:get_bulletins_json] + before_filter :force_order_for_user,:except => [:index,:get_categorys_json,:get_bulletins_json, :get_bulletin_categories] + before_filter :for_app_sub_manager,:except => [:index,:get_categorys_json,:get_bulletins_json, :get_bulletin_categories] def index @bulletin_categorys = get_categories_for_index("BulletinCategory") @@ -53,6 +53,24 @@ class Panel::Announcement::BackEnd::BulletinCategorysController < OrbitBackendCo render :json => JSON.pretty_generate(data) end + def get_bulletin_categories + I18n.locale = params[:locale] || :zh_tw + @categories = BulletinCategory.all.order_by(:title, :asc) + respond_to do |format| + format.json { + custom_categories = @categories.inject([]) do |data, category| + data << { + title: category.title, + link: "#{request.protocol}#{request.host_with_port}#{panel_announcement_front_end_bulletins_path(bulletin_category_id: category.id, locale: I18n.locale)}", + link_json: "#{request.protocol}#{request.host_with_port}#{get_bulletins_panel_announcement_back_end_bulletins_path(category_id: category.id, locale: I18n.locale)}" + } + end + render json: JSON.pretty_generate(custom_categories) + } + format.rss {} + end + end + def get_bulletins_json bulletin = BulletinCategory.find(params[:bulletin_category_id]).bulletins p bulletin 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 b60461e1e..cd8fb2f23 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 @@ -7,8 +7,8 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController # before_filter :for_admin_only,:only => [:] # before_filter :for_app_manager,:only => [:index,:show,] before_filter :force_order_for_visitor,:only=>[:index,:show,:get_sorted_and_filtered_bulletins] - before_filter :force_order_for_user,:except => [:index,:show,:get_sorted_and_filtered_bulletins, :get_bulletins_as_json] - before_filter :for_app_sub_manager,:except => [:index,:show,:get_sorted_and_filtered_bulletins, :get_bulletins_as_json] + before_filter :force_order_for_user,:except => [:index,:show,:get_sorted_and_filtered_bulletins, :get_bulletins] + before_filter :for_app_sub_manager,:except => [:index,:show,:get_sorted_and_filtered_bulletins, :get_bulletins] before_filter :only => [ :new,:create,:edit,:update,:create] do |controller| controller.get_categorys('BulletinCategory') @@ -320,31 +320,37 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController # - default: no category # - specify: category_id=[ID] # pagination: - # - default: no pagination - # - use it: paginate=true + # - default: 10 # - specify the number of results: per=[number] # - specify the page: page=[number] # ================================================================ - def get_bulletins_as_json + def get_bulletins I18n.locale = params[:locale] || :zh_tw bulletins = params[:category_id] ? Bulletin.where(bulletin_category_id: params[:category_id]).order_by(:created_at, :desc) : Bulletin.all.order_by(:created_at, :desc) - bulletins = Kaminari.paginate_array(bulletins).page(params[:page]).per(params[:per] || 10) if params[:paginate] + @bulletins = Kaminari.paginate_array(bulletins).page(params[:page]).per(params[:per] || 10) - custom_bulletins = bulletins.inject([]) do |data, bulletin| - deadline = bulletin.deadline.nil? ? t(:no_deadline) : display_date_time(bulletin.deadline) - image_url = "#{'/' unless bulletin.image.url.start_with?('/')}#{bulletin.image.url}" - data << { - title: bulletin.title, - link: "#{request.protocol}#{request.host_with_port}#{panel_announcement_front_end_bulletin_path(bulletin, category_id: bulletin.bulletin_category.id, locale: I18n.locale)}", - image: "#{request.protocol}#{request.host_with_port}#{image_url}", - category: bulletin.bulletin_category.title, - content: bulletin.text, - postdate: display_date_time(bulletin.postdate), - deadline: deadline, - tag: bulletin.sorted_tags.map{|tag| tag.name} + respond_to do |format| + format.json { + custom_bulletins = @bulletins.inject([]) do |data, bulletin| + deadline = bulletin.deadline.nil? ? t(:no_deadline) : display_date_time(bulletin.deadline) + image_url = "#{'/' unless bulletin.image.url.start_with?('/')}#{bulletin.image.url}" + data << { + title: bulletin.title, + link: "#{request.protocol}#{request.host_with_port}#{panel_announcement_front_end_bulletin_path(bulletin, category_id: bulletin.bulletin_category.id, locale: I18n.locale)}", + image: "#{request.protocol}#{request.host_with_port}#{image_url}", + category: bulletin.bulletin_category.title, + content: bulletin.text, + postdate: display_date_time(bulletin.postdate), + deadline: deadline, + tag: bulletin.sorted_tags.map{|tag| tag.name} + } + end + render json: JSON.pretty_generate(custom_bulletins) + } + format.rss { + @category = BulletinCategory.find(params[:category_id]) rescue nil } end - render json: JSON.pretty_generate(custom_bulletins) end diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletin_categorys/get_bulletin_categories.rss.builder b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletin_categorys/get_bulletin_categories.rss.builder new file mode 100644 index 000000000..d725278f7 --- /dev/null +++ b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletin_categorys/get_bulletin_categories.rss.builder @@ -0,0 +1,16 @@ +xml.instruct! :xml, :version => "1.0" +xml.rss :version => "2.0" do + xml.channel do + xml.title t('announcement.announcement') + ' ' + t('announcement.categories') + xml.link "#{request.protocol}#{request.host_with_port}#{get_bulletin_categories_panel_announcement_back_end_bulletin_categorys_path(format: 'rss')}" + + @categories.each do |category| + xml.item do + xml.title category.title + xml.pubDate category.created_at.to_s(:rfc822) + xml.link "#{request.protocol}#{request.host_with_port}#{get_bulletins_panel_announcement_back_end_bulletins_path(bulletin_category_id: category.id, locale: I18n.locale, format: 'rss')}" + xml.guid "#{request.protocol}#{request.host_with_port}#{panel_announcement_front_end_bulletins_path(bulletin_category_id: category.id)}" + end + end + end +end \ No newline at end of file diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/get_bulletins.rss.builder b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/get_bulletins.rss.builder new file mode 100644 index 000000000..aa7c1e5be --- /dev/null +++ b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/get_bulletins.rss.builder @@ -0,0 +1,21 @@ +xml.instruct! :xml, :version => "1.0" +xml.rss :version => "2.0" do + xml.channel do + if @category + xml.title @category.title + else + xml.title t('announcement.announcement') + end + xml.link "#{request.protocol}#{request.host_with_port}#{get_bulletins_panel_announcement_back_end_bulletins_path(bulletin_category_id: @category.try(:id))}.rss" + + @bulletins.each do |bulletin| + xml.item do + xml.title bulletin.title + xml.pubDate bulletin.postdate.to_s(:rfc822) + xml.description bulletin.text + xml.link "#{request.protocol}#{request.host_with_port}#{panel_announcement_front_end_bulletin_path(bulletin, category_id: bulletin.bulletin_category.id, locale: I18n.locale)}" + xml.guid "#{request.protocol}#{request.host_with_port}#{panel_announcement_front_end_bulletin_path(bulletin)}" + end + end + end +end \ 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 68d11ef02..08cc9187e 100644 --- a/vendor/built_in_modules/announcement/config/routes.rb +++ b/vendor/built_in_modules/announcement/config/routes.rb @@ -17,7 +17,7 @@ Rails.application.routes.draw do get 'load_quick_edit' end collection do - get "get_bulletins_as_json" + get "get_bulletins" post "preview" put "preview" get 'delete' @@ -28,6 +28,7 @@ Rails.application.routes.draw do resources :bulletin_categorys do collection do + get "get_bulletin_categories" get 'get_categorys_json' end # if want to use json