zena 0.15.0 → 0.15.1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +14 -0
- data/{README.txt → README.rdoc} +13 -19
- data/app/controllers/documents_controller.rb +7 -2
- data/app/controllers/nodes_controller.rb +4 -0
- data/app/models/iformat.rb +43 -1
- data/app/models/skin.rb +1 -2
- data/app/models/text_document.rb +2 -2
- data/app/models/version.rb +1 -0
- data/app/views/documents/new.rhtml +2 -2
- data/app/views/iformats/_form.rhtml +5 -4
- data/app/views/iformats/_li.rhtml +1 -0
- data/app/views/iformats/index.rhtml +1 -1
- data/app/views/nodes/_import_results.rhtml +1 -1
- data/app/views/nodes/edit.html.erb +2 -2
- data/app/views/templates/edit_tabs/_custom.rhtml +2 -2
- data/app/views/templates/edit_tabs/_document.rhtml +3 -3
- data/app/views/versions/_tr.rhtml +5 -6
- data/app/views/versions/edit.rhtml +2 -2
- data/bin/zena +2 -2
- data/bricks/captcha/patch/application_controller.rb +1 -1
- data/bricks/captcha/zafu/captcha.rb +1 -1
- data/config/deploy.rb +36 -380
- data/config/gems.yml +2 -7
- data/db/migrate/20091018200734_add_popup_info_to_image_format.rb +9 -0
- data/db/schema.rb +3 -2
- data/lib/gettext_strings.rb +8 -0
- data/lib/tasks/zena.rake +30 -12
- data/lib/zena/app.rb +2 -0
- data/{config → lib/zena/deploy}/awstats.conf.rhtml +0 -0
- data/{config → lib/zena/deploy}/database.rhtml +0 -0
- data/lib/zena/deploy/httpd.rhtml +22 -0
- data/{config → lib/zena/deploy}/start.html +2 -2
- data/{config → lib/zena/deploy}/stats.vhost.rhtml +0 -0
- data/{config/zena.rb → lib/zena/deploy/template.rb} +13 -8
- data/{config → lib/zena/deploy}/vhost.rhtml +28 -14
- data/{config → lib/zena/deploy}/vhost_www.rhtml +0 -0
- data/lib/zena/deploy.rb +377 -0
- data/lib/zena/info.rb +13 -0
- data/lib/zena/parser/zena_tags.rb +3 -0
- data/lib/zena/parser.rb +1 -0
- data/lib/zena/use/calendar.rb +2 -1
- data/lib/zena/use/dates.rb +6 -1
- data/lib/zena/use/fixtures.rb +9 -0
- data/lib/zena/use/html_tags.rb +44 -5
- data/lib/zena/use/node_query_finders.rb +1 -2
- data/lib/zena/use/refactor.rb +0 -13
- data/lib/zena/use/rendering.rb +13 -0
- data/lib/zena/use/zafu.rb +21 -9
- data/lib/zena.rb +4 -11
- data/locale/en/LC_MESSAGES/zena.mo +0 -0
- data/locale/en/zena.po +29 -1
- data/locale/fr/LC_MESSAGES/zena.mo +0 -0
- data/locale/fr/zena.po +29 -1
- data/locale/zena.pot +28 -0
- data/public/images/popup_next.png +0 -0
- data/public/images/popup_prev.png +0 -0
- data/public/javascripts/upload-progress.js +13 -3
- data/public/javascripts/zena.js +177 -23
- data/public/stylesheets/popup.css +5 -3
- data/public/stylesheets/zena.css +10 -1
- data/{lib/zena/use → test}/custom_queries/complex.host.yml +0 -0
- data/test/fixtures/iformats.yml +1 -0
- data/test/fixtures/nodes.yml +1 -1
- data/test/fixtures/versions.yml +3 -1
- data/test/sites/zena/iformats.yml +1 -0
- data/test/sites/zena/versions.yml +3 -1
- data/test/test_helper.rb +2 -0
- data/test/unit/iformat_test.rb +53 -1
- data/test/unit/text_document_test.rb +3 -0
- data/test/unit/zena/use/html_tags_test.rb +24 -2
- data/test/unit/zena/use/refactor_test.rb +0 -4
- data/test/unit/zena/use/zafu_test.rb +12 -0
- data/test/unit/zena/use/zazen_test.rb +6 -3
- data/test/unit/zena/zena_tags/basic.yml +3 -3
- data/vendor/apache2_upload_progress/MIT-LICENSE +22 -0
- data/vendor/apache2_upload_progress/README +53 -0
- data/vendor/apache2_upload_progress/mod_upload_progress.c +813 -0
- metadata +45 -45
- data/config/deploy_config_example.rb +0 -7
- data/config/httpd.rhtml +0 -18
- data/config/locales/de.yml +0 -120
- data/config/locales/fr-CH.yml +0 -123
- data/config/locales/fr.yml +0 -123
- data/lib/zena/root.rb +0 -3
data/config/deploy.rb
CHANGED
@@ -1,382 +1,38 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
#================= ADVANCED SETTINGS
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
set :debian_host, true
|
38
|
-
set :ssh_user, "root"
|
39
|
-
|
40
|
-
load File.join(File.dirname(__FILE__), 'deploy_config')
|
41
|
-
|
42
|
-
role :web, "#{ssh_user}@#{server_ip}"
|
43
|
-
role :app, "#{ssh_user}@#{server_ip}"
|
44
|
-
role :db, "#{ssh_user}@#{server_ip}", :primary => true
|
45
|
-
|
46
|
-
#================= END ADVANCED SETTINGS ==========#
|
47
|
-
|
48
|
-
|
49
|
-
# helper
|
50
|
-
set :in_current, "cd #{deploy_to}/current &&"
|
51
|
-
class RenderClass
|
52
|
-
def initialize(path)
|
53
|
-
@text = File.read(path)
|
54
|
-
end
|
55
|
-
|
56
|
-
def render(hash)
|
57
|
-
@values = hash
|
58
|
-
ERB.new(@text).result(binding)
|
59
|
-
end
|
60
|
-
|
61
|
-
def method_missing(sym)
|
62
|
-
return @values[sym] if @values.has_key?(sym)
|
63
|
-
super
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
def render(file, hash)
|
68
|
-
RenderClass.new(file).render(hash)
|
69
|
-
end
|
70
|
-
|
71
|
-
#========================== SOURCE CODE =========================#
|
72
|
-
|
73
|
-
|
74
|
-
desc "set permissions to www-data"
|
75
|
-
task :set_permissions, :roles => :app do
|
76
|
-
run "chown -R www-data:www-data #{deploy_to}"
|
77
|
-
run "chown -R www-data:www-data #{zena_sites}"
|
78
|
-
end
|
79
|
-
|
80
|
-
"Update the currently released version of the software directly via an SCM update operation"
|
81
|
-
task :update_current do
|
82
|
-
source.sync(revision, self[:release_path])
|
83
|
-
end
|
84
|
-
|
85
|
-
desc "clear all zafu compiled templates"
|
86
|
-
task :clear_zafu, :roles => :app do
|
87
|
-
run "#{in_current} rake zena:clear_zafu RAILS_ENV=production"
|
88
|
-
end
|
89
|
-
|
90
|
-
desc "clear all cache compiled templates"
|
91
|
-
task :clear_cache, :roles => :app do
|
92
|
-
run "#{in_current} rake zena:clear_cache RAILS_ENV=production"
|
93
|
-
end
|
94
|
-
|
95
|
-
desc "after code update"
|
96
|
-
task :after_update, :roles => :app do
|
97
|
-
app_update_symlinks
|
98
|
-
db_update_config
|
99
|
-
migrate
|
100
|
-
clear_zafu
|
101
|
-
clear_cache
|
102
|
-
end
|
103
|
-
|
104
|
-
desc "update symlink to 'sites' directory"
|
105
|
-
task :app_update_symlinks, :roles => :app do
|
106
|
-
run "test ! -e #{deploy_to}/current/sites || rm #{deploy_to}/current/sites"
|
107
|
-
run "ln -sf #{zena_sites} #{deploy_to}/current/sites"
|
108
|
-
set_permissions
|
109
|
-
end
|
110
|
-
|
111
|
-
desc "migrate database (zena version)"
|
112
|
-
task :migrate, :roles => :db do
|
113
|
-
run "#{in_current} rake zena:migrate RAILS_ENV=production"
|
114
|
-
end
|
115
|
-
|
116
|
-
desc "initial app setup"
|
117
|
-
task :app_setup, :roles => :app do
|
118
|
-
run "test -e #{deploy_to} || mkdir #{deploy_to}"
|
119
|
-
run "test -e #{zena_sites} || mkdir #{zena_sites}"
|
120
|
-
deploy::setup
|
121
|
-
end
|
122
|
-
|
123
|
-
#========================== MANAGE HOST =========================#
|
124
|
-
desc "create a new site"
|
125
|
-
task :mksite, :roles => :app do
|
126
|
-
run "#{in_current} rake zena:mksite HOST='#{self[:host]}' PASSWORD='#{self[:pass]}' RAILS_ENV='production' LANG='#{self[:lang] || 'en'}'"
|
127
|
-
create_vhost
|
128
|
-
create_awstats
|
129
|
-
set_permissions
|
130
|
-
end
|
131
|
-
|
132
|
-
desc "update code in the current version"
|
133
|
-
task :up, :roles => :app do
|
134
|
-
run "cd #{deploy_to}/current && svn up && (echo #{strategy.configuration[:real_revision]} > #{deploy_to}/current/REVISION)"
|
135
|
-
db_update_config
|
136
|
-
clear_zafu
|
137
|
-
clear_cache
|
138
|
-
migrate
|
139
|
-
restart
|
140
|
-
end
|
141
|
-
|
142
|
-
desc "light update code (no migration, no clear)"
|
143
|
-
task :lightup, :roles => :app do
|
144
|
-
run "cd #{deploy_to}/current && svn up"
|
145
|
-
restart
|
146
|
-
end
|
147
|
-
|
148
|
-
#========================== MONGREL ===============================#
|
149
|
-
desc "configure mongrel"
|
150
|
-
task :mongrel_setup, :roles => :app do
|
151
|
-
run "#{in_current} mongrel_rails cluster::configure -e production -p #{mongrel_port} -N #{mongrel_count} -c #{deploy_to}/current -P log/mongrel.pid -l log/mongrel.log -a 127.0.0.1 --user www-data --group www-data"
|
152
|
-
run "#{in_current} echo 'config_script: config/mongrel_upload_progress.conf' >> config/mongrel_cluster.yml"
|
153
|
-
end
|
154
|
-
|
155
|
-
desc "Stop the drb upload_progress server"
|
156
|
-
task :stop_upload_progress , :roles => :app do
|
157
|
-
run "#{in_current} ruby lib/upload_progress_server.rb stop"
|
158
|
-
end
|
159
|
-
|
160
|
-
desc "Start the drb upload_progress server"
|
161
|
-
task :start_upload_progress , :roles => :app do
|
162
|
-
run "#{in_current} lib/upload_progress_server.rb start"
|
163
|
-
end
|
164
|
-
|
165
|
-
desc "Restart the upload_progress server"
|
166
|
-
task :restart_upload_progress, :roles => :app do
|
167
|
-
stop_upload_progress
|
168
|
-
start_upload_progress
|
169
|
-
end
|
170
|
-
|
171
|
-
desc "Start mongrel"
|
172
|
-
task :start, :roles => :app do
|
173
|
-
restart_upload_progress
|
174
|
-
run "#{in_current} mongrel_rails cluster::start"
|
175
|
-
end
|
176
|
-
|
177
|
-
desc "Stop mongrel"
|
178
|
-
task :stop, :roles => :app do
|
179
|
-
stop_upload_progress
|
180
|
-
run "#{in_current} mongrel_rails cluster::stop"
|
181
|
-
end
|
182
|
-
|
183
|
-
desc "Restart mongrel"
|
184
|
-
task :restart, :roles => :app do
|
185
|
-
stop
|
186
|
-
restart_upload_progress
|
187
|
-
start
|
188
|
-
end
|
189
|
-
|
190
|
-
#========================== APACHE2 ===============================#
|
191
|
-
desc "Update vhost configuration file"
|
192
|
-
task :create_vhost, :roles => :web do
|
193
|
-
unless self[:host]
|
194
|
-
puts "HOST not set (use -s host=...)"
|
195
|
-
else
|
196
|
-
vhost = render("config/vhost.rhtml",
|
197
|
-
:host => self[:host],
|
198
|
-
:static => apache2_static,
|
199
|
-
:deflate => apache2_deflate,
|
200
|
-
:debug_deflate => apache2_debug_deflate,
|
201
|
-
:debug_rewrite => apache2_debug_rewrite,
|
202
|
-
:balancer => db_name
|
203
|
-
)
|
204
|
-
put(vhost, "#{apache2_vhost_root}/#{self[:host]}")
|
205
|
-
|
206
|
-
run "test -e /etc/apache2/sites-enabled/#{self[:host]} || a2ensite #{self[:host]}" if debian_host
|
207
|
-
|
208
|
-
unless self[:host] =~ /^www/
|
209
|
-
vhost_www = render("config/vhost_www.rhtml",
|
210
|
-
:host => self[:host]
|
211
|
-
)
|
212
|
-
put(vhost_www, "#{apache2_vhost_root}/www.#{self[:host]}")
|
213
|
-
run "test -e /etc/apache2/sites-enabled/www.#{self[:host]} || a2ensite www.#{self[:host]}" if debian_host
|
214
|
-
end
|
215
|
-
run apache2_reload_cmd
|
216
|
-
end
|
217
|
-
end
|
218
|
-
|
219
|
-
#========================== APACHE2 ===============================#
|
220
|
-
desc "Update awstats configuration file"
|
221
|
-
task :create_awstats, :roles => :web do
|
222
|
-
unless debian_host
|
223
|
-
puts "skipping debian specific awstats"
|
224
|
-
else
|
225
|
-
unless self[:host] && self[:pass]
|
226
|
-
puts "host or password not set (use -s host=... -s pass=...)"
|
227
|
-
else
|
228
|
-
# create awstats config file
|
229
|
-
awstats_conf = render("config/awstats.conf.rhtml", :host => self[:host] )
|
230
|
-
put(awstats_conf, "/etc/awstats/awstats.#{self[:host]}.conf")
|
231
|
-
run "chown www-data:www-data /etc/awstats/awstats.#{self[:host]}.conf"
|
232
|
-
run "chmod 640 /etc/awstats/awstats.#{self[:host]}.conf"
|
233
|
-
|
234
|
-
# create stats vhost
|
235
|
-
stats_vhost = render("config/stats.vhost.rhtml", :host => self[:host] )
|
236
|
-
put(stats_vhost, "#{apache2_vhost_root}/stats.#{self[:host]}")
|
237
|
-
run "test -e /etc/apache2/sites-enabled/stats.#{self[:host]} || a2ensite stats.#{self[:host]}"
|
238
|
-
|
239
|
-
# directory setup for stats
|
240
|
-
run "test -e #{zena_sites}/#{self[:host]}/log/awstats || mkdir #{zena_sites}/#{self[:host]}/log/awstats"
|
241
|
-
run "chown www-data:www-data #{zena_sites}/#{self[:host]}/log/awstats"
|
242
|
-
|
243
|
-
# setup cron task for awstats
|
244
|
-
run "cat /etc/cron.d/awstats | grep \"#{self[:host]}\" || echo \"0,10,20,30,40,50 * * * * www-data [ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.#{self[:host]}.conf -a -r #{zena_sites}/#{self[:host]}/log/apache2.access.log ] && /usr/lib/cgi-bin/awstats.pl -config=#{self[:host]} -update >/dev/null\n\" >> /etc/cron.d/awstats"
|
245
|
-
|
246
|
-
# create .htpasswd file
|
247
|
-
run "test ! -e #{zena_sites}/#{self[:host]}/log/.awstatspw || rm #{zena_sites}/#{self[:host]}/log/.awstatspw"
|
248
|
-
run "htpasswd -c -b #{zena_sites}/#{self[:host]}/log/.awstatspw 'admin' '#{self[:pass]}'"
|
249
|
-
|
250
|
-
# reload apache
|
251
|
-
run "/etc/init.d/apache2 reload"
|
252
|
-
end
|
253
|
-
end
|
254
|
-
end
|
255
|
-
|
256
|
-
desc "Rename a webhost"
|
257
|
-
task :rename_host, :roles => :web do
|
258
|
-
unless self[:host] && self[:old_host]
|
259
|
-
puts "host or old_host not set (use -s host=... -s old_host=...)"
|
260
|
-
else
|
261
|
-
run "#{in_current} rake zena:rename_host OLD_HOST='#{self[:old_host]}' HOST='#{self[:host]}' RAILS_ENV='production'"
|
262
|
-
old_vhost_path = "#{apache2_vhost_root}/#{self[:old_host]}"
|
263
|
-
run "a2dissite #{self[:old_host]}"
|
264
|
-
run "test -e #{old_vhost_path} && rm #{old_vhost_path}"
|
265
|
-
# FIXME: remove old awstats vhost !!
|
266
|
-
create_vhost
|
267
|
-
create_awstats
|
268
|
-
clear_zafu
|
269
|
-
clear_cache
|
270
|
-
set_permissions
|
271
|
-
end
|
272
|
-
end
|
273
|
-
|
274
|
-
desc "Apache2 initial setup"
|
275
|
-
task :apache2_setup, :roles => :web do
|
276
|
-
ports = (mongrel_port.to_i...(mongrel_port.to_i + mongrel_count.to_i)).to_a
|
277
|
-
httpd_conf = render("config/httpd.rhtml", :balancer => db_name, :ports => ports)
|
278
|
-
if debian_host
|
279
|
-
put(httpd_conf, "/etc/apache2/conf.d/#{db_name}")
|
280
|
-
else
|
281
|
-
put(httpd_conf, "/etc/apache2/conf.d/#{db_name}")
|
282
|
-
end
|
283
|
-
|
284
|
-
run "test -e /etc/apache2/sites-enabled/000-default && a2dissite default || echo 'default already disabled'"
|
285
|
-
run "test -e /etc/apache2/mods-enabled/rewrite.load || a2enmod rewrite"
|
286
|
-
run "test -e /etc/apache2/mods-enabled/deflate.load || a2enmod deflate"
|
287
|
-
run "test -e /etc/apache2/mods-enabled/proxy_balancer.load || a2enmod proxy_balancer"
|
288
|
-
run "test -e /etc/apache2/mods-enabled/proxy.load || a2enmod proxy"
|
289
|
-
run "test -e /etc/apache2/mods-enabled/proxy_http.load || a2enmod proxy_http"
|
290
|
-
run "test -e /etc/apache2/mods-enabled/expires.load || a2enmod expires"
|
291
|
-
run "/etc/init.d/apache2 force-reload"
|
292
|
-
end
|
293
|
-
|
294
|
-
#========================== MYSQL ===============================#
|
295
|
-
|
296
|
-
desc "set database.yml file according to settings"
|
297
|
-
task :db_update_config, :roles => :app do
|
298
|
-
db_app_config = render("config/database.rhtml",
|
299
|
-
:db_name => db_name,
|
300
|
-
:db_user => db_user,
|
301
|
-
:db_password => db_password
|
302
|
-
)
|
303
|
-
put(db_app_config, "#{deploy_to}/current/config/database.yml")
|
304
|
-
end
|
305
|
-
|
306
|
-
desc "create database"
|
307
|
-
task :db_create, :roles => :db do
|
308
|
-
on_rollback do
|
309
|
-
run "mysql -u root -p -e \"DROP DATABASE #{db_name};\"" do |channel, stream, data|
|
310
|
-
if data =~ /^Enter password:\s*/m
|
311
|
-
logger.info "#{channel[:host]} asked for password"
|
312
|
-
channel.send_data "#{password}\n"
|
313
|
-
end
|
314
|
-
puts data
|
315
|
-
end
|
316
|
-
end
|
317
|
-
|
318
|
-
run "mysql -u root -p -e \"CREATE DATABASE #{db_name} DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; GRANT ALL ON #{db_name}.* TO '#{db_user}'@'localhost' IDENTIFIED BY '#{db_password}';\"" do |channel, stream, data|
|
319
|
-
if data =~ /^Enter password:\s*/m
|
320
|
-
logger.info "#{channel[:host]} asked for password"
|
321
|
-
channel.send_data "#{password}\n"
|
322
|
-
end
|
323
|
-
puts data
|
324
|
-
end
|
325
|
-
end
|
326
|
-
|
327
|
-
desc "initial database setup"
|
328
|
-
task :db_setup, :roles => :db do
|
329
|
-
transaction do
|
330
|
-
db_create
|
331
|
-
end
|
332
|
-
end
|
333
|
-
|
334
|
-
|
335
|
-
desc "Full initial setup"
|
336
|
-
task :initial_setup do
|
337
|
-
transaction do
|
338
|
-
app_setup
|
339
|
-
|
340
|
-
db_setup
|
341
|
-
|
342
|
-
deploy::update
|
343
|
-
|
344
|
-
mongrel_setup
|
345
|
-
|
346
|
-
apache2_setup
|
347
|
-
|
348
|
-
set_permissions
|
349
|
-
|
350
|
-
start
|
351
|
-
end
|
1
|
+
set :db_name, "zena" # If you change this: no dots in this name !
|
2
|
+
set :server_ip, nil # FIXME: set this to your remote server IP in the form: "215.0.0.1"
|
3
|
+
set :mongrel_port, "8000"
|
4
|
+
set :mongrel_count, "3"
|
5
|
+
set :db_password, nil # FIXME: set password (can be anything).
|
6
|
+
set :db_user, "zena"
|
7
|
+
set :repository, "http://svn.zenadmin.org/zena/trunk"
|
8
|
+
|
9
|
+
if self[:server_ip]
|
10
|
+
#================= ADVANCED SETTINGS =============#
|
11
|
+
|
12
|
+
set :deploy_to, "/var/zena"
|
13
|
+
set :sites_root, "/var/www/zena"
|
14
|
+
set :vhost_root, "/etc/apache2/sites-available"
|
15
|
+
set :deflate, true
|
16
|
+
set :debug_deflate, false
|
17
|
+
set :debug_rewrite, false
|
18
|
+
set :static, []
|
19
|
+
set :apache2_reload_cmd, "/etc/init.d/apache2 reload"
|
20
|
+
set :debian_host, true
|
21
|
+
set :ssh_user, "root"
|
22
|
+
|
23
|
+
role :web, "#{ssh_user}@#{server_ip}"
|
24
|
+
role :app, "#{ssh_user}@#{server_ip}"
|
25
|
+
role :db, "#{ssh_user}@#{server_ip}", :primary => true
|
26
|
+
|
27
|
+
#================= END ADVANCED SETTINGS ==========#
|
28
|
+
require 'zena/deploy'
|
29
|
+
|
30
|
+
else
|
31
|
+
puts <<-TXT
|
32
|
+
***********************************************************
|
33
|
+
You should fix your configurations file 'config/deploy.rb'
|
34
|
+
before running capistrano
|
35
|
+
***********************************************************
|
36
|
+
TXT
|
352
37
|
end
|
353
38
|
|
354
|
-
desc "Database dump"
|
355
|
-
task :db_dump, :roles => :db do
|
356
|
-
run "mysqldump #{db_name} -u root -p > #{deploy_to}/current/#{db_name}.sql" do |channel, stream, data|
|
357
|
-
if data =~ /^Enter password:\s*/m
|
358
|
-
logger.info "#{channel[:host]} asked for password"
|
359
|
-
channel.send_data "#{password}\n"
|
360
|
-
end
|
361
|
-
puts data
|
362
|
-
end
|
363
|
-
run "#{in_current} tar czf #{db_name}.sql.tgz #{db_name}.sql"
|
364
|
-
run "#{in_current} rm #{db_name}.sql"
|
365
|
-
end
|
366
|
-
|
367
|
-
desc "Get backup file back"
|
368
|
-
task :get_backup, :roles => :app do
|
369
|
-
get "#{deploy_to}/current/#{db_name}_data.tgz", "./#{db_name}_#{Time.now.strftime '%Y-%m-%d-%H'}.tgz"
|
370
|
-
end
|
371
|
-
|
372
|
-
# FIXME: backup not loading data for every site...
|
373
|
-
desc "Backup all data and bring it backup here"
|
374
|
-
task :backup, :roles => :app do
|
375
|
-
db_dump
|
376
|
-
# key track of the current svn revision for app
|
377
|
-
|
378
|
-
run "#{in_current} svn info > #{deploy_to}/current/zena_version.txt"
|
379
|
-
run "#{in_current} rake zena:full_backup RAILS_ENV='production'"
|
380
|
-
run "#{in_current} tar czf #{db_name}_data.tgz #{db_name}.sql.tgz sites_data.tgz zena_version.txt"
|
381
|
-
get_backup
|
382
|
-
end
|
data/config/gems.yml
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
hpricot:
|
2
2
|
gettext: '= 1.93.0'
|
3
3
|
querybuilder: '= 0.5.6'
|
4
|
-
rubyless: '= 0.3.
|
4
|
+
rubyless: '= 0.3.3'
|
5
5
|
ruby-recaptcha: '= 1.0.0'
|
6
6
|
syntax: '= 1.0.0'
|
7
|
-
tzinfo: '
|
7
|
+
tzinfo: '>= 0.3.12'
|
8
8
|
uuidtools: '= 2.0.0'
|
9
9
|
rails: '= 2.3.4'
|
10
10
|
json: '>= 1.1.9'
|
@@ -17,12 +17,7 @@ RedCloth:
|
|
17
17
|
# lib: 'RMagick'
|
18
18
|
# version: '= 2.11.1'
|
19
19
|
|
20
|
-
sqlite3-ruby:
|
21
|
-
lib: 'sqlite3'
|
22
|
-
version: '>= 1.2.4'
|
23
|
-
|
24
20
|
yamltest:
|
25
|
-
development_only: yes
|
26
21
|
version: '= 0.5.3'
|
27
22
|
|
28
23
|
grosser-fast_gettext:
|
data/db/schema.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# This file is auto-generated from the current state of the database. Instead of editing this file,
|
1
|
+
# This file is auto-generated from the current state of the database. Instead of editing this file,
|
2
2
|
# please use the migrations feature of Active Record to incrementally modify your database, and
|
3
3
|
# then regenerate this schema definition.
|
4
4
|
#
|
@@ -9,7 +9,7 @@
|
|
9
9
|
#
|
10
10
|
# It's strongly recommended to check this file into your version control system.
|
11
11
|
|
12
|
-
ActiveRecord::Schema.define(:version =>
|
12
|
+
ActiveRecord::Schema.define(:version => 20091018200734) do
|
13
13
|
|
14
14
|
create_table "cached_pages", :force => true do |t|
|
15
15
|
t.text "path"
|
@@ -134,6 +134,7 @@ ActiveRecord::Schema.define(:version => 20091014183726) do
|
|
134
134
|
t.integer "gravity"
|
135
135
|
t.integer "width"
|
136
136
|
t.integer "height"
|
137
|
+
t.string "popup", :limit => 120
|
137
138
|
end
|
138
139
|
|
139
140
|
create_table "links", :force => true do |t|
|
data/lib/gettext_strings.rb
CHANGED
@@ -89,6 +89,14 @@ module Zena
|
|
89
89
|
N_('status_10') # removed
|
90
90
|
N_('status_0') # deleted
|
91
91
|
|
92
|
+
N_('status_50_img') # published
|
93
|
+
N_('status_60_img') # proposed
|
94
|
+
N_('status_65_img') # proposed with
|
95
|
+
N_('status_70_img') # redaction
|
96
|
+
N_('status_20_img') # replaced
|
97
|
+
N_('status_10_img') # removed
|
98
|
+
N_('status_0_img') # deleted
|
99
|
+
|
92
100
|
N_('en')
|
93
101
|
N_('fr')
|
94
102
|
N_('de')
|
data/lib/tasks/zena.rake
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'yaml'
|
2
2
|
require 'fileutils'
|
3
3
|
|
4
|
-
require File.join(File.dirname(__FILE__), '..', 'zena
|
4
|
+
require File.join(File.dirname(__FILE__), '..', 'zena', 'info') # to have Zena::ROOT
|
5
5
|
|
6
6
|
def symlink_assets(from, to)
|
7
7
|
from = File.expand_path(from)
|
@@ -12,7 +12,7 @@ def symlink_assets(from, to)
|
|
12
12
|
# we could create a symlink in the sites dir to 'shared' -> /var/zena/current/public
|
13
13
|
# and then symlink with "#{host_path}/public/#{dir}" -> "../shared/public/#{dir}"
|
14
14
|
# OR we could symlink /var/zena/current/...
|
15
|
-
['calendar', 'images', 'javascripts', 'stylesheets'
|
15
|
+
['calendar', 'images', 'javascripts', 'stylesheets'].each do |dir|
|
16
16
|
File.unlink("#{to}/public/#{dir}") if File.symlink?("#{to}/public/#{dir}")
|
17
17
|
if File.exist?("#{to}/public/#{dir}")
|
18
18
|
if File.directory?("#{to}/public/#{dir}")
|
@@ -39,23 +39,41 @@ def copy_assets(from, to)
|
|
39
39
|
from = File.expand_path(from)
|
40
40
|
to = File.expand_path(to)
|
41
41
|
return if from == to
|
42
|
+
['config/mongrel_upload_progress.conf', 'lib/upload_progress_server.rb', 'config/deploy.rb', 'db/migrate/*.rb', 'public/**/*'].each do |base_path|
|
43
|
+
if base_path =~ /\*/
|
44
|
+
Dir["#{from}/#{base_path}"].each do |path|
|
45
|
+
path = path[(from.length + 1)..-1]
|
46
|
+
next if File.directory?(path)
|
47
|
+
copy_files("#{from}/#{path}", "#{to}/#{path}")
|
48
|
+
end
|
49
|
+
else
|
50
|
+
copy_files("#{from}/#{base_path}", "#{to}/#{base_path}")
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
42
54
|
|
43
|
-
|
44
|
-
|
55
|
+
def copy_files(from, to)
|
56
|
+
base = File.dirname(to)
|
57
|
+
unless File.exist?(base)
|
58
|
+
FileUtils.mkpath(base)
|
59
|
+
end
|
60
|
+
if File.directory?(from)
|
61
|
+
Dir.foreach(from) do |f|
|
62
|
+
next if f =~ /\A./
|
63
|
+
copy_files("#{from}/#{f}", "#{to}/#{f}")
|
64
|
+
end
|
65
|
+
else
|
66
|
+
FileUtils.cp(from, base)
|
45
67
|
end
|
46
68
|
end
|
47
69
|
|
48
70
|
namespace :zena do
|
49
|
-
desc "
|
50
|
-
task :
|
51
|
-
puts "zena:setup"
|
71
|
+
desc "Copy latest assets from zena gem to application (images, stylesheets, javascripts)."
|
72
|
+
task :assets => :zena_config do
|
52
73
|
if Zena::ROOT == RAILS_ROOT
|
53
74
|
puts "Copy assets should only be used when zena is loaded externally (via gem for example)."
|
54
75
|
else
|
55
|
-
symlink_assets(Zena::ROOT, RAILS_ROOT)
|
56
|
-
puts "* symlinked assets"
|
57
76
|
copy_assets(Zena::ROOT, RAILS_ROOT)
|
58
|
-
puts "* copied assets"
|
59
77
|
end
|
60
78
|
end
|
61
79
|
|
@@ -103,7 +121,7 @@ namespace :zena do
|
|
103
121
|
FileUtils.mkpath("#{host_path}/#{dir}")
|
104
122
|
end
|
105
123
|
|
106
|
-
symlink_assets(
|
124
|
+
symlink_assets(RAILS_ROOT, host_path)
|
107
125
|
end
|
108
126
|
end
|
109
127
|
|
@@ -210,7 +228,7 @@ namespace :zena do
|
|
210
228
|
end
|
211
229
|
else
|
212
230
|
# migrate all to latest
|
213
|
-
paths = {'zena' => "#{
|
231
|
+
paths = {'zena' => "#{RAILS_ROOT}/db/migrate"}
|
214
232
|
bricks = ['zena']
|
215
233
|
|
216
234
|
Bricks::Patcher.foreach_brick do |brick_path|
|
data/lib/zena/app.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'info')
|
1
2
|
module Zena
|
2
3
|
module App
|
3
4
|
def self.included(base)
|
@@ -28,6 +29,7 @@ module Zena
|
|
28
29
|
helper Zena::Use::I18n::ViewMethods
|
29
30
|
helper Zena::Use::NestedAttributesAlias::ViewMethods
|
30
31
|
helper Zena::Use::Refactor::ViewMethods
|
32
|
+
helper Zena::Use::Rendering::ViewMethods
|
31
33
|
helper Zena::Use::Urls::ViewMethods
|
32
34
|
helper Zena::Use::Zafu::ViewMethods
|
33
35
|
helper Zena::Use::Zazen::ViewMethods
|
File without changes
|
File without changes
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# zena apache2 setup for <%= config[:balancer] %>
|
2
|
+
# automatically generated file
|
3
|
+
|
4
|
+
NameVirtualHost *
|
5
|
+
<% if config[:app_type] == :passenger %>
|
6
|
+
LoadModule upload_progress_module <%= config[:app_root] %>/vendor/apache2_upload_progress/mod_upload_progress.so
|
7
|
+
<% elsif config[:app_type] == :mongrel %>
|
8
|
+
<Proxy *>
|
9
|
+
Order allow,deny
|
10
|
+
Allow from all
|
11
|
+
</Proxy>
|
12
|
+
<Proxy balancer://<%= config[:balancer] %>><% config[:ports].each do |port| %>
|
13
|
+
BalancerMember http://127.0.0.1:<%= port %><% end %>
|
14
|
+
</Proxy>
|
15
|
+
<% end %>
|
16
|
+
|
17
|
+
<ifmodule mode_expires.c>
|
18
|
+
<filesmatch "\.(jpg|gif|png|css|js)$">
|
19
|
+
ExpiresActive on
|
20
|
+
ExpiresDefault "access plus 1 year"
|
21
|
+
</filesmatch>
|
22
|
+
</ifmodule>
|
@@ -3,8 +3,8 @@
|
|
3
3
|
<html lang='en' xmlns='http://www.w3.org/1999/xhtml'>
|
4
4
|
<head>
|
5
5
|
<title>zena</title>
|
6
|
-
<script src="
|
7
|
-
<script src="
|
6
|
+
<script src="../../../public/javascripts/prototype.js" type="text/javascript"></script>
|
7
|
+
<script src="../../../public/javascripts/effects.js" type="text/javascript"></script>
|
8
8
|
|
9
9
|
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
|
10
10
|
<style>
|
File without changes
|
@@ -1,17 +1,22 @@
|
|
1
1
|
require 'digest/sha1'
|
2
|
-
require 'zena/
|
2
|
+
require 'zena/info'
|
3
3
|
# This is a rails template to generate a basic zena application
|
4
4
|
|
5
5
|
run 'rm public/index.html'
|
6
6
|
|
7
|
-
gem 'zena'
|
7
|
+
gem 'zena', :version => Zena::VERSION
|
8
8
|
route 'map.zen_routes'
|
9
9
|
|
10
10
|
rakefile("zena_tasks.rake") do
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
<<-TASK
|
12
|
+
# sync zena tasks to gem version
|
13
|
+
env = File.read(File.join(File.dirname(__FILE__), '..', '..', 'config', 'environment.rb'))
|
14
|
+
if env =~ /config.gem.*zena.*version.*'(.*?)'/
|
15
|
+
gem 'zena', "= \#{$1}"
|
16
|
+
end
|
17
|
+
require 'zena'
|
18
|
+
require 'tasks/zena'
|
19
|
+
TASK
|
15
20
|
end
|
16
21
|
|
17
22
|
['development', 'test', 'production'].each do |env|
|
@@ -27,13 +32,13 @@ inside('app/controllers') do
|
|
27
32
|
end
|
28
33
|
end
|
29
34
|
|
30
|
-
rake
|
35
|
+
rake 'zena:assets'
|
31
36
|
rake 'db:create'
|
32
37
|
rake 'zena:migrate'
|
33
38
|
rake "zena:mksite HOST='localhost' PASSWORD='admin' LANG='en'"
|
34
39
|
inside('.') do
|
35
40
|
run 'rake zena:migrate RAILS_ENV=production'
|
36
41
|
run "rake zena:mksite HOST='localhost' PASSWORD='admin' LANG='en' RAILS_ENV=production"
|
37
|
-
run "#{Gem.win_platform? ? 'start' : 'open'} #{File.join(Zena::ROOT, '
|
42
|
+
run "#{Gem.win_platform? ? 'start' : 'open'} #{File.join(Zena::ROOT, 'lib/zena/deploy/start.html')}"
|
38
43
|
exec "script/server -e production -p 3211"
|
39
44
|
end
|