olelo 0.9.8 → 0.9.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. data/.gitignore +1 -0
  2. data/Rakefile +44 -10
  3. data/config.ru +4 -1
  4. data/lib/olelo/application.rb +1 -54
  5. data/lib/olelo/helper.rb +12 -7
  6. data/lib/olelo/initializer.rb +10 -13
  7. data/lib/olelo/locale.rb +7 -12
  8. data/lib/olelo/locale.yml +1 -36
  9. data/lib/olelo/plugin.rb +0 -12
  10. data/lib/olelo/routing.rb +1 -1
  11. data/lib/olelo/templates.rb +2 -3
  12. data/lib/olelo/util.rb +1 -1
  13. data/lib/olelo/version.rb +1 -1
  14. data/{views → lib/olelo/views}/delete.slim +0 -0
  15. data/{views → lib/olelo/views}/deleted.slim +0 -0
  16. data/{views → lib/olelo/views}/edit.slim +3 -3
  17. data/{views → lib/olelo/views}/error.slim +0 -0
  18. data/{views → lib/olelo/views}/layout.slim +1 -1
  19. data/{views → lib/olelo/views}/login.slim +1 -1
  20. data/{views → lib/olelo/views}/move.slim +0 -0
  21. data/{views → lib/olelo/views}/not_found.slim +0 -0
  22. data/{views → lib/olelo/views}/profile.slim +0 -0
  23. data/lib/olelo/views/show.slim +8 -0
  24. data/lib/olelo/virtualfs.rb +5 -29
  25. data/plugins/aspects/changelog.rb +3 -5
  26. data/plugins/aspects/documentbrowser.rb +24 -2
  27. data/plugins/aspects/download.rb +12 -0
  28. data/plugins/aspects/gallery/main.rb +9 -0
  29. data/plugins/aspects/highlight.rb +11 -0
  30. data/plugins/aspects/image.rb +12 -0
  31. data/plugins/aspects/imageinfo.rb +36 -2
  32. data/plugins/aspects/main.rb +16 -1
  33. data/plugins/aspects/pageinfo.rb +20 -2
  34. data/plugins/aspects/source.rb +12 -0
  35. data/plugins/aspects/subpages.rb +17 -1
  36. data/plugins/aspects/text.rb +12 -0
  37. data/plugins/blog/main.rb +4 -4
  38. data/plugins/editor/preview.rb +16 -0
  39. data/plugins/editor/recaptcha.rb +19 -0
  40. data/plugins/filters/editsection.rb +19 -0
  41. data/plugins/filters/locale.yml +11 -16
  42. data/plugins/filters/toc.rb +12 -0
  43. data/{views → plugins/history}/changes.slim +0 -0
  44. data/{views → plugins/history}/compare.slim +2 -2
  45. data/{views → plugins/history}/history.slim +1 -1
  46. data/plugins/history/locale.yml +40 -0
  47. data/plugins/history/main.rb +67 -0
  48. data/plugins/history/script.js +2 -0
  49. data/{static/script/12-olelo.historytable.js → plugins/history/script/00-historytable.js} +0 -0
  50. data/plugins/history/script/init.js +7 -0
  51. data/plugins/login/persistent.rb +11 -0
  52. data/plugins/repositories/git_grep.rb +19 -2
  53. data/plugins/repositories/gitrb_repository.rb +8 -0
  54. data/plugins/repositories/rugged_repository.rb +10 -0
  55. data/plugins/security/acl.rb +23 -0
  56. data/plugins/security/private_wiki.rb +11 -0
  57. data/plugins/utils/assets.rb +15 -21
  58. data/plugins/utils/store.rb +40 -19
  59. data/static/{images/favicon.png → favicon.png} +0 -0
  60. data/static/script.js +3 -5
  61. data/static/script/init.js +0 -1
  62. data/static/themes/atlantis/screen.scss +3 -3
  63. data/static/themes/atlantis/style.css +1 -1
  64. data/test/templates_test.rb +3 -11
  65. metadata +47 -49
  66. data/plugins/aspects/locale.yml +0 -87
  67. data/plugins/editor/locale.yml +0 -20
  68. data/plugins/login/locale.yml +0 -8
  69. data/plugins/repositories/locale.yml +0 -16
  70. data/plugins/security/locale.yml +0 -24
  71. data/views/show.slim +0 -8
@@ -227,6 +227,7 @@ class RuggedRepository < Repository
227
227
  end
228
228
 
229
229
  def delete(path)
230
+ check_path(path)
230
231
  work_tree.delete(path)
231
232
  work_tree.delete(path + CONTENT_EXT) if work_tree[path + CONTENT_EXT]
232
233
  work_tree.delete(path + ATTRIBUTE_EXT) if work_tree[path + ATTRIBUTE_EXT]
@@ -239,6 +240,7 @@ class RuggedRepository < Repository
239
240
  end
240
241
 
241
242
  def path_etag(path, version)
243
+ check_path(path)
242
244
  commit = @git.lookup(version.to_s)
243
245
  raise 'Not a commit' unless Rugged::Commit === commit
244
246
  if oid = oid_by_path(commit, path)
@@ -258,6 +260,8 @@ class RuggedRepository < Repository
258
260
  end
259
261
 
260
262
  def get_history(path, skip, limit)
263
+ check_path(path)
264
+
261
265
  commits = []
262
266
  walker = Rugged::Walker.new(@git)
263
267
  walker.sorting(Rugged::SORT_TOPO)
