olelo 0.9.4 → 0.9.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. data/.gitignore +0 -1
  2. data/.travis.yml +8 -0
  3. data/README.creole +31 -11
  4. data/Rakefile +46 -21
  5. data/config/aspects.rb +19 -15
  6. data/lib/olelo/application.rb +2 -3
  7. data/lib/olelo/extensions.rb +3 -0
  8. data/lib/olelo/helper.rb +7 -5
  9. data/lib/olelo/locale.rb +1 -1
  10. data/lib/olelo/locale.yml +298 -204
  11. data/lib/olelo/page.rb +9 -1
  12. data/lib/olelo/plugin.rb +1 -1
  13. data/lib/olelo/repository.rb +1 -1
  14. data/lib/olelo/util.rb +3 -0
  15. data/lib/olelo/version.rb +1 -1
  16. data/olelo.gemspec +1 -1
  17. data/plugins/aspects/changelog.rb +7 -4
  18. data/plugins/aspects/locale.yml +69 -47
  19. data/plugins/blog/locale.yml +13 -9
  20. data/plugins/editor/locale.yml +16 -11
  21. data/plugins/filters/creole.rb +3 -6
  22. data/plugins/filters/fix_image_links.rb +20 -0
  23. data/plugins/filters/locale.yml +18 -13
  24. data/plugins/filters/s5/main.rb +2 -0
  25. data/plugins/login/locale.yml +6 -4
  26. data/plugins/repositories/gitrb_repository.rb +1 -1
  27. data/plugins/repositories/locale.yml +14 -10
  28. data/plugins/repositories/rugged_repository.rb +2 -3
  29. data/plugins/security/locale.yml +19 -13
  30. data/plugins/tags/math.rb +2 -1
  31. data/plugins/treeview/script.js +2 -2
  32. data/plugins/treeview/script/init.js +4 -0
  33. data/plugins/utils/xml.rb +14 -0
  34. data/static/script.js +296 -256
  35. data/static/script/02-history.js +1943 -0
  36. data/static/script/03-history.adapter.jquery.js +77 -0
  37. data/static/script/{03-jquery.ui.core.js → 04-jquery.ui.core.js} +0 -0
  38. data/static/script/{04-jquery.ui.widget.js → 05-jquery.ui.widget.js} +0 -0
  39. data/static/script/{05-jquery.ui.position.js → 06-jquery.ui.position.js} +0 -0
  40. data/static/script/{06-jquery.ui.menu.js → 07-jquery.ui.menu.js} +0 -0
  41. data/static/script/{07-jquery.ui.autocomplete.js → 08-jquery.ui.autocomplete.js} +0 -0
  42. data/static/script/{02-olelo.storage.js → 09-olelo.storage.js} +0 -0
  43. data/static/script/{08-olelo.i18n.js → 10-olelo.i18n.js} +0 -0
  44. data/static/script/{09-olelo.unsaved.js → 11-olelo.unsaved.js} +6 -2
  45. data/static/script/{10-olelo.historytable.js → 12-olelo.historytable.js} +0 -0
  46. data/static/script/13-olelo.pagination.js +30 -0
  47. data/static/script/{13-olelo.tabwidget.js → 14-olelo.tabwidget.js} +0 -0
  48. data/static/script/{14-olelo.timeago.js → 15-olelo.timeago.js} +14 -1
  49. data/static/script/{15-olelo.underliner.js → 16-olelo.underliner.js} +0 -0
  50. data/static/script/{16-olelo.ui.combobox.js → 17-olelo.ui.combobox.js} +0 -0
  51. data/static/script/init.js +10 -10
  52. data/static/themes/atlantis/screen.scss +11 -10
  53. data/static/themes/atlantis/style.css +1 -1
  54. data/test/config_test.rb +9 -0
  55. data/test/factory_test.rb +1 -1
  56. data/test/hash_extensions_test.rb +1 -1
  57. data/test/helper.rb +0 -1
  58. data/test/hooks_test.rb +1 -2
  59. data/test/object_extensions_test.rb +1 -2
  60. data/test/run.rb +12 -0
  61. data/test/string_extensions_test.rb +1 -1
  62. data/test/templates_test.rb +1 -3
  63. data/test/util_test.rb +1 -6
  64. data/views/compare.slim +4 -5
  65. data/views/edit.slim +2 -2
  66. data/views/history.slim +1 -1
  67. data/views/layout.slim +1 -2
  68. data/views/not_found.slim +2 -2
  69. data/views/show.slim +3 -4
  70. metadata +47 -44
  71. data/plugins/filters/fix_img_tag.rb +0 -16
  72. data/static/script/11-olelo.pagination.js +0 -18
@@ -0,0 +1,77 @@
1
+ /**
2
+ * History.js jQuery Adapter
3
+ * @author Benjamin Arthur Lupton <contact@balupton.com>
4
+ * @copyright 2010-2011 Benjamin Arthur Lupton <contact@balupton.com>
5
+ * @license New BSD License <http://creativecommons.org/licenses/BSD/>
6
+ */
7
+
8
+ // Closure
9
+ (function(window,undefined){
10
+ "use strict";
11
+
12
+ // Localise Globals
13
+ var
14
+ History = window.History = window.History||{},
15
+ jQuery = window.jQuery;
16
+
17
+ // Check Existence
18
+ if ( typeof History.Adapter !== 'undefined' ) {
19
+ throw new Error('History.js Adapter has already been loaded...');
20
+ }
21
+
22
+ // Add the Adapter
23
+ History.Adapter = {
24
+ /**
25
+ * History.Adapter.bind(el,event,callback)
26
+ * @param {Element|string} el
27
+ * @param {string} event - custom and standard events
28
+ * @param {function} callback
29
+ * @return {void}
30
+ */
31
+ bind: function(el,event,callback){
32
+ jQuery(el).bind(event,callback);
33
+ },
34
+
35
+ /**
36
+ * History.Adapter.trigger(el,event)
37
+ * @param {Element|string} el
38
+ * @param {string} event - custom and standard events
39
+ * @param {Object=} extra - a object of extra event data (optional)
40
+ * @return {void}
41
+ */
42
+ trigger: function(el,event,extra){
43
+ jQuery(el).trigger(event,extra);
44
+ },
45
+
46
+ /**
47
+ * History.Adapter.extractEventData(key,event,extra)
48
+ * @param {string} key - key for the event data to extract
49
+ * @param {string} event - custom and standard events
50
+ * @param {Object=} extra - a object of extra event data (optional)
51
+ * @return {mixed}
52
+ */
53
+ extractEventData: function(key,event,extra){
54
+ // jQuery Native then jQuery Custom
55
+ var result = (event && event.originalEvent && event.originalEvent[key]) || (extra && extra[key]) || undefined;
56
+
57
+ // Return
58
+ return result;
59
+ },
60
+
61
+ /**
62
+ * History.Adapter.onDomLoad(callback)
63
+ * @param {function} callback
64
+ * @return {void}
65
+ */
66
+ onDomLoad: function(callback) {
67
+ jQuery(callback);
68
+ }
69
+ };
70
+
71
+ // Try and Initialise History
72
+ if ( typeof History.init !== 'undefined' ) {
73
+ History.init();
74
+ }
75
+
76
+ })(window);
77
+
@@ -12,6 +12,10 @@
12
12
  cs: {
13
13
  confirmUnsaved: 'Stránka nebyla uložena. Pokračovat?',
14
14
  pageUnsaved: 'Stránka nebyla uložena.'
15
+ },
16
+ fr: {
17
+ confirmUnsaved: "La page n'a pas été enregistrée. Voulez vous continuer ?",
18
+ pageUnsaved: "La page n'a pas été enregistrée."
15
19
  }
16
20
  });
17
21
 
@@ -51,10 +55,10 @@
51
55
  return !hasUnsavedChanges(this) || confirm($.t('confirmUnsaved'));
52
56
  };
53
57
 
54
- $('input.observe, textarea.observe, select.observe').live('change autocompletechange', updateUnsaved);
58
+ $(document).on('change autocompletechange', 'input.observe, textarea.observe, select.observe', updateUnsaved);
55
59
 
56
60
  var submitForm = false;
