ezframe 0.0.4 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/asset/css/materialize.min.css +13 -0
- data/asset/css/style.css +3 -0
- data/{app_template/asset/image/favicon.ico → asset/image/c_e.ico} +0 -0
- data/{app_template/asset → asset}/js/ezframe.js +29 -59
- data/asset/js/materialize.min.js +6 -0
- data/asset/js/mymaterialize.js +38 -0
- data/exe/console +2 -2
- data/exe/{create_table.rb → create_table} +0 -0
- data/exe/dbmigrate +67 -0
- data/ezframe.gemspec +3 -0
- data/lib/ezframe/auth.rb +7 -2
- data/lib/ezframe/column_set.rb +30 -14
- data/lib/ezframe/column_type.rb +207 -67
- data/lib/ezframe/config.rb +5 -1
- data/lib/ezframe/controller.rb +34 -34
- data/lib/ezframe/database.rb +2 -2
- data/lib/ezframe/editor.rb +41 -41
- data/lib/ezframe/email.rb +34 -0
- data/lib/ezframe/ht.rb +20 -0
- data/lib/ezframe/html.rb +22 -14
- data/lib/ezframe/japanese_utils.rb +5 -0
- data/lib/ezframe/loader.rb +2 -2
- data/lib/ezframe/materialize.rb +3 -4
- data/lib/ezframe/message.rb +46 -0
- data/lib/ezframe/model.rb +0 -1
- data/lib/ezframe/page_base.rb +53 -67
- data/lib/ezframe/route.rb +122 -0
- data/lib/ezframe/server.rb +1 -1
- data/lib/ezframe/template.rb +3 -2
- data/lib/ezframe/util.rb +36 -16
- data/lib/ezframe/version.rb +1 -1
- data/lib/ezframe.rb +2 -1
- metadata +57 -14
- data/.rubocop.yml +0 -44
- data/app_template/config/generic.yml +0 -3
- data/app_template/config/materialize.yml +0 -5
- data/app_template/config.ru +0 -10
- data/app_template/pages/basic.rb +0 -5
- data/exe/setup.rb +0 -15
- data/lib/ezframe/page_kit.rb +0 -63
data/lib/ezframe/database.rb
CHANGED
@@ -12,7 +12,7 @@ module Ezframe
|
|
12
12
|
|
13
13
|
def connect
|
14
14
|
@dbfile ||= ENV["EZFRAME_DB"] || Config[:database] || "sqlite://db/devel.sqlite"
|
15
|
-
puts "Database.connect: dbfile=#{@dbfile}"
|
15
|
+
# puts "Database.connect: dbfile=#{@dbfile}"
|
16
16
|
@sequel = Sequel.connect(@dbfile, loggers: [Logger.new($stdout)])
|
17
17
|
end
|
18
18
|
|
@@ -31,7 +31,7 @@ module Ezframe
|
|
31
31
|
# puts "create_table: #{table_name}"
|
32
32
|
if @dbfile.index("postgres")
|
33
33
|
@sequel.create_table(table_name) do
|
34
|
-
|
34
|
+
primary_key :id, identity: true
|
35
35
|
dbtype_h.each do |key, dbtype|
|
36
36
|
column(key, dbtype)
|
37
37
|
end
|
data/lib/ezframe/editor.rb
CHANGED
@@ -13,8 +13,8 @@ module Ezframe
|
|
13
13
|
end
|
14
14
|
@dataset = @column_set.dataset
|
15
15
|
end
|
16
|
-
if @
|
17
|
-
@event = @
|
16
|
+
if @parsed_body
|
17
|
+
@event = @parsed_body[:event] || {}
|
18
18
|
@target_id = @event[@target]
|
19
19
|
end
|
20
20
|
@auth = false
|
@@ -34,53 +34,53 @@ module Ezframe
|
|
34
34
|
return @target
|
35
35
|
end
|
36
36
|
|
37
|
-
def
|
38
|
-
flash_area = ""
|
39
|
-
mylog "
|
40
|
-
if @request
|
41
|
-
mylog "flash=#{@request.env['x-rack.flash']}"
|
42
|
-
flash_area = Ht.div(class: %w[teal], child: @request['env']['x-rack.flash'].error)
|
43
|
-
end
|
44
|
-
form = Ht.multi_div([ %w[container], %w[row]],
|
45
|
-
Ht.form(class: "col s6 offset-s3", action: "/#{@target}/login", method: "post", child: [
|
46
|
-
Materialize.input(type: "text", name: "account", label: "User ID"),
|
47
|
-
Materialize.input(type: "password", name: "password", label: "Password"),
|
48
|
-
Ht.button(type: "submit", class: %w[btn], child: "login")
|
49
|
-
]))
|
50
|
-
|
51
|
-
end
|
52
|
-
|
53
|
-
def public_login_post
|
54
|
-
mylog "public_login_post: #{@params.inspect}, #{@
|
55
|
-
warden.authenticate
|
56
|
-
|
57
|
-
end
|
37
|
+
# def public_login_get
|
38
|
+
# flash_area = ""
|
39
|
+
# mylog "public_login_get: #{@request}"
|
40
|
+
# if @request
|
41
|
+
# mylog "flash=#{@request.env['x-rack.flash']}"
|
42
|
+
# flash_area = Ht.div(class: %w[teal], child: @request['env']['x-rack.flash'].error)
|
43
|
+
# end
|
44
|
+
# form = Ht.multi_div([ %w[container], %w[row]],
|
45
|
+
# Ht.form(class: "col s6 offset-s3", action: "/#{@target}/login", method: "post", child: [
|
46
|
+
# Materialize.input(type: "text", name: "account", label: "User ID"),
|
47
|
+
# Materialize.input(type: "password", name: "password", label: "Password"),
|
48
|
+
# Ht.button(type: "submit", class: %w[btn], child: "login")
|
49
|
+
# ]))
|
50
|
+
# show_base_template(title: "Login", body: Html.convert(Materialize.convert([flash_area, form])))
|
51
|
+
# end
|
52
|
+
|
53
|
+
# def public_login_post
|
54
|
+
# mylog "public_login_post: #{@params.inspect}, #{@parsed_body}"
|
55
|
+
# warden.authenticate
|
56
|
+
# public_index_get
|
57
|
+
# end
|
58
58
|
|
59
59
|
#--------------------------------------------------------------------------------------------------------
|
60
60
|
# add new parts
|
61
|
-
def
|
61
|
+
def public_create_get
|
62
62
|
matrix = @column_set.map do |column|
|
63
63
|
[column.label, column.form]
|
64
64
|
end
|
65
|
-
matrix.push([Ht.button(child:
|
65
|
+
matrix.push([Ht.button(child: Message[:create_finish_button_label], class: %w[btn], event: "on=click:url=/#{@target}/create:with=form")])
|
66
66
|
tb = Ht::Table.new(matrix)
|
67
67
|
layout = main_layout(left: sidenav, center: Ht.form(child: tb.to_h))
|
68
|
-
|
68
|
+
show_base_template(title: Message[:create_page_title], body: Html.convert(Materialize.convert(layout)))
|
69
69
|
end
|
70
70
|
|
71
|
-
def
|
71
|
+
def public_create_post
|
72
72
|
@column_set.values = @event[:form]
|
73
|
-
@column_set[:id].value = @target_id = @column_set.
|
73
|
+
@column_set[:id].value = @target_id = @column_set.create
|
74
74
|
{ redirect: "/#{@target}/detail?id=#{@target_id}" }
|
75
75
|
end
|
76
76
|
|
77
77
|
#--------------------------------------------------------------------------------------------------------
|
78
78
|
# index parts
|
79
|
-
def
|
79
|
+
def public_index_get
|
80
80
|
data_a = @dataset.all
|
81
81
|
htb = make_index_table(data_a)
|
82
82
|
layout = index_layout(left: sidenav, center: Ht.form(child: htb))
|
83
|
-
|
83
|
+
show_base_template(title: Message[:index_page_title], body: Html.convert(Materialize.convert(layout)))
|
84
84
|
end
|
85
85
|
|
86
86
|
def make_index_table(data_a)
|
@@ -99,12 +99,12 @@ module Ezframe
|
|
99
99
|
table.make_table(data_a)
|
100
100
|
end
|
101
101
|
|
102
|
-
alias_method :
|
102
|
+
alias_method :public_default_get, :public_index_get
|
103
103
|
|
104
104
|
#--------------------------------------------------------------------------------------------------------
|
105
105
|
# search parts
|
106
106
|
def public_search_post
|
107
|
-
mylog "public_search_post: #{@
|
107
|
+
mylog "public_search_post: #{@parsed_body.inspect}"
|
108
108
|
word = @event[:form][:word]
|
109
109
|
pattern = "%#{word}%"
|
110
110
|
data_a = @dataset.where(Sequel.|(Sequel.like(:name_kana, pattern), Sequel.like(:name, pattern))).all
|
@@ -113,25 +113,25 @@ module Ezframe
|
|
113
113
|
|
114
114
|
#--------------------------------------------------------------------------------------------------------
|
115
115
|
# detail parts
|
116
|
-
def
|
117
|
-
mylog "
|
116
|
+
def public_detail_get
|
117
|
+
mylog "pubilc_detail_get: #{@request.params.inspect}"
|
118
118
|
@target_id ||= @request.params["id"]
|
119
119
|
data = @column_set.set_from_db(@target_id)
|
120
|
-
return
|
121
|
-
|
120
|
+
return show_base_template(title: "no data", body: "no customer data: #{@target_id}") unless data
|
121
|
+
show_base_template(title: Message[:index_page_title], body: Html.convert(make_detail_get))
|
122
122
|
end
|
123
123
|
|
124
|
-
def
|
124
|
+
def make_detail_get
|
125
125
|
layout = main_layout( left: sidenav, center: detail_table )
|
126
126
|
@request.env['rack.session'][@target] = @target_id
|
127
|
-
layout[:event] = "on=load:
|
127
|
+
layout[:event] = "on=load:command=set_global@target=#{@target_id}"
|
128
128
|
Materialize.convert(layout)
|
129
129
|
end
|
130
130
|
|
131
131
|
def public_detail_post
|
132
|
-
mylog "public_detail_post: #{@request.params.inspect}: #{@
|
133
|
-
if @
|
134
|
-
@target_id ||= @
|
132
|
+
mylog "public_detail_post: #{@request.params.inspect}: #{@parsed_body}"
|
133
|
+
if @parsed_body[:global]
|
134
|
+
@target_id ||= @parsed_body[:global][@target]
|
135
135
|
end
|
136
136
|
@column_set.set_from_db(@target_id)
|
137
137
|
case @event[:branch]
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require "mail"
|
2
|
+
|
3
|
+
module Ezframe
|
4
|
+
class Email
|
5
|
+
class << self
|
6
|
+
def receive
|
7
|
+
|
8
|
+
end
|
9
|
+
|
10
|
+
# options =
|
11
|
+
# :address => "smtp.server.host",
|
12
|
+
# :port => 1025,
|
13
|
+
# :user_name => login user,
|
14
|
+
# :password => login password,
|
15
|
+
# :authentication => 'plain',
|
16
|
+
# :ssl => true,
|
17
|
+
def setup_smtp(options)
|
18
|
+
Mail.defaults do
|
19
|
+
delivery_method :smtp, options
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def send(data)
|
24
|
+
mail = Mail.new do
|
25
|
+
from data[:mail_from]
|
26
|
+
to data[:mail_to]
|
27
|
+
subject data[:subject]
|
28
|
+
body data[:body]
|
29
|
+
end
|
30
|
+
mail.deliver!
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/lib/ezframe/ht.rb
CHANGED
@@ -57,6 +57,7 @@ module Ezframe
|
|
57
57
|
alias_method :footer, :wrap_tag
|
58
58
|
|
59
59
|
alias_method :small, :wrap_tag
|
60
|
+
alias_method :pre, :wrap_tag
|
60
61
|
|
61
62
|
alias_method :checkbox, :wrap_tag
|
62
63
|
alias_method :radio, :wrap_tag
|
@@ -88,6 +89,25 @@ module Ezframe
|
|
88
89
|
end
|
89
90
|
return child
|
90
91
|
end
|
92
|
+
|
93
|
+
def small_text(text)
|
94
|
+
return small(class: %w[teal-text], child: text)
|
95
|
+
end
|
96
|
+
|
97
|
+
def search(ht_h, opts)
|
98
|
+
@found ||= []
|
99
|
+
if ht_h.is_a?(Hash)
|
100
|
+
if opts[:tag] && ht_h[:tag] && ht_h[:tag] == opts[:tag]
|
101
|
+
@found.push(ht_h)
|
102
|
+
end
|
103
|
+
if ht_h[:child]
|
104
|
+
search(ht_h[:child], opts)
|
105
|
+
end
|
106
|
+
elsif ht_h.is_a?(Array)
|
107
|
+
ht_h.map { |h| search(h, opts) }
|
108
|
+
end
|
109
|
+
return @found
|
110
|
+
end
|
91
111
|
end
|
92
112
|
|
93
113
|
# 配列を<UL><OL>要素に変換するためのクラス
|
data/lib/ezframe/html.rb
CHANGED
@@ -4,6 +4,7 @@ module Ezframe
|
|
4
4
|
class Html
|
5
5
|
class << self
|
6
6
|
def convert(ht_h = {})
|
7
|
+
ht_h = hook_for_convert(ht_h)
|
7
8
|
return "" if ht_h.nil? || ht_h.to_s.empty?
|
8
9
|
return ht_h.to_html if ht_h.respond_to?(:to_html)
|
9
10
|
return ht_h.to_s if ht_h.is_a?(String) || ht_h.is_a?(Symbol) || ht_h.is_a?(Integer) || ht_h.is_a?(Time)
|
@@ -14,15 +15,16 @@ module Ezframe
|
|
14
15
|
when "input"
|
15
16
|
input(ht_h)
|
16
17
|
when "select"
|
17
|
-
return select(ht_h) if ht_h[:
|
18
|
+
return select(ht_h) if ht_h[:item]
|
18
19
|
when "icon"
|
19
20
|
tag = "i"
|
20
21
|
end
|
22
|
+
tag = ht_h[:tag]
|
21
23
|
opt_s, child_s = join_attributes(ht_h)
|
22
|
-
if child_s.
|
24
|
+
if !child_s.strip.empty? || %w[div span table tr td th textarea].include?(tag)
|
23
25
|
return "<#{ht_h[:tag]} #{opt_s}>\n#{child_s}\n</#{ht_h[:tag]}>\n"
|
24
26
|
end
|
25
|
-
"<#{ht_h[:tag]} #{opt_s}/>"
|
27
|
+
"<#{ht_h[:tag]} #{opt_s} />"
|
26
28
|
end
|
27
29
|
|
28
30
|
def join_attributes(attrs)
|
@@ -56,53 +58,59 @@ module Ezframe
|
|
56
58
|
if size && (size.index("x") || size.index("*"))
|
57
59
|
if /(\d+)\s*[x\*]\s*(\d+)/ =~ size
|
58
60
|
ht_h[:cols], ht_h[:rows] = $1, $2
|
61
|
+
ht_h.delete(:size)
|
59
62
|
end
|
60
63
|
ht_h[:tag] = "textarea"
|
61
64
|
ht_h[:child] = ht_h[:value]
|
62
65
|
ht_h.delete(:value)
|
63
|
-
p ht_h
|
64
66
|
end
|
65
67
|
end
|
66
68
|
|
67
69
|
def select(ht_h = {})
|
68
70
|
attr = ht_h.clone
|
69
|
-
|
70
|
-
# puts "Html.select: #{
|
71
|
-
if
|
72
|
-
option_a = ht_h[:
|
71
|
+
item = attr[:item]
|
72
|
+
# puts "Html.select: #{item}"
|
73
|
+
if item.is_a?(Hash)
|
74
|
+
option_a = ht_h[:item].map do |k, v|
|
73
75
|
h = { tag: "option", value: k }
|
74
76
|
if v.is_a?(Array)
|
75
77
|
v, selected = v
|
76
78
|
h[:selected] = "selected" if selected
|
77
79
|
end
|
78
80
|
h[:child] = v
|
79
|
-
|
81
|
+
# mylog "select: hash: k=#{k}, v=#{v}, value=#{ht_h[:value]}"
|
82
|
+
if ht_h[:value] && ht_h[:value].to_s == k.to_s
|
80
83
|
h[:selected] = "selected"
|
81
84
|
end
|
82
85
|
h
|
83
86
|
end
|
84
|
-
elsif
|
85
|
-
option_a =
|
87
|
+
elsif item.is_a?(Array)
|
88
|
+
option_a = item.map do |v|
|
86
89
|
h = { tag: "option", value: v[0], child: v[1] }
|
87
90
|
if %w[selected default].include?(v[2])
|
88
91
|
h[:selected] = "selected"
|
89
92
|
end
|
90
|
-
|
93
|
+
# mylog "select: array: v=#{v}, value=#{ht_h[:value]}"
|
94
|
+
if ht_h[:value] && ht_h[:value].to_s == v[0].to_s
|
91
95
|
h[:selected] = "selected"
|
92
96
|
end
|
93
97
|
# puts h.inspect
|
94
98
|
h
|
95
99
|
end
|
96
100
|
else
|
97
|
-
warn "unknown
|
101
|
+
warn "unknown item: #{ht_h.inspect}"
|
98
102
|
end
|
99
103
|
attr[:tag] = "select"
|
100
104
|
attr[:child] = option_a
|
101
105
|
attr[:name] ||= attr[:key]
|
102
106
|
attr[:final] = true
|
103
|
-
attr.delete(:
|
107
|
+
attr.delete(:item)
|
104
108
|
Html.convert(attr)
|
105
109
|
end
|
110
|
+
|
111
|
+
def hook_for_convert(ht_h)
|
112
|
+
return ht_h
|
113
|
+
end
|
106
114
|
end
|
107
115
|
end
|
108
116
|
end
|
data/lib/ezframe/loader.rb
CHANGED
@@ -3,9 +3,9 @@
|
|
3
3
|
if File.exist?("pages/common.rb")
|
4
4
|
require "#{Dir.pwd}/pages/common.rb"
|
5
5
|
end
|
6
|
-
Dir["models/*.rb"].each do |file|
|
6
|
+
Dir["models/*.rb"].sort.each do |file|
|
7
7
|
require "#{Dir.pwd}/#{file}"
|
8
8
|
end
|
9
|
-
Dir["pages/*.rb"].each do |file|
|
9
|
+
Dir["pages/*.rb"].sort.each do |file|
|
10
10
|
require "#{Dir.pwd}/#{file}"
|
11
11
|
end
|
data/lib/ezframe/materialize.rb
CHANGED
@@ -4,7 +4,6 @@ module Ezframe
|
|
4
4
|
class Materialize
|
5
5
|
class << self
|
6
6
|
def into_html_header
|
7
|
-
|
8
7
|
css_a = Config[:extra_css_list].map {|file| "<link href=\"#{file}\" rel=\"stylesheet\">\n" }
|
9
8
|
js_a = Config[:extra_js_list].map {|file| "<script src=\"#{file}\"></script>\n" }
|
10
9
|
|
@@ -27,11 +26,11 @@ module Ezframe
|
|
27
26
|
|
28
27
|
def convert(ht_h)
|
29
28
|
return nil unless ht_h
|
30
|
-
return ht_h if (ht_h.
|
29
|
+
return ht_h if (ht_h.is_a?(Hash) && ht_h[:final])
|
31
30
|
new_h = ht_h.clone
|
32
|
-
if ht_h.
|
31
|
+
if ht_h.is_a?(Array)
|
33
32
|
new_h = ht_h.map { |v| convert(v) }
|
34
|
-
elsif ht_h.
|
33
|
+
elsif ht_h.is_a?(Hash)
|
35
34
|
unless ht_h[:tag]
|
36
35
|
mylog("convert: no tag: #{ht_h.inspect}")
|
37
36
|
return nil
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Ezframe
|
2
|
+
class Message
|
3
|
+
class << self
|
4
|
+
def init
|
5
|
+
load_yaml_files
|
6
|
+
end
|
7
|
+
|
8
|
+
def load_yaml_files(dir = "./message")
|
9
|
+
unless @catalog
|
10
|
+
@catalog = {}
|
11
|
+
Dir["#{dir}/*.yml"].each do |file|
|
12
|
+
load_one_file(file)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def load_one_file(file)
|
18
|
+
begin
|
19
|
+
yaml = YAML.load_file(file)
|
20
|
+
rescue
|
21
|
+
mylog("YAML load error: #{file}")
|
22
|
+
return
|
23
|
+
end
|
24
|
+
if /([a-z]{2})\.yml$/ =~ file
|
25
|
+
lang = $1
|
26
|
+
@catalog[lang.to_sym] = yaml.recursively_symbolize_keys
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def languages
|
31
|
+
return @catalog.keys
|
32
|
+
end
|
33
|
+
|
34
|
+
def get(key, lang = nil)
|
35
|
+
lang = languages[0] unless lang
|
36
|
+
messages = @catalog[lang]
|
37
|
+
return messages[key.to_sym] if messages
|
38
|
+
return nil
|
39
|
+
end
|
40
|
+
|
41
|
+
def [](key)
|
42
|
+
return get(key)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/lib/ezframe/model.rb
CHANGED
data/lib/ezframe/page_base.rb
CHANGED
@@ -2,82 +2,69 @@
|
|
2
2
|
|
3
3
|
require "json"
|
4
4
|
require "uri"
|
5
|
-
|
6
5
|
require_relative "util"
|
7
6
|
|
8
7
|
module Ezframe
|
9
8
|
class PageBase
|
10
|
-
|
11
|
-
def decide_route(path_info)
|
12
|
-
default_class = Config[:default_page_class]||"App"
|
13
|
-
default_method = Config[:default_page_method]||"default"
|
14
|
-
path_parts = path_info.split('/').drop(1)
|
15
|
-
case path_parts.length
|
16
|
-
when 0
|
17
|
-
[get_class(default_class), default_method]
|
18
|
-
when 1
|
19
|
-
filename = path_parts[0]
|
20
|
-
if filename.index(".")
|
21
|
-
return nil
|
22
|
-
end
|
23
|
-
klass = get_class(path_parts)
|
24
|
-
if klass
|
25
|
-
return [klass, default_method]
|
26
|
-
else
|
27
|
-
return [get_class(default_class), path_parts[0]]
|
28
|
-
end
|
29
|
-
else
|
30
|
-
klass = get_class(path_parts)
|
31
|
-
if klass
|
32
|
-
[klass, default_method]
|
33
|
-
else
|
34
|
-
method = path_parts.pop
|
35
|
-
klass = get_class(path_parts)
|
36
|
-
[klass, method]
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
9
|
+
attr_accessor :auth, :request
|
40
10
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
return Object.const_get(klass)
|
47
|
-
end
|
48
|
-
return nil
|
49
|
-
end
|
11
|
+
def initialize(request = nil)
|
12
|
+
@class_snake = class_to_snake(self.class)
|
13
|
+
# puts "class_snake = #{@class_snake}"
|
14
|
+
set_request(request) if request
|
15
|
+
init_vars
|
50
16
|
end
|
51
17
|
|
52
|
-
|
18
|
+
def init_vars
|
19
|
+
end
|
53
20
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
@
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
21
|
+
# Rackのrequestを代入し、関連するインスタンス変数を定義
|
22
|
+
def set_request(request)
|
23
|
+
@request = request
|
24
|
+
@model = request.env["model"]
|
25
|
+
mylog "[WARN] model is not defined" unless @model
|
26
|
+
@column_set = @model.column_sets[@class_snake.to_sym]
|
27
|
+
# mylog "[WARN] column_set is not defined: #{@class_snake}" unless @column_set
|
28
|
+
if @column_set
|
29
|
+
@dataset = @column_set.dataset
|
30
|
+
end
|
31
|
+
@params = parse_query_string(request.env["QUERY_STRING"])
|
32
|
+
@params.update(request.params)
|
33
|
+
mylog "params=#{@params.inspect}" if @params.length > 0
|
34
|
+
# @id, @key = @params[:id], @params[:key]
|
35
|
+
@env = @request.env
|
36
|
+
@session = @env["rack.session"]
|
37
|
+
# mylog "session = #{@session.inspect}"
|
38
|
+
if %w[POST PUT].include?(request.request_method)
|
39
|
+
body = @request.body.read
|
40
|
+
if request.content_type.index("json")
|
41
|
+
@parsed_body = parse_json_body(body)
|
42
|
+
else
|
43
|
+
@parsed_body = parse_query_string(body)
|
68
44
|
end
|
45
|
+
# mylog "parsed_body=#{@parsed_body.inspect}"
|
46
|
+
@event = @parsed_body[:event] || {}
|
69
47
|
end
|
70
|
-
@auth = nil
|
71
48
|
end
|
72
49
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
50
|
+
# routeから基本URLを生成
|
51
|
+
def make_base_url(id = nil)
|
52
|
+
path = Route::get_path(@class_snake)
|
53
|
+
params = @request.env["url_params"]
|
54
|
+
# params[@class_snake.to_sym] = id
|
55
|
+
path_s = path.map do |pa|
|
56
|
+
if pa == @class_snake.to_sym && id
|
57
|
+
"#{pa}/#{id}"
|
58
|
+
elsif params[p]
|
59
|
+
"#{pa}/#{params[p]}"
|
60
|
+
else
|
61
|
+
pa
|
62
|
+
end
|
63
|
+
end.join("/")
|
64
|
+
return "/#{path_s}"
|
78
65
|
end
|
79
66
|
|
80
|
-
def
|
67
|
+
def show_base_template(opts = {})
|
81
68
|
args = {
|
82
69
|
title: opts[:title],
|
83
70
|
body: opts[:body],
|
@@ -87,17 +74,16 @@ module Ezframe
|
|
87
74
|
Template.fill("template/base.html", args)
|
88
75
|
end
|
89
76
|
|
90
|
-
def parse_json_body
|
91
|
-
body = @request.body.read
|
77
|
+
def parse_json_body(body)
|
92
78
|
return {} if !body || body.length==0
|
93
79
|
begin
|
94
|
-
|
80
|
+
json = JSON.parse(body)
|
95
81
|
rescue => e
|
96
82
|
mylog "ERROR: #{e.class}:#{e.message}\n#{e.backtrace}"
|
97
83
|
return nil
|
98
84
|
end
|
99
|
-
|
100
|
-
return
|
85
|
+
json = json.recursively_symbolize_keys if json.is_a?(Hash) || json.is_a?(Array)
|
86
|
+
return json
|
101
87
|
end
|
102
88
|
|
103
89
|
def warden
|