Class: DcApplicationController
- Inherits:
-
ActionController::Base
- Object
- ActionController::Base
- DcApplicationController
- Defined in:
- app/controllers/dc_application_controller.rb
Overview
DcApplicationControllerController holds methods which are useful for all application controllers.
Direct Known Subclasses
Instance Method Summary collapse
-
#dc_dump(*args) ⇒ Object
Writes anything passed as parameter to logger file.
-
#dc_edit_mode? ⇒ Boolean
Return true if CMS is in edit mode.
-
#dc_get_site ⇒ DcSite
Determines site from url and returns site document.
-
#dc_log_visit ⇒ Object
Will write document to dc_visits collection unless visit comes from robot.
-
#dc_render_404(where_the_error_is = nil) ⇒ Object
Will render public/404.html file with some debug code includded.
-
#dc_user_has_role(role) ⇒ Boolean
Checks if user has required role.
-
#set_page_title ⇒ Object
Will set page title according to data on dc_page or dc_site.
Instance Method Details
#dc_dump(*args) ⇒ Object
Writes anything passed as parameter to logger file. Very useful for debuging strange errors.
38 39 40 41 42 |
# File 'app/controllers/dc_application_controller.rb', line 38 def dc_dump(*args) args.each do |arg| logger.debug arg.to_s end end |
#dc_edit_mode? ⇒ Boolean
Return true if CMS is in edit mode
49 50 51 |
# File 'app/controllers/dc_application_controller.rb', line 49 def dc_edit_mode? session[:edit_mode] > 1 end |
#dc_get_site ⇒ DcSite
Determines site from url and returns site document.
‘test’ document is returned. If site has alias set then alias site document is returned.
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'app/controllers/dc_application_controller.rb', line 82 def dc_get_site return @site if @site uri = URI.parse(request.url) cache_key = ['dc_site', uri.host] @site = dc_cache_read(cache_key) return @site if @site @site = DcSite.find_by(name: uri.host) # Site can be aliased if @site&.alias_for.present? @site = DcSite.find_by(name: @site.alias_for) end # Development environment. Check if site with name test exists and use # alias_for as pointer to real site. if @site.nil? && ENV["RAILS_ENV"] != 'production' @site = DcSite.find_by(name: 'test') @site = DcSite.find_by(name: @site.alias_for) if @site end @site = nil if @site && !@site.active # site is disabled dc_cache_write(cache_key, @site) end |
#dc_log_visit ⇒ Object
Will write document to dc_visits collection unless visit comes from robot. It also sets session variable to true if robot.
134 135 136 137 138 139 140 141 142 143 144 145 146 |
# File 'app/controllers/dc_application_controller.rb', line 134 def dc_log_visit if request.env["HTTP_USER_AGENT"] and request.env["HTTP_USER_AGENT"].match(/\(.*https?:\/\/.*\)/) logger.info "ROBOT: #{Time.now.strftime('%Y.%m.%d %H:%M:%S')} id=#{@page.id} ip=#{request.remote_ip}." session[:is_robot] = true else DcVisit.create(site_id: @site.id, user_id: session[:user_id], page_id: @page.id, ip: request.remote_ip, session_id: request.[:id], time: Time.now ) end end |
#dc_render_404(where_the_error_is = nil) ⇒ Object
Will render public/404.html file with some debug code includded.
125 126 127 128 |
# File 'app/controllers/dc_application_controller.rb', line 125 def dc_render_404(where_the_error_is=nil) logger.info("Error 404;#{request.env['REQUEST_URI'] rescue ''};#{request.referer};#{where_the_error_is}") render(file: Rails.root.join('public/404.html'), status: 404) end |
#dc_user_has_role(role) ⇒ Boolean
Checks if user has required role.
as role name. If passed as name, dc_policy_roles is searched for appropriate role.
65 66 67 68 69 70 |
# File 'app/controllers/dc_application_controller.rb', line 65 def dc_user_has_role(role) role = DcPolicyRole.get_role(role) return false if role.nil? || session[:user_roles].nil? # role exists in user_roles session[:user_roles].include?(role._id) end |
#set_page_title ⇒ Object
Will set page title according to data on dc_page or dc_site
Sets internal @page_title variable.
111 112 113 114 |
# File 'app/controllers/dc_application_controller.rb', line 111 def set_page_title @page_title = @page.title.blank? ? @page.subject : @page.title (:name, 'description', @page.) end |