forked from saurabh/orbit4-5
				
			Compare commits
	
		
			4 Commits
		
	
	
		
			master
			...
			developmen
		
	
	| Author | SHA1 | Date | 
|---|---|---|
| 
							
							
								
									
								
								 | 
						13818f8d39 | |
| 
							
							
								
									
								
								 | 
						5cdd1d11e9 | |
| 
							
							
								
									
								
								 | 
						1a0d257055 | |
| 
							
							
								 | 
						48f50f6ebe | 
							
								
								
									
										11
									
								
								Gemfile
								
								
								
								
							
							
						
						
									
										11
									
								
								Gemfile
								
								
								
								
							| 
						 | 
				
			
			@ -84,8 +84,11 @@ end
 | 
			
		|||
#ask
 | 
			
		||||
gem 'gotcha'
 | 
			
		||||
 | 
			
		||||
#desktop
 | 
			
		||||
gem 'angularjs-rails', '~> 1.2.20'
 | 
			
		||||
gem 'angular-ui-bootstrap-rails', '~> 0.11.0'
 | 
			
		||||
gem 'jquery_mousewheel_rails', '~> 3.1.11.3'
 | 
			
		||||
#observers
 | 
			
		||||
gem 'mongoid-observers'
 | 
			
		||||
 | 
			
		||||
#desktop
 | 
			
		||||
# gem 'angularjs-rails', '~> 1.2.20'
 | 
			
		||||
# gem 'angular-ui-bootstrap-rails', '~> 0.11.0'
 | 
			
		||||
# gem 'jquery_mousewheel_rails', '~> 3.1.11.3'
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,7 +27,10 @@ class PagesController < ApplicationController
 | 
			
		|||
  def home
 | 
			
		||||
    @manifest = @key
 | 
			
		||||
    page = Page.first
 | 
			
		||||
    impressionist(page)
 | 
			
		||||
    Thread.new do
 | 
			
		||||
    	impressionist(page)
 | 
			
		||||
    	page.inc(view_count: 1)
 | 
			
		||||
    end
 | 
			
		||||
    OrbitHelper.set_params params,current_user
 | 
			
		||||
    OrbitHelper.set_site_locale locale
 | 
			
		||||
    render :html => render_final_page("home",page,true).html_safe
 | 
			
		||||
| 
						 | 
				
			
			@ -110,7 +113,10 @@ class PagesController < ApplicationController
 | 
			
		|||
            layout = true
 | 
			
		||||
          end
 | 
			
		||||
 | 
			
		||||
          impressionist(page)
 | 
			
		||||
          Thread.new do
 | 
			
		||||
          	impressionist(page)
 | 
			
		||||
          	page.inc(view_count: 1)
 | 
			
		||||
          end
 | 
			
		||||
          render :html => render_final_page("#{module_app}/#{params[:target_action]}",page,layout).html_safe
 | 
			
		||||
        else
 | 
			
		||||
          render :file => "#{Rails.root}/public/404.html", :layout => false, :status => :not_found
 | 
			
		||||
| 
						 | 
				
			
			@ -301,11 +307,11 @@ class PagesController < ApplicationController
 | 
			
		|||
 | 
			
		||||
  def render_final_page(original_view=get_view,page,layout)
 | 
			
		||||
    final_html_for_render = ""
 | 
			
		||||
    
 | 
			
		||||
    if layout
 | 
			
		||||
      parts = $mobile.blank? ? (page.page_parts rescue []) : (page.mobile_page_parts rescue [])
 | 
			
		||||
 | 
			
		||||
      @part_partials = {}
 | 
			
		||||
 | 
			
		||||
      parts.each do |part|
 | 
			
		||||
        subparts = part.sub_parts.asc(:created_at)
 | 
			
		||||
        partials = []
 | 
			
		||||
