knjrbfw 0.0.23 → 0.0.24
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.
- data/VERSION +1 -1
- data/knjrbfw.gemspec +7 -4
- data/lib/knj/autoload.rb +1 -61
- data/lib/knj/datarow.rb +7 -10
- data/lib/knj/datarow_custom.rb +12 -2
- data/lib/knj/datet.rb +107 -0
- data/lib/knj/eruby.rb +21 -12
- data/lib/knj/gettext_threadded.rb +1 -1
- data/lib/knj/http2.rb +27 -9
- data/lib/knj/image.rb +10 -0
- data/lib/knj/includes/require_info.rb +3 -3
- data/lib/knj/knj.rb +16 -9
- data/lib/knj/knj_controller.rb +10 -1
- data/lib/knj/knjdb/drivers/mysql/knjdb_mysql.rb +26 -9
- data/lib/knj/knjdb/drivers/mysql/knjdb_mysql_columns.rb +11 -8
- data/lib/knj/knjdb/drivers/mysql/knjdb_mysql_indexes.rb +5 -0
- data/lib/knj/knjdb/drivers/mysql/knjdb_mysql_tables.rb +83 -26
- data/lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_tables.rb +3 -3
- data/lib/knj/knjdb/libknjdb.rb +19 -20
- data/lib/knj/knjdb/revision.rb +9 -2
- data/lib/knj/kvm.rb +100 -0
- data/lib/knj/locale_strings.rb +32 -3
- data/lib/knj/locales.rb +1 -4
- data/lib/knj/memory_analyzer.rb +335 -0
- data/lib/knj/objects/objects_sqlhelper.rb +2 -2
- data/lib/knj/objects.rb +44 -11
- data/lib/knj/opts.rb +8 -8
- data/lib/knj/os.rb +13 -0
- data/lib/knj/php.rb +18 -33
- data/lib/knj/process.rb +3 -0
- data/lib/knj/process_meta.rb +1 -1
- data/lib/knj/rhodes/mutex.rb +2 -1
- data/lib/knj/rhodes/rhodes.js +5 -1
- data/lib/knj/rhodes/rhodes.rb +15 -15
- data/lib/knj/rhodes/youtube_embed.erb +12 -0
- data/lib/knj/rhodes/youtube_open.erb +45 -0
- data/lib/knj/strings.rb +2 -1
- data/lib/knj/translations.rb +3 -3
- data/lib/knj/unix_proc.rb +15 -4
- data/lib/knj/web.rb +17 -247
- data/lib/knj/webscripts/image.rhtml +9 -3
- data/lib/knj/wref.rb +109 -70
- data/spec/datet_spec.rb +30 -0
- data/spec/http2_spec.rb +23 -0
- data/spec/php_spec.rb +3 -0
- metadata +20 -17
- data/lib/knj/rhodes/delegate.rb +0 -414
- data/lib/knj/rhodes/weakref.rb +0 -80
data/lib/knj/rhodes/rhodes.rb
CHANGED
@@ -15,6 +15,7 @@ class Knj::Rhodes
|
|
15
15
|
require "#{$knjpath}errors.rb"
|
16
16
|
require "#{$knjpath}gettext_threadded.rb"
|
17
17
|
require "#{$knjpath}locales.rb"
|
18
|
+
require "#{$knjpath}locale_strings.rb"
|
18
19
|
require "#{$knjpath}web.rb"
|
19
20
|
|
20
21
|
if !Kernel.const_defined?("Mutex")
|
@@ -22,11 +23,6 @@ class Knj::Rhodes
|
|
22
23
|
require "#{$knjpath}rhodes/mutex.rb"
|
23
24
|
end
|
24
25
|
|
25
|
-
if !Kernel.const_defined?("WeakRef")
|
26
|
-
print "WeakRef not defined - loading alternative.\n"
|
27
|
-
require "#{$knjpath}rhodes/weakref.rb"
|
28
|
-
end
|
29
|
-
|
30
26
|
require "#{$knjpath}opts.rb"
|
31
27
|
|
32
28
|
require "#{$knjpath}knjdb/libknjdb.rb"
|
@@ -43,7 +39,7 @@ class Knj::Rhodes
|
|
43
39
|
@db = Knj::Db.new(
|
44
40
|
:type => "sqlite3",
|
45
41
|
:subtype => "rhodes",
|
46
|
-
:path => "#{Rho::RhoApplication.
|
42
|
+
:path => "#{Rho::RhoApplication.get_user_path}rhodes_default.sqlite3",
|
47
43
|
:return_keys => "symbols",
|
48
44
|
:require => false
|
49
45
|
)
|
@@ -54,6 +50,7 @@ class Knj::Rhodes
|
|
54
50
|
schema = {"tables" => {}}
|
55
51
|
end
|
56
52
|
|
53
|
+
#Table used for options-module.
|
57
54
|
schema["tables"]["Option"] = {
|
58
55
|
"columns" => [
|
59
56
|
{"name" => "id", "type" => "int", "autoincr" => true, "primarykey" => true},
|
@@ -62,23 +59,26 @@ class Knj::Rhodes
|
|
62
59
|
]
|
63
60
|
}
|
64
61
|
|
62
|
+
#Run database-revision.
|
65
63
|
dbrev = Knj::Db::Revision.new
|
66
64
|
dbrev.init_db("schema" => schema, "db" => @db)
|
67
65
|
|
66
|
+
#Initialize options-module.
|
67
|
+
Knj::Opts.init(
|
68
|
+
"table" => "Option",
|
69
|
+
"knjdb" => @db
|
70
|
+
)
|
71
|
+
|
72
|
+
#Initialize objects-module.
|
68
73
|
@ob = Knj::Objects.new(
|
69
74
|
:db => @db,
|
70
75
|
:class_path => "#{Rho::RhoApplication.get_base_app_path}app/models",
|
71
76
|
:require => false,
|
72
77
|
:module => @args[:module],
|
73
|
-
:datarow => true
|
74
|
-
:cache => :none
|
75
|
-
)
|
76
|
-
|
77
|
-
Knj::Opts.init(
|
78
|
-
"table" => "Option",
|
79
|
-
"knjdb" => @db
|
78
|
+
:datarow => true
|
80
79
|
)
|
81
80
|
|
81
|
+
#Initialize locales.
|
82
82
|
@gettext = Knj::Gettext_threadded.new
|
83
83
|
@gettext.load_dir("#{Rho::RhoApplication.get_base_app_path}app/locales")
|
84
84
|
|
@@ -181,8 +181,8 @@ class Knj::Rhodes
|
|
181
181
|
end
|
182
182
|
|
183
183
|
#This method is used to emulate web-behavior and make Knj::Locales.number_out and friends work properly.
|
184
|
-
def _session
|
185
|
-
return $rhodes.
|
184
|
+
def _session
|
185
|
+
return {:locale => $rhodes.locale}
|
186
186
|
end
|
187
187
|
|
188
188
|
#This method is used to make gettext work.
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<div data-role="page">
|
2
|
+
<div data-role="header">
|
3
|
+
<h1><%=_"YouTube embedded"%></h1>
|
4
|
+
|
5
|
+
<a href="javascript: history.back(-1)" class="ui-btn-left" data-icon="back" data-back="true"><%=_("Back")%></a>
|
6
|
+
</div>
|
7
|
+
<div data-role="content">
|
8
|
+
<center>
|
9
|
+
<iframe width="100%" height="<%=@iframe_height%>px" src="http://www.youtube.com/embed/<%=@params["youtube_id"]%>" frameborder="0" allowfullscreen></iframe>
|
10
|
+
</center>
|
11
|
+
</div>
|
12
|
+
</div>
|
@@ -0,0 +1,45 @@
|
|
1
|
+
<div data-role="page">
|
2
|
+
<div data-role="header">
|
3
|
+
<h1><%=_"Open YouTube link"%></h1>
|
4
|
+
|
5
|
+
<a href="javascript: history.back(-1)" class="ui-btn-left" data-icon="back" data-back="true"><%=_("Back")%></a>
|
6
|
+
</div>
|
7
|
+
<div data-role="content">
|
8
|
+
<ul data-role="listview">
|
9
|
+
<%if System::get_property('platform') != "APPLE"%>
|
10
|
+
<li>
|
11
|
+
<a href="javascript: knj_rhodes_html_links({'url': 'vnd.youtube://<%=@params["youtube_id"]%>'})">
|
12
|
+
<h3><%=_"Open in built-in app. (VND)"%></h3>
|
13
|
+
<p><%=_"This will trigger the YouTube-app. in Android."%></p>
|
14
|
+
</a>
|
15
|
+
</li>
|
16
|
+
<%end%>
|
17
|
+
|
18
|
+
<%if System::get_property("platform") == "APPLE"%>
|
19
|
+
<li>
|
20
|
+
<a href="javascript: knj_rhodes_html_links({'url': iphone_str})">
|
21
|
+
<h3><%=_"Open in built-in app. (iPhone)"%></h3>
|
22
|
+
<p><%=_"This will trigger the YouTube-app. on iPhone."%></p>
|
23
|
+
</a>
|
24
|
+
</li>
|
25
|
+
<%end%>
|
26
|
+
|
27
|
+
<li>
|
28
|
+
<a href="javascript: knj_rhodes_html_links({'url': 'http://www.youtube.com/watch?v=<%=@params["youtube_id"]%>'})">
|
29
|
+
<h3><%=_"Open YouTube-URL"%></h3>
|
30
|
+
<p><%=_"This will open the YouTube-video in a browser."%></p>
|
31
|
+
</a>
|
32
|
+
</li>
|
33
|
+
<li>
|
34
|
+
<a href="<%=url_for(:action => :youtube_embed, :query => {:youtube_id => @params["youtube_id"]})%>">
|
35
|
+
<h3><%=_"Open YouTube embedded"%></h3>
|
36
|
+
<p><%=_"Watch the video in this app. using embedding from YouTube."%></p>
|
37
|
+
</a>
|
38
|
+
</li>
|
39
|
+
</ul>
|
40
|
+
|
41
|
+
<script>
|
42
|
+
var iphone_str = "[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@\"http://www.youtube.com/v/oHg5SJYRHA0&f=gdata_videos\"]]; "
|
43
|
+
</script>
|
44
|
+
</div>
|
45
|
+
</div>
|
data/lib/knj/strings.rb
CHANGED
@@ -110,6 +110,7 @@ module Knj::Strings
|
|
110
110
|
#Returns 'Yes' or 'No' based on a value. The value can be 0, 1, yes, no, true or false.
|
111
111
|
def self.yn_str(value, str_yes = "Yes", str_no = "No")
|
112
112
|
value = value.to_i if Knj::Php.is_numeric(value)
|
113
|
+
value_s = value.to_s
|
113
114
|
|
114
115
|
if value.is_a?(Integer)
|
115
116
|
if value == 0
|
@@ -119,7 +120,7 @@ module Knj::Strings
|
|
119
120
|
end
|
120
121
|
end
|
121
122
|
|
122
|
-
return str_no if !value or
|
123
|
+
return str_no if !value or value_s == "no" or value_s == "false" or value_s == ""
|
123
124
|
return str_yes
|
124
125
|
end
|
125
126
|
|
data/lib/knj/translations.rb
CHANGED
@@ -113,11 +113,11 @@ class Knj::Translations
|
|
113
113
|
"object_class" => obj.class.name
|
114
114
|
})
|
115
115
|
trans.each do |tran|
|
116
|
-
#Delete the translation object.
|
117
|
-
@ob.delete(tran)
|
118
|
-
|
119
116
|
#Delete the cache if defined on the object.
|
120
117
|
cache.delete(tran[:key].to_sym) if cache and cache.key?(tran[:key].to_sym)
|
118
|
+
|
119
|
+
#Delete the translation object.
|
120
|
+
@ob.delete(tran)
|
121
121
|
end
|
122
122
|
end
|
123
123
|
end
|
data/lib/knj/unix_proc.rb
CHANGED
@@ -12,7 +12,7 @@ class Knj::Unix_proc
|
|
12
12
|
begin
|
13
13
|
proc_ele = PROCS[pid]
|
14
14
|
proc_ele.update_data(data)
|
15
|
-
rescue
|
15
|
+
rescue Knj::Wref::Recycled
|
16
16
|
proc_ele = Knj::Unix_proc.new(data)
|
17
17
|
PROCS[pid] = proc_ele
|
18
18
|
end
|
@@ -30,7 +30,7 @@ class Knj::Unix_proc
|
|
30
30
|
end
|
31
31
|
|
32
32
|
MUTEX.synchronize do
|
33
|
-
ret = []
|
33
|
+
ret = [] unless block_given?
|
34
34
|
res = Knj::Os.shellcmd(cmdstr)
|
35
35
|
|
36
36
|
res.scan(/^(\S+)\s+([0-9]+)\s+([0-9.]+)\s+([0-9.]+)\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+ (.+)($|\n)/) do |match|
|
@@ -60,11 +60,22 @@ class Knj::Unix_proc
|
|
60
60
|
next if !found
|
61
61
|
end
|
62
62
|
|
63
|
-
|
63
|
+
proc_obj = Knj::Unix_proc.spawn(data)
|
64
|
+
|
65
|
+
if block_given?
|
66
|
+
yield(proc_obj)
|
67
|
+
else
|
68
|
+
ret << proc_obj
|
69
|
+
end
|
64
70
|
end
|
65
71
|
|
66
72
|
PROCS.clean
|
67
|
-
|
73
|
+
|
74
|
+
if block_given?
|
75
|
+
return nil
|
76
|
+
else
|
77
|
+
return ret
|
78
|
+
end
|
68
79
|
end
|
69
80
|
end
|
70
81
|
|
data/lib/knj/web.rb
CHANGED
@@ -1,213 +1,16 @@
|
|
1
1
|
class Knj::Web
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
@db = @args[:db] if @args[:db]
|
7
|
-
@args[:tmp] = "/tmp" if !@args[:tmp]
|
8
|
-
|
9
|
-
raise "No ID was given." if !@args[:id]
|
10
|
-
raise "No DB was given." if !@args[:db]
|
11
|
-
|
12
|
-
if @args[:cgi]
|
13
|
-
@cgi = @args[:cgi]
|
14
|
-
elsif $_CGI
|
15
|
-
@cgi = $_CGI
|
16
|
-
else
|
17
|
-
if ENV["HTTP_HOST"] or $knj_eruby or Knj::Php.class_exists("Apache")
|
18
|
-
@cgi = CGI.new
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
$_CGI = @cgi if !$_CGI
|
23
|
-
self.read_cgi
|
24
|
-
|
25
|
-
if $_FCGI
|
26
|
-
KnjEruby.connect("exit") do
|
27
|
-
@session.close
|
28
|
-
|
29
|
-
@post = nil
|
30
|
-
@get = nil
|
31
|
-
@server = nil
|
32
|
-
@cookie = nil
|
33
|
-
|
34
|
-
$_POST = nil
|
35
|
-
$_GET = nil
|
36
|
-
$_SERVER = nil
|
37
|
-
$_COOKIE = nil
|
38
|
-
end
|
39
|
-
else
|
40
|
-
Kernel.at_exit do
|
41
|
-
@session.close
|
42
|
-
|
43
|
-
@post = nil
|
44
|
-
@get = nil
|
45
|
-
@server = nil
|
46
|
-
@cookie = nil
|
47
|
-
|
48
|
-
$_POST = nil
|
49
|
-
$_GET = nil
|
50
|
-
$_SERVER = nil
|
51
|
-
$_COOKIE = nil
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
def read_cgi(args = {})
|
57
|
-
args.each do |key, value|
|
58
|
-
if key == :cgi
|
59
|
-
@cgi = value
|
60
|
-
else
|
61
|
-
raise "No such key: #{key.to_s}"
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
if $_FCGI_COUNT and $_FCGI and $_CGI
|
66
|
-
@server = {}
|
67
|
-
$_CGI.env_table.each do |key, value|
|
68
|
-
@server[key] = value
|
69
|
-
end
|
70
|
-
elsif $_CGI and ENV["HTTP_HOST"] and ENV["REMOTE_ADDR"]
|
71
|
-
@server = {}
|
72
|
-
ENV.each do |key, value|
|
73
|
-
@server[key] = value
|
74
|
-
end
|
75
|
-
elsif Knj::Php.class_exists("Apache")
|
76
|
-
@server = {
|
77
|
-
"HTTP_HOST" => Apache.request.hostname,
|
78
|
-
"HTTP_USER_AGENT" => Apache.request.headers_in["User-Agent"],
|
79
|
-
"REMOTE_ADDR" => Apache.request.remote_host(1),
|
80
|
-
"REQUEST_URI" => Apache.request.unparsed_uri
|
81
|
-
}
|
82
|
-
else
|
83
|
-
@server = {}
|
84
|
-
end
|
85
|
-
|
86
|
-
@files = {}
|
87
|
-
@post = {}
|
88
|
-
if @cgi and @cgi.request_method == "POST"
|
89
|
-
@cgi.params.each do |pair|
|
90
|
-
do_files = false
|
91
|
-
isstring = true
|
92
|
-
varname = pair[0]
|
93
|
-
stringparse = nil
|
94
|
-
|
95
|
-
if pair[1][0].class.name == "Tempfile"
|
96
|
-
if varname[0..3] == "file"
|
97
|
-
isstring = false
|
98
|
-
do_files = true
|
99
|
-
|
100
|
-
if pair[1][0].size > 0
|
101
|
-
stringparse = {
|
102
|
-
"name" => pair[1][0].original_filename,
|
103
|
-
"tmp_name" => pair[1][0].path,
|
104
|
-
"size" => pair[1][0].size,
|
105
|
-
"error" => 0
|
106
|
-
}
|
107
|
-
|
108
|
-
stringparse["name"] = pair[1][0].original_filename if pair[1][0].respond_to?("original_filename")
|
109
|
-
end
|
110
|
-
else
|
111
|
-
stringparse = File.read(pair[1][0].path)
|
112
|
-
end
|
113
|
-
elsif pair[1][0].is_a?(StringIO)
|
114
|
-
if varname[0..3] == "file"
|
115
|
-
tmpname = @args[:tmp] + "/knj_web_upload_#{Time.now.to_f.to_s}_#{rand(1000).to_s.untaint}"
|
116
|
-
isstring = false
|
117
|
-
do_files = true
|
118
|
-
cont = pair[1][0].string
|
119
|
-
Knj::Php.file_put_contents(tmpname, cont.to_s)
|
120
|
-
|
121
|
-
if cont.length > 0
|
122
|
-
stringparse = {
|
123
|
-
"tmp_name" => tmpname,
|
124
|
-
"size" => cont.length,
|
125
|
-
"error" => 0
|
126
|
-
}
|
127
|
-
|
128
|
-
stringparse["name"] = pair[1][0].original_filename if pair[1][0].respond_to?("original_filename")
|
129
|
-
end
|
130
|
-
else
|
131
|
-
stringparse = pair[1][0].string
|
132
|
-
end
|
133
|
-
else
|
134
|
-
stringparse = pair[1][0]
|
135
|
-
end
|
136
|
-
|
137
|
-
if stringparse
|
138
|
-
if !do_files
|
139
|
-
if isstring
|
140
|
-
Knj::Web.parse_name(@post, varname, stringparse)
|
141
|
-
else
|
142
|
-
@post[varname] = stringparse
|
143
|
-
end
|
144
|
-
else
|
145
|
-
if isstring
|
146
|
-
Knj::Web.parse_name(@files, varname, stringparse)
|
147
|
-
else
|
148
|
-
@files[varname] = stringparse
|
149
|
-
end
|
150
|
-
end
|
151
|
-
end
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
|
-
|
156
|
-
if @cgi and @cgi.query_string
|
157
|
-
@get = Knj::Web.parse_urlquery(@cgi.query_string)
|
158
|
-
else
|
159
|
-
@get = {}
|
160
|
-
end
|
2
|
+
#Parses URI and returns hash with data.
|
3
|
+
def self.parse_uri(str)
|
4
|
+
uri_match = str.to_s.match(/^\/(.+?\..+?|)(\?(.+)|)$/)
|
5
|
+
raise "Could not parse the URI: '#{str}'." if !uri_match
|
161
6
|
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
end
|
167
|
-
end
|
168
|
-
|
169
|
-
self.global_params if @args[:globals]
|
170
|
-
|
171
|
-
if @cookie[@args[:id]] and (sdata = @args[:db].single(:sessions, :id => @cookie[@args[:id]]))
|
172
|
-
@data = Knj::ArrayExt.hash_sym(sdata)
|
173
|
-
|
174
|
-
if @data
|
175
|
-
if @data[:user_agent] != @server["HTTP_USER_AGENT"] or @data[:ip] != @server["REMOTE_ADDR"]
|
176
|
-
@data = nil
|
177
|
-
else
|
178
|
-
@db.update(:sessions, {"last_url" => @server["REQUEST_URI"].to_s, "date_active" => Time.new}, {"id" => @data[:id]})
|
179
|
-
session_id = @args[:id] + "_" + @data[:id]
|
180
|
-
end
|
181
|
-
end
|
182
|
-
end
|
183
|
-
|
184
|
-
if !@data or !session_id
|
185
|
-
@db.insert(:sessions,
|
186
|
-
:date_start => Time.new,
|
187
|
-
:date_active => Time.new,
|
188
|
-
:user_agent => @server["HTTP_USER_AGENT"],
|
189
|
-
:ip => @server["REMOTE_ADDR"],
|
190
|
-
:last_url => @server["REQUEST_URI"].to_s
|
191
|
-
)
|
192
|
-
|
193
|
-
@data = Knj::ArrayExt.hash_sym(@db.single(:sessions, :id => @db.last_id))
|
194
|
-
session_id = @args[:id] + "_" + @data[:id]
|
195
|
-
Knj::Php.setcookie(@args[:id], @data[:id])
|
196
|
-
end
|
197
|
-
|
198
|
-
require "cgi/session"
|
199
|
-
require "cgi/session/pstore"
|
200
|
-
@session = CGI::Session.new(@session, "database_manager" => CGI::Session::PStore, "session_id" => session_id, "session_path" => @args[:tmp])
|
201
|
-
end
|
202
|
-
|
203
|
-
def [](key)
|
204
|
-
return @session[key.to_sym]
|
205
|
-
end
|
206
|
-
|
207
|
-
def []=(key, value)
|
208
|
-
return @session[key.to_sym] = value
|
7
|
+
return {
|
8
|
+
:path => "/#{uri_match[1]}",
|
9
|
+
:query => uri_match[3]
|
10
|
+
}
|
209
11
|
end
|
210
12
|
|
13
|
+
#Parses cookies-string and returns hash with parsed cookies.
|
211
14
|
def self.parse_cookies(str)
|
212
15
|
ret = {}
|
213
16
|
|
@@ -356,22 +159,6 @@ class Knj::Web
|
|
356
159
|
end
|
357
160
|
end
|
358
161
|
|
359
|
-
def global_params
|
360
|
-
$_POST = @post
|
361
|
-
$_GET = @get
|
362
|
-
$_COOKIE = @cookie
|
363
|
-
$_FILES = @files
|
364
|
-
$_SERVER = @server
|
365
|
-
end
|
366
|
-
|
367
|
-
def destroy
|
368
|
-
@cgi = nil
|
369
|
-
@post = nil
|
370
|
-
@get = nil
|
371
|
-
@session = nil
|
372
|
-
@args = nil
|
373
|
-
end
|
374
|
-
|
375
162
|
def self.require_eruby(filepath)
|
376
163
|
cont = File.read(filepath).untaint
|
377
164
|
parse = Erubis.Eruby.new(cont)
|
@@ -722,13 +509,8 @@ class Knj::Web
|
|
722
509
|
return html
|
723
510
|
end
|
724
511
|
|
725
|
-
def self.rendering_engine
|
726
|
-
|
727
|
-
servervar = _server
|
728
|
-
rescue Exception
|
729
|
-
servervar = $_SERVER
|
730
|
-
end
|
731
|
-
|
512
|
+
def self.rendering_engine(servervar = nil)
|
513
|
+
servervar = _server if !servervar
|
732
514
|
if !servervar
|
733
515
|
raise "Could not figure out meta data."
|
734
516
|
end
|
@@ -749,13 +531,8 @@ class Knj::Web
|
|
749
531
|
end
|
750
532
|
end
|
751
533
|
|
752
|
-
def self.os
|
753
|
-
|
754
|
-
servervar = _server
|
755
|
-
rescue Exception
|
756
|
-
servervar = $_SERVER
|
757
|
-
end
|
758
|
-
|
534
|
+
def self.os(servervar = nil)
|
535
|
+
servervar = _server if !servervar
|
759
536
|
if !servervar
|
760
537
|
raise "Could not figure out meta data."
|
761
538
|
end
|
@@ -778,14 +555,7 @@ class Knj::Web
|
|
778
555
|
end
|
779
556
|
|
780
557
|
def self.browser(servervar = nil)
|
781
|
-
if !servervar
|
782
|
-
begin
|
783
|
-
servervar = _server
|
784
|
-
rescue Exception => e
|
785
|
-
servervar = $_SERVER
|
786
|
-
end
|
787
|
-
end
|
788
|
-
|
558
|
+
servervar = _server if !servervar
|
789
559
|
raise "Could not figure out meta data." if !servervar
|
790
560
|
agent = servervar["HTTP_USER_AGENT"].to_s.downcase
|
791
561
|
|
@@ -923,10 +693,10 @@ class Knj::Web
|
|
923
693
|
end
|
924
694
|
|
925
695
|
def self.locale(args = {})
|
926
|
-
|
696
|
+
if args[:servervar]
|
697
|
+
servervar = args[:servervar]
|
698
|
+
else
|
927
699
|
servervar = _server
|
928
|
-
rescue Exception
|
929
|
-
servervar = $_SERVER
|
930
700
|
end
|
931
701
|
|
932
702
|
if !servervar
|
@@ -26,6 +26,12 @@
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
+
#Base64-encoding of path.
|
30
|
+
if _get["path64"]
|
31
|
+
require "base64"
|
32
|
+
_get["path"] = Base64.decode64(_get["path64"])
|
33
|
+
end
|
34
|
+
|
29
35
|
|
30
36
|
idstr = Digest::MD5.hexdigest("#{_get["path"]}_#{_get["smartsize"].to_i}_#{_get["width"].to_i}_#{_get["height"].to_i}_#{_get["maxwidth"].to_i}_#{_get["maxheight"].to_i}_#{_get["rounded_corners"].to_i}_#{_get["border"].to_i}_#{_get["border_color"]}")
|
31
37
|
|
@@ -38,9 +44,9 @@
|
|
38
44
|
|
39
45
|
tmp_use = false
|
40
46
|
tmp_write = false
|
41
|
-
if
|
47
|
+
if Knj::CONFIG["webscripts_image"]
|
42
48
|
tmp_use = true
|
43
|
-
tmp_path = "#{
|
49
|
+
tmp_path = "#{Knj::CONFIG["webscripts_image"]["tmp_path"]}/#{idstr}"
|
44
50
|
tmp_exists = File.exists?(tmp_path)
|
45
51
|
tmp_write = true if !tmp_exists
|
46
52
|
|
@@ -167,7 +173,7 @@
|
|
167
173
|
if tmp_use and !force
|
168
174
|
_kas.header("Last-Modified", "#{time_orig.httpdate} GMT") if time_orig
|
169
175
|
_kas.header("Content-Type", "image/png")
|
170
|
-
_httpsession.force_content(File.
|
176
|
+
_httpsession.force_content(File.read(tmp_path))
|
171
177
|
else
|
172
178
|
_kas.header("Last-Modified", "#{time_orig.httpdate} GMT") if time_orig
|
173
179
|
_kas.header("Content-Type", "image/png")
|