webgen 0.3.6 → 0.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +1523 -97
- data/Rakefile +11 -24
- data/TODO +22 -9
- data/VERSION +1 -1
- data/bin/webgen +2 -2
- data/bin/webgen-gallery-editor +654 -0
- data/bin/webgen-gui +10 -0
- data/data/webgen/data/ISO-639-2_values_8bits.txt +492 -0
- data/data/webgen/gallery-creator/default.png +0 -0
- data/data/webgen/icon_mapping.yaml +27 -0
- data/data/webgen/resources/emoticons/bigeyes/angry.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/cool.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/cry.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/drunk.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/lol.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/oops.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/sad.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/sleep.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/smile.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/tongue.png +0 -0
- data/data/webgen/resources/emoticons/bigeyes/wink.png +0 -0
- data/data/webgen/resources/emoticons/crystal/angry.png +0 -0
- data/data/webgen/resources/emoticons/crystal/cool.png +0 -0
- data/data/webgen/resources/emoticons/crystal/cry.png +0 -0
- data/data/webgen/resources/emoticons/crystal/drunk.png +0 -0
- data/data/webgen/resources/emoticons/crystal/lol.png +0 -0
- data/data/webgen/resources/emoticons/crystal/oops.png +0 -0
- data/data/webgen/resources/emoticons/crystal/sad.png +0 -0
- data/data/webgen/resources/emoticons/crystal/sleep.png +0 -0
- data/data/webgen/resources/emoticons/crystal/smile.png +0 -0
- data/data/webgen/resources/emoticons/crystal/tongue.png +0 -0
- data/data/webgen/resources/emoticons/crystal/wink.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/angry.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/cool.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/cry.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/drunk.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/lol.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/oops.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/sad.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/sleep.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/smile.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/tongue.png +0 -0
- data/data/webgen/resources/emoticons/cyclops/wink.png +0 -0
- data/data/webgen/resources/emoticons/glass/angry.png +0 -0
- data/data/webgen/resources/emoticons/glass/cool.png +0 -0
- data/data/webgen/resources/emoticons/glass/cry.png +0 -0
- data/data/webgen/resources/emoticons/glass/drunk.png +0 -0
- data/data/webgen/resources/emoticons/glass/lol.png +0 -0
- data/data/webgen/resources/emoticons/glass/oops.png +0 -0
- data/data/webgen/resources/emoticons/glass/sad.png +0 -0
- data/data/webgen/resources/emoticons/glass/sleep.png +0 -0
- data/data/webgen/resources/emoticons/glass/smile.png +0 -0
- data/data/webgen/resources/emoticons/glass/tongue.png +0 -0
- data/data/webgen/resources/emoticons/glass/wink.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/angry.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/cool.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/cry.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/drunk.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/lol.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/oops.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/sad.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/sleep.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/smile.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/tongue.png +0 -0
- data/data/webgen/resources/emoticons/icqstyle/wink.png +0 -0
- data/data/webgen/resources/emoticons/matrix/angry.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/cool.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/cry.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/drunk.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/lol.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/oops.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/sad.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/sleep.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/smile.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/tongue.gif +0 -0
- data/data/webgen/resources/emoticons/matrix/wink.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/angry.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/cool.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/cry.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/drunk.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/lol.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/oops.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/sad.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/sleep.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/smile.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/tongue.gif +0 -0
- data/data/webgen/resources/emoticons/smellies/wink.gif +0 -0
- data/data/webgen/resources/icons/compressed.png +0 -0
- data/data/webgen/resources/icons/document.png +0 -0
- data/data/webgen/resources/icons/download.png +0 -0
- data/data/webgen/resources/icons/image.png +0 -0
- data/data/webgen/resources/icons/linux.png +0 -0
- data/data/webgen/resources/icons/mac.png +0 -0
- data/data/webgen/resources/icons/pdf.png +0 -0
- data/data/webgen/resources/icons/penguin.png +0 -0
- data/data/webgen/resources/icons/quicktime.png +0 -0
- data/data/webgen/resources/icons/real.png +0 -0
- data/data/webgen/resources/icons/rpm.png +0 -0
- data/data/webgen/resources/icons/sound.png +0 -0
- data/data/webgen/resources/icons/source.png +0 -0
- data/data/webgen/resources/icons/spreadsheet.png +0 -0
- data/data/webgen/resources/icons/text.png +0 -0
- data/data/webgen/resources/icons/vcard.png +0 -0
- data/data/webgen/resources/icons/video.png +0 -0
- data/data/webgen/resources/icons/win.png +0 -0
- data/data/webgen/{images → resources/images}/generated_by_webgen.png +0 -0
- data/data/webgen/{images → resources/images}/valid-css.gif +0 -0
- data/data/webgen/{images → resources/images}/valid-xhtml11.png +0 -0
- data/data/webgen/{images → resources/images}/webgen_logo.png +0 -0
- data/data/webgen/{example/src → website_styles/default}/default.css +0 -0
- data/data/webgen/{example/src → website_styles/default}/default.template +2 -2
- data/data/webgen/website_templates/default/README +6 -0
- data/data/webgen/{example → website_templates/default}/config.yaml +0 -0
- data/data/webgen/{example → website_templates/default}/src/index.page +0 -0
- data/data/webgen/website_templates/personal_hp/README +6 -0
- data/data/webgen/website_templates/personal_hp/src/about.page +12 -0
- data/data/webgen/website_templates/personal_hp/src/index.page +9 -0
- data/data/webgen/website_templates/personal_hp/src/links.page +22 -0
- data/data/webgen/website_templates/personal_hp/src/projects.page +20 -0
- data/data/webgen/website_templates/project/README +7 -0
- data/data/webgen/website_templates/project/src/about.page +12 -0
- data/data/webgen/website_templates/project/src/download.page +15 -0
- data/data/webgen/website_templates/project/src/features.page +8 -0
- data/data/webgen/website_templates/project/src/index.page +9 -0
- data/data/webgen/website_templates/project/src/screenshots.page +18 -0
- data/doc/config.yaml +3 -0
- data/doc/plugin/clidesc.rb +18 -7
- data/doc/plugin/emoticon.rb +29 -0
- data/doc/plugin/extension.rb +15 -16
- data/doc/plugin/listpluginparameters.rb +39 -0
- data/doc/plugin/resources.rb +4 -4
- data/doc/plugin/source.rb +21 -0
- data/doc/src/default.css +7 -4
- data/doc/src/default.template +4 -2
- data/doc/src/documentation/cli.page +1 -1
- data/doc/src/documentation/extending_webgen.page +102 -0
- data/doc/src/documentation/gettingstarted.page +3 -6
- data/doc/src/documentation/index.page +1 -1
- data/doc/src/documentation/plugins/{contenthandler → contenthandlers}/html.page +0 -0
- data/doc/src/documentation/plugins/{contenthandler → contenthandlers}/index.page +0 -0
- data/doc/src/documentation/plugins/{contenthandler → contenthandlers}/markdown.page +0 -0
- data/doc/src/documentation/plugins/{contenthandler → contenthandlers}/rdoc.page +0 -0
- data/doc/src/documentation/plugins/{contenthandler → contenthandlers}/textile.page +0 -0
- data/doc/src/documentation/plugins/{system → coreplugins}/configuration.page +0 -0
- data/doc/src/documentation/plugins/coreplugins/index.page +7 -0
- data/doc/src/documentation/plugins/{system → coreplugins}/logging.page +0 -0
- data/doc/src/documentation/plugins/{resourcemanager.page → coreplugins/resourcemanager.page} +5 -1
- data/doc/src/documentation/plugins/{filehandler → filehandlers}/backing.page +1 -1
- data/doc/src/documentation/plugins/{filehandler → filehandlers}/copy.page +1 -1
- data/doc/src/documentation/plugins/{filehandler/directory.page → filehandlers/directoryhandler.page} +11 -2
- data/doc/src/documentation/plugins/{filehandler/galleryhandler.page → filehandlers/gallery.page} +20 -13
- data/doc/src/documentation/plugins/{filehandler → filehandlers}/index.page +0 -0
- data/doc/src/documentation/plugins/{filehandler/pagehandler.page → filehandlers/page.page} +6 -4
- data/doc/src/documentation/plugins/{filehandler → filehandlers}/template.page +0 -0
- data/doc/src/documentation/plugins/{gallerylayouter → gallerylayouters}/index.page +7 -3
- data/doc/src/documentation/plugins/{htmlvalidator → htmlvalidators}/index.page +0 -0
- data/doc/src/documentation/plugins/{htmlvalidator → htmlvalidators}/xmllint.page +0 -0
- data/doc/src/documentation/plugins/index.page +4 -0
- data/doc/src/documentation/plugins/menustyles/{horizontal-dropdown.page → horizontaldropdown.page} +0 -0
- data/doc/src/documentation/plugins/menustyles/{vertical-dropdown.page → verticaldropdown.page} +1 -1
- data/doc/src/documentation/plugins/miscplugins/index.page +7 -0
- data/doc/src/documentation/plugins/miscplugins/smileyreplacer.page +38 -0
- data/doc/src/documentation/plugins/tags/breadcrumbtrail.page +20 -0
- data/doc/src/documentation/plugins/tags/download.page +23 -0
- data/doc/src/documentation/plugins/tags/resource.page +1 -1
- data/doc/src/documentation/plugins/tags/sitemap.page +1 -2
- data/doc/src/documentation/references/index.page +8 -0
- data/doc/src/documentation/{meta_info_reference.page → references/meta_info_reference.page} +1 -0
- data/doc/src/documentation/references/parameter_reference.page +12 -0
- data/doc/src/documentation/webgen_gallery_editor.page +82 -0
- data/doc/src/download.page +2 -2
- data/doc/src/features.page +3 -2
- data/doc/src/images/screenshots/wge-image.png +0 -0
- data/doc/src/images/screenshots/wge-layout-preview.png +0 -0
- data/doc/src/images/screenshots/wge-main-disabled.png +0 -0
- data/doc/src/images/screenshots/wge-main.png +0 -0
- data/doc/src/index.page +30 -11
- data/doc/src/meta.info +7 -7
- data/doc/src/screenshots.gallery +33 -0
- data/install.rb +1 -1
- data/lib/webgen.rb +275 -0
- data/lib/webgen/composite.rb +1 -1
- data/lib/webgen/gui/common.rb +38 -0
- data/lib/webgen/gui/main.rb +219 -0
- data/lib/webgen/gui/new_website_dlg.rb +125 -0
- data/lib/webgen/listener.rb +1 -1
- data/lib/webgen/node.rb +4 -2
- data/lib/webgen/plugin.rb +167 -100
- data/lib/webgen/plugins/{contenthandler/defaultcontenthandler.rb → contenthandlers/default.rb} +1 -1
- data/lib/webgen/plugins/{contenthandler → contenthandlers}/html.rb +2 -2
- data/lib/webgen/plugins/{contenthandler → contenthandlers}/markdown.rb +2 -2
- data/lib/webgen/plugins/{contenthandler → contenthandlers}/rdoc.rb +2 -2
- data/lib/webgen/plugins/{contenthandler → contenthandlers}/textile.rb +2 -2
- data/lib/webgen/{configuration.rb → plugins/coreplugins/configuration.rb} +34 -14
- data/lib/webgen/{logging.rb → plugins/coreplugins/logging.rb} +4 -4
- data/lib/webgen/plugins/{resourcemanager.rb → coreplugins/resourcemanager.rb} +44 -22
- data/lib/webgen/plugins/{filehandler → filehandlers}/backing.rb +11 -11
- data/lib/webgen/plugins/{filehandler/filecopy.rb → filehandlers/copy.rb} +3 -3
- data/lib/webgen/plugins/{filehandler → filehandlers}/directory.rb +15 -10
- data/lib/webgen/plugins/{filehandler → filehandlers}/filehandler.rb +9 -7
- data/lib/webgen/plugins/{filehandler/picturegallery.rb → filehandlers/gallery.rb} +35 -28
- data/lib/webgen/plugins/{filehandler → filehandlers}/page.rb +30 -15
- data/lib/webgen/plugins/{filehandler → filehandlers}/template.rb +3 -3
- data/lib/webgen/plugins/{gallerylayouter/defaultgallerylayouter.rb → gallerylayouters/default.rb} +11 -11
- data/lib/webgen/plugins/{htmlvalidator/defaulthtmlvalidator.rb → htmlvalidators/default.rb} +1 -1
- data/lib/webgen/plugins/{htmlvalidator → htmlvalidators}/xmllint.rb +2 -2
- data/lib/webgen/plugins/menustyles/{defaultmenustyle.rb → default.rb} +2 -2
- data/lib/webgen/plugins/menustyles/horizontal.rb +2 -2
- data/lib/webgen/plugins/menustyles/horizontal_dropdown.rb +2 -2
- data/lib/webgen/plugins/menustyles/partial.rb +2 -2
- data/lib/webgen/plugins/menustyles/vertical.rb +2 -2
- data/lib/webgen/plugins/menustyles/vertical_dropdown.rb +2 -2
- data/lib/webgen/plugins/miscplugins/smileyreplacer.rb +84 -0
- data/lib/webgen/plugins/{treewalker.rb → miscplugins/treewalker.rb} +1 -1
- data/lib/webgen/plugins/tags/{navbar.rb → breadcrumbtrail.rb} +5 -9
- data/lib/webgen/plugins/tags/date.rb +2 -6
- data/lib/webgen/plugins/tags/download.rb +155 -0
- data/lib/webgen/plugins/tags/executecommand.rb +2 -6
- data/lib/webgen/plugins/tags/includefile.rb +4 -8
- data/lib/webgen/plugins/tags/langbar.rb +2 -6
- data/lib/webgen/plugins/tags/menu.rb +2 -7
- data/lib/webgen/plugins/tags/meta.rb +2 -6
- data/lib/webgen/plugins/tags/relocatable.rb +2 -6
- data/lib/webgen/plugins/tags/sitemap.rb +14 -10
- data/lib/webgen/plugins/tags/tags.rb +25 -18
- data/lib/webgen/plugins/tags/wikilink.rb +2 -6
- metadata +311 -195
- data/doc/src/design.gallery +0 -18
- data/doc/src/designs/curdesign.png +0 -0
- data/doc/src/designs/nostyle.png +0 -0
- data/doc/src/designs/old.png +0 -0
- data/doc/src/documentation/plugins/gallerylayouter/defaultlayouter.page +0 -12
- data/doc/src/documentation/plugins/system/index.page +0 -7
- data/doc/src/documentation/plugins/tags/navbar.page +0 -20
- data/lib/webgen/webgen.rb +0 -271
- data/testsite/config.yaml +0 -7
- data/testsite/src/bghack.png +0 -0
- data/testsite/src/bluecloth.page +0 -102
- data/testsite/src/default.css +0 -146
- data/testsite/src/default.template +0 -33
- data/testsite/src/home.en.page +0 -22
- data/testsite/src/home.page +0 -22
- data/testsite/src/images/bghack.png +0 -0
- data/testsite/src/index.page +0 -21
- data/testsite/src/meta.info +0 -12
- data/testsite/src/news.page +0 -20
- data/testsite/src/news_are_so-cool.de.page +0 -19
- data/testsite/src/noindex/noindex.page +0 -20
- data/testsite/src/pictures/index.page +0 -20
- data/testsite/src/projects.de.page +0 -11
- data/testsite/src/projects.es.page +0 -11
- data/testsite/src/projects.page +0 -17
- data/testsite/src/projects/00.index.de.page +0 -10
- data/testsite/src/projects/01.project2.page +0 -20
- data/testsite/src/projects/02.project1.page +0 -20
- data/testsite/src/projects/05.project3.page +0 -22
- data/testsite/src/projects/index.page +0 -20
- data/testsite/src/projects/subproj/index.page +0 -22
- data/testsite/src/projects/subproj/project3.page +0 -21
- data/testsite/src/rdoc.page +0 -12
- data/testsite/src/redcloth.page +0 -106
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
#--
|
|
3
3
|
#
|
|
4
|
-
# $Id: filehandler.rb
|
|
4
|
+
# $Id: filehandler.rb 360 2005-11-02 08:24:26Z thomas $
|
|
5
5
|
#
|
|
6
6
|
# webgen: template based static website generator
|
|
7
7
|
# Copyright (C) 2004 Thomas Leitner
|
|
@@ -50,7 +50,7 @@ module FileHandlers
|
|
|
50
50
|
allFiles.subtract( get_files_for_pattern( pattern ) )
|
|
51
51
|
end
|
|
52
52
|
|
|
53
|
-
handlerFiles = sort_file_handlers(
|
|
53
|
+
handlerFiles = sort_file_handlers( FileHandlers::DefaultFileHandler.get_file_handlers ).collect do |pattern, handler|
|
|
54
54
|
[get_files_for_pattern( pattern ), Webgen::Plugin.config[handler].obj]
|
|
55
55
|
end
|
|
56
56
|
|
|
@@ -123,7 +123,7 @@ module FileHandlers
|
|
|
123
123
|
|
|
124
124
|
def create_root_node( path, handler )
|
|
125
125
|
root = handler.create_node( path, nil )
|
|
126
|
-
root['title'] = '
|
|
126
|
+
root['title'] = ''
|
|
127
127
|
root['dest'] = Webgen::Plugin['Configuration']['outDirectory'] + '/'
|
|
128
128
|
root['src'] = Webgen::Plugin['Configuration']['srcDirectory'] + '/'
|
|
129
129
|
root
|
|
@@ -171,11 +171,13 @@ module FileHandlers
|
|
|
171
171
|
|
|
172
172
|
summary "Base class of all file handler plugins"
|
|
173
173
|
|
|
174
|
+
VIRTUAL = true
|
|
175
|
+
|
|
174
176
|
# Specify the extension which should be handled by the class.
|
|
175
177
|
def self.handle_path( path )
|
|
176
178
|
logger.info { "Registering class #{self.name} for handling the path pattern: #{path.inspect}" }
|
|
177
|
-
(
|
|
178
|
-
handlers = (
|
|
179
|
+
(self.config[self].path ||= []) << path
|
|
180
|
+
handlers = (self.config[DefaultFileHandler].file_handler ||= {})
|
|
179
181
|
logger.warn { "Path pattern #{path} already associated with class #{handlers[path].name}, not using class #{self.name} for it!" } if handlers[path]
|
|
180
182
|
handlers[path] ||= self
|
|
181
183
|
end
|
|
@@ -186,8 +188,8 @@ module FileHandlers
|
|
|
186
188
|
end
|
|
187
189
|
|
|
188
190
|
# Return the registered file handler plugins.
|
|
189
|
-
def get_file_handlers
|
|
190
|
-
|
|
191
|
+
def self.get_file_handlers
|
|
192
|
+
self.config[self].file_handler
|
|
191
193
|
end
|
|
192
194
|
|
|
193
195
|
# Supplies the +path+ to a file and the +parent+ node sothat the plugin can create a node for this
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
#--
|
|
3
3
|
#
|
|
4
|
-
# $Id:
|
|
4
|
+
# $Id: gallery.rb 361 2005-11-25 14:17:13Z thomas $
|
|
5
5
|
#
|
|
6
6
|
# webgen: template based static website generator
|
|
7
7
|
# Copyright (C) 2004 Thomas Leitner
|
|
@@ -20,29 +20,29 @@
|
|
|
20
20
|
#++
|
|
21
21
|
#
|
|
22
22
|
|
|
23
|
-
require 'webgen/plugins/
|
|
24
|
-
require 'webgen/plugins/
|
|
25
|
-
require 'webgen/plugins/
|
|
23
|
+
require 'webgen/plugins/filehandlers/filehandler'
|
|
24
|
+
require 'webgen/plugins/filehandlers/directory'
|
|
25
|
+
require 'webgen/plugins/filehandlers/page'
|
|
26
26
|
|
|
27
27
|
module FileHandlers
|
|
28
28
|
|
|
29
|
-
class
|
|
29
|
+
class GalleryFileHandler < DefaultFileHandler
|
|
30
30
|
|
|
31
|
-
summary "Handles
|
|
31
|
+
summary "Handles images gallery files"
|
|
32
32
|
extension 'gallery'
|
|
33
|
-
add_param "
|
|
34
|
-
add_param "
|
|
33
|
+
add_param "imagesPerPage", 20, 'Number of images per gallery page'
|
|
34
|
+
add_param "imagePageInMenu", false, 'True if the image pages should be in the menu'
|
|
35
35
|
add_param "galleryPageInMenu", false, 'True if the gallery pages should be in the menu'
|
|
36
36
|
add_param "galleryOrderInfo", 50, 'The <orderInfo> metainfo for the first gallery page. The second gallery page gets this value plus one, and so on.'
|
|
37
|
-
add_param "mainPageInMenu", true, 'True if the main page of the
|
|
37
|
+
add_param "mainPageInMenu", true, 'True if the main page of the image gallery should be in the menu'
|
|
38
38
|
add_param "galleryPageTemplate", nil, 'The template for gallery pages. If nil or a not existing file is specified, the default template is used.'
|
|
39
|
-
add_param "
|
|
39
|
+
add_param "imagePageTemplate", nil, 'The template for image pages. If nil or a not existing file is specified, the default template is used.'
|
|
40
40
|
add_param "mainPageTemplate", nil, 'The template for the main page. If nil or a not existing file is specified, the default template is used.'
|
|
41
|
-
add_param "files", 'images/**/*.jpg', 'The Dir glob for specifying the
|
|
41
|
+
add_param "files", 'images/**/*.jpg', 'The Dir glob for specifying the image files'
|
|
42
42
|
add_param "title", 'Gallery', 'The title of the gallery'
|
|
43
43
|
add_param "layout", 'default', 'The layout used'
|
|
44
44
|
|
|
45
|
-
depends_on 'FileHandler', '
|
|
45
|
+
depends_on 'FileHandler', 'PageFileHandler'
|
|
46
46
|
|
|
47
47
|
def create_node( file, parent )
|
|
48
48
|
begin
|
|
@@ -53,7 +53,14 @@ module FileHandlers
|
|
|
53
53
|
end
|
|
54
54
|
@path = File.dirname( file )
|
|
55
55
|
images = Dir[File.join( @path, get_param( 'files' ))].collect {|i| i.sub( /#{@path + File::SEPARATOR}/, '' ) }
|
|
56
|
-
|
|
56
|
+
images.sort! do |a,b|
|
|
57
|
+
aoi = @filedata[a].nil? ? 0 : @filedata[a]['orderInfo'] || 0
|
|
58
|
+
boi = @filedata[b].nil? ? 0 : @filedata[b]['orderInfo'] || 0
|
|
59
|
+
atitle = @filedata[a].nil? ? a : @filedata[a]['title'] || a
|
|
60
|
+
btitle = @filedata[b].nil? ? b : @filedata[b]['title'] || b
|
|
61
|
+
(aoi == boi ? atitle <=> btitle : aoi <=> boi)
|
|
62
|
+
end
|
|
63
|
+
self.logger.info { "Creating gallery for file <#{file}> with #{images.length} images" }
|
|
57
64
|
|
|
58
65
|
create_gallery( images, parent )
|
|
59
66
|
|
|
@@ -75,7 +82,7 @@ module FileHandlers
|
|
|
75
82
|
|
|
76
83
|
def call_layouter( type, metainfo, *args )
|
|
77
84
|
content = Webgen::Plugin['DefaultGalleryLayouter'].get_layout( get_param( 'layout' ) ).send( type.to_s, *args )
|
|
78
|
-
"#{metainfo.to_yaml}\n---\n#{content}"
|
|
85
|
+
"---\n#{metainfo.to_yaml}\n---\n#{content}"
|
|
79
86
|
end
|
|
80
87
|
|
|
81
88
|
def create_gallery( images, parent )
|
|
@@ -83,7 +90,7 @@ module FileHandlers
|
|
|
83
90
|
main['galleries'] = create_gallery_pages( images, parent )
|
|
84
91
|
|
|
85
92
|
if main['galleries'].length != 1
|
|
86
|
-
mainNode = Webgen::Plugin['
|
|
93
|
+
mainNode = Webgen::Plugin['PageFileHandler'].create_node_from_data( call_layouter( :main, main, main ), main['srcName'], parent )
|
|
87
94
|
parent.add_child( mainNode )
|
|
88
95
|
else
|
|
89
96
|
main['galleries'][0]['title'] = main['title']
|
|
@@ -93,10 +100,10 @@ module FileHandlers
|
|
|
93
100
|
end
|
|
94
101
|
|
|
95
102
|
main['galleries'].each_with_index do |gallery, gIndex|
|
|
96
|
-
node = Webgen::Plugin['
|
|
103
|
+
node = Webgen::Plugin['PageFileHandler'].create_node_from_data( call_layouter( :gallery, gallery, main, gIndex ), gallery['srcName'], parent )
|
|
97
104
|
parent.add_child( node )
|
|
98
105
|
gallery['imageList'].each_with_index do |image, iIndex|
|
|
99
|
-
node = Webgen::Plugin['
|
|
106
|
+
node = Webgen::Plugin['PageFileHandler'].create_node_from_data( call_layouter( :image, image, main, gIndex, iIndex ), image['srcName'], parent )
|
|
100
107
|
parent.add_child( node )
|
|
101
108
|
end
|
|
102
109
|
end
|
|
@@ -115,7 +122,7 @@ module FileHandlers
|
|
|
115
122
|
|
|
116
123
|
def create_gallery_pages( images, parent )
|
|
117
124
|
galleries = []
|
|
118
|
-
picsPerPage = get_param( '
|
|
125
|
+
picsPerPage = get_param( 'imagesPerPage' )
|
|
119
126
|
0.step( images.length - 1, picsPerPage ) do |i|
|
|
120
127
|
data = (@filedata['galleryPages'] || {}).dup
|
|
121
128
|
|
|
@@ -126,7 +133,7 @@ module FileHandlers
|
|
|
126
133
|
data['orderInfo'] = get_param( 'galleryOrderInfo' ) + data['number']
|
|
127
134
|
data['title'] = gallery_title( data['number'] )
|
|
128
135
|
data['srcName'] = gallery_file_name( data['title'] )
|
|
129
|
-
data['imageList'] =
|
|
136
|
+
data['imageList'] = create_image_pages( images[i..(i + picsPerPage - 1)], parent )
|
|
130
137
|
|
|
131
138
|
galleries << data
|
|
132
139
|
end
|
|
@@ -141,20 +148,20 @@ module FileHandlers
|
|
|
141
148
|
( title.nil? ? nil : title.tr( ' .', '_' ) + '.html' )
|
|
142
149
|
end
|
|
143
150
|
|
|
144
|
-
def
|
|
151
|
+
def create_image_pages( images, parent )
|
|
145
152
|
imageList = []
|
|
146
153
|
images.each do |image|
|
|
147
154
|
imageData = (@filedata[image] || {}).dup
|
|
148
155
|
|
|
149
156
|
imageData['blocks'] ||= [{'name'=>'content', 'format'=>'html'}]
|
|
150
|
-
imageData['title'] ||= "
|
|
157
|
+
imageData['title'] ||= "Image #{File.basename( image )}"
|
|
151
158
|
imageData['description'] ||= ''
|
|
152
|
-
imageData['inMenu'] ||= get_param( '
|
|
153
|
-
imageData['template'] ||= get_param( '
|
|
159
|
+
imageData['inMenu'] ||= get_param( 'imagePageInMenu' )
|
|
160
|
+
imageData['template'] ||= get_param( 'imagePageTemplate' )
|
|
154
161
|
imageData['imageFilename'] = image
|
|
155
|
-
imageData['srcName'] =
|
|
156
|
-
imageData['thumbnail'] ||= get_thumbnail( imageData, parent )
|
|
162
|
+
imageData['srcName'] = gallery_file_name( get_param( 'title' ) + ' ' + File.basename( image ) )
|
|
157
163
|
imageData['thumbnailSize'] ||= @filedata['thumbnailSize']
|
|
164
|
+
imageData['thumbnail'] ||= get_thumbnail( imageData, parent )
|
|
158
165
|
|
|
159
166
|
imageList << imageData
|
|
160
167
|
end
|
|
@@ -171,11 +178,11 @@ module FileHandlers
|
|
|
171
178
|
begin
|
|
172
179
|
require 'RMagick'
|
|
173
180
|
|
|
174
|
-
class
|
|
181
|
+
class GalleryFileHandler
|
|
175
182
|
|
|
176
183
|
remove_method :get_thumbnail
|
|
177
184
|
def get_thumbnail( imageData, parent )
|
|
178
|
-
p_node = Webgen::Plugin['
|
|
185
|
+
p_node = Webgen::Plugin['DirectoryHandler'].recursive_create_path( File.dirname( imageData['imageFilename'] ), parent )
|
|
179
186
|
node = Webgen::Plugin['ThumbnailWriter'].create_node( File.join( @path, imageData['imageFilename'] ), p_node, imageData['thumbnailSize'] )
|
|
180
187
|
p_node.add_child( node )
|
|
181
188
|
|
|
@@ -193,7 +200,7 @@ module FileHandlers
|
|
|
193
200
|
node = Node.new( parent )
|
|
194
201
|
node['title'] = node['src'] = node['dest'] = 'tn_' + File.basename( file )
|
|
195
202
|
node['int:thumbnailFile'] = file
|
|
196
|
-
node['int:thumbnailSize'] = thumbnailSize
|
|
203
|
+
node['int:thumbnailSize'] = thumbnailSize unless thumbnailSize.nil? || thumbnailSize !~ /\d+x\d+/
|
|
197
204
|
node['processor'] = self
|
|
198
205
|
node
|
|
199
206
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
#--
|
|
3
3
|
#
|
|
4
|
-
# $Id: page.rb
|
|
4
|
+
# $Id: page.rb 350 2005-09-02 09:44:23Z thomas $
|
|
5
5
|
#
|
|
6
6
|
# webgen: template based static website generator
|
|
7
7
|
# Copyright (C) 2004 Thomas Leitner
|
|
@@ -20,7 +20,8 @@
|
|
|
20
20
|
#++
|
|
21
21
|
#
|
|
22
22
|
|
|
23
|
-
require 'webgen/plugins/
|
|
23
|
+
require 'webgen/plugins/filehandlers/filehandler'
|
|
24
|
+
require 'webgen/listener'
|
|
24
25
|
require 'yaml'
|
|
25
26
|
require 'erb'
|
|
26
27
|
|
|
@@ -28,7 +29,7 @@ module FileHandlers
|
|
|
28
29
|
|
|
29
30
|
# Super class for all page description files. Provides helper methods so that writing new plugins
|
|
30
31
|
# for page description files is easy.
|
|
31
|
-
class
|
|
32
|
+
class PageFileHandler < DefaultFileHandler
|
|
32
33
|
|
|
33
34
|
class PageNode < Node; end;
|
|
34
35
|
|
|
@@ -39,15 +40,27 @@ module FileHandlers
|
|
|
39
40
|
add_param 'defaultLangInFilename', false, \
|
|
40
41
|
'If true, the output files for the default language will have the ' \
|
|
41
42
|
'language in the file name like all other page files. If false, they won''t.'
|
|
42
|
-
|
|
43
|
-
add_param 'outputNameStyle', [:name, ['.', :lang], '.html'], 'Defines how the output name should be built.
|
|
44
|
-
'the :name part and the file language will be used for the :lang part.
|
|
45
|
-
'the :lang part was defined, will be omitted.'
|
|
43
|
+
|
|
44
|
+
add_param 'outputNameStyle', [:name, ['.', :lang], '.html'], 'Defines how the output name should be built. ' \
|
|
45
|
+
'The correct name will be used for the :name part and the file language will be used for the :lang part. ' \
|
|
46
|
+
'If <defaultLangInFilename> is true, the :lang part or the subarray in which the :lang part was defined, will be omitted.'
|
|
47
|
+
|
|
46
48
|
add_param 'validator', nil, 'The validator for checking HTML files on their validness. Set to "" or nil to prevent checking.'
|
|
47
|
-
|
|
49
|
+
|
|
50
|
+
add_param 'defaultPageMetaData', \
|
|
51
|
+
{'useERB' => true,
|
|
52
|
+
'blocks' => [{'name'=>'content', 'format'=>'textile'}]
|
|
53
|
+
},'Specifies the default meta data for page files.'
|
|
48
54
|
|
|
49
55
|
used_meta_info 'title', 'orderInfo', 'lang', 'blocks', 'useERB'
|
|
50
56
|
|
|
57
|
+
|
|
58
|
+
include Listener
|
|
59
|
+
|
|
60
|
+
def initialize
|
|
61
|
+
add_msg_name( :AFTER_CONTENT_RENDERED )
|
|
62
|
+
end
|
|
63
|
+
|
|
51
64
|
def create_node( srcName, parent )
|
|
52
65
|
create_node_internally( parse_data( File.read( srcName ), srcName ), analyse_file_name( File.basename( srcName ) ), parent )
|
|
53
66
|
end
|
|
@@ -58,7 +71,7 @@ module FileHandlers
|
|
|
58
71
|
|
|
59
72
|
def render_node( node, with_template = true, block_name = 'content' )
|
|
60
73
|
unless node['int:content-formatted']
|
|
61
|
-
useERB = node['useERB']
|
|
74
|
+
useERB = node['useERB']
|
|
62
75
|
node['blocks'].each do |blockdata|
|
|
63
76
|
begin
|
|
64
77
|
content = ( useERB ? ERB.new( blockdata['data'] ).result( binding ) : blockdata['data'] )
|
|
@@ -76,7 +89,7 @@ module FileHandlers
|
|
|
76
89
|
begin
|
|
77
90
|
outstring = ERB.new( templateNode['content'] ).result( binding )
|
|
78
91
|
rescue Exception => e
|
|
79
|
-
logger.error { "ERB threw an error while processing an ERB template (<#{templateNode.recursive_value('src')}
|
|
92
|
+
logger.error { "ERB threw an error while processing an ERB template (<#{templateNode.recursive_value('src')}>): #{e.message}" }
|
|
80
93
|
outstring = templateNode['content'].dup
|
|
81
94
|
end
|
|
82
95
|
else
|
|
@@ -84,7 +97,9 @@ module FileHandlers
|
|
|
84
97
|
outstring = node[block_name].to_s.dup
|
|
85
98
|
end
|
|
86
99
|
|
|
87
|
-
Webgen::Plugin['Tags'].substitute_tags( outstring, node, templateNode )
|
|
100
|
+
outstring = Webgen::Plugin['Tags'].substitute_tags( outstring, node, templateNode )
|
|
101
|
+
dispatch_msg( :AFTER_CONTENT_RENDERED, outstring, node )
|
|
102
|
+
outstring
|
|
88
103
|
end
|
|
89
104
|
|
|
90
105
|
def write_node( node )
|
|
@@ -163,19 +178,19 @@ module FileHandlers
|
|
|
163
178
|
end
|
|
164
179
|
|
|
165
180
|
def parse_data( data, srcName )
|
|
166
|
-
options =
|
|
181
|
+
options = Marshal.load( Marshal.dump( get_param( 'defaultPageMetaData' ) ) )
|
|
167
182
|
blocks = data.split( /^---\s*$/ )
|
|
168
183
|
if blocks.length > 0
|
|
169
184
|
if blocks[0] == ''
|
|
170
185
|
begin
|
|
171
|
-
options
|
|
186
|
+
options.update( YAML::load( blocks[1] ) )
|
|
172
187
|
rescue ArgumentError => x
|
|
173
188
|
self.logger.error { "Error parsing options for file <#{srcName}>: #{x.message}" }
|
|
174
189
|
end
|
|
175
190
|
blocks[0..1] = []
|
|
176
191
|
end
|
|
177
192
|
blocks.each {|b| b.gsub!( /^(\\+)(---\s*)$/ ) {|m| "\\" * ($1.length / 2) + $2 } }
|
|
178
|
-
|
|
193
|
+
options['blocks'].each do |blockdata|
|
|
179
194
|
if !blockdata.kind_of?( Hash ) || !blockdata['name'] || !blockdata['format']
|
|
180
195
|
self.logger.error { "Block meta information in <#{srcName}> invalid (#{blockdata.inspect})" }
|
|
181
196
|
next
|
|
@@ -188,7 +203,7 @@ module FileHandlers
|
|
|
188
203
|
end
|
|
189
204
|
|
|
190
205
|
def analyse_file_name( srcName )
|
|
191
|
-
matchData = /^(?:(\d+)\.)?([^.]*?)(?:\.(\w\w))?\.(.*)$/.match( srcName )
|
|
206
|
+
matchData = /^(?:(\d+)\.)?([^.]*?)(?:\.(\w\w\w?))?\.(.*)$/.match( srcName )
|
|
192
207
|
analysed = OpenStruct.new
|
|
193
208
|
|
|
194
209
|
self.logger.info { "Using default language for file <#{srcName}>" } if matchData[3].nil?
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
#--
|
|
3
3
|
#
|
|
4
|
-
# $Id: template.rb
|
|
4
|
+
# $Id: template.rb 349 2005-09-02 09:28:06Z thomas $
|
|
5
5
|
#
|
|
6
6
|
# webgen: template based static website generator
|
|
7
7
|
# Copyright (C) 2004 Thomas Leitner
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
#++
|
|
21
21
|
#
|
|
22
22
|
|
|
23
|
-
require 'webgen/plugins/
|
|
23
|
+
require 'webgen/plugins/filehandlers/filehandler'
|
|
24
24
|
|
|
25
25
|
module FileHandlers
|
|
26
26
|
|
|
@@ -57,7 +57,7 @@ module FileHandlers
|
|
|
57
57
|
#######
|
|
58
58
|
|
|
59
59
|
def get_template( node )
|
|
60
|
-
if node['template'].kind_of?( String )
|
|
60
|
+
if node['template'].kind_of?( String ) && node['template'] != ''
|
|
61
61
|
templateNode = node.node_for_string( node['template'] )
|
|
62
62
|
if templateNode.nil?
|
|
63
63
|
self.logger.warn { "Specified template for file <#{node.recursive_value('src')}> not found, using default template!" }
|
data/lib/webgen/plugins/{gallerylayouter/defaultgallerylayouter.rb → gallerylayouters/default.rb}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
#--
|
|
3
3
|
#
|
|
4
|
-
# $Id:
|
|
4
|
+
# $Id: default.rb 349 2005-09-02 09:28:06Z thomas $
|
|
5
5
|
#
|
|
6
6
|
# webgen: template based static website generator
|
|
7
7
|
# Copyright (C) 2004 Thomas Leitner
|
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
#++
|
|
21
21
|
#
|
|
22
22
|
|
|
23
|
-
module
|
|
23
|
+
module GalleryLayouters
|
|
24
24
|
|
|
25
25
|
class DefaultGalleryLayouter < Webgen::Plugin
|
|
26
26
|
|
|
27
|
-
summary "Base class for all
|
|
27
|
+
summary "Base class for all gallery layouters and, at the same time, default layouter"
|
|
28
28
|
|
|
29
29
|
define_handler 'layout'
|
|
30
30
|
|
|
@@ -49,8 +49,8 @@ module PictureGalleryLayouter
|
|
|
49
49
|
gIndex != data['galleries'].length - 1 ? gIndex + 1 : nil
|
|
50
50
|
end
|
|
51
51
|
|
|
52
|
-
# Returns the gallery and image indices of the previous
|
|
53
|
-
def
|
|
52
|
+
# Returns the gallery and image indices of the previous image, if it exists, or +nil+ otherwise.
|
|
53
|
+
def prev_image( data, gIndex, iIndex )
|
|
54
54
|
result = nil
|
|
55
55
|
if gIndex != 0 || iIndex != 0
|
|
56
56
|
if iIndex == 0
|
|
@@ -64,8 +64,8 @@ module PictureGalleryLayouter
|
|
|
64
64
|
return result
|
|
65
65
|
end
|
|
66
66
|
|
|
67
|
-
# Returns the gallery and image indices of the next
|
|
68
|
-
def
|
|
67
|
+
# Returns the gallery and image indices of the next image, if it exists, or +nil+ otherwise.
|
|
68
|
+
def next_image( data, gIndex, iIndex )
|
|
69
69
|
result = nil
|
|
70
70
|
if gIndex != data['galleries'].length - 1 || iIndex != data['galleries'][gIndex]['imageList'].length - 1
|
|
71
71
|
if iIndex == data['galleries'][gIndex]['imageList'].length - 1
|
|
@@ -124,14 +124,14 @@ module PictureGalleryLayouter
|
|
|
124
124
|
# Should be overwritten by subclasses! +data+ is the data structure which holds all information
|
|
125
125
|
# about the gallery. +gIndex+ is the index of the current gallery. +iIndex+ is the index of the
|
|
126
126
|
# current image.
|
|
127
|
-
def
|
|
127
|
+
def image( data, gIndex, iIndex )
|
|
128
128
|
s = "
|
|
129
129
|
<h2>#{data['galleries'][gIndex]['imageList'][iIndex]['title']}</h2>
|
|
130
|
-
<div class=\"webgen-
|
|
130
|
+
<div class=\"webgen-image\">
|
|
131
131
|
"
|
|
132
132
|
s += "<a href=\"#{data['galleries'][gIndex]['srcName']}\">^ #{data['galleries'][gIndex]['title']} ^</a><br />"
|
|
133
|
-
prevGIndex, prevIIndex =
|
|
134
|
-
nextGIndex, nextIIndex =
|
|
133
|
+
prevGIndex, prevIIndex = prev_image( data, gIndex, iIndex )
|
|
134
|
+
nextGIndex, nextIIndex = next_image( data, gIndex, iIndex )
|
|
135
135
|
s += "<a href=\"#{data['galleries'][prevGIndex]['imageList'][prevIIndex]['srcName']}\">" \
|
|
136
136
|
"< #{data['galleries'][prevGIndex]['imageList'][prevIIndex]['title']}</a>" unless prevGIndex.nil?
|
|
137
137
|
s += " — " unless prevGIndex.nil? || nextGIndex.nil?
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
#--
|
|
3
3
|
#
|
|
4
|
-
# $Id: xmllint.rb
|
|
4
|
+
# $Id: xmllint.rb 349 2005-09-02 09:28:06Z thomas $
|
|
5
5
|
#
|
|
6
6
|
# webgen: template based static website generator
|
|
7
7
|
# Copyright (C) 2004 Thomas Leitner
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
#++
|
|
21
21
|
#
|
|
22
22
|
|
|
23
|
-
require 'webgen/plugins/
|
|
23
|
+
require 'webgen/plugins/htmlvalidators/default'
|
|
24
24
|
require "tempfile"
|
|
25
25
|
|
|
26
26
|
# Allows one to get stdout and stderr from an executed command. Original version
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
#--
|
|
3
3
|
#
|
|
4
|
-
# $Id:
|
|
4
|
+
# $Id: default.rb 348 2005-09-02 08:43:33Z thomas $
|
|
5
5
|
#
|
|
6
6
|
# webgen: template based static website generator
|
|
7
7
|
# Copyright (C) 2004 Thomas Leitner
|
|
@@ -20,7 +20,6 @@
|
|
|
20
20
|
#++
|
|
21
21
|
#
|
|
22
22
|
|
|
23
|
-
|
|
24
23
|
module MenuStyles
|
|
25
24
|
|
|
26
25
|
class DefaultMenuStyle < Webgen::Plugin
|
|
@@ -52,6 +51,7 @@ module MenuStyles
|
|
|
52
51
|
protected
|
|
53
52
|
#########
|
|
54
53
|
|
|
54
|
+
# Returns style information (node is selected, ...) and link for +node+ relative to +srcNode+.
|
|
55
55
|
def menu_item_details( srcNode, node )
|
|
56
56
|
langNode = node['processor'].get_node_for_lang( node, srcNode['lang'] )
|
|
57
57
|
isDir = node['int:directory?']
|