57
- $('form').live('submit', function() {
61
+ $(document).on('submit', 'form', function() {
58
62
  submitForm = true;
59
63
  }).bind('reset', function() {
60
64
  $('.unsaved', this).removeClass('unsaved');
@@ -0,0 +1,30 @@
1
+ // Pagination links
2
+ // $('#page_element').pagination('.pagination a');
3
+ // $('#page_element').bind('pageLoaded', function() {});
4
+ // Written by Daniel Mendler
5
+ (function($) {
6
+ $.fn.pagination = function(links) {
7
+ var page = this;
8
+
9
+ function loadPage(url) {
10
+ page.load(url + (url.indexOf('?') < 0 ? '?' : '&') + 'no_layout=1', function() {
11
+ page.trigger('pageLoaded', [url]);
12
+ });
13
+ }
14
+
15
+ $(document).on('click', links, function() {
16
+ $(this).addClass('loading');
17
+ if (History.enabled) {
18
+ History.pushState(null, document.title, this.href);
19
+ } else {
20
+ loadPage(this.href);
21
+ }
22
+ return false;
23
+ });
24
+
25
+ $(window).bind('statechange', function() {
26
+ var state = History.getState();
27
+ loadPage(state.url);
28
+ });
29
+ };
30
+ })(jQuery);
@@ -40,7 +40,20 @@
40
40
  n_months_ago: 'před #{n} měsíci',
41
41
  one_year_ago: '1 rok',
42
42
  over_n_years_ago: 'před #{n} lety'
43
- }
43
+ },
44
+ fr: {
45
+ less_than_a_minute_ago: "il y a moins d'une minute",
46
+ a_minute_ago: "il y a une minute",
47
+ n_minutes_ago: "il y a #{n} minutes",
48
+ one_hour_ago: "il y a 1 heure",
49
+ n_hours_ago: "il y a #{n} heures",
50
+ one_day_ago: "il y a 1 jour",
51
+ n_days_ago: "il y a #{n} jours",
52
+ one_month_ago: "il y a 1 mois",
53
+ n_months_ago: "il y a #{n} mois",
54
+ one_year_ago: "il y a 1 an",
55
+ over_n_years_ago: "il y a plus de #{n} ans"
56
+ }
44
57
  });
45
58
 