@@ -276,6 +280,8 @@ class RuggedRepository < Repository
276
280
  end
277
281
 
278
282
  def get_path_version(path, version)
283
+ check_path(path)
284
+
279
285
  version ||= @git.head.target
280
286
  version = version.to_s
281
287
 
@@ -313,6 +319,7 @@ class RuggedRepository < Repository
313
319
  end
314
320
 
315
321
  def get_children(path, version)
322
+ check_path(path)
316
323
  commit = @git.lookup(version.to_s)
317
324
  raise 'Not a commit' unless Rugged::Commit === commit
318
325
  object = object_by_path(commit, path)
@@ -322,6 +329,7 @@ class RuggedRepository < Repository
322
329
  end
323
330
 
324
331
  def get_content(path, version)
332
+ check_path(path)
325
333
  commit = @git.lookup(version.to_s)
326
334
  raise 'Not a commit' unless Rugged::Commit === commit
327
335
  object = object_by_path(commit, path)
@@ -330,6 +338,7 @@ class RuggedRepository < Repository
330
338
  end
331
339
 
332
340
  def get_attributes(path, version)
341
+ check_path(path)
333
342
  commit = @git.lookup(version.to_s)
334
343
  raise 'Not a commit' unless Rugged::Commit === commit
335
344
  path += ATTRIBUTE_EXT
@@ -338,6 +347,7 @@ class RuggedRepository < Repository
338
347
  end
339
348
 
340
349
  def diff(path, from, to)
350
+ check_path(path)
341
351
  commit_from = from && @git.rev_parse(from.to_s)
342
352
  commit_to = @git.rev_parse(to.to_s)
343
353
  raise 'Not a commit' unless (!commit_from || Rugged::Commit === commit_from) && Rugged::Commit === commit_to
@@ -55,3 +55,26 @@ class ::Olelo::Application
55
55
  end
56
56
  end
57
57
  end
58
+
59
+ __END__
60
+ @@ locale.yml
61
+ cs_CZ:
62
+ attribute_acl_create: 'Vytvářet podstránky'
63
+ attribute_acl_delete: 'Mazat podstránky'
64
+ attribute_acl_write: 'Právo zápisu'
65
+ group_acl: 'Řízení přístupů (ACL)'
66
+ de:
67
+ attribute_acl_create: 'Unterseiten anlegen'
68
+ attribute_acl_delete: 'Unterseiten löschen'
69
+ attribute_acl_write: 'Schreibzugriff'
70
+ group_acl: 'Zugriffslisten'
71
+ en:
72
+ attribute_acl_create: 'Create subpages'
73
+ attribute_acl_delete: 'Delete subpages'
74
+ attribute_acl_write: 'Write access'
75
+ group_acl: 'Access control lists'
76
+ fr:
77
+ attribute_acl_create: "Créer sous-pages"
78
+ attribute_acl_delete: "Supprimer sous-pages"
79
+ attribute_acl_write: "Accès en écriture"
80
+ group_acl: "Liste de contrôle des accès"
@@ -22,3 +22,14 @@ class ::Olelo::Application
22
22
  end
23
23
  end
24
24
  end
25
+
26
+ __END__
27
+ @@ locale.yml
28
+ cs_CZ:
29
+ login_first: 'Musíte se nejprve přihlásit'
30
+ de:
31
+ login_first: 'Sie müssen sich zuerst anmelden'
32
+ en:
33
+ login_first: 'You have to login first'
34
+ fr:
35
+ login_first: "Vous devez d'abord vous connecter"
@@ -16,11 +16,11 @@ class ::Olelo::Application
16
16
  css = Application.scripts['css']
17
17
  result = ''
18
18
  if css
19
- path = build_path "_/assets/assets.css?#{css.first.to_i}"
19
+ path = build_path "_/assets/assets.css?#{css.first}"
20
20
  result << %{<link rel="stylesheet" href="#{escape_html path}" type="text/css"/>}
21
21
  end
22
22
  if js
23
- path = build_path "_/assets/assets.js?#{js.first.to_i}"
23
+ path = build_path "_/assets/assets.js?#{js.first}"
24
24
  result << %{<script src="#{escape_html path}" type="text/javascript"></script>}
25
25
  end
26
26
  result
@@ -28,7 +28,7 @@ class ::Olelo::Application
28
28
 
29
29
  get "/_/assets/assets.:type", type: 'js|css' do
30
30
  if script = Application.scripts[params[:type]]
31
- cache_control last_modified: script.first, max_age: :static
31
+ cache_control max_age: :static, must_revalidate: false
32
32
  response['Content-Type'] = MimeMagic.by_extension(params[:type]).to_s
33
33
  response['Content-Length'] = script.last.bytesize.to_s
34
34
  script.last
@@ -39,15 +39,16 @@ class ::Olelo::Application
39
39
 
40
40
  get "/_/assets/:name", name: '.*' do
41
41
  if asset = Application.assets[params[:name]]
42
- if path = asset.real_path
42
+ fs, name = asset
43
+ if path = fs.real_path(name)
43
44
  file = Rack::File.new(nil)
44
45
  file.path = path
45
46
  file.serving(env)
46
47
  else
