zena 1.2.4 → 1.2.5
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/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/config/bricks.yml
CHANGED
|
@@ -9,10 +9,12 @@ test:
|
|
|
9
9
|
worker: OFF
|
|
10
10
|
uv: OFF
|
|
11
11
|
spreadsheet: ON
|
|
12
|
+
activity: ON
|
|
12
13
|
|
|
13
14
|
|
|
14
15
|
development:
|
|
15
|
-
# asset_port: 7999
|
|
16
|
+
# asset_port: 7999
|
|
17
|
+
activity: ON
|
|
16
18
|
mongrel: OFF
|
|
17
19
|
passenger: ON
|
|
18
20
|
uv:
|
|
@@ -53,6 +55,7 @@ production:
|
|
|
53
55
|
# Port used only to provide assets during custom rendering (pdf).
|
|
54
56
|
# We need this to avoid deadlocks with round-robin based serving.
|
|
55
57
|
# asset_port: 7999
|
|
58
|
+
activity: ON
|
|
56
59
|
cache_path: '/public/cache'
|
|
57
60
|
mongrel: OFF
|
|
58
61
|
passenger: ON
|
data/lib/bricks/loader.rb
CHANGED
|
@@ -33,10 +33,6 @@ module Bricks
|
|
|
33
33
|
paths_for('models')
|
|
34
34
|
end
|
|
35
35
|
|
|
36
|
-
def init_paths
|
|
37
|
-
paths_for('zena/init.rb')
|
|
38
|
-
end
|
|
39
|
-
|
|
40
36
|
def migrations_for(brick)
|
|
41
37
|
File.join(brick_path(brick), 'zena', 'migrate')
|
|
42
38
|
end
|
|
@@ -93,7 +89,7 @@ module Bricks
|
|
|
93
89
|
def load_zafu(mod)
|
|
94
90
|
Bricks::CONFIG.keys.each do |brick_name|
|
|
95
91
|
begin
|
|
96
|
-
mod.send(:include, eval("Bricks::#{brick_name.
|
|
92
|
+
mod.send(:include, eval("Bricks::#{brick_name.camelcase}::ZafuMethods"))
|
|
97
93
|
rescue NameError
|
|
98
94
|
# ignore
|
|
99
95
|
end
|
|
@@ -121,16 +117,28 @@ module Bricks
|
|
|
121
117
|
path = File.join(path, 'lib')
|
|
122
118
|
ActiveSupport::Dependencies.autoload_paths << path
|
|
123
119
|
ActiveSupport::Dependencies.autoload_once_paths << path
|
|
124
|
-
$LOAD_PATH
|
|
120
|
+
$LOAD_PATH << path
|
|
125
121
|
end
|
|
126
122
|
|
|
127
123
|
if @@no_init
|
|
128
124
|
puts "=> Not executing bricks init code."
|
|
129
125
|
return
|
|
130
126
|
end
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
127
|
+
|
|
128
|
+
# execute Zena.use module and load 'init'
|
|
129
|
+
bricks.each do |path|
|
|
130
|
+
mod = path.split('/').last
|
|
131
|
+
mod_path = "bricks/#{mod}"
|
|
132
|
+
if File.exist?("#{path}/lib/#{mod_path}.rb") # bricks/acl/lib/bricks/acl.rb
|
|
133
|
+
require mod_path
|
|
134
|
+
mod = eval "Bricks::#{mod.camelcase}"
|
|
135
|
+
Zena.use mod
|
|
136
|
+
|
|
137
|
+
init_rb = "#{path}/zena/init.rb"
|
|
138
|
+
if File.exist?(init_rb)
|
|
139
|
+
require init_rb
|
|
140
|
+
end
|
|
141
|
+
end
|
|
134
142
|
end
|
|
135
143
|
end
|
|
136
144
|
end
|
data/lib/tasks/zena.rake
CHANGED
|
@@ -143,6 +143,41 @@ namespace :zena do
|
|
|
143
143
|
end
|
|
144
144
|
end
|
|
145
145
|
end
|
|
146
|
+
|
|
147
|
+
desc "Create a new site alias, parameters are ALIAS, HOST"
|
|
148
|
+
task :mkalias => :environment do
|
|
149
|
+
# 0. set host name
|
|
150
|
+
unless host = ENV['HOST']
|
|
151
|
+
puts "Please set HOST to the hostname for the master site. Aborting."
|
|
152
|
+
else
|
|
153
|
+
unless ali = ENV['ALIAS']
|
|
154
|
+
puts "Please set ALIAS to the hostname of the alias site. Aborting."
|
|
155
|
+
else
|
|
156
|
+
if Site.find_by_host(ali)
|
|
157
|
+
puts "Host alias already exists in the database. Aborting."
|
|
158
|
+
else
|
|
159
|
+
unless site = Site.find_by_host(host)
|
|
160
|
+
puts "Master host not found in the database. Aborting."
|
|
161
|
+
else
|
|
162
|
+
alias_site = site.create_alias(ali)
|
|
163
|
+
|
|
164
|
+
if alias_site.new_record?
|
|
165
|
+
puts "Could not create site alias ! Errors:"
|
|
166
|
+
alias_site.errors.each do |k,v|
|
|
167
|
+
puts "[#{k}] #{v}"
|
|
168
|
+
end
|
|
169
|
+
raise "Aborting."
|
|
170
|
+
else
|
|
171
|
+
# 1. create directories and symlinks
|
|
172
|
+
`rake zena:mksymlinks HOST=#{ali.inspect}`
|
|
173
|
+
|
|
174
|
+
puts "Site alias [#{ali} => #{host}] created."
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
end
|
|
146
181
|
|
|
147
182
|
desc "Create symlinks for a site"
|
|
148
183
|
task :mksymlinks => :zena_config do
|
|
@@ -362,11 +397,11 @@ namespace :zena do
|
|
|
362
397
|
if ENV['HOST']
|
|
363
398
|
sites = [Site.find_by_host(ENV['HOST'])]
|
|
364
399
|
else
|
|
365
|
-
sites = Site.
|
|
400
|
+
sites = Site.master_sites
|
|
366
401
|
end
|
|
367
402
|
|
|
368
403
|
sites.each do |site|
|
|
369
|
-
|
|
404
|
+
setup_visitor(site.any_admin, site)
|
|
370
405
|
|
|
371
406
|
if ENV['WORKER'] == 'false' || RAILS_ENV == 'test'
|
|
372
407
|
# We avoid SiteWorker by passing nodes.
|
|
@@ -387,7 +422,7 @@ namespace :zena do
|
|
|
387
422
|
if ENV['HOST']
|
|
388
423
|
sites = [Site.find_by_host(ENV['HOST'])]
|
|
389
424
|
else
|
|
390
|
-
sites = Site.
|
|
425
|
+
sites = Site.master_sites
|
|
391
426
|
end
|
|
392
427
|
sites.each do |site|
|
|
393
428
|
# Does not use SiteWorker.
|
|
@@ -401,11 +436,11 @@ namespace :zena do
|
|
|
401
436
|
if ENV['HOST']
|
|
402
437
|
sites = [Site.find_by_host(ENV['HOST'])]
|
|
403
438
|
else
|
|
404
|
-
sites = Site.
|
|
439
|
+
sites = Site.master_sites
|
|
405
440
|
end
|
|
406
441
|
sites.each do |site|
|
|
407
442
|
# We avoid SiteWorker by passing nodes.
|
|
408
|
-
|
|
443
|
+
setup_visitor(site.any_admin, site)
|
|
409
444
|
nodes = Node.find(:all,
|
|
410
445
|
:conditions => ['site_id = ?', site.id]
|
|
411
446
|
)
|
|
@@ -34,7 +34,8 @@ module Zafu
|
|
|
34
34
|
|
|
35
35
|
rubyless_render(@method, params)
|
|
36
36
|
rescue RubyLess::NoMethodError => err
|
|
37
|
-
|
|
37
|
+
klass_name = node.list_context? ? "[#{node.klass}]" : node.klass.to_s
|
|
38
|
+
parser_continue("#{err.error_message} <span class='type'>#{err.method_with_arguments}</span> (#{klass_name} context)")
|
|
38
39
|
rescue RubyLess::Error => err
|
|
39
40
|
parser_continue(err.message)
|
|
40
41
|
end
|
|
@@ -181,10 +182,7 @@ module Zafu
|
|
|
181
182
|
elsif node && node.list_context? && type = safe_method_from(Array, signature, node)
|
|
182
183
|
# FIXME: why do we need this here ? Remove with related code in zafu_safe_definitions ?
|
|
183
184
|
type = type[:class].call(self, node.klass, signature) if type[:class].kind_of?(Proc)
|
|
184
|
-
type.merge(:receiver => RubyLess::TypedString.new(node.name, :class => Array, :elem => node.klass.first))
|
|
185
|
-
elsif node && node.list_context? && type = safe_method_from(node.klass.first, signature, node)
|
|
186
|
-
type = type[:class].call(self, node.klass, signature) if type[:class].kind_of?(Proc)
|
|
187
|
-
type.merge(:receiver => RubyLess::TypedString.new("#{node.name}.first", :class => node.klass.first, :h => true))
|
|
185
|
+
type.merge(:receiver => RubyLess::TypedString.new(node.name, :class => Array, :query => node.opts[:query], :elem => node.klass.first))
|
|
188
186
|
elsif @rendering_block_owner && @blocks.first.kind_of?(String) && !added_options
|
|
189
187
|
# Insert the block content into the method: <r:trans>blah</r:trans> becomes trans("blah")
|
|
190
188
|
signature_with_block = signature.dup
|
data/lib/zena.rb
CHANGED
|
@@ -333,6 +333,8 @@ EXT_TYPE = [
|
|
|
333
333
|
[ "movie" , "video/x-sgi-movie" ],
|
|
334
334
|
[ "mp2" , "audio/mpeg" ],
|
|
335
335
|
[ "mp3" , "audio/mpeg" ],
|
|
336
|
+
[ "mp4" , "video/mp4" ],
|
|
337
|
+
[ "m4v" , "video/mp4" ],
|
|
336
338
|
[ "mpe" , "video/mpeg" ],
|
|
337
339
|
[ "mpeg" , "video/mpeg" ],
|
|
338
340
|
[ "mpg" , "video/mpeg" ],
|
data/lib/zena/acts/secure.rb
CHANGED
|
@@ -145,9 +145,10 @@ Just doing the above will filter all result according to the logged in user.
|
|
|
145
145
|
find[:conditions] = node_find_scope
|
|
146
146
|
end
|
|
147
147
|
elsif klass.column_names.include?('site_id')
|
|
148
|
-
find[:conditions] = {klass.table_name => {:site_id => visitor.site
|
|
148
|
+
find[:conditions] = {klass.table_name => {:site_id => visitor.site.id}}
|
|
149
149
|
elsif klass <= ::Site
|
|
150
|
-
|
|
150
|
+
id = visitor.site.id
|
|
151
|
+
find[:conditions] = ['id = ? or master_id = ?', id, id]
|
|
151
152
|
end
|
|
152
153
|
|
|
153
154
|
# FIXME: 'with_scope' is protected now. Can we live with something cleaner like this ?
|
|
@@ -309,6 +310,14 @@ def current_site
|
|
|
309
310
|
visitor.site
|
|
310
311
|
end
|
|
311
312
|
|
|
313
|
+
# This method should be used to install a given user and site as the current visitor.
|
|
314
|
+
def setup_visitor(user, site)
|
|
315
|
+
raise "Missing site information" unless site
|
|
316
|
+
Thread.current[:visitor] = user
|
|
317
|
+
# Load alias site in visitor
|
|
318
|
+
user.site = site
|
|
319
|
+
end
|
|
320
|
+
|
|
312
321
|
# Return the current visitor. Raise an error if the visitor is not set.
|
|
313
322
|
# For controllers, this method must be redefined in Application
|
|
314
323
|
def visitor
|
data/lib/zena/console.rb
CHANGED
|
@@ -99,17 +99,18 @@ module Zena
|
|
|
99
99
|
def login(name, host = nil)
|
|
100
100
|
finder = {}
|
|
101
101
|
finder[:conditions] = cond = [[]]
|
|
102
|
+
site = nil
|
|
102
103
|
if host
|
|
103
|
-
|
|
104
|
-
cond.first << '
|
|
105
|
-
cond <<
|
|
104
|
+
site = Site.find_by_host(host)
|
|
105
|
+
cond.first << 'site_id = ?'
|
|
106
|
+
cond << site.id
|
|
106
107
|
end
|
|
107
108
|
|
|
108
109
|
cond.first << 'users.login = ?'
|
|
109
110
|
cond << name.to_s
|
|
110
111
|
cond[0] = cond.first.join(' AND ')
|
|
111
112
|
if visitor = User.find(:first, finder)
|
|
112
|
-
|
|
113
|
+
setup_visitor(visitor, site || visitor.site)
|
|
113
114
|
puts "Logged #{visitor.login} in #{visitor.site.host}"
|
|
114
115
|
else
|
|
115
116
|
raise ActiveRecord::RecordNotFound
|
data/lib/zena/core_ext/string.rb
CHANGED
|
@@ -101,9 +101,9 @@ class String
|
|
|
101
101
|
def limit(size, readmore = '…')
|
|
102
102
|
if self.size > size
|
|
103
103
|
# readmore can contain a link: <a...> but this is defined in the zafu template.
|
|
104
|
-
|
|
104
|
+
self[0..(size-1)] + readmore
|
|
105
105
|
else
|
|
106
|
-
|
|
106
|
+
self
|
|
107
107
|
end
|
|
108
108
|
end
|
|
109
109
|
|
data/lib/zena/deploy.rb
CHANGED
|
@@ -162,6 +162,19 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
|
162
162
|
run "chown -R www-data:www-data #{sites_root}/#{self[:host]}"
|
|
163
163
|
end
|
|
164
164
|
|
|
165
|
+
desc "create a new site alias [-s host='...' -s alias='...' -s pass='...']"
|
|
166
|
+
task :mkalias, :roles => :app do
|
|
167
|
+
run "#{in_current} rake zena:mksite HOST='#{self[:host]}' ALIAS='#{self[:alias]}' RAILS_ENV='production'"
|
|
168
|
+
|
|
169
|
+
# Same as mksite
|
|
170
|
+
self[:host] = self[:alias]
|
|
171
|
+
run "test -e #{sites_root}/#{self[:host]} || mkdir #{sites_root}/#{self[:host]}"
|
|
172
|
+
create_vhost
|
|
173
|
+
create_awstats
|
|
174
|
+
logrotate
|
|
175
|
+
run "chown -R www-data:www-data #{sites_root}/#{self[:host]}"
|
|
176
|
+
end
|
|
177
|
+
|
|
165
178
|
task :mksymlinks, :roles => :app do
|
|
166
179
|
run "#{in_current} rake zena:mksymlinks HOST='#{self[:host]}'"
|
|
167
180
|
run "chown -R www-data:www-data #{sites_root}/#{self[:host]}"
|
|
@@ -202,15 +215,18 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
|
202
215
|
desc "Update vhost configuration file"
|
|
203
216
|
task :create_vhost, :roles => :web do
|
|
204
217
|
unless self[:host]
|
|
205
|
-
puts "HOST not set (use -s host=...)"
|
|
218
|
+
puts "HOST not set (use -s host=... -s lang_list=...)"
|
|
206
219
|
else
|
|
220
|
+
lang = self[:lang] ||= (self[:lang_list] || 'en').split(',').map(&:strip).first
|
|
221
|
+
self[:lang_list] ||= lang
|
|
207
222
|
vhost_files = []
|
|
208
|
-
if self[:ssl] == :all
|
|
209
223
|
|
|
210
|
-
|
|
211
|
-
|
|
224
|
+
public_path = Bricks.raw_config['public_path'] || '/public'
|
|
225
|
+
cache_path = Bricks.raw_config['cache_path'] || '/public'
|
|
226
|
+
|
|
227
|
+
self[:cache_path] = cache_path.sub(%r{^#{public_path}},'')
|
|
212
228
|
|
|
213
|
-
|
|
229
|
+
if self[:ssl] == :all
|
|
214
230
|
vhost = render("#{templates}/vhost.rhtml", :config => self, :ssl => true, :vhost_port => ':443')
|
|
215
231
|
put(vhost, "#{vhost_root}/#{self[:host]}.ssl")
|
|
216
232
|
vhost_files << "#{self[:host]}.ssl"
|
|
@@ -331,7 +347,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
|
331
347
|
awstats = '/etc/cron.d/awstats'
|
|
332
348
|
run %Q{sed "/config=#{self[:host]} /d" #{awstats} >#{awstats}.tmp && mv #{awstats}.tmp #{awstats}}
|
|
333
349
|
|
|
334
|
-
logrotate_conf = "/etc/logrotate.d/#{self[:old_host]}"
|
|
350
|
+
logrotate_conf = "/etc/logrotate.d/#{db_name}-#{self[:old_host]}"
|
|
335
351
|
run "test -e #{logrotate_conf} && rm #{logrotate_conf} || true"
|
|
336
352
|
|
|
337
353
|
create_vhost
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
# zena apache2 app logrotate configuration for <%= config[:db_name] %>
|
|
2
|
+
# automatically generated file
|
|
3
|
+
|
|
1
4
|
<%= config[:app_root] %>/log/production.log {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
weekly
|
|
6
|
+
missingok
|
|
7
|
+
rotate 9
|
|
8
|
+
compress
|
|
9
|
+
delaycompress
|
|
10
|
+
notifempty
|
|
11
|
+
copytruncate
|
|
9
12
|
}
|
|
@@ -1,34 +1,29 @@
|
|
|
1
|
+
# zena apache2 logrotate configuration for <%= config[:host] %>
|
|
2
|
+
# automatically generated file
|
|
3
|
+
|
|
1
4
|
<%= config[:sites_root] %>/<%= config[:host] %>/log/apache2.access.log {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
weekly
|
|
6
|
+
missingok
|
|
7
|
+
rotate 52
|
|
8
|
+
compress
|
|
9
|
+
delaycompress
|
|
10
|
+
notifempty
|
|
11
|
+
create 640 www-data www-data
|
|
12
|
+
copytruncate
|
|
13
|
+
sharedscripts
|
|
10
14
|
prerotate
|
|
11
15
|
/usr/lib/cgi-bin/awstats.pl -update -config=<%= config[:host] %>
|
|
12
16
|
endscript
|
|
13
|
-
postrotate
|
|
14
|
-
if [ -f "`. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}`" ]; then
|
|
15
|
-
/etc/init.d/apache2 reload > /dev/null
|
|
16
|
-
fi
|
|
17
|
-
endscript
|
|
18
17
|
}
|
|
19
18
|
|
|
20
19
|
<%= config[:sites_root] %>/<%= config[:host] %>/log/apache2.error.log {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
if [ -f "`. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}`" ]; then
|
|
31
|
-
/etc/init.d/apache2 reload > /dev/null
|
|
32
|
-
fi
|
|
33
|
-
endscript
|
|
20
|
+
weekly
|
|
21
|
+
missingok
|
|
22
|
+
rotate 52
|
|
23
|
+
compress
|
|
24
|
+
delaycompress
|
|
25
|
+
notifempty
|
|
26
|
+
create 640 www-data www-data
|
|
27
|
+
copytruncate
|
|
28
|
+
sharedscripts
|
|
34
29
|
}
|
data/lib/zena/deploy/vhost.rhtml
CHANGED
|
@@ -75,10 +75,10 @@ end %>
|
|
|
75
75
|
# Rewrite index to check for static
|
|
76
76
|
RewriteRule ^/$ /index.html [QSA]
|
|
77
77
|
|
|
78
|
-
# Serve static (cached) assets
|
|
78
|
+
# Serve static (recently cached) assets
|
|
79
79
|
RewriteCond %{QUERY_STRING} ^[0-9]+$
|
|
80
|
-
RewriteCond %{DOCUMENT_ROOT}<%= config[:cache_path] %>%{REQUEST_FILENAME}
|
|
81
|
-
RewriteRule ^/(.*)$ <%= config[:cache_path] %>%{REQUEST_FILENAME}
|
|
80
|
+
RewriteCond %{DOCUMENT_ROOT}<%= config[:cache_path] %>%{REQUEST_FILENAME} -f
|
|
81
|
+
RewriteRule ^/(.*)$ <%= config[:cache_path] %>%{REQUEST_FILENAME} [L]
|
|
82
82
|
|
|
83
83
|
# Static CSS, JS
|
|
84
84
|
RewriteCond %{QUERY_STRING} ^[0-9]+$
|
data/lib/zena/foxy_parser.rb
CHANGED
data/lib/zena/info.rb
CHANGED
data/lib/zena/site_worker.rb
CHANGED
|
@@ -19,7 +19,7 @@ module Zena
|
|
|
19
19
|
def perform(site = nil)
|
|
20
20
|
if site.nil?
|
|
21
21
|
site ||= Site.find(site_id)
|
|
22
|
-
|
|
22
|
+
setup_visitor(site.any_admin, site)
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
if page.nil?
|
|
@@ -58,7 +58,7 @@ module Zena
|
|
|
58
58
|
|
|
59
59
|
# Return a textual description of the operation.
|
|
60
60
|
def info
|
|
61
|
-
if site_id == current_site.
|
|
61
|
+
if site_id == current_site.site_id
|
|
62
62
|
"#{action}, #{_('page')} #{page}/#{page_count}"
|
|
63
63
|
else
|
|
64
64
|
# Do not show jobs from other sites
|