olelo 0.9.4 → 0.9.5
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +0 -1
- data/.travis.yml +8 -0
- data/README.creole +31 -11
- data/Rakefile +46 -21
- data/config/aspects.rb +19 -15
- data/lib/olelo/application.rb +2 -3
- data/lib/olelo/extensions.rb +3 -0
- data/lib/olelo/helper.rb +7 -5
- data/lib/olelo/locale.rb +1 -1
- data/lib/olelo/locale.yml +298 -204
- data/lib/olelo/page.rb +9 -1
- data/lib/olelo/plugin.rb +1 -1
- data/lib/olelo/repository.rb +1 -1
- data/lib/olelo/util.rb +3 -0
- data/lib/olelo/version.rb +1 -1
- data/olelo.gemspec +1 -1
- data/plugins/aspects/changelog.rb +7 -4
- data/plugins/aspects/locale.yml +69 -47
- data/plugins/blog/locale.yml +13 -9
- data/plugins/editor/locale.yml +16 -11
- data/plugins/filters/creole.rb +3 -6
- data/plugins/filters/fix_image_links.rb +20 -0
- data/plugins/filters/locale.yml +18 -13
- data/plugins/filters/s5/main.rb +2 -0
- data/plugins/login/locale.yml +6 -4
- data/plugins/repositories/gitrb_repository.rb +1 -1
- data/plugins/repositories/locale.yml +14 -10
- data/plugins/repositories/rugged_repository.rb +2 -3
- data/plugins/security/locale.yml +19 -13
- data/plugins/tags/math.rb +2 -1
- data/plugins/treeview/script.js +2 -2
- data/plugins/treeview/script/init.js +4 -0
- data/plugins/utils/xml.rb +14 -0
- data/static/script.js +296 -256
- data/static/script/02-history.js +1943 -0
- data/static/script/03-history.adapter.jquery.js +77 -0
- data/static/script/{03-jquery.ui.core.js → 04-jquery.ui.core.js} +0 -0
- data/static/script/{04-jquery.ui.widget.js → 05-jquery.ui.widget.js} +0 -0
- data/static/script/{05-jquery.ui.position.js → 06-jquery.ui.position.js} +0 -0
- data/static/script/{06-jquery.ui.menu.js → 07-jquery.ui.menu.js} +0 -0
- data/static/script/{07-jquery.ui.autocomplete.js → 08-jquery.ui.autocomplete.js} +0 -0
- data/static/script/{02-olelo.storage.js → 09-olelo.storage.js} +0 -0
- data/static/script/{08-olelo.i18n.js → 10-olelo.i18n.js} +0 -0
- data/static/script/{09-olelo.unsaved.js → 11-olelo.unsaved.js} +6 -2
- data/static/script/{10-olelo.historytable.js → 12-olelo.historytable.js} +0 -0
- data/static/script/13-olelo.pagination.js +30 -0
- data/static/script/{13-olelo.tabwidget.js → 14-olelo.tabwidget.js} +0 -0
- data/static/script/{14-olelo.timeago.js → 15-olelo.timeago.js} +14 -1
- data/static/script/{15-olelo.underliner.js → 16-olelo.underliner.js} +0 -0
- data/static/script/{16-olelo.ui.combobox.js → 17-olelo.ui.combobox.js} +0 -0
- data/static/script/init.js +10 -10
- data/static/themes/atlantis/screen.scss +11 -10
- data/static/themes/atlantis/style.css +1 -1
- data/test/config_test.rb +9 -0
- data/test/factory_test.rb +1 -1
- data/test/hash_extensions_test.rb +1 -1
- data/test/helper.rb +0 -1
- data/test/hooks_test.rb +1 -2
- data/test/object_extensions_test.rb +1 -2
- data/test/run.rb +12 -0
- data/test/string_extensions_test.rb +1 -1
- data/test/templates_test.rb +1 -3
- data/test/util_test.rb +1 -6
- data/views/compare.slim +4 -5
- data/views/edit.slim +2 -2
- data/views/history.slim +1 -1
- data/views/layout.slim +1 -2
- data/views/not_found.slim +2 -2
- data/views/show.slim +3 -4
- metadata +47 -44
- data/plugins/filters/fix_img_tag.rb +0 -16
- data/static/script/11-olelo.pagination.js +0 -18
data/lib/olelo/page.rb
CHANGED
@@ -23,15 +23,19 @@ module Olelo
|
|
23
23
|
# Pattern for valid paths
|
24
24
|
# @api public
|
25
25
|
PATH_PATTERN = '[^\s](?:.*[^\s]+)?'.freeze
|
26
|
+
|
26
27
|
PATH_REGEXP = /^#{PATH_PATTERN}$/
|
28
|
+
private_constant :PATH_REGEXP
|
27
29
|
|
28
30
|
# Mime type for empty page
|
29
31
|
# @api public
|
30
32
|
EMPTY_MIME = MimeMagic.new('inode/x-empty')
|
33
|
+
private_constant :EMPTY_MIME
|
31
34
|
|
32
35
|
# Mime type for directory
|
33
36
|
# @api public
|
34
37
|
DIRECTORY_MIME = MimeMagic.new('inode/directory')
|
38
|
+
private_constant :DIRECTORY_MIME
|
35
39
|
|
36
40
|
attr_reader :path, :tree_version
|
37
41
|
|
@@ -80,6 +84,10 @@ module Olelo
|
|
80
84
|
path.empty?
|
81
85
|
end
|
82
86
|
|
87
|
+
def editable?
|
88
|
+
mime.text? || mime == EMPTY_MIME || mime == DIRECTORY_MIME
|
89
|
+
end
|
90
|
+
|
83
91
|
def next_version
|
84
92
|
init_versions
|
85
93
|
@next_version
|
@@ -95,7 +103,7 @@ module Olelo
|
|
95
103
|
@version
|
96
104
|
end
|
97
105
|
|
98
|
-
def history(skip
|
106
|
+
def history(skip, limit)
|
99
107
|
raise 'Page is new' if new?
|
100
108
|
repository.get_history(path, skip, limit)
|
101
109
|
end
|
data/lib/olelo/plugin.rb
CHANGED
@@ -66,7 +66,7 @@ module Olelo
|
|
66
66
|
Olelo.logger.warn "Plugin #{path} could not be loaded due to: #{ex.message} (Missing gem?)"
|
67
67
|
else
|
68
68
|
Olelo.logger.error "Plugin #{path} could not be loaded due to: #{ex.message}"
|
69
|
-
Olelo.logger.
|
69
|
+
Olelo.logger.debug ex
|
70
70
|
end
|
71
71
|
@loaded.delete(path)
|
72
72
|
false
|
data/lib/olelo/repository.rb
CHANGED
data/lib/olelo/util.rb
CHANGED
@@ -93,6 +93,7 @@ module Olelo
|
|
93
93
|
# Hash used by {#escape_javascript}
|
94
94
|
# @api private
|
95
95
|
JAVASCRIPT_ESCAPE = { '&' => '\u0026', '>' => '\u003E', '<' => '\u003C' }
|
96
|
+
private_constant :JAVASCRIPT_ESCAPE
|
96
97
|
|
97
98
|
# Escape javascript code for embedding in html
|
98
99
|
#
|
@@ -200,6 +201,8 @@ module Olelo
|
|
200
201
|
(0x10000..0x10FFFF)
|
201
202
|
]
|
202
203
|
|
204
|
+
private_constant :VALID_XML_CHARS
|
205
|
+
|
203
206
|
# Check if string contains only characters which are valid in XML
|
204
207
|
#
|
205
208
|
# @see http://www.w3.org/TR/REC-xml/#charsets XML charset
|
data/lib/olelo/version.rb
CHANGED
data/olelo.gemspec
CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
|
|
21
21
|
|
22
22
|
s.add_runtime_dependency('multi_json', ['~> 1.3.6'])
|
23
23
|
s.add_runtime_dependency('slim', ['~> 1.3.3'])
|
24
|
-
s.add_runtime_dependency('creole', ['~> 0.
|
24
|
+
s.add_runtime_dependency('creole', ['~> 0.5.0'])
|
25
25
|
s.add_runtime_dependency('nokogiri', ['~> 1.5.5'])
|
26
26
|
s.add_runtime_dependency('mimemagic', ['~> 0.2.0'])
|
27
27
|
s.add_runtime_dependency('rack', ['~> 1.4.1'])
|
@@ -9,19 +9,22 @@ Aspect.create(:changelog, cacheable: true, hidden: true) do
|
|
9
9
|
url = context.request.base_url
|
10
10
|
context.header['Content-Type'] = "application/#{format == 'rss' ? 'rss' : 'atom'}+xml; charset=utf-8"
|
11
11
|
|
12
|
+
per_page = 30
|
13
|
+
page_nr = [context.params[:page].to_i, 1].max
|
14
|
+
history = page.history((page_nr - 1) * per_page, per_page)
|
15
|
+
|
12
16
|
content = RSS::Maker.make(format == 'rss' ? '2.0' : 'atom') do |feed|
|
13
17
|
feed.channel.generator = 'Ōlelo'
|
14
18
|
feed.channel.title = Config['title']
|
15
|
-
feed.channel.link = url + '/' + page.path
|
19
|
+
feed.channel.id = feed.channel.link = url + '/' + page.path
|
16
20
|
feed.channel.description = Config['title'] + ' Changelog'
|
17
|
-
feed.channel.id = url + page.path
|
18
21
|
feed.channel.updated = Time.now
|
19
22
|
feed.channel.author = Config['title']
|
20
23
|
feed.items.do_sort = true
|
21
|
-
|
24
|
+
history.each do |version|
|
22
25
|
i = feed.items.new_item
|
23
26
|
i.title = version.comment
|
24
|
-
i.link = url
|
27
|
+
i.link = "#{url}/changes/#{version}"
|
25
28
|
i.date = version.date
|
26
29
|
i.dc_creator = version.author.name
|
27
30
|
end
|
data/plugins/aspects/locale.yml
CHANGED
@@ -1,65 +1,87 @@
|
|
1
|
-
|
2
|
-
attribute_aspect: 'Default Aspect'
|
3
|
-
download: 'Download'
|
1
|
+
cs_CZ:
|
4
2
|
aspect_documentbrowser: 'Document Browser'
|
5
|
-
aspect_download: '
|
6
|
-
|
7
|
-
aspect_highlight: '
|
8
|
-
|
9
|
-
|
10
|
-
aspect_source: 'Page Source'
|
11
|
-
aspect_subpages: 'Subpages'
|
12
|
-
aspect_text: 'Text Download'
|
13
|
-
aspect_gallery: 'Image Gallery'
|
14
|
-
aspect_s5: 'S5 Presentation'
|
3
|
+
aspect_download: 'Stažení (neupraveno)'
|
4
|
+
aspect_gallery: 'Galerie'
|
5
|
+
aspect_highlight: 'Zvýrazněný zdroj'
|
6
|
+
aspect_image: 'Stažení obrázku'
|
7
|
+
aspect_imageinfo: 'Informace o obrázku'
|
15
8
|
aspect_latex: 'LaTeX'
|
16
|
-
aspect_not_available: '
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
9
|
+
aspect_not_available: 'Vzhled %{aspect} není k dispozici pro stránku %{page} s typem %{type}.'
|
10
|
+
aspect_pageinfo: 'Informace o stránce'
|
11
|
+
aspect_source: 'Zdroj stránky'
|
12
|
+
aspect_subpages: 'Podstránky'
|
13
|
+
aspect_text: 'Stažení textu'
|
14
|
+
attribute_aspect: 'Přednastavený vzhled'
|
15
|
+
download: 'Stáhnout'
|
16
|
+
entry: 'Položka'
|
17
|
+
exif: 'Informace EXIF'
|
18
|
+
geometry: 'Geometrie'
|
19
|
+
information: 'Informace'
|
20
|
+
type: 'Typ'
|
21
|
+
value: 'Hodnota'
|
23
22
|
de:
|
24
|
-
attribute_aspect: 'Standard-Ansicht'
|
25
|
-
download: 'Herunterladen'
|
26
23
|
aspect_documentbrowser: 'Dokumentenbrowser'
|
27
24
|
aspect_download: 'Herunterladen'
|
28
|
-
|
25
|
+
aspect_gallery: 'Bildergalerie'
|
29
26
|
aspect_highlight: 'Quellcode mit Syntaxhighlighting'
|
30
|
-
aspect_imageinfo: 'Bild-Information'
|
31
27
|
aspect_image: 'Bild'
|
28
|
+
aspect_imageinfo: 'Bild-Information'
|
29
|
+
aspect_latex: 'LaTeX'
|
30
|
+
aspect_not_available: 'Aspekt %{aspect} für die Seite %{page} mit dem Typ %{type} ist nicht verfügbar.'
|
31
|
+
aspect_pageinfo: 'Seiten-Information'
|
32
|
+
aspect_s5: 'S5 Präsentation'
|
32
33
|
aspect_source: 'Quellcode'
|
33
34
|
aspect_subpages: 'Unterseiten'
|
34
35
|
aspect_text: 'Quellcode herunterladen'
|
35
|
-
|
36
|
-
|
37
|
-
aspect_latex: 'LaTeX'
|
38
|
-
aspect_not_available: 'Aspekt #{aspect} für die Seite #{page} mit dem Typ #{type} ist nicht verfügbar.'
|
36
|
+
attribute_aspect: 'Standard-Ansicht'
|
37
|
+
download: 'Herunterladen'
|
39
38
|
entry: 'Eintrag'
|
40
39
|
exif: 'EXIF-Information'
|
41
40
|
geometry: 'Geometrie'
|
42
41
|
information: 'Information'
|
43
42
|
type: 'Typ'
|
44
43
|
value: 'Wert'
|
45
|
-
|
46
|
-
attribute_aspect: 'Přednastavený vzhled'
|
47
|
-
download: 'Stáhnout'
|
44
|
+
en:
|
48
45
|
aspect_documentbrowser: 'Document Browser'
|
49
|
-
aspect_download: '
|
50
|
-
|
51
|
-
aspect_highlight: '
|
52
|
-
|
53
|
-
|
54
|
-
aspect_source: 'Zdroj stránky'
|
55
|
-
aspect_subpages: 'Podstránky'
|
56
|
-
aspect_text: 'Stažení textu'
|
57
|
-
aspect_gallery: 'Galerie'
|
46
|
+
aspect_download: 'Raw Download'
|
47
|
+
aspect_gallery: 'Image Gallery'
|
48
|
+
aspect_highlight: 'Highlighted Source'
|
49
|
+
aspect_image: 'Raw Image'
|
50
|
+
aspect_imageinfo: 'Image Information'
|
58
51
|
aspect_latex: 'LaTeX'
|
59
|
-
aspect_not_available: '
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
52
|
+
aspect_not_available: 'Aspect %{aspect} is not available for page %{page} with type %{type}.'
|
53
|
+
aspect_pageinfo: 'Page Information'
|
54
|
+
aspect_s5: 'S5 Presentation'
|
55
|
+
aspect_source: 'Page Source'
|
56
|
+
aspect_subpages: 'Subpages'
|
57
|
+
aspect_text: 'Text Download'
|
58
|
+
attribute_aspect: 'Default Aspect'
|
59
|
+
download: 'Download'
|
60
|
+
entry: 'Entry'
|
61
|
+
exif: 'EXIF Information'
|
62
|
+
geometry: 'Geometry'
|
63
|
+
information: 'Information'
|
64
|
+
type: 'Type'
|
65
|
+
value: 'Value'
|
66
|
+
fr:
|
67
|
+
aspect_documentbrowser: "Explorateur de fichier"
|
68
|
+
aspect_download: "Téléchargement brut"
|
69
|
+
aspect_gallery: "Galerie d'images"
|
70
|
+
aspect_highlight: "Source mise en valeur"
|
71
|
+
aspect_image: "Image brute"
|
72
|
+
aspect_imageinfo: "Information sur l'image"
|
73
|
+
aspect_latex: "LaTeX"
|
74
|
+
aspect_not_available: "L'aspect %{aspect} n'est pas disponible pour la page %{page} avec le type %{type}."
|
75
|
+
aspect_pageinfo: "Page d'information"
|
76
|
+
aspect_s5: "Presentation S5 "
|
77
|
+
aspect_source: "Source de la page"
|
78
|
+
aspect_subpages: "Sous-pages"
|
79
|
+
aspect_text: "Téléchargement en texte"
|
80
|
+
attribute_aspect: "Aspect par défaut"
|
81
|
+
download: "Télécharger"
|
82
|
+
entry: "Entrée"
|
83
|
+
exif: "Information EXIF"
|
84
|
+
geometry: "Geometrie"
|
85
|
+
information: "Information"
|
86
|
+
type: "Type"
|
87
|
+
value: "Valeur"
|
data/plugins/blog/locale.yml
CHANGED
@@ -1,12 +1,16 @@
|
|
1
|
-
en:
|
2
|
-
full_article: 'Full Article'
|
3
|
-
written_by: 'written by #{author}'
|
4
|
-
no_articles: 'No articles found'
|
5
|
-
de:
|
6
|
-
full_article: 'Ganzer Artikel'
|
7
|
-
written_by: 'verfasst von #{author}'
|
8
|
-
no_articles: 'Keine Artikel gefunden'
|
9
1
|
cs_CZ:
|
10
2
|
full_article: 'Plný článek'
|
11
|
-
written_by: 'Napsal: #{author}'
|
12
3
|
no_articles: 'Žádné články nenalezeny'
|
4
|
+
written_by: 'Napsal: %{author}'
|
5
|
+
de:
|
6
|
+
full_article: 'Ganzer Artikel'
|
7
|
+
no_articles: 'Keine Artikel gefunden'
|
8
|
+
written_by: 'verfasst von %{author}'
|
9
|
+
en:
|
10
|
+
full_article: 'Full Article'
|
11
|
+
no_articles: 'No articles found'
|
12
|
+
written_by: 'written by %{author}'
|
13
|
+
fr:
|
14
|
+
full_article: "Article complet"
|
15
|
+
no_articles: "Aucun article trouvé"
|
16
|
+
written_by: "écrit par %{author}"
|
data/plugins/editor/locale.yml
CHANGED
@@ -1,15 +1,20 @@
|
|
1
|
-
en:
|
2
|
-
enter_captcha: 'Please enter the captcha.'
|
3
|
-
captcha_invalid: Invalid captcha
|
4
|
-
captcha_valid: Valid captcha
|
5
|
-
preview: Preview
|
6
|
-
de:
|
7
|
-
enter_captcha: 'Bitte geben Sie ein Captcha ein.'
|
8
|
-
captcha_invalid: 'Ungültiges Captcha'
|
9
|
-
captcha_valid: 'Gültiges Captcha'
|
10
|
-
preview: Vorschau
|
11
1
|
cs_CZ:
|
12
|
-
enter_captcha: 'Vložte laskavě captcha kód.'
|
13
2
|
captcha_invalid: 'Neplatný captcha kód'
|
14
3
|
captcha_valid: 'Platný captcha kód'
|
4
|
+
enter_captcha: 'Vložte laskavě captcha kód.'
|
15
5
|
preview: 'Náhled'
|
6
|
+
de:
|
7
|
+
captcha_invalid: 'Ungültiges Captcha'
|
8
|
+
captcha_valid: 'Gültiges Captcha'
|
9
|
+
enter_captcha: 'Bitte geben Sie ein Captcha ein.'
|
10
|
+
preview: Vorschau
|
11
|
+
en:
|
12
|
+
captcha_invalid: Invalid captcha
|
13
|
+
captcha_valid: Valid captcha
|
14
|
+
enter_captcha: 'Please enter the captcha.'
|
15
|
+
preview: Preview
|
16
|
+
fr:
|
17
|
+
captcha_invalid: "Captcha invalide"
|
18
|
+
captcha_valid: "Captcha valide"
|
19
|
+
enter_captcha: "Veuillez entrer le captcha."
|
20
|
+
preview: "Prévisualisez"
|
data/plugins/filters/creole.rb
CHANGED
@@ -18,16 +18,13 @@ class OleloCreole < ::Creole::Parser
|
|
18
18
|
end
|
19
19
|
image_path = escape_html(image_path)
|
20
20
|
path = escape_html(path)
|
21
|
-
nolink = args.delete('nolink')
|
22
21
|
box = args.delete('box')
|
23
22
|
alt = escape_html(args[0] ? args[0] : path)
|
24
|
-
if
|
25
|
-
%{<img src="#{image_path}" alt="#{alt}"/>}
|
26
|
-
elsif box
|
23
|
+
if box
|
27
24
|
caption = args[0] ? %{<span class="caption">#{escape_html args[0]}</span>} : ''
|
28
|
-
%{<span class="img"><
|
25
|
+
%{<span class="img"><img src="#{image_path}" alt="#{alt}"/>#{caption}</span>}
|
29
26
|
else
|
30
|
-
%{<
|
27
|
+
%{<img src="#{image_path}" alt="#{alt}"/>}
|
31
28
|
end
|
32
29
|
end
|
33
30
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
description 'Add query parameter "aspect" to images'
|
2
|
+
dependencies 'utils/xml'
|
3
|
+
|
4
|
+
Filter.create :fix_image_links do |context, content|
|
5
|
+
doc = XML::Fragment(content)
|
6
|
+
linked_images = doc.css('a img')
|
7
|
+
doc.css('img').each do |image|
|
8
|
+
path = image['src']
|
9
|
+
unless path =~ %r{^w+://} || path.starts_with?(build_path('_')) ||
|
10
|
+
(path.starts_with?('/') && !path.starts_with?(build_path('')))
|
11
|
+
unless path.include?('aspect=')
|
12
|
+
image['src'] = path + (path.include?('?') ? '&' : '?') + 'aspect=image'
|
13
|
+
end
|
14
|
+
unless linked_images.include?(image)
|
15
|
+
image.swap("<a href=\"#{escape_html path.sub(/\?.*/, '')}\">#{image.to_xhtml}</a>")
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
doc.to_xhtml
|
20
|
+
end
|
data/plugins/filters/locale.yml
CHANGED
@@ -1,15 +1,20 @@
|
|
1
|
-
en:
|
2
|
-
attribute_toc: 'Generate Table of Contents'
|
3
|
-
attribute_no_editsection: 'Disable Section Editing'
|
4
|
-
edit_section: 'Edit section "#{section}"'
|
5
|
-
section_edited: 'Section "#{section}" edited'
|
6
|
-
de:
|
7
|
-
attribute_toc: 'Inhaltsverzeichnis erzeugen'
|
8
|
-
attribute_no_editsection: 'Bearbeiten von Bereichen deaktivieren'
|
9
|
-
edit_section: 'Bearbeite Bereich "#{section}"'
|
10
|
-
section_edited: 'Bereich "#{section}" bearbeitet'
|
11
1
|
cs_CZ:
|
12
|
-
attribute_toc: 'Vytvořit obsah'
|
13
2
|
attribute_no_editsection: 'Zablokovat editaci sekcí'
|
14
|
-
|
15
|
-
|
3
|
+
attribute_toc: 'Vytvořit obsah'
|
4
|
+
edit_section: 'Edituj sekci "%{section}"'
|
5
|
+
section_edited: 'Sekce "%{section}" editována'
|
6
|
+
de:
|
7
|
+
attribute_no_editsection: 'Bearbeiten von Bereichen deaktivieren'
|
8
|
+
attribute_toc: 'Inhaltsverzeichnis erzeugen'
|
9
|
+
edit_section: 'Bearbeite Bereich "%{section}"'
|
10
|
+
section_edited: 'Bereich "%{section}" bearbeitet'
|
11
|
+
en:
|
12
|
+
attribute_no_editsection: 'Disable Section Editing'
|
13
|
+
attribute_toc: 'Generate Table of Contents'
|
14
|
+
edit_section: 'Edit section "%{section}"'
|
15
|
+
section_edited: 'Section "%{section}" edited'
|
16
|
+
fr:
|
17
|
+
attribute_no_editsection: "Désactiver l'édition"
|
18
|
+
attribute_toc: "Générer Table des Matières"
|
19
|
+
edit_section: "Éditer la section \"%{section}\""
|
20
|
+
section_edited: "Section \"%{section}\" éditée"
|
data/plugins/filters/s5/main.rb
CHANGED
@@ -2,6 +2,8 @@ description 'XSLT filter which transforms a html page to a S5 presentation'
|
|
2
2
|
dependencies 'filters/xslt', 'utils/assets'
|
3
3
|
export_assets 'ui/**/*', 'ui/default/*'
|
4
4
|
|
5
|
+
raise 'Diascope not found' unless File.exists?(File.join(File.dirname(__FILE__), 'ui'))
|
6
|
+
|
5
7
|
Page.attributes do
|
6
8
|
group :s5 do
|
7
9
|
string :presdate
|
data/plugins/login/locale.yml
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
-
en:
|
2
|
-
persistent_login: 'Persistent login'
|
3
|
-
de:
|
4
|
-
persistent_login: 'Dauerhaft anmelden'
|
5
1
|
cs_CZ:
|
6
2
|
persistent_login: 'Trvalé přihlášení'
|
3
|
+
de:
|
4
|
+
persistent_login: 'Dauerhaft anmelden'
|
5
|
+
en:
|
6
|
+
persistent_login: 'Persistent login'
|
7
|
+
fr:
|
8
|
+
persistent_login: 'Connexion persistente'
|
@@ -37,7 +37,7 @@ class GitrbRepository < Repository
|
|
37
37
|
# @override
|
38
38
|
def get_history(path, skip, limit)
|
39
39
|
@git.log(max_count: limit, skip: skip,
|
40
|
-
|
40
|
+
path: [path, path + ATTRIBUTE_EXT, path + CONTENT_EXT]).map do |c|
|
41
41
|
commit_to_version(c)
|
42
42
|
end
|
43
43
|
end
|
@@ -1,12 +1,16 @@
|
|
1
|
-
en:
|
2
|
-
search_results: 'Search results for #{pattern}'
|
3
|
-
match: 'One match'
|
4
|
-
match_plural: '#{count} matches'
|
5
|
-
de:
|
6
|
-
search_results: 'Suchergebnisse für #{pattern}'
|
7
|
-
match: 'Ein Treffer'
|
8
|
-
match_plural: '#{count} Treffer'
|
9
1
|
cs_CZ:
|
10
|
-
search_results: 'Výsledky hledání pro #{pattern}'
|
11
2
|
match: 'Jeden výsledek'
|
12
|
-
match_plural: '
|
3
|
+
match_plural: '%{count} výsledků'
|
4
|
+
search_results: 'Výsledky hledání pro %{pattern}'
|
5
|
+
de:
|
6
|
+
match: 'Ein Treffer'
|
7
|
+
match_plural: '%{count} Treffer'
|
8
|
+
search_results: 'Suchergebnisse für %{pattern}'
|
9
|
+
en:
|
10
|
+
match: 'One match'
|
11
|
+
match_plural: '%{count} matches'
|
12
|
+
search_results: 'Search results for %{pattern}'
|
13
|
+
fr:
|
14
|
+
match: "Une correspondance"
|
15
|
+
match_plural: "%{count} correspondaces"
|
16
|
+
search_results: "Chercher les résultats pour %{pattern}"
|