webgen 0.3.6 → 0.3.7
Sign up to get free protection for your applications and to get access to all the features.
- 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?']
|