46
59
  function timeAgo(from) {
@@ -2,8 +2,8 @@
2
2
  // Written by Daniel Mendler
3
3
  $(function() {
4
4
  $('html').removeClass('no-js').addClass('js');
5
- function pageLoaded(parent) {
6
- $('#upload-path', parent).each(function() {
5
+ function pageLoaded() {
6
+ $('#upload-path', this).each(function() {
7
7
  var elem = this;
8
8
  var old = elem.value;
9
9
  var base = elem.value;
@@ -16,18 +16,18 @@ $(function() {
16
16
  });
17
17
  }
18
18
  });
19
- $('label, #menu, .tabhead, .pagination, .button-bar', parent).disableSelection();
20
- $('#history-table', parent).historyTable();
21
- $('.date', parent).timeAgo();
22
- $('.tabs', parent).each(function() {
19
+ $('label, #menu, .tabhead, .pagination, .button-bar', this).disableSelection();
20
+ $('#history-table', this).historyTable();
21
+ $('.date', this).timeAgo();
22
+ $('.tabs', this).each(function() {
23
23
  $('> li', this).tabWidget();
24
24
  });
25
- $('*[accesskey]', parent).underlineAccessKey();
25
+ $('*[accesskey]', this).underlineAccessKey();
26
26
  }
27
27
 
28
- $('.pagination a').pagination('#content');
29
- $('#content').bind('pageLoaded', function() { pageLoaded(this); });
30
- pageLoaded();
28
+ $('#content').pagination('.pagination a');
29
+ $('#content').bind('pageLoaded', pageLoaded);
30
+ pageLoaded.apply($(document));
31
31
 
32
32
  $('button[data-target]').live('click', function() {
33
33
  var button = $(this);
@@ -156,16 +156,17 @@ a {
156
156
  &.img {
157
157
  background: transparent;
158
158
  }
159
- span.img & {
160
- border: $border;
161
- float: right;
162
- text-align: center;
163
- color: black;
164
- background: $main_bg;
165
- padding: 0.2em;
166
- img {
167
- display: block;
168
- }
159
+ }
160
+
161
+ span.img {
162
+ border: $border;
163
+ float: right;
164
+ text-align: center;
165
+ color: black;
166
+ background: $main_bg;
167
+ padding: 0.2em;
168
+ img {
169
+ display: block;
169
170
  }
170
171
  }
171
172
 
@@ -1,3 +1,3 @@
1
- @media screen{.patch{width:100%;border:1px solid #BBB;border-collapse:collapse;border-spacing:0}.patch tr td{padding:0.5em;border-top:1px solid #BBB;font-family:"Bitstream Vera Sans Mono", monospace}.patch tr td pre{border:0px none;margin:0;padding:0}.patch tr td ins{background:#d4ffd4;text-decoration:none}.patch tr td del{color:#555555;text-decoration:line-through}.patch tr th{font-variant:normal;padding:0.2em 0.5em;border:1px solid #BBB}.patch tr.new th{background:url(images/actions/new.png) 2px 2px no-repeat;padding-left:20px}.patch tr.delete th{background:url(images/actions/delete.png) 2px 2px no-repeat;padding-left:20px}.patch tr.move th{background:url(images/actions/move.png) 2px 2px no-repeat;padding-left:20px}.patch tr.edit th{background:url(images/actions/edit.png) 2px 2px no-repeat;padding-left:20px}.patch-summary{width:100%}.patch-summary .ins,.patch-summary .del{width:1em}.patch-summary .ins{color:#5A5}.patch-summary .del{color:#A55}.patch-summary .new{background:#d4ffd4}.patch-summary .new .name{background:url(images/actions/new.png) 2px 2px no-repeat;padding-left:20px}.patch-summary .delete{background:#ffd4d4}.patch-summary .delete .name{background:url(images/actions/delete.png) 2px 2px no-repeat;padding-left:20px}.patch-summary .move{background:#ffc}.patch-summary .move .name{background:url(images/actions/move.png) 2px 2px no-repeat;padding-left:20px}.patch-summary .edit{background:#fff}.patch-summary .edit .name{background:url(images/actions/edit.png) 2px 2px no-repeat;padding-left:20px}.ui-autocomplete{position:absolute;cursor:default;list-style:none;padding:2px;margin:0;display:block;float:left;background:#FFF;border:1px solid #BBB}.ui-autocomplete a{text-decoration:none;display:block;padding:.2em .4em;line-height:1.2em;color:#333}.ui-autocomplete .ui-state-hover{background:#DDD}.ui-autocomplete-input{margin-right:0}.ui-combo-button{-webkit-border-top-left-radius:0;border-top-left-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;border-left:0px none;margin-left:0;padding:0}.ui-combo-button:before{content:'\25BE'}.ui-helper-hidden-accessible{display:none}#header{background:url(images/bg/header.jpg) #153b7a;padding-left:0.5em;clear:both;height:3em}#header h1{margin:0;padding:0;border:0;outline:0;font-size:200%;font-weight:bold;float:left}#header h1 a,#header h1 a:visited,#header h1 a:active,#header h1 a:hover{color:#eeeeee}#info{float:right;background:#fff;padding:0.3em;margin:0.65em 0.5em 0 0;opacity:0.8}#search{opacity:0.8;float:right;border:none}#search input{margin:0.65em 0.5em 0 0;width:10em;padding:0.2em;padding-left:20px;background:#fff url(images/search.png) no-repeat 0.2em 0.2em}html,body{height:100%}#container{min-height:520px;position:relative;display:block;overflow:hidden;padding-right:7em;padding-left:156px;background:url(images/bg/container.png) top left repeat-y;z-index:10}#content{position:relative;float:left;width:100%;padding:2.5em 3.5em;background:url(images/bg/content.png) top left repeat-x}#sidebar{background:#e5efff;position:relative;width:156px;float:left;padding-bottom:3.5em;margin-left:-156px}#sidebar h1,#sidebar h2,#sidebar h3,#sidebar h4,#sidebar h5,#sidebar h6{font-size:140%;background:white;font-weight:normal;line-height:1.2em;margin:1em 0 0 0;padding:0 0.2em;border-top:1px solid #95bbff;border-bottom:1px solid #95bbff;display:block}#sidebar ul{margin:0;padding:0;border:0;outline:0;list-style:none}#sidebar ul li{margin:0}#sidebar ul li a{padding:0 5px;display:block}#sidebar ul ul a{padding:0 20px}#sidebar ul ul ul a{padding:0 35px}#footer{clear:both;position:relative;color:#555;font-size:90%;background:url(images/bg/footer.png) top left repeat-x;margin-top:-10px;padding:2em;text-align:right;z-index:1 !important}#footer .powered_by{margin-top:1em;color:#aaaaaa;font-size:90%}#item-actions-edit>a:before{content:url(images/actions/edit.png) "\00a0"}#item-actions-history>a:before{content:url(images/actions/history.png) "\00a0"}#item-actions-edit-new>a:before{content:url(images/actions/new.png) "\00a0"}#item-actions-edit-delete>a:before{content:url(images/actions/delete.png) "\00a0"}#item-actions-edit-move>a:before{content:url(images/actions/move.png) "\00a0"}#menu{background:#fff;height:1.6em;line-height:1.6em;border-top:1px solid #bbb;border-bottom:1px solid #bbb}#menu ul{margin:0;padding:0;border:0;outline:0;list-style-type:none;margin-left:0px;display:block;float:left;height:1.6em}#menu ul li{float:left}#menu ul#menu-actions{float:right}#menu ul#menu-actions li{border-left:1px solid #bbb;border-right:none}#menu ul#menu-actions .selected a:before{content:"\2022\00a0"}#menu ul#menu-actions .download{background:#e5efff}#menu ul li{margin:0;padding:0;border:0;outline:0;display:block;float:left;height:1.6em;line-height:1.6em;border-right:1px solid #bbb;color:#333}#menu ul li a{display:block;text-decoration:none;white-space:nowrap;padding:0 1em;height:1.6em;color:#333;cursor:pointer}#menu ul li a:hover,#menu ul li a:focus,#menu ul li a:active{text-shadow:#333333 1px 1px 2px}#menu ul li ul{display:none;z-index:99;position:absolute;border-top:1px solid #bbb;margin-left:-1px}#menu ul li ul li{background:#fff;clear:both;border:1px solid #bbb !important;border-top:none !important;width:100%}#menu ul li:hover>ul{display:block}#menu .breadcrumbs{margin-right:1em}#menu .breadcrumbs>li{border:none}#menu .breadcrumbs>li a{padding:0 0.3em}#menu .breadcrumbs>li:first-child a{padding-left:1em;text-indent:-999px;display:block;width:16px;background:url(images/actions/home.png) no-repeat 1em 0.1em}#menu .breadcrumbs>li:last-child{border-right:1px solid #bbb}#menu .breadcrumbs>li:last-child a{padding-right:1em}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;outline:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline}*:focus{outline:0}body{line-height:1em;color:black;background:white}ol,ul{list-style:none}table{border-collapse:separate;border-spacing:0;vertical-align:middle}caption,th,td{text-align:left;font-weight:normal;vertical-align:middle}q,blockquote{quotes:"" ""}q:before,q:after,blockquote:before,blockquote:after{content:""}img a{border:none}body{color:#111111;background:white;font-family:"URW Gothic L","DejaVu Sans",Verdana,sans-serif;font-size:10pt;line-height:1.2em}h1{font-size:185%}h2{font-size:170%}h3{font-size:155%}h4{font-size:140%}h5{font-size:125%}h6{font-size:110%}h1,h2,h3,h4,h5,h6{font-family:"Book Antiqua",Palatino,FreeSerif,serif;color:#153b7a;margin:1em 0 0.5em 0;line-height:1.2em}h1{margin-top:0}strong{font-weight:bold}em{font-style:italic}ul,ol,p{margin:0.8em 0 0.8em 0}ul,ol ul,ol{margin:0}ul{list-style-type:disc}ol{list-style-type:decimal}ul,ol{list-style-position:outside;padding-left:1.5em}ul.pagination{height:3em}ul.button-bar,ul.pagination{list-style-type:none;margin:0;display:block;padding:0;width:100%}ul.button-bar li,ul.pagination li{float:left;padding:0;margin:0}ul.button-bar li a,ul.button-bar li span,ul.pagination li a,ul.pagination li span{display:block;background:url(images/bg/button.png) repeat-x left bottom transparent;border:1px solid #bbb;border-left:0px none;color:#333;padding:0em 0.5em;line-height:1.5em}ul.button-bar li a:active,ul.button-bar li a.current,ul.button-bar li a.loading,ul.button-bar li span:active,ul.button-bar li span.current,ul.button-bar li span.loading,ul.pagination li a:active,ul.pagination li a.current,ul.pagination li a.loading,ul.pagination li span:active,ul.pagination li span.current,ul.pagination li span.loading{background:url(images/bg/button.png) repeat-x left bottom #d4e4ff}ul.button-bar li a.loading,ul.button-bar li span.loading,ul.pagination li a.loading,ul.pagination li span.loading{background:#d4e4ff url(images/loading.gif) repeat}ul.button-bar li a.ellipsis:before,ul.button-bar li span.ellipsis:before,ul.pagination li a.ellipsis:before,ul.pagination li span.ellipsis:before{content:'\22EF'}ul.button-bar li a.disabled,ul.button-bar li span.disabled,ul.pagination li a.disabled,ul.pagination li span.disabled{color:#bbb}ul.button-bar li:first-child a,ul.button-bar li:first-child span,ul.pagination li:first-child a,ul.pagination li:first-child span{border-left:1px solid #bbb;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px}ul.button-bar li:last-child a,ul.button-bar li:last-child span,ul.pagination li:last-child a,ul.pagination li:last-child span{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}dt{font-weight:bold;text-decoration:underline}dd{margin:0;padding:0 0 0.5em 0}table{border-collapse:separate;border-spacing:0px;background:#bbb;padding:1px;margin:0 0 2em 0}table td,table th{border-top:1px solid #E5E5E5;padding:0.2em 0.5em}table td.link,table th.link{padding:0}table td.link a,table th.link a{margin:0;padding:0.2em 0.5em;display:block}table tr{background:#fff}table tr:first-child td{border-top:0px none}table thead tr{background:url(images/bg/button.png) repeat-x left bottom #d4e4ff}table thead tr th{border-bottom:1px solid #bbb;border-top:0px none}a,a:visited{color:#153b7a;text-decoration:none}a.img{background:transparent}span.img a{border:1px solid #bbb;float:right;text-align:center;color:black;background:#fff;padding:0.2em}span.img a img{display:block}.editsection{border-radius:4px;-webkit-border-radius:4px;border:1px solid #bbb;display:block;background:url(images/bg/button.png) repeat-x left bottom #fff;font-family:"URW Gothic L","DejaVu Sans",Verdana,sans-serif;font-size:9pt;line-height:9pt;margin-top:2px;padding:2px;color:#333;float:right;font-variant:normal}.editsection:visited{color:#333}sub{vertical-align:text-bottom;font-size:75%}sup{vertical-align:text-top;font-size:75%}img{vertical-align:middle}hr{background:#bbb;border:none;height:1px}.version,tt,pre,code,kbd{font-family:"Andale Mono","Bitstream Vera Sans Mono",monospace}pre{border:1px solid #bbb;padding:0.2em;min-width:60%;white-space:pre-wrap;display:block}#history-table .compare{padding:0;width:1em}#history-table .compare button{margin:1px;display:inline;font-size:small}#history-table .compare input{display:inline;margin:0 3px}table.full,#history-table,#subpages-table{width:100%}table.full td,table.full th,#history-table td,#history-table th,#subpages-table td,#subpages-table th{white-space:nowrap}#subpages-table .actions{width:80px;padding:0px}#subpages-table .action-edit{text-indent:-999px;background:url(images/actions/edit.png) no-repeat top left;float:left;width:16px;height:16px;overflow:hidden}#subpages-table .action-history{text-indent:-999px;background:url(images/actions/history.png) no-repeat top left;float:left;width:16px;height:16px;overflow:hidden}#subpages-table .action-delete{text-indent:-999px;background:url(images/actions/delete.png) no-repeat top left;float:left;width:16px;height:16px;overflow:hidden}#subpages-table .action-move{text-indent:-999px;background:url(images/actions/move.png) no-repeat top left;float:left;width:16px;height:16px;overflow:hidden}#subpages-table .page:before{content:url(images/page.png) "\00a0"}#subpages-table .folder:before{content:url(images/folder.png) "\00a0"}#subpages-table .file-type-7z:before{content:url(images/filetypes/7z.png) "\00a0"}#subpages-table .file-type-bz2:before{content:url(images/filetypes/bz2.png) "\00a0"}#subpages-table .file-type-doc:before{content:url(images/filetypes/doc.png) "\00a0"}#subpages-table .file-type-flac:before{content:url(images/filetypes/flac.png) "\00a0"}#subpages-table .file-type-gz:before{content:url(images/filetypes/gz.png) "\00a0"}#subpages-table .file-type-html:before{content:url(images/filetypes/html.png) "\00a0"}#subpages-table .file-type-java:before{content:url(images/filetypes/java.png) "\00a0"}#subpages-table .file-type-jpg:before{content:url(images/filetypes/jpg.png) "\00a0"}#subpages-table .file-type-midi:before{content:url(images/filetypes/midi.png) "\00a0"}#subpages-table .file-type-mp3:before{content:url(images/filetypes/mp3.png) "\00a0"}#subpages-table .file-type-ogg:before{content:url(images/filetypes/ogg.png) "\00a0"}#subpages-table .file-type-pdf:before{content:url(images/filetypes/pdf.png) "\00a0"}#subpages-table .file-type-php:before{content:url(images/filetypes/php.png) "\00a0"}#subpages-table .file-type-png:before{content:url(images/filetypes/png.png) "\00a0"}#subpages-table .file-type-ppt:before{content:url(images/filetypes/ppt.png) "\00a0"}#subpages-table .file-type-psd:before{content:url(images/filetypes/psd.png) "\00a0"}#subpages-table .file-type-rar:before{content:url(images/filetypes/rar.png) "\00a0"}#subpages-table .file-type-rb:before{content:url(images/filetypes/rb.png) "\00a0"}#subpages-table .file-type-sh:before{content:url(images/filetypes/sh.png) "\00a0"}#subpages-table .file-type-tar:before{content:url(images/filetypes/tar.png) "\00a0"}#subpages-table .file-type-txt:before{content:url(images/filetypes/txt.png) "\00a0"}#subpages-table .file-type-wma:before{content:url(images/filetypes/wma.png) "\00a0"}#subpages-table .file-type-xls:before{content:url(images/filetypes/xls.png) "\00a0"}#subpages-table .file-type-zip:before{content:url(images/filetypes/zip.png) "\00a0"}.info{color:#333}.warn{color:#a50}.error{color:#a00}.ref{vertical-align:super;font-size:80%}button{border-radius:4px;-webkit-border-radius:4px;background:url(images/bg/button.png) repeat-x left bottom #fff;float:left;margin:0.3em 0.5em 0.3em 0;padding:2px;border:1px solid #bbb;color:#333;white-space:nowrap}button:active:not([disabled]),button.loading{background:url(images/bg/button.png) repeat-x left bottom #d4e4ff}button.loading{background:url(images/loading.gif) repeat #d4e4ff}button[disabled]{color:#999}form{display:inline}form select,form textarea,form input{float:left;margin:0.3em 0.5em 0.3em 0;padding:2px;border:1px solid #bbb;background:#fff;color:#333}form select:focus,form textarea:focus,form input:focus{border-style:dotted}form label{float:left;margin:0;padding:0.4em 0.5em 0.4em 0;border:none;background:none;color:#333}form label.unsaved{font-style:italic}form .fieldset label{width:12em;text-align:right}form .indent{margin-left:12.5em}form .indent label{width:auto}form input[type=text],form input[type=password]{font-family:"Andale Mono","Bitstream Vera Sans Mono",monospace;width:20em}form select{width:20em}form textarea{width:100%;font-family:"Andale Mono","Bitstream Vera Sans Mono",monospace;font-size:100%}form input[type=image],form input[type=image]:focus,form input[type=checkbox]{border:none;background:none}form input[type=hidden]{display:none}form br{clear:left}.flash{margin:0.5em 0;border:1px solid #d33;list-style-type:none;padding:0.5em;background:#fdd}table input{margin:0}.box,.fieldset,.tab{border-radius:4px;-webkit-border-radius:4px;box-shadow:2px 2px 8px #bbb;-webkit-box-shadow:2px 2px 8px #bbb;clear:both;display:block;border:1px solid #bbb;padding:0.5em 1em;margin:1em 0;overflow:auto}.box h1,.box h2,.box h3,.box h4,.box h5,.box h6,.fieldset h1,.fieldset h2,.fieldset h3,.fieldset h4,.fieldset h5,.fieldset h6,.tab h1,.tab h2,.tab h3,.tab h4,.tab h5,.tab h6{margin:0.2em 0}.js .tabs{margin:0;padding:0;border:0;outline:0;list-style-type:none;margin-left:0px;display:block;float:left;margin:0 0 1px 0;height:1.5em;width:100%;z-index:100;position:relative}.js .tabs li{float:left}.js .tabs>li{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;background:url(images/bg/button.png) repeat-x left bottom #d4e4ff;float:left;padding:0;margin:0 4px 0 0;height:1.5em;line-height:1.5em;border:1px solid #bbb}.js .tabs>li.selected>a{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;background:#fff;border-bottom:1px solid white}.js .tabs>li>a{display:block;text-decoration:none;white-space:nowrap;padding:0 0.8em;color:#333}.js .tabs>li>a:hover,.js .tabs>li>a:active,.js .tabs>li>a:focus{text-shadow:#333333 1px 1px 2px}.js .tab{-webkit-border-top-left-radius:0px;border-top-left-radius:0px}.no-js .tabs{display:none}.hidden{display:none !important}.toc .toc1{font-weight:bold}.toc .toc1>ol{margin-bottom:1em}.toc .toc1 .toc2{font-weight:normal}a.absent{color:#A55}.archive #header{background:url(images/bg/header_gray.jpg) #333}.error_page{padding-left:120px;min-height:400px;background:url(images/bug.png) top left no-repeat}.not_found_page{padding-left:120px;min-height:400px;background:url(images/not_found.png) top left no-repeat}* html #container{width:100%;padding:0;background:transparent;border-bottom:1px solid #bbb}* html #sidebar{margin:0;border-right:1px solid #bbb;border-bottom:1px solid #bbb}* html #content{width:70%;background:transparent}* html #footer{background:transparent;margin-top:0;padding-top:0}*:first-child+html #container{padding-right:7.1em}*:first-child+html #menu ul li li{width:8em}
1
+ @media screen{.patch{width:100%;border:1px solid #BBB;border-collapse:collapse;border-spacing:0}.patch tr td{padding:0.5em;border-top:1px solid #BBB;font-family:"Bitstream Vera Sans Mono", monospace}.patch tr td pre{border:0px none;margin:0;padding:0}.patch tr td ins{background:#d4ffd4;text-decoration:none}.patch tr td del{color:#555555;text-decoration:line-through}.patch tr th{font-variant:normal;padding:0.2em 0.5em;border:1px solid #BBB}.patch tr.new th{background:url(images/actions/new.png) 2px 2px no-repeat;padding-left:20px}.patch tr.delete th{background:url(images/actions/delete.png) 2px 2px no-repeat;padding-left:20px}.patch tr.move th{background:url(images/actions/move.png) 2px 2px no-repeat;padding-left:20px}.patch tr.edit th{background:url(images/actions/edit.png) 2px 2px no-repeat;padding-left:20px}.patch-summary{width:100%}.patch-summary .ins,.patch-summary .del{width:1em}.patch-summary .ins{color:#5A5}.patch-summary .del{color:#A55}.patch-summary .new{background:#d4ffd4}.patch-summary .new .name{background:url(images/actions/new.png) 2px 2px no-repeat;padding-left:20px}.patch-summary .delete{background:#ffd4d4}.patch-summary .delete .name{background:url(images/actions/delete.png) 2px 2px no-repeat;padding-left:20px}.patch-summary .move{background:#ffc}.patch-summary .move .name{background:url(images/actions/move.png) 2px 2px no-repeat;padding-left:20px}.patch-summary .edit{background:#fff}.patch-summary .edit .name{background:url(images/actions/edit.png) 2px 2px no-repeat;padding-left:20px}.ui-autocomplete{position:absolute;cursor:default;list-style:none;padding:2px;margin:0;display:block;float:left;background:#FFF;border:1px solid #BBB}.ui-autocomplete a{text-decoration:none;display:block;padding:.2em .4em;line-height:1.2em;color:#333}.ui-autocomplete .ui-state-hover{background:#DDD}.ui-autocomplete-input{margin-right:0}.ui-combo-button{-webkit-border-top-left-radius:0;border-top-left-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;border-left:0px none;margin-left:0;padding:0}.ui-combo-button:before{content:'\25BE'}.ui-helper-hidden-accessible{display:none}#header{background:url(images/bg/header.jpg) #153b7a;padding-left:0.5em;clear:both;height:3em}#header h1{margin:0;padding:0;border:0;outline:0;font-size:200%;font-weight:bold;float:left}#header h1 a,#header h1 a:visited,#header h1 a:active,#header h1 a:hover{color:#eeeeee}#info{float:right;background:#fff;padding:0.3em;margin:0.65em 0.5em 0 0;opacity:0.8}#search{opacity:0.8;float:right;border:none}#search input{margin:0.65em 0.5em 0 0;width:10em;padding:0.2em;padding-left:20px;background:#fff url(images/search.png) no-repeat 0.2em 0.2em}html,body{height:100%}#container{min-height:520px;position:relative;display:block;overflow:hidden;padding-right:7em;padding-left:156px;background:url(images/bg/container.png) top left repeat-y;z-index:10}#content{position:relative;float:left;width:100%;padding:2.5em 3.5em;background:url(images/bg/content.png) top left repeat-x}#sidebar{background:#e5efff;position:relative;width:156px;float:left;padding-bottom:3.5em;margin-left:-156px}#sidebar h1,#sidebar h2,#sidebar h3,#sidebar h4,#sidebar h5,#sidebar h6{font-size:140%;background:white;font-weight:normal;line-height:1.2em;margin:1em 0 0 0;padding:0 0.2em;border-top:1px solid #95bbff;border-bottom:1px solid #95bbff;display:block}#sidebar ul{margin:0;padding:0;border:0;outline:0;list-style:none}#sidebar ul li{margin:0}#sidebar ul li a{padding:0 5px;display:block}#sidebar ul ul a{padding:0 20px}#sidebar ul ul ul a{padding:0 35px}#footer{clear:both;position:relative;color:#555;font-size:90%;background:url(images/bg/footer.png) top left repeat-x;margin-top:-10px;padding:2em;text-align:right;z-index:1 !important}#footer .powered_by{margin-top:1em;color:#aaaaaa;font-size:90%}#item-actions-edit>a:before{content:url(images/actions/edit.png) "\00a0"}#item-actions-history>a:before{content:url(images/actions/history.png) "\00a0"}#item-actions-edit-new>a:before{content:url(images/actions/new.png) "\00a0"}#item-actions-edit-delete>a:before{content:url(images/actions/delete.png) "\00a0"}#item-actions-edit-move>a:before{content:url(images/actions/move.png) "\00a0"}#menu{background:#fff;height:1.6em;line-height:1.6em;border-top:1px solid #bbb;border-bottom:1px solid #bbb}#menu ul{margin:0;padding:0;border:0;outline:0;list-style-type:none;margin-left:0px;display:block;float:left;height:1.6em}#menu ul li{float:left}#menu ul#menu-actions{float:right}#menu ul#menu-actions li{border-left:1px solid #bbb;border-right:none}#menu ul#menu-actions .selected a:before{content:"\2022\00a0"}#menu ul#menu-actions .download{background:#e5efff}#menu ul li{margin:0;padding:0;border:0;outline:0;display:block;float:left;height:1.6em;line-height:1.6em;border-right:1px solid #bbb;color:#333}#menu ul li a{display:block;text-decoration:none;white-space:nowrap;padding:0 1em;height:1.6em;color:#333;cursor:pointer}#menu ul li a:hover,#menu ul li a:focus,#menu ul li a:active{text-shadow:#333333 1px 1px 2px}#menu ul li ul{display:none;z-index:99;position:absolute;border-top:1px solid #bbb;margin-left:-1px}#menu ul li ul li{background:#fff;clear:both;border:1px solid #bbb !important;border-top:none !important;width:100%}#menu ul li:hover>ul{display:block}#menu .breadcrumbs{margin-right:1em}#menu .breadcrumbs>li{border:none}#menu .breadcrumbs>li a{padding:0 0.3em}#menu .breadcrumbs>li:first-child a{padding-left:1em;text-indent:-999px;display:block;width:16px;background:url(images/actions/home.png) no-repeat 1em 0.1em}#menu .breadcrumbs>li:last-child{border-right:1px solid #bbb}#menu .breadcrumbs>li:last-child a{padding-right:1em}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;outline:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline}*:focus{outline:0}body{line-height:1em;color:black;background:white}ol,ul{list-style:none}table{border-collapse:separate;border-spacing:0;vertical-align:middle}caption,th,td{text-align:left;font-weight:normal;vertical-align:middle}q,blockquote{quotes:"" ""}q:before,q:after,blockquote:before,blockquote:after{content:""}img a{border:none}body{color:#111111;background:white;font-family:"URW Gothic L","DejaVu Sans",Verdana,sans-serif;font-size:10pt;line-height:1.2em}h1{font-size:185%}h2{font-size:170%}h3{font-size:155%}h4{font-size:140%}h5{font-size:125%}h6{font-size:110%}h1,h2,h3,h4,h5,h6{font-family:"Book Antiqua",Palatino,FreeSerif,serif;color:#153b7a;margin:1em 0 0.5em 0;line-height:1.2em}h1{margin-top:0}strong{font-weight:bold}em{font-style:italic}ul,ol,p{margin:0.8em 0 0.8em 0}ul,ol ul,ol{margin:0}ul{list-style-type:disc}ol{list-style-type:decimal}ul,ol{list-style-position:outside;padding-left:1.5em}ul.pagination{height:3em}ul.button-bar,ul.pagination{list-style-type:none;margin:0;display:block;padding:0;width:100%}ul.button-bar li,ul.pagination li{float:left;padding:0;margin:0}ul.button-bar li a,ul.button-bar li span,ul.pagination li a,ul.pagination li span{display:block;background:url(images/bg/button.png) repeat-x left bottom transparent;border:1px solid #bbb;border-left:0px none;color:#333;padding:0em 0.5em;line-height:1.5em}ul.button-bar li a:active,ul.button-bar li a.current,ul.button-bar li a.loading,ul.button-bar li span:active,ul.button-bar li span.current,ul.button-bar li span.loading,ul.pagination li a:active,ul.pagination li a.current,ul.pagination li a.loading,ul.pagination li span:active,ul.pagination li span.current,ul.pagination li span.loading{background:url(images/bg/button.png) repeat-x left bottom #d4e4ff}ul.button-bar li a.loading,ul.button-bar li span.loading,ul.pagination li a.loading,ul.pagination li span.loading{background:#d4e4ff url(images/loading.gif) repeat}ul.button-bar li a.ellipsis:before,ul.button-bar li span.ellipsis:before,ul.pagination li a.ellipsis:before,ul.pagination li span.ellipsis:before{content:'\22EF'}ul.button-bar li a.disabled,ul.button-bar li span.disabled,ul.pagination li a.disabled,ul.pagination li span.disabled{color:#bbb}ul.button-bar li:first-child a,ul.button-bar li:first-child span,ul.pagination li:first-child a,ul.pagination li:first-child span{border-left:1px solid #bbb;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px}ul.button-bar li:last-child a,ul.button-bar li:last-child span,ul.pagination li:last-child a,ul.pagination li:last-child span{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}dt{font-weight:bold;text-decoration:underline}dd{margin:0;padding:0 0 0.5em 0}table{border-collapse:separate;border-spacing:0px;background:#bbb;padding:1px;margin:0 0 2em 0}table td,table th{border-top:1px solid #E5E5E5;padding:0.2em 0.5em}table td.link,table th.link{padding:0}table td.link a,table th.link a{margin:0;padding:0.2em 0.5em;display:block}table tr{background:#fff}table tr:first-child td{border-top:0px none}table thead tr{background:url(images/bg/button.png) repeat-x left bottom #d4e4ff}table thead tr th{border-bottom:1px solid #bbb;border-top:0px none}a,a:visited{color:#153b7a;text-decoration:none}a.img{background:transparent}span.img{border:1px solid #bbb;float:right;text-align:center;color:black;background:#fff;padding:0.2em}span.img img{display:block}.editsection{border-radius:4px;-webkit-border-radius:4px;border:1px solid #bbb;display:block;background:url(images/bg/button.png) repeat-x left bottom #fff;font-family:"URW Gothic L","DejaVu Sans",Verdana,sans-serif;font-size:9pt;line-height:9pt;margin-top:2px;padding:2px;color:#333;float:right;font-variant:normal}.editsection:visited{color:#333}sub{vertical-align:text-bottom;font-size:75%}sup{vertical-align:text-top;font-size:75%}img{vertical-align:middle}hr{background:#bbb;border:none;height:1px}.version,tt,pre,code,kbd{font-family:"Andale Mono","Bitstream Vera Sans Mono",monospace}pre{border:1px solid #bbb;padding:0.2em;min-width:60%;white-space:pre-wrap;display:block}#history-table .compare{padding:0;width:1em}#history-table .compare button{margin:1px;display:inline;font-size:small}#history-table .compare input{display:inline;margin:0 3px}table.full,#history-table,#subpages-table{width:100%}table.full td,table.full th,#history-table td,#history-table th,#subpages-table td,#subpages-table th{white-space:nowrap}#subpages-table .actions{width:80px;padding:0px}#subpages-table .action-edit{text-indent:-999px;background:url(images/actions/edit.png) no-repeat top left;float:left;width:16px;height:16px;overflow:hidden}#subpages-table .action-history{text-indent:-999px;background:url(images/actions/history.png) no-repeat top left;float:left;width:16px;height:16px;overflow:hidden}#subpages-table .action-delete{text-indent:-999px;background:url(images/actions/delete.png) no-repeat top left;float:left;width:16px;height:16px;overflow:hidden}#subpages-table .action-move{text-indent:-999px;background:url(images/actions/move.png) no-repeat top left;float:left;width:16px;height:16px;overflow:hidden}#subpages-table .page:before{content:url(images/page.png) "\00a0"}#subpages-table .folder:before{content:url(images/folder.png) "\00a0"}#subpages-table .file-type-7z:before{content:url(images/filetypes/7z.png) "\00a0"}#subpages-table .file-type-bz2:before{content:url(images/filetypes/bz2.png) "\00a0"}#subpages-table .file-type-doc:before{content:url(images/filetypes/doc.png) "\00a0"}#subpages-table .file-type-flac:before{content:url(images/filetypes/flac.png) "\00a0"}#subpages-table .file-type-gz:before{content:url(images/filetypes/gz.png) "\00a0"}#subpages-table .file-type-html:before{content:url(images/filetypes/html.png) "\00a0"}#subpages-table .file-type-java:before{content:url(images/filetypes/java.png) "\00a0"}#subpages-table .file-type-jpg:before{content:url(images/filetypes/jpg.png) "\00a0"}#subpages-table .file-type-midi:before{content:url(images/filetypes/midi.png) "\00a0"}#subpages-table .file-type-mp3:before{content:url(images/filetypes/mp3.png) "\00a0"}#subpages-table .file-type-ogg:before{content:url(images/filetypes/ogg.png) "\00a0"}#subpages-table .file-type-pdf:before{content:url(images/filetypes/pdf.png) "\00a0"}#subpages-table .file-type-php:before{content:url(images/filetypes/php.png) "\00a0"}#subpages-table .file-type-png:before{content:url(images/filetypes/png.png) "\00a0"}#subpages-table .file-type-ppt:before{content:url(images/filetypes/ppt.png) "\00a0"}#subpages-table .file-type-psd:before{content:url(images/filetypes/psd.png) "\00a0"}#subpages-table .file-type-rar:before{content:url(images/filetypes/rar.png) "\00a0"}#subpages-table .file-type-rb:before{content:url(images/filetypes/rb.png) "\00a0"}#subpages-table .file-type-sh:before{content:url(images/filetypes/sh.png) "\00a0"}#subpages-table .file-type-tar:before{content:url(images/filetypes/tar.png) "\00a0"}#subpages-table .file-type-txt:before{content:url(images/filetypes/txt.png) "\00a0"}#subpages-table .file-type-wma:before{content:url(images/filetypes/wma.png) "\00a0"}#subpages-table .file-type-xls:before{content:url(images/filetypes/xls.png) "\00a0"}#subpages-table .file-type-zip:before{content:url(images/filetypes/zip.png) "\00a0"}.info{color:#333}.warn{color:#a50}.error{color:#a00}.ref{vertical-align:super;font-size:80%}button{border-radius:4px;-webkit-border-radius:4px;background:url(images/bg/button.png) repeat-x left bottom #fff;float:left;margin:0.3em 0.5em 0.3em 0;padding:2px;border:1px solid #bbb;color:#333;white-space:nowrap}button:active:not([disabled]),button.loading{background:url(images/bg/button.png) repeat-x left bottom #d4e4ff}button.loading{background:url(images/loading.gif) repeat #d4e4ff}button[disabled]{color:#999}form{display:inline}form select,form textarea,form input{float:left;margin:0.3em 0.5em 0.3em 0;padding:2px;border:1px solid #bbb;background:#fff;color:#333}form select:focus,form textarea:focus,form input:focus{border-style:dotted}form label{float:left;margin:0;padding:0.4em 0.5em 0.4em 0;border:none;background:none;color:#333}form label.unsaved{font-style:italic}form .fieldset label{width:12em;text-align:right}form .indent{margin-left:12.5em}form .indent label{width:auto}form input[type=text],form input[type=password]{font-family:"Andale Mono","Bitstream Vera Sans Mono",monospace;width:20em}form select{width:20em}form textarea{width:100%;font-family:"Andale Mono","Bitstream Vera Sans Mono",monospace;font-size:100%}form input[type=image],form input[type=image]:focus,form input[type=checkbox]{border:none;background:none}form input[type=hidden]{display:none}form br{clear:left}.flash{margin:0.5em 0;border:1px solid #d33;list-style-type:none;padding:0.5em;background:#fdd}table input{margin:0}.box,.fieldset,.tab{border-radius:4px;-webkit-border-radius:4px;box-shadow:2px 2px 8px #bbb;-webkit-box-shadow:2px 2px 8px #bbb;clear:both;display:block;border:1px solid #bbb;padding:0.5em 1em;margin:1em 0;overflow:auto}.box h1,.box h2,.box h3,.box h4,.box h5,.box h6,.fieldset h1,.fieldset h2,.fieldset h3,.fieldset h4,.fieldset h5,.fieldset h6,.tab h1,.tab h2,.tab h3,.tab h4,.tab h5,.tab h6{margin:0.2em 0}.js .tabs{margin:0;padding:0;border:0;outline:0;list-style-type:none;margin-left:0px;display:block;float:left;margin:0 0 1px 0;height:1.5em;width:100%;z-index:100;position:relative}.js .tabs li{float:left}.js .tabs>li{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;background:url(images/bg/button.png) repeat-x left bottom #d4e4ff;float:left;padding:0;margin:0 4px 0 0;height:1.5em;line-height:1.5em;border:1px solid #bbb}.js .tabs>li.selected>a{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;background:#fff;border-bottom:1px solid white}.js .tabs>li>a{display:block;text-decoration:none;white-space:nowrap;padding:0 0.8em;color:#333}.js .tabs>li>a:hover,.js .tabs>li>a:active,.js .tabs>li>a:focus{text-shadow:#333333 1px 1px 2px}.js .tab{-webkit-border-top-left-radius:0px;border-top-left-radius:0px}.no-js .tabs{display:none}.hidden{display:none !important}.toc .toc1{font-weight:bold}.toc .toc1>ol{margin-bottom:1em}.toc .toc1 .toc2{font-weight:normal}a.absent{color:#A55}.archive #header{background:url(images/bg/header_gray.jpg) #333}.error_page{padding-left:120px;min-height:400px;background:url(images/bug.png) top left no-repeat}.not_found_page{padding-left:120px;min-height:400px;background:url(images/not_found.png) top left no-repeat}* html #container{width:100%;padding:0;background:transparent;border-bottom:1px solid #bbb}* html #sidebar{margin:0;border-right:1px solid #bbb;border-bottom:1px solid #bbb}* html #content{width:70%;background:transparent}* html #footer{background:transparent;margin-top:0;padding-top:0}*:first-child+html #container{padding-right:7.1em}*:first-child+html #menu ul li li{width:8em}
2
2
  }@media print{.patch{width:100%;border:1px solid #BBB;border-collapse:collapse;border-spacing:0}.patch tr td{padding:0.5em;border-top:1px solid #BBB;font-family:"Bitstream Vera Sans Mono", monospace}.patch tr td pre{border:0px none;margin:0;padding:0}.patch tr td ins{background:#d4ffd4;text-decoration:none}.patch tr td del{color:#555555;text-decoration:line-through}.patch tr th{font-variant:normal;padding:0.2em 0.5em;border:1px solid #BBB}.patch tr.new th{background:url(images/actions/new.png) 2px 2px no-repeat;padding-left:20px}.patch tr.delete th{background:url(images/actions/delete.png) 2px 2px no-repeat;padding-left:20px}.patch tr.move th{background:url(images/actions/move.png) 2px 2px no-repeat;padding-left:20px}.patch tr.edit th{background:url(images/actions/edit.png) 2px 2px no-repeat;padding-left:20px}.patch-summary{width:100%}.patch-summary .ins,.patch-summary .del{width:1em}.patch-summary .ins{color:#5A5}.patch-summary .del{color:#A55}.patch-summary .new{background:#d4ffd4}.patch-summary .new .name{background:url(images/actions/new.png) 2px 2px no-repeat;padding-left:20px}.patch-summary .delete{background:#ffd4d4}.patch-summary .delete .name{background:url(images/actions/delete.png) 2px 2px no-repeat;padding-left:20px}.patch-summary .move{background:#ffc}.patch-summary .move .name{background:url(images/actions/move.png) 2px 2px no-repeat;padding-left:20px}.patch-summary .edit{background:#fff}.patch-summary .edit .name{background:url(images/actions/edit.png) 2px 2px no-repeat;padding-left:20px}body{color:black;background:#fff;font-family:"URW Gothic L","DejaVu Sans",Verdana,sans-serif;font-size:10pt;line-height:1.2em}h1{font-size:185%}h2{font-size:170%}h3{font-size:155%}h4{font-size:140%}h5{font-size:125%}h6{font-size:110%}h1,h2,h3,h4,h5,h6{font-family:"Book Antiqua",Palatino,FreeSerif,serif;color:#153b7a;margin:2em 0 0.5em 0}ul,ol,p{margin:0.8em 0 0.8em 0}ul,ol ul,ol{margin:0}ul{list-style-type:disc}ol{list-style-type:decimal}ul,ol{list-style-position:outside;padding-left:1.5em}table{border-collapse:collapse;border-spacing:0;border:1px solid #bbb}table tr td,table tr th{border:1px solid #bbb;padding:0.2em 0.5em}table tr td.link,table tr th.link{padding:0}table tr td.link a,table tr th.link a{margin:0;padding:0.2em 0.5em;display:block}a,a:visited{color:#153b7a;text-decoration:none}a.img{background:transparent}div.img a{border:1px solid #bbb;float:right;text-align:center;color:black;background:#fff;padding:0.2em}div.img a img{display:block}img{vertical-align:middle}hr{background:#bbb;border:none;height:1px}#header,#sidebar,#menu,.editsection,.backref,.hidden,.noprint{display:none !important}#footer{display:block;margin-top:1em}.ref,.ref:visited,.ref:active,.ref:hover{vertical-align:super;font-size:80%;color:black}.date .ago{display:none !important}.date .full{display:inline !important}.toc{padding:0.5em 2em}.toc ul{margin:0}.toc .toc1{font-weight:bold}.toc .toc1 .toc2{font-weight:normal}
3
3
  }
@@ -20,6 +20,15 @@ describe 'Olelo::Config' do
20
20
  end
21
21
  end
22
22
 
23
+ it 'should freeze' do
24
+ config = Olelo::Config.new
25
+ config['a'] = 42
26
+ config.freeze
27
+ lambda do
28
+ config['a'] += 1
29
+ end.should.raise RuntimeError
30
+ end
31
+
23
32
  it 'should raise NameError' do
24
33
  lambda do
25
34
  Olelo::Config.new.not.existing
@@ -1,4 +1,4 @@
1
- require 'olelo/util'
1
+ require 'helper'
2
2
 
3
3
  class Base
4
4
  extend Olelo::Factory
@@ -1,4 +1,4 @@
1
- require 'olelo/extensions'
1
+ require 'helper'
2
2
 
3
3
  describe 'Hash extensions' do
4
4
  it 'should have #with_indifferent_access' do
@@ -1,5 +1,4 @@
1
1
  require 'olelo'
2
- require 'bacon'
3
2
  require 'rack/test'
4
3
 
5
4
  module TestHelper
@@ -1,5 +1,4 @@
1
- require 'olelo/extensions'
2
- require 'olelo/hooks'
1
+ require 'helper'
3
2
 
4
3
  describe 'Olelo::Hooks' do
5
4
  before do
@@ -1,5 +1,4 @@
1
- require 'olelo/extensions'
2
- require 'olelo/util'
1
+ require 'helper'
3
2
 
4
3
  describe 'Object extensions' do
5
4
  it 'should have #blank?' do
@@ -0,0 +1,12 @@
1
+ begin
2
+ require 'simplecov'
3
+ SimpleCov.start
4
+ rescue LoadError
5
+ puts 'simplecov not found - no coverage generated'
6
+ end
7
+
8
+ Dir.glob('test/*.rb').each do |file|
9
+ if file != __FILE__
10
+ require File.expand_path(file)
11
+ end
12
+ end
@@ -1,4 +1,4 @@
1
- require 'olelo/extensions'
1
+ require 'helper'
2
2
 
3
3
  describe 'String extensions' do
4
4
  it 'should have #starts_with?' do
@@ -1,6 +1,4 @@
1
- require 'olelo/virtualfs'
2
- require 'olelo/templates'
3
- require 'slim'
1
+ require 'helper'
4
2
 
5
3
  class Bacon::Context
6
4
  include Olelo::Templates
@@ -1,10 +1,5 @@
1
1
  # encoding: UTF-8
2
- require 'cgi'
3
- require 'digest/md5'
4
- require 'digest/sha2'
5
- require 'open3'
6
- require 'olelo/extensions'
7
- require 'olelo/util'
2
+ require 'helper'
8
3
 
9
4
  describe 'Olelo::Util' do
10
5
  it 'should have #check' do
@@ -1,8 +1,7 @@
1
- - title "#{:compare.t(name: page.title)}: #{@diff.from.short} -> #{@diff.to.short}"
2
- h1
3
- = :compare.t(name: page.title)
4
- | :
1
+ - title :compare.t(name: page.title, from: @diff.from.short, to: @diff.to.short)
2
+ = define_block :from do
5
3
  a.version href=build_path(page, version: @diff.from) = @diff.from.short
6
- | &#8594;
4
+ = define_block :to do
7
5
  a.version href=build_path(page, version: @diff.to) = @diff.to.short
6
+ h1== :compare.t(name: escape_html(page.title), from: blocks[:from], to: blocks[:to])
8
7
  = format_diff(@diff)
@@ -4,9 +4,9 @@
4
4
  - title params[:pos] ? :edit_page_section.t(page: page.title) : :edit_page.t(page: page.title)
5
5
  h1= title
6
6
  = flash_messages
7
- = page.mime.text? ? tabs(:edit, :upload, :attributes) : tabs(:upload, :attributes)
7
+ = page.editable? ? tabs(:edit, :upload, :attributes) : tabs(:upload, :attributes)
8
8
  form action=build_path(page.new? ? nil : page.path) method='post'
9
- - if page.mime.text?
9
+ - if page.editable?
10
10
  #tab-edit.tab
11
11
  h2= :edit.t
12
12
  ruby:
@@ -1,6 +1,6 @@
1
1
  - title :history_of.t(page: page.title)
2
2
  h1= title
3
- = pagination(page, @page_count, @page_nr, action: :history)
3
+ = pagination(page, @page_count, @page_nr, action: :history, unlimited: true)
4
4
  table#history-table
5
5
  thead
6
6
  tr
@@ -31,5 +31,4 @@ html.no-js lang=Olelo::Config['locale'].sub('_', '-') class={page && !page.head?
31
31
  #footer
32
32
  == footer
33
33
  .noprint.powered_by
34
- ' Powered by
35
- a href='https://github.com/minad/olelo' &#332;lelo
34
+ == :powered_by.t
@@ -1,6 +1,6 @@
1
- - title '404 Not Found'
1
+ - title :not_found_title.t
2
2
  .not_found_page
3
3
  h1= title
4
- p= :page_not_found.t
4
+ p= :not_found_text.t
5
5
  - if !Olelo::Config['production']
6
6
  pre= error.backtrace.to_a.join("\n")
@@ -1,9 +1,8 @@
1
1
  - title page.title
2
- = footer do
3
- ' #{:version.t}
2
+ = define_block :version_link do
4
3
  a.version href=build_path(page, version: page.version, force_version: true) title=page.version = page.version.short
5
- ' #{:by.t} #{page.version.author.name},
6
- = date page.version.date
4
+ = footer do
5
+ == :version_by.t(version: blocks[:version_link], author: escape_html(page.version.author.name), date: date(page.version.date))
7
6
  - if !page.attributes['no_title']
8
7
  h1= title
9
8
  == content
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: olelo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.4
4
+ version: 0.9.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-27 00:00:00.000000000 Z
12
+ date: 2012-10-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multi_json
16
- requirement: &8726980 !ruby/object:Gem::Requirement
16
+ requirement: &6959180 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.3.6
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *8726980
24
+ version_requirements: *6959180
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: slim
27
- requirement: &8725520 !ruby/object:Gem::Requirement
27
+ requirement: &6957600 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,21 +32,21 @@ dependencies:
32
32
  version: 1.3.3
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *8725520
35
+ version_requirements: *6957600
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: creole
38
- requirement: &8724680 !ruby/object:Gem::Requirement
38
+ requirement: &6956440 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
42
42
  - !ruby/object:Gem::Version
43
- version: 0.4.2
43
+ version: 0.5.0
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *8724680
46
+ version_requirements: *6956440
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: nokogiri
49
- requirement: &8723740 !ruby/object:Gem::Requirement
49
+ requirement: &6955340 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.5.5
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *8723740
57
+ version_requirements: *6955340
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: mimemagic
60
- requirement: &8722860 !ruby/object:Gem::Requirement
60
+ requirement: &7036260 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 0.2.0
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *8722860
68
+ version_requirements: *7036260
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rack
71
- requirement: &8722040 !ruby/object:Gem::Requirement
71
+ requirement: &7035140 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 1.4.1
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *8722040
79
+ version_requirements: *7035140
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: redcarpet
82
- requirement: &8721240 !ruby/object:Gem::Requirement
82
+ requirement: &7034360 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 2.2.2
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *8721240
90
+ version_requirements: *7034360
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rugged
93
- requirement: &9145700 !ruby/object:Gem::Requirement
93
+ requirement: &7033500 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ~>
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: 0.17.0.b7
99
99
  type: :runtime
100
100
  prerelease: false
101
- version_requirements: *9145700
101
+ version_requirements: *7033500
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: evaluator
104
- requirement: &9144960 !ruby/object:Gem::Requirement
104
+ requirement: &7032780 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ~>
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: 0.1.6
110
110
  type: :runtime
111
111
  prerelease: false
112
- version_requirements: *9144960
112
+ version_requirements: *7032780
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: rake
115
- requirement: &9144460 !ruby/object:Gem::Requirement
115
+ requirement: &7031960 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: 0.8.7
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *9144460
123
+ version_requirements: *7031960
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: sass
126
- requirement: &9143960 !ruby/object:Gem::Requirement
126
+ requirement: &7031420 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ! '>='
@@ -131,10 +131,10 @@ dependencies:
131
131
  version: 3.1.0
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *9143960
134
+ version_requirements: *7031420
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: bacon
137
- requirement: &9143380 !ruby/object:Gem::Requirement
137
+ requirement: &7030900 !ruby/object:Gem::Requirement
138
138
  none: false
139
139
  requirements:
140
140
  - - ~>
@@ -142,10 +142,10 @@ dependencies:
142
142
  version: 1.1.0
143
143
  type: :development
144
144
  prerelease: false
145
- version_requirements: *9143380
145
+ version_requirements: *7030900
146
146
  - !ruby/object:Gem::Dependency
147
147
  name: rack-test
148
- requirement: &9142860 !ruby/object:Gem::Requirement
148
+ requirement: &7030300 !ruby/object:Gem::Requirement
149
149
  none: false
150
150
  requirements:
151
151
  - - ~>
@@ -153,7 +153,7 @@ dependencies:
153
153
  version: 0.6.2
154
154
  type: :development
155
155
  prerelease: false
156
- version_requirements: *9142860
156
+ version_requirements: *7030300
157
157
  description: Olelo is a git-based wiki which supports many markup languages, tags,
158
158
  embedded TeX and much more. It can be extended through plugins.
159
159
  email:
@@ -240,7 +240,7 @@ files:
240
240
  - plugins/filters/creole.rb
241
241
  - plugins/filters/disposition.rb
242
242
  - plugins/filters/editsection.rb
243
- - plugins/filters/fix_img_tag.rb
243
+ - plugins/filters/fix_image_links.rb
244
244
  - plugins/filters/html2xml.rb
245
245
  - plugins/filters/html_wrapper.rb
246
246
  - plugins/filters/interwiki.rb
@@ -339,20 +339,22 @@ files:
339
339
  - static/script.js
340
340
  - static/script/00-json2.js
341
341
  - static/script/01-jquery.js
342
- - static/script/02-olelo.storage.js
343
- - static/script/03-jquery.ui.core.js
344
- - static/script/04-jquery.ui.widget.js
345
- - static/script/05-jquery.ui.position.js
346
- - static/script/06-jquery.ui.menu.js
347
- - static/script/07-jquery.ui.autocomplete.js
348
- - static/script/08-olelo.i18n.js
349
- - static/script/09-olelo.unsaved.js
350
- - static/script/10-olelo.historytable.js
351
- - static/script/11-olelo.pagination.js
352
- - static/script/13-olelo.tabwidget.js
353
- - static/script/14-olelo.timeago.js
354
- - static/script/15-olelo.underliner.js
355
- - static/script/16-olelo.ui.combobox.js
342
+ - static/script/02-history.js
343
+ - static/script/03-history.adapter.jquery.js
344
+ - static/script/04-jquery.ui.core.js
345
+ - static/script/05-jquery.ui.widget.js
346
+ - static/script/06-jquery.ui.position.js
347
+ - static/script/07-jquery.ui.menu.js
348
+ - static/script/08-jquery.ui.autocomplete.js
349
+ - static/script/09-olelo.storage.js
350
+ - static/script/10-olelo.i18n.js
351
+ - static/script/11-olelo.unsaved.js
352
+ - static/script/12-olelo.historytable.js
353
+ - static/script/13-olelo.pagination.js
354
+ - static/script/14-olelo.tabwidget.js
355
+ - static/script/15-olelo.timeago.js
356
+ - static/script/16-olelo.underliner.js
357
+ - static/script/17-olelo.ui.combobox.js
356
358
  - static/script/init.js
357
359
  - static/themes/atlantis/constants.scss
358
360
  - static/themes/atlantis/iehacks.scss
@@ -428,6 +430,7 @@ files:
428
430
  - test/object_extensions_test.rb
429
431
  - test/page_test.rb
430
432
  - test/request_test.rb
433
+ - test/run.rb
431
434
  - test/string_extensions_test.rb
432
435
  - test/templates_test.rb
433
436
  - test/util_test.rb