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.
Files changed (84) hide show
  1. data/History.txt +14 -0
  2. data/{README.txt → README.rdoc} +13 -19
  3. data/app/controllers/documents_controller.rb +7 -2
  4. data/app/controllers/nodes_controller.rb +4 -0
  5. data/app/models/iformat.rb +43 -1
  6. data/app/models/skin.rb +1 -2
  7. data/app/models/text_document.rb +2 -2
  8. data/app/models/version.rb +1 -0
  9. data/app/views/documents/new.rhtml +2 -2
  10. data/app/views/iformats/_form.rhtml +5 -4
  11. data/app/views/iformats/_li.rhtml +1 -0
  12. data/app/views/iformats/index.rhtml +1 -1
  13. data/app/views/nodes/_import_results.rhtml +1 -1
  14. data/app/views/nodes/edit.html.erb +2 -2
  15. data/app/views/templates/edit_tabs/_custom.rhtml +2 -2
  16. data/app/views/templates/edit_tabs/_document.rhtml +3 -3
  17. data/app/views/versions/_tr.rhtml +5 -6
  18. data/app/views/versions/edit.rhtml +2 -2
  19. data/bin/zena +2 -2
  20. data/bricks/captcha/patch/application_controller.rb +1 -1
  21. data/bricks/captcha/zafu/captcha.rb +1 -1
  22. data/config/deploy.rb +36 -380
  23. data/config/gems.yml +2 -7
  24. data/db/migrate/20091018200734_add_popup_info_to_image_format.rb +9 -0
  25. data/db/schema.rb +3 -2
  26. data/lib/gettext_strings.rb +8 -0
  27. data/lib/tasks/zena.rake +30 -12
  28. data/lib/zena/app.rb +2 -0
  29. data/{config → lib/zena/deploy}/awstats.conf.rhtml +0 -0
  30. data/{config → lib/zena/deploy}/database.rhtml +0 -0
  31. data/lib/zena/deploy/httpd.rhtml +22 -0
  32. data/{config → lib/zena/deploy}/start.html +2 -2
  33. data/{config → lib/zena/deploy}/stats.vhost.rhtml +0 -0
  34. data/{config/zena.rb → lib/zena/deploy/template.rb} +13 -8
  35. data/{config → lib/zena/deploy}/vhost.rhtml +28 -14
  36. data/{config → lib/zena/deploy}/vhost_www.rhtml +0 -0
  37. data/lib/zena/deploy.rb +377 -0
  38. data/lib/zena/info.rb +13 -0
  39. data/lib/zena/parser/zena_tags.rb +3 -0
  40. data/lib/zena/parser.rb +1 -0
  41. data/lib/zena/use/calendar.rb +2 -1
  42. data/lib/zena/use/dates.rb +6 -1
  43. data/lib/zena/use/fixtures.rb +9 -0
  44. data/lib/zena/use/html_tags.rb +44 -5
  45. data/lib/zena/use/node_query_finders.rb +1 -2
  46. data/lib/zena/use/refactor.rb +0 -13
  47. data/lib/zena/use/rendering.rb +13 -0
  48. data/lib/zena/use/zafu.rb +21 -9
  49. data/lib/zena.rb +4 -11
  50. data/locale/en/LC_MESSAGES/zena.mo +0 -0
  51. data/locale/en/zena.po +29 -1
  52. data/locale/fr/LC_MESSAGES/zena.mo +0 -0
  53. data/locale/fr/zena.po +29 -1
  54. data/locale/zena.pot +28 -0
  55. data/public/images/popup_next.png +0 -0
  56. data/public/images/popup_prev.png +0 -0
  57. data/public/javascripts/upload-progress.js +13 -3
  58. data/public/javascripts/zena.js +177 -23
  59. data/public/stylesheets/popup.css +5 -3
  60. data/public/stylesheets/zena.css +10 -1
  61. data/{lib/zena/use → test}/custom_queries/complex.host.yml +0 -0
  62. data/test/fixtures/iformats.yml +1 -0
  63. data/test/fixtures/nodes.yml +1 -1
  64. data/test/fixtures/versions.yml +3 -1
  65. data/test/sites/zena/iformats.yml +1 -0
  66. data/test/sites/zena/versions.yml +3 -1
  67. data/test/test_helper.rb +2 -0
  68. data/test/unit/iformat_test.rb +53 -1
  69. data/test/unit/text_document_test.rb +3 -0
  70. data/test/unit/zena/use/html_tags_test.rb +24 -2
  71. data/test/unit/zena/use/refactor_test.rb +0 -4
  72. data/test/unit/zena/use/zafu_test.rb +12 -0
  73. data/test/unit/zena/use/zazen_test.rb +6 -3
  74. data/test/unit/zena/zena_tags/basic.yml +3 -3
  75. data/vendor/apache2_upload_progress/MIT-LICENSE +22 -0
  76. data/vendor/apache2_upload_progress/README +53 -0
  77. data/vendor/apache2_upload_progress/mod_upload_progress.c +813 -0
  78. metadata +45 -45
  79. data/config/deploy_config_example.rb +0 -7
  80. data/config/httpd.rhtml +0 -18
  81. data/config/locales/de.yml +0 -120
  82. data/config/locales/fr-CH.yml +0 -123
  83. data/config/locales/fr.yml +0 -123
  84. data/lib/zena/root.rb +0 -3
