zena 0.15.0 → 0.15.1
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 +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
|