| 
						 | 
				
			
			@ -326,7 +332,10 @@ class PagesController < ApplicationController
 | 
			
		|||
            if @editmode
 | 
			
		||||
               partials << "<div class='editmode-ps' title='#{subpart.module}'> " + render_widget_for_frontend(subpart.module,subpart.widget_method,subpart.widget_type,subpart.id.to_s) + "<a href='/page_parts/edit_sub_part?page_id=#{page.id.to_s}&part_id=#{part.id.to_s}&sub_part_id=#{subpart.id.to_s}#{(!$mobile.blank? ? '&mobile_view=1' : '')}'> </a></div>"
 | 
			
		||||
            else
 | 
			
		||||
                partials << render_widget_for_frontend(subpart.module,subpart.widget_method,subpart.widget_type,subpart.id.to_s)
 | 
			
		||||
              widget_html = Rails.cache.fetch("subpart_#{subpart.module}_#{subpart.id.to_s}_"+I18n.locale.to_s,{ race_condition_ttl: 2, expires_in: 5.minutes}) do
 | 
			
		||||
                render_widget_for_frontend(subpart.module,subpart.widget_method,subpart.widget_type,subpart.id.to_s)
 | 
			
		||||
              end
 | 
			
		||||
              partials << widget_html
 | 
			
		||||
            end
 | 
			
		||||
          elsif subpart.kind == "text"
 | 
			
		||||
              if @editmode
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -76,94 +76,98 @@ module ApplicationHelper
 | 
			
		|||
	end
 | 
			
		||||
 | 
			
		||||
	def render_menu
 | 
			
		||||
		# json_file = File.read(File.join(Rails.root, 'public', "menu.json"))
 | 
			
		||||
		# @items = JSON.parse(json_file)
 | 
			
		||||
		if $mobile.blank?
 | 
			
		||||
			@pages = Page.root.sorted_published_child_pages
 | 
			
		||||
		else
 | 
			
		||||
			@pages = Page.root.sorted_published_child_pages_for_mobile
 | 
			
		||||
		end
 | 
			
		||||
		menu_html = Rails.cache.fetch(['main_menu',request.original_fullpath, I18n.locale], race_condition_ttl: 2.seconds) do
 | 
			
		||||
			# json_file = File.read(File.join(Rails.root, 'public', "menu.json"))
 | 
			
		||||
			# @items = JSON.parse(json_file)
 | 
			
		||||
			if $mobile.blank?
 | 
			
		||||
				@pages = Page.root.sorted_published_child_pages
 | 
			
		||||
			else
 | 
			
		||||
				@pages = Page.root.sorted_published_child_pages_for_mobile
 | 
			
		||||
			end
 | 
			
		||||
 | 
			
		||||
		def create_json(pages)
 | 
			
		||||
			item = {}
 | 
			
		||||
			pages.each do |page|
 | 
			
		||||
				if page.child_page.size > 0
 | 
			
		||||
					if page.page_type == "page"
 | 
			
		||||
						if $mobile.blank?
 | 
			
		||||
							item["#{page.name}"] = {"url"=> "/#{locale.to_s}" + page.url, "children"=>create_json(page.sorted_published_child_pages), "target" => "_self"}
 | 
			
		||||
						else
 | 
			
		||||
							item["#{page.name}"] = {"url"=> "/#{locale.to_s}" + page.url, "children"=>create_json(page.sorted_published_child_pages_for_mobile), "target" => "_self"}
 | 
			
		||||
			def create_json(pages)
 | 
			
		||||
				item = {}
 | 
			
		||||
				pages.each do |page|
 | 
			
		||||
					if page.child_page.size > 0
 | 
			
		||||
						if page.page_type == "page"
 | 
			
		||||
							if $mobile.blank?
 | 
			
		||||
								item["#{page.name}"] = {"url"=> "/#{locale.to_s}" + page.url, "children"=>create_json(page.sorted_published_child_pages), "target" => "_self"}
 | 
			
		||||
							else
 | 
			
		||||
								item["#{page.name}"] = {"url"=> "/#{locale.to_s}" + page.url, "children"=>create_json(page.sorted_published_child_pages_for_mobile), "target" => "_self"}
 | 
			
		||||
							end
 | 
			
		||||
						elsif page.page_type == "link"
 | 
			
		||||
							target = get_target(page.external_url)
 | 
			
		||||
							if $mobile.blank?
 | 
			
		||||
								item["#{page.name}"] = {"url"=> page.external_url, "children"=>create_json(page.sorted_published_child_pages), "target" => target}
 | 
			
		||||
							else
 | 
			
		||||
								item["#{page.name}"] = {"url"=> page.external_url, "children"=>create_json(page.sorted_published_child_pages_for_mobile), "target" => target}
 | 
			
		||||
							end
 | 
			
		||||
						end
 | 
			
		||||
					elsif page.page_type == "link"
 | 
			
		||||
						target = get_target(page.external_url)
 | 
			
		||||
						if $mobile.blank?
 | 
			
		||||
							item["#{page.name}"] = {"url"=> page.external_url, "children"=>create_json(page.sorted_published_child_pages), "target" => target}
 | 
			
		||||
						else
 | 
			
		||||
							item["#{page.name}"] = {"url"=> page.external_url, "children"=>create_json(page.sorted_published_child_pages_for_mobile), "target" => target}
 | 
			
		||||
					else
 | 
			
		||||
						if page.page_type == "page"
 | 
			
		||||
							item["#{page.name}"] = {"url"=> "/#{locale.to_s}" + page.url, "target" => "_self"}
 | 
			
		||||
						elsif page.page_type == "link"
 | 
			
		||||
							item["#{page.name}"] = {"url"=> page.external_url, "target" => get_target(page.external_url)}
 | 
			
		||||
						end
 | 
			
		||||
					end
 | 
			
		||||
				else
 | 
			
		||||
					if page.page_type == "page"
 | 
			
		||||
						item["#{page.name}"] = {"url"=> "/#{locale.to_s}" + page.url, "target" => "_self"}
 | 
			
		||||
					elsif page.page_type == "link"
 | 
			
		||||
						item["#{page.name}"] = {"url"=> page.external_url, "target" => get_target(page.external_url)}
 | 
			
		||||
				end
 | 
			
		||||
				item
 | 
			
		||||
			end
 | 
			
		||||
			@items = create_json(@pages)
 | 
			
		||||
			menu_file = File.open(File.join(Rails.root, 'app', 'templates', "#{@key}", "/home/menu.html.erb"))
 | 
			
		||||
			doc = Nokogiri::HTML(menu_file, nil, "UTF-8")
 | 
			
		||||
			menu_file.close
 | 
			
		||||
 | 
			
		||||
			temp = []
 | 
			
		||||
			@menus = []
 | 
			
		||||
			@menus_items = [] 
 | 
			
		||||
 | 
			
		||||
			temp << doc.css("*[data-menu-level='0']")
 | 
			
		||||
			temp << doc.css("*[data-menu-level='1']")
 | 
			
		||||
			temp << doc.css("*[data-menu-level='2']")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
			temp[0] = temp[0].to_s.gsub(temp[1].to_s,"{{level}}")
 | 
			
		||||
			temp[1] = temp[1].to_s.gsub(temp[2].to_s,"{{level}}")
 | 
			
		||||
			temp[2] = temp[2].to_s
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
			temp.each_with_index do |menu,i|
 | 
			
		||||
				t = Nokogiri::HTML(menu, nil, "UTF-8")
 | 
			
		||||
				a = t.css("*[data-menu-link='true']")
 | 
			
		||||
				a[0]["href"] = "href_here"
 | 
			
		||||
				a[0]["target"] = "target_here"
 | 
			
		||||
				li = t.css("*[data-menu-level='#{i}'] > *")
 | 
			
		||||
				@menus_items << li.to_html
 | 
			
		||||
				ul = t.css("*[data-menu-level='#{i}']")
 | 
			
		||||
				ul[0].inner_html = "{{here}}"
 | 
			
		||||
				@menus << ul[0].to_html
 | 
			
		||||
			end
 | 
			
		||||
 | 
			
		||||
			def create_menu(items,level)
 | 
			
		||||
				html = ""
 | 
			
		||||
				items.each do |key,item|
 | 
			
		||||
					li = @menus_items[level].gsub("href_here",(item["url"] || ""))
 | 
			
		||||
					li = li.gsub("{{link_name}}",(key || ""))
 | 
			
		||||
					li = li.gsub("target_here",(item["target"] || ""))
 | 
			
		||||
					li = request.original_fullpath == item['url'] ? li.gsub("{{active}}","active") : li.gsub("{{active}}","")
 | 
			
		||||
 | 
			
		||||
					if item["children"] && !item["children"].empty?
 | 
			
		||||
						li = li.gsub("{{level}}",create_menu(item["children"],level + 1))
 | 
			
		||||
					else
 | 
			
		||||
						li = li.gsub("{{level}}","")
 | 
			
		||||
					end
 | 
			
		||||
					html = html + li
 | 
			
		||||
				end
 | 
			
		||||
				html = @menus[level].gsub("{{here}}",html)
 | 
			
		||||
				html = html.gsub("{{class_level}}",level.to_s)
 | 
			
		||||
				html
 | 
			
		||||
			end
 | 
			
		||||
			item
 | 
			
		||||
		end
 | 
			
		||||
		@items = create_json(@pages)
 | 
			
		||||
		menu_file = File.open(File.join(Rails.root, 'app', 'templates', "#{@key}", "/home/menu.html.erb"))
 | 
			
		||||
		doc = Nokogiri::HTML(menu_file, nil, "UTF-8")
 | 
			
		||||
		menu_file.close
 | 
			
		||||
 | 
			
		||||
		temp = []
 | 
			
		||||
		@menus = []
 | 
			
		||||
		@menus_items = [] 
 | 
			
		||||
 | 
			
		||||
		temp << doc.css("*[data-menu-level='0']")
 | 
			
		||||
		temp << doc.css("*[data-menu-level='1']")
 | 
			
		||||
		temp << doc.css("*[data-menu-level='2']")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		temp[0] = temp[0].to_s.gsub(temp[1].to_s,"{{level}}")
 | 
			
		||||
		temp[1] = temp[1].to_s.gsub(temp[2].to_s,"{{level}}")
 | 
			
		||||
		temp[2] = temp[2].to_s
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		temp.each_with_index do |menu,i|
 | 
			
		||||
			t = Nokogiri::HTML(menu, nil, "UTF-8")
 | 
			
		||||
			a = t.css("*[data-menu-link='true']")
 | 
			
		||||
			a[0]["href"] = "href_here"
 | 
			
		||||
			a[0]["target"] = "target_here"
 | 
			
		||||
			li = t.css("*[data-menu-level='#{i}'] > *")
 | 
			
		||||
			@menus_items << li.to_html
 | 
			
		||||
			ul = t.css("*[data-menu-level='#{i}']")
 | 
			
		||||
			ul[0].inner_html = "{{here}}"
 | 
			
		||||
			@menus << ul[0].to_html
 | 
			
		||||
			h = create_menu(@items,0)
 | 
			
		||||
			h.html_safe
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		def create_menu(items,level)
 | 
			
		||||
			html = ""
 | 
			
		||||
			items.each do |key,item|
 | 
			
		||||
				li = @menus_items[level].gsub("href_here",(item["url"] || ""))
 | 
			
		||||
				li = li.gsub("{{link_name}}",(key || ""))
 | 
			
		||||
				li = li.gsub("target_here",(item["target"] || ""))
 | 
			
		||||
				li = request.original_fullpath == item['url'] ? li.gsub("{{active}}","active") : li.gsub("{{active}}","")
 | 
			
		||||
 | 
			
		||||
				if item["children"] && !item["children"].empty?
 | 
			
		||||
					li = li.gsub("{{level}}",create_menu(item["children"],level + 1))
 | 
			
		||||
				else
 | 
			
		||||
					li = li.gsub("{{level}}","")
 | 
			
		||||
				end
 | 
			
		||||
				html = html + li
 | 
			
		||||
			end
 | 
			
		||||
			html = @menus[level].gsub("{{here}}",html)
 | 
			
		||||
			html = html.gsub("{{class_level}}",level.to_s)
 | 
			
		||||
			html
 | 
			
		||||
		end
 | 
			
		||||
		h = create_menu(@items,0)
 | 
			
		||||
		h.html_safe
 | 
			
		||||
		menu_html
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	def render_view
 | 
			
		||||
| 
						 | 
				
			
			@ -269,17 +273,18 @@ module ApplicationHelper
 | 
			
		|||
					doc.to_html.html_safe
 | 
			
		||||
				else
 | 
			
		||||
					unless data['impressionist'].blank?
 | 
			
		||||
						impression = data['impressionist'].impressions.create
 | 
			
		||||
						impression.user_id = request.session['user_id']
 | 
			
		||||
						impression.controller_name = params[:target_controller]
 | 
			
		||||
						impression.action_name = params[:target_action]
 | 
			
		||||
						impression.ip_address = request.remote_ip
 | 
			
		||||
						impression.session_hash = request.session.id
 | 
			
		||||
						impression.request_hash = @impressionist_hash
 | 
			
		||||
						impression.referrer = request.referrer
 | 
			
		||||
						impression.save
 | 
			
		||||
						data['impressionist'].view_count = data['impressionist'].impressions.count
 | 
			
		||||
						data['impressionist'].save
 | 
			
		||||
						Thread.new do
 | 
			
		||||
							impression = data['impressionist'].impressions.create
 | 
			
		||||
							impression.user_id = request.session['user_id']
 | 
			
		||||
							impression.controller_name = params[:target_controller]
 | 
			
		||||
							impression.action_name = params[:target_action]
 | 
			
		||||
							impression.ip_address = request.remote_ip
 | 
			
		||||
							impression.session_hash = request.session.id
 | 
			
		||||
							impression.request_hash = @impressionist_hash
 | 
			
		||||
							impression.referrer = request.referrer
 | 
			
		||||
							impression.save
 | 
			
		||||
							data['impressionist'].inc(view_count: 1)
 | 
			
		||||
						end
 | 
			
		||||
					end
 | 
			
		||||
					wrap_elements = doc.css("*[data-list][data-level='0']")
 | 
			
		||||
					if wrap_elements.count == 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -102,23 +102,29 @@ module OrbitBackendHelper
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  def display_visitors(options={})
 | 
			
		||||
    Impression.where(options).distinct(:request_hash).count
 | 
			
		||||
    Impression.where(options).count
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def display_visitors_today
 | 
			
		||||
    display_visitors(created_at: {'$gte' => Time.now.beginning_of_day, '$lte' => Time.now})
 | 
			
		||||
    display_visitors(created_at: {'$gte' => Time.now.beginning_of_day})
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def display_visitors_this_week
 | 
			
		||||
    display_visitors(created_at: {'$gte' => Time.now-7.days, '$lte' => Time.now})
 | 
			
		||||
    display_visitors(created_at: {'$gte' => Time.now.beginning_of_week})
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def display_visitors_this_month
 | 
			
		||||
    display_visitors(created_at: {'$gte' => Time.now-30.days, '$lte' => Time.now})
 | 
			
		||||
    visitors_this_month = Rails.cache.fetch("visitors_this_month", expires_in: 1.day) do
 | 
			
		||||
      display_visitors(created_at: {'$gte' => Time.now.beginning_of_month})
 | 
			
		||||
    end
 | 
			
		||||
    visitors_this_month
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def display_visitors_this_year
 | 
			
		||||
    display_visitors(created_at: {'$gte' => Time.now-365.days, '$lte' => Time.now})
 | 
			
		||||
    visitors_this_year = Rails.cache.fetch("visitors_this_year", expires_in: 1.day) do
 | 
			
		||||
      display_visitors(created_at: {'$gte' => Time.now.beginning_of_year})
 | 
			
		||||
    end
 | 
			
		||||
    visitors_this_year
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def get_month_traffic
 | 
			
		||||
