webgen 0.3.8 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +2565 -14
- data/README +4 -6
- data/Rakefile +207 -89
- data/TODO +175 -17
- data/VERSION +1 -1
- data/bin/webgen +1 -2
- data/data/webgen/gallery-creator/default.png +0 -0
- data/data/webgen/gallery_styles/default/README +6 -0
- data/data/webgen/gallery_styles/default/gallery_gallery.template +38 -0
- data/data/webgen/gallery_styles/default/gallery_image.template +30 -0
- data/data/webgen/gallery_styles/default/gallery_main.template +18 -0
- data/data/webgen/gallery_styles/slides/README +18 -0
- data/data/webgen/gallery_styles/slides/collage.rb +334 -0
- data/data/webgen/gallery_styles/slides/gallery_gallery.template +62 -0
- data/data/webgen/gallery_styles/slides/gallery_image.template +53 -0
- data/data/webgen/gallery_styles/slides/gallery_main.template +32 -0
- data/data/webgen/resources/images/generated_by_webgen.png +0 -0
- data/data/webgen/resources/images/webgen_logo.png +0 -0
- data/data/webgen/website_styles/1024px/README +10 -0
- data/data/webgen/website_styles/1024px/default.css +188 -0
- data/data/webgen/website_styles/1024px/default.template +62 -0
- data/data/webgen/website_styles/1024px/images/background.gif +0 -0
- data/data/webgen/website_styles/andreas00/README +10 -0
- data/data/webgen/website_styles/andreas00/default.css +290 -0
- data/data/webgen/website_styles/andreas00/default.template +62 -0
- data/data/webgen/website_styles/andreas00/images/bg.gif +0 -0
- data/data/webgen/website_styles/andreas00/images/front.jpg +0 -0
- data/data/webgen/website_styles/andreas00/images/menubg.gif +0 -0
- data/data/webgen/website_styles/andreas00/images/menubg2.gif +0 -0
- data/data/webgen/website_styles/andreas01/README +11 -0
- data/data/webgen/website_styles/andreas01/default.css +310 -0
- data/data/webgen/website_styles/andreas01/default.template +63 -0
- data/data/webgen/website_styles/andreas01/images/bg.gif +0 -0
- data/data/webgen/website_styles/andreas01/images/front.jpg +0 -0
- data/data/webgen/website_styles/andreas01/print.css +35 -0
- data/data/webgen/website_styles/andreas03/README +11 -0
- data/data/webgen/website_styles/andreas03/default.css +223 -0
- data/data/webgen/website_styles/andreas03/default.template +60 -0
- data/data/webgen/website_styles/andreas03/images/bodybg.png +0 -0
- data/data/webgen/website_styles/andreas03/images/contbg.png +0 -0
- data/data/webgen/website_styles/andreas03/images/footerbg.png +0 -0
- data/data/webgen/website_styles/andreas03/images/gradient1.png +0 -0
- data/data/webgen/website_styles/andreas03/images/gradient2.png +0 -0
- data/data/webgen/website_styles/andreas04/README +12 -0
- data/data/webgen/website_styles/andreas04/default.css +290 -0
- data/data/webgen/website_styles/andreas04/default.template +83 -0
- data/data/webgen/website_styles/andreas04/images/blinkarrow.gif +0 -0
- data/data/webgen/website_styles/andreas04/images/bodybg.png +0 -0
- data/data/webgen/website_styles/andreas04/images/contentbg.png +0 -0
- data/data/webgen/website_styles/andreas04/images/entrybg.png +0 -0
- data/data/webgen/website_styles/andreas04/images/flash.gif +0 -0
- data/data/webgen/website_styles/andreas04/images/flash2.gif +0 -0
- data/data/webgen/website_styles/andreas04/images/globe.gif +0 -0
- data/data/webgen/website_styles/andreas04/images/globebottom.gif +0 -0
- data/data/webgen/website_styles/andreas04/images/linkarrow.gif +0 -0
- data/data/webgen/website_styles/andreas04/images/menuhover.png +0 -0
- data/data/webgen/website_styles/andreas05/README +11 -0
- data/data/webgen/website_styles/andreas05/default.css +33 -0
- data/data/webgen/website_styles/andreas05/default.template +42 -0
- data/data/webgen/website_styles/andreas05/images/bodybg.gif +0 -0
- data/data/webgen/website_styles/andreas05/images/front.png +0 -0
- data/data/webgen/website_styles/andreas06/README +11 -0
- data/data/webgen/website_styles/andreas06/default.css +353 -0
- data/data/webgen/website_styles/andreas06/default.template +72 -0
- data/data/webgen/website_styles/andreas06/images/bodybg.gif +0 -0
- data/data/webgen/website_styles/andreas06/images/boxbg.gif +0 -0
- data/data/webgen/website_styles/andreas06/images/greypx.gif +0 -0
- data/data/webgen/website_styles/andreas06/images/header.jpg +0 -0
- data/data/webgen/website_styles/andreas06/images/innerbg.gif +0 -0
- data/data/webgen/website_styles/andreas06/images/leaves.jpg +0 -0
- data/data/webgen/website_styles/andreas06/images/tabs.gif +0 -0
- data/data/webgen/website_styles/andreas07/README +12 -0
- data/data/webgen/website_styles/andreas07/browserfix.css +7 -0
- data/data/webgen/website_styles/andreas07/default.css +92 -0
- data/data/webgen/website_styles/andreas07/default.template +44 -0
- data/data/webgen/website_styles/andreas07/images/bodybg.gif +0 -0
- data/data/webgen/website_styles/andreas07/images/sidebarbg.gif +0 -0
- data/data/webgen/website_styles/andreas08/README +11 -0
- data/data/webgen/website_styles/andreas08/default.css +224 -0
- data/data/webgen/website_styles/andreas08/default.template +53 -0
- data/data/webgen/website_styles/andreas09/README +11 -0
- data/data/webgen/website_styles/andreas09/default.css +308 -0
- data/data/webgen/website_styles/andreas09/default.template +70 -0
- data/data/webgen/website_styles/andreas09/images/bodybg-black.jpg +0 -0
- data/data/webgen/website_styles/andreas09/images/bodybg-green.jpg +0 -0
- data/data/webgen/website_styles/andreas09/images/bodybg-orange.jpg +0 -0
- data/data/webgen/website_styles/andreas09/images/bodybg-purple.jpg +0 -0
- data/data/webgen/website_styles/andreas09/images/bodybg-red.jpg +0 -0
- data/data/webgen/website_styles/andreas09/images/bodybg.jpg +0 -0
- data/data/webgen/website_styles/andreas09/images/footerbg.jpg +0 -0
- data/data/webgen/website_styles/andreas09/images/menuhover-black.jpg +0 -0
- data/data/webgen/website_styles/andreas09/images/menuhover-green.jpg +0 -0
- data/data/webgen/website_styles/andreas09/images/menuhover-orange.jpg +0 -0
- data/data/webgen/website_styles/andreas09/images/menuhover-purple.jpg +0 -0
- data/data/webgen/website_styles/andreas09/images/menuhover-red.jpg +0 -0
- data/data/webgen/website_styles/andreas09/images/menuhover.jpg +0 -0
- data/data/webgen/website_styles/default/README +6 -0
- data/data/webgen/website_styles/default/default.css +1 -1
- data/data/webgen/website_styles/default/default.template +9 -3
- data/data/webgen/website_styles/plain/README +12 -0
- data/data/webgen/website_styles/plain/default.css +244 -0
- data/data/webgen/website_styles/plain/default.template +63 -0
- data/data/webgen/website_styles/plain/images/a_hover.jpg +0 -0
- data/data/webgen/website_styles/plain/images/desc.jpg +0 -0
- data/data/webgen/website_styles/plain/images/li.gif +0 -0
- data/data/webgen/website_styles/plain/images/mainbar.jpg +0 -0
- data/data/webgen/website_styles/plain/images/menu.jpg +0 -0
- data/data/webgen/website_styles/plain/images/submenua.gif +0 -0
- data/data/webgen/website_styles/plain/images/submenua_hover.jpg +0 -0
- data/data/webgen/website_templates/default/README +7 -5
- data/data/webgen/website_templates/personal_hp/README +7 -5
- data/data/webgen/website_templates/project/README +8 -6
- data/doc/config.yaml +2 -2
- data/doc/examples/website_styles/1024px/README +9 -0
- data/doc/examples/website_styles/1024px/config.yaml +2 -0
- data/doc/examples/website_styles/1024px/src/about.page +12 -0
- data/doc/examples/website_styles/1024px/src/default.css +188 -0
- data/doc/examples/website_styles/1024px/src/default.template +62 -0
- data/doc/examples/website_styles/1024px/src/download.page +15 -0
- data/doc/examples/website_styles/1024px/src/features.page +8 -0
- data/doc/examples/website_styles/1024px/src/images/background.gif +0 -0
- data/doc/examples/website_styles/1024px/src/index.page +9 -0
- data/doc/examples/website_styles/1024px/src/screenshots.page +18 -0
- data/doc/examples/website_styles/andreas00/README +9 -0
- data/doc/examples/website_styles/andreas00/config.yaml +2 -0
- data/doc/examples/website_styles/andreas00/src/about.page +12 -0
- data/doc/examples/website_styles/andreas00/src/default.css +290 -0
- data/doc/examples/website_styles/andreas00/src/default.template +62 -0
- data/doc/examples/website_styles/andreas00/src/download.page +15 -0
- data/doc/examples/website_styles/andreas00/src/features.page +8 -0
- data/doc/examples/website_styles/andreas00/src/images/bg.gif +0 -0
- data/doc/examples/website_styles/andreas00/src/images/front.jpg +0 -0
- data/doc/examples/website_styles/andreas00/src/images/menubg.gif +0 -0
- data/doc/examples/website_styles/andreas00/src/images/menubg2.gif +0 -0
- data/doc/examples/website_styles/andreas00/src/index.page +9 -0
- data/doc/examples/website_styles/andreas00/src/screenshots.page +18 -0
- data/doc/examples/website_styles/andreas01/README +9 -0
- data/doc/examples/website_styles/andreas01/config.yaml +2 -0
- data/doc/examples/website_styles/andreas01/src/about.page +12 -0
- data/doc/examples/website_styles/andreas01/src/default.css +310 -0
- data/doc/examples/website_styles/andreas01/src/default.template +63 -0
- data/doc/examples/website_styles/andreas01/src/download.page +15 -0
- data/doc/examples/website_styles/andreas01/src/features.page +8 -0
- data/doc/examples/website_styles/andreas01/src/images/bg.gif +0 -0
- data/doc/examples/website_styles/andreas01/src/images/front.jpg +0 -0
- data/doc/examples/website_styles/andreas01/src/index.page +9 -0
- data/doc/examples/website_styles/andreas01/src/print.css +35 -0
- data/doc/examples/website_styles/andreas01/src/screenshots.page +18 -0
- data/doc/examples/website_styles/andreas03/README +9 -0
- data/doc/examples/website_styles/andreas03/config.yaml +2 -0
- data/doc/examples/website_styles/andreas03/src/about.page +12 -0
- data/doc/examples/website_styles/andreas03/src/default.css +223 -0
- data/doc/examples/website_styles/andreas03/src/default.template +60 -0
- data/doc/examples/website_styles/andreas03/src/download.page +15 -0
- data/doc/examples/website_styles/andreas03/src/features.page +8 -0
- data/doc/examples/website_styles/andreas03/src/images/bodybg.png +0 -0
- data/doc/examples/website_styles/andreas03/src/images/contbg.png +0 -0
- data/doc/examples/website_styles/andreas03/src/images/footerbg.png +0 -0
- data/doc/examples/website_styles/andreas03/src/images/gradient1.png +0 -0
- data/doc/examples/website_styles/andreas03/src/images/gradient2.png +0 -0
- data/doc/examples/website_styles/andreas03/src/index.page +9 -0
- data/doc/examples/website_styles/andreas03/src/screenshots.page +18 -0
- data/doc/examples/website_styles/andreas04/README +9 -0
- data/doc/examples/website_styles/andreas04/config.yaml +2 -0
- data/doc/examples/website_styles/andreas04/src/about.page +12 -0
- data/doc/examples/website_styles/andreas04/src/default.css +290 -0
- data/doc/examples/website_styles/andreas04/src/default.template +83 -0
- data/doc/examples/website_styles/andreas04/src/download.page +15 -0
- data/doc/examples/website_styles/andreas04/src/features.page +8 -0
- data/doc/examples/website_styles/andreas04/src/images/blinkarrow.gif +0 -0
- data/doc/examples/website_styles/andreas04/src/images/bodybg.png +0 -0
- data/doc/examples/website_styles/andreas04/src/images/contentbg.png +0 -0
- data/doc/examples/website_styles/andreas04/src/images/entrybg.png +0 -0
- data/doc/examples/website_styles/andreas04/src/images/flash.gif +0 -0
- data/doc/examples/website_styles/andreas04/src/images/flash2.gif +0 -0
- data/doc/examples/website_styles/andreas04/src/images/globe.gif +0 -0
- data/doc/examples/website_styles/andreas04/src/images/globebottom.gif +0 -0
- data/doc/examples/website_styles/andreas04/src/images/linkarrow.gif +0 -0
- data/doc/examples/website_styles/andreas04/src/images/menuhover.png +0 -0
- data/doc/examples/website_styles/andreas04/src/index.page +9 -0
- data/doc/examples/website_styles/andreas04/src/screenshots.page +18 -0
- data/doc/examples/website_styles/andreas05/README +9 -0
- data/doc/examples/website_styles/andreas05/config.yaml +2 -0
- data/doc/examples/website_styles/andreas05/src/about.page +12 -0
- data/doc/examples/website_styles/andreas05/src/default.css +33 -0
- data/doc/examples/website_styles/andreas05/src/default.template +42 -0
- data/doc/examples/website_styles/andreas05/src/download.page +15 -0
- data/doc/examples/website_styles/andreas05/src/features.page +8 -0
- data/doc/examples/website_styles/andreas05/src/images/bodybg.gif +0 -0
- data/doc/examples/website_styles/andreas05/src/images/front.png +0 -0
- data/doc/examples/website_styles/andreas05/src/index.page +9 -0
- data/doc/examples/website_styles/andreas05/src/screenshots.page +18 -0
- data/doc/examples/website_styles/andreas06/README +9 -0
- data/doc/examples/website_styles/andreas06/config.yaml +2 -0
- data/doc/examples/website_styles/andreas06/src/about.page +12 -0
- data/doc/examples/website_styles/andreas06/src/default.css +353 -0
- data/doc/examples/website_styles/andreas06/src/default.template +72 -0
- data/doc/examples/website_styles/andreas06/src/download.page +15 -0
- data/doc/examples/website_styles/andreas06/src/features.page +8 -0
- data/doc/examples/website_styles/andreas06/src/images/bodybg.gif +0 -0
- data/doc/examples/website_styles/andreas06/src/images/boxbg.gif +0 -0
- data/doc/examples/website_styles/andreas06/src/images/greypx.gif +0 -0
- data/doc/examples/website_styles/andreas06/src/images/header.jpg +0 -0
- data/doc/examples/website_styles/andreas06/src/images/innerbg.gif +0 -0
- data/doc/examples/website_styles/andreas06/src/images/leaves.jpg +0 -0
- data/doc/examples/website_styles/andreas06/src/images/tabs.gif +0 -0
- data/doc/examples/website_styles/andreas06/src/index.page +9 -0
- data/doc/examples/website_styles/andreas06/src/screenshots.page +18 -0
- data/doc/examples/website_styles/andreas07/README +9 -0
- data/doc/examples/website_styles/andreas07/config.yaml +2 -0
- data/doc/examples/website_styles/andreas07/src/about.page +12 -0
- data/doc/examples/website_styles/andreas07/src/browserfix.css +7 -0
- data/doc/examples/website_styles/andreas07/src/default.css +92 -0
- data/doc/examples/website_styles/andreas07/src/default.template +44 -0
- data/doc/examples/website_styles/andreas07/src/download.page +15 -0
- data/doc/examples/website_styles/andreas07/src/features.page +8 -0
- data/doc/examples/website_styles/andreas07/src/images/bodybg.gif +0 -0
- data/doc/examples/website_styles/andreas07/src/images/sidebarbg.gif +0 -0
- data/doc/examples/website_styles/andreas07/src/index.page +9 -0
- data/doc/examples/website_styles/andreas07/src/screenshots.page +18 -0
- data/doc/examples/website_styles/andreas08/README +9 -0
- data/doc/examples/website_styles/andreas08/config.yaml +2 -0
- data/doc/examples/website_styles/andreas08/src/about.page +12 -0
- data/doc/examples/website_styles/andreas08/src/default.css +224 -0
- data/doc/examples/website_styles/andreas08/src/default.template +53 -0
- data/doc/examples/website_styles/andreas08/src/download.page +15 -0
- data/doc/examples/website_styles/andreas08/src/features.page +8 -0
- data/doc/examples/website_styles/andreas08/src/index.page +9 -0
- data/doc/examples/website_styles/andreas08/src/screenshots.page +18 -0
- data/doc/examples/website_styles/andreas09/README +9 -0
- data/doc/examples/website_styles/andreas09/config.yaml +2 -0
- data/doc/examples/website_styles/andreas09/src/about.page +12 -0
- data/doc/examples/website_styles/andreas09/src/default.css +308 -0
- data/doc/examples/website_styles/andreas09/src/default.template +70 -0
- data/doc/examples/website_styles/andreas09/src/download.page +15 -0
- data/doc/examples/website_styles/andreas09/src/features.page +8 -0
- data/doc/examples/website_styles/andreas09/src/images/bodybg-black.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/bodybg-green.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/bodybg-orange.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/bodybg-purple.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/bodybg-red.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/bodybg.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/footerbg.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/menuhover-black.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/menuhover-green.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/menuhover-orange.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/menuhover-purple.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/menuhover-red.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/images/menuhover.jpg +0 -0
- data/doc/examples/website_styles/andreas09/src/index.page +9 -0
- data/doc/examples/website_styles/andreas09/src/screenshots.page +18 -0
- data/doc/examples/website_styles/default/README +9 -0
- data/doc/examples/website_styles/default/config.yaml +2 -0
- data/doc/examples/website_styles/default/src/about.page +12 -0
- data/doc/examples/website_styles/default/src/default.css +84 -0
- data/doc/examples/website_styles/default/src/default.template +38 -0
- data/doc/examples/website_styles/default/src/download.page +15 -0
- data/doc/examples/website_styles/default/src/features.page +8 -0
- data/doc/examples/website_styles/default/src/index.page +9 -0
- data/doc/examples/website_styles/default/src/screenshots.page +18 -0
- data/doc/examples/website_styles/plain/README +9 -0
- data/doc/examples/website_styles/plain/config.yaml +2 -0
- data/doc/examples/website_styles/plain/src/about.page +12 -0
- data/doc/examples/website_styles/plain/src/default.css +244 -0
- data/doc/examples/website_styles/plain/src/default.template +63 -0
- data/doc/examples/website_styles/plain/src/download.page +15 -0
- data/doc/examples/website_styles/plain/src/features.page +8 -0
- data/doc/examples/website_styles/plain/src/images/a_hover.jpg +0 -0
- data/doc/examples/website_styles/plain/src/images/desc.jpg +0 -0
- data/doc/examples/website_styles/plain/src/images/li.gif +0 -0
- data/doc/examples/website_styles/plain/src/images/mainbar.jpg +0 -0
- data/doc/examples/website_styles/plain/src/images/menu.jpg +0 -0
- data/doc/examples/website_styles/plain/src/images/submenua.gif +0 -0
- data/doc/examples/website_styles/plain/src/images/submenua_hover.jpg +0 -0
- data/doc/examples/website_styles/plain/src/index.page +9 -0
- data/doc/examples/website_styles/plain/src/screenshots.page +18 -0
- data/doc/examples/website_templates/default/README +8 -0
- data/doc/examples/website_templates/default/config.yaml +2 -0
- data/doc/examples/website_templates/default/src/default.css +84 -0
- data/doc/examples/website_templates/default/src/default.template +38 -0
- data/doc/examples/website_templates/default/src/index.page +8 -0
- data/doc/examples/website_templates/personal_hp/README +8 -0
- data/doc/examples/website_templates/personal_hp/config.yaml +2 -0
- data/doc/examples/website_templates/personal_hp/src/about.page +12 -0
- data/doc/examples/website_templates/personal_hp/src/default.css +84 -0
- data/doc/examples/website_templates/personal_hp/src/default.template +38 -0
- data/doc/examples/website_templates/personal_hp/src/index.page +9 -0
- data/doc/examples/website_templates/personal_hp/src/links.page +22 -0
- data/doc/examples/website_templates/personal_hp/src/projects.page +20 -0
- data/doc/examples/website_templates/project/README +9 -0
- data/doc/examples/website_templates/project/config.yaml +2 -0
- data/doc/examples/website_templates/project/src/about.page +12 -0
- data/doc/examples/website_templates/project/src/default.css +84 -0
- data/doc/examples/website_templates/project/src/default.template +38 -0
- data/doc/examples/website_templates/project/src/download.page +15 -0
- data/doc/examples/website_templates/project/src/features.page +8 -0
- data/doc/examples/website_templates/project/src/index.page +9 -0
- data/doc/examples/website_templates/project/src/screenshots.page +18 -0
- data/doc/metainfo.yaml +85 -0
- data/doc/plugin/emoticon.rb +19 -21
- data/doc/plugin/extension.rb +134 -55
- data/doc/plugin/gallery/slides/collage.rb +334 -0
- data/doc/plugin/listpluginparameters.rb +24 -26
- data/doc/plugin/resources.rb +20 -22
- data/doc/src/default.css +333 -154
- data/doc/src/default.template +92 -39
- data/doc/src/documentation/extending_webgen.page +1 -2
- data/doc/src/documentation/gettingstarted.page +161 -44
- data/doc/src/documentation/index.page +15 -28
- data/doc/src/documentation/plugins/contentconverter/default.page +15 -0
- data/doc/src/documentation/plugins/contentconverter/html.page +10 -0
- data/doc/src/documentation/plugins/contentconverter/markdown.page +21 -0
- data/doc/src/documentation/plugins/contentconverter/rdoc.page +11 -0
- data/doc/src/documentation/plugins/contentconverter/textile.page +21 -0
- data/doc/src/documentation/plugins/contentconverter/xmlbuilder.page +61 -0
- data/doc/src/documentation/plugins/core/configuration.page +11 -0
- data/doc/src/documentation/plugins/core/filehandler.page +214 -0
- data/doc/src/documentation/plugins/core/index.page +11 -0
- data/doc/src/documentation/plugins/core/resourcemanager.page +46 -0
- data/doc/src/documentation/plugins/core/tagprocessor.page +17 -0
- data/doc/src/documentation/plugins/file/copyhandler.page +26 -0
- data/doc/src/documentation/plugins/file/defaulthandler.page +15 -0
- data/doc/src/documentation/plugins/file/directoryhandler.page +37 -0
- data/doc/src/documentation/plugins/file/galleryhandler.page +181 -0
- data/doc/src/documentation/plugins/file/pagehandler.page +154 -0
- data/doc/src/documentation/plugins/file/templatehandler.page +34 -0
- data/doc/src/documentation/plugins/file/thumbnailwriter.page +39 -0
- data/doc/src/documentation/plugins/htmlvalidator/default.page +12 -0
- data/doc/src/documentation/plugins/htmlvalidator/xmllint.page +12 -0
- data/doc/src/documentation/plugins/index.page +32 -11
- data/doc/src/documentation/plugins/menustyle/default.page +19 -0
- data/doc/src/documentation/plugins/menustyle/horizontal.page +32 -0
- data/doc/src/documentation/plugins/{menustyles → menustyle}/horizontaldropdown.page +25 -19
- data/doc/src/documentation/plugins/menustyle/section.page +34 -0
- data/doc/src/documentation/plugins/menustyle/vertical.page +48 -0
- data/doc/src/documentation/plugins/menustyle/verticaldropdown.page +29 -0
- data/doc/src/documentation/plugins/misc/index.page +9 -0
- data/doc/src/documentation/plugins/{miscplugins → misc}/smileyreplacer.page +15 -14
- data/doc/src/documentation/plugins/misc/syntaxhighlighter.page +26 -0
- data/doc/src/documentation/plugins/tag/block.page +29 -0
- data/doc/src/documentation/plugins/tag/breadcrumbtrail.page +29 -0
- data/doc/src/documentation/plugins/tag/date.page +34 -0
- data/doc/src/documentation/plugins/tag/default.page +27 -0
- data/doc/src/documentation/plugins/tag/download.page +60 -0
- data/doc/src/documentation/plugins/tag/executecommand.page +29 -0
- data/doc/src/documentation/plugins/tag/includefile.page +30 -0
- data/doc/src/documentation/plugins/{tags → tag}/langbar.de.page +1 -1
- data/doc/src/documentation/plugins/tag/langbar.fr.page +6 -0
- data/doc/src/documentation/plugins/tag/langbar.page +41 -0
- data/doc/src/documentation/plugins/tag/menu.page +78 -0
- data/doc/src/documentation/plugins/{tags → tag}/meta.page +8 -7
- data/doc/src/documentation/plugins/tag/relocatable.page +46 -0
- data/doc/src/documentation/plugins/tag/resource.page +35 -0
- data/doc/src/documentation/plugins/tag/sitemap.page +35 -0
- data/doc/src/documentation/plugins/tag/wikilink.page +33 -0
- data/doc/src/documentation/references/index.page +0 -1
- data/doc/src/documentation/references/meta_info_reference.page +90 -13
- data/doc/src/documentation/references/parameter_reference.page +0 -1
- data/doc/src/documentation/references/webpage_format.page +249 -0
- data/doc/src/download.page +50 -21
- data/doc/src/examples/gallery_styles/default/default.gallery +78 -0
- data/doc/src/examples/gallery_styles/default/gallery_gallery.template +38 -0
- data/doc/src/examples/gallery_styles/default/gallery_image.template +30 -0
- data/doc/src/examples/gallery_styles/default/gallery_main.template +18 -0
- data/doc/src/examples/gallery_styles/index.page +22 -0
- data/doc/src/examples/gallery_styles/slides/gallery_gallery.template +62 -0
- data/doc/src/examples/gallery_styles/slides/gallery_image.template +53 -0
- data/doc/src/examples/gallery_styles/slides/gallery_main.template +32 -0
- data/doc/src/examples/gallery_styles/slides/slides.gallery +79 -0
- data/doc/src/examples/images/image01.jpg +0 -0
- data/doc/src/examples/images/image02.jpg +0 -0
- data/doc/src/examples/images/image03.jpg +0 -0
- data/doc/src/examples/images/image04.jpg +0 -0
- data/doc/src/examples/images/image05.jpg +0 -0
- data/doc/src/examples/images/image06.jpg +0 -0
- data/doc/src/examples/images/image07.jpg +0 -0
- data/doc/src/examples/images/image08.jpg +0 -0
- data/doc/src/examples/images/image09.jpg +0 -0
- data/doc/src/examples/images/image10.jpg +0 -0
- data/doc/src/examples/images/image11.jpg +0 -0
- data/doc/src/examples/images/image12.jpg +0 -0
- data/doc/src/examples/images/image13.jpg +0 -0
- data/doc/src/examples/images/image14.jpg +0 -0
- data/doc/src/examples/images/image15.jpg +0 -0
- data/doc/src/examples/images/image16.jpg +0 -0
- data/doc/src/examples/images/image17.jpg +0 -0
- data/doc/src/examples/images/image18.jpg +0 -0
- data/doc/src/examples/index.page +18 -0
- data/doc/src/examples/website_styles/1024px.page +5 -0
- data/doc/src/examples/website_styles/andreas00.page +5 -0
- data/doc/src/examples/website_styles/andreas01.page +5 -0
- data/doc/src/examples/website_styles/andreas03.page +5 -0
- data/doc/src/examples/website_styles/andreas04.page +5 -0
- data/doc/src/examples/website_styles/andreas05.page +5 -0
- data/doc/src/examples/website_styles/andreas06.page +5 -0
- data/doc/src/examples/website_styles/andreas07.page +5 -0
- data/doc/src/examples/website_styles/andreas08.page +5 -0
- data/doc/src/examples/website_styles/andreas09.page +5 -0
- data/doc/src/examples/website_styles/default.page +5 -0
- data/doc/src/examples/website_styles/index.page +71 -0
- data/doc/src/examples/website_styles/plain.page +5 -0
- data/doc/src/examples/website_templates/default.page +5 -0
- data/doc/src/examples/website_templates/index.page +24 -0
- data/doc/src/examples/website_templates/personal_hp.page +5 -0
- data/doc/src/examples/website_templates/project.page +5 -0
- data/doc/src/features.page +16 -14
- data/doc/src/images/bodybg.jpg +0 -0
- data/doc/src/images/footerbg.jpg +0 -0
- data/doc/src/images/menuhover.jpg +0 -0
- data/doc/src/images/node_diagram.svg +7132 -0
- data/doc/src/images/thumb_example.jpg +0 -0
- data/doc/src/images/thumb_example_cropped.jpg +0 -0
- data/doc/src/images/thumb_example_normal.jpg +0 -0
- data/doc/src/index.page +14 -102
- data/doc/src/news.page +154 -0
- data/doc/src/plugin.template +10 -0
- data/lib/webgen/cli.rb +427 -0
- data/lib/webgen/composite.rb +11 -11
- data/lib/webgen/config.rb +52 -0
- data/lib/webgen/content.rb +172 -0
- data/lib/webgen/extcommand.rb +23 -0
- data/lib/webgen/languages.rb +110 -0
- data/lib/webgen/listener.rb +1 -1
- data/lib/webgen/node.rb +196 -124
- data/lib/webgen/plugin.rb +480 -144
- data/lib/webgen/plugins/{contenthandlers → contentconverters}/default.rb +10 -9
- data/lib/webgen/plugins/{contenthandlers → contentconverters}/html.rb +11 -8
- data/lib/webgen/plugins/contentconverters/markdown.rb +54 -0
- data/lib/webgen/plugins/{contenthandlers → contentconverters}/rdoc.rb +16 -12
- data/lib/webgen/plugins/{contenthandlers → contentconverters}/textile.rb +18 -13
- data/lib/webgen/plugins/contentconverters/xmlbuilder.rb +58 -0
- data/lib/webgen/plugins/coreplugins/configuration.rb +11 -102
- data/lib/webgen/plugins/coreplugins/resourcemanager.rb +95 -74
- data/lib/webgen/plugins/filehandlers/copy.rb +41 -19
- data/lib/webgen/plugins/filehandlers/directory.rb +52 -50
- data/lib/webgen/plugins/filehandlers/filehandler.rb +370 -123
- data/lib/webgen/plugins/filehandlers/gallery.rb +368 -117
- data/lib/webgen/plugins/filehandlers/page.rb +160 -146
- data/lib/webgen/plugins/filehandlers/template.rb +65 -52
- data/lib/webgen/plugins/htmlvalidators/default.rb +9 -7
- data/lib/webgen/plugins/htmlvalidators/xmllint.rb +17 -33
- data/lib/webgen/plugins/menustyles/default.rb +27 -25
- data/lib/webgen/plugins/menustyles/horizontal.rb +22 -41
- data/lib/webgen/plugins/menustyles/horizontal_dropdown.rb +25 -39
- data/lib/webgen/plugins/menustyles/section.rb +68 -0
- data/lib/webgen/plugins/menustyles/vertical.rb +36 -56
- data/lib/webgen/plugins/menustyles/vertical_dropdown.rb +24 -32
- data/lib/webgen/plugins/miscplugins/smileyreplacer.rb +20 -17
- data/lib/webgen/plugins/miscplugins/syntax_highlighter.rb +72 -0
- data/lib/webgen/plugins/miscplugins/treewalker.rb +9 -36
- data/lib/webgen/plugins/tags/block.rb +65 -0
- data/lib/webgen/plugins/tags/breadcrumbtrail.rb +15 -11
- data/lib/webgen/plugins/tags/date.rb +11 -7
- data/lib/webgen/plugins/tags/download.rb +38 -38
- data/lib/webgen/plugins/tags/executecommand.rb +30 -15
- data/lib/webgen/plugins/tags/includefile.rb +26 -13
- data/lib/webgen/plugins/tags/langbar.rb +23 -18
- data/lib/webgen/plugins/tags/menu.rb +49 -70
- data/lib/webgen/plugins/tags/meta.rb +12 -9
- data/lib/webgen/plugins/tags/relocatable.rb +41 -13
- data/lib/webgen/plugins/tags/sitemap.rb +32 -28
- data/lib/webgen/plugins/tags/tag_processor.rb +279 -0
- data/lib/webgen/plugins/tags/wikilink.rb +25 -20
- data/lib/webgen/test.rb +202 -0
- data/lib/webgen/website.rb +310 -0
- data/test/fixtures/sample_site/src/chained.template +3 -0
- data/test/fixtures/sample_site/src/default.template +3 -0
- data/test/fixtures/sample_site/src/dir1/dir11/file111.de.page +3 -0
- data/test/fixtures/sample_site/src/dir1/dir11/file111.page +3 -0
- data/test/fixtures/sample_site/src/dir1/dir11/index.page +3 -0
- data/test/fixtures/sample_site/src/dir1/file11.page +3 -0
- data/test/fixtures/sample_site/src/dir2/file21.page +3 -0
- data/test/fixtures/sample_site/src/embedded.rhtml +1 -0
- data/test/fixtures/sample_site/src/file1.page +8 -0
- data/test/fixtures/sample_site/src/file2.de.page +6 -0
- data/test/fixtures/sample_site/src/index.de.page +4 -0
- data/test/fixtures/sample_site/src/index.en.page +1 -0
- data/test/fixtures/sample_site/src/invalid.template +3 -0
- data/test/fixtures/sample_site/src/test.jpg +1 -0
- data/test/fixtures/sample_site/src/test.template +3 -0
- data/test/fixtures/tc_content/blocks.yaml +40 -0
- data/test/fixtures/tc_content/correct.yaml +65 -0
- data/test/fixtures/tc_content/incorrect.yaml +42 -0
- data/test/fixtures/tc_filehandler_filehandler/backing/metainfo.yaml +9 -0
- data/test/fixtures/tc_filehandler_filehandler/backing_empty/metainfo.yaml +6 -0
- data/test/fixtures/tc_filehandler_filehandler/sample_plugin.rb +49 -0
- data/test/fixtures/tc_filehandler_filehandler/unmodified +0 -0
- data/test/fixtures/tc_filehandler_gallery/test.gallery +2 -0
- data/test/fixtures/tc_filehandler_gallery/test1.gallery +2 -0
- data/test/fixtures/tc_filehandler_gallery/test1.jpg +0 -0
- data/test/fixtures/tc_filehandler_gallery/test2.jpg +0 -0
- data/test/fixtures/tc_filehandler_gallery/test3.jpg +0 -0
- data/test/fixtures/tc_filehandler_gallery/test4.jpg +0 -0
- data/test/fixtures/tc_filehandler_page/testdata.yaml +10 -0
- data/test/fixtures/tc_menustyles_default/menustyle.rb +7 -0
- data/test/fixtures/tc_node/nodes.yaml +64 -0
- data/test/fixtures/tc_plugin/handlerplugin.rb +15 -0
- data/test/fixtures/tc_plugin/plugin1.rb +33 -0
- data/test/fixtures/tc_plugin/plugin2.rb +8 -0
- data/test/fixtures/tc_tags_includefile/testfile +1 -0
- data/test/fixtures/tc_tags_tag_processor/test_file1 +1 -0
- data/test/fixtures/tc_tags_tag_processor/testtag.rb +17 -0
- data/test/fixtures/tc_website/correct.yaml +6 -0
- data/test/fixtures/tc_website/incorrect_structure.yaml +2 -0
- data/test/fixtures/tc_website/incorrect_yaml.yaml +5 -0
- data/test/fixtures/tc_website/meta_info_test.yaml +10 -0
- data/test/fixtures/tc_website/testdir/README +1 -0
- data/test/fixtures/tc_website/testdir/falsedir/README +1 -0
- data/test/runtests.rb +2 -0
- data/test/unittests/tc_composite.rb +82 -0
- data/test/unittests/tc_config.rb +18 -0
- data/test/unittests/tc_content.rb +88 -0
- data/test/unittests/tc_contentconverters_default.rb +13 -0
- data/test/unittests/tc_contentconverters_html.rb +16 -0
- data/test/unittests/tc_contentconverters_markdown.rb +22 -0
- data/test/unittests/tc_contentconverters_rdoc.rb +16 -0
- data/test/unittests/tc_contentconverters_textile.rb +22 -0
- data/test/unittests/tc_contentconverters_xmlbuilder.rb +22 -0
- data/test/unittests/tc_filehandler_copy.rb +65 -0
- data/test/unittests/tc_filehandler_directory.rb +134 -0
- data/test/unittests/tc_filehandler_filehandler.rb +294 -0
- data/test/unittests/tc_filehandler_gallery.rb +165 -0
- data/test/unittests/tc_filehandler_page.rb +183 -0
- data/test/unittests/tc_filehandler_template.rb +60 -0
- data/test/unittests/tc_htmlvalidators_default.rb +12 -0
- data/test/unittests/tc_htmlvalidators_xmllint.rb +19 -0
- data/test/unittests/tc_languages.rb +57 -0
- data/test/unittests/tc_listener.rb +72 -0
- data/test/unittests/tc_menustyles_default.rb +51 -0
- data/test/unittests/tc_menustyles_horizontal.rb +18 -0
- data/test/unittests/tc_menustyles_horizontal_dropdown.rb +18 -0
- data/test/unittests/tc_menustyles_section.rb +59 -0
- data/test/unittests/tc_menustyles_vertical.rb +79 -0
- data/test/unittests/tc_menustyles_vertical_dropdown.rb +18 -0
- data/test/unittests/tc_node.rb +202 -0
- data/test/unittests/tc_plugin.rb +214 -0
- data/test/unittests/tc_resourcemanager.rb +42 -0
- data/test/unittests/tc_smileyreplacer.rb +25 -0
- data/test/unittests/tc_syntax_highlighter.rb +30 -0
- data/test/unittests/tc_tags_block.rb +27 -0
- data/test/unittests/tc_tags_breadcrumbtrail.rb +22 -0
- data/test/unittests/tc_tags_date.rb +15 -0
- data/test/unittests/tc_tags_download.rb +32 -0
- data/test/unittests/tc_tags_executecommand.rb +37 -0
- data/test/unittests/tc_tags_includefile.rb +53 -0
- data/test/unittests/tc_tags_langbar.rb +42 -0
- data/test/unittests/tc_tags_menu.rb +50 -0
- data/test/unittests/tc_tags_meta.rb +19 -0
- data/test/unittests/tc_tags_relocatable.rb +66 -0
- data/test/unittests/tc_tags_sitemap.rb +33 -0
- data/test/unittests/tc_tags_tag_processor.rb +107 -0
- data/test/unittests/tc_tags_wikilink.rb +22 -0
- data/test/unittests/tc_treewalker.rb +44 -0
- data/test/unittests/tc_website.rb +188 -0
- metadata +829 -312
- data/bin/webgen-gallery-editor +0 -654
- data/bin/webgen-gui +0 -10
- data/data/webgen/website_templates/default/config.yaml +0 -2
- data/doc/plugin/clidesc.rb +0 -46
- data/doc/plugin/source.rb +0 -21
- data/doc/src/about.page +0 -22
- data/doc/src/documentation/cli.page +0 -12
- data/doc/src/documentation/plugins/contenthandlers/html.page +0 -11
- data/doc/src/documentation/plugins/contenthandlers/index.page +0 -7
- data/doc/src/documentation/plugins/contenthandlers/markdown.page +0 -11
- data/doc/src/documentation/plugins/contenthandlers/rdoc.page +0 -11
- data/doc/src/documentation/plugins/contenthandlers/textile.page +0 -11
- data/doc/src/documentation/plugins/coreplugins/configuration.page +0 -12
- data/doc/src/documentation/plugins/coreplugins/index.page +0 -7
- data/doc/src/documentation/plugins/coreplugins/logging.page +0 -13
- data/doc/src/documentation/plugins/coreplugins/resourcemanager.page +0 -34
- data/doc/src/documentation/plugins/filehandlers/backing.page +0 -46
- data/doc/src/documentation/plugins/filehandlers/copy.page +0 -12
- data/doc/src/documentation/plugins/filehandlers/directoryhandler.page +0 -35
- data/doc/src/documentation/plugins/filehandlers/gallery.page +0 -86
- data/doc/src/documentation/plugins/filehandlers/index.page +0 -34
- data/doc/src/documentation/plugins/filehandlers/page.page +0 -170
- data/doc/src/documentation/plugins/filehandlers/template.page +0 -21
- data/doc/src/documentation/plugins/gallerylayouters/index.page +0 -18
- data/doc/src/documentation/plugins/htmlvalidators/index.page +0 -6
- data/doc/src/documentation/plugins/htmlvalidators/xmllint.page +0 -14
- data/doc/src/documentation/plugins/menustyles/horizontal.page +0 -21
- data/doc/src/documentation/plugins/menustyles/index.page +0 -12
- data/doc/src/documentation/plugins/menustyles/partial.page +0 -27
- data/doc/src/documentation/plugins/menustyles/vertical.page +0 -32
- data/doc/src/documentation/plugins/menustyles/verticaldropdown.page +0 -23
- data/doc/src/documentation/plugins/miscplugins/index.page +0 -7
- data/doc/src/documentation/plugins/tags/breadcrumbtrail.page +0 -20
- data/doc/src/documentation/plugins/tags/date.page +0 -19
- data/doc/src/documentation/plugins/tags/download.page +0 -23
- data/doc/src/documentation/plugins/tags/executecommand.page +0 -18
- data/doc/src/documentation/plugins/tags/includefile.page +0 -15
- data/doc/src/documentation/plugins/tags/index.page +0 -44
- data/doc/src/documentation/plugins/tags/langbar.page +0 -27
- data/doc/src/documentation/plugins/tags/menu.de.page +0 -12
- data/doc/src/documentation/plugins/tags/menu.page +0 -19
- data/doc/src/documentation/plugins/tags/multilang.de.page +0 -4
- data/doc/src/documentation/plugins/tags/multilang.fr.page +0 -4
- data/doc/src/documentation/plugins/tags/multilang.page +0 -4
- data/doc/src/documentation/plugins/tags/relocatable.page +0 -16
- data/doc/src/documentation/plugins/tags/resource.page +0 -22
- data/doc/src/documentation/plugins/tags/sitemap.page +0 -17
- data/doc/src/documentation/plugins/tags/wikilink.page +0 -18
- data/doc/src/documentation/webgen_gallery_editor.page +0 -82
- 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/meta.info +0 -30
- data/doc/src/screenshots.gallery +0 -33
- data/install.rb +0 -19
- data/lib/webgen.rb +0 -277
- data/lib/webgen/plugins/contenthandlers/markdown.rb +0 -50
- data/lib/webgen/plugins/coreplugins/logging.rb +0 -101
- data/lib/webgen/plugins/filehandlers/backing.rb +0 -159
- data/lib/webgen/plugins/gallerylayouters/default.rb +0 -152
- data/lib/webgen/plugins/menustyles/partial.rb +0 -95
- data/lib/webgen/plugins/tags/tags.rb +0 -254
@@ -1,7 +1,7 @@
|
|
1
1
|
#
|
2
2
|
#--
|
3
3
|
#
|
4
|
-
# $Id: gallery.rb
|
4
|
+
# $Id: gallery.rb 569 2006-12-29 20:11:21Z thomas $
|
5
5
|
#
|
6
6
|
# webgen: template based static website generator
|
7
7
|
# Copyright (C) 2004 Thomas Leitner
|
@@ -20,49 +20,236 @@
|
|
20
20
|
#++
|
21
21
|
#
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
|
23
|
+
load_plugin 'webgen/plugins/filehandlers/filehandler'
|
24
|
+
load_plugin 'webgen/plugins/filehandlers/directory'
|
25
|
+
load_plugin 'webgen/plugins/filehandlers/page'
|
26
|
+
|
27
|
+
load_optional_part( 'gallery-exif',
|
28
|
+
:needed_gems => ['exifr'],
|
29
|
+
:error_msg => 'EXIF library could not be loaded',
|
30
|
+
:info => 'EXIF information will be available for each image' ) do
|
31
|
+
|
32
|
+
require 'exifr'
|
33
|
+
|
34
|
+
end
|
35
|
+
|
26
36
|
|
27
37
|
module FileHandlers
|
28
38
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
39
|
+
# Handles image gallery files.
|
40
|
+
class GalleryHandler < DefaultHandler
|
41
|
+
|
42
|
+
# Objects of this class represent a whole image gallery and are available in all image gallery
|
43
|
+
# page files.
|
44
|
+
class GalleryInfo
|
45
|
+
|
46
|
+
# A helper module that allows acessing and changing data via the bracket notation.
|
47
|
+
module KeyAccess
|
48
|
+
|
49
|
+
def []( key )
|
50
|
+
@data[key]
|
51
|
+
end
|
52
|
+
|
53
|
+
def []=( key, value )
|
54
|
+
@data[key] = value
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
# A helper module which declares common attributes for gallery pages.
|
60
|
+
module ItemHelper
|
61
|
+
|
62
|
+
include KeyAccess
|
63
|
+
|
64
|
+
# The name of the page.
|
65
|
+
attr_accessor :pagename
|
66
|
+
|
67
|
+
# The title of the page.
|
68
|
+
attr_reader :title
|
69
|
+
|
70
|
+
# Meta data for the page.
|
71
|
+
attr_reader :data
|
72
|
+
|
73
|
+
def initialize( pagename, data )
|
74
|
+
@pagename = pagename
|
75
|
+
@title = data['title']
|
76
|
+
@data = data
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
|
81
|
+
|
82
|
+
# Represents the main page of an image gallery.
|
83
|
+
class MainPage; include ItemHelper; end
|
84
|
+
|
85
|
+
# Represents an image gallery page.
|
86
|
+
class Gallery
|
87
|
+
|
88
|
+
include ItemHelper
|
89
|
+
|
90
|
+
# A list of images for this gallery.
|
91
|
+
attr_reader :images
|
92
|
+
|
93
|
+
def initialize( pagename, data, images )
|
94
|
+
super( pagename, data )
|
95
|
+
@images = images
|
96
|
+
end
|
97
|
+
|
98
|
+
# Returns the thumbnail image tag for the gallery.
|
99
|
+
def thumbnail( attr = {} )
|
100
|
+
@images.first.thumbnail( attr )
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
104
|
+
|
105
|
+
# Represents an image page.
|
106
|
+
class Image
|
107
|
+
|
108
|
+
include ItemHelper
|
109
|
+
|
110
|
+
# The name of the image file.
|
111
|
+
attr_reader :filename
|
112
|
+
|
113
|
+
def initialize( pagename, data, filename )
|
114
|
+
super( pagename, data )
|
115
|
+
@filename = filename
|
116
|
+
end
|
117
|
+
|
118
|
+
# Returns the thumbnail image tag for the image.
|
119
|
+
def thumbnail( attr = {} )
|
120
|
+
attr = attr.collect {|k,v| "#{k}='#{v}'"}.join( ' ' )
|
121
|
+
if !@data['thumbnail'].to_s.empty? && @data['thumbnail'] != @filename
|
122
|
+
"<img src=\"{relocatable: #{@data['thumbnail']}}\" alt=\"#{@title}\" #{attr}/>"
|
123
|
+
else
|
124
|
+
width, height = (@data['thumbnailSize'] || '').split('x')
|
125
|
+
"<img src=\"{relocatable: #{@filename}}\" width=\"#{width}\" height=\"#{height}\" alt=\"#{@title}\" #{attr}/>"
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
end
|
130
|
+
|
131
|
+
include KeyAccess
|
132
|
+
|
133
|
+
# The index for the current gallery or +nil+ if there is no current gallery.
|
134
|
+
attr_reader :gIndex
|
135
|
+
|
136
|
+
# The index for the current image in the current gallery or +nil+ if there is no current image.
|
137
|
+
attr_reader :iIndex
|
138
|
+
|
139
|
+
# The main page object if it exists; otherwise +nil+.
|
140
|
+
attr_accessor :mainpage
|
141
|
+
|
142
|
+
# The whole data hahs for the image gallery.
|
143
|
+
attr_reader :data
|
144
|
+
|
145
|
+
def initialize( gallery_data, gIndex = nil, iIndex = nil )
|
146
|
+
@data = gallery_data
|
147
|
+
@gIndex = gIndex
|
148
|
+
@iIndex = iIndex
|
149
|
+
end
|
150
|
+
|
151
|
+
# Returns the list of gallery objects for this image gallery.
|
152
|
+
def galleries
|
153
|
+
@data[:galleries]
|
154
|
+
end
|
155
|
+
|
156
|
+
# Returns the current image.
|
157
|
+
def cur_image
|
158
|
+
galleries[@gIndex].images[@iIndex]
|
159
|
+
end
|
160
|
+
|
161
|
+
# Returns the previous image using the given +gIndex+ and +iIndex+, if it exists, or +nil+ otherwise.
|
162
|
+
def prev_image( gIndex = @gIndex, iIndex = @iIndex )
|
163
|
+
result = nil
|
164
|
+
if gIndex != 0 || iIndex != 0
|
165
|
+
if iIndex == 0
|
166
|
+
result = galleries[gIndex - 1].images[galleries[gIndex - 1].images.length - 1]
|
167
|
+
else
|
168
|
+
result = galleries[gIndex].images[iIndex - 1]
|
169
|
+
end
|
170
|
+
end
|
171
|
+
return result
|
172
|
+
end
|
173
|
+
|
174
|
+
# Returns the next image using the given +gIndex+ and +iIndex+, if it exists, or +nil+ otherwise.
|
175
|
+
def next_image( gIndex = @gIndex, iIndex = @iIndex )
|
176
|
+
result = nil
|
177
|
+
if gIndex != galleries.length - 1 || iIndex != galleries[gIndex].images.length - 1
|
178
|
+
if iIndex == galleries[gIndex].images.length - 1
|
179
|
+
result = galleries[gIndex + 1].images[0]
|
180
|
+
else
|
181
|
+
result = galleries[gIndex].images[iIndex + 1]
|
182
|
+
end
|
183
|
+
end
|
184
|
+
return result
|
185
|
+
end
|
186
|
+
|
187
|
+
# Returns the current gallery.
|
188
|
+
def cur_gallery
|
189
|
+
galleries[@gIndex]
|
190
|
+
end
|
191
|
+
|
192
|
+
# Returns the previous gallery using the given +gIndex+, if it exists, or +nil+ otherwise.
|
193
|
+
def prev_gallery( gIndex = @gIndex )
|
194
|
+
gIndex != 0 ? galleries[gIndex - 1] : nil
|
195
|
+
end
|
196
|
+
|
197
|
+
# Returns the next gallery using the given +gIndex+, if it exists, or +nil+ otherwise.
|
198
|
+
def next_gallery( gIndex = @gIndex )
|
199
|
+
gIndex != galleries.length - 1 ? galleries[gIndex + 1] : nil
|
200
|
+
end
|
201
|
+
|
202
|
+
end
|
203
|
+
|
204
|
+
infos( :name => 'File/GalleryHandler',
|
205
|
+
:author => Webgen::AUTHOR,
|
206
|
+
:summary => "Handles images gallery files"
|
207
|
+
)
|
208
|
+
|
209
|
+
register_extension 'gallery'
|
210
|
+
|
211
|
+
param "imagesPerPage", 20, 'Number of images per gallery page'
|
212
|
+
param "galleryPageTemplate", 'gallery_gallery.template', 'The template for gallery pages. ' +
|
213
|
+
'If nil or a not existing file is specified, the default template is used.'
|
214
|
+
param "imagePageTemplate", 'gallery_image.template', 'The template for image pages. ' +
|
215
|
+
'If nil or a not existing file is specified, the default template is used.'
|
216
|
+
param "mainPageTemplate", 'gallery_main.template', 'The template for the main page. ' +
|
217
|
+
'If nil or a not existing file is specified, the default template is used.'
|
218
|
+
param "images", 'images/**/*.jpg', 'The path pattern for specifying the image files'
|
219
|
+
|
220
|
+
|
221
|
+
def initialize( plugin_manager )
|
222
|
+
super
|
223
|
+
@filedata = {}
|
224
|
+
end
|
225
|
+
|
226
|
+
def create_node( file, parent, meta_info )
|
227
|
+
@filedata = {}
|
228
|
+
@imagedata = {}
|
48
229
|
begin
|
49
|
-
|
230
|
+
filedata = []
|
231
|
+
YAML::load_documents( File.read( file ) ) {|d| filedata << d}
|
232
|
+
@filedata = filedata[0] if filedata[0].kind_of?( Hash )
|
233
|
+
@imagedata = filedata[1] if filedata[1].kind_of?( Hash )
|
50
234
|
rescue
|
51
|
-
|
235
|
+
log(:error) { "Could not parse gallery file <#{file}>, not creating gallery pages" }
|
52
236
|
return
|
53
237
|
end
|
238
|
+
|
54
239
|
@path = File.dirname( file )
|
55
|
-
images = Dir[File.join( @path,
|
240
|
+
images = Dir[File.join( @path, param( 'images' ))].collect {|i| i.sub( /#{@path + File::SEPARATOR}/, '' ) }
|
56
241
|
images.sort! do |a,b|
|
57
|
-
aoi = @
|
58
|
-
boi = @
|
59
|
-
atitle = @
|
60
|
-
btitle = @
|
242
|
+
aoi = @imagedata[a].nil? ? 0 : @imagedata[a]['orderInfo'].to_s.to_i || 0
|
243
|
+
boi = @imagedata[b].nil? ? 0 : @imagedata[b]['orderInfo'].to_s.to_i || 0
|
244
|
+
atitle = @imagedata[a].nil? ? a : @imagedata[a]['title'] || a
|
245
|
+
btitle = @imagedata[b].nil? ? b : @imagedata[b]['title'] || b
|
61
246
|
(aoi == boi ? atitle <=> btitle : aoi <=> boi)
|
62
247
|
end
|
63
|
-
self.logger.info { "Creating gallery for file <#{file}> with #{images.length} images" }
|
64
248
|
|
65
|
-
|
249
|
+
@filedata['title'] ||= File.basename( file, '.*' ).capitalize
|
250
|
+
log(:info) { "Creating gallery for file <#{file}> with #{images.length} images" }
|
251
|
+
ginfo = create_gallery( images, parent )
|
252
|
+
@plugin_manager["GalleryLayouter/#{@filedata['layouter']}"].handle_gallery( ginfo, parent ) if @filedata.has_key?('layouter') && @plugin_manager["GalleryLayouter/#{@filedata['layouter']}"]
|
66
253
|
|
67
254
|
nil
|
68
255
|
end
|
@@ -76,150 +263,214 @@ module FileHandlers
|
|
76
263
|
#######
|
77
264
|
|
78
265
|
# Method overridden to lookup parameters specified in the gallery file first.
|
79
|
-
def
|
266
|
+
def param( name, plugin = nil )
|
80
267
|
( @filedata.has_key?( name ) ? @filedata[name] : super )
|
81
268
|
end
|
82
269
|
|
83
|
-
def
|
84
|
-
content = Webgen::Plugin['DefaultGalleryLayouter'].get_layout( get_param( 'layout' ) ).send( type.to_s, *args )
|
270
|
+
def page_data( metainfo )
|
85
271
|
temp = metainfo.to_yaml
|
86
|
-
temp = "---\n" + temp unless /^---\s
|
87
|
-
"#{temp}\n---\n
|
272
|
+
temp = "---\n" + temp unless /^---\s*$/ =~ temp
|
273
|
+
"#{temp}\n---\n"
|
274
|
+
end
|
275
|
+
|
276
|
+
def create_page_node( filename, parent, data )
|
277
|
+
filehandler = @plugin_manager['Core/FileHandler']
|
278
|
+
pagehandler = @plugin_manager['File/PageHandler']
|
279
|
+
filehandler.create_node( filename, parent, pagehandler ) do |filename, parent, handler, meta_info|
|
280
|
+
pagehandler.create_node_from_data( filename, parent, data, meta_info )
|
281
|
+
end
|
88
282
|
end
|
89
283
|
|
90
284
|
def create_gallery( images, parent )
|
91
|
-
|
92
|
-
|
285
|
+
main_data = main_page_data()
|
286
|
+
galleries = create_gallery_pages( images, parent )
|
93
287
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
288
|
+
info_galleries = galleries.collect {|n,g,i| g}
|
289
|
+
main_page_used = images.length > param( 'imagesPerPage' )
|
290
|
+
|
291
|
+
gallery_data = @filedata.dup
|
292
|
+
gallery_data[:galleries] = info_galleries
|
293
|
+
gallery_data['imagesPerPage'] = param('imagesPerPage'),
|
294
|
+
|
295
|
+
if main_page_used
|
296
|
+
main_node = create_page_node( gallery_file_name( main_data['title'] ), parent, page_data( main_data ) )
|
297
|
+
main_page = GalleryInfo::MainPage.new( main_node.path, main_data )
|
298
|
+
main_node.node_info[:ginfo] = GalleryInfo.new( gallery_data )
|
299
|
+
main_node.node_info[:ginfo].mainpage = main_page
|
300
|
+
end
|
301
|
+
|
302
|
+
galleries.each_with_index do |gData, gIndex|
|
303
|
+
gData[0].node_info[:ginfo] = GalleryInfo.new( gallery_data, gIndex )
|
304
|
+
gData[0].node_info[:ginfo].mainpage = main_page if main_page_used
|
305
|
+
gData[2].each_with_index do |iData, iIndex|
|
306
|
+
iData[0].node_info[:ginfo] = GalleryInfo.new( gallery_data, gIndex, iIndex )
|
307
|
+
iData[0].node_info[:ginfo].mainpage = main_page if main_page_used
|
110
308
|
end
|
111
309
|
end
|
310
|
+
|
311
|
+
GalleryInfo.new( gallery_data )
|
112
312
|
end
|
113
313
|
|
114
|
-
def
|
314
|
+
def main_page_data
|
115
315
|
main = {}
|
116
|
-
main['title'] =
|
117
|
-
main['
|
118
|
-
main['
|
119
|
-
main['srcName'] = gallery_file_name( main['title'] )
|
120
|
-
main['blocks'] = [{'name'=>'content', 'format'=>'html'}]
|
121
|
-
main.update( @filedata['mainPage'] || {} )
|
316
|
+
main['title'] = @filedata['title']
|
317
|
+
main['template'] = param( 'mainPageTemplate' )
|
318
|
+
main.update( @filedata['mainPageMetaInfo'] || {} )
|
122
319
|
main
|
123
320
|
end
|
124
321
|
|
125
322
|
def create_gallery_pages( images, parent )
|
126
323
|
galleries = []
|
127
|
-
picsPerPage =
|
324
|
+
picsPerPage = param( 'imagesPerPage' )
|
128
325
|
0.step( images.length - 1, picsPerPage ) do |i|
|
129
|
-
|
326
|
+
gIndex = i/picsPerPage + 1
|
327
|
+
|
328
|
+
data = (@filedata['galleryPagesMetaInfo'] || {}).dup
|
329
|
+
data['template'] ||= param( 'galleryPageTemplate' )
|
330
|
+
data['orderInfo'] += gIndex if data['orderInfo']
|
331
|
+
data['title'] = @filedata['title'] + ' ' + gIndex.to_s
|
130
332
|
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
data['title'] = gallery_title( data['number'] )
|
137
|
-
data['srcName'] = gallery_file_name( data['title'] )
|
138
|
-
data['imageList'] = create_image_pages( images[i..(i + picsPerPage - 1)], parent )
|
333
|
+
if images.length <= param( 'imagesPerPage' ) && gIndex == 1
|
334
|
+
template = data['template']
|
335
|
+
data.update( main_page_data )
|
336
|
+
data['template'] = template
|
337
|
+
end
|
139
338
|
|
140
|
-
|
339
|
+
node = create_page_node( gallery_file_name( data['title'] ), parent, page_data( data ) )
|
340
|
+
gal_images = create_image_pages( images[i..(i + picsPerPage - 1)], parent )
|
341
|
+
gallery = GalleryInfo::Gallery.new( node.path, data, gal_images.collect {|n,i| i} )
|
342
|
+
galleries << [node, gallery, gal_images]
|
141
343
|
end
|
142
344
|
galleries
|
143
345
|
end
|
144
346
|
|
145
|
-
def gallery_title( index )
|
146
|
-
( index.nil? ? nil : get_param( 'title' ) + ' ' + index.to_s )
|
147
|
-
end
|
148
|
-
|
149
347
|
def gallery_file_name( title )
|
150
|
-
( title.nil? ? nil : title.tr( '
|
348
|
+
( title.nil? ? nil : title.tr( '/ .\\', '_' ) + '.page' )
|
151
349
|
end
|
152
350
|
|
153
351
|
def create_image_pages( images, parent )
|
154
352
|
imageList = []
|
155
353
|
images.each do |image|
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
354
|
+
data = (@imagedata[image] || {}).dup
|
355
|
+
data['template'] ||= param( 'imagePageTemplate' )
|
356
|
+
data['title'] ||= "Image #{File.basename( image )}"
|
357
|
+
data['thumbnailSize'] ||= @filedata['thumbnailSize']
|
358
|
+
data['thumbnailResizeMethod'] ||= @filedata['thumbnailResizeMethod']
|
359
|
+
data['exif'] ||= exif_data( File.join( parent.node_info[:src], image ) )
|
360
|
+
|
361
|
+
if @filedata.has_key?('layouter') && @plugin_manager["GalleryLayouter/#{@filedata['layouter']}"].respond_to?( :thumbnail_for )
|
362
|
+
data['thumbnail'] ||= @plugin_manager["GalleryLayouter/#{@filedata['layouter']}"].thumbnail_for( image, data, parent )
|
363
|
+
else
|
364
|
+
data['thumbnail'] ||= thumbnail_for( image, data, parent )
|
365
|
+
end
|
167
366
|
|
168
|
-
|
367
|
+
filename = @filedata['title'] + ' ' + image
|
368
|
+
node = create_page_node( gallery_file_name( filename ), parent, page_data( data ) )
|
369
|
+
image = GalleryInfo::Image.new( node.path, data, image )
|
370
|
+
imageList << [node, image]
|
169
371
|
end
|
170
372
|
imageList
|
171
373
|
end
|
172
374
|
|
173
|
-
def
|
174
|
-
|
375
|
+
def exif_data( image )
|
376
|
+
if @plugin_manager.optional_part( 'gallery-exif' )[:loaded]
|
377
|
+
jpeg = EXIFR::JPEG.new( image ) rescue nil
|
378
|
+
if !jpeg.nil? && jpeg.exif?
|
379
|
+
exif = jpeg.exif.dup
|
380
|
+
exif[:width] = jpeg.width
|
381
|
+
exif[:height] = jpeg.height
|
382
|
+
exif[:comment] = jpeg.comment
|
383
|
+
exif[:bits] = jpeg.bits
|
384
|
+
exif
|
385
|
+
else
|
386
|
+
nil
|
387
|
+
end
|
388
|
+
else
|
389
|
+
nil
|
390
|
+
end
|
391
|
+
end
|
392
|
+
|
393
|
+
def thumbnail_for( image, data, parent )
|
394
|
+
image
|
175
395
|
end
|
176
396
|
|
177
397
|
end
|
178
398
|
|
179
399
|
# Try to use RMagick as thumbnail creator
|
180
|
-
|
181
|
-
|
400
|
+
load_optional_part( 'gallery-thumbnail',
|
401
|
+
:error_msg => "Could not load RMagick, creation of thumbnails not available",
|
402
|
+
:needed_gems => ['rmagick'],
|
403
|
+
:info => 'RMagick will be used to create thumbnails for the images used in an image gallery.' ) do
|
182
404
|
|
183
|
-
|
405
|
+
require 'RMagick'
|
184
406
|
|
185
|
-
|
186
|
-
def get_thumbnail( imageData, parent )
|
187
|
-
p_node = Webgen::Plugin['DirectoryHandler'].recursive_create_path( File.dirname( imageData['imageFilename'] ), parent )
|
188
|
-
node = Webgen::Plugin['ThumbnailWriter'].create_node( File.join( @path, imageData['imageFilename'] ), p_node, imageData['thumbnailSize'] )
|
189
|
-
p_node.add_child( node )
|
407
|
+
class GalleryHandler
|
190
408
|
|
191
|
-
|
409
|
+
remove_method :thumbnail_for
|
410
|
+
def thumbnail_for( image, data, parent )
|
411
|
+
parent_node = @plugin_manager['File/DirectoryHandler'].recursive_create_path( File.dirname( image ), parent )
|
412
|
+
tn_handler = @plugin_manager['File/ThumbnailWriter']
|
413
|
+
file_handler = @plugin_manager['Core/FileHandler']
|
414
|
+
node = file_handler.create_node( File.basename( image ), parent_node, tn_handler ) do |fn, parent, h, mi|
|
415
|
+
h.create_node( fn, parent, mi, data['thumbnailSize'], data['thumbnailResizeMethod'] )
|
416
|
+
end
|
417
|
+
node.absolute_path
|
192
418
|
end
|
193
419
|
|
194
420
|
end
|
195
421
|
|
196
|
-
class ThumbnailWriter < DefaultFileHandler
|
197
422
|
|
198
|
-
|
199
|
-
|
423
|
+
# Used for creating thumbnails for images.
|
424
|
+
class ThumbnailWriter < DefaultHandler
|
425
|
+
|
426
|
+
infos( :name => 'File/ThumbnailWriter',
|
427
|
+
:author => Webgen::AUTHOR,
|
428
|
+
:summary => "Writes out thumbnails with RMagick"
|
429
|
+
)
|
200
430
|
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
431
|
+
param "thumbnailSize", "100x100", "The size of the thumbnails"
|
432
|
+
param 'resizeMethod', :normal, 'Specifies the algorithm which should be used for generating the thumbnail: ' +
|
433
|
+
':normal (thumbnail fits exactly into given thumbnail size), ' +
|
434
|
+
':cropped (resized to exact thumbnail size, image parts maybe cropped)'
|
435
|
+
|
436
|
+
def create_node( file, parent, meta_info, thumbnailSize = nil, method = nil )
|
437
|
+
node = Node.new( parent, 'tn_' + File.basename( file ).tr( ' ', '_' ) )
|
438
|
+
node.meta_info.update( meta_info )
|
439
|
+
node['title'] = node.path
|
440
|
+
node.node_info[:thumbnail_size] = thumbnailSize || param( 'thumbnailSize' )
|
441
|
+
node.node_info[:thumbnail_file] = file
|
442
|
+
node.node_info[:thumbnail_resize_method] = method || param( 'resizeMethod' )
|
443
|
+
node.node_info[:processor] = self
|
207
444
|
node
|
208
445
|
end
|
209
446
|
|
210
447
|
def write_node( node )
|
211
|
-
if
|
212
|
-
|
213
|
-
image = Magick::ImageList.new( node[
|
214
|
-
|
215
|
-
|
448
|
+
if @plugin_manager['Core/FileHandler'].file_modified?( node.node_info[:thumbnail_file], node.full_path )
|
449
|
+
log(:info) {"Creating thumbnail <#{node.full_path}> from image <#{node.node_info[:thumbnail_file]}>"}
|
450
|
+
image = Magick::ImageList.new( node.node_info[:thumbnail_file] ).first
|
451
|
+
case node.node_info[:thumbnail_resize_method]
|
452
|
+
when :cropped then cropped_thumbnail( image, node.node_info[:thumbnail_size] )
|
453
|
+
when :normal then normal_thumbnail( image, node.node_info[:thumbnail_size] )
|
454
|
+
else
|
455
|
+
log(:warn) {"Invalid resize method specified (#{node.node_info[:thumbnail_resize_method].inspect}), falling back to :normal"}
|
456
|
+
normal_thumbnail( image, node.node_info[:thumbnail_size] )
|
457
|
+
end
|
458
|
+
image.write( node.full_path )
|
216
459
|
end
|
217
460
|
end
|
218
461
|
|
462
|
+
private
|
463
|
+
|
464
|
+
def normal_thumbnail( image, size )
|
465
|
+
image.change_geometry( size ) {|c,r,i| i.resize!( c, r )}
|
466
|
+
end
|
467
|
+
|
468
|
+
def cropped_thumbnail( image, size )
|
469
|
+
image.crop_resized!( *size.split('x').collect {|s| s.to_i} )
|
470
|
+
end
|
471
|
+
|
219
472
|
end
|
220
473
|
|
221
|
-
rescue LoadError => e
|
222
|
-
self.logger.warn { "Could not load RMagick, creation of thumbnails not available" }
|
223
474
|
end
|
224
475
|
|
225
476
|
end
|