47
- cache_control last_modified: asset.mtime, max_age: :static
48
- response['Content-Type'] = (MimeMagic.by_path(asset.name) || 'application/octet-stream').to_s
49
- response['Content-Length'] = asset.size.to_s
50
- asset.read
48
+ cache_control last_modified: fs.mtime(name), max_age: :static
49
+ response['Content-Type'] = (MimeMagic.by_path(name) || 'application/octet-stream').to_s
50
+ response['Content-Length'] = fs.size(name).to_s
51
+ fs.read(name)
51
52
  end
52
53
  else
53
54
  :not_found
@@ -57,24 +58,17 @@ end
57
58
 
58
59
  class ::Olelo::Plugin
59
60
  def export_assets(*files)
60
- virtual_fs.glob(*files) do |file|
61
- Application.assets[plugin_dir/file.name] = file
61
+ virtual_fs.glob(*files) do |fs, name|
62
+ Application.assets[path/name] = [fs, name]
62
63
  end
63
64
  end
64
65
 
65
66
  def export_scripts(*files)
66
- virtual_fs.glob(*files) do |file|
67
- raise 'Invalid script type' if file.name !~ /\.(css|js)$/
67
+ virtual_fs.glob(*files) do |fs, name|
68
+ raise 'Invalid script type' if name !~ /\.(css|js)$/
68
69
  scripts = Application.scripts[$1].to_a
69
- Application.scripts[$1] = [[scripts[0], file.mtime].compact.max, "#{scripts[1]}/* #{plugin_dir/file.name} */\n#{file.read}\n"]
70
- end
71
- end
72
-
73
- def plugin_dir
74
- if File.basename(file) == 'main.rb'
75
- path
76
- else
77
- File.dirname(path)
70
+ code = "#{scripts[1]}/* #{path/name} */\n#{fs.read(name)}\n"
71
+ Application.scripts[$1] = [md5(code), code]
78
72
  end
79
73
  end
80
74
  end
@@ -94,22 +94,6 @@ class Store
94
94
  # Delegated store
95
95
  Delegated = DelegateClass(Store)
96
96
 
97
- # Synchronized store
98
- def self.Synchronized(type)
99
- klass = Class.new
100
- klass.class_eval %{
101
- def initialize(config)
102
- @store = #{type.name}.new(config)
103
- @lock = Mutex.new
104
- end
105
-
106
- def method_missing(*args)
107
- @lock.synchronize { @store.send(*args) }
108
- end
109
- }
110
- klass
111
- end
112
-
113
97
  # Memory based store (uses hash)
114
98
  class Memory < Delegated
115
99
  def initialize(config)
@@ -122,7 +106,7 @@ class Store
122
106
  # Memcached client
123
107
  class Memcached < Delegated
124
108
  def initialize(config)
125
- super(Store::Synchronized(Native).new(config))
109
+ super(Native.new(config))
126
110
  rescue LoadError
127
111
  super(Ruby.new(config))
128
112
  end
@@ -218,7 +202,8 @@ class Store
218
202
  def initialize(config)
219
203
  require 'pstore'
220
204
  FileUtils.mkpath(::File.dirname(config[:file]))
221
- @store = ::PStore.new(config[:file])
205
+ # Create a thread-safe pstore
206
+ @store = ::PStore.new(config[:file], true)
222
207
  end
223
208
 
224
209
  # @override
@@ -251,7 +236,43 @@ class Store
251
236
  end
252
237
  end
253
238
 
254
- register :pstore, Synchronized(PStore)
239
+ register :pstore, PStore
240
+
241
+ # GDBM based store
242
+ class GDBM < Store
243
+ def initialize(config)
244
+ require 'gdbm'
245
+ FileUtils.mkpath(::File.dirname(config[:db]))
246
+ @db = ::GDBM.new(config[:db])
247
+ end
248
+
249
+ # @override
250
+ def key?(key)
251
+ @db.has_key?(key)
252
+ end
253
+
254
+ # @override
255
+ def [](key)
256
+ deserialize(@db[key])
257
+ end
258
+
259
+ # @override
260
+ def []=(key, value)
261
+ @db[key] = serialize(value)
262
+ end
263
+
264
+ # @override
265
+ def delete(key)
266
+ @db.delete(key)
267
+ end
268
+
269
+ # @override
270
+ def clear
271
+ @db.clear
272
+ end
273
+ end
274
+
275
+ register :gdbm, GDBM
255
276
 
256
277
  # File based store
257
278
  class File < Store
@@ -294,12 +294,10 @@ o)})},_renderItemData:function(n,s){return this._renderItem(n,s).data("ui-autoco
294
294
  arguments)},_keyEvent:function(n,s){if(!this.isMultiLine||this.menu.element.is(":visible")){this._move(n,s);s.preventDefault()}}});i.extend(i.ui.autocomplete,{escapeRegex:function(n){return n.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(n,s){var z=RegExp(i.ui.autocomplete.escapeRegex(s),"i");return i.grep(n,function(r){return z.test(r.label||r.value||r)})}});i.widget("ui.autocomplete",i.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(n){return n+
295
295
  (n>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(n){this._superApply(arguments);this.options.disabled||this.cancelSearch||this.liveRegion.text(n&&n.length?this.options.messages.results(n.length):this.options.messages.noResults)}})})(jQuery);(function(i){function v(o){if(typeof o!="string"&&typeof o!="number")throw new TypeError("Key name must be string or numeric");}function n(){try{s.oleloStorage=JSON.stringify(z)}catch(o){}}var s={},z={};try{if(window.localStorage)s=window.localStorage;if(s.oleloStorage)z=JSON.parse(s.oleloStorage)}catch(r){}i.storage={set:function(o,x){v(o);z[o]=x;n();return x},get:function(o,x){v(o);if(o in z)return z[o];return typeof x=="undefined"?null:x},remove:function(o){v(o);if(o in z){delete z[o];n();return true}return false}}})(jQuery);(function(i){function v(z,r){var o=s[z];return o&&o[r]}var n=null,s={};i.translations=function(z){for(var r in z)if(s[r])for(var o in z[r])s[r][o]=z[r][o];else s[r]=z[r]};i.t=function(z,r){if(!n){var o=i("html");n=o.attr("lang")||o.attr("xml:lang")||"en"}var x;o=v(n,z);if(!o&&(x=n.indexOf("-")))o=v(n.substr(0,x),z);if(o){for(var E in r)o=o.replace(RegExp("#{"+E+"}","g"),r[E]);return o}return"#"+z}})(jQuery);(function(i){function v(){var z=false;switch(this.type){case "checkbox":case "radio":z=this.checked!=this.defaultChecked;break;case "hidden":case "password":case "text":case "textarea":case "file":z=this.value!=this.defaultValue;break;case "select-one":case "select-multiple":for(var r=0;r<this.options.length&&!z;++r)z=this.options[r].selected!=this.options[r].defaultSelected;break}i("label[for="+this.id+"]").toggleClass("unsaved",z);i(this).toggleClass("unsaved",z)}function n(z){i("input.observe, textarea.observe, select.observe").each(function(){v.call(this)});
296
296
  return i(".unsaved",z).size()!==0}i.translations({en:{confirmUnsaved:"The page was not saved. Continue?",pageUnsaved:"The page was not saved."},de:{confirmUnsaved:"Die Seite wurde nicht gespeichert. Fortsetzen?",pageUnsaved:"Die Seite wurde nicht gespeichert."},cs:{confirmUnsaved:"Str\u00e1nka nebyla ulo\u017eena. Pokra\u010dovat?",pageUnsaved:"Str\u00e1nka nebyla ulo\u017eena."},fr:{confirmUnsaved:"La page n'a pas \u00e9t\u00e9 enregistr\u00e9e. Voulez vous continuer ?",pageUnsaved:"La page n'a pas \u00e9t\u00e9 enregistr\u00e9e."}});
297
- i.fn.confirmUnsaved=function(){return!n(this)||confirm(i.t("confirmUnsaved"))};i(document).on("change autocompletechange","input.observe, textarea.observe, select.observe",v);var s=false;i(document).on("submit","form",function(){s=true}).bind("reset",function(){i(".unsaved",this).removeClass("unsaved")});i(window).bind("beforeunload",function(){if(!s&&n(document))return i.t("pageUnsaved")})})(jQuery);(function(i){i.fn.historyTable=function(){function v(){var o=[];z.each(function(){this.checked&&o.push(this.name)});return o}i("thead tr",this).prepend('<th class="compare"><button>&#177;</button></th>');i("tbody tr",this).each(function(){var o=i(this).attr("id").substr(8);i(this).prepend('<td class="compare"><input type="checkbox" name="'+o+'"/></td>')});var n=i.storage.get("historyTable");if(n)for(var s=0;s<n.length;++s)i("input[name="+n[s]+"]").attr("checked","checked");var z=i("tbody input",this),
298
- r=i("th button",this);r.click(function(){var o=v();i.storage.set("historyTable",o);location.href=location.pathname.replace("/history","/compare/"+o[o.length-1]+"..."+o[0])});i("td input",this).change(function(){v().length>1?r.removeAttr("disabled"):r.attr("disabled","disabled")}).change()}})(jQuery);(function(i){i.fn.pagination=function(v){function n(z){s.load(z+(z.indexOf("?")<0?"?":"&")+"no_layout=1",function(){s.trigger("pageLoaded",[z])})}var s=this;i(document).on("click",v,function(){i(this).addClass("loading");History.enabled?History.pushState(null,document.title,this.href):n(this.href);return false});i(window).bind("statechange",function(){var z=History.getState();n(z.url)})}})(jQuery);(function(i){i.fn.tabWidget=function(v){var n=v&&v.store,s=null;i("> a[href^='#']",this).click(function(){if(s.data("tab")==i(this).data("tab"))return false;if(!s.data("tab").confirmUnsaved())return false;s.data("tab").hide();s.parent().removeClass("selected");s=i(this);s.data("tab").show();s.parent().addClass("selected");n&&i.storage.set(n,s.data("tab").attr("id"));return false}).each(function(){var z=i(this.href.match(/(#.*)$/)[1]);z.hide();i(this).data("tab",z)});if(n)if(v=i.storage.get(n))s=i("> a[href='#"+
297
+ i.fn.confirmUnsaved=function(){return!n(this)||confirm(i.t("confirmUnsaved"))};i(document).on("change autocompletechange","input.observe, textarea.observe, select.observe",v);var s=false;i(document).on("submit","form",function(){s=true}).bind("reset",function(){i(".unsaved",this).removeClass("unsaved")});i(window).bind("beforeunload",function(){if(!s&&n(document))return i.t("pageUnsaved")})})(jQuery);(function(i){i.fn.pagination=function(v){function n(z){s.load(z+(z.indexOf("?")<0?"?":"&")+"no_layout=1",function(){s.trigger("pageLoaded",[z])})}var s=this;i(document).on("click",v,function(){i(this).addClass("loading");History.enabled?History.pushState(null,document.title,this.href):n(this.href);return false});i(window).bind("statechange",function(){var z=History.getState();n(z.url)})}})(jQuery);(function(i){i.fn.tabWidget=function(v){var n=v&&v.store,s=null;i("> a[href^='#']",this).click(function(){if(s.data("tab")==i(this).data("tab"))return false;if(!s.data("tab").confirmUnsaved())return false;s.data("tab").hide();s.parent().removeClass("selected");s=i(this);s.data("tab").show();s.parent().addClass("selected");n&&i.storage.set(n,s.data("tab").attr("id"));return false}).each(function(){var z=i(this.href.match(/(#.*)$/)[1]);z.hide();i(this).data("tab",z)});if(n)if(v=i.storage.get(n))s=i("> a[href='#"+
299
298
  v+"']",this);if(!s||s.size()===0)s=i(this).filter(".selected").find("> a[href^='#']");if(!s||s.size()===0)s=i(this).filter(":first").find("> a[href^='#']");if(s&&s.data("tab")){s.parent().addClass("selected");s.data("tab").show()}}})(jQuery);(function(i){function v(n){n=Math.floor(((new Date).getTime()-new Date(n*1E3))/6E4);if(n<=0)return i.t("less_than_a_minute_ago");if(n==1)return i.t("a_minute_ago");if(n<45)return i.t("n_minutes_ago",{n:n});if(n<90)return i.t("one_hour_ago");if(n<1440)return i.t("n_hours_ago",{n:Math.round(n/60)});if(n<2880)return i.t("one_day_ago");if(n<43200)return i.t("n_days_ago",{n:Math.round(n/1440)});if(n<86400)return i.t("one_month_ago");if(n<525960)return i.t("n_months_ago",{n:Math.round(n/43200)});if(n<1051920)return i.t("one_year_ago");
300
299
  return i.t("over_n_years_ago",{n:Math.round(n/525960)})}i.translations({en:{less_than_a_minute_ago:"less than a minute ago",a_minute_ago:"a minute ago",n_minutes_ago:"#{n} minutes ago",one_hour_ago:"1 hour ago",n_hours_ago:"#{n} hours ago",one_day_ago:"1 day ago",n_days_ago:"#{n} days ago",one_month_ago:"1 month ago",n_months_ago:"#{n} months ago",one_year_ago:"1 year ago",over_n_years_ago:"over #{n} years ago"},de:{less_than_a_minute_ago:"vor weniger als einer Minute",a_minute_ago:"vor einer Minute",
301
300
  n_minutes_ago:"vor #{n} Minuten",one_hour_ago:"vor einer Stunde",n_hours_ago:"vor #{n} Stunden",one_day_ago:"vor einem Tag",n_days_ago:"vor #{n} Tagen",one_month_ago:"vor einem Monat",n_months_ago:"vor #{n} Monaten",one_year_ago:"vor einem Jahr",over_n_years_ago:"vor \u00fcber #{n} Jahren"},cs:{less_than_a_minute_ago:"m\u00e9n\u011b ne\u017e 1 minuta",a_minute_ago:"p\u0159ed minutou",n_minutes_ago:"p\u0159ed #{n} minutami",one_hour_ago:"p\u0159ed hodinou",n_hours_ago:"p\u0159ed #{n} hodinami",one_day_ago:"jeden den",
302
301
  n_days_ago:"p\u0159ed #{n} dny",one_month_ago:"jeden m\u011bs\u00edc",n_months_ago:"p\u0159ed #{n} m\u011bs\u00edci",one_year_ago:"1 rok",over_n_years_ago:"p\u0159ed #{n} lety"},fr:{less_than_a_minute_ago:"il y a moins d'une minute",a_minute_ago:"il y a une minute",n_minutes_ago:"il y a #{n} minutes",one_hour_ago:"il y a 1 heure",n_hours_ago:"il y a #{n} heures",one_day_ago:"il y a 1 jour",n_days_ago:"il y a #{n} jours",one_month_ago:"il y a 1 mois",n_months_ago:"il y a #{n} mois",one_year_ago:"il y a 1 an",
303
- over_n_years_ago:"il y a plus de #{n} ans"}});i.fn.timeAgo=function(){this.each(function(){var n=i(this),s=n.data("epoch");s&&n.attr("title",n.text()).html(v(s))})}})(jQuery);(function(i){i.extend(i.fn,{underlineText:function(v){this.each(function(){var n=i(this),s,z;if(n.children().size()===0){s=n.text();z=s.toLowerCase().indexOf(v.toLowerCase());z>=0&&n.html(s.substr(0,z)+'<span style="text-decoration: underline">'+s.substr(z,v.length)+"</span>"+s.substr(z+v.length))}else n.children().underlineText(v)})},underlineAccessKey:function(){this.each(function(){var v=i(this).attr("accesskey");v&&i(this).underlineText(v)})}})})(jQuery);(function(i){i.widget("ui.combobox",{_create:function(){var v=this.element;v.autocomplete({delay:0,minLength:0,source:this.options.source}).click(function(){v.autocomplete("widget").is(":visible")?v.autocomplete("close"):v.autocomplete("search",this.value)});i('<button class="ui-combo-button"/>').attr("tabIndex",-1).insertAfter(v).click(function(n){n.preventDefault();if(v.autocomplete("widget").is(":visible"))v.autocomplete("close");else{v.autocomplete("search","");v.focus()}})}})})(jQuery);$(function(){function i(){$("#upload-path",this).each(function(){var v=this,n=v.value,s=v.value;if(s.length===0||s.match(/\/$/))$("#upload-file").change(function(){if(v.value==n){v.value=s+this.value;n=v.value}})});$("label, #menu, .tabhead, .pagination, .button-bar",this).disableSelection();$("#history-table",this).historyTable();$(".date",this).timeAgo();$(".tabs",this).each(function(){$("> li",this).tabWidget()});$("*[accesskey]",this).underlineAccessKey()}$("html").removeClass("no-js").addClass("js");
304
- $("#content").pagination(".pagination a");$("#content").bind("pageLoaded",i);i.apply($(document));$("button[data-target]").live("click",function(){var v=$(this),n=$(this.form);v.addClass("loading");$.ajax({type:n.attr("method")||"get",url:n.attr("action")||window.location.href,data:n.serialize()+"&"+v.attr("name")+"="+v.attr("value")+"&no_layout=1",success:function(s){$("#"+v.data("target")).html(s);v.removeClass("loading");window.MathJax&&MathJax.Hub.Queue(["Typeset",MathJax.Hub,v.data("target")])}});
305
- return false})});
302
+ over_n_years_ago:"il y a plus de #{n} ans"}});i.fn.timeAgo=function(){this.each(function(){var n=i(this),s=n.data("epoch");s&&n.attr("title",n.text()).html(v(s))})}})(jQuery);(function(i){i.extend(i.fn,{underlineText:function(v){this.each(function(){var n=i(this),s,z;if(n.children().size()===0){s=n.text();z=s.toLowerCase().indexOf(v.toLowerCase());z>=0&&n.html(s.substr(0,z)+'<span style="text-decoration: underline">'+s.substr(z,v.length)+"</span>"+s.substr(z+v.length))}else n.children().underlineText(v)})},underlineAccessKey:function(){this.each(function(){var v=i(this).attr("accesskey");v&&i(this).underlineText(v)})}})})(jQuery);(function(i){i.widget("ui.combobox",{_create:function(){var v=this.element;v.autocomplete({delay:0,minLength:0,source:this.options.source}).click(function(){v.autocomplete("widget").is(":visible")?v.autocomplete("close"):v.autocomplete("search",this.value)});i('<button class="ui-combo-button"/>').attr("tabIndex",-1).insertAfter(v).click(function(n){n.preventDefault();if(v.autocomplete("widget").is(":visible"))v.autocomplete("close");else{v.autocomplete("search","");v.focus()}})}})})(jQuery);$(function(){function i(){$("#upload-path",this).each(function(){var v=this,n=v.value,s=v.value;if(s.length===0||s.match(/\/$/))$("#upload-file").change(function(){if(v.value==n){v.value=s+this.value;n=v.value}})});$("label, #menu, .tabhead, .pagination, .button-bar",this).disableSelection();$(".date",this).timeAgo();$(".tabs",this).each(function(){$("> li",this).tabWidget()});$("*[accesskey]",this).underlineAccessKey()}$("html").removeClass("no-js").addClass("js");$("#content").pagination(".pagination a");
303
+ $("#content").bind("pageLoaded",i);i.apply($(document));$("button[data-target]").live("click",function(){var v=$(this),n=$(this.form);v.addClass("loading");$.ajax({type:n.attr("method")||"get",url:n.attr("action")||window.location.href,data:n.serialize()+"&"+v.attr("name")+"="+v.attr("value")+"&no_layout=1",success:function(s){$("#"+v.data("target")).html(s);v.removeClass("loading");window.MathJax&&MathJax.Hub.Queue(["Typeset",MathJax.Hub,v.data("target")])}});return false})});
@@ -19,7 +19,6 @@ $(function() {
19
19
  }
20
20
  });
21
21
  $('label, #menu, .tabhead, .pagination, .button-bar', this).disableSelection();
22
- $('#history-table', this).historyTable();
23
22
  $('.date', this).timeAgo();
24
23
  $('.tabs', this).each(function() {
25
24
  $('> li', this).tabWidget();
@@ -220,7 +220,7 @@ pre {
220
220
  display: block;
221
221
  }
222
222
 
223
- #history-table .compare {
223
+ #history .compare {
224
224
  padding: 0;
225
225
  width: 1em;
226
226
  button {
@@ -234,7 +234,7 @@ pre {
234
234
  }
235
235
  }
236
236
 
237
- table.full, #history-table, #subpages-table {
237
+ table.full, #history, #subpages {
238
238
  width: 100%;
239
239
  td, th {
240
240
  white-space: nowrap;
@@ -258,7 +258,7 @@ table.full, #history-table, #subpages-table {
258
258
  }
259
259
  }
260
260
 
261
- #subpages-table {
261
+ #subpages {
262
262
  .actions {
263
263
  width: 80px;
264
264
  padding: 0px;
@@ -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{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}
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 .compare{padding:0;width:1em}#history .compare button{margin:1px;display:inline;font-size:small}#history .compare input{display:inline;margin:0 3px}table.full,#history,#subpages{width:100%}table.full td,table.full th,#history td,#history th,#subpages td,#subpages th{white-space:nowrap}#subpages .actions{width:80px;padding:0px}#subpages .action-edit{text-indent:-999px;background:url(images/actions/edit.png) no-repeat top left;float:left;width:16px;height:16px;overflow:hidden}#subpages .action-history{text-indent:-999px;background:url(images/actions/history.png) no-repeat top left;float:left;width:16px;height:16px;overflow:hidden}#subpages .action-delete{text-indent:-999px;background:url(images/actions/delete.png) no-repeat top left;float:left;width:16px;height:16px;overflow:hidden}#subpages .action-move{text-indent:-999px;background:url(images/actions/move.png) no-repeat top left;float:left;width:16px;height:16px;overflow:hidden}#subpages .page:before{content:url(images/page.png) "\00a0"}#subpages .folder:before{content:url(images/folder.png) "\00a0"}#subpages .file-type-7z:before{content:url(images/filetypes/7z.png) "\00a0"}#subpages .file-type-bz2:before{content:url(images/filetypes/bz2.png) "\00a0"}#subpages .file-type-doc:before{content:url(images/filetypes/doc.png) "\00a0"}#subpages .file-type-flac:before{content:url(images/filetypes/flac.png) "\00a0"}#subpages .file-type-gz:before{content:url(images/filetypes/gz.png) "\00a0"}#subpages .file-type-html:before{content:url(images/filetypes/html.png) "\00a0"}#subpages .file-type-java:before{content:url(images/filetypes/java.png) "\00a0"}#subpages .file-type-jpg:before{content:url(images/filetypes/jpg.png) "\00a0"}#subpages .file-type-midi:before{content:url(images/filetypes/midi.png) "\00a0"}#subpages .file-type-mp3:before{content:url(images/filetypes/mp3.png) "\00a0"}#subpages .file-type-ogg:before{content:url(images/filetypes/ogg.png) "\00a0"}#subpages .file-type-pdf:before{content:url(images/filetypes/pdf.png) "\00a0"}#subpages .file-type-php:before{content:url(images/filetypes/php.png) "\00a0"}#subpages .file-type-png:before{content:url(images/filetypes/png.png) "\00a0"}#subpages .file-type-ppt:before{content:url(images/filetypes/ppt.png) "\00a0"}#subpages .file-type-psd:before{content:url(images/filetypes/psd.png) "\00a0"}#subpages .file-type-rar:before{content:url(images/filetypes/rar.png) "\00a0"}#subpages .file-type-rb:before{content:url(images/filetypes/rb.png) "\00a0"}#subpages .file-type-sh:before{content:url(images/filetypes/sh.png) "\00a0"}#subpages .file-type-tar:before{content:url(images/filetypes/tar.png) "\00a0"}#subpages .file-type-txt:before{content:url(images/filetypes/txt.png) "\00a0"}#subpages .file-type-wma:before{content:url(images/filetypes/wma.png) "\00a0"}#subpages .file-type-xls:before{content:url(images/filetypes/xls.png) "\00a0"}#subpages .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
  }
@@ -4,20 +4,12 @@ class Bacon::Context
4
4
  include Olelo::Templates
5
5
  end
6
6
 
7
- class TestTemplateLoader
8
- def context
9
- nil
10
- end
11
-
12
- def load(path)
13
- Olelo::VirtualFS::Embedded.new(__FILE__).read(path)
14
- end
15
- end
16
-
17
7
  describe 'Olelo::Templates' do
18
8
  before do
19
9
  Olelo::Templates.enable_caching
20
- Olelo::Templates.loader = TestTemplateLoader.new
10
+ Olelo::Templates.loader = proc do |name|
11
+ Olelo::VirtualFS::Embedded.new(__FILE__).read(name)
12
+ end
21
13
  end
22
14
 
23
15
  after do
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.8
4
+ version: 0.9.9
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-11-10 00:00:00.000000000 Z
12
+ date: 2012-11-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multi_json
16
- requirement: &13779700 !ruby/object:Gem::Requirement
16
+ requirement: &7192200 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.3.7
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *13779700
24
+ version_requirements: *7192200
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: slim
27
- requirement: &13779020 !ruby/object:Gem::Requirement
27
+ requirement: &7190840 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.3.3
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *13779020
35
+ version_requirements: *7190840
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: creole
38
- requirement: &13778360 !ruby/object:Gem::Requirement
38
+ requirement: &7189440 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 0.5.0
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *13778360
46
+ version_requirements: *7189440
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: nokogiri
49
- requirement: &13777660 !ruby/object:Gem::Requirement
49
+ requirement: &7188340 !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: *13777660
57
+ version_requirements: *7188340
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: mimemagic
60
- requirement: &13777160 !ruby/object:Gem::Requirement
60
+ requirement: &7187440 !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: *13777160
68
+ version_requirements: *7187440
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rack
71
- requirement: &13776640 !ruby/object:Gem::Requirement
71
+ requirement: &7186620 !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: *13776640
79
+ version_requirements: *7186620
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: redcarpet
82
- requirement: &13776120 !ruby/object:Gem::Requirement
82
+ requirement: &7185720 !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: *13776120
90
+ version_requirements: *7185720
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rugged
93
- requirement: &13775620 !ruby/object:Gem::Requirement
93
+ requirement: &7184420 !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: *13775620
101
+ version_requirements: *7184420
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: evaluator
104
- requirement: &13210260 !ruby/object:Gem::Requirement
104
+ requirement: &7609460 !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: *13210260
112
+ version_requirements: *7609460
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: rake
115
- requirement: &13209540 !ruby/object:Gem::Requirement
115
+ requirement: &7608880 !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: *13209540
123
+ version_requirements: *7608880
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: sass
126
- requirement: &13208740 !ruby/object:Gem::Requirement
126
+ requirement: &7608380 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ~>
@@ -131,10 +131,10 @@ dependencies:
131
131
  version: 3.2.3
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *13208740
134
+ version_requirements: *7608380
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: bacon
137
- requirement: &13207120 !ruby/object:Gem::Requirement
137
+ requirement: &7607840 !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: *13207120
145
+ version_requirements: *7607840
146
146
  - !ruby/object:Gem::Dependency
147
147
  name: rack-test
148
- requirement: &13205280 !ruby/object:Gem::Requirement
148
+ requirement: &7607300 !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: *13205280
156
+ version_requirements: *7607300
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:
@@ -201,6 +201,16 @@ files:
201
201
  - lib/olelo/user.rb
202
202
  - lib/olelo/util.rb
203
203
  - lib/olelo/version.rb
204
+ - lib/olelo/views/delete.slim
205
+ - lib/olelo/views/deleted.slim
206
+ - lib/olelo/views/edit.slim
207
+ - lib/olelo/views/error.slim
208
+ - lib/olelo/views/layout.slim
209
+ - lib/olelo/views/login.slim
210
+ - lib/olelo/views/move.slim
211
+ - lib/olelo/views/not_found.slim
212
+ - lib/olelo/views/profile.slim
213
+ - lib/olelo/views/show.slim
204
214
  - lib/olelo/virtualfs.rb
205
215
  - lib/rack/relative_redirect.rb
206
216
  - lib/rack/static_cache.rb
@@ -214,7 +224,6 @@ files:
214
224
  - plugins/aspects/highlight.rb
215
225
  - plugins/aspects/image.rb
216
226
  - plugins/aspects/imageinfo.rb
217
- - plugins/aspects/locale.yml
218
227
  - plugins/aspects/main.rb
219
228
  - plugins/aspects/pageinfo.rb
220
229
  - plugins/aspects/source.rb
@@ -229,7 +238,6 @@ files:
229
238
  - plugins/blog/main.rb
230
239
  - plugins/editor/ace/init.js
231
240
  - plugins/editor/ace/main.rb
232
- - plugins/editor/locale.yml
233
241
  - plugins/editor/markup/main.rb
234
242
  - plugins/editor/markup/script.js
235
243
  - plugins/editor/markup/script/00-jquery.textselection.js
@@ -259,8 +267,15 @@ files:
259
267
  - plugins/filters/toc.rb
260
268
  - plugins/filters/xhtml2latex.xsl
261
269
  - plugins/filters/xslt.rb
270
+ - plugins/history/changes.slim
271
+ - plugins/history/compare.slim
272
+ - plugins/history/history.slim
273
+ - plugins/history/locale.yml
274
+ - plugins/history/main.rb
275
+ - plugins/history/script.js
276
+ - plugins/history/script/00-historytable.js
277
+ - plugins/history/script/init.js
262
278
  - plugins/login/basic_auth.rb
263
- - plugins/login/locale.yml
264
279
  - plugins/login/persistent.rb
265
280
  - plugins/misc/fancybox/images/blank.gif
266
281
  - plugins/misc/fancybox/images/fancy_close.png
@@ -296,10 +311,8 @@ files:
296
311
  - plugins/misc/webdav.rb
297
312
  - plugins/repositories/git_grep.rb
298
313
  - plugins/repositories/gitrb_repository.rb
299
- - plugins/repositories/locale.yml
300
314
  - plugins/repositories/rugged_repository.rb
301
315
  - plugins/security/acl.rb
302
- - plugins/security/locale.yml
303
316
  - plugins/security/private_wiki.rb
304
317
  - plugins/security/readonly_wiki.rb
305
318
  - plugins/tags/code.rb
@@ -337,7 +350,7 @@ files:
337
350
  - plugins/utils/store.rb
338
351
  - plugins/utils/worker.rb
339
352
  - plugins/utils/xml.rb
340
- - static/images/favicon.png
353
+ - static/favicon.png
341
354
  - static/script.js
342
355
  - static/script/00-json2.js
343
356
  - static/script/01-jquery.js
@@ -351,7 +364,6 @@ files:
351
364
  - static/script/09-olelo.storage.js
352
365
  - static/script/10-olelo.i18n.js
353
366
  - static/script/11-olelo.unsaved.js
354
- - static/script/12-olelo.historytable.js
355
367
  - static/script/13-olelo.pagination.js
356
368
  - static/script/14-olelo.tabwidget.js
357
369
  - static/script/15-olelo.timeago.js
@@ -436,19 +448,6 @@ files:
436
448
  - test/string_extensions_test.rb
437
449
  - test/templates_test.rb
438
450
  - test/util_test.rb
439
- - views/changes.slim
440
- - views/compare.slim
441
- - views/delete.slim
442
- - views/deleted.slim
443
- - views/edit.slim
444
- - views/error.slim
445
- - views/history.slim
446
- - views/layout.slim
447
- - views/login.slim
448
- - views/move.slim
449
- - views/not_found.slim
450
- - views/profile.slim
451
- - views/show.slim
452
451
  homepage: http://gitwiki.org/
453
452
  licenses: []
454
453
  post_install_message:
@@ -474,4 +473,3 @@ signing_key:
474
473
  specification_version: 3
475
474
  summary: Olelo is a git-based wiki.
476
475
  test_files: []
477
- has_rdoc: