olelo 0.9.4 → 0.9.5

Sign up to get free protection for your applications and to get access to all the features.
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