From 59a198005d44d3fad26f30ed0846cc881a40e523 Mon Sep 17 00:00:00 2001 From: Harry Bomrah Date: Tue, 7 Jul 2015 19:55:46 +0800 Subject: [PATCH 1/2] added some stuff for feeds and utility --- .gitignore | 1 + app/helpers/orbit_helper.rb | 66 +++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) diff --git a/.gitignore b/.gitignore index 27ddcd8..0c35e3e 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,7 @@ app/views/frontend /public/uploads/* public/assets/* +public/site_feeds/* public/import_status.yml public/announcement_link_widget_en.json public/announcement_link_widget_zh_tw.json diff --git a/app/helpers/orbit_helper.rb b/app/helpers/orbit_helper.rb index 0b89bbf..e65ab81 100644 --- a/app/helpers/orbit_helper.rb +++ b/app/helpers/orbit_helper.rb @@ -381,6 +381,72 @@ module OrbitHelper ActionView::Base.full_sanitizer.sanitize(string) end + # get feeds for the module + + def self.get_feed_for_module(type) + categories = [] + ma = nil + if type == "index" + categories = @categories if !@categories.nil? + ma = @module_app + elsif type == "widget" + categories = @widget_categories if !@widget_categories.nil? + ma = @widget_module_app + end + if categories.first == "all" + feeds = SiteFeed.where(:channel_key => ma.key).enabled + else + feeds = SiteFeed.where(:channel_key => ma.key, :merge_with_category.in => categories).enabled + end + data = [] + if feeds.count > 0 + temp_ids = [] + feeds.each do |feed| + file = File.join(Rails.root,"public","site_feeds",feed.id.to_s,feed.feed_uid.to_s + ".json") + if File.exists?(file) + d = File.read(file) + d = JSON.parse(d) + cat = Category.find(feed.merge_with_category).title + final_d = [] + d[ma.key.pluralize].each{|a| + a["category"] = cat + if !temp_ids.include?(a["id"]) + temp_ids << a["id"] + a["params"] = a["params"] + "_" + feed.id.to_s + "h" + final_d << a + end + } + data.concat(final_d) + end + end + end + data + end + + def self.is_object_from_feed?(uid) + return uid.ends_with?("h") + end + + def self.get_from_feed(uidwithid) + temp = uidwithid.split("_") + feed_id = temp[1][0...-1] + uid = temp[0] + object = nil + feed = SiteFeed.find(feed_id) rescue nil + if !feed.nil? + file = File.join(Rails.root,"public","site_feeds",feed.id.to_s,feed.feed_uid.to_s + ".json") + if File.exists?(file) + d = File.read(file) + d = JSON.parse(d) + objects = d[@module_app.key.pluralize] + object = objects.select{|obj| obj["id"] == uid}.first + cat = Category.find(feed.merge_with_category) + object = {} if cat.disable + end + end + object + end + # =============================================================== # Breadcrumbs # =============================================================== From 93d66b5866a9d2216912cc2ef6c8b55e2ba29fa3 Mon Sep 17 00:00:00 2001 From: Harry Bomrah Date: Wed, 8 Jul 2015 20:00:59 +0800 Subject: [PATCH 2/2] fix for meember role disabled fields and also role will delete all the attribute fields --- app/controllers/members_controller.rb | 32 ++++++++++++++++++++++++-- app/helpers/attribute_values_helper.rb | 16 +++++++------ app/models/role.rb | 2 +- 3 files changed, 40 insertions(+), 10 deletions(-) diff --git a/app/controllers/members_controller.rb b/app/controllers/members_controller.rb index 1693966..bac866e 100644 --- a/app/controllers/members_controller.rb +++ b/app/controllers/members_controller.rb @@ -236,9 +236,37 @@ class MembersController < ApplicationController end when 'role' if !field['id'].blank? - field_data = member.attribute_values.find_by(:attribute_field_id=>field['id'],:key=>field['key']).get_field_value rescue {} + av = member.attribute_values.find_by(:attribute_field_id=>field['id'],:key=>field['key']) rescue nil + if !av.nil? + r = av.attribute_field.role rescue nil + if !r.nil? + if memeber.roles.include?(r) + field_data = av.get_field_value rescue {} + else + field_data = {} + end + else + field_data = {} + end + else + field_data = {} + end else - field_data = member.attribute_values.find_by(:key=>field['key']).get_field_value rescue {} + av = member.attribute_values.find_by(:key=>field['key']) rescue nil + if !av.nil? + r = av.attribute_field.role rescue nil + if !r.nil? + if member.roles.include?(r) + field_data = av.get_field_value rescue {} + else + field_data = {} + end + else + field_data = {} + end + else + field_data = {} + end end end next if field_data.blank? or field_data['value'].blank? diff --git a/app/helpers/attribute_values_helper.rb b/app/helpers/attribute_values_helper.rb index 4bfa800..6a04df4 100644 --- a/app/helpers/attribute_values_helper.rb +++ b/app/helpers/attribute_values_helper.rb @@ -22,7 +22,7 @@ module AttributeValuesHelper end def show_minguo_calendar(from_to=nil) - get_minguo + # get_minguo case from_to when :to @@ -96,12 +96,14 @@ module AttributeValuesHelper def get_date_by_format(from_to = nil) case I18n.locale when :zh_tw - case - when self.member_profile_field["typeC"]["calendar"] == "west_calendar" - show_west_calender(from_to) - when self.member_profile_field["typeC"]["calendar"] == "tw_calendar" - show_minguo_calendar(from_to) - end #case self.member_profile_field["typeC"]["calendar"] + # case + # when self.member_profile_field["typeC"]["calendar"] == "west_calendar" + # show_west_calender(from_to) + # when self.member_profile_field["typeC"]["calendar"] == "tw_calendar" + # show_minguo_calendar(from_to) + # end #case self.member_profile_field["typeC"]["calendar"] + show_west_calender(from_to) + when :en show_west_calender(from_to) end diff --git a/app/models/role.rb b/app/models/role.rb index 935a018..10e6c4f 100644 --- a/app/models/role.rb +++ b/app/models/role.rb @@ -10,7 +10,7 @@ class Role has_and_belongs_to_many :member_profiles has_many :authorizations - has_many :attribute_fields + has_many :attribute_fields, dependent: :destroy accepts_nested_attributes_for :attribute_fields has_many :role_statuses, dependent: :destroy