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/lib/zena/use/rendering.rb
CHANGED
@@ -3,8 +3,21 @@ require 'tempfile'
|
|
3
3
|
module Zena
|
4
4
|
module Use
|
5
5
|
module Rendering
|
6
|
+
module ViewMethods
|
7
|
+
def render_js
|
8
|
+
return '' unless self.js_data
|
9
|
+
javascript_tag(self.js_data.join("\n"))
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
6
13
|
module ControllerMethods
|
14
|
+
def self.included(base)
|
15
|
+
base.send(:helper_attr, :js_data)
|
16
|
+
end
|
7
17
|
|
18
|
+
def js_data
|
19
|
+
@js_data ||= []
|
20
|
+
end
|
8
21
|
|
9
22
|
# TODO: test
|
10
23
|
# Our own handling of exceptions
|
data/lib/zena/use/zafu.rb
CHANGED
@@ -34,20 +34,30 @@ module Zena
|
|
34
34
|
src2, mode2 = $1, $2
|
35
35
|
end
|
36
36
|
|
37
|
+
paths = []
|
37
38
|
if src[0..0] == '/'
|
38
|
-
|
39
|
-
|
39
|
+
paths << src[1..-1]
|
40
|
+
paths << src2[1..-1] if src2
|
40
41
|
else
|
41
|
-
|
42
|
-
|
42
|
+
paths << (current_folder + '/' + src)
|
43
|
+
paths << (current_folder + '/' + src2) if src2
|
43
44
|
end
|
44
45
|
|
45
46
|
# make sure path elements are url_names
|
46
|
-
|
47
|
-
|
47
|
+
paths.map! do |path|
|
48
|
+
res = []
|
49
|
+
path.split('/').each do |e|
|
50
|
+
if e == '..'
|
51
|
+
res.pop
|
52
|
+
else
|
53
|
+
res << e.url_name
|
54
|
+
end
|
55
|
+
end
|
56
|
+
res.join('/')
|
57
|
+
end
|
48
58
|
|
49
|
-
if asset = secure(Document) { Document.find_by_path(
|
50
|
-
elsif src2 && (asset = secure(Document) { Document.find_by_path(
|
59
|
+
if asset = secure(Document) { Document.find_by_path(paths[0]) }
|
60
|
+
elsif src2 && (asset = secure(Document) { Document.find_by_path(paths[1]) })
|
51
61
|
mode = mode2
|
52
62
|
else
|
53
63
|
return nil
|
@@ -283,10 +293,12 @@ module Zena
|
|
283
293
|
dev_box << " <li>skins used: #{skin_names.join(', ')}</li>\n"
|
284
294
|
dev_box << " </ul>\n </li>\n</ul></div>"
|
285
295
|
if res =~ /<\/body>/
|
286
|
-
res.sub!('</body>', "#{dev_box}
|
296
|
+
res.sub!('</body>', "#{dev_box}<%= render_js %></body>")
|
287
297
|
else
|
288
298
|
res << dev_box
|
289
299
|
end
|
300
|
+
else
|
301
|
+
res.sub!('</body>', "<%= render_js %></body>")
|
290
302
|
end
|
291
303
|
|
292
304
|
secure!(CachedPage) { CachedPage.create(
|
data/lib/zena.rb
CHANGED
@@ -2,11 +2,8 @@
|
|
2
2
|
require 'yaml'
|
3
3
|
require 'date'
|
4
4
|
require 'fileutils'
|
5
|
+
require File.join(File.dirname(__FILE__), 'zena', 'info')
|
5
6
|
|
6
|
-
AUTHENTICATED_PREFIX = "oo"
|
7
|
-
SITES_ROOT = "#{RAILS_ROOT}/sites"
|
8
|
-
PASSWORD_SALT = "jf93jfnvnas09093nas0923" # type anything here (but change this line !)
|
9
|
-
ZENA_CALENDAR_LANGS = ["en", "fr"] # FIXME: build this dynamically from existing files
|
10
7
|
def has_executable(*list)
|
11
8
|
list.inject(true) do |s,e|
|
12
9
|
s && !(`which #{e} || echo 'no #{e}'` =~ /^no #{e}/)
|
@@ -16,17 +13,13 @@ ENABLE_LATEX = true && has_executable('pdflatex') # enable LateX post-renderi
|
|
16
13
|
ENABLE_FOP = true && has_executable('fop', 'xsltproc') # enable xsl-fo post-rendering
|
17
14
|
ENABLE_MATH = true && has_executable('latex', 'dvips', 'convert', 'gs')
|
18
15
|
ENABLE_ZENA_UP = false && has_executable('zena_up')
|
19
|
-
ENABLE_XSENDFILE = false
|
20
16
|
|
21
17
|
UPLOAD_KEY = defined?(Mongrel) ? 'upload_id' : "X-Progress-ID"
|
22
18
|
|
23
19
|
require 'bricks/patcher'
|
24
20
|
|
25
21
|
module Zena
|
26
|
-
VERSION
|
27
|
-
REVISION = 1336
|
28
|
-
ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
29
|
-
|
22
|
+
# VERSION is defined in root.rb
|
30
23
|
class << self
|
31
24
|
attr_accessor :tools_enabled
|
32
25
|
def add_load_paths(config = nil)
|
@@ -180,8 +173,8 @@ end
|
|
180
173
|
|
181
174
|
|
182
175
|
# test if DRB started
|
183
|
-
|
184
|
-
puts "\n** WARNING: drb server not running. Upload progress will not work."
|
176
|
+
if RAILS_ENV == 'production' && defined?(Mongrel) && !File.exist?(File.join(File.dirname(__FILE__), '..', 'log', 'upload_progress_drb.pid'))
|
177
|
+
puts "\n** WARNING: drb server not running. Upload progress will not work using Mongrel."
|
185
178
|
puts " * WARNING: you should start the drb server with 'lib/upload_progress_server.rb start'\n\n"
|
186
179
|
end
|
187
180
|
|
Binary file
|
data/locale/en/zena.po
CHANGED
@@ -2,7 +2,7 @@ msgid ""
|
|
2
2
|
msgstr ""
|
3
3
|
"Project-Id-Version: 0.9.0\n"
|
4
4
|
"POT-Creation-Date: 2008-09-26 20:39-0000\n"
|
5
|
-
"PO-Revision-Date:
|
5
|
+
"PO-Revision-Date: 2009-10-17 21:34+0100\n"
|
6
6
|
"Last-Translator: Gaspard Bucher <gaspard@teti.ch>\n"
|
7
7
|
"Language-Team: en <gaspard@teti.ch>\n"
|
8
8
|
"MIME-Version: 1.0\n"
|
@@ -1816,6 +1816,34 @@ msgstr "removed"
|
|
1816
1816
|
msgid "status_0"
|
1817
1817
|
msgstr "deleted"
|
1818
1818
|
|
1819
|
+
#: lib/gettext_strings.rb:92
|
1820
|
+
msgid "status_50_img"
|
1821
|
+
msgstr "<img src='/images/weather_sun.png'/>"
|
1822
|
+
|
1823
|
+
#: lib/gettext_strings.rb:93
|
1824
|
+
msgid "status_60_img"
|
1825
|
+
msgstr "<img src='/images/magnifier.png'/>"
|
1826
|
+
|
1827
|
+
#: lib/gettext_strings.rb:94
|
1828
|
+
msgid "status_65_img"
|
1829
|
+
msgstr "<img src='/images/magnifier.png'/>"
|
1830
|
+
|
1831
|
+
#: lib/gettext_strings.rb:95
|
1832
|
+
msgid "status_70_img"
|
1833
|
+
msgstr "<img src='/images/pencil.png'/>"
|
1834
|
+
|
1835
|
+
#: lib/gettext_strings.rb:96
|
1836
|
+
msgid "status_20_img"
|
1837
|
+
msgstr "<img src='/images/weather_clouds.png'/>"
|
1838
|
+
|
1839
|
+
#: lib/gettext_strings.rb:97
|
1840
|
+
msgid "status_10_img"
|
1841
|
+
msgstr "<img src='/images/weather_rain.png'/>"
|
1842
|
+
|
1843
|
+
#: lib/gettext_strings.rb:98
|
1844
|
+
msgid "status_0_img"
|
1845
|
+
msgstr "<img src='/images/weather_lightning.png'/>"
|
1846
|
+
|
1819
1847
|
#: lib/gettext_strings.rb:94
|
1820
1848
|
msgid "en"
|
1821
1849
|
msgstr "english"
|
Binary file
|
data/locale/fr/zena.po
CHANGED
@@ -2,7 +2,7 @@ msgid ""
|
|
2
2
|
msgstr ""
|
3
3
|
"Project-Id-Version: 0.9.0\n"
|
4
4
|
"POT-Creation-Date: 2008-09-26 20:39-0000\n"
|
5
|
-
"PO-Revision-Date:
|
5
|
+
"PO-Revision-Date: 2009-10-17 21:32+0100\n"
|
6
6
|
"Last-Translator: Gaspard Bucher <gaspard@teti.ch>\n"
|
7
7
|
"Language-Team: fr <gaspard@teti.ch>\n"
|
8
8
|
"MIME-Version: 1.0\n"
|
@@ -1810,6 +1810,34 @@ msgstr "enlevé"
|
|
1810
1810
|
msgid "status_0"
|
1811
1811
|
msgstr "effacé"
|
1812
1812
|
|
1813
|
+
#: lib/gettext_strings.rb:92
|
1814
|
+
msgid "status_50_img"
|
1815
|
+
msgstr "<img src='/images/weather_sun.png'/>"
|
1816
|
+
|
1817
|
+
#: lib/gettext_strings.rb:93
|
1818
|
+
msgid "status_60_img"
|
1819
|
+
msgstr "<img src='/images/magnifier.png'/>"
|
1820
|
+
|
1821
|
+
#: lib/gettext_strings.rb:94
|
1822
|
+
msgid "status_65_img"
|
1823
|
+
msgstr "<img src='/images/magnifier.png'/>"
|
1824
|
+
|
1825
|
+
#: lib/gettext_strings.rb:95
|
1826
|
+
msgid "status_70_img"
|
1827
|
+
msgstr "<img src='/images/pencil.png'/>"
|
1828
|
+
|
1829
|
+
#: lib/gettext_strings.rb:96
|
1830
|
+
msgid "status_20_img"
|
1831
|
+
msgstr "<img src='/images/weather_clouds.png'/>"
|
1832
|
+
|
1833
|
+
#: lib/gettext_strings.rb:97
|
1834
|
+
msgid "status_10_img"
|
1835
|
+
msgstr "<img src='/images/weather_rain.png'/>"
|
1836
|
+
|
1837
|
+
#: lib/gettext_strings.rb:98
|
1838
|
+
msgid "status_0_img"
|
1839
|
+
msgstr "<img src='/images/weather_lightning.png'/>"
|
1840
|
+
|
1813
1841
|
#: lib/gettext_strings.rb:94
|
1814
1842
|
msgid "en"
|
1815
1843
|
msgstr "anglais"
|
data/locale/zena.pot
CHANGED
@@ -1665,6 +1665,34 @@ msgstr ""
|
|
1665
1665
|
msgid "status_0"
|
1666
1666
|
msgstr ""
|
1667
1667
|
|
1668
|
+
#: lib/gettext_strings.rb:92
|
1669
|
+
msgid "status_50_img"
|
1670
|
+
msgstr ""
|
1671
|
+
|
1672
|
+
#: lib/gettext_strings.rb:93
|
1673
|
+
msgid "status_60_img"
|
1674
|
+
msgstr ""
|
1675
|
+
|
1676
|
+
#: lib/gettext_strings.rb:94
|
1677
|
+
msgid "status_65_img"
|
1678
|
+
msgstr ""
|
1679
|
+
|
1680
|
+
#: lib/gettext_strings.rb:95
|
1681
|
+
msgid "status_70_img"
|
1682
|
+
msgstr ""
|
1683
|
+
|
1684
|
+
#: lib/gettext_strings.rb:96
|
1685
|
+
msgid "status_20_img"
|
1686
|
+
msgstr ""
|
1687
|
+
|
1688
|
+
#: lib/gettext_strings.rb:97
|
1689
|
+
msgid "status_10_img"
|
1690
|
+
msgstr ""
|
1691
|
+
|
1692
|
+
#: lib/gettext_strings.rb:98
|
1693
|
+
msgid "status_0_img"
|
1694
|
+
msgstr ""
|
1695
|
+
|
1668
1696
|
#: lib/gettext_strings.rb:94
|
1669
1697
|
msgid "en"
|
1670
1698
|
msgstr ""
|
Binary file
|
Binary file
|
@@ -1,3 +1,6 @@
|
|
1
|
+
// This progress bar JS comes from Piotr Sarnacki (I think)
|
2
|
+
// the code has been adapted for zena for a nicer progression (Morph)
|
3
|
+
// and to fix some strange Safari bugs.
|
1
4
|
|
2
5
|
function submitUploadForm(form, uuid) {
|
3
6
|
if ($('progress_bar' + uuid)) return;
|
@@ -7,10 +10,11 @@ function submitUploadForm(form, uuid) {
|
|
7
10
|
$(document.body).insert('<iframe id="UploadIFrame" name="UploadIFrame" src="about:blank"></iframe>');
|
8
11
|
}
|
9
12
|
$(form).target = 'UploadIFrame';
|
10
|
-
$(form).submit();
|
11
13
|
if (need_progress) {
|
12
|
-
|
14
|
+
// make sure the POST occurs before (Safari Bug)
|
15
|
+
UploadProgress.monitor(uuid, form);
|
13
16
|
}
|
17
|
+
$(form).submit();
|
14
18
|
}
|
15
19
|
|
16
20
|
//
|
@@ -34,8 +38,9 @@ var UploadProgress = {
|
|
34
38
|
period: 1.0,
|
35
39
|
morphPeriod: 1.2,
|
36
40
|
uuid: '',
|
41
|
+
submitted: false,
|
37
42
|
|
38
|
-
monitor: function(uuid) {
|
43
|
+
monitor: function(uuid, form) {
|
39
44
|
this.uuid = uuid;
|
40
45
|
this.buildProgressBar();
|
41
46
|
this.setAsStarting();
|
@@ -49,6 +54,11 @@ var UploadProgress = {
|
|
49
54
|
UploadProgress.update(upload.size, upload.received);
|
50
55
|
} else if (upload.state == 'done') {
|
51
56
|
UploadProgress.setAsFinished();
|
57
|
+
} else if (upload.state == 'starting' && !this.submitted) {
|
58
|
+
// This is to solve a bug in Safari where the form is sometimes not
|
59
|
+
// submitted before the monitoring occurs. We just resubmit the form.
|
60
|
+
this.submitted = true;
|
61
|
+
$(form).submit();
|
52
62
|
} else {
|
53
63
|
UploadProgress.message(upload.state);
|
54
64
|
}
|
data/public/javascripts/zena.js
CHANGED
@@ -39,38 +39,42 @@ Zena.save = function(url, form, close_on_complete) {
|
|
39
39
|
}
|
40
40
|
}
|
41
41
|
|
42
|
-
var diff_from =
|
43
|
-
var diff_to
|
44
|
-
var diff_next_sel = 'from';
|
42
|
+
var diff_from = false;
|
43
|
+
var diff_to = false;
|
45
44
|
|
46
45
|
Zena.diff_select = function(tag) {
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
46
|
+
tag_number = parseInt(tag.innerHTML);
|
47
|
+
if (tag == diff_from || tag == diff_to) {
|
48
|
+
// reset
|
49
|
+
if (diff_from) diff_from.style.background = 'none';
|
50
|
+
if (diff_to ) diff_to.style.background = 'none';
|
51
|
+
diff_from = false;
|
52
|
+
diff_to = false;
|
53
|
+
opener.window.location.href = '/nodes/' + $('node_zip').innerHTML;
|
54
|
+
return;
|
55
|
+
} else if (diff_to && diff_from) {
|
56
|
+
// update
|
57
|
+
if (parseInt(diff_to.innerHTML) - tag_number < tag_number - parseInt(diff_from.innerHTML)) {
|
55
58
|
diff_to.style.background = 'none';
|
59
|
+
diff_to = tag;
|
60
|
+
} else {
|
61
|
+
diff_from.style.background = 'none';
|
62
|
+
diff_from = tag;
|
56
63
|
}
|
64
|
+
} else if (!diff_to) {
|
57
65
|
diff_to = tag;
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
diff_from = diff_to;
|
63
|
-
diff_to = tmp;
|
64
|
-
if (diff_next_sel == 'from') {
|
65
|
-
diff_next_sel = 'to';
|
66
|
+
} else {
|
67
|
+
if (tag_number > parseInt(diff_to.innerHTML)) {
|
68
|
+
diff_from = diff_to;
|
69
|
+
diff_to = tag;
|
66
70
|
} else {
|
67
|
-
|
71
|
+
diff_from = tag;
|
68
72
|
}
|
69
73
|
}
|
70
74
|
|
71
|
-
diff_from.style.background = '#7A6414';
|
72
|
-
diff_to.style.background
|
73
|
-
if (diff_from
|
75
|
+
if (diff_from) diff_from.style.background = '#7A6414';
|
76
|
+
if (diff_to) diff_to.style.background = '#FAD12A';
|
77
|
+
if (diff_from && diff_to) {
|
74
78
|
opener.Zena.version_diff($('node_zip').innerHTML, diff_from, diff_to);
|
75
79
|
}
|
76
80
|
}
|
@@ -498,4 +502,154 @@ Zena.select_tab = function(name) {
|
|
498
502
|
current_tab = $(name+'_tab');
|
499
503
|
current_sel.className = 'selected';
|
500
504
|
current_tab.style.display = '';
|
505
|
+
}
|
506
|
+
|
507
|
+
Zena.popup_gallery = null;
|
508
|
+
|
509
|
+
Zena.popup = function(elem) {
|
510
|
+
var offsets = elem.positionedOffset();
|
511
|
+
var e_left = offsets[0];
|
512
|
+
var e_top = offsets[1];
|
513
|
+
var e_width = elem.clientWidth;
|
514
|
+
var e_height = elem.clientHeight;
|
515
|
+
var config = elem._popup;
|
516
|
+
|
517
|
+
var cont = $('pg_cont');
|
518
|
+
// FIXME copy border style from 'elem'
|
519
|
+
var border_width = 1;
|
520
|
+
|
521
|
+
if (!cont) {
|
522
|
+
// open popup
|
523
|
+
var html_img = "<img onclick='Zena.popup_close();' id='pg_img' style='position:absolute; z-index:10001; border:" + border_width + "px solid grey; top:"+e_top+"px; left:"+e_left+"px; width:"+e_width+"px;height:"+e_height+"px;' src='" + config.src + "'/>"
|
524
|
+
Element.insert(document.body, "<div id='pg_cont' style='position:absolute; top:0; left:0;'><div id='pg_mask' onclick='Zena.popup_close();'> </div>" + html_img + "</div>");
|
525
|
+
img = $('pg_img');
|
526
|
+
} else {
|
527
|
+
// next, previous image
|
528
|
+
img = $('pg_img');
|
529
|
+
img.src = config.src;
|
530
|
+
}
|
531
|
+
|
532
|
+
// used when closing
|
533
|
+
img._elem_top = e_top;
|
534
|
+
img._elem_left = e_left;
|
535
|
+
img._elem_width = e_width;
|
536
|
+
img._elem_height = e_height;
|
537
|
+
|
538
|
+
var view = document.viewport.getDimensions();
|
539
|
+
var offset = document.viewport.getScrollOffsets();
|
540
|
+
config.left = (view.width - config.width)/2 + offset[0];
|
541
|
+
config.top = (view.height - config.height)/2 + offset[1];
|
542
|
+
config.klass = elem.className;
|
543
|
+
|
544
|
+
// get next/previous elements
|
545
|
+
if (config.navigation) {
|
546
|
+
var gallery;
|
547
|
+
if (false && !this.popup_gallery) {
|
548
|
+
document.observe('keydown', function(e, el) {
|
549
|
+
if (!$('pg_info')) {
|
550
|
+
e.stop();
|
551
|
+
this.popup_gallery = null;
|
552
|
+
} else if (e.keyCode == 37) {
|
553
|
+
if (gallery.prev) {
|
554
|
+
Zena.popup(gallery.prev);
|
555
|
+
} else {
|
556
|
+
Zena.popup(gallery.list[gallery.list.size()-1]);
|
557
|
+
}
|
558
|
+
} else if (e.keyCode == 39) {
|
559
|
+
if (gallery.next) {
|
560
|
+
Zena.popup(gallery.next);
|
561
|
+
} else {
|
562
|
+
Zena.popup(gallery.list[0]);
|
563
|
+
}
|
564
|
+
} else {
|
565
|
+
e.stop();
|
566
|
+
this.popup_gallery = null;
|
567
|
+
Zena.popup_close();
|
568
|
+
}
|
569
|
+
});
|
570
|
+
}
|
571
|
+
if (!this.popup_gallery || this.popup_gallery.klass != config.klass) {
|
572
|
+
this.popup_gallery = {
|
573
|
+
klass: config.klass,
|
574
|
+
list: elem.up('div').select('img.' + config.klass)
|
575
|
+
};
|
576
|
+
}
|
577
|
+
this.popup_gallery.current = elem;
|
578
|
+
this.popup_gallery.index = this.popup_gallery.list.indexOf(elem);
|
579
|
+
gallery = this.popup_gallery;
|
580
|
+
}
|
581
|
+
|
582
|
+
if (!config.pg_info_style) {
|
583
|
+
config.pg_info_style = 'top:' + (config.top-10) + 'px; left:' + (config.left-10) + 'px; width:' + (config.width+20) + 'px; padding-top:' + (config.height+20) + 'px;';
|
584
|
+
if (config.keys.size() == 0 && config.navigation) {
|
585
|
+
config.pg_info_style += ' min-height:30px;';
|
586
|
+
}
|
587
|
+
}
|
588
|
+
|
589
|
+
if ($('pg_info')) {
|
590
|
+
Zena.popup_wrap(img, config);
|
591
|
+
new Effect.Morph(img, {
|
592
|
+
style: 'width:'+config.width+'px; height:'+config.height+'px; top:'+config.top+'px; left:'+config.left+'px;',
|
593
|
+
duration: 0.2
|
594
|
+
});
|
595
|
+
new Effect.Morph('pg_info', {
|
596
|
+
style: config.pg_info_style,
|
597
|
+
duration: 0.2
|
598
|
+
});
|
599
|
+
$(img).appear();
|
600
|
+
} else {
|
601
|
+
new Effect.Morph(img, {
|
602
|
+
style: 'width:'+config.width+'px; height:'+config.height+'px; top:'+config.top+'px; left:'+config.left+'px;',
|
603
|
+
duration: 0.5,
|
604
|
+
afterFinishInternal: function(effect) {
|
605
|
+
Zena.popup_wrap(img, config);
|
606
|
+
}
|
607
|
+
});
|
608
|
+
}
|
609
|
+
}
|
610
|
+
|
611
|
+
Zena.popup_wrap = function(img, config) {
|
612
|
+
cont = $('pg_cont');
|
613
|
+
var content = '';
|
614
|
+
var border_width = 1;
|
615
|
+
gallery = this.popup_gallery;
|
616
|
+
|
617
|
+
config.keys.each(function(key, index) {
|
618
|
+
if (key == 'navigation') {
|
619
|
+
var index = gallery.index;
|
620
|
+
gallery.prev = gallery.list[index - 1];
|
621
|
+
gallery.next = gallery.list[index + 1];
|
622
|
+
|
623
|
+
if (gallery.prev) content += "<a id='pg_prev' href='#' onclick='Zena.popup($(\""+gallery.prev.id+"\"));return false;' title='previous image'> </a>";
|
624
|
+
if (gallery.next) content += "<a id='pg_next' href='#' onclick='Zena.popup($(\""+gallery.next.id+"\"));return false;' title='next image'> </a>";
|
625
|
+
} else {
|
626
|
+
content += "<div class='"+key+"'>" + config.fields[key] + "</div>";
|
627
|
+
}
|
628
|
+
});
|
629
|
+
|
630
|
+
if ($('pg_info')) {
|
631
|
+
if (content != '') {
|
632
|
+
$('pg_info').update(content);
|
633
|
+
} else {
|
634
|
+
$('pg_info').remove();
|
635
|
+
}
|
636
|
+
} else if (content != '') {
|
637
|
+
cont.insert("<div id='pg_info' class='" + config.klass + "' style='position:absolute; " + config.pg_info_style + "'>" + content + "</div>");
|
638
|
+
}
|
639
|
+
}
|
640
|
+
|
641
|
+
Zena.popup_close = function() {
|
642
|
+
var cont = $('pg_cont');
|
643
|
+
if (cont) {
|
644
|
+
var img = $('pg_img');
|
645
|
+
var pg_info = $('pg_info');
|
646
|
+
if (pg_info) pg_info.remove();
|
647
|
+
new Effect.Morph(img, {
|
648
|
+
style: 'width:'+(img._elem_width)+'px; height:'+(img._elem_height)+'px; top:'+img._elem_top+'px; left:'+img._elem_left+'px;',
|
649
|
+
duration: 0.5,
|
650
|
+
afterFinishInternal: function(effect) {
|
651
|
+
cont.remove();
|
652
|
+
}
|
653
|
+
});
|
654
|
+
}
|
501
655
|
}
|
@@ -145,7 +145,7 @@ ul.infos li { padding:0.4em 0.4em; list-style:none; display:block; }
|
|
145
145
|
#links_tab .add { text-align:left;}
|
146
146
|
#links_tab .date { width:95px; }
|
147
147
|
#links_tab .status { width:70px; }
|
148
|
-
#links_tab .box { width:
|
148
|
+
#links_tab .box { width:15px;}
|
149
149
|
#links_tab .comment { font-style:italic; width:auto; text-align:left;}
|
150
150
|
#links_tab .actions { width:100px;}
|
151
151
|
|
@@ -171,8 +171,10 @@ ul.infos li { padding:0.4em 0.4em; list-style:none; display:block; }
|
|
171
171
|
|
172
172
|
#versions_list { max-height:230px; overflow:auto;}
|
173
173
|
#versions .sign { width:20px; }
|
174
|
-
#
|
175
|
-
#
|
174
|
+
#versions .number { width:25px; font-size:13px; padding:0 5px; font-weight:bold; cursor:pointer;}
|
175
|
+
#versions .actions { width:100px; }
|
176
|
+
|
177
|
+
.import { max-height:400px; overflow:auto;}
|
176
178
|
|
177
179
|
#discussions .inline_form div { float: left; padding:0 8px; }
|
178
180
|
#discussions .inline_form .inside { margin-top:2px; }
|
data/public/stylesheets/zena.css
CHANGED
@@ -75,4 +75,13 @@ padding:5px; border:1px solid #714D3D; text-align:left; color:#444; z-index:9999
|
|
75
75
|
|
76
76
|
/* diff */
|
77
77
|
del.differ, del.differ * { background:#fcc; padding:1px 2px;}
|
78
|
-
ins.differ, ins.differ * { background:#cfc; text-decoration:none; padding:1px 2px;}
|
78
|
+
ins.differ, ins.differ * { background:#cfc; text-decoration:none; padding:1px 2px;}
|
79
|
+
|
80
|
+
/* popup gallery */
|
81
|
+
#pg_mask { position:fixed; top:0; left:0; width:100%; height:100%; background:black; opacity:0.8; z-index:9999;}
|
82
|
+
#pg_info { z-index:10000; background:white; border:1px solid grey;}
|
83
|
+
#pg_info .v_title {text-align:center; font-weight:bold;}
|
84
|
+
#pg_info .v_summary {clear:both; padding:3px 10px 10px;}
|
85
|
+
#pg_info a { width:100px; height:40px;}
|
86
|
+
#pg_next {position:absolute; right:0; background:url('/images/popup_next.png') no-repeat right top;}
|
87
|
+
#pg_prev {position:absolute; left:0; background:url('/images/popup_prev.png') no-repeat left top;}
|
File without changes
|
data/test/fixtures/iformats.yml
CHANGED
data/test/fixtures/nodes.yml
CHANGED
@@ -1615,7 +1615,7 @@ zena_lake:
|
|
1615
1615
|
type: Contact
|
1616
1616
|
kpath: NRC
|
1617
1617
|
zip: 23
|
1618
|
-
publish_from:
|
1618
|
+
publish_from: Tue Oct 27 13:14:13 +0000 2009
|
1619
1619
|
vhash: '{"w":{"en":1833724126},"r":{"en":618648829}}'
|
1620
1620
|
inherit: yes
|
1621
1621
|
skin: default
|
data/test/fixtures/versions.yml
CHANGED
data/test/test_helper.rb
CHANGED
@@ -23,6 +23,8 @@ end
|
|
23
23
|
class SubPagerDummy < PagerDummy
|
24
24
|
end
|
25
25
|
|
26
|
+
NodeQuery.load_custom_queries File.join(Zena::ROOT, 'test', 'custom_queries')
|
27
|
+
|
26
28
|
class ActiveSupport::TestCase
|
27
29
|
# Transactional fixtures accelerate your tests by wrapping each test method
|
28
30
|
# in a transaction that's rolled back on completion. This ensures that the
|