Class: Ezframe::PageBase

Inherits:
Object show all
Defined in:
lib/ezframe/page_base.rb

Direct Known Subclasses

MainEditor, SinglePageEditor, SubEditor

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(request = nil) ⇒ PageBase

Returns a new instance of PageBase.



11
12
13
14
15
16
# 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

Instance Attribute Details

#requestObject

Returns the value of attribute request.



9
10
11
# File 'lib/ezframe/page_base.rb', line 9

def request
  @request
end

Instance Method Details

#init_varsObject



18
19
# File 'lib/ezframe/page_base.rb', line 18

def init_vars
end

#login?Boolean

Returns:

  • (Boolean)


95
96
97
# File 'lib/ezframe/page_base.rb', line 95

def login?
  !!warden.user
end

#make_base_url(id = nil) ⇒ Object

routeから基本URLを生成



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# 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) ⇒ Object



76
77
78
79
80
81
82
83
84
85
# 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

#sessionObject



87
88
89
# File 'lib/ezframe/page_base.rb', line 87

def session
  return @request.env['rack.session']
end

#set_request(request) ⇒ Object

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



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# 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 = {}) ⇒ Object



66
67
68
69
70
71
72
73
74
# 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

#userObject



99
100
101
# File 'lib/ezframe/page_base.rb', line 99

def user
  return warden.user
end

#wardenObject



91
92
93
# File 'lib/ezframe/page_base.rb', line 91

def warden
  return @request.env["warden"]
end