class Ezframe::PageBase

Attributes

request[RW]

Public Class Methods

new(request = nil) click to toggle source
# File lib/ezframe/page_base.rb, line 11
def initialize(request = nil)
  @class_snake = class_to_snake(self.class)
  # puts "class_snake = #{@class_snake}"
  set_request(request) if request
  init_vars
end

Public Instance Methods

init_vars() click to toggle source
# File lib/ezframe/page_base.rb, line 18
def init_vars
end
login?() click to toggle source
# File lib/ezframe/page_base.rb, line 95
def login?
  !!warden.user
end
make_base_url(id = nil) click to toggle source

routeから基本URLを生成

# File lib/ezframe/page_base.rb, line 48
def make_base_url(id = nil)
  path = Route::get_path(@class_snake)
  params = @request.env["url_params"] || {}
  # EzLog.info "make_base_url: params=#{params}"
  # params[@class_snake.to_sym] = id
  path_s = path.map do |pa|
    if pa == @class_snake.to_sym && id
      "#{pa}/#{id}"
    elsif params[pa.to_sym]
      "#{pa}/#{params[pa.to_sym]}"
    else
      pa
    end
  end.join("/")
  # EzLog.info "path_s=#{path_s}"
  return "/#{path_s}"
end
parse_json_body(body) click to toggle source
# File lib/ezframe/page_base.rb, line 76
def parse_json_body(body)
  return {} if !body || body.length==0
  begin
    json = JSON.parse(body, symbolize_names: true)
  rescue => e
    EzLog.info "ERROR: #{e.class}:#{e.message}\n#{e.backtrace}"
    return nil
  end
  return json
end
session() click to toggle source
# File lib/ezframe/page_base.rb, line 87
def session
  return @request.env['rack.session']
end
set_request(request) click to toggle source

Rackのrequestを代入し、関連するインスタンス変数を定義

# File lib/ezframe/page_base.rb, line 22
def set_request(request)
  @request = request
  @column_set = ColumnSets.get(@class_snake)
  @dataset = DB.dataset(@class_snake)
  EzLog.debug "column_set is not defined: #{@class_snake}" unless @column_set
  @params = parse_query_string(request.env["QUERY_STRING"])
  @params.update(request.params)
  # EzLog.info "set_request: params=#{@params.inspect}" if @params.length > 0
  # @id, @key = @params[:id], @params[:key]
  @env = @request.env
  @session = @env["rack.session"]

  if %w[POST PUT].include?(request.request_method)
    body = @request.body.read
    if request.content_type.index("json")
      @parsed_body = parse_json_body(body)
    else
      @parsed_body = parse_query_string(body)
    end
    # EzLog.info "parsed_body=#{@parsed_body.inspect}"
    @event = @parsed_body[:ezevent] || {}
    @form = @event[:form]
  end
end
show_base_template(opts = {}) click to toggle source
# File lib/ezframe/page_base.rb, line 66
def show_base_template(opts = {})
  args = {
    title: opts[:title],
    body: opts[:body],
    into_html_header: Materialize.into_html_header,
    into_bottom_of_body: Materialize.into_bottom_of_body,
  }
  Template.fill_from_file("template/base.html", args)
end
user() click to toggle source
# File lib/ezframe/page_base.rb, line 99
def user
  return warden.user
end
warden() click to toggle source
# File lib/ezframe/page_base.rb, line 91
def warden
  return @request.env["warden"]
end