webgen 0.4.7 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/AUTHORS +5 -0
- data/COPYING +8 -338
- data/GPL +340 -0
- data/Rakefile +188 -445
- data/THANKS +7 -22
- data/VERSION +1 -1
- data/bin/webgen +6 -1
- data/data/webgen/resources.yaml +3 -0
- data/data/webgen/website_skeleton/README +10 -0
- data/data/webgen/website_skeleton/Rakefile +40 -0
- data/data/webgen/website_skeleton/config.yaml +17 -0
- data/data/webgen/website_styles/1024px/{default.css → src/default.css} +0 -0
- data/data/webgen/website_styles/1024px/{default.template → src/default.template} +3 -5
- data/data/webgen/website_styles/1024px/{images → src/images}/background.gif +0 -0
- data/data/webgen/website_styles/andreas00/{default.css → src/default.css} +0 -0
- data/{doc/examples → data/webgen}/website_styles/andreas00/src/default.template +3 -5
- data/data/webgen/website_styles/andreas00/{images → src/images}/bg.gif +0 -0
- data/data/webgen/website_styles/andreas00/{images → src/images}/front.jpg +0 -0
- data/data/webgen/website_styles/andreas00/{images → src/images}/menubg.gif +0 -0
- data/data/webgen/website_styles/andreas00/{images → src/images}/menubg2.gif +0 -0
- data/data/webgen/website_styles/andreas01/{default.css → src/default.css} +0 -0
- data/{doc/examples → data/webgen}/website_styles/andreas01/src/default.template +3 -5
- data/data/webgen/website_styles/andreas01/{images → src/images}/bg.gif +0 -0
- data/data/webgen/website_styles/andreas01/{images → src/images}/front.jpg +0 -0
- data/data/webgen/website_styles/andreas01/{print.css → src/print.css} +0 -0
- data/data/webgen/website_styles/andreas03/{default.css → src/default.css} +0 -0
- data/data/webgen/website_styles/andreas03/{default.template → src/default.template} +2 -4
- data/data/webgen/website_styles/andreas03/{images → src/images}/bodybg.png +0 -0
- data/data/webgen/website_styles/andreas03/{images → src/images}/contbg.png +0 -0
- data/data/webgen/website_styles/andreas03/{images → src/images}/footerbg.png +0 -0
- data/data/webgen/website_styles/andreas03/{images → src/images}/gradient1.png +0 -0
- data/data/webgen/website_styles/andreas03/{images → src/images}/gradient2.png +0 -0
- data/data/webgen/website_styles/andreas04/{default.css → src/default.css} +0 -0
- data/data/webgen/website_styles/andreas04/{default.template → src/default.template} +2 -4
- data/data/webgen/website_styles/andreas04/{images → src/images}/blinkarrow.gif +0 -0
- data/data/webgen/website_styles/andreas04/{images → src/images}/bodybg.png +0 -0
- data/data/webgen/website_styles/andreas04/{images → src/images}/contentbg.png +0 -0
- data/data/webgen/website_styles/andreas04/{images → src/images}/entrybg.png +0 -0
- data/data/webgen/website_styles/andreas04/{images → src/images}/flash.gif +0 -0
- data/data/webgen/website_styles/andreas04/{images → src/images}/flash2.gif +0 -0
- data/data/webgen/website_styles/andreas04/{images → src/images}/globe.gif +0 -0
- data/data/webgen/website_styles/andreas04/{images → src/images}/globebottom.gif +0 -0
- data/data/webgen/website_styles/andreas04/{images → src/images}/linkarrow.gif +0 -0
- data/data/webgen/website_styles/andreas04/{images → src/images}/menuhover.png +0 -0
- data/data/webgen/website_styles/andreas05/{default.css → src/default.css} +0 -0
- data/data/webgen/website_styles/andreas05/{default.template → src/default.template} +2 -4
- data/data/webgen/website_styles/andreas05/{images → src/images}/bodybg.gif +0 -0
- data/data/webgen/website_styles/andreas05/{images → src/images}/front.png +0 -0
- data/data/webgen/website_styles/andreas06/{default.css → src/default.css} +0 -0
- data/{doc/examples → data/webgen}/website_styles/andreas06/src/default.template +4 -6
- data/data/webgen/website_styles/andreas06/{images → src/images}/bodybg.gif +0 -0
- data/data/webgen/website_styles/andreas06/{images → src/images}/boxbg.gif +0 -0
- data/data/webgen/website_styles/andreas06/{images → src/images}/greypx.gif +0 -0
- data/data/webgen/website_styles/andreas06/{images → src/images}/header.jpg +0 -0
- data/data/webgen/website_styles/andreas06/{images → src/images}/innerbg.gif +0 -0
- data/data/webgen/website_styles/andreas06/{images → src/images}/leaves.jpg +0 -0
- data/data/webgen/website_styles/andreas06/{images → src/images}/tabs.gif +0 -0
- data/data/webgen/website_styles/andreas07/{browserfix.css → src/browserfix.css} +0 -0
- data/data/webgen/website_styles/andreas07/{default.css → src/default.css} +0 -0
- data/{doc/examples → data/webgen}/website_styles/andreas07/src/default.template +2 -4
- data/data/webgen/website_styles/andreas07/{images → src/images}/bodybg.gif +0 -0
- data/data/webgen/website_styles/andreas07/{images → src/images}/sidebarbg.gif +0 -0
- data/data/webgen/website_styles/andreas08/{default.css → src/default.css} +0 -0
- data/{doc/examples → data/webgen}/website_styles/andreas08/src/default.template +3 -5
- data/data/webgen/website_styles/andreas09/{default.css → src/default.css} +0 -0
- data/data/webgen/website_styles/andreas09/{default.template → src/default.template} +4 -6
- data/data/webgen/website_styles/andreas09/{images → src/images}/bodybg-black.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/bodybg-green.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/bodybg-orange.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/bodybg-purple.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/bodybg-red.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/bodybg.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/footerbg.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/menuhover-black.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/menuhover-green.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/menuhover-orange.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/menuhover-purple.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/menuhover-red.jpg +0 -0
- data/data/webgen/website_styles/andreas09/{images → src/images}/menuhover.jpg +0 -0
- data/data/webgen/website_styles/{default → simple}/README +0 -0
- data/data/webgen/website_styles/{default → simple/src}/default.css +0 -0
- data/{doc/examples/website_styles/default → data/webgen/website_styles/simple}/src/default.template +3 -5
- data/data/webgen/website_templates/default/README +0 -2
- data/data/webgen/website_templates/default/src/index.page +3 -3
- data/data/webgen/website_templates/project/README +0 -4
- data/data/webgen/website_templates/project/src/about.page +5 -5
- data/data/webgen/website_templates/project/src/download.page +3 -3
- data/data/webgen/website_templates/project/src/features.page +3 -3
- data/data/webgen/website_templates/project/src/index.page +4 -4
- data/data/webgen/website_templates/project/src/screenshots.page +5 -5
- data/doc/contentprocessor/erb.page +38 -0
- data/doc/contentprocessor/tags.page +61 -0
- data/doc/extensions.page +11 -0
- data/doc/faq.page +177 -0
- data/doc/getting_started.page +130 -0
- data/doc/index.page +50 -0
- data/doc/manual.page +356 -0
- data/doc/reference_configuration.page +328 -0
- data/doc/reference_metainfo.page +128 -0
- data/doc/sourcehandler/metainfo.page +117 -0
- data/doc/sourcehandler/page.page +32 -0
- data/doc/webgen_page_format.page +126 -0
- data/lib/webgen/blackboard.rb +73 -0
- data/lib/webgen/cache.rb +77 -0
- data/lib/webgen/cli.rb +99 -440
- data/lib/webgen/cli/create_command.rb +64 -0
- data/lib/webgen/cli/run_command.rb +20 -0
- data/lib/webgen/cli/utils.rb +82 -0
- data/lib/webgen/configuration.rb +71 -0
- data/lib/webgen/contentprocessor.rb +89 -0
- data/lib/webgen/contentprocessor/blocks.rb +46 -0
- data/lib/webgen/contentprocessor/context.rb +86 -0
- data/lib/webgen/contentprocessor/maruku.rb +18 -0
- data/lib/webgen/contentprocessor/redcloth.rb +15 -0
- data/lib/webgen/contentprocessor/tags.rb +134 -0
- data/lib/webgen/default_config.rb +128 -0
- data/lib/webgen/languages.rb +508 -40
- data/lib/webgen/loggable.rb +23 -0
- data/lib/webgen/logger.rb +78 -0
- data/lib/webgen/node.rb +275 -237
- data/lib/webgen/output.rb +31 -0
- data/lib/webgen/output/filesystem.rb +61 -0
- data/lib/webgen/page.rb +129 -0
- data/lib/webgen/path.rb +172 -0
- data/lib/webgen/source.rb +24 -0
- data/lib/webgen/source/filesystem.rb +56 -0
- data/lib/webgen/source/resource.rb +33 -0
- data/lib/webgen/source/stacked.rb +53 -0
- data/lib/webgen/sourcehandler.rb +175 -0
- data/lib/webgen/sourcehandler/base.rb +188 -0
- data/lib/webgen/sourcehandler/copy.rb +41 -0
- data/lib/webgen/sourcehandler/directory.rb +31 -0
- data/lib/webgen/sourcehandler/fragment.rb +66 -0
- data/lib/webgen/sourcehandler/metainfo.rb +107 -0
- data/lib/webgen/sourcehandler/page.rb +47 -0
- data/lib/webgen/sourcehandler/template.rb +64 -0
- data/lib/webgen/sourcehandler/virtual.rb +72 -0
- data/lib/webgen/tag.rb +16 -0
- data/lib/webgen/tag/base.rb +162 -0
- data/lib/webgen/tag/menu.rb +187 -0
- data/lib/webgen/tag/metainfo.rb +25 -0
- data/lib/webgen/tag/relocatable.rb +53 -0
- data/lib/webgen/tree.rb +80 -0
- data/lib/webgen/version.rb +6 -0
- data/lib/webgen/webgentask.rb +153 -0
- data/lib/webgen/website.rb +166 -288
- data/lib/webgen/websiteaccess.rb +29 -0
- data/lib/webgen/websitemanager.rb +124 -0
- data/man/man1/webgen.1 +31 -42
- data/misc/default.css +337 -0
- data/misc/default.template +73 -0
- data/misc/htmldoc.metainfo +22 -0
- data/misc/htmldoc.virtual +5 -0
- data/misc/images/arrow.gif +0 -0
- data/misc/images/error.gif +0 -0
- data/misc/images/exclamation.gif +0 -0
- data/misc/images/headerbg.jpg +0 -0
- data/misc/images/information.gif +0 -0
- data/misc/images/quote.gif +0 -0
- data/test/helper.rb +28 -0
- data/test/test_blackboard.rb +58 -0
- data/test/test_cache.rb +57 -0
- data/test/test_configuration.rb +35 -0
- data/test/test_contentprocessor.rb +31 -0
- data/test/test_contentprocessor_blocks.rb +34 -0
- data/test/test_contentprocessor_context.rb +38 -0
- data/test/test_contentprocessor_maruku.rb +24 -0
- data/test/test_contentprocessor_redcloth.rb +12 -0
- data/test/test_contentprocessor_tags.rb +97 -0
- data/test/test_languages.rb +53 -0
- data/test/test_loggable.rb +30 -0
- data/test/test_logger.rb +73 -0
- data/test/test_node.rb +305 -0
- data/test/test_output_filesystem.rb +57 -0
- data/test/test_page.rb +180 -0
- data/test/test_path.rb +112 -0
- data/test/test_source_filesystem.rb +59 -0
- data/test/test_source_resource.rb +21 -0
- data/test/test_source_stacked.rb +34 -0
- data/test/test_sourcehandler_base.rb +78 -0
- data/test/test_sourcehandler_copy.rb +45 -0
- data/test/test_sourcehandler_directory.rb +25 -0
- data/test/test_sourcehandler_fragment.rb +62 -0
- data/test/test_sourcehandler_metainfo.rb +79 -0
- data/test/test_sourcehandler_page.rb +62 -0
- data/test/test_sourcehandler_template.rb +61 -0
- data/test/test_sourcehandler_virtual.rb +46 -0
- data/test/test_tag_base.rb +82 -0
- data/test/test_tag_menu.rb +196 -0
- data/test/test_tag_metainfo.rb +17 -0
- data/test/test_tag_relocatable.rb +57 -0
- data/test/test_tree.rb +69 -0
- data/test/test_website.rb +96 -0
- data/test/test_websiteaccess.rb +23 -0
- data/test/test_websitemanager.rb +68 -0
- metadata +276 -800
- data/ChangeLog +0 -46
- data/README +0 -14
- data/TODO +0 -376
- data/data/webgen/data/ISO-639-2_values_8bits.txt +0 -492
- data/data/webgen/gallery-creator/default.png +0 -0
- data/data/webgen/gallery_styles/default/README +0 -6
- data/data/webgen/gallery_styles/default/gallery_gallery.template +0 -38
- data/data/webgen/gallery_styles/default/gallery_image.template +0 -30
- data/data/webgen/gallery_styles/default/gallery_main.template +0 -18
- data/data/webgen/gallery_styles/slides/README +0 -18
- data/data/webgen/gallery_styles/slides/collage.rb +0 -337
- data/data/webgen/gallery_styles/slides/gallery_gallery.template +0 -62
- data/data/webgen/gallery_styles/slides/gallery_image.template +0 -53
- data/data/webgen/gallery_styles/slides/gallery_main.template +0 -32
- data/data/webgen/icon_mapping.yaml +0 -27
- 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/resources/images/generated_by_webgen.png +0 -0
- data/data/webgen/resources/images/valid-css.gif +0 -0
- data/data/webgen/resources/images/valid-xhtml11.png +0 -0
- data/data/webgen/resources/images/webgen_logo.png +0 -0
- data/data/webgen/sipttra_styles/default/README +0 -7
- data/data/webgen/sipttra_styles/default/css/sipttra.rcss +0 -71
- data/data/webgen/sipttra_styles/default/js/sipttra.js +0 -7
- data/data/webgen/sipttra_styles/default/sipttra.template +0 -105
- data/data/webgen/website_styles/andreas00/default.template +0 -62
- data/data/webgen/website_styles/andreas01/default.template +0 -63
- data/data/webgen/website_styles/andreas06/default.template +0 -72
- data/data/webgen/website_styles/andreas07/default.template +0 -44
- data/data/webgen/website_styles/andreas08/default.template +0 -53
- data/data/webgen/website_styles/default/default.template +0 -38
- data/data/webgen/website_templates/personal_hp/README +0 -8
- data/data/webgen/website_templates/personal_hp/src/about.page +0 -12
- data/data/webgen/website_templates/personal_hp/src/index.page +0 -9
- data/data/webgen/website_templates/personal_hp/src/links.page +0 -22
- data/data/webgen/website_templates/personal_hp/src/projects.page +0 -20
- data/doc/config.yaml +0 -8
- data/doc/examples/website_styles/1024px/README +0 -9
- data/doc/examples/website_styles/1024px/config.yaml +0 -2
- data/doc/examples/website_styles/1024px/src/about.page +0 -12
- data/doc/examples/website_styles/1024px/src/default.css +0 -188
- data/doc/examples/website_styles/1024px/src/default.template +0 -62
- data/doc/examples/website_styles/1024px/src/download.page +0 -15
- data/doc/examples/website_styles/1024px/src/features.page +0 -8
- data/doc/examples/website_styles/1024px/src/images/background.gif +0 -0
- data/doc/examples/website_styles/1024px/src/index.page +0 -9
- data/doc/examples/website_styles/1024px/src/screenshots.page +0 -18
- data/doc/examples/website_styles/andreas00/README +0 -9
- data/doc/examples/website_styles/andreas00/config.yaml +0 -2
- data/doc/examples/website_styles/andreas00/src/about.page +0 -12
- data/doc/examples/website_styles/andreas00/src/default.css +0 -290
- data/doc/examples/website_styles/andreas00/src/download.page +0 -15
- data/doc/examples/website_styles/andreas00/src/features.page +0 -8
- 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 +0 -9
- data/doc/examples/website_styles/andreas00/src/screenshots.page +0 -18
- data/doc/examples/website_styles/andreas01/README +0 -9
- data/doc/examples/website_styles/andreas01/config.yaml +0 -2
- data/doc/examples/website_styles/andreas01/src/about.page +0 -12
- data/doc/examples/website_styles/andreas01/src/default.css +0 -310
- data/doc/examples/website_styles/andreas01/src/download.page +0 -15
- data/doc/examples/website_styles/andreas01/src/features.page +0 -8
- 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 +0 -9
- data/doc/examples/website_styles/andreas01/src/print.css +0 -35
- data/doc/examples/website_styles/andreas01/src/screenshots.page +0 -18
- data/doc/examples/website_styles/andreas03/README +0 -9
- data/doc/examples/website_styles/andreas03/config.yaml +0 -2
- data/doc/examples/website_styles/andreas03/src/about.page +0 -12
- data/doc/examples/website_styles/andreas03/src/default.css +0 -223
- data/doc/examples/website_styles/andreas03/src/default.template +0 -60
- data/doc/examples/website_styles/andreas03/src/download.page +0 -15
- data/doc/examples/website_styles/andreas03/src/features.page +0 -8
- 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 +0 -9
- data/doc/examples/website_styles/andreas03/src/screenshots.page +0 -18
- data/doc/examples/website_styles/andreas04/README +0 -9
- data/doc/examples/website_styles/andreas04/config.yaml +0 -2
- data/doc/examples/website_styles/andreas04/src/about.page +0 -12
- data/doc/examples/website_styles/andreas04/src/default.css +0 -290
- data/doc/examples/website_styles/andreas04/src/default.template +0 -83
- data/doc/examples/website_styles/andreas04/src/download.page +0 -15
- data/doc/examples/website_styles/andreas04/src/features.page +0 -8
- 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 +0 -9
- data/doc/examples/website_styles/andreas04/src/screenshots.page +0 -18
- data/doc/examples/website_styles/andreas05/README +0 -9
- data/doc/examples/website_styles/andreas05/config.yaml +0 -2
- data/doc/examples/website_styles/andreas05/src/about.page +0 -12
- data/doc/examples/website_styles/andreas05/src/default.css +0 -33
- data/doc/examples/website_styles/andreas05/src/default.template +0 -42
- data/doc/examples/website_styles/andreas05/src/download.page +0 -15
- data/doc/examples/website_styles/andreas05/src/features.page +0 -8
- 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 +0 -9
- data/doc/examples/website_styles/andreas05/src/screenshots.page +0 -18
- data/doc/examples/website_styles/andreas06/README +0 -9
- data/doc/examples/website_styles/andreas06/config.yaml +0 -2
- data/doc/examples/website_styles/andreas06/src/about.page +0 -12
- data/doc/examples/website_styles/andreas06/src/default.css +0 -354
- data/doc/examples/website_styles/andreas06/src/download.page +0 -15
- data/doc/examples/website_styles/andreas06/src/features.page +0 -8
- 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 +0 -9
- data/doc/examples/website_styles/andreas06/src/screenshots.page +0 -18
- data/doc/examples/website_styles/andreas07/README +0 -9
- data/doc/examples/website_styles/andreas07/config.yaml +0 -2
- data/doc/examples/website_styles/andreas07/src/about.page +0 -12
- data/doc/examples/website_styles/andreas07/src/browserfix.css +0 -7
- data/doc/examples/website_styles/andreas07/src/default.css +0 -92
- data/doc/examples/website_styles/andreas07/src/download.page +0 -15
- data/doc/examples/website_styles/andreas07/src/features.page +0 -8
- 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 +0 -9
- data/doc/examples/website_styles/andreas07/src/screenshots.page +0 -18
- data/doc/examples/website_styles/andreas08/README +0 -9
- data/doc/examples/website_styles/andreas08/config.yaml +0 -2
- data/doc/examples/website_styles/andreas08/src/about.page +0 -12
- data/doc/examples/website_styles/andreas08/src/default.css +0 -224
- data/doc/examples/website_styles/andreas08/src/download.page +0 -15
- data/doc/examples/website_styles/andreas08/src/features.page +0 -8
- data/doc/examples/website_styles/andreas08/src/index.page +0 -9
- data/doc/examples/website_styles/andreas08/src/screenshots.page +0 -18
- data/doc/examples/website_styles/andreas09/README +0 -9
- data/doc/examples/website_styles/andreas09/config.yaml +0 -2
- data/doc/examples/website_styles/andreas09/src/about.page +0 -12
- data/doc/examples/website_styles/andreas09/src/default.css +0 -308
- data/doc/examples/website_styles/andreas09/src/default.template +0 -70
- data/doc/examples/website_styles/andreas09/src/download.page +0 -15
- data/doc/examples/website_styles/andreas09/src/features.page +0 -8
- 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 +0 -9
- data/doc/examples/website_styles/andreas09/src/screenshots.page +0 -18
- data/doc/examples/website_styles/default/README +0 -9
- data/doc/examples/website_styles/default/config.yaml +0 -2
- data/doc/examples/website_styles/default/src/about.page +0 -12
- data/doc/examples/website_styles/default/src/default.css +0 -84
- data/doc/examples/website_styles/default/src/download.page +0 -15
- data/doc/examples/website_styles/default/src/features.page +0 -8
- data/doc/examples/website_styles/default/src/index.page +0 -9
- data/doc/examples/website_styles/default/src/screenshots.page +0 -18
- data/doc/examples/website_templates/default/README +0 -8
- data/doc/examples/website_templates/default/config.yaml +0 -2
- data/doc/examples/website_templates/default/src/default.css +0 -84
- data/doc/examples/website_templates/default/src/default.template +0 -38
- data/doc/examples/website_templates/default/src/index.page +0 -8
- data/doc/examples/website_templates/personal_hp/README +0 -8
- data/doc/examples/website_templates/personal_hp/config.yaml +0 -2
- data/doc/examples/website_templates/personal_hp/src/about.page +0 -12
- data/doc/examples/website_templates/personal_hp/src/default.css +0 -84
- data/doc/examples/website_templates/personal_hp/src/default.template +0 -38
- data/doc/examples/website_templates/personal_hp/src/index.page +0 -9
- data/doc/examples/website_templates/personal_hp/src/links.page +0 -22
- data/doc/examples/website_templates/personal_hp/src/projects.page +0 -20
- data/doc/examples/website_templates/project/README +0 -9
- data/doc/examples/website_templates/project/config.yaml +0 -2
- data/doc/examples/website_templates/project/src/about.page +0 -12
- data/doc/examples/website_templates/project/src/default.css +0 -84
- data/doc/examples/website_templates/project/src/default.template +0 -38
- data/doc/examples/website_templates/project/src/download.page +0 -15
- data/doc/examples/website_templates/project/src/features.page +0 -8
- data/doc/examples/website_templates/project/src/index.page +0 -9
- data/doc/examples/website_templates/project/src/screenshots.page +0 -18
- data/doc/metainfo.yaml +0 -105
- data/doc/plugin/emoticon.rb +0 -27
- data/doc/plugin/extension.rb +0 -163
- data/doc/plugin/gallery/slides/collage.rb +0 -337
- data/doc/plugin/listpluginparameters.rb +0 -37
- data/doc/plugin/resources.rb +0 -28
- data/doc/src/css/sipttra.rcss +0 -71
- data/doc/src/default.css +0 -434
- data/doc/src/default.template +0 -125
- data/doc/src/documentation/basics.page +0 -148
- data/doc/src/documentation/extending_webgen.page +0 -104
- data/doc/src/documentation/howto.page +0 -221
- data/doc/src/documentation/index.page +0 -50
- data/doc/src/documentation/plugins/contentconverter/default.page +0 -16
- data/doc/src/documentation/plugins/contentconverter/haml.page +0 -21
- data/doc/src/documentation/plugins/contentconverter/html.page +0 -10
- data/doc/src/documentation/plugins/contentconverter/markdown.page +0 -21
- data/doc/src/documentation/plugins/contentconverter/maruku.page +0 -23
- data/doc/src/documentation/plugins/contentconverter/rdoc.page +0 -11
- data/doc/src/documentation/plugins/contentconverter/sass.page +0 -36
- data/doc/src/documentation/plugins/contentconverter/textile.page +0 -21
- data/doc/src/documentation/plugins/contentconverter/xmlbuilder.page +0 -61
- data/doc/src/documentation/plugins/core/configuration.page +0 -17
- data/doc/src/documentation/plugins/core/filehandler.page +0 -220
- data/doc/src/documentation/plugins/core/index.page +0 -11
- data/doc/src/documentation/plugins/core/resourcemanager.page +0 -40
- data/doc/src/documentation/plugins/core/tagprocessor.page +0 -17
- data/doc/src/documentation/plugins/file/copyhandler.page +0 -26
- data/doc/src/documentation/plugins/file/defaulthandler.page +0 -16
- data/doc/src/documentation/plugins/file/directoryhandler.page +0 -37
- data/doc/src/documentation/plugins/file/galleryhandler.page +0 -190
- data/doc/src/documentation/plugins/file/pagehandler.page +0 -154
- data/doc/src/documentation/plugins/file/sipttrahandler.page +0 -18
- data/doc/src/documentation/plugins/file/templatehandler.page +0 -51
- data/doc/src/documentation/plugins/file/thumbnailwriter.page +0 -42
- data/doc/src/documentation/plugins/htmlvalidator/default.page +0 -13
- data/doc/src/documentation/plugins/htmlvalidator/xmllint.page +0 -12
- data/doc/src/documentation/plugins/index.page +0 -53
- data/doc/src/documentation/plugins/menustyle/default.page +0 -20
- data/doc/src/documentation/plugins/menustyle/horizontal.page +0 -36
- data/doc/src/documentation/plugins/menustyle/horizontaldropdown.page +0 -48
- data/doc/src/documentation/plugins/menustyle/section.page +0 -34
- data/doc/src/documentation/plugins/menustyle/vertical.page +0 -48
- data/doc/src/documentation/plugins/menustyle/verticaldropdown.page +0 -29
- data/doc/src/documentation/plugins/misc/index.page +0 -9
- data/doc/src/documentation/plugins/misc/smileyreplacer.page +0 -39
- data/doc/src/documentation/plugins/misc/syntaxhighlighter.page +0 -26
- data/doc/src/documentation/plugins/tag/block.page +0 -29
- data/doc/src/documentation/plugins/tag/breadcrumbtrail.page +0 -41
- data/doc/src/documentation/plugins/tag/customvar.page +0 -11
- data/doc/src/documentation/plugins/tag/date.page +0 -34
- data/doc/src/documentation/plugins/tag/default.page +0 -28
- data/doc/src/documentation/plugins/tag/download.page +0 -60
- data/doc/src/documentation/plugins/tag/executecommand.page +0 -29
- data/doc/src/documentation/plugins/tag/htmlmetainfo.page +0 -32
- data/doc/src/documentation/plugins/tag/includefile.page +0 -30
- data/doc/src/documentation/plugins/tag/langbar.de.page +0 -6
- data/doc/src/documentation/plugins/tag/langbar.fr.page +0 -6
- data/doc/src/documentation/plugins/tag/langbar.page +0 -41
- data/doc/src/documentation/plugins/tag/menu.page +0 -78
- data/doc/src/documentation/plugins/tag/meta.page +0 -21
- data/doc/src/documentation/plugins/tag/news.page +0 -48
- data/doc/src/documentation/plugins/tag/relocatable.page +0 -46
- data/doc/src/documentation/plugins/tag/resource.page +0 -35
- data/doc/src/documentation/plugins/tag/sitemap.page +0 -35
- data/doc/src/documentation/plugins/tag/wikilink.page +0 -33
- data/doc/src/documentation/references/index.page +0 -34
- data/doc/src/documentation/references/meta_info_reference.page +0 -136
- data/doc/src/documentation/references/parameter_reference.page +0 -11
- data/doc/src/documentation/references/resource_reference.page +0 -18
- data/doc/src/documentation/references/sipttra_format.page +0 -241
- data/doc/src/documentation/references/webpage_format.page +0 -253
- data/doc/src/documentation/tutorial.page +0 -167
- data/doc/src/download.page +0 -74
- data/doc/src/examples/example_sites/index.page +0 -45
- data/doc/src/examples/example_sites/personal.zip +0 -0
- data/doc/src/examples/example_sites/photo_gallery.zip +0 -0
- data/doc/src/examples/gallery_styles/default/default.gallery +0 -78
- data/doc/src/examples/gallery_styles/default/gallery_gallery.template +0 -38
- data/doc/src/examples/gallery_styles/default/gallery_image.template +0 -30
- data/doc/src/examples/gallery_styles/default/gallery_main.template +0 -18
- data/doc/src/examples/gallery_styles/index.page +0 -22
- data/doc/src/examples/gallery_styles/slides/gallery_gallery.template +0 -62
- data/doc/src/examples/gallery_styles/slides/gallery_image.template +0 -53
- data/doc/src/examples/gallery_styles/slides/gallery_main.template +0 -32
- data/doc/src/examples/gallery_styles/slides/slides.gallery +0 -79
- 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 +0 -19
- data/doc/src/examples/sipttra_styles/default.page +0 -5
- data/doc/src/examples/sipttra_styles/default/css/sipttra.rcss +0 -71
- data/doc/src/examples/sipttra_styles/default/default.template +0 -16
- data/doc/src/examples/sipttra_styles/default/index.todo +0 -60
- data/doc/src/examples/sipttra_styles/default/js/sipttra.js +0 -7
- data/doc/src/examples/sipttra_styles/default/sipttra.template +0 -105
- data/doc/src/examples/sipttra_styles/index.page +0 -17
- data/doc/src/examples/website_styles/1024px.page +0 -5
- data/doc/src/examples/website_styles/andreas00.page +0 -5
- data/doc/src/examples/website_styles/andreas01.page +0 -5
- data/doc/src/examples/website_styles/andreas03.page +0 -5
- data/doc/src/examples/website_styles/andreas04.page +0 -5
- data/doc/src/examples/website_styles/andreas05.page +0 -5
- data/doc/src/examples/website_styles/andreas06.page +0 -5
- data/doc/src/examples/website_styles/andreas07.page +0 -5
- data/doc/src/examples/website_styles/andreas08.page +0 -5
- data/doc/src/examples/website_styles/andreas09.page +0 -5
- data/doc/src/examples/website_styles/default.page +0 -5
- data/doc/src/examples/website_styles/index.page +0 -76
- data/doc/src/examples/website_templates/default.page +0 -5
- data/doc/src/examples/website_templates/index.page +0 -24
- data/doc/src/examples/website_templates/personal_hp.page +0 -5
- data/doc/src/examples/website_templates/project.page +0 -5
- data/doc/src/features.page +0 -41
- 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 +0 -7132
- 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 +0 -32
- data/doc/src/js/sipttra.js +0 -7
- data/doc/src/news.page +0 -256
- data/doc/src/plugin.template +0 -10
- data/doc/src/project.todo +0 -144
- data/doc/src/sipttra.template +0 -105
- data/lib/webgen/composite.rb +0 -101
- data/lib/webgen/config.rb +0 -52
- data/lib/webgen/content.rb +0 -172
- data/lib/webgen/extcommand.rb +0 -23
- data/lib/webgen/gui/common.rb +0 -38
- data/lib/webgen/gui/main.rb +0 -219
- data/lib/webgen/gui/new_website_dlg.rb +0 -125
- data/lib/webgen/listener.rb +0 -105
- data/lib/webgen/plugin.rb +0 -578
- data/lib/webgen/plugins/contentconverters/default.rb +0 -40
- data/lib/webgen/plugins/contentconverters/haml.rb +0 -71
- data/lib/webgen/plugins/contentconverters/html.rb +0 -43
- data/lib/webgen/plugins/contentconverters/markdown.rb +0 -54
- data/lib/webgen/plugins/contentconverters/maruku.rb +0 -33
- data/lib/webgen/plugins/contentconverters/rdoc.rb +0 -54
- data/lib/webgen/plugins/contentconverters/textile.rb +0 -54
- data/lib/webgen/plugins/contentconverters/xmlbuilder.rb +0 -58
- data/lib/webgen/plugins/coreplugins/configuration.rb +0 -45
- data/lib/webgen/plugins/coreplugins/resourcemanager.rb +0 -307
- data/lib/webgen/plugins/filehandlers/copy.rb +0 -82
- data/lib/webgen/plugins/filehandlers/directory.rb +0 -126
- data/lib/webgen/plugins/filehandlers/filehandler.rb +0 -486
- data/lib/webgen/plugins/filehandlers/gallery.rb +0 -486
- data/lib/webgen/plugins/filehandlers/page.rb +0 -255
- data/lib/webgen/plugins/filehandlers/sipttra.rb +0 -73
- data/lib/webgen/plugins/filehandlers/template.rb +0 -115
- data/lib/webgen/plugins/htmlvalidators/default.rb +0 -39
- data/lib/webgen/plugins/htmlvalidators/xmllint.rb +0 -54
- data/lib/webgen/plugins/menustyles/default.rb +0 -80
- data/lib/webgen/plugins/menustyles/horizontal.rb +0 -85
- data/lib/webgen/plugins/menustyles/horizontal_dropdown.rb +0 -99
- data/lib/webgen/plugins/menustyles/section.rb +0 -68
- data/lib/webgen/plugins/menustyles/vertical.rb +0 -87
- data/lib/webgen/plugins/menustyles/vertical_dropdown.rb +0 -99
- data/lib/webgen/plugins/miscplugins/rendered_files.rb +0 -75
- data/lib/webgen/plugins/miscplugins/smileyreplacer.rb +0 -87
- data/lib/webgen/plugins/miscplugins/syntax_highlighter.rb +0 -72
- data/lib/webgen/plugins/miscplugins/treewalker.rb +0 -91
- data/lib/webgen/plugins/tags/block.rb +0 -65
- data/lib/webgen/plugins/tags/breadcrumbtrail.rb +0 -75
- data/lib/webgen/plugins/tags/customvar.rb +0 -54
- data/lib/webgen/plugins/tags/date.rb +0 -46
- data/lib/webgen/plugins/tags/download.rb +0 -155
- data/lib/webgen/plugins/tags/executecommand.rb +0 -69
- data/lib/webgen/plugins/tags/htmlmetainfo.rb +0 -27
- data/lib/webgen/plugins/tags/includefile.rb +0 -69
- data/lib/webgen/plugins/tags/langbar.rb +0 -55
- data/lib/webgen/plugins/tags/menu.rb +0 -111
- data/lib/webgen/plugins/tags/meta.rb +0 -53
- data/lib/webgen/plugins/tags/news.rb +0 -151
- data/lib/webgen/plugins/tags/relocatable.rb +0 -94
- data/lib/webgen/plugins/tags/sitemap.rb +0 -82
- data/lib/webgen/plugins/tags/tag_processor.rb +0 -279
- data/lib/webgen/plugins/tags/wikilink.rb +0 -62
- data/lib/webgen/rake/webgentask.rb +0 -161
- data/lib/webgen/sipttra_format.rb +0 -343
- data/lib/webgen/test.rb +0 -202
- data/test/fixtures/sample_site/src/chained.template +0 -3
- data/test/fixtures/sample_site/src/default.template +0 -3
- data/test/fixtures/sample_site/src/dir1/dir11/file111.de.page +0 -3
- data/test/fixtures/sample_site/src/dir1/dir11/file111.page +0 -3
- data/test/fixtures/sample_site/src/dir1/dir11/index.page +0 -3
- data/test/fixtures/sample_site/src/dir1/file11.page +0 -3
- data/test/fixtures/sample_site/src/dir2/file21.page +0 -3
- data/test/fixtures/sample_site/src/embedded.rhtml +0 -1
- data/test/fixtures/sample_site/src/file1.page +0 -8
- data/test/fixtures/sample_site/src/file2.de.page +0 -6
- data/test/fixtures/sample_site/src/index.de.page +0 -5
- data/test/fixtures/sample_site/src/index.en.page +0 -1
- data/test/fixtures/sample_site/src/invalid.template +0 -3
- data/test/fixtures/sample_site/src/test.jpg +0 -1
- data/test/fixtures/sample_site/src/test.template +0 -3
- data/test/fixtures/sample_site/src/test.todo +0 -7
- data/test/fixtures/tc_content/blocks.yaml +0 -40
- data/test/fixtures/tc_content/correct.yaml +0 -65
- data/test/fixtures/tc_content/incorrect.yaml +0 -42
- data/test/fixtures/tc_filehandler_filehandler/backing/metainfo.yaml +0 -9
- data/test/fixtures/tc_filehandler_filehandler/backing_empty/metainfo.yaml +0 -6
- data/test/fixtures/tc_filehandler_filehandler/sample_plugin.rb +0 -49
- data/test/fixtures/tc_filehandler_filehandler/unmodified +0 -0
- data/test/fixtures/tc_filehandler_gallery/test.gallery +0 -2
- data/test/fixtures/tc_filehandler_gallery/test1.gallery +0 -2
- 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 +0 -10
- data/test/fixtures/tc_menustyles_default/menustyle.rb +0 -7
- data/test/fixtures/tc_node/nodes.yaml +0 -64
- data/test/fixtures/tc_plugin/handlerplugin.rb +0 -15
- data/test/fixtures/tc_plugin/plugin1.rb +0 -35
- data/test/fixtures/tc_plugin/plugin2.rb +0 -8
- data/test/fixtures/tc_sipttra_format/test.sipttra +0 -46
- data/test/fixtures/tc_tags_includefile/testfile +0 -1
- data/test/fixtures/tc_tags_tag_processor/test_file1 +0 -1
- data/test/fixtures/tc_tags_tag_processor/testtag.rb +0 -17
- data/test/fixtures/tc_website/correct.yaml +0 -6
- data/test/fixtures/tc_website/incorrect_structure.yaml +0 -2
- data/test/fixtures/tc_website/incorrect_yaml.yaml +0 -5
- data/test/fixtures/tc_website/meta_info_test.yaml +0 -10
- data/test/fixtures/tc_website/testdir/README +0 -1
- data/test/fixtures/tc_website/testdir/falsedir/README +0 -1
- data/test/runtests.rb +0 -2
- data/test/unittests/tc_composite.rb +0 -82
- data/test/unittests/tc_config.rb +0 -18
- data/test/unittests/tc_content.rb +0 -96
- data/test/unittests/tc_contentconverters_default.rb +0 -13
- data/test/unittests/tc_contentconverters_html.rb +0 -16
- data/test/unittests/tc_contentconverters_markdown.rb +0 -22
- data/test/unittests/tc_contentconverters_rdoc.rb +0 -16
- data/test/unittests/tc_contentconverters_textile.rb +0 -22
- data/test/unittests/tc_contentconverters_xmlbuilder.rb +0 -22
- data/test/unittests/tc_filehandler_copy.rb +0 -65
- data/test/unittests/tc_filehandler_directory.rb +0 -134
- data/test/unittests/tc_filehandler_filehandler.rb +0 -294
- data/test/unittests/tc_filehandler_gallery.rb +0 -165
- data/test/unittests/tc_filehandler_page.rb +0 -183
- data/test/unittests/tc_filehandler_sipttra.rb +0 -26
- data/test/unittests/tc_filehandler_template.rb +0 -64
- data/test/unittests/tc_htmlvalidators_default.rb +0 -12
- data/test/unittests/tc_htmlvalidators_xmllint.rb +0 -19
- data/test/unittests/tc_languages.rb +0 -57
- data/test/unittests/tc_listener.rb +0 -72
- data/test/unittests/tc_menustyles_default.rb +0 -51
- data/test/unittests/tc_menustyles_horizontal.rb +0 -64
- data/test/unittests/tc_menustyles_horizontal_dropdown.rb +0 -18
- data/test/unittests/tc_menustyles_section.rb +0 -59
- data/test/unittests/tc_menustyles_vertical.rb +0 -79
- data/test/unittests/tc_menustyles_vertical_dropdown.rb +0 -18
- data/test/unittests/tc_node.rb +0 -205
- data/test/unittests/tc_plugin.rb +0 -221
- data/test/unittests/tc_resourcemanager.rb +0 -42
- data/test/unittests/tc_sipttra_format.rb +0 -58
- data/test/unittests/tc_smileyreplacer.rb +0 -25
- data/test/unittests/tc_syntax_highlighter.rb +0 -30
- data/test/unittests/tc_tags_block.rb +0 -27
- data/test/unittests/tc_tags_breadcrumbtrail.rb +0 -56
- data/test/unittests/tc_tags_customvar.rb +0 -24
- data/test/unittests/tc_tags_date.rb +0 -16
- data/test/unittests/tc_tags_download.rb +0 -32
- data/test/unittests/tc_tags_executecommand.rb +0 -37
- data/test/unittests/tc_tags_includefile.rb +0 -46
- data/test/unittests/tc_tags_langbar.rb +0 -42
- data/test/unittests/tc_tags_menu.rb +0 -50
- data/test/unittests/tc_tags_meta.rb +0 -19
- data/test/unittests/tc_tags_relocatable.rb +0 -66
- data/test/unittests/tc_tags_sitemap.rb +0 -33
- data/test/unittests/tc_tags_tag_processor.rb +0 -107
- data/test/unittests/tc_tags_wikilink.rb +0 -22
- data/test/unittests/tc_treewalker.rb +0 -51
- data/test/unittests/tc_website.rb +0 -188
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
require 'yaml'
|
|
2
|
+
require 'webgen/loggable'
|
|
3
|
+
require 'webgen/websiteaccess'
|
|
4
|
+
|
|
5
|
+
# This module should be mixed into any class that wants to serve as a webgen tag class. Have a look
|
|
6
|
+
# a the example below to see how a basic tag class looks like.
|
|
7
|
+
#
|
|
8
|
+
# = Tag classes
|
|
9
|
+
#
|
|
10
|
+
# A tag class is a webgen extension that handles specific webgen tags. webgen tags are used to add
|
|
11
|
+
# dynamic content to page and template files and are made for ease of use.
|
|
12
|
+
#
|
|
13
|
+
# A tag class can handle multiple different tags. Just add a (tag name)-(class name) pair to the
|
|
14
|
+
# <tt>contentprocessor.tags.map</tt> configuration entry for each tag name you want to associate
|
|
15
|
+
# with the tag class. The special name <tt>:default</tt> is used for the default tag class which is
|
|
16
|
+
# called if a tag with an unknown tag name is encountered.
|
|
17
|
+
#
|
|
18
|
+
# The only method needed to be written is +call+ which is called by the tags content processor to
|
|
19
|
+
# the actual processing. And the +initialize+ method must not take any parameters!
|
|
20
|
+
#
|
|
21
|
+
# Tag classes *can* also choose to not use this module. If they don't use it they have to provide
|
|
22
|
+
# the following methods: +set_params+, +create_tag_params+, +call+.
|
|
23
|
+
#
|
|
24
|
+
# = Tag parameters
|
|
25
|
+
#
|
|
26
|
+
# webgen tags allow the specification of parameters in the tag definition. The method
|
|
27
|
+
# +tag_params_list+ returns all configuration entries that can be set this way. And the method
|
|
28
|
+
# +tag_config_base+ is used to resolve partially stated configuration entries. An additional
|
|
29
|
+
# configuration entry option is also used: <tt>:mandatory</tt>. If this key is set to +true+ for a
|
|
30
|
+
# configuration entry, the entry counts as mandatory and needs to be set in the tag definition. If
|
|
31
|
+
# this key is set to +default+, this means that this entry should be the default mandatory parameter
|
|
32
|
+
# (used when only a string is provided in the tag definition). There *should* be only one default
|
|
33
|
+
# mandatory parameter.
|
|
34
|
+
#
|
|
35
|
+
# = Sample Tag Class
|
|
36
|
+
#
|
|
37
|
+
# Following is a simple tag class example which just reverses the body text and adds some
|
|
38
|
+
# information about the context to the result. Note that the class does not reside in the
|
|
39
|
+
# Webgen::Tag namespace and that the configuration entry is therefore also not under the
|
|
40
|
+
# <tt>tag.</tt> namespace.
|
|
41
|
+
#
|
|
42
|
+
# class Reverser
|
|
43
|
+
#
|
|
44
|
+
# include Webgen::Tag::Base
|
|
45
|
+
#
|
|
46
|
+
# def call(tag, body, context)
|
|
47
|
+
# result = param('do_reverse') ? body.reverse : body
|
|
48
|
+
# result += "Node: " + context.content_node.absolute_lcn + " (" + context.content_node['title'] + ")"
|
|
49
|
+
# result += "Reference node: " + context.ref_node.absolute_lcn
|
|
50
|
+
# result
|
|
51
|
+
# end
|
|
52
|
+
#
|
|
53
|
+
# end
|
|
54
|
+
#
|
|
55
|
+
# WebsiteAccess.website.config.reverser.do_reverse nil, :mandatory => default
|
|
56
|
+
# WebsiteAccess.website.config['contentprocessor.tags.map']['reverse'] = 'Reverser'
|
|
57
|
+
#
|
|
58
|
+
module Webgen::Tag::Base
|
|
59
|
+
|
|
60
|
+
include Webgen::Loggable
|
|
61
|
+
include Webgen::WebsiteAccess
|
|
62
|
+
|
|
63
|
+
# Return a hash with parameter values extracted from the string +tag_config+.
|
|
64
|
+
def create_tag_params(tag_config, ref_node)
|
|
65
|
+
begin
|
|
66
|
+
config = YAML::load("--- #{tag_config}")
|
|
67
|
+
rescue ArgumentError => e
|
|
68
|
+
log(:error) { "Could not parse the tag params '#{tag_config}' in <#{ref_node.absolute_lcn}>: #{e.message}" }
|
|
69
|
+
config = {}
|
|
70
|
+
end
|
|
71
|
+
create_params_hash(config, ref_node)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Set the current parameter configuration to +params+.
|
|
75
|
+
def set_params(params)
|
|
76
|
+
@params = params
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Retrieve the parameter value for +name+. The value is taken from the current parameter
|
|
80
|
+
# configuration if the parameter is specified there or from the website configuration otherwise.
|
|
81
|
+
def param(name)
|
|
82
|
+
(@params && @params.has_key?(name) ? @params[name] : website.config[name])
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# Default implementation for processing a tag. The parameter +tag+ specifies the name of the tag
|
|
86
|
+
# which should be processed (useful for tag classes which process different tags).
|
|
87
|
+
#
|
|
88
|
+
# The parameter +body+ holds the optional body value for the tag.
|
|
89
|
+
#
|
|
90
|
+
# The +context+ parameter holds all relevant information for processing. Have a look at the
|
|
91
|
+
# Webgen::ContentProcessor::Context class to see what is available.
|
|
92
|
+
#
|
|
93
|
+
# The method has to return the result of the tag processing and, optionally, a boolean value
|
|
94
|
+
# specifying if the result should further be processed (ie. webgen tags replaced).
|
|
95
|
+
#
|
|
96
|
+
# Needs to be redefined by classes that mixin this module!
|
|
97
|
+
def call(tag, body, context)
|
|
98
|
+
raise NotImplementedError
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
#######
|
|
102
|
+
private
|
|
103
|
+
#######
|
|
104
|
+
|
|
105
|
+
# The base part of the configuration name. This is normally the class name without the Webgen
|
|
106
|
+
# module downcased and all "::" substituted with "." (e.g. Webgen::Tag::Menu -> tag.menu).
|
|
107
|
+
def tag_config_base
|
|
108
|
+
self.class.name.gsub('::', '.').gsub(/^Webgen\./, '').downcase
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
# Return the list of all parameters for the tag class.
|
|
112
|
+
def tag_params_list
|
|
113
|
+
regexp = /^#{tag_config_base}/
|
|
114
|
+
website.config.data.keys.select {|key| key =~ regexp}
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# Create the parameter hash from +config+ which needs to be a Hash, a String or +nil+.
|
|
118
|
+
def create_params_hash(config, node)
|
|
119
|
+
params = tag_params_list
|
|
120
|
+
result = case config
|
|
121
|
+
when Hash then create_from_hash(config, params, node)
|
|
122
|
+
when String then create_from_string(config, params, node)
|
|
123
|
+
when NilClass then {}
|
|
124
|
+
else
|
|
125
|
+
log(:error) { "Invalid parameter type (#{config.class}) for tag '#{self.class.name}' in <#{node.absolute_lcn}>" }
|
|
126
|
+
{}
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
unless params.all? {|k| !website.config.meta_info[k][:mandatory] || result.has_key?(k)}
|
|
130
|
+
log(:error) { "Not all mandatory parameters for tag '#{self.class.name}' in <#{node.absolute_lcn}> set" }
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
result
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
# Return a valid parameter hash taking values from +config+ which has to be a Hash.
|
|
137
|
+
def create_from_hash(config, params, node)
|
|
138
|
+
result = {}
|
|
139
|
+
config.each do |key, value|
|
|
140
|
+
if params.include?(key)
|
|
141
|
+
result[key] = value
|
|
142
|
+
elsif params.include?(tag_config_base + '.' + key)
|
|
143
|
+
result[tag_config_base + '.' + key] = value
|
|
144
|
+
else
|
|
145
|
+
log(:warn) { "Invalid parameter '#{key}' for tag '#{self.class.name}' in <#{node.absolute_lcn}>" }
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
result
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
# Return a valid parameter hash by setting +value+ to the default mandatory parameter.
|
|
152
|
+
def create_from_string(value, params, node)
|
|
153
|
+
param_name = params.find {|k| website.config.meta_info[k][:mandatory] == 'default'}
|
|
154
|
+
if param_name.nil?
|
|
155
|
+
log(:error) { "No default mandatory parameter specified for tag '#{self.class.name}' but set in <#{node.absolute_lcn}>"}
|
|
156
|
+
{}
|
|
157
|
+
else
|
|
158
|
+
{param_name => value}
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
end
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
require 'webgen/websiteaccess'
|
|
2
|
+
require 'webgen/tag'
|
|
3
|
+
|
|
4
|
+
module Webgen::Tag
|
|
5
|
+
|
|
6
|
+
# Generates a menu that can be configured extensively.
|
|
7
|
+
class Menu
|
|
8
|
+
|
|
9
|
+
include Webgen::WebsiteAccess
|
|
10
|
+
include Base
|
|
11
|
+
|
|
12
|
+
# Special menu node class. It encapsulates the original node for later access.
|
|
13
|
+
class MenuNode
|
|
14
|
+
|
|
15
|
+
# Array of the child nodes.
|
|
16
|
+
attr_reader :children
|
|
17
|
+
|
|
18
|
+
# The parent node.
|
|
19
|
+
attr_reader :parent
|
|
20
|
+
|
|
21
|
+
# The encapsulated node.
|
|
22
|
+
attr_reader :node
|
|
23
|
+
|
|
24
|
+
# Create a new menu node under +parent+ for the real node +node+.
|
|
25
|
+
def initialize(parent, node)
|
|
26
|
+
@parent = parent
|
|
27
|
+
@node = node
|
|
28
|
+
@children = []
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Sort recursively all children of the node using the wrapped nodes.
|
|
32
|
+
def sort!
|
|
33
|
+
self.children.sort! {|a,b| a.node <=> b.node}
|
|
34
|
+
self.children.each {|child| child.sort!}
|
|
35
|
+
self
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Return the menu tree under the node as nested list of alcn values.
|
|
39
|
+
def to_lcn_list
|
|
40
|
+
self.children.inject([]) {|temp, n| temp << n.node.absolute_lcn; temp += ((t = n.to_lcn_list).empty? ? [] : [t]) }
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def initialize #:nodoc:
|
|
46
|
+
website.blackboard.add_listener(:node_changed?, method(:node_changed?))
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Generate the menu.
|
|
50
|
+
def call(tag, body, context)
|
|
51
|
+
tree = specific_menu_tree_for(context.content_node)
|
|
52
|
+
|
|
53
|
+
(context.dest_node.node_info[:tag_menu_menus] ||= []) << [@params, context.content_node.absolute_lcn, (tree ? tree.to_lcn_list : nil)]
|
|
54
|
+
if tree && !tree.children.empty?
|
|
55
|
+
"<div class=\"webgen-menu\">#{create_output(context, tree)}</div>"
|
|
56
|
+
else
|
|
57
|
+
""
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
#########
|
|
62
|
+
protected
|
|
63
|
+
#########
|
|
64
|
+
|
|
65
|
+
# Check if the menus for +node+ have changed.
|
|
66
|
+
def node_changed?(node)
|
|
67
|
+
return if !node.node_info[:tag_menu_menus] || @inside_node_changed
|
|
68
|
+
|
|
69
|
+
@inside_node_changed = true #TODO: better solution for this race condition?
|
|
70
|
+
node.node_info[:tag_menu_menus].each do |params, cn_alcn, cached_tree|
|
|
71
|
+
cn = node.tree[cn_alcn]
|
|
72
|
+
menu_tree = menu_tree_for_lang(cn.lang, cn.tree.root)
|
|
73
|
+
|
|
74
|
+
set_params(params)
|
|
75
|
+
tree = build_specific_menu_tree(cn, menu_tree)
|
|
76
|
+
tree_list = tree.to_lcn_list if tree
|
|
77
|
+
set_params({})
|
|
78
|
+
|
|
79
|
+
if (tree.nil? && !cached_tree.nil?) || (tree_list && tree_list != cached_tree) ||
|
|
80
|
+
(tree_list && tree_list.flatten.any? {|alcn| (n = node.tree[alcn]) && (r = n.routing_node(cn.lang)) && r != node && r.changed?})
|
|
81
|
+
node.dirty = true
|
|
82
|
+
break
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
@inside_node_changed = false
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# Wrapper method for returning the specific menu tree for +content_node+.
|
|
89
|
+
def specific_menu_tree_for(content_node)
|
|
90
|
+
tree = menu_tree_for_lang(content_node.lang, content_node.tree.root)
|
|
91
|
+
if param('tag.menu.used_nodes') == 'fragments'
|
|
92
|
+
@params['tag.menu.start_level'] = param('tag.menu.start_level') + content_node.level
|
|
93
|
+
end
|
|
94
|
+
build_specific_menu_tree(content_node, tree)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# Build a menu tree for +content_node+ from the tree +menu_node+.
|
|
98
|
+
def build_specific_menu_tree(content_node, menu_node, level = 1)
|
|
99
|
+
if menu_node.nil? \
|
|
100
|
+
|| level > param('tag.menu.max_levels') + param('tag.menu.start_level') - 1 \
|
|
101
|
+
|| ((level > param('tag.menu.min_levels') + param('tag.menu.start_level') - 1) \
|
|
102
|
+
&& (menu_node.node.level >= content_node.level \
|
|
103
|
+
|| (param('tag.menu.show_current_subtree_only') && !content_node.in_subtree_of?(menu_node.node))
|
|
104
|
+
)
|
|
105
|
+
) \
|
|
106
|
+
|| (level == param('tag.menu.start_level') && !content_node.in_subtree_of?(menu_node.node))
|
|
107
|
+
return nil
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
sub_menu_tree = MenuNode.new(nil, menu_node.node)
|
|
111
|
+
menu_tree = MenuNode.new(nil, menu_node.node)
|
|
112
|
+
menu_node.children.each do |child|
|
|
113
|
+
next if param('tag.menu.used_nodes') == 'files' && !is_in_menu_tree_of_files?(child)
|
|
114
|
+
menu_tree.children << (this_node = MenuNode.new(menu_tree, child.node))
|
|
115
|
+
sub_node = child.children.length > 0 ? build_specific_menu_tree(content_node, child, level + 1) : nil
|
|
116
|
+
sub_node.children.each {|n| this_node.children << n; sub_menu_tree.children << n} if sub_node
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
if level < param('tag.menu.start_level')
|
|
120
|
+
sub_menu_tree
|
|
121
|
+
else
|
|
122
|
+
menu_tree
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
# Return +true+ if +menu_node+ is in the menu tree without fragment nodes.
|
|
127
|
+
def is_in_menu_tree_of_files?(menu_node)
|
|
128
|
+
(!menu_node.node.is_fragment? && menu_node.node['in_menu']) || menu_node.children.any? {|c| is_in_menu_tree_of_files?(c)}
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# Create the HTML menu of the +tree+ using the provided +context+.
|
|
132
|
+
def create_output(context, tree)
|
|
133
|
+
out = "<ul>"
|
|
134
|
+
tree.children.each do |child|
|
|
135
|
+
menu = child.children.length > 0 ? create_output(context, child) : ''
|
|
136
|
+
style, link = menu_item_details(context.dest_node, child.node, context.content_node.lang)
|
|
137
|
+
|
|
138
|
+
out << "<li #{style}>#{link}"
|
|
139
|
+
out << menu
|
|
140
|
+
out << "</li>"
|
|
141
|
+
end
|
|
142
|
+
out << "</ul>"
|
|
143
|
+
out
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
# Return style information (node is selected, ...) and a link from +dest_node+ to +node+.
|
|
147
|
+
def menu_item_details(dest_node, node, lang)
|
|
148
|
+
styles = []
|
|
149
|
+
styles << 'webgen-menu-submenu' if node.is_directory? || (node.is_fragment? && node.children.length > 0)
|
|
150
|
+
styles << 'webgen-menu-submenu-inhierarchy' if (node.is_directory? || (node.is_fragment? && node.children.length > 0)) &&
|
|
151
|
+
dest_node.in_subtree_of?(node)
|
|
152
|
+
styles << 'webgen-menu-item-selected' if node == dest_node
|
|
153
|
+
style = "class=\"#{styles.join(' ')}\"" if styles.length > 0
|
|
154
|
+
|
|
155
|
+
link = dest_node.link_to(node)
|
|
156
|
+
|
|
157
|
+
[style, link]
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
# Return the menu tree for the language +lang+.
|
|
161
|
+
def menu_tree_for_lang(lang, root)
|
|
162
|
+
menus = (website.cache.volatile[:menutrees] ||= {})
|
|
163
|
+
unless menus[lang]
|
|
164
|
+
menus[lang] = create_menu_tree(root, nil, lang)
|
|
165
|
+
menus[lang].sort! if menus[lang]
|
|
166
|
+
end
|
|
167
|
+
menus[lang]
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
# Create and return a menu tree if at least one node is in the menu or +nil+ otherwise.
|
|
171
|
+
def create_menu_tree(node, parent, lang)
|
|
172
|
+
menu_node = MenuNode.new(parent, node)
|
|
173
|
+
|
|
174
|
+
node.children.select do |child|
|
|
175
|
+
child.lang == lang || child.lang.nil? || child.is_directory?
|
|
176
|
+
end.each do |child|
|
|
177
|
+
sub_node = create_menu_tree(child, menu_node, lang)
|
|
178
|
+
menu_node.children << sub_node unless sub_node.nil?
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
menu_node.children.empty? ? (node['in_menu'] ? menu_node : nil) : menu_node
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'webgen/tag'
|
|
2
|
+
|
|
3
|
+
module Webgen::Tag
|
|
4
|
+
|
|
5
|
+
# Provides easy access to the meta information of a node.
|
|
6
|
+
class Metainfo
|
|
7
|
+
|
|
8
|
+
include Base
|
|
9
|
+
|
|
10
|
+
# Return the meta information key specified in +tag+ of the content node.
|
|
11
|
+
def call(tag, body, context)
|
|
12
|
+
output = ''
|
|
13
|
+
if tag == 'lang'
|
|
14
|
+
output = context.content_node.lang
|
|
15
|
+
elsif context.content_node[tag]
|
|
16
|
+
output = context.content_node[tag].to_s
|
|
17
|
+
else
|
|
18
|
+
log(:warn) { "No value for tag '#{tag}' in <#{context.ref_node.absolute_lcn}> found in <#{context.content_node.absolute_lcn}>" }
|
|
19
|
+
end
|
|
20
|
+
output
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
require 'webgen/tag'
|
|
2
|
+
require 'uri'
|
|
3
|
+
|
|
4
|
+
module Webgen::Tag
|
|
5
|
+
|
|
6
|
+
# Makes a path relative. This is very useful for templates. For example, you normally include a
|
|
7
|
+
# stylesheet in a template. If you specify the filename of the stylesheet directly, the reference
|
|
8
|
+
# to the stylesheet in the output file of a page file that is not in the same directory as the
|
|
9
|
+
# template would be invalid.
|
|
10
|
+
#
|
|
11
|
+
# By using the +relocatable+ tag you ensure that the path stays valid.
|
|
12
|
+
class Relocatable
|
|
13
|
+
|
|
14
|
+
include Webgen::Tag::Base
|
|
15
|
+
|
|
16
|
+
# Return the relativized path for the path provided in the tag definition.
|
|
17
|
+
def call(tag, body, context)
|
|
18
|
+
uri_string = param('tag.relocatable.path')
|
|
19
|
+
result = ''
|
|
20
|
+
unless uri_string.nil?
|
|
21
|
+
begin
|
|
22
|
+
uri = URI.parse(uri_string)
|
|
23
|
+
if uri.absolute?
|
|
24
|
+
result = uri_string
|
|
25
|
+
else
|
|
26
|
+
result = resolve_path(uri_string, context)
|
|
27
|
+
end
|
|
28
|
+
if result.empty?
|
|
29
|
+
log(:error) { "Could not resolve path '#{uri_string}' in <#{context.ref_node.absolute_lcn}>" }
|
|
30
|
+
context.dest_node.dirty = true
|
|
31
|
+
end
|
|
32
|
+
rescue URI::InvalidURIError => e
|
|
33
|
+
log(:error) { "Error while parsing path for tag relocatable in <#{context.ref_node.absolute_lcn}>: #{e.message}" }
|
|
34
|
+
context.dest_node.dirty = true
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
result
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
#######
|
|
41
|
+
private
|
|
42
|
+
#######
|
|
43
|
+
|
|
44
|
+
# Resolve the path +uri+ using the reference node and return the correct relative path from the
|
|
45
|
+
# destination node.
|
|
46
|
+
def resolve_path(uri, context)
|
|
47
|
+
dest_node = context.ref_node.resolve(uri, context.dest_node.lang)
|
|
48
|
+
(dest_node ? context.dest_node.route_to(dest_node) : '')
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
end
|
data/lib/webgen/tree.rb
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
require 'webgen/websiteaccess'
|
|
2
|
+
require 'webgen/node'
|
|
3
|
+
|
|
4
|
+
module Webgen
|
|
5
|
+
|
|
6
|
+
# Represents a tree of nodes.
|
|
7
|
+
class Tree
|
|
8
|
+
|
|
9
|
+
include WebsiteAccess
|
|
10
|
+
|
|
11
|
+
# The dummy root. This is the default node that gets created when the Tree is created sothat the
|
|
12
|
+
# real root node can be treated like any other node. It has only one child, namely the real root
|
|
13
|
+
# node of the tree.
|
|
14
|
+
attr_reader :dummy_root
|
|
15
|
+
|
|
16
|
+
# Direct access to the hashes for node resolving. Only use this for reading purposes! If you
|
|
17
|
+
# just want to get a specific node for an alcn/acn/output path, use #node instead.
|
|
18
|
+
attr_reader :node_access
|
|
19
|
+
|
|
20
|
+
# The hash containing processing information for each node. This is normally not accessed
|
|
21
|
+
# directly but via the Node#node_info method.
|
|
22
|
+
attr_reader :node_info
|
|
23
|
+
|
|
24
|
+
# Create a new Tree object.
|
|
25
|
+
def initialize
|
|
26
|
+
@node_access = {:alcn => {}, :acn => {}, :path => {}}
|
|
27
|
+
@node_info = {}
|
|
28
|
+
@dummy_root = Node.new(self, '', '')
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# The real root node of the tree.
|
|
32
|
+
def root
|
|
33
|
+
@dummy_root.children.first
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Access a node via a +path+ of a specific +type+. If type is +alcn+ then +path+ has to be an
|
|
37
|
+
# absolute localized canonical name, if type is +acn+ then +path+ has to be an absolute
|
|
38
|
+
# canonical name and if type is +path+ then +path+ needs to be an output path.
|
|
39
|
+
#
|
|
40
|
+
# Returns the requested Node or +nil+ if such a node does not exist.
|
|
41
|
+
def node(path, type = :alcn)
|
|
42
|
+
(type == :acn ? @node_access[type][path] && @node_access[type][path].first : @node_access[type][path])
|
|
43
|
+
end
|
|
44
|
+
alias_method :[], :node
|
|
45
|
+
|
|
46
|
+
# A utility method called by Node#initialize. This method should not be used directly!
|
|
47
|
+
def register_node(node)
|
|
48
|
+
if @node_access[:alcn].has_key?(node.absolute_lcn)
|
|
49
|
+
raise "Can't have two nodes with same absolute lcn: #{node.absolute_lcn}"
|
|
50
|
+
else
|
|
51
|
+
@node_access[:alcn][node.absolute_lcn] = node
|
|
52
|
+
end
|
|
53
|
+
(@node_access[:acn][node.absolute_cn] ||= []) << node
|
|
54
|
+
if @node_access[:path].has_key?(node.path)
|
|
55
|
+
raise "Can't have two nodes with same output path: #{node.path}" unless node['no_output']
|
|
56
|
+
else
|
|
57
|
+
@node_access[:path][node.path] = node
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Delete the node identified by +node_or_alcn+ and all of its children from the
|
|
62
|
+
# tree. Directories are only deleted if +delete_dir+ is +true+.
|
|
63
|
+
def delete_node(node_or_alcn, delete_dir = false)
|
|
64
|
+
n = node_or_alcn.kind_of?(Node) ? node_or_alcn : @node_access[:alcn][node_or_alcn]
|
|
65
|
+
return if n.nil? || n == @dummy_root || (n.is_directory? && !delete_dir)
|
|
66
|
+
|
|
67
|
+
n.children.dup.each {|child| delete_node(child, true)}
|
|
68
|
+
|
|
69
|
+
website.blackboard.dispatch_msg(:before_node_deleted, n)
|
|
70
|
+
n.parent.children.delete(n)
|
|
71
|
+
@node_access[:alcn].delete(n.absolute_lcn)
|
|
72
|
+
@node_access[:acn][n.absolute_cn].delete(n)
|
|
73
|
+
@node_access[:path].delete(n.path)
|
|
74
|
+
|
|
75
|
+
node_info.delete(n.absolute_lcn)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
end
|