diff --git a/app/assets/javascripts/page_edit.js b/app/assets/javascripts/page_edit.js index 31a7d600..a889f5b2 100644 --- a/app/assets/javascripts/page_edit.js +++ b/app/assets/javascripts/page_edit.js @@ -24,6 +24,10 @@ $("#module_app_list select").live('change', function() { $.getScript($(this).attr('rel') + '/' + $(this).val() + '/reload_widgets'); }); +$("#tag_list select").live('change', function() { + $.getScript($(this).attr('rel') + '/' + $(this).val() + '/reload_r_tag_options'); +}); + $('.part_kind').live('click', function() { $('.part_kind_partial').hide(); $('#part_' + $(this).attr('value')).show(); diff --git a/app/controllers/admin/page_parts_controller.rb b/app/controllers/admin/page_parts_controller.rb index 1fb6752a..81c8b9c6 100644 --- a/app/controllers/admin/page_parts_controller.rb +++ b/app/controllers/admin/page_parts_controller.rb @@ -25,7 +25,7 @@ class Admin::PagePartsController < ApplicationController @module_apps = ModuleApp.all(:conditions => {:enable_frontend => true}) @module_app = @part.module_app ? @part.module_app : @module_apps[0] @r_tag = @part.public_r_tag.blank? ? LIST[:public_r_tags][0] : @part.public_r_tag - @tag_objects = @r_tag.classify.constantize.all + @tag_objects = @r_tag.classify.constantize.all rescue nil case @module_app.key when 'bulletin' @categories = BulletinCategory.all @@ -77,5 +77,13 @@ class Admin::PagePartsController < ApplicationController format.js {} end end + + def reload_r_tag_options + @r_tag = (ModuleApp.find(params[:id]) rescue nil) || params[:id] + @tag_objects = @r_tag.classify.constantize.all rescue nil + respond_to do |format| + format.js {} + end + end end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index e45fa4d6..ea8c5a5b 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -75,11 +75,12 @@ module ApplicationHelper end def active_for_controllers(*controller_names) - controller_names.include?(controller.controller_name) ? 'active' : nil + (controller_names.include?(controller.controller_name) || controller_names.include?(request.fullpath)) ? 'active' : nil end def visible_for_controllers(*controller_names) - controller_names.include?(controller.controller_name) ? '' : 'hide' + puts controller_names + (controller_names.include?(controller.controller_name) || controller_names.include?(request.fullpath)) ? '' : 'hide' end def active_for_action(controller_name, action_name) diff --git a/app/models/page_part.rb b/app/models/page_part.rb index 9fe91e86..42f8b775 100644 --- a/app/models/page_part.rb +++ b/app/models/page_part.rb @@ -7,7 +7,7 @@ class PagePart field :content field :kind field :public_r_tag - field :public_r_tag_object_id, :type => BSON::ObjectId, :default => nil + field :public_r_tag_object_id, :default => nil field :widget_path has_one :i18n_variable, :as => :language_value, :autosave => true, :dependent => :destroy diff --git a/app/views/admin/page_parts/_public_r_tag.html.erb b/app/views/admin/page_parts/_public_r_tag.html.erb index 3f8170d7..d8422e9d 100644 --- a/app/views/admin/page_parts/_public_r_tag.html.erb +++ b/app/views/admin/page_parts/_public_r_tag.html.erb @@ -1,7 +1,11 @@ - <%= f.select :public_r_tag, LIST[:public_r_tags].collect{|tag| [t(tag), tag]}, :selected => @r_tag %> + <%= f.select :public_r_tag, LIST[:public_r_tags].collect{|tag| [t(tag), tag]}, {:selected => @r_tag}, {:rel => admin_page_parts_path} %> - <%= f.select :public_r_tag_object_id, options_from_collection_for_select(@tag_objects, :id, :title, :selected => @part.public_r_tag_object_id) %> + <% if @r_tag.eql?('sub_menu') %> + <%= f.select :public_r_tag_object_id, options_for_select([t(:horizontal), t(:vertical)], t(:horizontal)) %> + <% else %> + <%= f.select :public_r_tag_object_id, options_from_collection_for_select(@tag_objects, :id, :title, :selected => @part.public_r_tag_object_id) %> + <% end %> \ No newline at end of file diff --git a/app/views/admin/page_parts/reload_r_tag_options.js.erb b/app/views/admin/page_parts/reload_r_tag_options.js.erb new file mode 100644 index 00000000..a2eaf483 --- /dev/null +++ b/app/views/admin/page_parts/reload_r_tag_options.js.erb @@ -0,0 +1,5 @@ +<% if @r_tag.eql?('sub_menu') %> + $('#name_list select').html("<%= j options_for_select(t(:horizontal) => :horizontal, t(:vertical) => :vertical) %>") +<% else %> + $('#name_list select').html("<%= j options_from_collection_for_select(@tag_objects, :id, :title) %>") +<% end %> \ No newline at end of file diff --git a/app/views/layouts/_side_bar.html.erb b/app/views/layouts/_side_bar.html.erb index 84d89ac4..4acaa0c1 100644 --- a/app/views/layouts/_side_bar.html.erb +++ b/app/views/layouts/_side_bar.html.erb @@ -2,13 +2,13 @@ <%= link_to content_tag(:i, nil, :class => 'icons-purchase') + t('admin.purchase'), admin_purchases_path %> <% end -%> -<%= content_tag :li, :class => active_for_controllers('bulletins', 'tags', 'bulletin_categorys', 'fact_checks') do -%> +<%= content_tag :li, :class => active_for_controllers('bulletins', '/panel/announcement/back_end/tags', 'bulletin_categorys', 'fact_checks') do -%> <%= link_to content_tag(:i, nil, :class => 'icons-announcement') + t('admin.announcement'), panel_announcement_back_end_bulletins_path %> - <%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('bulletins', 'tags', 'bulletin_categorys', 'fact_checks')) do -%> + <%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('bulletins', '/panel/announcement/back_end/tags', 'bulletin_categorys', 'fact_checks')) do -%> <%= content_tag :li, link_to(t('announcement.all_articles'), panel_announcement_back_end_bulletins_path), :class => active_for_action('bulletins', 'index') %> <%= content_tag :li, link_to(t('announcement.add_new'), new_panel_announcement_back_end_bulletin_path), :class => active_for_action('bulletins', 'new') %> <%= content_tag :li, link_to(t('announcement.categories'), panel_announcement_back_end_bulletin_categorys_path), :class => active_for_action('bulletin_categorys', 'index') %> - <%= content_tag :li, link_to(t('announcement.tags'), panel_announcement_back_end_tags_path), :class => active_for_action('panel/bulletin/back_end/tags', 'index') %> + <%= content_tag :li, link_to(t('announcement.tags'), panel_announcement_back_end_tags_path), :class => active_for_action('/panel/announcement/back_end/tags', 'index') %> <%= content_tag :li, link_to(t('announcement.bulletin.fact_check_setting'), panel_announcement_back_end_fact_checks_setting_path), :class => active_for_action('fact_checks', 'setting') if (is_manager? rescue nil) %> <% end -%> @@ -38,13 +38,13 @@ <% end %> <% end %> -<%= content_tag :li, :class => active_for_controllers('web_links', 'tags', 'web_link_categorys') do -%> +<%= content_tag :li, :class => active_for_controllers('web_links', '/panel/web_resource/back_end/tags', 'web_link_categorys') do -%> <%= link_to content_tag(:i, nil, :class => 'icons-link') + t('admin.link'), panel_web_resource_back_end_web_links_path %> - <%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('web_links', 'tags', 'web_link_categorys')) do -%> + <%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('web_links', '/panel/web_resource/back_end/tags', 'web_link_categorys')) do -%> <%= content_tag :li, link_to(t('admin.announcement.all_articles'), panel_web_resource_back_end_web_links_path), :class => active_for_action('web_link', 'index') %> <%= content_tag :li, link_to(t('admin.announcement.add_new'), new_panel_web_resource_back_end_web_link_path), :class => active_for_action('web_link', 'new') %> <%= content_tag :li, link_to(t('admin.announcement.categories'), panel_web_resource_back_end_web_link_categorys_path), :class => active_for_action('web_link_categorys', 'index') %> - <%= content_tag :li, link_to(t('admin.announcement.tags'), panel_web_resource_back_end_tags_path), :class => active_for_action('panel/web_resource/back_end/tags', 'index') %> + <%= content_tag :li, link_to(t('admin.announcement.tags'), panel_web_resource_back_end_tags_path), :class => active_for_action('/panel/web_resource/back_end/tags', 'index') %> <% end -%> <% end -%> diff --git a/config/list.yml b/config/list.yml index 9b3a1a96..ef95ba31 100644 --- a/config/list.yml +++ b/config/list.yml @@ -9,6 +9,7 @@ markups: public_r_tags: - ad_banner + - sub_menu page_part_kinds: - text diff --git a/config/routes.rb b/config/routes.rb index d2294edf..fabeb93d 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -77,6 +77,7 @@ Orbit::Application.routes.draw do resources :page_parts do member do get 'reload_widgets' + get 'reload_r_tag_options' end end resources :purchases do diff --git a/lib/parsers/parser_common.rb b/lib/parsers/parser_common.rb index 93ea2608..94a968c4 100644 --- a/lib/parsers/parser_common.rb +++ b/lib/parsers/parser_common.rb @@ -106,4 +106,20 @@ module ParserCommon page_menu.swap(fragment) end + # sub_menus + def parse_sub_menus(body = nil, page = nil, id = nil) + body.css('sub_menu').each do |sub_menu| + res = '' + res << "" + fragment = Nokogiri::HTML::DocumentFragment.new(body, res) + sub_menu.swap(fragment) + 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 a13e8308..77d2c9c1 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 @@ -91,12 +91,16 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController # GET /bulletins/1/edit def edit @bulletin = Bulletin.find(params[:id]) - # @summary_variable = @bulletin.summary_variable - - @link_url = panel_announcement_back_end_bulletin_path(@bulletin) - - get_categorys - get_tags + if @bulletin.is_rejected? + redirect_to :action => :index + else + # @summary_variable = @bulletin.summary_variable + + @link_url = panel_announcement_back_end_bulletin_path(@bulletin) + + get_categorys + get_tags + end end # POST /bulletins @@ -204,57 +208,60 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController # PUT /bulletins/1 # PUT /bulletins/1.xml def update + + if params[:bulletin_link] + + @bulletin_link = BulletinLink.find(params[:id]) + + @link_url = panel_announcement_back_end_bulletin_path(@bulletin_link) - if params[:bulletin_link] + respond_to do |format| + if @bulletin_link.update_attributes(params[:bulletin_link]) + # format.html { redirect_to(panel_announcement_back_end_bulletins_url) } + format.js { render 'update_bulletin_link' } + end + end + + elsif params[:bulletin_file] + + @bulletin_file = BulletinFile.find(params[:id]) + + @file_url = panel_announcement_back_end_bulletin_path(@bulletin_file) - @bulletin_link = BulletinLink.find(params[:id]) + respond_to do |format| + if @bulletin_file.update_attributes(params[:bulletin_file]) + # format.html { redirect_to(panel_announcement_back_end_bulletins_url) } + format.js { render 'update_bulletin_file' } + end + end + + else + + @bulletin = Bulletin.find(params[:id]) + + @bulletin.update_user_id = current_user.id + + # @bulletin.image.clear if params[:bulletin][:image_del] == '1' + # if params[:bulletin][:image_del] == '1' + # @bulletin.remove_image! + # @bulletin.image_del = nil + # params[:bulletin][:image_del] = nil + # end - @link_url = panel_announcement_back_end_bulletin_path(@bulletin_link) - - respond_to do |format| - if @bulletin_link.update_attributes(params[:bulletin_link]) - # format.html { redirect_to(panel_announcement_back_end_bulletins_url) } - format.js { render 'update_bulletin_link' } - end - end - - elsif params[:bulletin_file] - - @bulletin_file = BulletinFile.find(params[:id]) - - @file_url = panel_announcement_back_end_bulletin_path(@bulletin_file) - - respond_to do |format| - if @bulletin_file.update_attributes(params[:bulletin_file]) - # format.html { redirect_to(panel_announcement_back_end_bulletins_url) } - format.js { render 'update_bulletin_file' } - end - end - - else - - @bulletin = Bulletin.find(params[:id]) - - @bulletin.update_user_id = current_user.id - - # @bulletin.image.clear if params[:bulletin][:image_del] == '1' - # if params[:bulletin][:image_del] == '1' - # @bulletin.remove_image! - # @bulletin.image_del = nil - # params[:bulletin][:image_del] = nil - # end - - respond_to do |format| - if @bulletin.update_attributes(params[:bulletin]) && @bulletin.save - # format.html { redirect_to(panel_announcement_back_end_bulletin_url(@bulletin), :notice => t('bulletin.update_bulletin_success')) } - format.html { redirect_to(panel_announcement_back_end_bulletins_url, :notice => t('bulletin.update_bulletin_success')) } - format.js { render 'toggle_enable' } - format.xml { head :ok } - else - format.html { render :action => "edit" } - format.xml { render :xml => @bulletin.errors, :status => :unprocessable_entity } - end - end + respond_to do |format| + if @bulletin.update_attributes(params[:bulletin]) + # format.html { redirect_to(panel_announcement_back_end_bulletin_url(@bulletin), :notice => t('bulletin.update_bulletin_success')) } + format.html { redirect_to(panel_announcement_back_end_bulletins_url, :notice => t('bulletin.update_bulletin_success')) } + format.js { render 'toggle_enable' } + format.xml { head :ok } + else + get_tags + get_categorys + format.html { render :action => "edit" } + format.xml { render :xml => @bulletin.errors, :status => :unprocessable_entity } + end + end + end end @@ -335,7 +342,7 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController sorted = params[:direction].eql?('asc') ? h.sort : h.sort.reverse! bulletins = sorted.collect {|a| a[1] } when 'status' - bulletins = bulletins.order_by(:is_top, params[:direction]).order_by(:is_hot, params[:direction]).order_by(:is_hidden, params[:direction]) + bulletins = bulletins.order_by(:is_top, params[:direction]).order_by(:is_hot, params[:direction]).order_by(:is_hidden, params[:direction]).order_by(:is_pending, params[:direction]).order_by(:is_checked, params[:direction]).order_by(:is_rejected, params[:direction]) when 'update_user_id' user_ids = bulletins.distinct(:update_user_id) users = User.find(user_ids) rescue nil @@ -357,7 +364,7 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController sorted_titles = sorted.collect {|a| a[1] } a = params[:direction].eql?('asc') ? (sorted_titles + a) : (a + sorted_titles) bulletins = a.flatten - end + end if @filter @filter.each do |key, value| case key @@ -365,16 +372,23 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController a = Array.new bulletins.each do |bulletin| value.each do |v| - a << bulletin if bulletin[v] + case v + when 'pending' + a << bulletin if bulletin.is_checked.nil? + when 'rejected' + a << bulletin if bulletin.is_checked.eql?(false) + else + a << bulletin if bulletin[v] + end end end - bulletins = a + bulletins = a.uniq when 'categories' a = Array.new bulletins.each do |bulletin| a << bulletin if value.include?(bulletin.bulletin_category.id.to_s) end - bulletins = a + bulletins = a.uniq when 'tags' a = Array.new bulletins.each do |bulletin| @@ -382,7 +396,7 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController a << bulletin if value.include?(tag.id.to_s) end end - bulletins = a + bulletins = a.uniq end if value.size > 0 end end diff --git a/vendor/built_in_modules/announcement/app/models/bulletin.rb b/vendor/built_in_modules/announcement/app/models/bulletin.rb index 4808b3a9..55d1ec84 100644 --- a/vendor/built_in_modules/announcement/app/models/bulletin.rb +++ b/vendor/built_in_modules/announcement/app/models/bulletin.rb @@ -19,7 +19,10 @@ class Bulletin field :is_top, :type => Boolean, :default => false field :is_hot, :type => Boolean, :default => false field :is_hidden, :type => Boolean, :default => false - field :is_checked, :type => Boolean, :default => nil + field :is_checked, :type => Boolean, :default => false + field :is_pending, :type => Boolean, :default => true + field :is_rejected, :type => Boolean, :default => false + field :not_checked_reason @@ -42,7 +45,7 @@ class Bulletin validates_presence_of :title - before_save :set_key + before_save :set_key, :update_status after_save :save_bulletin_links after_save :save_bulletin_files @@ -79,17 +82,6 @@ class Bulletin end - def status - case self.is_checked - when nil - I18n.t('announcement.bulletin.fact_check_pending') - when true - I18n.t('announcement.bulletin.fact_check_pass') - when false - I18n.t('announcement.bulletin.fact_check_not_pass') - end - end - def is_expired? Date.today > self.deadline ? true : false rescue false #some dates might sat as nil so rescue false @@ -110,9 +102,13 @@ class Bulletin def is_checked? self.is_checked end - - def is_check_rejected? - self.is_checked == false + + def is_pending? + self.is_pending + end + + def is_rejected? + self.is_rejected end @@ -169,6 +165,18 @@ class Bulletin text.key = 'text' end end + + def update_status + if !self.is_pending && !self.is_checked + self.is_pending = false + self.is_rejected = true + self.is_checked = false + elsif self.is_checked + self.is_pending = false + self.is_rejected = false + self.is_checked = true + end + end end \ No newline at end of file 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 ca80512e..7db70593 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 @@ -10,14 +10,22 @@ <% if bulletin.is_hidden? %> <%= t(:hidden) %> <% end %> - <%= bulletin.status %> + <% if bulletin.is_pending? %> + <%= t(:pending) %> + <% end %> + <% if bulletin.is_checked? %> + <%= t(:checked) %> + <% end %> + <% if bulletin.is_rejected? %> + <%= t(:rejected) %> + <% end %> <%= bulletin.bulletin_category.i18n_variable[I18n.locale] %> <%= link_to bulletin.title[I18n.locale], panel_announcement_front_end_bulletin_path(bulletin, :category_id => bulletin.bulletin_category.id) rescue ''%>