zena 1.2.4 → 1.2.5
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +18 -0
- data/app/controllers/nodes_controller.rb +11 -6
- data/app/controllers/sites_controller.rb +3 -2
- data/app/controllers/user_sessions_controller.rb +1 -1
- data/app/controllers/virtual_classes_controller.rb +3 -2
- data/app/models/document.rb +2 -2
- data/app/models/node.rb +6 -1
- data/app/models/note.rb +3 -27
- data/app/models/role.rb +11 -5
- data/app/models/site.rb +140 -43
- data/app/models/string_hash.rb +2 -0
- data/app/models/user.rb +9 -4
- data/app/models/user_session.rb +1 -1
- data/app/models/virtual_class.rb +49 -18
- data/app/views/sites/_form.erb +7 -4
- data/app/views/sites/_li.erb +15 -9
- data/app/views/users/_li.rhtml +3 -0
- data/app/views/users/index.rhtml +1 -1
- data/app/views/virtual_classes/_form.erb +1 -1
- data/bricks/acls/zena/init.rb +1 -2
- data/bricks/acls/zena/test/sites/erebus/roles.yml +4 -0
- data/bricks/activity/lib/bricks/activity.rb +24 -0
- data/bricks/activity/zena/migrate/20130711135905_add_activity_to_user.rb +9 -0
- data/bricks/activity/zena/test/integration/activity_integration_test.rb +29 -0
- data/bricks/captcha/zena/init.rb +0 -3
- data/bricks/fs_skin/lib/bricks/fs_skin.rb +3 -3
- data/bricks/fs_skin/zena/skins/blog/Node.zafu +1 -1
- data/bricks/fs_skin/zena/tasks.rb +2 -2
- data/bricks/fs_skin/zena/test/integration/fs_skin_integration_test.rb +2 -2
- data/bricks/fs_skin/zena/test/unit/fs_skin_test.rb +1 -1
- data/bricks/math/zena/init.rb +0 -3
- data/bricks/pdf/zena/init.rb +1 -5
- data/bricks/worker/zena/init.rb +0 -2
- data/bricks/zena/zena/migrate/20130617164527_add_master_id_to_site.rb +13 -0
- data/bricks/zena/zena/migrate/20130712081512_alter_login_users.rb +9 -0
- data/config/bricks.yml +4 -1
- data/lib/bricks/loader.rb +17 -9
- data/lib/tasks/zena.rake +40 -5
- data/lib/zafu/process/ruby_less_processing.rb +3 -5
- data/lib/zena.rb +2 -0
- data/lib/zena/acts/secure.rb +11 -2
- data/lib/zena/console.rb +5 -4
- data/lib/zena/core_ext/string.rb +2 -2
- data/lib/zena/deploy.rb +22 -6
- data/lib/zena/deploy/logrotate_app.rhtml +10 -7
- data/lib/zena/deploy/logrotate_host.rhtml +21 -26
- data/lib/zena/deploy/vhost.rhtml +3 -3
- data/lib/zena/foxy_parser.rb +1 -1
- data/lib/zena/info.rb +1 -1
- data/lib/zena/site_worker.rb +2 -2
- data/lib/zena/use.rb +0 -1
- data/lib/zena/use/ancestry.rb +1 -1
- data/lib/zena/use/authlogic.rb +2 -1
- data/lib/zena/use/display.rb +6 -0
- data/lib/zena/use/query_builder.rb +1 -1
- data/lib/zena/use/query_node.rb +3 -3
- data/lib/zena/use/rendering.rb +47 -13
- data/lib/zena/use/test_helper.rb +1 -1
- data/lib/zena/use/urls.rb +6 -104
- data/lib/zena/use/zafu_safe_definitions.rb +9 -4
- data/lib/zena/use/zafu_templates.rb +1 -0
- data/locale/app.pot +4 -0
- data/locale/de/LC_MESSAGES/zena.mo +0 -0
- data/locale/de/zena.po +6 -2
- data/locale/en/LC_MESSAGES/zena.mo +0 -0
- data/locale/en/zena.po +6 -2
- data/locale/fr/LC_MESSAGES/zena.mo +0 -0
- data/locale/fr/zena.po +5 -1
- data/locale/it/LC_MESSAGES/zena.mo +0 -0
- data/locale/it/zena.po +6 -2
- data/locale/zena.pot +4 -0
- data/test/functional/nodes_controller_test.rb +2 -133
- data/test/functional/sites_controller_test.rb +1 -1
- data/test/integration/multiple_hosts_test.rb +2 -1
- data/test/integration/navigation_test.rb +37 -0
- data/test/integration/query_node/basic.yml +1 -1
- data/test/integration/zafu_compiler/ajax.yml +7 -0
- data/test/integration/zafu_compiler/comments.yml +2 -2
- data/test/integration/zafu_compiler/context.yml +6 -2
- data/test/integration/zafu_compiler/display.yml +16 -4
- data/test/integration/zafu_compiler/forms.yml +1 -0
- data/test/integration/zafu_compiler/query.yml +7 -1
- data/test/integration/zafu_compiler/relations.yml +12 -7
- data/test/integration/zafu_compiler/roles.yml +3 -3
- data/test/integration/zafu_compiler/rubyless.yml +1 -2
- data/test/integration/zafu_compiler/safe_definitions.yml +5 -0
- data/test/sites/complex/roles.yml +1 -1
- data/test/sites/ocean/roles.yml +4 -0
- data/test/sites/zena/columns.yml +3 -1
- data/test/sites/zena/roles.yml +5 -1
- data/test/sites/zena/sites.yml +22 -0
- data/test/unit/document_test.rb +14 -0
- data/test/unit/node_test.rb +14 -0
- data/test/unit/role_test.rb +19 -4
- data/test/unit/site_test.rb +67 -0
- data/test/unit/user_test.rb +20 -0
- data/test/unit/virtual_class_test.rb +116 -11
- data/test/unit/zena/use/rendering_test.rb +1 -1
- data/zena.gemspec +67 -66
- metadata +126 -125
- data/bricks/fs_skin/zena/init.rb +0 -1
- data/bricks/grid/zena/init.rb +0 -4
- data/bricks/single/zena/init.rb +0 -1
- data/bricks/spreadsheet/zena/init.rb +0 -3
data/lib/zena/use/ancestry.rb
CHANGED
@@ -10,7 +10,7 @@ module Zena
|
|
10
10
|
TITLE_ML_JOIN = %Q{INNER JOIN idx_nodes_ml_strings AS id1 ON id1.node_id = nodes.id AND id1.key = 'title'}
|
11
11
|
|
12
12
|
# (slow). Find a node by it's path. This is used during node importation when stored as zml files or to resolve custom_base url until we have an "alias" table.
|
13
|
-
def find_by_path(path, parent_id = current_site.
|
13
|
+
def find_by_path(path, parent_id = current_site.orphan_id, multilingual = false)
|
14
14
|
res = nil
|
15
15
|
path = path.split('/') unless path.kind_of?(Array)
|
16
16
|
last = path.size - 1
|
data/lib/zena/use/authlogic.rb
CHANGED
@@ -50,7 +50,8 @@ module Zena
|
|
50
50
|
User.send(:with_scope, :find => {:conditions => ['site_id = ?', site.id]}) do
|
51
51
|
if user = token_visitor || registered_visitor || anonymous_visitor(site)
|
52
52
|
user.asset_host = @asset_host
|
53
|
-
|
53
|
+
# Make sure we load alias site in visitor
|
54
|
+
setup_visitor(user, site)
|
54
55
|
end
|
55
56
|
end
|
56
57
|
end
|
data/lib/zena/use/display.rb
CHANGED
@@ -236,6 +236,7 @@ module Zena
|
|
236
236
|
safe_method [:sprintf, String, Number] => {:class => String, :method => 'sprintf'}
|
237
237
|
safe_method [:search_box, {:ajax => String, :type => String}] => {:class => String, :method => 'search_box', :html_safe => true}
|
238
238
|
safe_context [:admin_links, {:list => String}] => [String]
|
239
|
+
safe_method :uuid => String
|
239
240
|
|
240
241
|
# Return sprintf formated entry. Return '' for values eq to zero.
|
241
242
|
def sprintf_unless_zero(fmt, value)
|
@@ -246,6 +247,11 @@ module Zena
|
|
246
247
|
def search_box(opts={})
|
247
248
|
render_to_string(:partial=>'search/form', :locals => {:ajax => opts[:ajax], :type => opts[:type]})
|
248
249
|
end
|
250
|
+
|
251
|
+
# Return a random string that can be used as id (starts with a character)
|
252
|
+
def uuid
|
253
|
+
'u' + UUIDTools::UUID.random_create.to_s.gsub('-','')[0..8]
|
254
|
+
end
|
249
255
|
|
250
256
|
# Return the 'zip' of the node corresponding to the browser url (start node). This value is kept
|
251
257
|
# accross all Ajax calls.
|
data/lib/zena/use/query_node.rb
CHANGED
@@ -105,7 +105,7 @@ module Zena
|
|
105
105
|
end
|
106
106
|
end
|
107
107
|
|
108
|
-
class Compiler < QueryBuilder::Processor
|
108
|
+
class Compiler < ::QueryBuilder::Processor
|
109
109
|
attr_reader :context # ?
|
110
110
|
set_main_table 'nodes'
|
111
111
|
set_main_class 'Node'
|
@@ -328,7 +328,7 @@ module Zena
|
|
328
328
|
if klass = Node.get_class(right[1])
|
329
329
|
"#{field_or_attr('kpath')} #{is_not ? 'NOT ' : ''}LIKE #{quote(klass.kpath + '%')}"
|
330
330
|
else
|
331
|
-
raise QueryBuilder::QueryException.new("Unknown class #{right.last.inspect}.")
|
331
|
+
raise ::QueryBuilder::QueryException.new("Unknown class #{right.last.inspect}.")
|
332
332
|
end
|
333
333
|
else
|
334
334
|
process_op(:like, left, right)
|
@@ -577,7 +577,7 @@ module Zena
|
|
577
577
|
set_main_class(klass)
|
578
578
|
kpath_filter = ".kpath LIKE #{quote("#{klass.kpath}%")}" unless klass.kpath == 'N'
|
579
579
|
else
|
580
|
-
raise QueryBuilder::QueryException.new("Unknown class #{klass} in scope '#{class_name}:#{scope}'.")
|
580
|
+
raise ::QueryBuilder::QueryException.new("Unknown class #{klass} in scope '#{class_name}:#{scope}'.")
|
581
581
|
end
|
582
582
|
else
|
583
583
|
klass = nil
|
data/lib/zena/use/rendering.rb
CHANGED
@@ -171,21 +171,28 @@ module Zena
|
|
171
171
|
render :inline => result[:data]
|
172
172
|
|
173
173
|
else
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
174
|
+
|
175
|
+
if disposition = zafu_headers.delete('Content-Disposition')
|
176
|
+
result.delete(:filename) if disposition =~ /filename\s*=/
|
177
|
+
result[:disposition] = disposition
|
178
|
+
end
|
179
179
|
|
180
|
-
|
181
|
-
|
182
|
-
|
180
|
+
if type = zafu_headers.delete('Content-Type')
|
181
|
+
result[:type] = type
|
182
|
+
end
|
183
183
|
|
184
|
-
|
185
|
-
|
184
|
+
if filename = zafu_headers.delete('filename')
|
185
|
+
result[:filename] = filename
|
186
|
+
end
|
187
|
+
|
188
|
+
if status = zafu_headers.delete('Status')
|
189
|
+
if (status.to_i / 100) == 3
|
190
|
+
redirect_to zafu_headers.delete('Location'), :status => status.to_i
|
191
|
+
else
|
192
|
+
render :status => status.to_i
|
186
193
|
end
|
187
|
-
|
188
194
|
headers.merge!(zafu_headers)
|
195
|
+
return
|
189
196
|
end
|
190
197
|
|
191
198
|
if data = result.delete(:data)
|
@@ -195,7 +202,9 @@ module Zena
|
|
195
202
|
else
|
196
203
|
# Should never happen
|
197
204
|
raise Exception.new("Render '#{params[:format]}' should return either :file or :data (none found).")
|
198
|
-
end
|
205
|
+
end
|
206
|
+
headers.merge!(zafu_headers)
|
207
|
+
|
199
208
|
end
|
200
209
|
|
201
210
|
cache_page(:content_data => result[:data], :content_path => result[:file]) if opts[:cache]
|
@@ -205,7 +214,26 @@ module Zena
|
|
205
214
|
render_to_string :file => template_url(opts), :layout => false
|
206
215
|
else
|
207
216
|
render :file => template_url(opts), :layout => false, :status => opts[:status]
|
217
|
+
|
218
|
+
if status = zafu_headers.delete('Status')
|
219
|
+
# reset rendering
|
220
|
+
response.content_type = nil
|
221
|
+
erase_render_results
|
222
|
+
reset_variables_added_to_assigns
|
223
|
+
|
224
|
+
if (status.to_i / 100) == 3
|
225
|
+
redirect_to zafu_headers.delete('Location'), :status => status.to_i
|
226
|
+
else
|
227
|
+
render :status => status.to_i
|
228
|
+
end
|
229
|
+
|
230
|
+
headers.merge!(zafu_headers)
|
231
|
+
|
232
|
+
return
|
233
|
+
end
|
234
|
+
|
208
235
|
headers.merge!(zafu_headers)
|
236
|
+
|
209
237
|
cache_page(:url => opts[:cache_url]) if opts[:cache]
|
210
238
|
end
|
211
239
|
end
|
@@ -239,7 +267,13 @@ module Zena
|
|
239
267
|
:content_data => response.body,
|
240
268
|
:node_id => @node[:id]
|
241
269
|
}.merge(opts)
|
242
|
-
secure!(CachedPage) { CachedPage.create(opts) }
|
270
|
+
if secure!(CachedPage) { CachedPage.create(opts) }
|
271
|
+
true
|
272
|
+
else
|
273
|
+
false
|
274
|
+
end
|
275
|
+
else
|
276
|
+
false
|
243
277
|
end
|
244
278
|
end
|
245
279
|
|
data/lib/zena/use/test_helper.rb
CHANGED
data/lib/zena/use/urls.rb
CHANGED
@@ -93,7 +93,7 @@ module Zena
|
|
93
93
|
if ep.delete('mode')
|
94
94
|
mode ||= params[:mode]
|
95
95
|
end
|
96
|
-
opts[
|
96
|
+
opts[:encode_params] = ep
|
97
97
|
end
|
98
98
|
|
99
99
|
if host = opts.delete(:host)
|
@@ -155,6 +155,7 @@ module Zena
|
|
155
155
|
end
|
156
156
|
|
157
157
|
def append_query_params(path, opts)
|
158
|
+
|
158
159
|
if opts == {}
|
159
160
|
path
|
160
161
|
else
|
@@ -162,7 +163,9 @@ module Zena
|
|
162
163
|
list = opts.keys.map do |k|
|
163
164
|
# FIXME: DOC
|
164
165
|
if k.to_s == 'encode_params'
|
165
|
-
opts[k]
|
166
|
+
list = opts[k]
|
167
|
+
list = list.split(',').map(&:strip) unless list.kind_of?(Array)
|
168
|
+
list.map do |key|
|
166
169
|
value = params[key]
|
167
170
|
if value.kind_of?(Hash)
|
168
171
|
{key => value}.to_query
|
@@ -277,7 +280,7 @@ module Zena
|
|
277
280
|
def host_with_port
|
278
281
|
@host_with_port ||= begin
|
279
282
|
port = request.port
|
280
|
-
if port.blank? || port.to_s == '80'
|
283
|
+
if port.blank? || port.to_s == '80' || port.to_s == '443'
|
281
284
|
current_site.host
|
282
285
|
else
|
283
286
|
"#{current_site.host}:#{port}"
|
@@ -502,107 +505,6 @@ module Zena
|
|
502
505
|
# We wrap without callbacks (before_wrap, after_wrap) so that the link
|
503
506
|
# is used as raw text in these callbacks.
|
504
507
|
markup.wrap(text)
|
505
|
-
=begin
|
506
|
-
query_params = options[:query_params] || {}
|
507
|
-
default_text = options[:default_text]
|
508
|
-
params = {}
|
509
|
-
(options[:params] || @params).each do |k,v|
|
510
|
-
next if v.nil?
|
511
|
-
params[k] = v
|
512
|
-
end
|
513
|
-
|
514
|
-
opts = {}
|
515
|
-
|
516
|
-
if href = params.delete(:href)
|
517
|
-
if lnode = get_context_var('set_var', value) && stored.klass <= Node
|
518
|
-
# using stored node
|
519
|
-
else
|
520
|
-
lnode, klass = build_finder(:first, href, {})
|
521
|
-
return unless lnode
|
522
|
-
return parser_error("invalid class (#{klass})") unless klass.ancestors.include?(Node)
|
523
|
-
end
|
524
|
-
else
|
525
|
-
# obj
|
526
|
-
if node_class == Version
|
527
|
-
lnode = "#{node}.node"
|
528
|
-
opts[:lang] = "#{node}.lang"
|
529
|
-
elsif node.will_be?(Node)
|
530
|
-
lnode = node
|
531
|
-
else
|
532
|
-
lnode = @context[:previous_node]
|
533
|
-
end
|
534
|
-
end
|
535
|
-
|
536
|
-
if fmt = params.delete(:format)
|
537
|
-
if fmt == 'data'
|
538
|
-
opts[:format] = "#{node}.ext"
|
539
|
-
else
|
540
|
-
opts[:format] = fmt.inspect
|
541
|
-
end
|
542
|
-
end
|
543
|
-
|
544
|
-
if mode = params.delete(:mode)
|
545
|
-
opts[:mode] = mode.inspect
|
546
|
-
end
|
547
|
-
|
548
|
-
if anchor = params.delete(:anchor)
|
549
|
-
opts[:anchor] = anchor.inspect
|
550
|
-
end
|
551
|
-
|
552
|
-
if anchor_in = params.delete(:in)
|
553
|
-
finder, klass = build_finder(:first, anchor_in, {})
|
554
|
-
return unless finder
|
555
|
-
return parser_error("invalid class (#{klass})") unless klass.ancestors.include?(Node)
|
556
|
-
opts[:anchor_in] = finder
|
557
|
-
end
|
558
|
-
|
559
|
-
if @html_tag && @html_tag != 'a'
|
560
|
-
# FIXME: can we remove this ?
|
561
|
-
# html attributes do not belong to anchor
|
562
|
-
pre_space = ''
|
563
|
-
html_params = {}
|
564
|
-
else
|
565
|
-
html_params = get_html_params(params.merge(@html_tag_params), :link)
|
566
|
-
pre_space = @space_before || ''
|
567
|
-
@html_tag_done = true
|
568
|
-
end
|
569
|
-
|
570
|
-
(params.keys - [:style, :class, :id, :rel, :name, :anchor, :attr, :tattr, :trans, :text]).each do |k|
|
571
|
-
next if k.to_s =~ /if_|set_|\A_/
|
572
|
-
query_params[k] = params[k]
|
573
|
-
end
|
574
|
-
|
575
|
-
# TODO: merge these two query_params cleanup things into something cleaner.
|
576
|
-
else
|
577
|
-
# direct link
|
578
|
-
query_params.each do |k,v|
|
579
|
-
if k == :date
|
580
|
-
if v == 'current_date'
|
581
|
-
query_params[k] = current_date
|
582
|
-
elsif v =~ /\A\d/
|
583
|
-
query_params[k] = v.inspect
|
584
|
-
elsif v =~ /\[/
|
585
|
-
attribute, static = parse_attributes_in_value(v.gsub('"',''), :erb => false)
|
586
|
-
query_params[k] = "\"#{attribute}\""
|
587
|
-
else
|
588
|
-
query_params[k] = node_attribute(v)
|
589
|
-
end
|
590
|
-
else
|
591
|
-
attribute, static = parse_attributes_in_value(v.gsub('"',''), :erb => false)
|
592
|
-
query_params[k] = "\"#{attribute}\""
|
593
|
-
end
|
594
|
-
end
|
595
|
-
|
596
|
-
query_params.merge!(opts)
|
597
|
-
|
598
|
-
opts_str = ''
|
599
|
-
query_params.keys.sort {|a,b| a.to_s <=> b.to_s }.each do |k|
|
600
|
-
opts_str << ",:#{k.to_s.gsub(/[^a-z_A-Z_]/,'')}=>#{query_params[k]}"
|
601
|
-
end
|
602
|
-
|
603
|
-
pre_space + "<a#{params_to_html(html_params)} href='<%= zen_path(#{lnode}#{opts_str}) %>'>#{text_for_link(default_text)}</a>"
|
604
|
-
end
|
605
|
-
=end
|
606
508
|
end
|
607
509
|
|
608
510
|
|
@@ -117,7 +117,9 @@ module Zena
|
|
117
117
|
def self.first_proc
|
118
118
|
@@first_proc ||= Proc.new do |receiver, method|
|
119
119
|
if elem = receiver.opts[:elem] || receiver.klass.first
|
120
|
-
|
120
|
+
# All query contexts are only opened if they are not empty.
|
121
|
+
could_be_nil = !receiver.opts[:query]
|
122
|
+
RubyLess::TypedString.new("#{receiver.raw}.first", :class => elem, :nil => could_be_nil, :query => receiver.opts[:query])
|
121
123
|
else
|
122
124
|
# should never happen
|
123
125
|
raise RubyLess::NoMethodError.new(receiver.raw, receiver.klass, ['first'])
|
@@ -157,7 +159,8 @@ module Zena
|
|
157
159
|
|
158
160
|
safe_method :now => {:method => 'Time.now', :class => Time}
|
159
161
|
safe_method :string_hash => {:method => 'StringHash.new', :class => StringHash}
|
160
|
-
safe_method [:string_hash, Hash]
|
162
|
+
safe_method [:string_hash, Hash] => {:method => 'StringHash.from_hash', :class => StringHash}
|
163
|
+
safe_method [:string_hash, String] => {:method => 'StringHash.from_string', :class => StringHash}
|
161
164
|
safe_method [:h, String] => {:class => String, :accept_nil => true}
|
162
165
|
safe_method_for String, [:gsub, Regexp, String] => {:class => String, :pre_processor => true}
|
163
166
|
safe_method_for String, :upcase => {:class => String, :pre_processor => true}
|
@@ -166,8 +169,10 @@ module Zena
|
|
166
169
|
safe_method_for String, :url_name => {:class => String, :pre_processor => true, :method => :url_name}
|
167
170
|
safe_method_for String, :to_i => {:class => Number, :pre_processor => true}
|
168
171
|
safe_method_for String, :to_s => {:class => String, :pre_processor => true}
|
169
|
-
safe_method_for String,
|
170
|
-
safe_method_for String, [:limit, Number
|
172
|
+
safe_method_for String, :size => {:class => Number, :pre_processor => true}
|
173
|
+
safe_method_for String, [:limit, Number] => {:class => String, :pre_processor => true}
|
174
|
+
safe_method_for String, [:limit, Number, String] => {:class => Number, :pre_processor => true}
|
175
|
+
|
171
176
|
safe_method_for String, :to_f => {:class => Number, :pre_processor => true}
|
172
177
|
safe_method_for String, :to_json => {:class => String, :pre_processor => true}
|
173
178
|
safe_method_for String, [:split, String] => {:class => [String], :pre_processor => true}
|
@@ -261,6 +261,7 @@ module Zena
|
|
261
261
|
return default_template_url(opts) unless zafu_url
|
262
262
|
|
263
263
|
rel_path = current_site.zafu_path + "/#{zafu_url}/#{lang_path}/_main.erb"
|
264
|
+
|
264
265
|
path = SITES_ROOT + rel_path
|
265
266
|
if !File.exists?(path) || params[:rebuild]
|
266
267
|
if @node && klass = VirtualClass.find_by_kpath(template.tkpath)
|
data/locale/app.pot
CHANGED
Binary file
|
data/locale/de/zena.po
CHANGED
@@ -1612,11 +1612,15 @@ msgstr "%H:%M"
|
|
1612
1612
|
#: app/views/sites/_form.erb:22 lib/gettext_strings.rb:38
|
1613
1613
|
#, fuzzy
|
1614
1614
|
msgid "site group"
|
1615
|
-
msgstr "<img src='/images/group.png' title='group'/>"
|
1615
|
+
msgstr "<img src='/images/group.png' alt='group' title='group'/>"
|
1616
1616
|
|
1617
1617
|
#: app/views/sites/_li.erb:2 lib/gettext_strings.rb:34
|
1618
1618
|
msgid "site_img"
|
1619
|
-
msgstr "<img src='/images/world.png' title='site'/>"
|
1619
|
+
msgstr "<img src='/images/world.png' alt='site' title='site'/>"
|
1620
|
+
|
1621
|
+
#: app/views/sites/_li.erb:2 lib/gettext_strings.rb:34
|
1622
|
+
msgid "alias_img"
|
1623
|
+
msgstr "<img src='/images/world_link.png' alt='alias' title='alias'/>"
|
1620
1624
|
|
1621
1625
|
#: app/views/sites/index.erb:1 lib/zena/use/display.rb:279
|
1622
1626
|
msgid "sites"
|
Binary file
|
data/locale/en/zena.po
CHANGED
@@ -480,7 +480,7 @@ msgstr "Acl with highest priority is tested first."
|
|
480
480
|
#: app/views/acls/_form.rhtml:47
|
481
481
|
msgid "acl_query_help"
|
482
482
|
msgstr ""
|
483
|
-
"SQLiss query to fetch all the nodes for which this acl authorizes access."
|
483
|
+
"SQLiss query to fetch all the nodes for which this acl authorizes access (Ruby)."
|
484
484
|
|
485
485
|
#: lib/zena/use/display.rb:282
|
486
486
|
msgid "acls"
|
@@ -1595,7 +1595,11 @@ msgstr "<img src='/images/group.png' alt='group'/>"
|
|
1595
1595
|
|
1596
1596
|
#: app/views/sites/_li.erb:2 lib/gettext_strings.rb:34
|
1597
1597
|
msgid "site_img"
|
1598
|
-
msgstr "<img src='/images/world.png' alt='site'/>"
|
1598
|
+
msgstr "<img src='/images/world.png' alt='site' title='site'/>"
|
1599
|
+
|
1600
|
+
#: app/views/sites/_li.erb:2 lib/gettext_strings.rb:34
|
1601
|
+
msgid "alias_img"
|
1602
|
+
msgstr "<img src='/images/world_link.png' alt='alias' title='alias'/>"
|
1599
1603
|
|
1600
1604
|
#: app/views/sites/index.erb:1 lib/zena/use/display.rb:279
|
1601
1605
|
msgid "sites"
|
Binary file
|
data/locale/fr/zena.po
CHANGED
@@ -1545,7 +1545,11 @@ msgstr "groupe de site"
|
|
1545
1545
|
|
1546
1546
|
#: app/views/sites/_li.erb:2 lib/gettext_strings.rb:34
|
1547
1547
|
msgid "site_img"
|
1548
|
-
msgstr "<img src='/images/world.png' alt='site'/>"
|
1548
|
+
msgstr "<img src='/images/world.png' alt='site' title='site'/>"
|
1549
|
+
|
1550
|
+
#: app/views/sites/_li.erb:2 lib/gettext_strings.rb:34
|
1551
|
+
msgid "alias_img"
|
1552
|
+
msgstr "<img src='/images/world_link.png' alt='alias' title='alias'/>"
|
1549
1553
|
|
1550
1554
|
#: app/views/sites/index.erb:1 lib/zena/use/display.rb:279
|
1551
1555
|
msgid "sites"
|
Binary file
|
data/locale/it/zena.po
CHANGED
@@ -480,7 +480,7 @@ msgstr "Acl with highest priority is tested first."
|
|
480
480
|
|
481
481
|
#: app/views/acls/_form.rhtml:47
|
482
482
|
msgid "acl_query_help"
|
483
|
-
msgstr "SQLiss query to fetch all the nodes for which this acl authorizes access."
|
483
|
+
msgstr "SQLiss query to fetch all the nodes for which this acl authorizes access (Ruby)."
|
484
484
|
|
485
485
|
#: lib/zena/use/display.rb:282
|
486
486
|
msgid "acls"
|
@@ -1658,7 +1658,11 @@ msgstr "<img src='/images/group.png' alt='group'/>"
|
|
1658
1658
|
#: app/views/sites/_li.erb:2
|
1659
1659
|
#: lib/gettext_strings.rb:34
|
1660
1660
|
msgid "site_img"
|
1661
|
-
msgstr "<img src='/images/world.png' alt='site'/>"
|
1661
|
+
msgstr "<img src='/images/world.png' alt='site' title='site'/>"
|
1662
|
+
|
1663
|
+
#: app/views/sites/_li.erb:2 lib/gettext_strings.rb:34
|
1664
|
+
msgid "alias_img"
|
1665
|
+
msgstr "<img src='/images/world_link.png' alt='alias' title='alias'/>"
|
1662
1666
|
|
1663
1667
|
#: app/views/sites/index.erb:1
|
1664
1668
|
#: lib/zena/use/display.rb:279
|