ezframe 0.0.4 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|