rsence-pre 2.3.0.25 → 2.3.0.26
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/VERSION +1 -1
- data/conf/default_conf.yaml +4 -0
- data/js/controls/textcontrol/textcontrol.coffee +1 -1
- data/lib/rsence/msg.rb +15 -0
- data/lib/rsence/plugins/gui_plugin.rb +8 -2
- data/lib/rsence/plugins/plugin.rb +1 -1
- data/lib/rsence/plugins/plugin_localization.rb +153 -0
- data/lib/rsence/sessionmanager.rb +3 -7
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5961f0e8e0436d16a623ab61bd03408378ef18c5
|
4
|
+
data.tar.gz: 748f84c78b21acd52ffc24a1df92d40c4be29821
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d980561d4bed3accd01ad93ba47ed42e3545460304f07f37eb5cdd28277b3b7f7fd06ffb08ce421faceca7ed0fce71805daacbf29a3c31431254633c8cd402ec
|
7
|
+
data.tar.gz: ea1b4fbfbe85efc1a9449e4ca48e2d49178784fee6dcb41ee7c104b85cb4d3ce87a217a534c18e2b66d1518700ae5f80bd3b476737f126b7d89e9f40bf8b9511
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.3.0.
|
1
|
+
2.3.0.26.pre
|
data/conf/default_conf.yaml
CHANGED
data/lib/rsence/msg.rb
CHANGED
@@ -171,6 +171,14 @@ module RSence
|
|
171
171
|
@session[:user_info]
|
172
172
|
end
|
173
173
|
|
174
|
+
# Getter for the user language
|
175
|
+
# @return [Hash] The current user language. Returns RSence.config[:lang] by default
|
176
|
+
def lang
|
177
|
+
uinfo = user_info
|
178
|
+
uinfo[:lang] = RSence.config[:lang] unless uinfo.has_key? :lang
|
179
|
+
uinfo[:lang]
|
180
|
+
end
|
181
|
+
|
174
182
|
# @private used for automatic reload of page, when the plugins have been changed.
|
175
183
|
def refresh_page?( plugin_incr )
|
176
184
|
if plugin_incr != @session[:plugin_incr]
|
@@ -195,6 +203,13 @@ module RSence
|
|
195
203
|
@session[:user_info] = user_info
|
196
204
|
end
|
197
205
|
|
206
|
+
# Setter for the user language
|
207
|
+
# @param [String] lang The language to set. Use in login situations to store the user language.
|
208
|
+
# @return [nil]
|
209
|
+
def lang=(lang)
|
210
|
+
@session[:user_info][:lang] = lang
|
211
|
+
end
|
212
|
+
|
198
213
|
# Returns the session id
|
199
214
|
# @return [Number]
|
200
215
|
def ses_id
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# Interface for handling localized strings
|
2
|
+
require 'rsence/plugins/plugin_localization'
|
1
3
|
|
2
4
|
module RSence
|
3
5
|
module Plugins
|
@@ -16,6 +18,8 @@ module RSence
|
|
16
18
|
# * {#gui_params +#gui_params+} -- Extend to define your own params for the gui data.
|
17
19
|
#
|
18
20
|
class GUIPlugin__ < Plugin__
|
21
|
+
|
22
|
+
include Localization
|
19
23
|
|
20
24
|
# @private Class type identifier for the PluginManager.
|
21
25
|
# @return [:GUIPlugin]
|
@@ -28,7 +32,7 @@ module RSence
|
|
28
32
|
super
|
29
33
|
yaml_src = false
|
30
34
|
[ "#{@name}.yaml", 'gui.yaml',
|
31
|
-
"gui/#{@name}.yaml",
|
35
|
+
"gui/#{@name}.yaml", 'gui/main.yaml'
|
32
36
|
].each do |yaml_name|
|
33
37
|
yaml_src = file_read( yaml_name )
|
34
38
|
break if yaml_src
|
@@ -68,7 +72,9 @@ module RSence
|
|
68
72
|
#
|
69
73
|
def gui_params( msg )
|
70
74
|
return unless @gui
|
71
|
-
|
75
|
+
params = super
|
76
|
+
params[:values] = @gui.values( get_ses( msg ) )
|
77
|
+
params
|
72
78
|
end
|
73
79
|
|
74
80
|
# @private Method that implements +client_pkgs.yaml+ loading
|
@@ -498,7 +498,7 @@ module RSence
|
|
498
498
|
end
|
499
499
|
return values_clean unless values_clean.empty?
|
500
500
|
else
|
501
|
-
warn "Unsupported format of values.yaml, got: #{values_dirty.inspect}, expected Hash or Array."
|
501
|
+
warn "Unsupported format of #{bundle_path('values.yaml')}, got: #{values_dirty.inspect}, expected Hash or Array."
|
502
502
|
end
|
503
503
|
return false
|
504
504
|
end
|
@@ -0,0 +1,153 @@
|
|
1
|
+
module RSence
|
2
|
+
module Plugins
|
3
|
+
module Localization
|
4
|
+
def read_strings( fn='strings.yaml' )
|
5
|
+
yaml_read( fn )
|
6
|
+
end
|
7
|
+
def fill_strs_raw_path( hash, path, val )
|
8
|
+
key = path.shift
|
9
|
+
if path.empty?
|
10
|
+
hash[key] = val
|
11
|
+
else
|
12
|
+
hash[key] = {} unless hash.has_key? key
|
13
|
+
fill_strs_raw_path( hash[key], path, val )
|
14
|
+
end
|
15
|
+
end
|
16
|
+
def parse_strs_raw( hash_out, hash_node_in, path )
|
17
|
+
hash_node_in.each do |key,val|
|
18
|
+
if val.class == Hash
|
19
|
+
child_path = path.dup
|
20
|
+
child_path.push( key )
|
21
|
+
parse_strs_raw( hash_out, val, child_path )
|
22
|
+
else
|
23
|
+
out_path = path.dup
|
24
|
+
out_path.unshift( key )
|
25
|
+
fill_strs_raw_path( hash_out, out_path, val )
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
def deep_merge_hash( src, tgt={} )
|
30
|
+
src.each do |key,val|
|
31
|
+
if val.class == Hash
|
32
|
+
tgt[key] = {} unless tgt.has_key? key and tgt[key].class == Hash
|
33
|
+
deep_merge_hash( src[key], tgt[key] )
|
34
|
+
else
|
35
|
+
if [String,Array].include? val.class
|
36
|
+
dupval = val.dup
|
37
|
+
else
|
38
|
+
dupval = val
|
39
|
+
end
|
40
|
+
tgt[key] = dupval unless tgt.has_key? key and tgt[key].class == val.class
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
def process_localized_strings( str_hash )
|
45
|
+
langs = str_hash.keys.sort { |a,b| (a > b) ? ( ( a.length > b.length ) ? 1 : -1 ) : -1 }
|
46
|
+
default_lang = RSence.config[:lang]
|
47
|
+
if langs.include? default_lang
|
48
|
+
default_hash = deep_merge_hash( str_hash[default_lang] )
|
49
|
+
else
|
50
|
+
warn "Warning in #{bundle_path} #process_localized_strings: No default language in localized, using '#{langs.first}' instead"
|
51
|
+
default_hash = deep_merge_hash( str_hash[langs.first] )
|
52
|
+
end
|
53
|
+
langs.each do |lang|
|
54
|
+
# create a new copy of the default hash
|
55
|
+
base_hash = deep_merge_hash( default_hash )
|
56
|
+
if lang.length == 5 and langs.include? lang[0..1]
|
57
|
+
# create a base of extended language from the base languge (eg. 'en' for 'en-US')
|
58
|
+
base_hash = deep_merge_hash( str_hash[lang[0..1]], base_hash )
|
59
|
+
end
|
60
|
+
# finally complete the language hash with the base
|
61
|
+
deep_merge_hash( base_hash, str_hash[lang] )
|
62
|
+
end
|
63
|
+
end
|
64
|
+
def read_localized_strings( fn='localized.yaml' )
|
65
|
+
strs_raw = read_strings( fn )
|
66
|
+
return nil unless strs_raw
|
67
|
+
str_hash = {}
|
68
|
+
if strs_raw
|
69
|
+
parse_strs_raw( str_hash, strs_raw, [] )
|
70
|
+
end
|
71
|
+
process_localized_strings( str_hash )
|
72
|
+
str_hash
|
73
|
+
end
|
74
|
+
def init_strings
|
75
|
+
[ 'strings.yaml', 'gui/strings.yaml' ].each do |yaml_name|
|
76
|
+
strs = read_strings( yaml_name )
|
77
|
+
@strings = strs
|
78
|
+
break if strs
|
79
|
+
end
|
80
|
+
end
|
81
|
+
def init_localized_strings
|
82
|
+
[ 'localized.yaml', 'gui/localized.yaml' ].each do |yaml_name|
|
83
|
+
strs = read_localized_strings( yaml_name )
|
84
|
+
@localized_strings = strs
|
85
|
+
break if strs
|
86
|
+
end
|
87
|
+
end
|
88
|
+
def init
|
89
|
+
super
|
90
|
+
init_strings
|
91
|
+
init_localized_strings
|
92
|
+
end
|
93
|
+
def gui_params( msg )
|
94
|
+
params = {}
|
95
|
+
if @strings
|
96
|
+
params[:strings] = strings()
|
97
|
+
end
|
98
|
+
if @localized_strings
|
99
|
+
params[:localized] = localized_strings( msg )
|
100
|
+
end
|
101
|
+
params
|
102
|
+
end
|
103
|
+
def strings_params_search( arr_path, params )
|
104
|
+
if arr_path.class == String
|
105
|
+
arr_path = arr_path.split('.')
|
106
|
+
elsif arr_path.class != Array
|
107
|
+
warn "Warning in #{bundle_path} #strings_params_search: Invalid string_path class #{arr_path.class.to_s}"
|
108
|
+
return nil
|
109
|
+
end
|
110
|
+
item = arr_path.shift
|
111
|
+
if params.class == Hash
|
112
|
+
if params.has_key?( item )
|
113
|
+
if arr_path.size == 0
|
114
|
+
return params[item]
|
115
|
+
else
|
116
|
+
return strings_params_search( arr_path, params[ item ] )
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
''
|
121
|
+
end
|
122
|
+
def strings( string_path=nil )
|
123
|
+
return nil unless @strings
|
124
|
+
return @strings if string_path.nil?
|
125
|
+
strings_params_search( arr_path.dup, @strings )
|
126
|
+
end
|
127
|
+
def localized_strings( msg, string_path=nil )
|
128
|
+
return nil unless @localized_strings
|
129
|
+
if msg.class == String
|
130
|
+
lang = msg
|
131
|
+
else
|
132
|
+
lang = msg.lang
|
133
|
+
end
|
134
|
+
default_lang = RSence.config[:lang]
|
135
|
+
if @localized_strings.has_key?( lang )
|
136
|
+
search_obj = @localized_strings[lang]
|
137
|
+
elsif lang.length == 5 and lang[2] == '-' and @localized_strings.has_key?( lang[0..1] )
|
138
|
+
warn "Warning in #{bundle_path} #localized_strings: No '#{lang}' language, using variant '#{lang[0..1]}' instead" if RSence.args[:verbose]
|
139
|
+
lang = lang[0..1]
|
140
|
+
search_obj = @localized_strings[lang]
|
141
|
+
elsif @localized_strings.has_key?( default_lang )
|
142
|
+
warn "Warning in #{bundle_path} #localized_strings: No '#{lang}' language, using default '#{default_lang}' instead" if RSence.args[:verbose]
|
143
|
+
search_obj = @localized_strings[lang]
|
144
|
+
else
|
145
|
+
warn "Error in #{bundle_path} #localized_strings: No '#{lang}' language, no default '#{default_lang}' either"
|
146
|
+
return nil
|
147
|
+
end
|
148
|
+
return search_obj if string_path.nil?
|
149
|
+
strings_params_search( string_path, search_obj )
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
@@ -90,7 +90,9 @@ module RSence
|
|
90
90
|
:_msg_unused => true,
|
91
91
|
|
92
92
|
# user info, map to your own user management code
|
93
|
-
:user_info => {
|
93
|
+
:user_info => {
|
94
|
+
:lang => RSence.config[:lang]
|
95
|
+
},
|
94
96
|
|
95
97
|
# sequence number of session, incremented by each restore
|
96
98
|
:ses_seq => 0,
|
@@ -130,9 +132,6 @@ module RSence
|
|
130
132
|
end
|
131
133
|
|
132
134
|
def refresh_ses( msg, ses_data, ses_id, ses_key, ses_seed )
|
133
|
-
## Perform old-session cleanup before extending another
|
134
|
-
# expire_sessions
|
135
|
-
|
136
135
|
# new time-out
|
137
136
|
ses_data[:timeout] = Time.now.to_i + @config[:timeout_secs]
|
138
137
|
|
@@ -238,9 +237,6 @@ module RSence
|
|
238
237
|
### Returns the current session data, if the session is valid.
|
239
238
|
### Otherwise stops the client and returns false.
|
240
239
|
def check_ses( msg, ses_key, ses_seed=false )
|
241
|
-
|
242
|
-
## Perform old-session cleanup while checking for another
|
243
|
-
# expire_sessions
|
244
240
|
|
245
241
|
# first, check if the session key exists (sync)
|
246
242
|
if @session_keys.has_key?( ses_key )
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rsence-pre
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.3.0.
|
4
|
+
version: 2.3.0.26
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Riassence Inc.
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-05-
|
12
|
+
date: 2013-05-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rsence-deps
|
@@ -72,6 +72,7 @@ files:
|
|
72
72
|
- lib/rsence/plugins/guiparser.rb
|
73
73
|
- lib/rsence/plugins/plugin.rb
|
74
74
|
- lib/rsence/plugins/plugin_base.rb
|
75
|
+
- lib/rsence/plugins/plugin_localization.rb
|
75
76
|
- lib/rsence/plugins/plugin_plugins.rb
|
76
77
|
- lib/rsence/plugins/plugin_sqlite_db.rb
|
77
78
|
- lib/rsence/plugins/servlet.rb
|