@@ -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
- path1 = src[1..-1]
39
- path2 = src2[1..-1] if src2
39
+ paths << src[1..-1]
40
+ paths << src2[1..-1] if src2
40
41
  else
41
- path1 = current_folder + '/' + src
42
- path2 = current_folder + '/' + src2 if src2
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
- path1 = path1.split('/').map {|s| s.url_name!}.join('/')
47
- path2 = path2.split('/').map {|s| s.url_name!}.join('/') if src2
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(path1) }
50
- elsif src2 && (asset = secure(Document) { Document.find_by_path(path2) })
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}</body>")
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 = '0.15.0'
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
- unless RAILS_ENV == 'test' || File.exist?(File.join(File.dirname(__FILE__), '..', 'log', 'upload_progress_drb.pid'))
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: 2008-09-26 23:21+0100\n"
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: 2008-09-26 23:22+0100\n"
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
- UploadProgress.monitor(uuid) ;
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
  }
@@ -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
- if (diff_next_sel == 'from') {
48
- if (diff_from != '') {
49
- diff_from.style.background = 'none';
50
- }
51
- diff_from = tag;
52
- diff_next_sel = 'to';
53
- } else {
54
- if (diff_to != '') {
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
- diff_next_sel = 'from';
59
- }
60
- if (diff_from != '' && diff_to != '' && parseInt(diff_from.innerHTML) > parseInt(diff_to.innerHTML)) {
61
- var tmp = diff_from;
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
- diff_next_sel = 'from';
71
+ diff_from = tag;
68
72
  }
69
73
  }
70
74
 
71
- diff_from.style.background = '#7A6414';
72
- diff_to.style.background = '#FAD12A';
73
- if (diff_from != '' && diff_to != '') {
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();'>&nbsp;</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'>&nbsp;</a>";
624
+ if (gallery.next) content += "<a id='pg_next' href='#' onclick='Zena.popup($(\""+gallery.next.id+"\"));return false;' title='next image'>&nbsp;</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:18px;}
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
- #links_tab .diff .box { border-right-width:0; }
175
- #links_tab .diff .text { font-style:italic; text-align:left;}
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; }
@@ -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;}
@@ -23,6 +23,7 @@ zena_med:
23
23
  site_id: 705790409
24
24
  name: med
25
25
  size: 1
26
+ popup: std
26
27
  width: 300
27
28
  height: 200
28
29
  updated_at: 2008-05-01
@@ -1615,7 +1615,7 @@ zena_lake:
1615
1615
  type: Contact
1616
1616
  kpath: NRC
1617
1617
  zip: 23
1618
- publish_from: Thu Oct 15 18:31:52 +0000 2009
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
@@ -860,7 +860,9 @@ zena_letter_en:
860
860
  type: Version
861
861
  comment: letter for testing
862
862
  summary: This page is a *Letter*.
863
- text: letter content
863
+ text: "letter content
864
+
865
+ !30_med! !31_med! !24_med!"
864
866
 
865
867
 
866
868
  zena_wiki_skin_en:
@@ -1,6 +1,7 @@
1
1
 
2
2
  med:
3
3
  size: limit
4
+ popup: std
4
5
  width: 300
5
6
  height: 200
6
7
  updated_at: 2008-05-01
@@ -375,7 +375,9 @@ letter_en:
375
375
  comment: letter for testing
376
376
  title: zena enhancements
377
377
  summary: This page is a *Letter*.
378
- text: letter content
378
+ text: "letter content
379
+
380
+ !30_med! !31_med! !24_med!"
379
381
 
380
382
  wiki_skin_en:
381
383
  type: Version
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