| 
						 | 
				
			
			@ -231,4 +237,4 @@ module Orbit::FormBuilder
 | 
			
		|||
  def datetime_picker(method, options = {})
 | 
			
		||||
    @template.datetime_picker(@object_name, method, objectify_options(options))
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,6 +15,7 @@ class ModuleApp
 | 
			
		|||
  field :desktop_enabled, type: Boolean, default: false
 | 
			
		||||
  field :widget_settings
 | 
			
		||||
  field :store_permission_granted, type: Boolean, default: false
 | 
			
		||||
  field :cache_models, type: Array, default: []
 | 
			
		||||
  
 | 
			
		||||
  has_many :categories, dependent: :destroy, :autosave => true
 | 
			
		||||
  has_and_belongs_to_many :tags, dependent: :destroy, :autosave => true
 | 
			
		||||
| 
						 | 
				
			
			@ -34,6 +35,7 @@ class ModuleApp
 | 
			
		|||
    self[:widget_methods] = reg.get_widget_methods
 | 
			
		||||
    self[:widget_settings] = reg.get_widget_settings
 | 
			
		||||
    self[:desktop_enabled] = reg.is_desktop_enabled
 | 
			
		||||
    self[:cache_models] = reg.get_models_to_cache
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def sub_managers
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,26 @@
 | 
			
		|||
class OrbitObserver < Mongoid::Observer
 | 
			
		||||
	models_to_cache =  OrbitApp.get_models_for_caching
 | 
			
		||||
	observe models_to_cache.keys
 | 
			
		||||
 | 
			
		||||
	def after_save(document)
 | 
			
		||||
		clear_cache(document)
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	def after_destroy(document)
 | 
			
		||||
		clear_cache(document)
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	def clear_cache(document)
 | 
			
		||||
		model_module_hash = OrbitApp.get_model_hash_for_caching
 | 
			
		||||
		case document.class.to_s
 | 
			
		||||
		when 'Tag'
 | 
			
		||||
			document.module_app.each do |module_app|
 | 
			
		||||
				Rails.cache.delete_matched( /#{ module_app.key }/ )
 | 
			
		||||
			end
 | 
			
		||||
		when 'Category'
 | 
			
		||||
			Rails.cache.delete_matched( /#{ document.module_app.key }/ )
 | 
			
		||||
		else
 | 
			
		||||
			Rails.cache.delete_matched( /#{model_module_hash[document.class.name.underscore.to_sym]}/ )
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -31,6 +31,15 @@ class Page
 | 
			
		|||
	belongs_to :parent_page, :class_name => 'Page', :inverse_of => :child_page
 | 
			
		||||
 | 
			
		||||
	before_create :assign_page_number
 | 
			
		||||
	
 | 
			
		||||
	after_save :clear_cache
 | 
			
		||||
	after_destroy :clear_cache
 | 
			
		||||
 | 
			
		||||
	def clear_cache
 | 
			
		||||
		I18n.available_locales.each do |locale|
 | 
			
		||||
			Rails.cache.delete_matched( /main_menu/ )
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	def assign_page_number
 | 
			
		||||
		parent_page = self.parent_page
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,4 +16,11 @@ class SubPart
 | 
			
		|||
 | 
			
		||||
  belongs_to :page_part
 | 
			
		||||
  belongs_to :mobile_page_part
 | 
			
		||||
 | 
			
		||||
  	after_save :clear_cache
 | 
			
		||||
  	after_destroy :clear_cache
 | 
			
		||||
 | 
			
		||||
  	def clear_cache
 | 
			
		||||
  		Rails.cache.delete_matched( /#{self.id.to_s}/ )
 | 
			
		||||
  	end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -37,5 +37,7 @@ module Orbit
 | 
			
		|||
    # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
 | 
			
		||||
    # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
 | 
			
		||||
    # config.i18n.default_locale = :de
 | 
			
		||||
 | 
			
		||||
    config.mongoid.observers = :orbit_observer
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,7 @@
 | 
			
		|||
GEM
 | 
			
		||||
  specs:
 | 
			
		||||
 | 
			
		||||
PLATFORMS
 | 
			
		||||
  ruby
 | 
			
		||||
 | 
			
		||||
DEPENDENCIES
 | 
			
		||||
| 
						 | 
				
			
			@ -40,7 +40,7 @@ module OrbitApp
 | 
			
		|||
      end
 | 
			
		||||
 | 
			
		||||
      class RegisteredModule
 | 
			
		||||
        attr_reader :name,:key,:base_path, :module_label,:widget_methods,:authorizable_models,:is_authorizable, :data_count, :widget_settings, :icon_class_no_sidebar,:desktop_enabled
 | 
			
		||||
        attr_reader :name,:key,:base_path, :module_label,:widget_methods,:authorizable_models,:is_authorizable, :data_count, :widget_settings, :icon_class_no_sidebar,:desktop_enabled, :models_to_cache
 | 
			
		||||
 | 
			
		||||
        def initialize(name,&block)
 | 
			
		||||
          @name = name
 | 
			
		||||
| 
						 | 
				
			
			@ -48,6 +48,7 @@ module OrbitApp
 | 
			
		|||
          @side_bar = nil
 | 
			
		||||
          @module_label = @name
 | 
			
		||||
          @widget_methods = [] 
 | 
			
		||||
          @models_to_cache = []
 | 
			
		||||
          @widget_settings = {}
 | 
			
		||||
          @is_taggable = false
 | 
			
		||||
          @authorizable_models = []
 | 
			
		||||
| 
						 | 
				
			
			@ -93,6 +94,14 @@ module OrbitApp
 | 
			
		|||
          @widget_settings = settings.first
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        def models_to_cache(models)
 | 
			
		||||
          @models_to_cache = models
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        def get_models_to_cache
 | 
			
		||||
          @models_to_cache
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        def get_widget_settings
 | 
			
		||||
          @widget_settings
 | 
			
		||||
        end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,6 +21,23 @@ module OrbitApp
 | 
			
		|||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def get_models_for_caching
 | 
			
		||||
      @models_for_caching = {}
 | 
			
		||||
      ModuleApp.all.each do |ma|
 | 
			
		||||
        # models.concat(ma.cache_models)
 | 
			
		||||
        ma.cache_models.each do |cm|
 | 
			
		||||
          @models_for_caching[cm] = ma.key
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
      @models_for_caching[:tag] = "Tag"
 | 
			
		||||
      @models_for_caching[:category] = "Category"
 | 
			
		||||
      return @models_for_caching
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def get_model_hash_for_caching
 | 
			
		||||
      @models_for_caching
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def check_module_permissions
 | 
			
		||||
      store_token = Site.first.store_token rescue nil
 | 
			
		||||
      module_apps = ModuleApp.all
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,7 +4,7 @@ module OrbitModel
 | 
			
		|||
      include Impressionist::Impressionable
 | 
			
		||||
 | 
			
		||||
      base.extend ClassMethods
 | 
			
		||||
      base.is_impressionable :counter_cache => true, :column_name => :view_count, :unique => :request_hash
 | 
			
		||||
      base.is_impressionable :counter_cache => false
 | 
			
		||||
      base.field :view_count, :type => Integer, :default => 0
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue