Class: Ezframe::PageBase

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

Direct Known Subclasses

DataEditor

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

#authObject

Returns the value of attribute auth.



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

def auth
  @auth
end

#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)


93
94
95
# File 'lib/ezframe/page_base.rb', line 93

def login?
  !!warden.user
end

#make_base_url(id = nil) ⇒ Object

routeから基本URLを生成



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/ezframe/page_base.rb', line 51

def make_base_url(id = nil)
  path = Route::get_path(@class_snake)
  params = @request.env["url_params"]
  # params[@class_snake.to_sym] = id
  path_s = path.map do |pa|
    if pa == @class_snake.to_sym && id
      "#{pa}/#{id}"
    elsif params[p]
      "#{pa}/#{params[p]}"
    else
      pa
    end
  end.join("/")
  return "/#{path_s}"
end

#parse_json_body(body) ⇒ Object



77
78
79
80
81
82
83
84
85
86
87
# File 'lib/ezframe/page_base.rb', line 77

def parse_json_body(body)
  return {} if !body || body.length==0
  begin
    json = JSON.parse(body)
  rescue => e
    mylog "ERROR: #{e.class}:#{e.message}\n#{e.backtrace}"
    return nil
  end
  json = json.recursively_symbolize_keys if json.is_a?(Hash) || json.is_a?(Array)
  return json
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
46
47
48
# File 'lib/ezframe/page_base.rb', line 22

def set_request(request)
  @request = request
  @model = request.env["model"]
  mylog "[WARN] model is not defined" unless @model
  @column_set = @model.column_sets[@class_snake.to_sym]
  # mylog "[WARN] column_set is not defined: #{@class_snake}" unless @column_set
  if @column_set
    @dataset = @column_set.dataset
  end
  @params = parse_query_string(request.env["QUERY_STRING"])
  @params.update(request.params)
  mylog "params=#{@params.inspect}" if @params.length > 0
  # @id, @key = @params[:id], @params[:key]
  @env = @request.env
  @session = @env["rack.session"]
  # mylog "session = #{@session.inspect}"
  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
    # mylog "parsed_body=#{@parsed_body.inspect}"
    @event = @parsed_body[:event] || {}
  end
end

#show_base_template(opts = {}) ⇒ Object



67
68
69
70
71
72
73
74
75
# File 'lib/ezframe/page_base.rb', line 67

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("template/base.html", args)
end

#userObject



97
98
99
# File 'lib/ezframe/page_base.rb', line 97

def user
  warden.user
end

#wardenObject



89
90
91
# File 'lib/ezframe/page_base.rb', line 89

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