libmojomojo-perl-1.11+dfsg.orig/0000755000175000017500000000000012546272315016073 5ustar gregoagregoalibmojomojo-perl-1.11+dfsg.orig/MANIFEST0000644000175000017500000003671212546272315017235 0ustar gregoagregoaapp.psgi Changes dotcloud.yml inc/File/Copy/Recursive.pm inc/Module/AutoInstall.pm inc/Module/Install.pm inc/Module/Install/AutoInstall.pm inc/Module/Install/Base.pm inc/Module/Install/Can.pm inc/Module/Install/Catalyst.pm inc/Module/Install/Fetch.pm inc/Module/Install/Include.pm inc/Module/Install/Makefile.pm inc/Module/Install/Metadata.pm inc/Module/Install/Scripts.pm inc/Module/Install/Win32.pm inc/Module/Install/WriteAll.pm INSTALL lib/MojoMojo.pm lib/MojoMojo/Controller/Admin.pm lib/MojoMojo/Controller/Attachment.pm lib/MojoMojo/Controller/Comment.pm lib/MojoMojo/Controller/Export.pm lib/MojoMojo/Controller/Gallery.pm lib/MojoMojo/Controller/Image.pm lib/MojoMojo/Controller/Journal.pm lib/MojoMojo/Controller/JSON.pm lib/MojoMojo/Controller/Jsrpc.pm lib/MojoMojo/Controller/Page.pm lib/MojoMojo/Controller/PageAdmin.pm lib/MojoMojo/Controller/Root.pm lib/MojoMojo/Controller/Tag.pm lib/MojoMojo/Controller/User.pm lib/MojoMojo/Declaw.pm lib/MojoMojo/Extension.pm lib/MojoMojo/Extensions/Counter.pm lib/MojoMojo/Formatter.pm lib/MojoMojo/Formatter/Amazon.pm lib/MojoMojo/Formatter/Comment.pm lib/MojoMojo/Formatter/CPANHyperlink.pm lib/MojoMojo/Formatter/Defang.pm lib/MojoMojo/Formatter/Dir.pm lib/MojoMojo/Formatter/DocBook.pm lib/MojoMojo/Formatter/DocBook/Colorize.pm lib/MojoMojo/Formatter/Emote.pm lib/MojoMojo/Formatter/File.pm lib/MojoMojo/Formatter/File/DocBook.pm lib/MojoMojo/Formatter/File/Image.pm lib/MojoMojo/Formatter/File/Pod.pm lib/MojoMojo/Formatter/File/Text.pm lib/MojoMojo/Formatter/Gist.pm lib/MojoMojo/Formatter/GoogleCalendar.pm lib/MojoMojo/Formatter/GoogleSearch.pm lib/MojoMojo/Formatter/IDLink.pm lib/MojoMojo/Formatter/Include.pm lib/MojoMojo/Formatter/IRCLog.pm lib/MojoMojo/Formatter/Main.pm lib/MojoMojo/Formatter/Markdown.pm lib/MojoMojo/Formatter/Pod.pm lib/MojoMojo/Formatter/Redirect.pm lib/MojoMojo/Formatter/RSS.pm lib/MojoMojo/Formatter/SyntaxHighlight.pm lib/MojoMojo/Formatter/Text.pm lib/MojoMojo/Formatter/Textile.pm lib/MojoMojo/Formatter/TOC.pm lib/MojoMojo/Formatter/Wiki.pm lib/MojoMojo/Formatter/WikipediaLink.pm lib/MojoMojo/Formatter/YouTube.pm lib/MojoMojo/I18N.pm lib/MojoMojo/I18N/ca.js.po lib/MojoMojo/I18N/ca.po lib/MojoMojo/I18N/de.js.po lib/MojoMojo/I18N/de.po lib/MojoMojo/I18N/en.js.po lib/MojoMojo/I18N/en.po lib/MojoMojo/I18N/es.js.po lib/MojoMojo/I18N/es.po lib/MojoMojo/I18N/fr.js.po lib/MojoMojo/I18N/fr.po lib/MojoMojo/I18N/it.js.po lib/MojoMojo/I18N/it.po lib/MojoMojo/I18N/ja.js.po lib/MojoMojo/I18N/ja.po lib/MojoMojo/I18N/ko.po lib/MojoMojo/I18N/no.js.po lib/MojoMojo/I18N/no.po lib/MojoMojo/I18N/pl.js.po lib/MojoMojo/I18N/pl.po lib/MojoMojo/I18N/ru.js.po lib/MojoMojo/I18N/ru.po lib/MojoMojo/Installation.pod lib/MojoMojo/Model/DBIC.pm lib/MojoMojo/Model/Search.pm lib/MojoMojo/Model/Themes.pm lib/MojoMojo/Prefs.pod lib/MojoMojo/Schema.pm lib/MojoMojo/Schema/Base/Result.pm lib/MojoMojo/Schema/Base/ResultSet.pm lib/MojoMojo/Schema/Result/Attachment.pm lib/MojoMojo/Schema/Result/Comment.pm lib/MojoMojo/Schema/Result/Content.pm lib/MojoMojo/Schema/Result/Entry.pm lib/MojoMojo/Schema/Result/Journal.pm lib/MojoMojo/Schema/Result/Link.pm lib/MojoMojo/Schema/Result/Page.pm lib/MojoMojo/Schema/Result/PageVersion.pm lib/MojoMojo/Schema/Result/PathPermissions.pm lib/MojoMojo/Schema/Result/Person.pm lib/MojoMojo/Schema/Result/Photo.pm lib/MojoMojo/Schema/Result/Preference.pm lib/MojoMojo/Schema/Result/Role.pm lib/MojoMojo/Schema/Result/RoleMember.pm lib/MojoMojo/Schema/Result/RolePrivilege.pm lib/MojoMojo/Schema/Result/Tag.pm lib/MojoMojo/Schema/Result/WantedPage.pm lib/MojoMojo/Schema/ResultSet/Attachment.pm lib/MojoMojo/Schema/ResultSet/Content.pm lib/MojoMojo/Schema/ResultSet/Page.pm lib/MojoMojo/Schema/ResultSet/Person.pm lib/MojoMojo/Schema/ResultSet/Role.pm lib/MojoMojo/Schema/ResultSet/Tag.pm lib/MojoMojo/View/Email.pm lib/MojoMojo/View/JSON.pm lib/MojoMojo/View/TT.pm lib/MojoMojo/WordDiff.pm lib/Text/SmartyPants.pm lib/Text/Wikispaces2Markdown.pm Makefile.PL MANIFEST This list of files META.yml mojomojo.conf README resources/logo/mmlogovector.psd root/base/admin/create_role.tt root/base/admin/edit_role.tt root/base/admin/role.tt root/base/admin/role_form.tt root/base/admin/settings.tt root/base/admin/toplinks.tt root/base/admin/update_user.tt root/base/admin/user.tt root/base/attachments/list.tt root/base/breadcrumbs.tt root/base/child_menu.tt root/base/comment.tt root/base/comment/login.tt root/base/comment/post.tt root/base/edithelp.tt root/base/edithelp/main.tt root/base/edithelp/markdown.tt root/base/edithelp/textile.tt root/base/export.tt root/base/extensions/counter.tt root/base/feeds.tt root/base/footer.tt root/base/gallery.tt root/base/gallery/cloud.tt root/base/gallery/footer.tt root/base/gallery/imginfo.tt root/base/gallery/pager.tt root/base/gallery/photo.tt root/base/gallery/photo_info.tt root/base/gallery/tags.tt root/base/global.tt root/base/header.tt root/base/mail/reset_password.tt root/base/mail/validate.tt root/base/message.tt root/base/mimetypes/default.tt root/base/mimetypes/image.tt root/base/navbar.tt root/base/page/addtags.tt root/base/page/atom.tt root/base/page/attachments.tt root/base/page/bottomnav.tt root/base/page/delete.tt root/base/page/deleted.tt root/base/page/edit.tt root/base/page/editbar.tt root/base/page/info.tt root/base/page/inline.tt root/base/page/inline_image.tt root/base/page/insert.tt root/base/page/list.tt root/base/page/permissions.tt root/base/page/print.tt root/base/page/recent.tt root/base/page/rollback.tt root/base/page/rss.tt root/base/page/rss_full.tt root/base/page/search.tt root/base/page/search_inline.tt root/base/page/subtree.tt root/base/page/suggest.tt root/base/page/tags.tt root/base/page/view.tt root/base/page/wrapper.tt root/base/pager.tt root/base/rest/page/recent.tt root/base/rest/page/view.tt root/base/sidebar.tt root/base/tag/cloud.tt root/base/tag/list.tt root/base/tag/recent.tt root/base/this_page_link.tt root/base/top.tt root/base/user/editprofile.tt root/base/user/list.tt root/base/user/login.tt root/base/user/prefs.tt root/base/user/profile.tt root/base/user/recover_pass.tt root/base/user/register.tt root/base/user/user_search.tt root/base/user/validate.tt root/forms/admin/delete.yml root/forms/admin/role_form.yml root/forms/admin/settings.yml root/forms/comment/comment.yml root/forms/defaults.yml root/forms/pageadmin/edit.yml root/forms/user/editprofile.yml root/forms/user/login.yml root/forms/user/password.yml root/forms/user/prefs.yml root/forms/user/register.yml root/static/catalyst.png root/static/Crystal_Clear_action_stop.png root/static/css/jquery.autocomplete.css root/static/css/progress.css root/static/emote/47_47.gif root/static/emote/48_48.gif root/static/emote/49_49.gif root/static/emote/50_50.gif root/static/emote/51_51.gif root/static/emote/52_52.gif root/static/emote/53_53.gif root/static/emote/55_55.gif root/static/emote/56_56.gif root/static/emote/57_57.gif root/static/emote/58_58.gif root/static/emote/59_59.gif root/static/emote/60_60.gif root/static/emote/61_61.gif root/static/emote/62_62.gif root/static/emote/63_63.gif root/static/emote/64_64.gif root/static/emote/66_66.gif root/static/emote/69_69.gif root/static/emote/70_70.gif root/static/emote/71_71.gif root/static/emote/72_72.gif root/static/emote/73_73.gif root/static/emote/74_74.gif root/static/emote/75_75.gif root/static/emote/77_77.gif root/static/emote/angel_smile.gif root/static/emote/angry_smile.gif root/static/emote/bat.gif root/static/emote/beer_mug.gif root/static/emote/broken_heart.gif root/static/emote/cake.gif root/static/emote/camera.gif root/static/emote/cat.gif root/static/emote/clock.gif root/static/emote/coffee.gif root/static/emote/confused_smile.gif root/static/emote/cry_smile.gif root/static/emote/devil_smile.gif root/static/emote/dog.gif root/static/emote/envelope.gif root/static/emote/film.gif root/static/emote/get.pl root/static/emote/girl.gif root/static/emote/girl_hug.gif root/static/emote/guy.gif root/static/emote/guy_hug.gif root/static/emote/heart.gif root/static/emote/kiss.gif root/static/emote/lightbulb.gif root/static/emote/martini.gif root/static/emote/messenger.gif root/static/emote/moon.gif root/static/emote/note.gif root/static/emote/omg_smile.gif root/static/emote/phone.gif root/static/emote/present.gif root/static/emote/red_smile.gif root/static/emote/regular_smile.gif root/static/emote/rose.gif root/static/emote/sad_smile.gif root/static/emote/shades_smile.gif root/static/emote/star.gif root/static/emote/teeth_smile.gif root/static/emote/thumbs_down.gif root/static/emote/thumbs_up.gif root/static/emote/tongue_smile.gif root/static/emote/what_smile.gif root/static/emote/wilted_rose.gif root/static/emote/wink_smile.gif root/static/favicon.ico root/static/gfx/background.jpg root/static/gfx/dropshadow.png root/static/gfx/header-long.png root/static/gfx/header.png root/static/gfx/maximize_width_1.png root/static/gfx/maximize_width_2.png root/static/gfx/poweredby.png root/static/gfx/uploadbutton.png root/static/js/edit.js root/static/js/jquery.autocomplete.js root/static/js/jquery.cookies.2.0.1.min.js root/static/js/jquery.editinplace.js root/static/js/jquery.form.js root/static/js/swfupload.js root/static/js/swfupload.queue.js root/static/js/wiki.js root/static/json/ca.po.json root/static/json/de.po.json root/static/json/en.po.json root/static/json/es.po.json root/static/json/fr.po.json root/static/json/it.po.json root/static/json/ja.po.json root/static/json/no.po.json root/static/json/pl.po.json root/static/json/ru.po.json root/static/mm-logo.png root/static/mojomojo.css root/static/overrides.css root/static/pod.css root/static/reset.css root/static/robots.txt root/static/spinner.gif root/static/themes/catalyst/generic.css root/static/themes/catalyst/images/global/box_bg_gray.png root/static/themes/catalyst/images/global/box_bg_gray_bottom.png root/static/themes/catalyst/images/global/box_bg_gray_top_635.png root/static/themes/catalyst/images/global/box_bg_left.png root/static/themes/catalyst/images/global/box_icon_deployment.png root/static/themes/catalyst/images/global/box_icon_development.png root/static/themes/catalyst/images/global/box_icon_scalability.png root/static/themes/catalyst/images/global/icon_control.png root/static/themes/catalyst/images/global/icon_model.png root/static/themes/catalyst/images/global/icon_view.png root/static/themes/catalyst/images/global/list_bullet.png root/static/themes/catalyst/images/layout/body_bg.png root/static/themes/catalyst/images/layout/catalyst_130pix.html root/static/themes/catalyst/images/layout/catalyst_170pix.png root/static/themes/catalyst/images/layout/header_bg_catalyst.png root/static/themes/catalyst/images/layout/header_bg_control.png root/static/themes/catalyst/images/layout/header_bg_documentation.png root/static/themes/catalyst/images/layout/header_bg_model.png root/static/themes/catalyst/images/layout/header_bg_view.png root/static/themes/catalyst/images/layout/menu_global_bg_left.png root/static/themes/catalyst/images/layout/menu_global_bg_right.png root/static/themes/catalyst/images/planet/ico-external.gif root/static/themes/catalyst/images/planet/ico-feed.gif root/static/themes/catalyst/layout.css root/static/themes/catalyst/menu_global_bg_left.png root/static/themes/catalyst/planet.css root/static/themes/catalyst/theme.css root/static/themes/catapulse/config.rb root/static/themes/catapulse/ie.css root/static/themes/catapulse/images/bg.gif root/static/themes/catapulse/images/catalyst_logo.png root/static/themes/catapulse/images/grid.png root/static/themes/catapulse/print.css root/static/themes/catapulse/src/ie.sass root/static/themes/catapulse/src/print.sass root/static/themes/catapulse/src/theme.sass root/static/themes/catapulse/theme.css root/static/themes/default/images/background.jpg root/static/themes/default/images/header.png root/static/themes/default/images/mmlogo.png root/static/themes/default/theme.css root/static/themes/epo/images/background.png root/static/themes/epo/images/epologo.png root/static/themes/epo/images/nordaaker.png root/static/themes/epo/images/nordadiffus.png root/static/themes/epo/theme.css root/static/themes/grey-scale/images/mmlogo.png root/static/themes/grey-scale/theme.css root/static/themes/madrid-pm/favicon.ico root/static/themes/madrid-pm/images/onion-madrid.png root/static/themes/madrid-pm/theme.css root/static/themes/nordaaker/images/background.png root/static/themes/nordaaker/images/nordaaker.png root/static/themes/nordaaker/images/nordadiffus.png root/static/themes/nordaaker/theme.css root/static/themes/pink-lady/images/mmlogo.png root/static/themes/pink-lady/theme.css root/static/themes/purple-pleasure/images/mmlogo.png root/static/themes/purple-pleasure/js/theme.js root/static/themes/purple-pleasure/theme.css root/static/toolbar/big.png root/static/toolbar/bold.png root/static/toolbar/center.png root/static/toolbar/code.png root/static/toolbar/drawing.png root/static/toolbar/drawing_left.png root/static/toolbar/drawing_right.png root/static/toolbar/heading.png root/static/toolbar/hyperlink.png root/static/toolbar/insert_table.png root/static/toolbar/italic.png root/static/toolbar/justify.png root/static/toolbar/left.png root/static/toolbar/list_bullet.png root/static/toolbar/list_enum.png root/static/toolbar/preformatted.png root/static/toolbar/quote.png root/static/toolbar/right.png root/static/toolbar/small.png root/static/toolbar/strikethrough.png root/static/toolbar/sub.png root/static/toolbar/super.png root/static/toolbar/wikilink.png root/themes/catalyst/footer.tt root/themes/catalyst/top.tt root/themes/madrid-pm/header.tt root/themes/madrid-pm/navbar.tt root/themes/madrid-pm/top.tt root/themes/pink-lady/footer.tt root/themes/pink-lady/page/tags.tt root/themes/purple-pleasure/footer.tt root/themes/purple-pleasure/header.tt root/themes/purple-pleasure/navbar.tt root/themes/purple-pleasure/page/tags.tt root/themes/purple-pleasure/page/wrapper.tt script/mojomojo.psgi script/mojomojo_cgi.pl script/mojomojo_create.pl script/mojomojo_fastcgi.pl script/mojomojo_fastcgi_manage.pl script/mojomojo_fastcgi_manage.yml script/mojomojo_server.pl script/mojomojo_spawn_db.pl script/mojomojo_test.pl script/mojomojo_update_db.pl script/update_po.sh script/util/bust_cache.pl script/util/dbk2xhtml.pl script/util/delete_page.pl script/util/dir2mojomojo.pl script/util/dump_content.pl script/util/hash_passwords.pl script/util/import_content.pl script/util/init_db_re.pl script/util/search_and_replace.pl script/util/textile2markdown.pl script/util/wikispaces2markdown.pl t/01app.t t/02pod.t t/03podcoverage.t t/04context.t t/05cookie.t t/app/mojomojo.db t/app/mojomojo.yml t/app_leak.t t/c/attachment.t t/c/bottomnav.t t/c/comment.t t/c/email.t t/c/image.t t/c/jsrpc.t t/c/page.t t/c/page_delete.t t/c/page_edit.t t/c/tag.t t/c/toplinks.t t/c/user.t t/defang_xss.t t/error_page.t t/formatter_all_markdown.t t/formatter_all_textile.t t/formatter_amazon.t t/formatter_comment.t t/formatter_cpanhyperlink.t t/formatter_defang.t t/formatter_dir.t t/formatter_docbook.t t/formatter_file.t t/formatter_gist.t t/formatter_googlesearch.t t/formatter_idlink.t t/formatter_include.t t/formatter_irclog.t t/formatter_markdown.t t/formatter_pod.t t/formatter_redirect.t t/formatter_rss.t t/formatter_syntax_highlight.t t/formatter_textile.t t/formatter_toc.t t/formatter_wiki.t t/formatter_wikipedialink.t t/formatter_youtube.t t/lib/FakeCatalystObject.pm t/lib/MojoMojoTestSchema.pm t/notabs.t t/permissions.t t/revisions.t t/schema_DBIC.t t/schema_DBIC_Attachment.t t/schema_DBIC_Content.t t/schema_DBIC_Page.t t/schema_DBIC_Person.t t/schema_DBIC_Tag.t t/selenium.t t/special-page.t t/unicode.t t/var/bugs.jpg t/var/files/catalyst.png t/var/files/test.pod t/var/files/test.txt t/var/files/test.xml t/var/mojomojo.yml t/wikispaces2markdown.t t/worddiff.t libmojomojo-perl-1.11+dfsg.orig/Changes0000644000175000017500000005416012445346417017377 0ustar gregoagregoa 1.11 2014-10-25 20:24:00 - Apply patch from debian downstream to use current PSGI engine - Add valid answer to registration captcha - Fix rss bug from prev release (#68) - Enable admin created users by default. (#90) - Fix unicode issues in recent versions (Simon Wilper) - Fix test suite (Simon Wilper): 1.10 2013-05-13 00:52:00 - Sort Google Search formatter params to fix issues with ordering. (#113) - Applied POD test fixes from andk. ()#112) - Fix redirect issue with set_lang. (#95) - Fix inline not found to be a bit prettier. (#81) - Add ^ to SyntaxHighlighter escaping. (#71) - Also support rss content body. (#68) 1.09 2013-01-25 11:39 - Explicit false return in auto to avoid running actions for disabled users. 1.08 2013-01-06 11:39 - Fix links to github 1.07 2012-11-13 00:25 Bug fixes: - Fix unicode test failure. (Iain Arnell) 1.06 2012-08-07 12:13 New features - Simple yet effective anti-bot registration measure: signup question (dandv) Bug fixes: - Change include formatter to work with latest SubRequest 1.05 2011-09-14 04:20 New features: - Script to delete inactive users and their page revisions, useful to clear spam (dandv) - Navigation bar for /.users both at top and bottom of the page now (dandv) - Logged in users can set local time zone (keedi). Bug fixes: - Check input for gallery pages (be numeric) and jsrpc/diff (page must exist). Fixes issue #83. (dandv) - Ensure all 'jsrpc/diff' links have rel=nofollow. Avoid bogus search engine indexing. (dandv) - Allow only logged-in users to export. Alleviates issue #39. (dandv) - Prevent actions from being run on non-existent pages (e.g. '/bogus.export'). '.edit' is allowed, to create the page. Fixes issues #36 and #80. (dandv) - Make redirect login content sensitive (f00lish) 1.04 2011-02-12 10:24 Improvements: - Don't save a page when there is no change even if we push the save button. This prevents the revision number from being incremented. - Added gist formatter (bayashi) Bug fixes: - Amazon requires a secret key now to access its API. Make the Amazon formatter aware of that. - Google calendar formatter was always setting precompile_off = 1 (even when it wasn't a calendar page). 1.03 2011-01-12 11:36 New features: - Google Calendar formatter (jcockhren) Bug fixes: - Really fix tagged descendants by date for postgres Improvements: - Korean Translation - popular account link formatter via {{id:$service $account_name}} e.g. {{id::cpan bayashi}} gets rendered as bayashi - Show tags only once for 'Popular' and 'My' categories 1.02 2010-08-30 04:20 Bug fixes: - Fix tagged descendants by date for postgresql - Fix root setting to actually be used. Improvements: - Use precompiled content when building search results when precompiled is non-empty. This speeds up search results a butt-load and then some. Thanks to and . Migration: - Moved to using KinoSearch1 instead of KinoSearch. The former has replaced the latter. 1.01 2010-05-26 10:04:20 New features: - Google search formatter (bayashi) - Utility scripts to import/export raw page markup from file/to STDOUT (dandv) - Add wikipedia link generator. (bayashi) Bug fixes: - Minor CSS fix (tcaine) - default uri_for_static to use uri_for to make it work correctly for non-root-mounted wikis. - Restrict page deletion to admin users only Improvements: - All Methods/subs now documented - POD Coverage test on by default 1.00 2010-05-09 00:04:20 New Features: - Create a default page for new users. - Replaced shrunken-head image with a "Stop" sign (dandv) Bug fixes: - Fix WantedLink to use normalize_page to match links - Removed File::Slurp dependency after removing it from Text::(Multi)Markdown because it fails installation under Strawberry Perl (dandv) - IRC Formatter auto-color nicknames (issue #27) (linio) [his last commit, RIP now] - Attachments size in Page info is now correctly displayed (issue #53) (linio) - Remove 'Alerts' from Syntax Highlight list - it's Kate's hidden module (issue #52) (linio) - Fixed formatter_all_textile tests to work without Syntax plugin Improvements: - Refine POD so lintian is happy (debian build tool) - Add unicode code option to DB connect string. This allows us to remove the use of UTF8Columns which is deprecated. Hook in CHARTSET=utf8 for MySQL deploy Misc: - Test::Notabs is now optional - HTML::Toc is now required 0.999042 2009-12-01 21:42:00 Syntax change - please update affected wiki pages: - {{include }} and {{feed }} instead of the implicit syntax {{}} and {{feed://}} New Features: - Added (versioned) page renaming in Page Info (dandv) - Add delete page function - Replaced String::Diff with word diff (Ryan52) - e-mail addresses in user .profile-s are now protected against spambots (dandv) Bug fixes: - fixed inserting images via the toolbar after markdown="1" support (dandv) 0.999041 2009-10-26 11:55:00 New features: - add markdown="1" to block-level HTML elements to interpret Markdown (dandv) Translation: - Italian. MojoMojo ora parla italiano (enrico) Bug fixes: - Exports now export the entire subtree (dandv) - Sub pages do not show pages without view permission (linio) - Fixes for Pg Compability (depesz) - Users 'Active' field now shows users not validated yet as inactive (linio) - Login is now page-sensitive (marcus) - Changed RSS Formatter to use entry summary instead of body (marcus) - Fixed issue with incorrectly calculated cloud size (linio) Documentation: - improved and centralized installation docs into lib/MojoMojo/Installation.pod 0.999040 2009-09-04 19:53:00 - Format content body and store in content.precompile Use this precompiled body when available for page delivery (see page/view.tt). /.precompile_pages action for precompiling all page versions. This action can take a few minutes for the Catalyst wiki (~2000 page versions). - Fixed [[child]] and [[../sibling]] display bug when first creating a page. Adjust tests to reflect that [[../sibling]] formats to parent/sibling instead of ../sibling. (mateu) - Simplified and improved sub-pages. Speed and layout enhanced. (mateu) - Made subtree KinoSearch work (mateu) - Added paging for .list (dandv) - Catapulse theme (dab) - Madrid.pm theme (diegok) - More español (diegok) - Updated jQuery inplace editor and related code; fixed '&'-encoding bug which caused any text after the '&' to be lost when editing in-place (dandv) - Simplified 404 page handling in suggest.tt (mateu) - No cookie for anonymous user requests, and cookie test (mateu) - Removed PageCache (mateu) - .rollback now only works via POST (dandv) - Fixed bug in MojoMojo::get_permissions_data (uninitialized hashref) (mateu) - Main formatter now guaranteed to end the content with *one* newline (dandv) - Remove some obsolete crud (dandv/marcus) 0.999033 2009-08-14 12:40:00 UTC - Fixed security issue allowing anonymous users to delete attachments (dandv) - Cleared the RT bug queue (5 bugs) (dandv) - Added 'resource' metadata to META.yml to indicate bug tracking, source code repo and mailing list URLs at http://search.cpan.org/dist/MojoMojo (dandv) - Added 40+ tests to t/c/{attachment, page_edit, user}.t, fixed email.t to restore admin's password, better handling of missing test prereqs. (dandv) - Refactored C::Attachment, MojoMojoTestSchema, attachments/list.tt (dandv) - Bump up test_requires Test::More version to 0.88 so we can use done_testing() 0.999032 2009-08-02 22:39:00 - The page cache plugin was caching the empty body before a redirect, and then using that for further requests of the same page. Arguably, this is a bug in PageCache, but for now it is fixed here. (Dave Rolsky) - Logging out of a wiki which did not allow anonymous viewing left the user able to view the last page they were on. Now they are immediately taken to the login screen. (Dave Rolsky) - Reorganized the navigation menus to try to group site-wide and page-specific options together. Top-level menu links (like Recent and Tags) are now always site-wide. For path-specific versions, go to the "Sub pages" view of a path. (Dave Rolsky) - The gallery link was broken (Dave Rolsky) - Redesigned the attachments list as a nicely formatted table. Images now include a thumbnail preview, and the actions available for each attachment are context-sensitive based on the type of attachment and user permissions. (Dave Rolsky) - Attachments are now viewable without going to the edit form first (Dave Rolsky) - The "insert link" option for an attachment went to a slightly broken version of the edit form (Dave Rolsky) - The revisions list is now a nicely formatted table (Dave Rolsky) - mojomojo_spawn_db.pl now has a --help option and takes CLI arguments for all settings (Dave Rolsky) - mojomojo_spawn_db won't attempt deploy if DB already exists (mateu) - MojoMojo warns on startup if mojomojo_spawn_db.pl was not run, and all requests return a 404 (mateu) - A newly created database now has an anonymous user preference set. Without this, anonymous users are not supported properly (Dave Rolsky) - Recent changes now shows users' names, not their logins (Dave Rolsky) - The users list in the admin section only showed the first 20 users. Added paging links so you can browse all of them. (Dave Rolsky) - The users list now shows active users first (Dave Rolsky) - A user's active flag is now shown as "yes" or "no" in the UI (Dave Rolsky) - Fixed markup inserted by edit toolbar buttons for images and links (dandv) - The edit page incorrectly labeled a button "Create and View" for a page that only had one revision, when it should have been labeled "Save and View" (Dave Rolsky) - In edit mode, the preview & form should now always fit in the browser viewport together without scrolling, in both horizontal & vertical split modes. (Dave Rolsky) - Revised MultiMarkdown syntax help tips (Dave Rolsky) - Removed the page delete action, which was broken with PostgreSQL, and not checking permissions. This will come back in a better form in the future (Dave Rolsky) - HTML entities are now escaped in code blocks and "# comments" are rendered correctly in Perl syntax blocks (GitHub issues #41, #11) (dandv) - Textile no longer converts non-ASCII characters into HTML entities (dandv) - Fixed Catalyst theme so that Save buttons are visible (dandv) - All methods are documented in POD with =head2 instead of =item, so that they appear in the module's TOC. Uniform LICENSE for all modules. (dandv) - Major documentation updates to Prefs.pod, Schema::Result*::Page*, Formatter/WRITING YOUR OWN FORMATTER, (dandv) - Reformatted Changes, but you probably noticed that by now (dandv) - Move some settings into MojoMojo.pm to make mojomojo.conf more friendly. (marcus) - Experimental basic search and replace script. (mateu) 0.999031 2009-07-26 15:00:00 - Sane default for FastMmap sharefile. - Change to use the current cache as Session store. - Fix comments (NacMac) - Add license for debian packaging - Fix incorred URL displayed by the error page (pre_hacked_url) - POD Fixes 0.999030 2009-07-18 20:25:00 - Fixed vertical split mode to stay side-by-side (mateu, dandv @ YAPC10) - Updated Catalyst theme - Defang remote img src - whitelist if you want to allow them - Fixed profile user name when in view mode - Linked from was moved from page/bottomnav.tt to page/info.tt - Forked Defang to Declaw included in our distribution for now - Fix Args("") issue 0.999029 2009-05-09 23:59:35 - Actual content added to [[Help]] - Tests: XSS, Defang, and more Textile - Defang runs after main formatter instead of before - HTML::Scrub replaced with HTML::Defang for XSS and cleaning HTML - Markdown now default formatter instead of Textile. Reasons at http://mojomojo.org/documentation/cheatsheet#Choosing_between_Textile2_and_MultiMarkdown - Update page creation to be compatible with latest DBIC (Bernhard Graf) - Additional theme colors: grey, purple, pink - Add Amazon, RSS, Emote (optional) formatters to main distribution - Many new tests, including live tests of chained formatters (dandv) - Main formatters (Textile, MultiMarkdown) are independent and clearly dispatched now (dandv) - Switch email to use Catalyst::View::Email and tests for such (rafl) 0.999028 2009-04-23 11:58:00 - Use oneshot timer instead of only_every to trigger preview update - Make .profile smarter and link to it from .recent - Clean up extra // in .recent URLs - New formatter: {{cpan Some::Module}} auto-hyperlinks (dandv) - Use package scope for $kate syntax highlight object to reduce memory leak (mateu) - Use jquery cookie to make split edit state sticky - Added maximization of the edit page (linio) - Instant edit window split mode toggle (horiz./vert.) preserves content (linio) - Drop-downs for syntax highlighters, plugins and formatters (linio) - Set default theme directory when theme preference is NULL - Add inline view - reCAPTCHA support (linio) - localize: help message, admin home page, anonymous name and login ('anonymous coward') - Fixed displaying multiple user roles - Now FormFu label_loc can be localized by MojoMojo I18N - MojoMojo habla español (guikubivan) - Add polish translation (linio) - Improved wikilinks (UTF-8, parentheses, anchors) and added tests - Fixes for paragraphs in toolbar (linio) - Add Catalan language support (mateu) - expand_wikiword() only replaces underscores with spaces now. - match display name of page title, breadcrumb final node, and search results - Make search results byline for last edit author - Limit preview width so that long
 lines don't squash edit area
  - Fix security check for attachments
  - Add Catalyst theme
  - Add tabs to "Syntax help" popup (batman)
  - Improved "Syntax help": does not cover textarea and features tabbed navigation (batman)
  - Improved templates: removed js, inline css and most templates use wrapper (batman)
  - Changed font-size: Removed ever px-based font-size, and set default to 0.9em (batman)
  - Improved w3c validation (batman)
  - improved navigation, removed unused and out of place links (dandv)


0.999027 2009-01-30 23:17:00
  - Fixed broken authors (users) pager links
  - Added "Split Edit" for side-by-side view/edit
  - Switched from Cache::Store::Memory to Cache::FastMmap
  - Change search results by link to link to ROOT/$author instead of author at page level
  - Show bread crumb path on search results, linking the terminal node
  - List one link for each page by an author via .users (instead of all revisions)
  - Support merge for overlapping edits
  - Add Japanese translation


0.999026 2009-01-08 00:21:00
  - Fix a JavaScript issue with insert attachment
  - Fix comments formatter
  - Make wantedpage list only apply to current subtree
  - Make tagged_descendant work for PostgreSQL
  - Changed default search to AND using default_boolop of QueryParser
  - Edit search_inline.tt to display like search.tt
  - Improved search result layout and added content creation date
  - Search results sorted by Kinosearch hit object score
  - Fix create photo for pics with EXIF
  - Fixed chars count in page info
  - Resolve some fastcgi encoding issues
  - Link to revision in info page


0.999025  2009-01-04 23:39:00
  - Updated language selector, added FR to choices
  - Improved search setup error handling on startup
  - New formatter: SyntaxHighlight
  - Fixed /.users to show logout-link correctly if user is logged in


0.999024  2008-12-31 18:04:00
  - Get preference key/value from cache if possible
  - Fix wanted pages
  - Fix password dialog
  - Autocomplete for tags (Sachin Sebastian)
  - Update SWFUpload to support flash 10. Add plain fallback
  - Resolve a unicode issue in some installations when editing text
  - Add support for i18n (no, fr, de translations so far)
    *Warning* Forms will not be localized correctly with Locale::Maketext
    1.10 and above.


0.999023  2008-11-23 10:35:00
  - Added  GUI Permissions editor (nilsonsfj)
  - Finished porting MojoMojo to HTML::FormFu
  - Added TOC plugin using HTML::GenToc + anchor names that are
    XHTML compliant and human/SEO-friendly (dandv)
  - Fixed formatting of profile
  - Fix recent list to not display implicit links
  - Fix bind issue in .list
  - Set noindex for most pages


0.999022  2008-11-14 17:28:00
  - Fix validation check (sachinjsk)
  - Fix javascript toolbar
  - Fix various Pg specific issues
  - Change to use flash uploader.
  - Update search not to cache objects
  - Fix unicode issue with preview
  - rewrite javascript to use jquery, remove inline JS
  - Fix indexer to use correct content version


0.999021  2008-11-01 01:47:00
  - Move search to KinoSearch
  - Make startup checks for permissions
  - Remove BindLex
  - Fix lingering 'query' search name which should be 'q'
  - add Edit Pages link to navbar
  - Some spawn DB fixes
  - Fix session config, removed colonos (plu)
  - liquid layout for less than 1024px wide view


0.999020  2008-07-28 15:45:00
  - Replaced favicon (soulchild)
  - Make attachment_dir configurable
  - Major CSS/XHTML overhaul (soulchild)
  - Update default expires for session to 1 week
  - default to searchtype=all (mateu)
  - Fix highlight causing layout being broken (plu)
  - Replace Crypt::PassGen with Text::Password::Pronounceable
  - Make mech tests optional


0.999019 2008-07-19 19:45:00
  - Eval plucene to let mojomojo work if it fails
  - Support for re-requesting validation mails
  - Fix for TT syntax error
  - Fix recover password (plu)
  - Fix prefs button label
  - Fix: /foo.photo/1 was broken (plu)
  - Add new config option to enforce login:
    enforce_login 1 (plu)


0.999018 2008-07-16 19:45:00
  - Fix selenium tests
  - Add redirect formatter
  - Update dependencies
  - Fix change password after switching to hashed passwords (plu)
  - Fix warning in navbar.tt
  - Fix: If you're logged in, page doesn't exist yet and you don't
    have the permission to create it there was an exception thrown (plu)
  - Add table CSS (plu)
  - Restrict search results depending on permissions (plu)


0.999017 2008-07-09 11:59:00
  - Unbreak search
  - Add a default from address for mail


0.999016 2008-06-29 15:01:00
  - Limit recent feed to 20 entries
  - Add option to disable search
  - Make implicit wikiword linking disabled by default
  - Hash passwords.
    WARNING! if you have an old installtion, you will need to run
    ./script/hash_passwords.pl to hash the passwords for an existing
    install. Don't run this more than once! (Script should complain tho)


0.999015 2008-05-03 18:01:00
  - patches from linio with user-related bugfixes
  - fix missing dependencies


0.999014 2008-04-19 00:08:00
  - Fixed preview for Unicode
  - Fixed styling issues with lists/strong/em
  - Redirect to edit for missing pages higher up in the path
  - Respect formatter pref in edithelp/toolbar
  - Markdown formatter toolbar
  - Recover password function


0.999013 2008-02-06 00:08:00
  - renovated skin (arne)
  - syntax fixes, registration/login (jshirley)
  - fix email validation template (jshirley)


0.999012 2008-02-06 00:08:00
  - Fix multiline pre render error
  - Further updates for layout
  - Flexible auth framework added (No UI yet) (jayk)
  - More validation fixes
  - Updated dependencies
  - Updated auth to use new plugins
  - Updated user profile


0.999011 2008-01-20 20:16:00
  - uri_for_static for static assets
  - Fix header layout
  - Fix tags in gallery view when not logged in
  - Fix render bug in preview
  - Various markup fixes (gphat)
  - Escape wiki formatting inside pre
  - Markdown formatter now using MultiMarkdown
  - Fix JS for highlight + focus in register
  - Fixed profile, added Last Changed.


0.999010 2008-01-20 20:16:00
  - Fix registration form
  - Update several base _ ... to uri_for
  - Put admin link on every page if admin
  - Fix incorrect URL for change password
  - Update minimum version for Controller::HTML::Widget


0.999008 2007-11-12 22:43:00
  - Fix AJAX for tagging
  - Fix tag galleries
  - Fix AJAX for user activation


0.999007 2007-09-24 00:01:00
  - Really fix deploy script for MySQL
  - Fix deploy script for PostgreSQL
  - Refactor test data so it only exists once
  - Updated main class POD (removed developer docs and added to description)


0.999006 2007-09-23 12:12:00
  - Fix deploy script to work with mysql constraints
  - Fix comment formatter in preview
  - Updated photo exif formatting
  - Renamed photo action from p to photo


0.999005 2007-09-19 21:31:00
  - Better error reporting for upload dir
  - More dependency fixes


0.999005 2007-09-18 09:56:04
  - Really fix tests if Markdown isn't installed


0.999004 2007-09-18 09:29:04
  - Create t/var/upload if needed
  - Prefs form redone in FormFu
  - Use Mech to test page editing
  - Fixed test suite again
  - Restore search
  - Bad scope for attachment dir


0.999003  2007-09-13 14:32:00
  - Fixed Comment formatter
  - Fixed Gallery tags (Invalid constraint)
  - Actually remove all the c.prototype stuff (Unbreaking all the JS)
  - Fix preferences link
  - Fix links in navbar and header
  - Made the insert attachment system template based and easily extensible
  - Set up default page for admin


0.999002  2007-09-12 23:08:00
  - Fixed relative linking ([[../Sibling]])/
  - Cleaned up attachments
  - Wrote database tests for attachments
  - Add Formatter Base Class
  - Add support for different Primary Formatters
  - Update default to be Path, rather than Private
  - Fix tests is t/c/
  - More documentation
  - Updated Installation instructions. lib/MojoMojo/Installation.pod is
    now the master.


0.999001  2007-08-29 16:29:00
  - Initial Release. There are bugs, but the basic functionality works,
    and the test suite passes all tests here. Please contribute
    tests for bugs you want fixed.

    Once we fix it all, we'll consider it 1.0
libmojomojo-perl-1.11+dfsg.orig/root/0000755000175000017500000000000012546272315017056 5ustar  gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/forms/0000755000175000017500000000000012546272315020204 5ustar  gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/forms/user/0000755000175000017500000000000012447042202021150 5ustar  gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/forms/user/editprofile.yml0000644000175000017500000000141311630142452024201 0ustar  gregoagregoa---
load_config_file: __path_to(root/forms/defaults.yml)__
id: editprofile

elements:
  - type: Text
    name: name
    label_loc: Name
  - type: Date
    name: born
    label_loc: Birth Date
    auto_inflate: 1
    year:
      less: 70
      plus: 0
  - type: Select
    name: gender
    label_loc: Gender
    options:
        - [ 'm', 'Male' ]
        - [ 'f', 'Female' ]
        - [ '?', 'Rather not say' ]
  - type: Text
    name: timezone
    label_loc: Timezone
  - type: Text
    name: industry
    label_loc: Industry
  - type: Textarea
    name: interests
    label_loc: Interests
  - type: Textarea
    label_loc: Favorite Albums
    name: music
  - type: Textarea
    name: movies
    label_loc: Favorite Movies
  - type: Submit
    name: submit
    value_loc: Update
libmojomojo-perl-1.11+dfsg.orig/root/forms/user/register.yml0000644000175000017500000000237012254653141023527 0ustar  gregoagregoa---
load_config_file: __path_to(root/forms/defaults.yml)__
id: register

elements:
  - type: Text
    name: login
    label_loc: Login
    filters:
      - HTMLEscape
      - LowerCase
      - TrimEdges
    constraints:
      - Required
      - Word
  - type: Password
    name: pass
    label_loc: Password
    constraints:
      - Required
      - type: Equal
        others: confirm_password
        message_loc: Password did not match
      - type: Length
        min: 4
        max: 14
        message_loc: Password must be between 4 and 14 chars
  - type: Password
    name: confirm_password
    label_loc: Repeat password
  - type: Text
    name: email
    label_loc: Email
    filters:
      - HTMLEscape
      - TrimEdges
    constraints:
      - Email
      - Required
  - type: Text
    name: name
    label_loc: Name
    filters:
      - HTMLEscape
      - TrimEdges
    constraints:
      - Required
  - type: Text
    name: antispam
    label_loc: What is this wiki powered by (look at the bottom; 8 letters, all lowercase)?
    filters:
      - HTMLEscape
      - TrimEdges
    constraints:
      - Required
      - type: Regex
        regex: mojomojo|catalyst
        message_loc: Go away spammer!
  - type: Submit
    name: submit
    value_loc: Register
libmojomojo-perl-1.11+dfsg.orig/root/forms/user/prefs.yml0000644000175000017500000000103511357175324023024 0ustar  gregoagregoa---
load_config_file: __path_to(root/forms/defaults.yml)__

elements:
  - type: Text
    name: login
    label_loc: Login
    filters:
      - HTMLEscape
      - LowerCase
      - TrimEdges
    constraints:
      - Required
      - Word
  - type: Text
    name: name
    label_loc: Name
    filters:
      - HTMLEscape
      - TrimEdges
  - type: Text
    name: email
    label_loc: Email
    filters:
      - HTMLEscape
      - TrimEdges
    constraints:
      - Required
      - Email
  - type: Submit
    name: submit
    value_loc: Save
libmojomojo-perl-1.11+dfsg.orig/root/forms/user/login.yml0000644000175000017500000000061211357175324023015 0ustar  gregoagregoa---
load_config_file: __path_to(root/forms/defaults.yml)__
id: loginForm

elements:
  - name: login
    id: loginField
    label_loc: Username
    filters:
      - HTMLEscape
      - LowerCase
      - TrimEdges
    constraints:
      - Required

  - type: Password
    name: pass
    label_loc: Password
    constraints:
      - Required

  - type: Submit
    name: submit
    value_loc: Login
libmojomojo-perl-1.11+dfsg.orig/root/forms/user/password.yml0000644000175000017500000000103711357175324023551 0ustar  gregoagregoa---
load_config_file: __path_to(root/forms/defaults.yml)__
id: password

elements:
  - type: Password
    name: current
    label_loc: Current password
    constraints:
        - Required
  - type: Password
    name: pass
    label_loc: New password
    constraints:
        - Required
  - type: Password
    name: pass_again
    label_loc: New password again
    constraints:
        - type: Equal
          others: pass
          message_loc: 'Password did not match'
        - Required
  - type: Submit
    name: submit
    value_loc: Save
libmojomojo-perl-1.11+dfsg.orig/root/forms/defaults.yml0000644000175000017500000000133311357175324022537 0ustar  gregoagregoa---
auto_fieldset: 1
# indicator not set as it breaks registration test in t/c/email.t
# indicator: submit
localize_class: MojoMojo::I18N

# If not set, missing error messages will default to their keys (e.g. "form_constraint_word"), not the corresponding values (e.g. 'Field contains non-word characters')
localize: 1

# overridden in most forms, but required for auto_id
id: form

# ensure checkboxes + radio buttons have an ID
# so the label gets a for="" attribute
# which makes the whole label clickable
auto_id: "%f_%n"

# 'group' elements - multiple input fields with the same name
# ensure they get unique IDs
default_args:
  elements:
    Radiogroup:
      auto_id: "$f_%n_%c"
    Checkboxgroup:
      auto_id: "%f_%n_%c"
libmojomojo-perl-1.11+dfsg.orig/root/forms/admin/0000755000175000017500000000000012546272315021274 5ustar  gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/forms/admin/role_form.yml0000644000175000017500000000061611357175324024007 0ustar  gregoagregoa---
load_config_file: __path_to(root/forms/defaults.yml)__
id: role_form

elements:
  - type: Text
    name: name
    label_loc: Role Name
    constraints:
      - Required
  - type: Checkbox
    name: active
    label_loc: "Active?"
  - type: Repeatable
    increment_field_names: 0
    elements:
      - type: Text
      - name: role_members
  - type: Submit
    name: submit
    value_loc: Save
libmojomojo-perl-1.11+dfsg.orig/root/forms/admin/settings.yml0000644000175000017500000000535111357175324023664 0ustar  gregoagregoa---
load_config_file: __path_to(root/forms/defaults.yml)__
attrs:
  class: site-configuration

elements:
  - type: Fieldset
    attrs:
      class: secondCol
    elements:
      - type: Text
        name: name
        label_loc: Site name
        filters:
          - HTMLEscape
        constraints:
          - Required
      - type: Text
        name: admins
        label_loc: Site Admins (In addition to you)
      - type: Text
        name: anonymous_user
        label_loc: Anonymous User (blank to disable)
      - type: Select
        name: theme
        label_loc: Theme name
      - type: Select
        name: main_formatter
        label_loc: Main formatter
        options:
          - [ 'MojoMojo::Formatter::Markdown', 'Markdown' ]
          - [ 'MojoMojo::Formatter::Textile',  'Textile'  ]
      - type: Checkbox
        name: open_registration
        label_loc: New User Registration open
        value: 1
        default_empty_value: 0
      - type: Checkbox
        name: use_captcha
        label_loc: Use captcha
        value: 1
        default_empty_value: 0
      - type: Checkbox
        name: disable_search
        value: 1
        default_empty_value: 0
        label_loc: Disable internal search (use Google)
      - type: Checkbox
        name: enable_emoticons
        label_loc: Enable graphical emoticons
        value: 1
        default_empty_value: 0
  - type: Fieldset
    elements:
      - type: Checkbox
        name: restricted_user
        value: 1
        default_empty_value: 0
        label_loc: Restrict user editing to home directory
      - type: Checkbox
        name: enforce_login
        value: 1
        default_empty_value: 0
        label_loc: Enforce login
      - type: Checkbox
        name: check_permission_on_view
        value: 1
        default_empty_value: 0
        label_loc: Check permission on view
      - type: Checkbox
        name: cache_permission_data
        value: 1
        default_empty_value: 0
        label_loc: Cache permission data
      - type: Checkbox
        name: create_allowed
        value: 1
        default_empty_value: 0
        label_loc: Create allowed by default
      - type: Checkbox
        name: delete_allowed
        value: 1
        default_empty_value: 0
        label_loc: Delete allowed by default
      - type: Checkbox
        name: edit_allowed
        value: 1
        default_empty_value: 0
        label_loc: Edit allowed by default
      - type: Checkbox
        name: view_allowed
        value: 1
        default_empty_value: 0
        label_loc: View allowed by default
      - type: Checkbox
        name: attachment_allowed
        value: 1
        default_empty_value: 0
        label_loc: Attachment allowed by default
  - type: Submit
    name: submit
    value_loc: Save
libmojomojo-perl-1.11+dfsg.orig/root/forms/admin/delete.yml0000644000175000017500000000015111377277356023271 0ustar  gregoagregoa---
load_config_file: __path_to(root/forms/defaults.yml)__

elements:
  - type: Submit
    name: confirm
libmojomojo-perl-1.11+dfsg.orig/root/forms/pageadmin/0000755000175000017500000000000012546272315022131 5ustar  gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/forms/pageadmin/edit.yml0000644000175000017500000000037511357175324023607 0ustar  gregoagregoa---
load_config_file: __path_to(root/forms/defaults.yml)__

elements:
  - type: Textarea
    name: body
    label_loc: Page text
    constraints:
      - Required
  - type: Text
    name: creator
    label_loc: creator
  - type: Submit
    name: submit
libmojomojo-perl-1.11+dfsg.orig/root/forms/comment/0000755000175000017500000000000012546272315021646 5ustar  gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/forms/comment/comment.yml0000644000175000017500000000035511357175324024037 0ustar  gregoagregoa---
load_config_file: __path_to(root/forms/defaults.yml)__
id: register    

elements:
  - type: Text
    name: body
    label_loc: Comment body
    constraints:
      - Required
  - type: Submit
    name: submit
    value_loc: Register
libmojomojo-perl-1.11+dfsg.orig/root/base/0000755000175000017500000000000012546272315017770 5ustar  gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/base/edithelp/0000755000175000017500000000000012546272315021566 5ustar  gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/base/edithelp/main.tt0000644000175000017500000000010011357175324023053 0ustar  gregoagregoa

[% loc('No help yet for x', c.pref('main_formatter')) %]

libmojomojo-perl-1.11+dfsg.orig/root/base/edithelp/textile.tt0000644000175000017500000000421411357175324023617 0ustar gregoagregoa

[%loc('Textile help')%]

[%loc('Textile2 complete reference')%]

[% IF(INC.exists('MojoMojo/Formatter/Emote.pm')) -%] [% END -%] [% IF(INC.exists('MojoMojo/Formatter/Amazon.pm')) -%] [% END -%] [% IF(INC.exists('MojoMojo/Formatter/RSS.pm')) -%] [% END -%]
_[%loc('your text')%]_ -> [%loc('your text')%]
*[%loc('your text')%]* -> [%loc('your text')%]
%{color:red}[%loc('hello')%]% -> [%loc('hello')%]
* [%loc('Bulleted list')%]
* [%loc('Second item')%]
-> • [%loc('Bulleted list')%]
• [%loc('Second item')%]
# [%loc('Numbered list')%]
# [%loc('Second item')%]
-> 1. [%loc('Numbered list')%]
2. [%loc('Second item')%]
:-) -> smile emote
[%loc('And others.')%]
"[%loc('linkname')%]":[%loc('URL')%] -> [%loc('linkname')%]
{{http://amazon/url}} -> [%loc('Show this product')%]
[%loc('|a|table|row|')%]
[%loc('|b|table|row|')%]
-> [%loc('Table')%]
!/img/url! -> [%loc('Image')%]
{{feed://[%loc('your/url')%]}} -> [%loc('include this rss feed')%]
libmojomojo-perl-1.11+dfsg.orig/root/base/edithelp/markdown.tt0000644000175000017500000001375512010165127023760 0ustar gregoagregoa

[% loc('Markdown help') %]

[% loc('Text Formatting') %]
[% loc('Text in') %] [% loc('italics') %] [% loc('*italic* or _italic_') %]
[% loc('Text in') %] [% loc('bold') %] [% loc('**bold** or __bold__') %]
[% loc('Links') %]
[% loc('Link to Another Page') %]
[[[% loc('Page Name Here') %]]]
[% loc('Links to Other Sites') %]:
[[% loc('example') %]]([% loc('http://example.com/') %])
[% loc('is formatted as:') %] [% loc('example') %]
[[% loc('example') %]]([% loc('http://example.com/') %] "[% loc('Link Title') %]")
[% loc('is formatted as:') %] [% loc('example') %]
[% loc('hover over the link to see the title') %]
[% loc('Headers') %]
[% loc('Main Header') %]
[% loc('Main Header') %]
========
[% loc('Main Header') %]
# [% loc('Main Header') %]
[% loc('Sub Header') %]
[% loc('Sub Header') %]
--------
[% loc('Sub Header') %]
## [% loc('Sub Header') %]
## [% loc('Sub Header') %] ##
[% loc('optionally, you can add the same number of trailing # marks') %]
[% loc('Sub Sub ... Header') %]
[% loc('up to 6 levels of headers') %]
###### [% loc('Sub Sub ... Header') %]
###### [% loc('Sub Sub ... Header') %] ######
[% loc('Lists') %]
[% loc('To get') %]:
  • Foo
  • Bar
[% loc('Write') %]:
* Foo
* Bar
[% loc('NOTE: you need a blank line before and after the list') %]
[% loc('For numbered lists, just use numbers instead of asterisks') %]
1. Foo
2. Foo
[% loc('For nested lists, indent each level by 3 spaces') %]
  • [% loc('Item 1') %]
    • [% loc('Item 1.1') %]
    • [% loc('Item 1.2') %]
      • [% loc('Item 1.2.1') %]
    • [% loc('Item 2') %]
* [% loc('Item 1') %]
* [% loc('Item 1.1') %]
* [% loc('Item 1.2') %]
* [% loc('Item 1.2.1') %]
* [% loc('Item 2') %]
[% loc('Block quotes') %]
> [% loc('Just like email quoting!') %]
> > [% loc('Blockquotes can be nested') %]
> ## [% loc('An h2 tag in a blockquote') %]
>
> [% loc('And additional Markdown formatting') %]:
> * [% loc('An unordered list') %]
> * [% loc('Item') %]
[% loc('Horizontal Rules') %] (<hr>)
[% loc('3 or more dashes or asterisks') %]:
--- [% loc('or') %] *** [% loc('or') %] * * *
[% loc('Creates') %]:
[% loc('Code') %]
`<[% loc('code') %]>` [% loc('blocks are wrapped in backticks') %].
[% loc('Nested backticks') %]: `` [% loc('just use `2`') %] `` [% loc('in the wrapping block') %]
[% loc('Preformatted Code Blocks') %] (<pre>)
[% loc('Simply indent every line of a code block by 4') %]:
[%- loc('Normal paragraph') +%]

    [%+ loc('Spaces on the left
    render text in monospace
    like this example') +%]

[%+ loc('Going back to normal formatting') %]
[% loc('Note that for programming language code, it may be better to use the Syntax highlight plugin.') %]
[% loc('Footnotes') %] ([% loc('details') %])
[% loc('As detailed in the book[^footnote1], we will now show that...
...later in the document...
[^footnote1]: Conway, Damian - Perl Best Practices, p. 117') %]
[% loc('Images') %]
[% loc('Inline') %] ![[% loc('alt text') %]](/image/path/file.jpg "[% loc('Optional Title') %]")
libmojomojo-perl-1.11+dfsg.orig/root/base/child_menu.tt0000644000175000017500000000052511357175324022453 0ustar gregoagregoa
    [%- FOR child_page = parent_page.children %] [%- END %]
libmojomojo-perl-1.11+dfsg.orig/root/base/mimetypes/0000755000175000017500000000000012546272315022004 5ustar gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/base/mimetypes/image.tt0000644000175000017500000000025411357175324023441 0ustar gregoagregoa libmojomojo-perl-1.11+dfsg.orig/root/base/mimetypes/default.tt0000644000175000017500000000052111357175324024000 0ustar gregoagregoa[% SET link = c.uri_for("attachment",att.id) %] [% SET link = link.replace ('.+//.+?/','/') %] [% IF c.pref('main_formatter') == "MojoMojo::Formatter::Textile" +%] "[%att.name%]":[% link %] [% ELSIF c.pref('main_formatter') == "MojoMojo::Formatter::Markdown" +%] [[%att.name%]]([% link %]) [% ELSE %] "[%att.name%]":[% link %] [% END %] libmojomojo-perl-1.11+dfsg.orig/root/base/header.tt0000644000175000017500000000601411634075575021600 0ustar gregoagregoa [% IF title; title %] [% ELSIF page %] [% c.expand_wikilink(page.name_orig) %] [% END %] - [% c.pref('name') %] [% UNLESS index_page %][% END %] [% IF (c.action.reverse == 'page/view') %] [% END %] [% IF (c.action.reverse == 'pageadmin/edit') %] [% END %]
[% PROCESS top.tt %] libmojomojo-perl-1.11+dfsg.orig/root/base/breadcrumbs.tt0000644000175000017500000000077311357175324022642 0ustar gregoagregoa libmojomojo-perl-1.11+dfsg.orig/root/base/mail/0000755000175000017500000000000012546272315020712 5ustar gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/base/mail/reset_password.tt0000644000175000017500000000034611357175324024333 0ustar gregoagregoa[% loc('Hi there.') %] [% loc('Your password on x has been reset. This is your new password:', c.pref('name') ) +%] [% password +%] -- [%+ loc('Have a nice day') +%] [%+ loc('MojoMojo - The elegant wiki, Catalyst-powered') +%] libmojomojo-perl-1.11+dfsg.orig/root/base/mail/validate.tt0000644000175000017500000000024711357175324023060 0ustar gregoagregoa[%loc('Hi. This is a mail to validate your email address, x. To confirm, please click the url below:', user.name)%] [% c.uri_for('/.validate', user.login, secret) %] libmojomojo-perl-1.11+dfsg.orig/root/base/message.tt0000644000175000017500000000113611357175324021767 0ustar gregoagregoa[% WRAPPER page/wrapper.tt title=loc('Error') simple_header=1 simple_footer=1 -%]
[% loc('Stop') %]
[% message %]
[% loc('You can go to the') %] [% loc('home page') %] [% loc('or you can try to') %] [% loc('login') %]
[% END %] libmojomojo-perl-1.11+dfsg.orig/root/base/extensions/0000755000175000017500000000000012546272315022167 5ustar gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/base/extensions/counter.tt0000644000175000017500000000036611357175324024225 0ustar gregoagregoa[% WRAPPER page/wrapper.tt index_page=(c.req.params.rev ? 0 : 1) +%]

[% count -%]

+
- [% END # WRAPPER %] libmojomojo-perl-1.11+dfsg.orig/root/base/rest/0000755000175000017500000000000012546272315020745 5ustar gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/base/rest/page/0000755000175000017500000000000012447042202021647 5ustar gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/base/rest/page/view.tt0000644000175000017500000000007111357175324023203 0ustar gregoagregoa [%page.for_rest%] libmojomojo-perl-1.11+dfsg.orig/root/base/rest/page/recent.tt0000644000175000017500000000013711357175324023514 0ustar gregoagregoa [% FOREACH page IN pages %] [%page.for_rest%] [% END %] libmojomojo-perl-1.11+dfsg.orig/root/base/pager.tt0000644000175000017500000000132011357175324021434 0ustar gregoagregoa
[% UNLESS pager.current_page == pager.first_page %] [% END %] [% UNLESS pager.current_page == pager.last_page %] [% END %] [% loc('Showing entries x-x of x in x', [pager.first, pager.last, pager.total_entries, c.wikiword( page.path, base )])%]
libmojomojo-perl-1.11+dfsg.orig/root/base/attachments/0000755000175000017500000000000012546272315022303 5ustar gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/base/attachments/list.tt0000644000175000017500000000533311357175324023634 0ustar gregoagregoa [% can_edit = c.check_permissions(page.path, c.user).edit; can_attachment = c.check_permissions(page.path, c.user).attachment; %] [% FOR attachment IN page.attachments +%] [% END +%]
Filename Type Size Date Actions
[% attachment.name %] [% IF attachment.is_image %]
thumbnail for [%attachment.name%] [% END %]
[% loc(attachment.human_type) %] [%IF attachment.size %][% attachment.human_size %] [% ELSE %] Unknown[%END%] [% attachment.uploaded.strftime('%Y-%m-%d') %]
[% loc('View as gallery') %] libmojomojo-perl-1.11+dfsg.orig/root/base/user/0000755000175000017500000000000012447042202020734 5ustar gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/base/user/login.tt0000644000175000017500000000101011357175324022420 0ustar gregoagregoa[% WRAPPER page/wrapper.tt simple_header=1 title=loc('Login') %]
[% IF message %]

[% message %]

[% END %] [% form %]

[% IF( c.pref( 'open_registration' ) ) %] [% loc('Register new account') %] [% loc('or') %] [% END %] [% loc('Recover password') %]

[% END # WRAPPER %] libmojomojo-perl-1.11+dfsg.orig/root/base/user/recover_pass.tt0000644000175000017500000000072511357175324024017 0ustar gregoagregoa[% WRAPPER page/wrapper.tt simple_header=1 title=loc('Recover Password') %]
[% loc('Username') %]/[% loc('Email') %]:
 
[% END # WRAPPER %] libmojomojo-perl-1.11+dfsg.orig/root/base/user/user_search.tt0000644000175000017500000000012311357175324023617 0ustar gregoagregoa[%- FOREACH user IN users -%] [% user.login %]|[% user.id %][% "\n" %] [%- END -%] libmojomojo-perl-1.11+dfsg.orig/root/base/user/profile.tt0000644000175000017500000000413111630142452022745 0ustar gregoagregoa[% SET title = loc('User profile for x',person.name); WRAPPER page/wrapper.tt title = title; %]
[% IF (user.login == page.name OR user.link == proto_pages.first.path OR ( user.is_admin AND user.get_user(page.name) ) ) +%] [% END +%]
[% loc('Name') %]:
[% person.name || loc('Name missing') %]
[% IF person.email %] [% IF user.admin || user.id == person.id +%]
[% loc('Email') %]:
[% person.email.replace('\@', '@fbi.gov') %]
[% END %] [% END %] [% IF person.age %]
[% loc('Age') %]:
[% person.age %]
[%+ END +%] [% IF person.gender +%]
[% loc('Gender') %]:
[% person.gender %]
[%+ END %] [% IF person.timezone +%]
[% loc('Timezone') %]:
[% person.timezone %]
[%+ END %] [% IF person.industry +%]
[% loc('Industry') %]:
[% person.industry %]
[%+ END %] [% IF person.interests_formatted +%]
[% loc('Interests') %]:
[% person.interests_formatted %]
[%+ END %] [% IF person.music_formatted +%]
[% loc('Music') %]:
[% person.music_formatted %]
[%+ END %] [% IF person.movies_formatted +%]
[% loc('Movies') %]:
[% person.movies_formatted %]
[%+ END +%]
[% loc('Date registered') %]:
[% c.tz(person.registered).ymd %]
[% loc('Edits') %]:
[% FOREACH changed IN person.pages +%] [%+ '–' UNLESS loop.first %] [% c.wikiword(changed.path, base) %] [% END +%]
[% END # WRAPPER %] libmojomojo-perl-1.11+dfsg.orig/root/base/user/list.tt0000644000175000017500000000122211630142452022256 0ustar gregoagregoa[% WRAPPER page/wrapper.tt title = title || c.pref('name') %]
[% PROCESS pager.tt %]
[% WHILE( u = users.next ) -%]
[% c.wikiword( u.link, base, u.name, 'profile') -%]
[% pages = u.pages -%] [% UNLESS pages %] [% loc('No recent changes') %] [% END -%] [% FOREACH changed IN pages -%] [% c.wikiword( changed.path, base ) -%][% '–' UNLESS loop.last -%] [% END -%]
[% END -%]
[% PROCESS pager.tt %]
[% END # WRAPPER -%] libmojomojo-perl-1.11+dfsg.orig/root/base/user/editprofile.tt0000644000175000017500000000022411357175324023624 0ustar gregoagregoa[% WRAPPER page/wrapper.tt simple_footer=1 title=loc('Editing user profile for x', user.name) %]
[% form %]
[% END %] libmojomojo-perl-1.11+dfsg.orig/root/base/user/register.tt0000644000175000017500000000046511357175324023151 0ustar gregoagregoa[% WRAPPER page/wrapper.tt simple_footer=1 simple_header=1 title=loc('New User Registration') %]
[% IF account_taken %] [% account_taken %] [% END %] [% form %]
[%message%]
[% END %] libmojomojo-perl-1.11+dfsg.orig/root/base/user/validate.tt0000644000175000017500000000167711357175324023124 0ustar gregoagregoa[% WRAPPER page/wrapper.tt simple_header=1 simple_footer=1 title=loc('Email Validation') %]
[% IF error %] [% error %] [% ELSE %]

[% loc('Validation') %]

[% loc("We've sent you an email with an activation link. Please click on it to activate your account!") %]

[% loc('The email was sent to x.', user.email) %] [% END %]

[% loc("Didn't receive an email?") %]

[% loc('Fill in the email address you want to use here') %]:

[% END # WRAPPER %] libmojomojo-perl-1.11+dfsg.orig/root/base/user/prefs.tt0000644000175000017500000000062311357175324022440 0ustar gregoagregoa[% WRAPPER page/wrapper.tt title=loc("preferences") %]

[% loc('Your Account') %]

[%message%]

[% form %]
[% END %] libmojomojo-perl-1.11+dfsg.orig/root/base/feeds.tt0000644000175000017500000000100411357175324021423 0ustar gregoagregoa[% WRAPPER page/wrapper.tt title=loc('Feeds') %]
[%loc('You can subscribe to this wiki by RSS and get either just the headlines of the pages that change or the entire page.')%]
[% END %] libmojomojo-perl-1.11+dfsg.orig/root/base/global.tt0000644000175000017500000000025111357175324021600 0ustar gregoagregoa[%- MACRO loc(text, args) BLOCK; c.localize(text, args); END; -%] [%- SET lang = ( c.sessionid && c.session.lang ? c.session.lang : c.pref('default_lang') || 'en' ) -%] libmojomojo-perl-1.11+dfsg.orig/root/base/admin/0000755000175000017500000000000012546272315021060 5ustar gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/base/admin/update_user.tt0000644000175000017500000000004111357175324023745 0ustar gregoagregoa[% user.active ? 'yes' : 'no' %] libmojomojo-perl-1.11+dfsg.orig/root/base/admin/create_role.tt0000644000175000017500000000041211357175324023713 0ustar gregoagregoa[% admin_header = 1; title = c.pref('name'); selected = 'roles'; back = 'admin/role'; WRAPPER page/wrapper.tt; %]

[%loc('Create Role')%]

[% PROCESS admin/role_form.tt active = 1 %]
[% END # WRAPPER %] libmojomojo-perl-1.11+dfsg.orig/root/base/admin/user.tt0000644000175000017500000000317211371605043022403 0ustar gregoagregoa[% admin_header = 1; title = c.pref('name'); selected = 'user'; WRAPPER page/wrapper.tt; %]

[% c.loc('Users') %]

[% WHILE (user=users.next) %] [% activeurl= c.uri_for('/.admin/update_user', user.id , 'active') %] [% active=(user.active==1) ? loc('yes') : loc('no') %] [% END %]
[% c.loc('Active') %] [% c.loc('login') %] [% c.loc('roles') %] [% loc('name') %] [% loc('email') %]
[% active %] [% user.login %] [% FOR role=user.roles %] [% role.name %] [% END %] [% user.name %] [% IF user.email %] [%user.email%] [% ELSE %] [% loc("no email address") %] [% END %]

[% IF pager.previous_page %] [% loc('Previous') %] [% END %] [% IF pager.previous_page AND pager.next_page %] | [% END %] [% IF pager.next_page %] [% loc('Next') %] [% END %]

[% loc('Add user') %]
[% END # WRAPPER %] libmojomojo-perl-1.11+dfsg.orig/root/base/admin/toplinks.tt0000644000175000017500000000110511357175324023272 0ustar gregoagregoa[%- DEFAULT back = 'view' -%] [%- MACRO gen_link(action, label, accesskey, selected) BLOCK; -%]
  • [% label %]
  • [%- END -%] libmojomojo-perl-1.11+dfsg.orig/root/base/admin/role_form.tt0000644000175000017500000000272011357175324023417 0ustar gregoagregoa

    [% loc('Role Members') %]

    [% has_members = members && members.size > 0 %]
    • [% loc('No members added yet.') %]
    • [% IF has_members %] [% FOREACH member IN members %]
    • [% member.login %] [[% loc('remove') %]]
    • [% END %] [% END %]
    libmojomojo-perl-1.11+dfsg.orig/root/base/admin/edit_role.tt0000644000175000017500000000044611357175324023404 0ustar gregoagregoa[% admin_header = 1; title = c.pref('name'); selected = 'roles'; back = 'admin/role'; WRAPPER page/wrapper.tt; %]

    [%loc('Edit Role')%]

    [% PROCESS admin/role_form.tt active = role.active, role_name => role.name %]
    [% END # WRAPPER %] libmojomojo-perl-1.11+dfsg.orig/root/base/admin/settings.tt0000644000175000017500000000043611357175324023275 0ustar gregoagregoa[% admin_header = 1; title = c.pref('name'); selected = 'configuration'; WRAPPER page/wrapper.tt; %]

    [% loc('Site Configuration') %]

    [% form %] [% IF message %]

    [% message %]

    [% END %]
    [% END # WRAPPER %] libmojomojo-perl-1.11+dfsg.orig/root/base/admin/role.tt0000644000175000017500000000207411357175324022376 0ustar gregoagregoa[% admin_header = 1; title = c.pref('name'); selected = 'roles'; WRAPPER page/wrapper.tt; %]

    [% loc('Roles') %]

    [% IF roles.size > 0 %] [%loc('Create a new role')%] [% FOREACH role IN roles %] [% END %]
    [%loc('ID')%] [%loc('Name')%] [%loc('Active')%]
    [% role.id %] [% role.name %] [% role.active ? loc('Yes') : loc('No') %] [%loc('Edit')%]
    [% ELSE %]
    [%loc('No roles created yet.')%] [%loc('Create a new role')%]
    [% END %]

    [% message %]

     
    [% END # WRAPPER %] libmojomojo-perl-1.11+dfsg.orig/root/base/export.tt0000644000175000017500000000073311357175324021666 0ustar gregoagregoa[% WRAPPER page/wrapper.tt title=loc("Export") %]
    [%loc('You can export all the pages in this web as a zip file in either HTML (with working links and all) or the pure markup (to import in another wiki).')%]
    [% END %] libmojomojo-perl-1.11+dfsg.orig/root/base/gallery.tt0000644000175000017500000000151211357175324022000 0ustar gregoagregoa[% WRAPPER page/wrapper.tt title=c.pref("name") _ " gallery - " _ c.expand_wikilink(page.name_orig) _ (tag ? tag : "") simple_footer=1 %]
    [% PROCESS gallery/pager.tt pager=pictures.pager %]
    [%loc('Hover over an image to get more info.')%]
    [% WHILE(picture=pictures.next) %] [% loc('Show picture') %] [% END %]
    [% END %] libmojomojo-perl-1.11+dfsg.orig/root/base/edithelp.tt0000644000175000017500000000443211357175324022143 0ustar gregoagregoa

    [%loc('Wiki words')%]

    [%loc("Any phrase surrounded by double brackets or parentheses is a wiki word (camel-case wiki words are not supported for good reasons, one being that some languages don't have the concept of case).")%]

    [%loc('Wiki words')%]: [%loc("~[~[C++~]~], ~[~[Let's rock!~]~] ((easy to type))")%]
    [%loc('Not wiki words')%]: [%loc('HomePage, IBM, School')%]
    [%loc("By default, a wiki word will reference it's children. To reference a sibling, you can do ~[~[../Node~]~], or to reference a toplevel node do ~[~[/Node~]~]")%]

    [% IF !c.pref('main_formatter') || c.pref('main_formatter') == 'MojoMojo::Formatter::Textile'; formatter = "textile"; ELSIF (c.pref('main_formatter') == 'MojoMojo::Formatter::Markdown'); formatter = "markdown"; ELSE; formatter = "main"; END; formatter_template = "edithelp/" _ formatter _ ".tt"; %]
    [% PROCESS $formatter_template %]

    [% loc('Plugin syntax') %]

    [% loc('To get') %] [% loc('Write') %]
    [% loc('table of contents') %] {{toc [[% loc('level') %]1]-[[%loc('level')%]2]}}
    [% loc('Examples') %]: {{toc}}, {{toc 2-}}, {{toc 2-4}}
    [%loc('include this page')%] {{http://[%loc('your/url')%]}}
    [%loc('include this rss feed')%] {{feed://[%loc('your/url')%]}}
    [%loc('Show this product')%] {{http://amazon/url}}
    [%loc('Enable comments on this page.')%] {{comments}}
    [%loc('Format content until {{end}} as plain old documentation')%] {{pod}}
    libmojomojo-perl-1.11+dfsg.orig/root/base/this_page_link.tt0000644000175000017500000000130611357175324023322 0ustar gregoagregoa [%- IF c.req.action == "view" %] [%- IF (!rev OR rev == page.content_version) AND ( c.pref('anonymous_user') OR (user.active AND user.can_edit(page.path)) ) +%]
  • [% loc('Edit page') %]
  • [% ELSE +%]
  • [% loc('Edit page') %]
  • [% END %] [% ELSE +%]
  • [% loc('Page') %]
  • [% END %] libmojomojo-perl-1.11+dfsg.orig/root/base/gallery/0000755000175000017500000000000012546272315021427 5ustar gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/base/gallery/cloud.tt0000644000175000017500000000033311357175324023106 0ustar gregoagregoa[% WRAPPER page/wrapper.tt index_page=1 title=loc('photo tags') %]
    [% IF cloud.tags(1); cloud.html_and_css(50); ELSE; "No tags in use"; END; %]
    [% END # WRAPPER %] libmojomojo-perl-1.11+dfsg.orig/root/base/gallery/photo_info.tt0000644000175000017500000000126711357175324024153 0ustar gregoagregoa

    [% loc('Exif Data') %]

    [% loc('Taken') %]:
    [% IF photo.taken %][% USE taken=String(photo.taken); taken.replace('T',' ') %][% ELSE %][% loc('not specified') %][% END %]
    [% loc('Camera') %]:
    [% photo.camera || loc('not specified') %]
    [% loc('Lens') %]:
    [% photo.lens.replace('\.\d+mm$','mm') || loc('not specified') %]
    [% loc('ISO') %]:
    [% photo.iso|| loc('not specified') %]
    [% loc('Aperture') %]:
    [% IF photo.aperture %]f/[% photo.aperture %][% ELSE %][% loc('not specified') %][% END %]
    [% loc('Flash') %]:
    [% photo.flash|| loc('not specified') %]
    libmojomojo-perl-1.11+dfsg.orig/root/base/gallery/pager.tt0000644000175000017500000000123211357175324023075 0ustar gregoagregoa [% SET link= c.wikiword(page.path,base, loc('gallery') ,'gallery') _ " " _ c.wikiword(page.path,base) %]

    [%loc( 'Showing x (x-x) of x pictures in x', [pager.entries_on_this_page,pager.first,pager.last,pager.total_entries, link ]) %]

    libmojomojo-perl-1.11+dfsg.orig/root/base/gallery/tags.tt0000644000175000017500000000223411357175324022740 0ustar gregoagregoa
    [% loc('My tags') %]:
      [% IF tags %] [% FOREACH tag IN tags %] [%IF tag.tag == highlight %] [% tag.tag %] [x][% UNLESS loop.last() %],[% END %] [%END%] [%END%]
    [% loc('Popular tags') %]:
      [%IF others_tags %] [% FOREACH othertag IN others_tags %] [% SET tagmatch='\b' _ othertag.tag _ '\b' %] [% NEXT IF taglist.match(tagmatch) %] [%IF othertag.tag == highlight %] [% othertag.tag %] [% IF user.active %] [+][% UNLESS loop.last() %],[% END %] [%END%] [%END%] [%END%]
    libmojomojo-perl-1.11+dfsg.orig/root/base/gallery/imginfo.tt0000644000175000017500000000025011357175324023426 0ustar gregoagregoa

    [% photo.title %]

    [% photo.description %]

    [% PROCESS gallery/photo_info.tt %]

     

    libmojomojo-perl-1.11+dfsg.orig/root/base/gallery/photo.tt0000644000175000017500000000330411357175324023132 0ustar gregoagregoa[% title = page.name == '/' ? c.pref("name") : c.expand_wikilink(page.name_orig); title = title _ " " _ loc('gallery') _ " - " _ photo.title; IF tag; title = title _ ' (' _ tag _ ')'; END; gallery_footer = 1; index_page = 1; WRAPPER page/wrapper.tt; -%]
    [% IF photo %]

    [% photo.title | html %]

    [% photo.description.remove('^\s+$') || loc('no description') | html %]

    [% END %]

    [%+ IF c.user.obj.can_edit(page) # FIXME: inline editing needs to be formatted same as viewing the element.%] [%+ END %] [% END # WRAPPER %] libmojomojo-perl-1.11+dfsg.orig/root/base/gallery/footer.tt0000644000175000017500000000123711357175324023302 0ustar gregoagregoa[% IF user %] [% ELSE %]
     
     
    [% END %]
    [% PROCESS gallery/tags.tt %]
    [% PROCESS footer.tt %] libmojomojo-perl-1.11+dfsg.orig/root/base/top.tt0000644000175000017500000000002511357175324021141 0ustar gregoagregoa[% template.title %] libmojomojo-perl-1.11+dfsg.orig/root/base/sidebar.tt0000644000175000017500000000033511357175324021754 0ustar gregoagregoa libmojomojo-perl-1.11+dfsg.orig/root/base/comment.tt0000644000175000017500000000255711630142451022002 0ustar gregoagregoa[% IF c.action.reverse == 'pageadmin/edit' || c.action.reverse == 'jsrpc/render' %] [[% loc('comments disabled for preview') %]] [% ELSE %] [% IF c.action.reverse != 'page/search' %] [% IF comments.count %]

    [%comments.count%] [% IF comments.count == 1; loc('Comment'); ELSE; loc('Comments'); END %]

    [% WHILE ( comment = comments.next ) %]
    [% loc('poster') %]
    [%comment.poster.name%]
    [% loc('posted') %]
    [% c.tz(comment.posted).ymd %] [% c.tz(comment.posted).hms %]
    [% loc('comment') %]: [% IF user.can_edit(page.path) %] [×] [% END %]
    [% comment.formatted %]
    [% END # WHILE %] [% ELSE # comments.count %]

    [%loc('No Comments posted')%]

    [% END # comments.count %]

    [% loc('add a comment') %]

    [% IF user %] [% PROCESS comment/post.tt %] [% ELSE %] [% PROCESS comment/login.tt %] [% END %]
    [% END %] [% END %] libmojomojo-perl-1.11+dfsg.orig/root/base/page/0000755000175000017500000000000012546272315020704 5ustar gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/base/page/inline_image.tt0000644000175000017500000000027711357175324023704 0ustar gregoagregoa[% TRY -%] [% PROCESS $type -%] [% CATCH file -%] [% TRY -%] [% PROCESS $family -%] [% CATCH file -%] [% PROCESS 'mimetypes/image.tt' -%] [% END -%] [% END -%]libmojomojo-perl-1.11+dfsg.orig/root/base/page/search_inline.tt0000644000175000017500000000522211630142452024050 0ustar gregoagregoa [%+ IF result_count %] [% IF search_type != "all"; SET found_within = '' _ page.path _ ''; ELSE; SET found_within = loc('entire site'); END; +%]

    [% loc('Results x-x of x found within x', [pager.first, pager.last, pager.total_entries, found_within]) %]

    [% ELSE -%]

    [% loc('No results found') %]

    [% END +%]
      [% FOR result = results +%]
    • [% result.title_base_nodes %][% c.expand_wikilink(result.page.name_orig) %] [% result.page.content.abstract %]
      [% result.snippet %]
    • [% END +%]
    [% IF pager && pager.total_entries > pager.entries_per_page %]
    [% END %] libmojomojo-perl-1.11+dfsg.orig/root/base/page/rollback.tt0000644000175000017500000000037011357175324023047 0ustar gregoagregoa[% IF user.can_edit(page.path) && rev %]
    [% END %] libmojomojo-perl-1.11+dfsg.orig/root/base/page/suggest.tt0000644000175000017500000000100111357175324022727 0ustar gregoagregoa[% WRAPPER page/wrapper.tt title = c.expand_wikilink(proto_pages.last.name_orig) %]

    [% loc('The following pages in the requested path do not exist:') %]

    ... [% FOREACH page IN proto_pages %] / [% page.name_orig %] [% END %]

    [% loc('Click on a link above to create that page.') %]

    [% END %] libmojomojo-perl-1.11+dfsg.orig/root/base/page/print.tt0000644000175000017500000000110111630142452022371 0ustar gregoagregoa[% PROCESS header.tt %]

    [% c.pref("name") %]
    [%c.expand_wikilink(page.path)%] [%IF c.req.params.rev %] ([% loc('Revision') %] #[%c.req.params.rev%])[%END%]

    [% content.formatted(c) %]
    libmojomojo-perl-1.11+dfsg.orig/root/base/page/search.tt0000644000175000017500000000022011357175324022515 0ustar gregoagregoa[% WRAPPER page/wrapper.tt title=loc('Search Results') +%]
    [%+ PROCESS page/search_inline.tt | indent 4 +%]
    [% END %] libmojomojo-perl-1.11+dfsg.orig/root/base/page/wrapper.tt0000644000175000017500000000200011357175324022726 0ustar gregoagregoa[% PROCESS header.tt index_page=index_page +%] [% IF admin_header; PROCESS admin/toplinks.tt; ELSIF ! simple_header; PROCESS breadcrumbs.tt; # PROCESS sidebar.tt; PROCESS navbar.tt; reverse = c.action.reverse; IF reverse == 'pageadmin/edit'; PROCESS page/editbar.tt; END; END; %] [%+ content +%] [%+ IF simple_footer; PROCESS footer.tt; ELSIF gallery_footer; PROCESS gallery/footer.tt; ELSE; PROCESS page/bottomnav.tt | indent 4; PROCESS footer.tt; END; %] libmojomojo-perl-1.11+dfsg.orig/root/base/page/attachments.tt0000644000175000017500000000273011464233170023564 0ustar gregoagregoa[% WRAPPER page/wrapper.tt title=loc('Attachments for') _ " " _ page.name %]
    [% IF c.req.params.plain || ! c.user.obj %] [% IF c.user.obj %]

    ([% loc('Switch to flash uploader') %])

    [% END %]
    [% ELSE %] [% loc('Choose attachments') %]

    [% loc('Please select a file to attach to this page. To upload multiple files, hold CTRL while selecting multiple files in the file selection pop up window.') %]

    [% loc('If the flash uploader gives you problems, switch to the')%] [%loc('plain uploader')%]

    [% END -%]
    [%+ PROCESS attachments/list.tt | indent 4 IF page.attachments.size %]
    [% END # End WRAPPER %] libmojomojo-perl-1.11+dfsg.orig/root/base/page/permissions.tt0000644000175000017500000000706611357175324023642 0ustar gregoagregoa[% WRAPPER page/wrapper.tt pre_title="Edit" %]
    [% IF message %]

    [% message %]

    [% END %]

    [% loc('Inherited permissions') %]:

    [% IF inherited_perms && inherited_perms.size > 0 %] [% FOREACH perm_set IN inherited_perms %]
    [% loc('From') %] [% perm_set.path %]:
            [%- perms = perm_set.perms -%]
            [% FOREACH role IN perms.keys.sort;
                role_perms = perms.$role;
                perms_list = [];
                perms_list.push(loc('read'))  IF role_perms.view == 'yes';
                perms_list.push(loc('write')) IF role_perms.edit == 'yes';
            -%]
        
    [% role -%] [% loc('can') %] [% perms_list.join(', ') || loc('not access page') -%] [% END %]
    [% END %] [% ELSE %] [% loc('None') %]. [% END %] [% IF current_perms && current_perms.size > 0 %]

    [% loc('Permissions for this page') %]:

    [% FOREACH perm_set IN current_perms %] [% IF perm_set.perms && perm_set.perms.size >0 %]

    [% loc('Role') %] [% perm_set.role_name %]:

    [% FOREACH current_perm IN perm_set.perms.keys.sort %]
    [% loc(current_perm) %] = [% loc(perm_set.perms.$current_perm) %] [% # loc('view') loc('read') loc('write') loc('delete') loc('create') loc('attachment') loc('yes') loc('no') %] [% END %] [% END %]
    [% END %] [% ELSE %] [% loc('None') %]. [% END %] [% IF user.is_admin %]

    [% loc('Edit permissions for this page') %]:

    [% FOREACH perm IN current_perms %] [% perms = perm.perms %] [% END # current_perms %]
    [% loc('create') %] [% loc('read') %] [% loc('write') %] [% loc('delete') %] [% loc('attachment') %] [% loc('apply to subpages') %] [% loc('actions') %]
    [% perm.role_name %] [% loc('Edit') %] [% loc('Save') %] / [% loc('Use inherited permissions') %]
    [% END %]
    [% END # End WRAPPER %] libmojomojo-perl-1.11+dfsg.orig/root/base/page/editbar.tt0000644000175000017500000000133511357175324022672 0ustar gregoagregoa
    libmojomojo-perl-1.11+dfsg.orig/root/base/page/tags.tt0000644000175000017500000000235711357175324022223 0ustar gregoagregoa
    [% loc('My tags') %]:
      [% IF tags %] [% FOREACH tag IN tags %] [% IF tag.tag == highlight +%] [% tag.tag %] [% ELSE +%] [% tag.tag %] [% END %] [x][% UNLESS loop.last() %],[% END %] [% END %] [% END %]
    [% loc('Popular tags') %]:
      [% IF others_tags %] [% FOREACH othertag IN others_tags %] [% SET tagmatch='\b' _ othertag.tag _ '\b' %] [% NEXT IF taglist.match(tagmatch) %] [% IF othertag.tag == highlight +%] [% othertag.tag %] [%+ IF user.active +%] [+][% UNLESS loop.last() %],[% END +%] [% END %] [% END %] [% END %]
    libmojomojo-perl-1.11+dfsg.orig/root/base/page/insert.tt0000644000175000017500000000030211357175324022555 0ustar gregoagregoa[% TRY -%] [% PROCESS $type -%] [% CATCH file -%] [% TRY -%] [% PROCESS $family -%] [% CATCH file -%] [% PROCESS 'mimetypes/default.tt' -%] [% END -%] [% END -%] libmojomojo-perl-1.11+dfsg.orig/root/base/page/addtags.tt0000644000175000017500000000077411357175324022675 0ustar gregoagregoa libmojomojo-perl-1.11+dfsg.orig/root/base/page/rss_full.tt0000644000175000017500000000153411357175324023112 0ustar gregoagregoa [ [% c.pref('name') %] ] Content for [% page.name_orig %]. [%c.uri_for('view')%] [% loc('Recent changes in x', page.path) %] [% lang %] 40 [% FOREACH page IN pages %] [% IF c.check_permissions(page.path,c.user).view %] [% c.expand_wikilink( page.name_orig ) %] [% page.content.pub_date%] [% c.uri_for(page.path) %] [% c.uri_for(page.path) %] [% page.content.creator.login %] [% END %] [% END %] libmojomojo-perl-1.11+dfsg.orig/root/base/page/delete.tt0000644000175000017500000000152011357175324022516 0ustar gregoagregoa[% WRAPPER page/wrapper.tt title = loc('Delete', page.path) %]
    [% IF allowed_to_delete %]

    [% loc('Are you sure you want to delete') %] [% page.name_orig %]?

    [% loc('The following pages will be deleted. This can not be undone') %].
    [% ELSE %]

    [% loc('Sorry') %]

    [% loc('You lack permissions to delete this page (or any of the sub pages).') %]
    [% END %]
      [% FOREACH descendant IN descendants %]
    • [% descendant.name %] [% descendant.can_delete ? '✔' : '✖' %]
    • [% END %]
    [% IF allowed_to_delete %]
    [% END %]
    [% END # WRAPPER %] libmojomojo-perl-1.11+dfsg.orig/root/base/page/deleted.tt0000644000175000017500000000042511357175324022665 0ustar gregoagregoa[% WRAPPER page/wrapper.tt title = loc('Deleted') %]

    [% loc('Deleted') %]

    [% loc('The following pages have been deleted') %].
      [% FOREACH page IN deleted_pages %]
    • [% page %]
    • [% END %]
    [% END # WRAPPER %] libmojomojo-perl-1.11+dfsg.orig/root/base/page/list.tt0000644000175000017500000000624111611516766022236 0ustar gregoagregoa[% SET title = loc('All Pages in x', page.path) %] [% WRAPPER page/wrapper.tt title = title %]
    [%loc('Tags')%]: [% WHILE( tag = tags.next ) %] [% IF tag.tag == activetag +%] [% tag.tag %] [% ELSE +%] [% tag.tag %] ([% tag.refcount %]) [% END %] [% END +%]

    [%loc('All Pages')%]

    [%loc('All pages in x listed alphabetically', page.name )%]
      [% FOREACH subpage IN pages +%]
    • [% subpage.path %] [% subpage.content.abstract %]
    • [% END +%]

    [% IF pager.previous_page %] [% loc('Previous page') %] [% END %] [% IF pager.previous_page AND pager.next_page %] | [% END %] [% IF pager.next_page %] [% loc('Next page') %] [% END %]

    [% IF ! activetag +%]

    [%loc('Sub Page Tools')%]

    [%loc('Backlinks')%]

    [% loc('Other pages that link to this page.') %] [% IF backlinks.size +%]
      [% FOR backlink IN backlinks.list +%]
    • [% c.wikiword( backlink.from_page.path, base ) %]
    • [% END +%]
    [% END +%]

    [%loc('Wanted Pages')%]

    [% loc('Links to non-existent pages.') %] [% IF wanted.size +%]
      [% FOR wanted IN wanted.list +%]
    • [% wanted.to_path %]? [% loc('referenced by x', wanted.from_page.path) %]
    • [% END +%]
    [% END +%]

    [% loc('Orphaned Pages') %]

    [% loc('Pages to which no other pages link.') %] [% IF orphans.size +%] [% END +%]
    [%+ END # !activetag +%]
    [% END # WRAPPER %] libmojomojo-perl-1.11+dfsg.orig/root/base/page/inline.tt0000644000175000017500000000003311357175324022530 0ustar gregoagregoa[% content.formatted(c) %] libmojomojo-perl-1.11+dfsg.orig/root/base/page/atom.tt0000644000175000017500000000310511630142451022202 0ustar gregoagregoa[%CALL request.content_type('text/xml' )%] [ [% title || c.pref('name') %] ] [% page.path %] [% page.content.created.datetime %]-00:00 [%loc('Recent changes in x',page.path)%] tag:[%c.base_uri.host%],[%c.tz(page.content.created).ymd('-')%]:[%page.path%] [% title || "MojoMojo"%] [%FOREACH page IN pages %] [% IF c.check_permissions(page.path,c.user).view %] [% page.name %] [% page.content.created.datetime %]-00:00 [%IF page.revisions %][% page.revisions.last.updated.datetime %][% ELSE %][% page.content.created.datetime %][% END %]-00:00 tag:[% c.base_uri.host %],[% c.tz(page.content.created).ymd('-') %]:[% page.path %] [% IF page.revisions %][% page.revisions.last.updated.datetime %][% ELSE %][% page.content.created.datetime %][% END %]-00:00 [% page.content.body %] [%page.content.creator.name%] [%c.uri_for( page.content.creator.link )%] [% END %] [%END%] libmojomojo-perl-1.11+dfsg.orig/root/base/page/info.tt0000644000175000017500000000517711357175324022223 0ustar gregoagregoa[% IF page.name == "/"; _name = c.pref( "name" ); ELSE; _name = c.expand_wikilink( page.name_orig ); END %] [% WRAPPER page/wrapper.tt title = loc('Page info for x', page.path) %]

    [% page.name_orig | html %]

    [% loc( 'x revisions', page.versions_rs.count )%]:

    [% FOREACH version IN page.versions %] [% END %]
    [% loc('Version') %] [% loc('Date') %] [% loc('Created by') %]
    [% version.version %] [% version.created.strftime( '%Y-%m-%d %H:%M:%S' ) %] [% version.creator.name %] [% loc('Show revision') %]
    [%loc('Active version')%]:
    [% page.content_version %]
    [%loc('Content size')%]:
    [% body_length %] [% loc('chars') %]
    [%loc('Children')%]:
    [% page.children.size || 0 %]
    [%loc('Descendants')%]:
    [% page.descendants.size %]
    [%loc('Links to')%]:
    [% page.links_to.size || 0 %] [% loc('pages') %]
    [%loc('Links from')%]:
    [% page.links_from.size || 0%] [% loc('pages') %]
    [%loc('Attachments size')%]:
    [% attachments_size || 0%] [% loc('bytes') %]
    [%loc('Attachments')%]:
    [% attachments || 0%]
    [%loc('Photos')%]:
    [% page.has_photos || 0 %]
    [% page.content.abstract %] [% IF page.links_to.first ; +%]

    [% loc('Linked from') %]:

    [% END %]
    [%+ IF c.user.obj.can_edit(page) # FIXME: inline editing needs to be formatted same as viewing the element.%] [%+ END %] [% END # WRAPPER %] libmojomojo-perl-1.11+dfsg.orig/root/base/page/view.tt0000644000175000017500000000322211630142452022215 0ustar gregoagregoa[% WRAPPER page/wrapper.tt index_page=(c.req.params.rev ? 0 : 1) +%]
    [%- IF c.sessionid && c.flash.redirect %] [% loc('Redirected from') %] [% IF (c.pref('anonymous_user') OR user.can_edit(page.path)) %] [% c.flash.redirect %] [% ELSE %] [% c.flash.redirect %] [% END %] [% END %] [%- IF c.req.params.rev %]
    [% loc('Revision') %] [% c.req.params.rev %] - [% c.tz(content.created).ymd %] [% loc('at') %] [% c.tz(content.created).hms %] [% IF c.req.params.rev > page.content_version %] [% loc('Rolled Back (Current: x)', page.content_version) %] [% END %]
    [% END +%]
    [%- IF render == 'highlight' +%] [%+ content.highlight(c) %] [% ELSE +%] [%+ content.precompiled || content.formatted(c) %] [% END %]
    [% END # WRAPPER %] libmojomojo-perl-1.11+dfsg.orig/root/base/page/subtree.tt0000644000175000017500000000102411357175324022724 0ustar gregoagregoa[% SET title = loc('All Pages in x', page.path) %] [% WRAPPER page/wrapper.tt title = title %]
    [% styled_page_name = '' _ page.name _ '' %]

    [% loc('All pages in x listed alphabetically', styled_page_name ) %]

    [% FOREACH subpage IN pages +%] [% END +%]
    [% END # WRAPPER %] libmojomojo-perl-1.11+dfsg.orig/root/base/page/rss.tt0000644000175000017500000000163011357175324022065 0ustar gregoagregoa [ [% c.pref('name') %] ] [% loc('Headlines for x', page.name_orig) %] [%c.uri_for('view')%] [% loc('Recent changes in x', page.path) %] [% lang %] 40 [% FOREACH page IN pages %] [% IF c.check_permissions(page.path,c.user).view %] [% c.expand_wikilink( page.name_orig ) %] [% IF page.isa('MojoMojo::M::CDBI::PageRevision') %] [% loc('Revision from x', page.content.created.datetime) %][% END %] [% page.content.pub_date %] [% c.uri_for(page.path) %] [% c.uri_for(page.path) %] [% page.content.creator.login %] [% END %] [% END %] libmojomojo-perl-1.11+dfsg.orig/root/base/page/bottomnav.tt0000644000175000017500000001021312144005705023252 0ustar gregoagregoa[% IF template.name == "page/view.tt" or template.name == "page/highlight.tt" %] [% IF user %] [% PROCESS page/addtags.tt %] [% END %]
    [% PROCESS page/tags.tt %]
    [% END %]
      [% IF (!rev OR rev==page.content_version) %] [% PROCESS this_page_link.tt, accesskey = 0 %] [% IF c.check_permissions(page.path, c.user).delete && page.id && page.id > 1 +%]
    • [%loc('Delete page')%]
    • [% END %] [% IF c.req.action=='info' +%]
    • [%loc('Page Info')%]
    • [% ELSE +%]
    • [%loc('Page Info')%]
    • [% END %] [% IF page.content_version && page.content_version > 1 +%]
    • [%loc('Back in time')%] ([% page.content.max_version%] [% loc('revision') %][% IF page.content_version > 1 && !(lang=="pl"||lang=="ru"); "s" ; END %]) [%# TODO lame language-specific pluralization %]
    • [% END %] [% IF (page.content_version AND page.content.max_version AND page.content_version < page.content.max_version) +%]
    • [%loc('Forward in time')%] ([% loc('x more',page.content.max_version - page.content_version )%])
    • [% END %] [% ELSE %] [% IF (rev AND page.content.max_version AND rev < page.content.max_version) +%]
    • [%loc('Forward in time')%] ([% loc('x more',page.content.max_version - rev) %])
    • [% END %] [% IF rev AND rev > 1 +%]
    • [%loc('Back in time')%] ([% loc('x more', rev - 1) %])
    • [% END %] [% UNLESS rev||0 == page.content_version||0 +%]
    • [%loc('Current Revision')%]
    • [% END %] [% END %] [% IF page.content_version && page.content_version > 1 +%]
    • [%loc('See changes')%]
    • [% END +%]
    • [% loc('Views') %]: [%loc('Print')%] RSS [%loc('Inline')%] [% IF c.req.params.rev %] [% PROCESS page/rollback.tt | indent 6 %] [% END %]
    • [% IF user.is_admin +%]
    • [%loc('Site settings')%]
    • [% END %] [%# TODO: this needs to become a dropdown -%]
    • [% loc('Set language') %]: [% FOREACH lang IN ['en','de','fr','ja','no','ca','es','pl','ru','it'] +%] [%lang%] [% END +%]
    libmojomojo-perl-1.11+dfsg.orig/root/base/page/recent.tt0000644000175000017500000000416511630142452022532 0ustar gregoagregoa[% IF page.path == '/'; SET title = loc('Recent pages in this wiki'); ELSE; SET title = loc('Recent pages in x', page.path); END; IF activetag; SET title = loc('Recent pages in x tagged with x', [page.path, activetag]); END; SET now = c.tz(objects.first.content.created).ymd; %] [% WRAPPER page/wrapper.tt title = title %]
    [% IF tags.count %]
    [% loc('Tags') %]: [% WHILE (tag = tags.next) %] [% IF tag.tag == activetag %] [% tag.tag %] [% ELSE %] [% tag.tag %] ([% tag.refcount %]) [% END %] [% END %]
    [% END %]

    [% now %]

    [% first = 1 %] [% FOREACH page IN pages %] [% IF c.check_permissions(page.path,c.user).view %] [% IF now != c.tz(page.content.created).ymd; %] [% IF first; first = 0; ELSE %] [% END %] [% SET now = c.tz(page.content.created).ymd %]

    [% now %]

    [% END %] [% END %] [% END %]
    [% loc('Page') %] [% loc('Edited by') %] [% loc('Time edited') %] [% loc('Actions') %]
    [% page.name_orig %] [% page.content.creator.name %] [% c.tz(page.content.created).hms(":") %] [% loc('View Diff') %]
    [% END # End WRAPPER %] libmojomojo-perl-1.11+dfsg.orig/root/base/page/edit.tt0000644000175000017500000000627511357175324022215 0ustar gregoagregoa[% USE JavaScript; # figure out the extra title part; IF page.content_version; SET pre_title = loc("Editing"); ELSE; SET pre_title = loc("Creating"); END; # TODO: Make Edit/Attachment an ajax action, so you can go # to attachments while editing and let it retain your content. # Now, edits are lost. %] [% WRAPPER page/wrapper.tt pre_title=pre_title %]
    [% PROCESS edithelp.tt %]
    [% IF page.content.formatted(c) %] [% page.content.formatted(c) %] [% ELSE %] [%loc('To start editing this page, write in the text area below this preview. To find out what kind of codes you can use click the syntax link above.')%] [% END %]
    [% FOREACH column IN ['id','depth','name','name_orig','path'] +%] [% END +%] [% IF message %]

    [% message %]

    [% END +%]
    [% loc('busy spinner') %]
    [% loc('as') %] [% IF user.id %] [% c.wikiword(user.link, base, user.login, 'profile') %] ([%loc('forget me')%]) [% ELSE %]
    ([% loc('Leave the second field blank if you do not want a password') %]) [% END %] [% captcha +%]
    [% END # WRAPPER %] libmojomojo-perl-1.11+dfsg.orig/root/base/comment/0000755000175000017500000000000012546272315021432 5ustar gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/base/comment/login.tt0000644000175000017500000000120311357175324023110 0ustar gregoagregoa
    [% loc('You have to log in to post a comment.') %] ([% loc('register') %]) [% IF fail%]

    [% loc('Could not authenticate that login.') %]

    [% END %]
    [% loc('login') %]:
    [% loc('password') %]:
    libmojomojo-perl-1.11+dfsg.orig/root/base/comment/post.tt0000644000175000017500000000052611357175324022774 0ustar gregoagregoa
    [% loc('as x', c.wikiword(user.link,base)) %] ([% loc('forget me') %])
    libmojomojo-perl-1.11+dfsg.orig/root/base/footer.tt0000644000175000017500000000041311357175324021636 0ustar gregoagregoa
    [%loc('Powered by Catalyst')%]
    libmojomojo-perl-1.11+dfsg.orig/root/base/tag/0000755000175000017500000000000012546272315020543 5ustar gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/base/tag/cloud.tt0000644000175000017500000000071611357175324022227 0ustar gregoagregoa[% SET title = loc('Tags under x', page.name) %] [% WRAPPER page/wrapper.tt title=title index_page=1 %]
    [% IF cloud.tags(1); cloud.html_and_css(50); ELSE; loc('No tags in use.'); END; %] [% IF page.depth %]

    [% SET link = '' _ loc('All tags') _ '' %] [% loc('Or you can check out x instead', link) %]

    [% END %]
    [% END # WRAPPER %] libmojomojo-perl-1.11+dfsg.orig/root/base/tag/list.tt0000644000175000017500000000251011357175324022066 0ustar gregoagregoa[% PROCESS header.tt %] [% UNLESS page.name == "/" %][% PROCESS breadcrumbs.tt %][% END %]

    [% c.pref("name") %]
    [% loc('All Pages') %]

    [% PROCESS navbar.tt %]
    [% loc('tags') %]: [% FOREACH tag IN tags %] [% IF tag.tag==activetag %] [% tag.tag %] [% ELSE %] [% tag.tag %] ([% tag.refcount %]) [% END %] [% END %]

    [% loc('List by x', activetag) %]
    [% loc('All pages tagged with x listed alphabetically', activetag) %]
    [% loc('Recent pages in x', activetag) %]

    [% loc('Related Tags') %] ([% loc('common uses') %])

      [% FOR reltag = related.list %]
    • [% reltag.tag %] ([% reltag.refcount %])
    • [% END %]
    [% PROCESS footer.tt %] libmojomojo-perl-1.11+dfsg.orig/root/base/tag/recent.tt0000644000175000017500000000205611630142452022366 0ustar gregoagregoa[% PROCESS header.tt %] [% SET now=c.tz(pages.first.updated).ymd; %] [% PROCESS breadcrumbs.tt %] [% PROCESS navbar.tt %]
    [% loc('Tags') %]: [% FOREACH tag IN tags.list %] [% IF tag.tag==activetag %] [% tag.tag %] [% ELSE %] [% tag.tag %] ([% tag.refcount %]) [% END %] [% END %]
    [% now %]
      [% FOREACH page IN pages %] [% IF now != c.tz(page.content.created).ymd; %] [% SET now = c.tz(page.content.created).ymd; %]
    [% now %] [% PROCESS footer.tt %] libmojomojo-perl-1.11+dfsg.orig/root/base/navbar.tt0000644000175000017500000000570011611516766021617 0ustar gregoagregoa libmojomojo-perl-1.11+dfsg.orig/root/themes/0000755000175000017500000000000012447042202020331 5ustar gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/themes/pink-lady/0000755000175000017500000000000012546272315022233 5ustar gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/themes/pink-lady/page/0000755000175000017500000000000012447042202023135 5ustar gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/themes/pink-lady/page/tags.tt0000644000175000017500000000277511357175324024472 0ustar gregoagregoa
    [% loc('My tags') %]:
      [% IF tags %] [% FOREACH tag IN tags %] [% IF tag.tag == highlight +%] [% tag.tag %] [% ELSE +%] [% tag.tag %] [% END %] [x][% UNLESS loop.last() %],[% END %] [% END %] [% END %]
    [% loc('Popular tags') %]:
      [% IF others_tags %] [% FOREACH othertag IN others_tags %] [% SET tagmatch='\b' _ othertag.tag _ '\b' %] [% NEXT IF taglist.match(tagmatch) %] [% IF othertag.tag == highlight +%] [% othertag.tag %] [%+ IF user.active +%] [+][% UNLESS loop.last() %],[% END +%] [% END %] [% END %] [% END %]
    [%loc('Powered by Catalyst')%]
    libmojomojo-perl-1.11+dfsg.orig/root/themes/pink-lady/footer.tt0000644000175000017500000000003211357175324024076 0ustar gregoagregoa libmojomojo-perl-1.11+dfsg.orig/root/themes/madrid-pm/0000755000175000017500000000000012546272315022215 5ustar gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/themes/madrid-pm/header.tt0000644000175000017500000000563511357175324024030 0ustar gregoagregoa [% IF title; title %] [% ELSIF page %] [% c.expand_wikilink(page.name_orig) %] [% END %] - [% c.pref('name') %] [% UNLESS index_page %][% END %] [% IF (c.action.reverse == 'pageadmin/edit') %] [% END %]
    [% PROCESS top.tt %] libmojomojo-perl-1.11+dfsg.orig/root/themes/madrid-pm/top.tt0000644000175000017500000000010511357175324023365 0ustar gregoagregoa libmojomojo-perl-1.11+dfsg.orig/root/themes/madrid-pm/navbar.tt0000644000175000017500000000565211357175324024050 0ustar gregoagregoa libmojomojo-perl-1.11+dfsg.orig/root/themes/purple-pleasure/0000755000175000017500000000000012447042202023456 5ustar gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/themes/purple-pleasure/header.tt0000644000175000017500000000603511357175325025277 0ustar gregoagregoa [% IF title; title %] [% ELSIF page %] [% c.expand_wikilink(page.name_orig) %] [% END %] - [% c.pref('name') %] [% UNLESS index_page %][% END %] [% theme_js_path = 'themes/' _ my_theme_dir _ '/js' _ '/theme.js' %] [% IF (c.action.reverse == 'pageadmin/edit') %] [% END %]
    [% PROCESS top.tt %] libmojomojo-perl-1.11+dfsg.orig/root/themes/purple-pleasure/page/0000755000175000017500000000000012447042202024372 5ustar gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/themes/purple-pleasure/page/wrapper.tt0000644000175000017500000000310011357175325026431 0ustar gregoagregoa[% PROCESS header.tt index_page=index_page +%] [% IF admin_header; PROCESS admin/toplinks.tt; ELSIF ! simple_header; PROCESS breadcrumbs.tt; # PROCESS sidebar.tt; PROCESS navbar.tt; reverse = c.action.reverse; IF reverse == 'pageadmin/edit' || reverse == 'attachment/attachments'; PROCESS page/editbar.tt; END; END; %] [%+ content +%] [%+ IF simple_footer; PROCESS footer.tt; ELSIF gallery_footer; PROCESS gallery/footer.tt; ELSE; PROCESS page/bottomnav.tt | indent 4; PROCESS footer.tt; END; %] libmojomojo-perl-1.11+dfsg.orig/root/themes/purple-pleasure/page/tags.tt0000644000175000017500000000275711357175325025730 0ustar gregoagregoa
    [% loc('My tags') %]:
      [% IF tags %] [% FOREACH tag IN tags %] [% IF tag.tag == highlight +%] [% tag.tag %] [% ELSE +%] [% tag.tag %] [% END %] [x][% UNLESS loop.last() %],[% END %] [% END %] [% END %]
    [% loc('Popular tags') %]:
      [% IF others_tags %] [% FOREACH othertag IN others_tags %] [% SET tagmatch='\b' _ othertag.tag _ '\b' %] [% NEXT IF taglist.match(tagmatch) %] [% IF othertag.tag == highlight +%] [% othertag.tag %] [%+ IF user.active +%] [+][% UNLESS loop.last() %],[% END +%] [% END %] [% END %] [% END %]
    [%loc('Powered by MojoMojo')%]
    libmojomojo-perl-1.11+dfsg.orig/root/themes/purple-pleasure/footer.tt0000644000175000017500000000003211357175324025333 0ustar gregoagregoa
    libmojomojo-perl-1.11+dfsg.orig/root/themes/purple-pleasure/navbar.tt0000644000175000017500000000767611357175325025334 0ustar gregoagregoa[%# This template is deprecated. See the corresponding .tt file in the madrid-pm theme instead. %] libmojomojo-perl-1.11+dfsg.orig/root/themes/catalyst/0000755000175000017500000000000012546272315022167 5ustar gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/themes/catalyst/top.tt0000644000175000017500000000230411357175324023342 0ustar gregoagregoa libmojomojo-perl-1.11+dfsg.orig/root/themes/catalyst/footer.tt0000644000175000017500000000115511357175324024041 0ustar gregoagregoa
    [%loc('Powered by Catalyst')%]
    [%loc('Powered by MojoMojo')%] Hosted by Shadowcat - Managed by Nordaaker
    libmojomojo-perl-1.11+dfsg.orig/root/static/0000755000175000017500000000000012546272315020345 5ustar gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/static/Crystal_Clear_action_stop.png0000644000175000017500000002173511357175324026215 0ustar gregoagregoaPNG  IHDR>agAMAܲ#IDATx] == jEp 1.ADQ0(1(%QQ qW4FAA FEMdfXfUS]༏{s}w߫OoA3[3[3_KD [e?LNM5,9/(z$0[?l&?+9BN4Qmld\kA٭klޠ1 y``l4_X6rl?ȶ xapFѿ!`lk Z<-?x?i? p啂"B8b!_͍FLnI1i%~4x P'Q?[\Ơ &Bm&eN;<бcӏ#$(q"AF=;C Qm`_i|rjUwn,)Rı/fQbo(k͌wF(ml˔8\ \ueo +EŶb2t(F]@|vI KtNtL=Lc[q8_6S$A2,EEɵ(qH2l%S&Qb};_}KmK;vh8;StA2F$@D;,F% X//>4"GR(IPfDb!Cû>X;,UP&2iJ߳{-[' SQ"Xc{=@sז-:"M#.8)^/2,غXR.H|۩??˗G8(]M q ?JOAjfH_~ 4>}fA0k 8]P: -K=ӺA[#q5 O6 tSOh*B8]p(`jCa,j{?#_=PJcdNb ŋ*|9svbPD=IvpMGҊ>q+]EzoV  {Gj 1Ljzh; 76I Uo Q2&܌IT`iGC>?X% կ_AggVE_}%Rǽ |zuboYXgGġ1(9C$B>OK?'GO\ iy{^q^v K0#uC| м&=DDu\qi#.䨆oիuql'{2OQUEAٮ R ej 9JQT h"B߾$PU6 oG`3 8 6m*HYCj+=tAȮ/8JDމ'&v# kHD&> *D}NI,@EBs8肐5/!{=.b7XCA[M hM(g֬K^qH㎷L2 m0H.?{=22kh69.$CQB:ɜOkLIWa(1͞ t+K_p*/'D[ي_'C}Kf%@g!(+ӳ'jM㰪&`07o1QỎ@w=z,XΕb##b+$`:22R ok("J&@_{[|Euq~kc93Öa1H,(H*5%%(5 ;v A AYFf$c>crcA+*B8HZpqP'm$$>Ó f ܵ mSS`{^d`8΄g?$_´,RSB:4y$Hb۵nSN;|/`@ȥͲvo^SNb< V$XIP*H; hπTtf naKꨬD]n( OD>eBf&JE" Ck:>2~ZZp?] OSO@=BBǣ$5!C\&@vgդIP2{FyA߳\0B`t79qHJ/ ^KOAv9SVD_$\`FbH4\<II`РFOqTToެOp{ l 9Mv3Q} ԠRt ?xpDH~0^dPe;ހ0 D@l^E@p7$Ax޽xMMf&;2.J>oP,?f\\}I<)RklON4~?+rI̞=;dHM/x99HIM=V@E_Peڭ*8`PP.7;];^$Aߣ]!f[o=x2D~ arv0 p& 1Th(b@Vpp8W)6;bR5A#@XP?]@o۪\DBY_6Y.,%neh+cʉdA5uu(g4s#$}oZU*j?MoӺu0D`O[?o@̭_4Z'zo,Y{BOD&g&̘̕+CC: ؖ2`;׆Y}}\ý(SA|[>̳*X&(A[o+h\lf*c/\NN g8ÈɚiYbvNΠM/!HRbX,$My08\!=.V$DfP|Z~{ 4Hm |n"fOO?ジr+ }s'F#^x?q9K?F̕ڬ}7|kE.˚{/tOZ~ |cU^ ݸ$]SNAj\%$C܇W.SQa.  9t#h7qZy"VIFj^\S$p܉ ~emD^|N2mNJ*= `1~>GVlj$:.ugefy4|7*tZ#7 8sU,=6uI+n61N ټܻ>I0( 'J#xMЗKtdw ιT*j |<#sɶ5N4Hx8[FG: rh;H`s|˿$<+ϒ0e%|?Dʙg&SpN$X2KpLۋ~z5k5Y 9T`Ro\m(099/yfOHLp:B/ E|^]`4 t:w7k |c0}d50΄HNq^nAx1?p8ě\NVF9Ǝ|tTkSeSk|? 7&_|Q4,19>CO䒀s>YkC hGszgd&@,n1SC2/_oi4H}NgwE.al;ݼqXU]` &᭽3H|7ϔPظ sJINa}'p"F|[Q 7|&8,I#"r*'Ua\kŎW;h40/p!j B1R@w=Xr||tFtЂ9s"υ16! ڨbvR`)\6B(տs]:;Em]~=D @ԊATd[ҏؼP#zCdHș0aD ur<Fmgn.4L;_|1z0@$T-#[T([CDVl[`!A`EȐĊ8]ácv|@p ^Ra*mb}Yr ~I}t( [Hi!&֟-gAtBΎh[KZfKO||d(Psu+?I {'c_D06eJ\]'H!1v o g|VP{:*dKIFW_E7 C~rC!Cmw}K׹P[U_qՋs A#[7㘡Xܢ"l6qGqػ7ڼLVqʍ+RDXrP#Y t f2vΛ=(+_%GQOo"Lɹìw`InUwg]6B}/]yB}-:Ĕ#p_ }'Ju>pаt%ZT #$eܾ@`u8uCZ*^,{u3#)տU_k|ij̀$("Iu=0FhG@]g#5+k8d|Նs"PC=5"#NuN@[ ϴZ a ,< ]Aim>G" :O0Az[|ClfUځo~PO7"?;n{ղsj,~-w3Զw}RezxEګ.ÿKޯLQ .IӐϒ,ÐDN"A,]@PzeO2/2E߭Rn[~ rN@TE\8 İs31,1e'"t:Fc<x+BZ}~a)xUdX>y cr5N!!!E]`8Z?\P(a]W*z & E3Vݼ!tnߩ>x'7r~9l`73(/0_250&DFy#!-?, cw`Tv pp#J՛ @eFt-}SJҿ6?Jǃ![@z'"#JO%1m .E9d~ᔂܿ]رW%KoVy=#zaZү*x!#zoT0<1~<`t@"u!#a >;o>OG`C+W{.Um6?_A_}z-Sa^_c!9BȴFKp' F@>'j&Xyi{lsxoT4"h >; X&U.[e7ܠ%zQ}L K0\uk32IFT8dk'a"$8t|3!^ڑKz?|2[ͩk.CogoWnJ?Q0"~aMh%Cx_4w3\0d&"71D8ߎTF$guZ+dOQ9}_J?0GQ.KAe"GrHk:)T&V '5#f[{].߾&=c(~~ ` tQ Zt邢qЂ;w q'0ιa!D0aw o=[7B:u ?0G8 ttdžB6 .Uˡ:F99h;f6~y Irt?uASnXg>ƇF5GG], Qϭ)i,0[Ǭ#o? W\]/MŊg { 絕q~i{; 46pbj+ZU!B-/$BEc.R י(AkI$B8'5䜜+RB;vh~JB>L _zT\=bQaJsmFq˖c:ݺ'V/x!M &_W 6BT[JJO )jѢ20V$A (+OT(j+0頺mcrrITVZBqp  \G0|n5u# kLAc l7pJ`y'(W`Z"isS27Zz~?/W%I.`־D8*0ݪOu|ez8Y"$0jᒙ'-JO^C [Hٽ^u\QVV L Qj`=^:Q!6 53p6ZO/Q,);Q  G@l^ba"-$ R:σ1?T"!J `Ą%* ċl4HDa+Q4\"  RaVg @!, otp8_sZ7L2>ngwhP7'tbcAr.: *2rb"K[\,A?B= M"- aɊH!1?!,d d=befN>]Ic.lF61 Zb3gA#Mc_XdE7k_$17|yC,FwWmZ'/zR[ #VQ!,b -%#!2;/ZY!Nqjc6#Pb,O e5.=P_veVf*gJ&moo6dKq$>|`͇)" !, m#=!2;/2Y!6  O!G#H;2^^H+c3d;JqBfEfZ!_m*.G>Sg<(hSkRPp!, rB1 OD,U  GM& !R ,D(HmzP 2-FbnG}5Z`ch+3!DIe/;cZ !, dV,P33fA}EmE"-,$Cd{u?F|e=b 2(],G3K!j%y[_t e?QF+H5"0(). !, rO:!2;>W."X2Y!Ml|sN1d^X_pxk7hG% HmFnS. CCJ]PL6^j?#V5' +)!,a :8oC|u(U! 3s hP'X*h^;edj%dXXg(D)nePI~q='/$ ;libmojomojo-perl-1.11+dfsg.orig/root/static/mojomojo.css0000644000175000017500000004604511357175324022722 0ustar gregoagregoa/* @override http://mojomojo.org:3000/.static/mojomojo.css http://localhost:3000/.static/mojomojo.css */ @import "reset.css"; /* @group Headlines */ .logintext { font-weight: bold; font-size: 1.25em; margin: 1em 0 1.5em 13px; } h1 { font-size: 2.5em; } #content h1 { margin-top: 0; font-size: 2em; } h2 { font-size: 1.4em; } h3 { font-size: 1.2em; } h4 { font-size: 1.1em; } h5, h6 { font-size: 1em; } .toc { display: inline-block; background-color: #F6F6F6; border: 1px solid #AAAAAA; padding: 1em; margin: 1em; } .toc ul { margin: 0; margin-left: -1em; padding: 0; } .toc > ul { margin-left: -2em; } .toc li { margin: 0; padding: 0; font-size: 1em !important; /* some rule makes the font smaller as the indentation increases */ } /* @end */ #htmltagcloud span { margin: 0 0.4em; } /* @group Links */ a, a:visited { color: #2274A8; text-decoration: underline; } #content a:visited { color: #996699; /* per accessibility guidelines. See http://universalusability.com/access_by_design/links/differentiate.html */ } a:hover, #content a:hover { color: #004276; } /* @end */ /* @group Navigation */ form { margin: 0;} .navigation { color: #999; } a.navOn { color: #3a3a3a; background: #fff; font-weight: bold; text-decoration: none; } ul#toplinks-for-user { float: right; } .inputBox { background-color: #eee; padding: 5px; margin-bottom: 20px; } blockquote { display: block; width: 80%; background-color: #EEE; border : 1px dotted black; padding-right: 2em; padding-left: 2em; font-style: italic; quotes: "\201C" "\201D"; } blockquote:before, blockquote:after { display: block; color: #7aa5d5; font-size: 5em; } blockquote:before { content: open-quote; height: 0px; margin-left: -0.45em; } blockquote:after { content: close-quote; height: 0.6em; margin-left: 99.5%; margin-top: -0.5em; } pre { width: 90%; background-color: #eee; padding: 10px; margin-left: 3em; margin-right: 1em ; overflow: auto } ol.setup { font-size: 1.5em; font-family: georgia, verdana, sans-serif; padding-left: 25px; } ol.setup li { margin-bottom: 20px } .byline { color: #999; padding-left: 4px; text-align: right; margin-bottom: 0px; } p#message { background: #eee; padding: 0.7em; border: 1px solid silver; margin: 1em 0; } #previewHeading { clear: left; } div#content_preview { clear: left; /* max-width: 920px; */ border: 1px solid #ddd; padding: 5px; overflow: auto; margin: 0 0 1em 0; float: left; width: 49%; } div#edit_form { float: left; width: 49%; } textarea#body { /* max-width: 930px; */ width: 100%; } textarea#comment { height: 150px; width: 400px; } #hidden_info, #edithelp { display: none; position: absolute; z-index: 1; width: 800px; overflow: auto; } div.tab-nav, .syntax_help { background: #ddd; border: 1px solid #aaa; padding: 1em; } div.tab-nav { background: #ccc; border-bottom: 0; margin: 0; padding: 0 1em; height: 1.7em; } div.tab-nav a { outline: none; text-decoration: none; float: left; list-style: none; margin: 0 0.3em; padding: 0.2em 0.6em; } div.tab-nav a.active { background: #ddd; color: #222; } div.tab-nav a.close-button { position: absolute; right: 8px; } .syntax_help table { margin-bottom: 0; border-spacing: 0; } .syntax_help table+h3 { margin-top: 11px; } .syntax_help table th { font-size: 120%; font-weight: bold; } .syntax_help table td { padding: 3px; vertical-align: top; border-top: 1px dotted #ccc; } .syntax_help table td.arrow { padding-right: 5px; padding-left: 10px; color: #999; } .syntax_help table td.label { font-weight: bold; white-space: nowrap; padding-right: 15px; color: #000; } .syntax_help h3 { font-weight: bold; font-weight: normal; margin: 0 0 5px 0; padding: 5px 0 0 0; } .syntax_help h2 { margin-top: 0; } .syntax_help pre { line-height: 90%; font-size: 120%; margin-left: 0; padding: 5px; width: 80%; } .rightHandSide { float: right; width: 187px; margin-left: 10px; padding-left: 20px; border-left: 1px dotted #ccc; } .rightHandSide p { } .newsList { margin-top: 20px; } .newsList p { margin-bottom: 30px; } .add a { color: green; text-decoration: none; vertical-align: middle; } .add a:hover { color: #003800; } a.tag { text-decoration: none; } a.tag:hover { text-decoration: underline; } .remove a { color: red; font-size: 1.1em; margin: 0px 1px; text-decoration: none; } .remove a:hover { color: #650000; } .tagedit { float: right; } #taginput { width: 120px; } .newWikiWord { color: #e33; background: lightyellow; } .newWikiWord a { /* vertical-align: super;; */ background: #f6d8b4; border: 1px solid #dddddd; font-weight: bold; text-decoration: none; color: #e33; padding: 0 2px; margin: 0 0 0 .1em; } #content .newWikiWord a:hover { background: #e33; color: #fff; } .protoPage a:link { color: #ab0b0b; } .protoPage a:visited { color: #666; } .protoPage a:hover { color: #fff; background-color: #ab0b0b; } /* @end */ /* @group Highlighted keywords in search */ .quoted { font-weight: bold; } span#search_hit_score { font-style: italic; font-size: smaller; } /* @end */ /* @group Pagination Links */ #content div.pager { border: 1px solid #eee; padding: .25em; text-align: center; font-size: 1.25em; } #content div.pager ul { list-style: none; margin: 0; padding: 0; font-weight: bold; list-style-position: inside; } #content div.pager .prev { margin: 0; padding: 0; float: left; } #content div.pager .next { margin: 0; padding: 0; float: right; } #content div.pager ul li { display: inline; margin: 0; padding: 0; } div.pager ul li a { text-decoration: none; padding: 2px .25em; } #content div.pager ul li a:hover { color: #fff; background: #2274a8; } #revisions { width: 100%; } dl#pageInfoMeta { padding: 0 0 0 1em; font-family: Arial,Helvetica,sans-serif; } dl#pageInfoMeta dt { line-height: 16px; width: 150px; font-weight: bold; float: left; clear: left; margin: 0; padding: 0; } dl#pageInfoMeta dd { line-height: 16px; width: 200px; } dl#authors { padding: 0; margin: 1.5em 0; } dl#authors dd, dl#authors dt { line-height: 16px; } dl#authors dt { width: 200px; } /* @end */ /* @group Amazon Plugin */ div.amazon { width: 80%; padding-left: 2em; margin: 1em 4em 1em 4em; border: 1px solid #ccc; background: #eee; } div.amazon img { margin: 1.2em; } /* @end */ /* @group Lists */ table.recent { width: 100%; } table.recent .page { width: 50%; } table.recent .editedBy { width: 20%; } table.recent .timeEdited { width: 20%; } table.recent .actions { width: 10%; } /* @end */ /* @group Diff */ .diff { margin-right: 2em; overflow: visible; margin-top: 1em; } .diffdel, del { /* background: #bbb; color: white; */ border: dotted thin #fbbc08; color: #555; text-decoration: line-through; padding-left: 1px; padding-right: 1px; } .diffins, ins { border: dotted thin #fbbc08; background: yellow; color: black; text-decoration: none; padding-left: 1px; padding-right: 1px; } /* @end */ .form dl { margin: 13px; float: left; } .form dt { float: left; width: 10em; line-height: 24px; } .form dd { margin: 0 0 5px 90px; line-height: 24px; margin-left: 80px; } span.statusmsg { color: #335577; margin-left: 1em; font-size: 1.5em; } .login form input { width: 120px; } .thumb { border: none; } .addbutton { margin-right: 0.5em; background: white; } .thumb { background: #ddd; padding: 8px; margin: 8px; } .imageinfo { float: right; padding: 0px; margin: 0px; width: 12em; min-height: 250px; } .imageinfo dl { margin: 0; } .imageinfo h3 { margin-top: 0; } /* Transparent forms */ input.dual,textarea.dual { width: 500px; border: 1px solid #fff; margin: 0.1em; background: transparent; vertical-align: top; } input.dual:focus, textarea.dual:focus { border: 1px solid #000; } .dualbutton { display: none; margin: 0.1em; } big { font-size: 1.6em; } .framedpopup { background: #eee; padding: 3px; border: 1px solid silver; width: 440px; } dl { margin: 13px; font-family: sans-serif; clear: both; } /* Unused? */ dt { float: left; width: 80px; clear: left; } /* Unused? */ dd { margin: 0 0 5px 90px; margin-left: 80px; } div#comments div.comment dd { margin-left: 120px; } /* Common Forms Rules */ .standard_form .fields label { display: block; clear: both; } .standard_form .fields label span { text-align: right; margin-right: .5em; } .standard_form .fields label span, .standard_form .fields label input { display: block; float: left; margin-bottom: 1ex; } /* Role Form */ .role_form .fields label span { width: 6em; } .role_form #member_input { width: 15em; } /* @group sidebar nav menu */ /* code shamelessly stolen from Eric Meyer's http://meyerweb.com/eric/css/edge/menus/demo.html */ /** with some slight modifications of colors, widths, etc. by Dave Naughton **/ #sidebar ul { padding: 0; margin: 0; border-bottom: 1px solid silver; font: 1em sans-serif; } #sidebar ul li { list-style-type: none; border: 1px solid silver; border-width: 1px 1px 0 3px; position: relative; margin: 0; padding: 0; } #sidebar ul ul { display: none; } #sidebar ul li:hover > ul { display: block; position: absolute; top: -1px; left: 100%; } #sidebar li a { display: block; padding: 5px 7px; text-decoration: none; background: #FFF; } #sidebar li.menuParent, li.menuParentMissingChildren > a { font-weight: bold; } #sidebar ul ul {width: 12em;} #sidebar { position: absolute; right: 0; width: 10em; margin: 0; padding: 0; font-family: Arial, sans-serif; } #sidebar > ul { width: 11em; margin-left: -1px; font-size: 85%; } #sidebar ul { border: 1px solid silver; border-width: 0 0 0 1px; } #sidebar ul li { border-width: 1px 0; border-color: white; padding: 0 0 0 5px; line-height: 1.25em; } #sidebar ul ul { border-width: 0 1px 1px 1px; border-color: gray silver gray gray; } #sidebar ul ul li { border-color: #FEFEFC; } #sidebar li > a { background-color: transparent; padding: 3px; } #sidebar li:hover { background-color: #ddf; } #sidebar li.menuParent:hover { margin-left: -12.2em; border: 1px solid gray; background: #D7D6D4; } #sidebar li.menuParent:hover > a { background: inherit; } #sidebar li.menuParent:hover > ul { top: 1.75em; left: -1px; background: #FEFEFC; } ul#menuHome { border-bottom: 1px solid silver; font-weight: bold; } /* end of shamelessly stolen code */ /* @end */ .spinner { float: right; height: 1em; } #editstatus { color: red; } /* color values for errors copied from those for form elements */ img[defang_src] { border: 1px solid #ff0000; background-color: #ffdddd; color: #ff0000; } img[defang_src]:after { content: "External image forbidden due to its URL. Please contact your wiki administrator."; } div.photo img{ margin: 1em; padding: 5px; border: 1px solid; border-color: #ccc #666 #666 #ccc } .end { clear: both; } .inline p,.inline dt,.inline dd{ font-size: 0.8em; width: auto; } acronym { border-bottom: 1px dotted !important; } a.footnote { vertical-align: .6em; font-size: 75%; } a.footnote:before { content: "[" } a.footnote:after { content: "]" } .inplace_field, .inplace_save, .inplace_cancel { font-size: 1em; } #title { margin-left: 1em; } #description { font-style: italic; margin-left: 2em; } #content img.right { margin-left: 1em; float: right; } #content img.left { margin-left: 1em; float: left; } #searchField { padding: 3px; font-size: 1em; border: 1px solid #bbb; margin-left: 10px; } #attachments table { width: 100%; } #attachments table #filename-th { width: 25%; } #attachments table #type-th { width: 25%; } #attachments table #size-th { width: 8%; } #attachments table #date-th { width: 12%; } #attachments table #actions-th { width: 30%; } #attachments table #actions { margin: 0; } #attachments table #actions li { margin-left: 0; padding-left: 0; } /* Copied from HTML-FormFu examples/vertically-aligned/vertically-aligned.css */ fieldset { padding: 1em; } fieldset .button, fieldset .checkbox, fieldset .contentbutton, fieldset .date, fieldset .file, fieldset .image, fieldset .multi, fieldset .password, fieldset .radio, fieldset .recaptcha, fieldset .reset, fieldset .select, fieldset .submit, fieldset .text, fieldset .textarea { display: block; clear: left; border: 0; margin: 1px; /* when no label */ margin-left: 12em; } /* make the noscript textarea sit below the iframe */ fieldset .recaptcha noscript textarea { display: block; } /* override the iframe's height="" - it seems a bit big */ fieldset .recaptcha iframe { height: 230px ! important; } fieldset .button.label, fieldset .checkbox.label, fieldset .contentbutton.label, fieldset .date.label, fieldset .file.label, fieldset .image.label, fieldset .multi.label, fieldset .password.label, fieldset .radio.label, fieldset .recaptcha.label, fieldset .reset.label, fieldset .select.label, fieldset .submit.label, fieldset .text.label, fieldset .textarea.label { margin-left: 1px; } fieldset .error.label { /* border + margin swap values with above, to ensure rows align */ border: 1px #fff; margin: 0; } form .form_error_message { padding: 0.5em; border: 1px solid #ff0000; background-color: #ffdddd; } fieldset .error_message { display: block; color: #ff0000; } fieldset .label .error_message { /* padding-left eq label width + padding-right */ padding-left: 12em; } fieldset .error input, fieldset .error textarea, fieldset .error select { background-color: #ffdddd; } fieldset .button label, fieldset .contentbutton label, fieldset .checkbox label, fieldset .date label, fieldset .file label, fieldset .image label, fieldset .multi label, fieldset .password label, fieldset .radio label, fieldset .radiogroup label, fieldset .recaptcha label, fieldset .select label, fieldset .text label, fieldset .textarea label { display: inline; float: left; width: 11em; text-align: right; padding-right: 1em; } fieldset .radiogroup span label { /* undo the above style */ float: none; width: auto; text-align: left; padding-right: 0; } fieldset .multi .elements { display: block; float: left; } fieldset .multi .elements label { display: block; width: auto; padding-right: 0.25em; } fieldset .multi input, fieldset .multi select { display: block; float: left; margin-right: 0.5em; } fieldset.checkboxgroup, fieldset.radiogroup { margin: 0; margin-left: 12em; padding: 0; width: auto; } fieldset.radiogroup.label { border: 0; margin-left: 0em; } fieldset .comment .comment { /* when no label */ display: block; margin-left: 0em; } fieldset .label .comment { display: block; margin-left: 12em; } /*** Alternative Layouts ***/ fieldset .notes { float: right; width: 30%; border: 1px dotted; } fieldset .multi.vertical input, fieldset.checkboxgroup .vertical input, fieldset.radiogroup .vertical input { display: block; float: left; clear: left; margin-right: 0.5em; } fieldset .multi.vertical select { display: block; float: left; clear: right; } fieldset.checkboxgroup .vertical label, fieldset.radiogroup .vertical label { display: block; clear: right; } fieldset.radiogroup .vertical .subgroup { float: left; } fieldset .fullwidth label { display: block; float: left; width: auto; text-align: left; } fieldset .fullwidth .error_message { padding-left: 0em; } fieldset .fullwidth textarea { display: block; clear: left; width: 30em; } fieldset .dojoeditor2 .RichTextEditable { /* Dojo::Editor2 */ display: inline; float: left; background-color: #ffc; padding-bottom: 0.1em; } /* end of examples/vertically-aligned/vertically-aligned.css */ fieldset.secondCol { float: left; width: 45%; } #powered { float: right; clear: both; margin: 1em 0 0 0; } /* Used in the .profile page */ dl.list { font-family: Arial,Helvetica,sans-serif; } dl.list dt { font-weight: bold; width: 15em; } dl.list dd { margin-left: 16em; } #editlink { margin-left: 1em; font-weight: bold; } div#tags dl { margin: 0; padding: 0; } div#tags dt, div#tags dd { margin: 0; padding: 0; height: 1.6em; } div#tags dt { font-size: .8em; font-weight: bold; width: 120px; clear: left; } div#bottomnav { clear: both; } #revision_info { background: #ffa; padding: .25em .5em; color: #f60; font-size: 1.1em; float: right; } .attachment { background: #eee; padding: 3px; border: 1px solid silver; width: 640px } #progressbar { display: none; height: 18px; background-color: gray; margin: 10px 0; } #progressbar #progress { width: 0%; height: 18px; background-color: white; color: black; } /* Syntax::Highlight::Engine::Kate */ .kateAlert { color: #0000ff; } .kateBaseN { color: #007f00; } .kateBString { color: #c9a7ff; } .kateChar { color: #ff00ff; } .kateComment { color: #7f7f7f; } .kateDataType { color: #0000ff; } .kateDecVal { color: #00007f; } .kateError { color: #ff0000; } .kateFloat { color: #00007f; } .kateFunction { color: #007f00; } .kateIString { color: #ff0000; } .kateOperator { color: #ffa500; } .kateOthers { color: #b03060; } .kateRegionMarker { color: #96b9ff; } .kateReserved { color: #9b30ff; } .kateString { color: #ff0000; } .kateVariable { color: #0000ff; } .kateWarning { color: #0000ff; } #editspinner { display: none; } #search_results { text-indent: 1em; } #search_results .search_result { list-style-type: none; } .display-none { display: none; } .float-left { float: left; } .float-right { float: right; } table.roles { min-width: 50%; margin-top: 2em; } form.site-configuration .submit { position: relative; left: -45%; padding-top: 2em; } li.tabnav { } .error_detail { display: block; margin-left: 1em; font-style: italic; } .message_body { font-size: 2em; line-height: 1.666em; } #nonexistent_pages { font-size: 1.666em; background-color: lightyellow; border: 1px solid black; padding: 5px; max-width: 25em; } libmojomojo-perl-1.11+dfsg.orig/root/static/flash/0000755000175000017500000000000012546272315021442 5ustar gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/static/emote/0000755000175000017500000000000012546272315021456 5ustar gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/static/emote/rose.gif0000644000175000017500000000167111357175324023123 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤, HAy&WAW2iNTe,SLtB!N>dW'LYN

    BYA*xÑjԈБ5"4muQC^Pjb#%5TadyACIp T  ;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/73_73.gif0000644000175000017500000000114111357175324022705 0ustar gregoagregoaGIF89aݩl~Wp@\ڮf! NETSCAPE2.0! ,g9A)ʟEqa0EY E,o4 + ǠH<2=cPBN"@p`b%|zN@}(! ,  ]4uT'V! ,  P}E T%Yh\B! ,zI_JA OCa1 pZP*\NAP$D!PK4 c@Q #x^I /1B2{%+~z wt ! ~vu! ,{9A)ʟEqa0EY E,o4 + ǠH<2=cPBN"@p`b%|zN@}(('! ,  }.~T%Yx\F;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/64_64.gif0000644000175000017500000000201011357175324022701 0ustar gregoagregoaGIF89aqzs9 8X?  '''  },S3.$&75:4+D#F KDE*P)񮹬r`fy|tw+G*&<#1'%ٗ;P8L=DҔ__bDNB`dz@aUDVMOcM33:)qkq>#% "7@ل{|x/>30.1(4,4b4/?/* E*[sW²7=A:=:4Y5+9&mmaz^⇀/$$"9& !fe $VVW5X<69>!,A H`Abt#Az8ĕ S<+4! 1hM$ҰAf#X¡06@"c0'ÈOf0RKMREMr8qɖB^X%D@1hPBqC@Q H%('ɔAA푠-]EJK$ * '`H7;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/shades_smile.gif0000644000175000017500000000203411357175324024605 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤,  ZT \ٲg!ZƐCi0F|Ch1@A1JZ >*!L)ĀO%-RP?r8^z,s'PI Je`g0U|Le}BUb*=W:II*[6hHtV0)S3`r婄!WQ{5[eHz+|JEu 2Q“%ڷU1t%2cKQeTIA/*ROT*;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/52_52.gif0000644000175000017500000000221711357175324022704 0ustar gregoagregoaGIF89aM/ Z(? x(WB"ݛQ#ʋ#VړGI&I69ʖ 6)FH1ع ,šHǾGĿBľ"360ֵ#?$"$)޼Ç#0 VJ/VFݿ .è%G%7%ƺ!ó?۽MȮ)ҖJVE"+K3V3T"9!)4sϹe8A&?(S¯#ǹ! 0NCCQE&M17L.λ+=CEKDJJƸι)ܸ!"IúˆE!:F%"*ǮH(ۿM=SĮ"D<}'ù'$YPFܸ-G=P=:}ń-v:=<%NB=57@H 3WB3+FE%%WI* 1xƲ%HҺkJDՓ?D0=A!=~vM'.גԹ>Е63@BG!x'!, X@+0oC$p}R*VK"NX@( 5x fbh Alrb_v __dڏA',,pUoZuI:@@uATF`l-ĕܡ '[`̐mEơρsA=BP@;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/thumbs_up.gif0000644000175000017500000000173311357175324024160 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤, tUJ=*WjY #+-ÈU-(FRA{G-SEETrY@U ƒJRPձg.iVë4Р'x 9.&KP*Qw5ƛSF:-ՆnQk@1?!22 1HLL>tէD,1=4&Ѵ'(n"'ǝ$T($ +)8μ&S?K-ī43çichH0'(#E?J-Iz!ǩ_(ԥ()Ű7$wޯ,Mv#Rմez!ů7A=ͻ)04< .צ')GwKW$0I+ڪ)n9ުufݩ($ t !,e- (rv@1F'H0'BsrF!GJ$pg=2(傚͛85)#2k֎T6皮k>:)#kfU֫XR]: HeמYEYHHERE U%U@4H dT8x3` ^nu@C0VpXp*0`a$mȉp@@gģ8+@Ǣ0?RHZJ2 HO#Eg 1k5'4hld5B&9--2cP` l-[   eI.-@6*! 0!xR$!LaLObQH%*D@4P@;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/47_47.gif0000644000175000017500000000220311357175324022707 0ustar gregoagregoaGIF89aGGB;^-FEfzئ&OLd`%KKVWJ8ADEEQ2S022K;==Dс٦CCA()@>Ϡ'ȫl_Р'NK%/^M&|g6hW4562Dsd>6րڪ)Ѫǝ2/ϟ)$צ'&Fo֨,/H79MТ?}[@=a)*v:Т(WeǦ&?ܽz==):<=ˢ;ئ-maCI`w-=S5*\=CxS]ԥ(B9.x;cFdFɟ:)$)VThDᎄ}k74a!$$^-(J-J-&'-#IVɫlKq;<ϢN9@چ1ܽyH׀"'ѫϽw(X;(>3@}+Pસg(Eޯ,]]]?K!, P"&iCiLF nvh)!a1m\ȁZb`,t*WVGi}] ڬ"J'U)!hѠ!@40ƃU,r5Db*5#6"" 4O;YFUTnR/^&X:%  *[hñRZr\"pFXaRHhd `b#irYb<`O"x*hLe*= LiDG\y†Z )U)}rʕFK=A:>=KM>,4+"B}R=?;]~cV߁b1,d{޻^ Ck\{Ki+A onU ;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/get.pl0000644000175000017500000000042311357175324022572 0ustar gregoagregoause warnings; use LWP::Simple qw/getstore/; use Text::Emoticon::MSN; my @files = map {$Text::Emoticon::MSN::EmoticonMap{$_}} keys %Text::Emoticon::MSN::EmoticonMap; for my $file (@files) { getstore("http://messenger.msn.com/Resource/emoticons/$file",$file); } libmojomojo-perl-1.11+dfsg.orig/root/static/emote/film.gif0000644000175000017500000000200211357175324023067 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤, !A*g޽gBC /+.T߁x:LyO{PŐrH^Z(y 4 ACA;!A)[jAOսĈ,A$TUQbz D[yk18/{ڛբmӔZLˢCj1@BtfyP UɛQ8KZ{ċ+;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/martini.gif0000644000175000017500000000171111357175324023611 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤, H_ 4dHн{^E7?TKp#^Q.U$e*ug4_|{ -hREyr@%@AW LXWIvpD+pV\xFע\,_es({Mre;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/69_69.gif0000644000175000017500000000215311357175324022723 0ustar gregoagregoaGIF89a姛u|鹯gѺ̨ݿgڼc^佶"ۻ[٨鼁xVn۔ؚyɟ2{ɥ̢߬@οغ}m–yq\`PԿԱNصPȝsRF صKbW9׶l|彼[ſ۴tlȝJxX[ȟ\fYN0|mFoٴL̍نҍ´ЅިٷGSG"Ǫ}aX3YO5ѨEdվ޽\ngKhϢzΒḅ{O~tlNWȼpزWz`T4wZ _ӭ@_wܽlΥEy̸φ޴ҚǭtjHtiIΡ3eX4՘۽aЩGxPнy|sUtϼļֱNrFѼsgDİܣֺs]T.]6.xnNA8ݿdzeݪɿٸUΑ]е!, DΖ\Pi2x0[-\ &R)Og8eaX5A4nܮXɑn@p &e 4nĸ;#h [hX0m90Ty(0%qݰIuHTT9jwD⃌+!],0 K `3TQo!Ѡ <1}{& J tY 2rی4e lhzri@V$z@7I`5#'Z(lH3@7HPdgQSPBKF)KM88ȂI}$FFQH}WD# . s0;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/77_77.gif0000644000175000017500000000130411357175324022716 0ustar gregoagregoaGIF89a6ת(I߶NS@1w4ԥ*ƀPV! NETSCAPE2.0!,H Cs@|r N7$ NǤA3 | P`Fh4ِF ף*QLA֝N"# o2"$!jjAw ;y}'X''B(jmmi"Rvz j6  j9X,po!, /jm@'FYZIYOc6a_^ cvM3-<v #I@4%a!2, 7𥙞5y$ ڻcNI:#6p6?{)L8Ȓu@D!, 1 GmzhӨe |w('8O!, "p4I.Z9]7 5@c IG;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/angel_smile.gif0000644000175000017500000000202511357175324024424 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤, ̎Ap3h"FYCƱiT5tf0(v W @eRz`شeZyBe/2KAettS UlTxI TEj7}T T|!v!OW(W!0 ;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/62_62.gif0000644000175000017500000000116611357175324022710 0ustar gregoagregoaGIF89a^]ܺ:Х7@d}'nmktƛ))'$E޾C^ىcŞ<ҫ eժ<ݻ;ġ1óѲ6uɤѧ6`۔q?(_}n駄.ں9Gڸ8ɡ;i۳8.vPlQ3ʗ0!^,Ӏ^^+\\]^]\\O^][[[[^[[ τ [3[*B΄I,[:CT[W)[5FU8[&MN兓-[(DJy!)%6 0x C$2,@ !eɈZŊ@QD;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/60_60.gif0000644000175000017500000000113111357175324022674 0ustar gregoagregoaGIF89a{up{ʞބ¬tu򎎦̧g_v搉QRya`zΥq>Cz}={}~VWȼѼ(<ėPruuЍggY{GKc>;Oë^Xt[e_+9xsnfzX\xwʷũhԿ嶊H{HCZvbVoo^i}vywѸAEzŹɼv(?lnضN_ECSTȺ!{,{zOwlP7/-,Mmc[I_Feqz@i6 ?{1"z]>H%'CZokz)&Lx TzX5Bf aUh* (yAz WtG=jJ3Y!LYB gxq" #VD!;g7 IABbTZɲ@;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/guy.gif0000644000175000017500000000165011357175324022754 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤, HA\ϱehٲc$QJBU ~[>)SQc?=M   igp;5D +#(&3jfo")96C)*(7*(2hD +XUb$#0 *" 0"'85I .,:98KB?PHFP,  %30@8.D(,up$"386I+",QO`!{,̀{Yc`qLW[@x7 u +Qn!C;oG8Bxxm\3_(xEx:b? fVx2j9xl$.dswkx]x4t{U&5i"M IyP-pR>#Ayz0*/av6F=Cιܴô洤Dz뷴ΝvwB[& 42DY)h"'ĄT.CbхM2e4Ft2Gi.+.Guf߼R5#Sl*R}RtX@T'Xo@ dZY޳RU)z͢:ȇJN%T տA9S;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/girl_hug.gif0000644000175000017500000000200711357175324023745 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤, HPЁ*T#ƽ{X0 cH(~ՁѢd#elXxBI%T(Pԃ'eNt S)-fS% 6l@z- *Zn% 1~y6 Ơ}+^(u8P o-:8"אcAx-6H) kEABY. 6/{e >6!U(!x+;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/devil_smile.gif0000644000175000017500000000202711357175324024443 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤, SǞtR_'84*N`򃱡*:S NSd#:t*)+Nu(*yv@$TNDQch$ c2 ŰND_5 ˀOҭ(a H`,.T $L̢H5 _C#70b x߇1I. @;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/cake.gif0000644000175000017500000000300411357175324023046 0ustar gregoagregoaGIF89ak<)`O-֩kԙh&=O.N-yJzKg,ɖvF*aQϲMʹdiҸC9pi'bdp:fgnwHؐh)П8ş2l4x4qo5թaNjСxkuCҦbMel4ڍʕn9ć暈`̻[2|gュZԜu[Yĵmꀐg2]ҹǬxP:#ETbß~,p R2/B)]cO_Ox3' f& ƔarR$O IL$)D~N3D2Y㡏`gqK4ab5,EIH#X1/0p21A'H)$bBtO@! ,qc޼ <. !, H*\ȰÇ#JHŋ/! ,# ܷ; ︱G m|dh7p_@!,2 HA"8x\ 4 AW( ȱǏ CIɓ(S ! , !{`4ȃ }P|-!,8 H*r PH\ "FǏ CIɓ(S\ɲ˒!,{Oq{/ ;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/55_55.gif0000644000175000017500000000216111357175324022710 0ustar gregoagregoaGIF89a輻׹~Т̫ÿֹ_bauwzاŤᢣy{{xxyxy{߃ɇqst}~~ͣ{{}~ֿ̫ʮǚ󺹵ikmikluwxwyyz{|䞜z||fhk횜̶ųtvxxz|wy{㬫Ჯ俾堡vww|~~yz|㦨ֺ۽¿̟Ԥ!, HAζE1kSD0VO4=p) Kgi))5wXjNBp躂'B5@]$׎'bpF&@[Xt$R%I$< T bG}5d KZGl<XQ5 RBɍ>)~9$B9Naf*"6d#\ALYI`hhNL1geW@a<ʀ"&(p&a(ġ3Aa4@!ч hP@;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/moon.gif0000644000175000017500000000173511357175324023124 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤, H$L Ňd4b:0ßTj5j 2yڪC"hhq"e@{ L i -ܻ:H=Zj}RǁԴ$HAZpWПÃP+CĈq@j.E{/&O ;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/heart.gif0000644000175000017500000000176511357175324023262 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤, H 0* `a:d.[tʄ`(dBʼnvu畽e'&[0={!6S]0IP(Uv%-y 1EJk.Nbcͣr S]p*IО\BfGXCeܨKqɛݕgqxҹ4LrM0O'Ӵ" h;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/51_51.gif0000644000175000017500000000212311357175324022676 0ustar gregoagregoaGIF89aR#ۦOHǘLãZۨ'£[Ң%$'08(?NLLQPؒٓK5J2E#۵O4ܮ.A۬*'>=,zi,(݊TϬ@%Ŕ?V\Ư{Z?˜0P@ދͣ2ٙU"ܩ'&A>?T*Dֳ^KX"EDUiKG%PF91]RIL$8BԫCHL݋ƥ\߳1:Wͱs7KճT֧H3XأҲAa3=s(ͰިL×(%0'>+"kU8Ҩ@1ԹJ־6JP4LSS֧D܉1cEӽM?SJIė(RGNעG۳GƘ)K!,}zd ȰHC@[=񠫆6(Y*h JէO*\FjD>(i%Y(h@PEgJA3س, j*U*#T>ˢ2O 슖$I d/IR)*PØTDh@Hա9XrNk(:? F*ރQ+R^Z TmRe.ER_T%7h;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/messenger.gif0000644000175000017500000000176311357175324024145 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤, H*,hÓz9BCybH"/ :q5ttPKDd8a#B{Y@ S 48`(ZOYAe AҞ" ) #!<P*BGhOQ ƁJ:n*+C!& (0]/g&AԐPgf_ -4{7€;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/girl.gif0000644000175000017500000000166111357175324023107 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤, HA18x^*1ZcX^ay@@ ?°FMĢmx,9֨,͙@վ͸HKON¼k1ȶ)ЩK/BAOEC/(7ՖY..ÿՔ-'-KԾu_-6(-/}S?U3SAК=ɷQ|L&Y/ɹ')92}WJ'WΧJ)SР'&$STТ(ͱPFͦ05>JH0I(C&Q,ضj-ϟ):Բ8̿KON~T ={C06w+(?K@L)DVTS&צ'-M93:K!, ( Y)Ui0oTC-0+ l%,IÀz pJ G$HP† 0("S[bS2Hʖ2R iӰEs .)1)̀i- ˔qDN(]/~EA&jɁ|eR$L U`H'2Pc E] 0I`Ԯ\O(#*TfÁ #bd`f9>hp AH;<  Yr0t0zm`D<# C DBG0ȡ@& kA;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/57_57.gif0000644000175000017500000000120111357175324022706 0ustar gregoagregoaGIF89awx&N=Η'{˶ͫš|&ZбJ}'y9#Ǣ纟_,w+w)G̸V,9{$l©qxꮀ#I~&p= ,.92sC=ţ|SStB~L':/Fu̫Eߣ~.d+ήOɵ4_!z'έeλN v3*ץ!&.Dx t%lϪ?z\6оcϼѳ#VsecۗEDŮymltŞMڧ!^!w,ހw>m d 'Yt*C@Á $A5x0e? 1@EGҧP;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/75_75.gif0000644000175000017500000000263411357175324022721 0ustar gregoagregoaGIF89a"(#GBOGRN;FϽE7Bс%Qz*)ID:%&ئ&8V>6S?KWJKAOCVC@9A@D3@M';ˢ;Р'<(6K)CϠ'&hǥ/004ѪE?ޯ,&K.-A(H2)-ԥ(w3Q?֨,FFڪ)Т(ϟ)SnSSѫצ'Ǧɟ:N*<:xϢKܽyN$@੧;Ho')W$ܽzF9#9D(v-(I&F>T==ئ57x7'J>縞g(-B&-)٦TɫlU-ȫlТ=-)MV\WL==TWES7? U[V5=/M2L@VG:1?+=Lܴ:P޼@޽Aݹ=?=IJKK^-! NETSCAPE2.0!d, x DʀifohDvQuaBZZS(<-^" "CPp A7C  um*rud4wtȭcv R~fnμE Arq+pC*E n> dR Bc'[B ~yQZ>nЈg4"a)[d!c(`HFN` X6l‡@t\ -+M$80ab0b P (IX ,R  "_t1Kp FjADR @%uR\<! ,5 &@ t Q-@Fp PIMad4`@! , yGo"D €! ,  `A! , }G@p *LP!Ao! ,: maP!Äle0"#$n@|EhI(HP ;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/56_56.gif0000644000175000017500000000214711357175324022716 0ustar gregoagregoaGIF89a񬤿ĽꚌᵵԭr»鯩xyefNߗ圜ļѮќmYסǘ󦘶ߒv깳r¼П᐀ލ󠠝l巸М︸·ȫЈuhPĥ讥軱Қvд܀mׄthQ鑁iR뻴ʄryfü!, ``V*6 l,x !L\` 1xmH3 tf/ ICLD%Ht`ANPx#(R_U* )؄ҵ 9XsJ=?)JƼc"Xi+& - 5]{Zݩ4Bmx@ eri DqD[&AHCp1JN2D].IɑW"2p`Y7A9ت1e hDyJ@*V.Ylh!@L 6^F *hARDBX`͂5hͅR(P@;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/dog.gif0000644000175000017500000000201111357175324022711 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤, H*\P`*J+ŧOb)R}rUpYR12P)S%P" x#!h8[@ *>hq@hόጙ*ڿcyT4W@ ,PQkgc|DU!URJ̙1RƲ h`Y MŷT*YP9KEsRPi.Jke (T@UA*P "*\T`{S޿W[n;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/note.gif0000644000175000017500000000171411357175324023116 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤, HP -*\E=.dCAڰAjbCF C"HxT4@A C24޽*XUC8u0dD/ZʘhF/Qb%@e+[hVdG- 5dtz\(y_D ʦFC;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/74_74.gif0000644000175000017500000000244611357175324022720 0ustar gregoagregoaGIF89axҙx'(AL!ɿOANIJGK.DBŻےJ9Z(ӧL?=C$&:6*Eџ*%ʹ>4ʔ>J4$ֶ3ñ%1SJԢùPB&8؝:B(ܭҎŰCՐHE-٦"tHdӶI&U׶ǖ̩߮Hؿ4B#۱6@E*Kð-'=џ#:ů{ݪ߿sMC^Ϟ"ƲHӞݱZ>׿!{KE˖'5%(ԙE8JҔ&MCȳ|ɖ1߸!ǰK+(֝Ĩ%Ɖϓ"*Gǽ53! NETSCAPE2.0!2, 0" '7J5$L5at ȤzTI @@S6@!QmNaI ʋN_\HG !@UEOet%h@ LF*8(`ց1H i B$*AT485 iprh#rh`EXy%2*ŁϜwDB0O80ᩑV3=sbF*KXPnZ,Q %HB%LYR (4Q"%>BrЀ|"! ,  4iBAAZpaC ;8`E)P@* edCie5 ! ,  +i D `A21*ǂ@@2 ! ,  -i @<(^XȐ"ċ)P G\40 cɀ;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/cry_smile.gif0000644000175000017500000000671311357175324024143 0ustar gregoagregoaGIF89aiW.ӷVߥ:ndNM7ŨjWF:BREzN8νe6ݨƜ>Oyԥ(=-ٹk8U2vJiyk]٬Mix5AŠT*8YF|5F?1KS۾vZ])FvTfj`æ:x''Xtah(rW&T`/"eQq\0.Y?zLٔ.FժAȅ4OL1w'_^̢:2PY>7K@FIaIK;W2٦DѫǦɟ:uE>ԛʚZ0cئ&սG4;Q93)ڪ)Ϡ'&JKNܮ/Rlڙ1hY\޼?׿aiνɬ_Q¨<4K̲AҹF~с%LѷE17ϟ)ثRN[8*9VGQ/$+$6czТϢkU|:ȴҩhYK! NETSCAPE2.0!, Â$BR=cCP "eE!lw| ["4(!,bf!"t 1iˁtA* u1# Q &pϘS+AG_dxൟ~{oD/Il!T_l A($d#,&LxRհEȞlթAwxt׶ qP#9Q#.ja߯{E mZrHZ%52¼L-*1oXoW!^; qIHC-0C4s 8NPB<4 (:%`v!, H# kh Dc`4%'{8r`˿%XPd4NܼCO X@(Pz!2(:"eI48ggAN$} JZ`'W,Icз΀H)},*S0!H2eKU+K3(!u0aȿV,eJF1އC$πy`q6 c9.)@C3%P60 8 qI-\P  (H 0 D!, (`M(CI6Py`<C_ԈjB@Ԓm1mڈ^ BPă(QH~)FY .$L*xa `ˈAwr׶qP9Q#0:߱{ $ڴ䨠B՝¿g $HZho EuN;]-ײȰ0rr^ -f TA"$U@ <<+C/DK%CxS$P@;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/guy_hug.gif0000644000175000017500000000175711357175324023627 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤, x/cA.KĄ|Ji DE[&2I+uXA4 @_5"rs`^T EjP9Fe`arijVxl#BU4m#q0!68+K$X_CXf9VŌCא)Y](^׆ BW^% ;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/71_71.gif0000644000175000017500000000104011357175324022677 0ustar gregoagregoaGIF89a(N5ګK߶N@1G'`0z}! NETSCAPE2.0!d,H q d.F7qL!@a~ 1 LeD@IU A,\ eC2ƌ}KE0E&Og &;1""g&&JJ J''7 d6 ?+L! , 0)]@0эH (]a,q8w4p &E!d,S9ͺR5F0_@Rh:ڮELJTRGJ~nD>90 R"( pD%jXu_ $D;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/wink_smile.gif0000644000175000017500000000351411357175324024312 0ustar gregoagregoaGIF89aE=MνI0I-9=@ܽKNNMԮ4$S (ט%?w>((ܤ.T)RRݪӳ;'xKV"7vXU(͉'7E"֙01Z'@3y&PPJNئ&ڡ6Sνǝ)-&>-ڪ)ԥ(1ѫHCǦ=M7ܽzFˣ."ɫlèk2$)ޯ,Aw'GТ(ϟ)ɻa_C 8?JGWBEF?KVL;VV9CWAQ8Р'K7H'сz%B9צ'XBB4D9TKFWJ&տؙ&&?/05:&hϠ'+ݺlG*ɟ:w~VJDٟ4ˢ;֨,huK=մe׷hVϢnثТo?W;իئngFVw<3ᲪXA۹9h&)JKԒ'֗+ߧ76ҼEٶF6BdnçhwFG_$CսƓݢ2ܣ5SKVƟ,ͦ0Wx'! NETSCAPE2.0!d, ( *HijCx.T@QlP0!Kh R!œ8h O6m!5 @s_?p1˘?I< 榟~ ߮KNѣCj "Dl?1LND3,ZAE 6x`õX &$682(tM9v r2QHKN!Ć76ȁUΪmq @8s2\ /BY !/ (C( b 1 JB&(B72`A3<Ā0'\ R PC]PȢL/OP@!2,  hV8G"zaM 1ҨQ_DM*в)gڳirZ>IcBϠBL=+50>(xCg/4hq*1*T1Sii$4Jղh>ٳeJ9G&b},fj|x0jY29ϫEgx7ԨmejLUת:S փUr2ju[j@ojT·}*-uT;À;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/72_72.gif0000644000175000017500000000322011357175324022703 0ustar gregoagregoaGIF89aٞݻmDBĥ`Cˡ:ٗL;kɞ9tƎ.ضk[ŕ@˸יwۛדnn٧:٦ѫǦxώ<7Fܽzȴɫlx'("L!Z(JG#;NORGBF&B8L%VKAWEI%Qئ&)-2=M7*/&>'3)=;C&4?UW*:Т(M@0J$1B=Jޯ,ACC=6()II-=<-:S+VWT?HE9֨,9$#FР'צ'0)KKڪ)5&(Q/2(Ϡ'ԥ(9)į'&>D)S@ϟ)K(7(HK-/->'-NTSSNO>_DD45>9ܟlϽ8طl^Pz`В\ϒ¬ܠAсPТ?<ä_䳷nGhÉĉޯ^Ϣg踠o|-! NETSCAPE2.0!,]蘇` mChHV.$a3ѵ+"= g  )4^4jC DyAt8h}  yQdFR0 zdF8"k3>ab |1 a5ru"%_PrVRҰ$ҟU55DG#Q@!tTT<zϦ%"TG;s'Bb`#8W~1Z[Ly<#{m"%0[:Ԭo>F H{T@r@J%K|, ,$<$ Cʀ F$@1\@C!2, ] 36q bz$:lฌ[H=8 -_ Ǝ%>,Qd{AOR=Tb Mu yN0Ź"NyI228Z}*[q]>ИY\F8/;!, 蘇`6?4u f $: g Bs#CH(!X_ˆ-_ m`I)‡! …@X 6@ ֊!1 5|F6-jqʁ2n,8T\a*HϘ `!2, ( 09x[MP`8D v"C'n3L)ЙA.4o&!O(;FAW%ѣ1 p`៉?dLM La'u ) MEg(t ;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/clock.gif0000644000175000017500000000203611357175324023242 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤, 8 !Ȑ+h$PeH$h*EC 5W:A# - 3ʞ@{fށPIի-,:Dj{1j9<- *j:^-TubrV8%{>CJ`4۫l.PYA-Jc0bE–//,KuY6&hqo`b^"AP gِ24$꽞vu**;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/thumbs_down.gif0000644000175000017500000000174011357175324024501 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤, (ОRGA˘-+UJU\*g,;V @UU-e250̕ϖԹO@ٲD2M t̝7}oӛ;E4$LϬ"-)PU ^oH:>})-8]}fhOUƎ"AHzx RH Z1Z n,%hahr`@;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/53_53.gif0000644000175000017500000000114411357175324022704 0ustar gregoagregoaGIF89akк<`KwcQ.^TnW;_O(^Q%csx[kX7seW>^K\nµ`H)¼ImYȹŵr[`qtv³gT2BhTiI lTiUTA etqzsigS2ChTxֺcqEkVAgR~UCeoTnYy|qrYEwYmT}ehU4y]9dP.}{]nϿ`I)cQ-q}oMāeM!k,kij:ihiRjhhiZ)ggE ghgh.g YMkg3Ɔ`eS0XH-,kjLk/ c6&Wb9DI?&"TTI UC GehΔ㒏g\LT;SA{V,/={ٳiФ9T}5LڴU $>MU%=U dQi-IdXSg^f-* *R)#@1(P,9ǂZHjflȆ;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/omg_smile.gif0000644000175000017500000000203711357175324024123 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤, hڲTˠCŁS@$ճgPAB!MT ˒[**IiQusT^^ ^˛J)h)h,q#Q|JEkYL, &X&qϦ3@ˆL'Ŷ͊YT˜-SFJ=gCjrRv|U`DUj *g>Bd>ZFSΊeA eSJ,|J! ] 4U« 1 ;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/59_59.gif0000644000175000017500000000115111357175324022716 0ustar gregoagregoaGIF89a{Kmw14-ww0V 5'H-l u+@U$Rqce蓩sZapRYDY䃝PRƼ䍞P= qu2g*:!2;|񖧍)刡蠡|O12<)bL$xC .;zHy&)7=[^d#8ZZS 4Eci:ArߤRl}v(:g2Mny(m~>'B`*Mnhnv02:Dt˺+>2H?]bPφ=9R!{,ƀ{w"w4A[Dwzz N;Z! 9c2U`aQ) 5Kk.WSzbY&n/@?(>Ctqopf PI1^hH\r_Rlm-,s7EFjxxXi*3=xv%pd!8APЅ%'C; @"ke`0(PD$:iRg6z[/KG85p\m'# aE;n=<bIjSfht9>Ѣ]TxO 'qHOW4h?nIR$ǐ(xrF;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/red_smile.gif0000644000175000017500000000205611357175324024114 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤, TL (5!A&R-{FY)(\9wDi@V̳LcCh6O5|I}CQ3R!d yr*?Gcܔ6g˔rjP{} ,k*R[4-۪uL1> u &a~*EXcB W/_~;VR:9`Dʆ ڰ+{X6D3j*:Qp)e} DI|Y*eʚjUf١R>TUKET>[76tT&;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/what_smile.gif0000644000175000017500000000201011357175324024273 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤, hڲTˠȐeϤI{0UÁ@QjT(4jI("J+'A(mJJ-qY>NFLϲ-%>z*RE ?c/AUR u?})3;UT z4h^Q'\ֿ̧8+{V*q XN{x)N(T\Iti(tZ@h:x$CU +KU *2)BSW;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/phone.gif0000644000175000017500000000171311357175324023261 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤,Re**L*1cTZH_ eʜ9S>=c,beYZǐK^9 tOKKWY4zu)&<2A|Jj3>})K*TFJhPT4j6KT5@XX]BeUV ;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/kiss.gif0000644000175000017500000000171711357175324023125 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤, H* TtU{P^t@PP4uD=A %<BhO]LuSP:.HM!y'̹;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/broken_heart.gif0000644000175000017500000000200311357175324024604 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤, H0* P`a8TQ.[tʄ(dBINqla%?(2i Fڅi%!Ӯ_ELBکPBIWC bՐ9P;5%LPBаLle:s=AvЗ.LK<1_C'f+'S{ڋ C #;8A[v0 ;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/regular_smile.gif0000644000175000017500000000201211357175324024773 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤, hڳTˠȐe"FD@hE(1i)#4ˤ(TRVj?i^eR>lY)h!A?Rjc&(HPe?;)U<Ӫ݈Tݼ)jBQ)Ru( 購 ZJ1Tr 3:tIy K-{oU ]BH=,\*.R|JUxQURX ;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/envelope.gif0000644000175000017500000000177611357175324023776 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤, H :x+hӦp hz"C̞M{e "PձTǘ2ES=+o RPXʞΛF%R :P5U@"W^D8,jjEլ1  zޫW@/^e{Emޯ JoYnͲ]`]^1.WYj \2bhd̂h1 yd@  "AUR3jN;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/cat.gif0000644000175000017500000000174711357175324022726 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤, H wࠠ<D xU-m7zY2;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/present.gif0000644000175000017500000000204011357175324023622 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤, H ![l5d +[)13eJEfBpPaeJ%2Ei=LlB -:l,EIע]0DW.ZyӯZ@a~%װa 9A1taZ !2%HഭvݲaË^*—-p&V]d]O&2i[zm:-|!ۢ ldӆęvٸ'h@C*yŁ {; ~!^1N`@;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/coffee.gif0000644000175000017500000000176711357175324023410 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤,  "|A : "P5*C2=AE=/Lu(Ȑ{i!# zR{1ЁYNZТ-Ճold Ղ ѷD%ʼn { JܛP-J5$׊-2DLmqCA5Djʇ++d,$H\ YКUkm [J,3;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/70_70.gif0000644000175000017500000000061211357175324022701 0ustar gregoagregoaGIF89a<x~uv}tpppt{rAL@~{Νzxٻ׹xuyvPPPw~uv|tu{r@@@!<,@pH,HnwIo;ǣ.ju' h*pn>A 2;Bs&#::(1: , B;4:+:36 b/0::2!: 8V%;7: JPKc;9<-PbǖCs9*;Ǡ;wTdۮx9K*1\n\ *;h$;libmojomojo-perl-1.11+dfsg.orig/root/static/emote/tongue_smile.gif0000644000175000017500000000203711357175324024642 0ustar gregoagregoaGIF89a*?*?*_*_U*_*_**U****U****U****U*ߪ***U**UUUUUUUUUUU?U?UU?U?U_U_UU_U_UUUUUUUUUUUUUUUUUUUߪUUUUUUUU??U??__U__UUUUߪUUU??U??__U__UUUUߪUUU??U??__U__UԟԟUԟԟԿԿUԿԿUߪUUU??U??__U__UUUUߪU3fUUUUߪU**U****U***?*?U𠠤, hڲTˠȐeϤI{0UÁREb*W uqTiXjHj>(-@+\H?4TΖRE &|M{+˔J%m%WuY)$IݛȈM|왲eTC70ET|h](%}M\l@Nx*5a|JiNyB1UR|X 6>sUʰ]:u|+!<,N(Е@U20 ;libmojomojo-perl-1.11+dfsg.orig/root/static/favicon.ico0000644000175000017500000000157611357175324022500 0ustar gregoagregoah(   t"t"t"t"t"t"t"t"t"t"t"t"t"t"t"t"t"t"t"t"t"t"t"t"t"t"t"t"t"t"t"t"t"x(x)x(t"t"x(x)x(t"t"x(x)x(t"t"t"}0~2}0t"t"}0~2}0t"t"}0~2}0t"t"t"8<8t"t"8<8t"t"8<8t"t"t">C>t"t">C>t"t">C>t"t"t"4A4t"t"4A4t"t"4A4t"t"t"œœt"t"œœt"t"œœt"t"t"ۨt"t"ۨt"t"ۨt"t"t"ۨt"t"ۨt"t"ۨt"t"t"۪u#u"۫v#v#ۨt"t"t"۳|&|&۳|&|&ۨt"t"t"ոt"t"t"1ʴ3t"t"t"t1Ҷœ4Ҷջ4tt"t"t"t"t"t"t"t"t"t"t"t"t"t"t"t"t"t"EMnau pihrlibmojomojo-perl-1.11+dfsg.orig/root/static/gfx/0000755000175000017500000000000012546272315021131 5ustar gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/static/gfx/dropshadow.png0000644000175000017500000000315711357175324024020 0ustar gregoagregoaPNG  IHDRݡ6IDATxڱNHѵgwi!vM>jd7t3xxxx~~~}}=rNֳú뺞N1ƶm۶ p_us>Ƙgβ,cc&X:Qw`wgY5ѯT a1d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`d!X@`dp_mc?O_m}ι\~;o81Ɯ|>1u]Y\[ej:5o=eYu|>~\i{ּ\.9۶9%kz<25ضm۶,po%븀ƚOOO cZ,˲|~~z0ߎ}7଺TIENDB`libmojomojo-perl-1.11+dfsg.orig/root/static/gfx/maximize_width_2.png0000644000175000017500000000045411357175324025106 0ustar gregoagregoaPNG  IHDR RsRGBbKGDC pHYs  tIME#%btZtEXtCommentCreated with GIMPWIDAT(ϥ1 ` 'Eursx ҊV-!o4X21 nas.Ou;80 Yt_XDAf[JD,/f^b|ǧLFv'"IENDB`libmojomojo-perl-1.11+dfsg.orig/root/static/gfx/uploadbutton.png0000644000175000017500000000347711357175324024373 0ustar gregoagregoaPNG  IHDR=XF[tIME / pHYs  ~gAMA aIDATxZ[hU&i.K"M{XRck_B-(> T%E|A"`ŧ`EhI&n[Lf2Nfs7Kჯ> f hBoh 8 }SѼkǚ0b}{dHbJYA7 {|2r;6K8U-ƖF+Y^㤋E5֤qjBL'Ԕe*)H+Y'b?OmvzWN}_/%z̀*nii~ԁur9΋i>;eJuqv>vh:ӊ#K0*(]Jv9.Z[Cvc3-d~_9ŵ2;o76LwV&<;;Gmm^&Nan}R"%ggoNvʏ}qVu:hCM鍘Ej3ѧםd];ϖ2ܧi=<.2P4Hy'"|!l|AbIPlKfK'MT7bEڍI4'u|Jt P|>jh#ԎI'47 uyqjIyʌ 0Jw Q= v|ljV54(SCϜO==0uv,HO-—Ó}B =.xjzH$@I$~U>NNLߜj}C]}=+ t2^)--غ5"i%d\ώl=T_ALI ::W{)_,v%ؽ ^X>5¤ߑ أ1ҟھSOp6 ݳd.[cq^|d|\Tf|rzzm8;U;y}WC5H?UW$x/u2 ۰vY4ϕ>MATޓ1ݴ.}V~lCw#>7O4" Q>}z)N۵3@8GS+PW5#DN%}#AQa4kd1q543G7A7{J<%Ƅ'4! '~!3en/`_fPH +!&ռ:PN:}yޞ~ӻ ' guR77aMc+(8q'hhXy"_S:u O#>=;AdĪLo__(yʐB'-ym7QB$ȑ++Sz)A%T3:WZy|^@Μ:I۵ǒg?9YQFAUD='Q7B݅8a|W0?+ȄKIENDB`libmojomojo-perl-1.11+dfsg.orig/root/static/gfx/background.jpg0000644000175000017500000000076411357175324023762 0ustar gregoagregoaJFIFddDuckyPAdobed       Z!a ?e@h@(` @ `E A@e"AA4E(9($EhJwp@//( "(& Tw(p9P( esPs@: 0A9܁Ah@0eElibmojomojo-perl-1.11+dfsg.orig/root/static/gfx/header-long.png0000644000175000017500000001133211357175324024025 0ustar gregoagregoaPNG  IHDRF-9sRGBbKGD pHYs  tIME !ZIDATxml\W^ߙN'v%ME,Њ"- DA }XioyB]^V*v/m} i:M8v&8Ǐsyḱsϙ3#UMs={DZo|3qOJ_1ZXZoI&bPC?3?yDWjIW `?= ߌ_V֛7e^8/ե$捲^v?]_A.o(+_V,Ic\;iz>D@]]6VVtyDmf8yeKlg^sL:e*W;?H syhn$c'l6ۃ:MnZ)Ǟt~JH&aS7I[fuk둌!\lډl2lʨآֶjsYuH{<:N^>LCc/|W}Un)'iiii4M˺̳8]ruv_ClGqGJ{ɡ˵qoe'~7+N];idıM)shbՍ-]5\Z|MZ$9D5bMeo=^zK]k f_o SG ''u@j;+ƛ3|kI4Đ~ȐVR^^ǷtVIXۮ7ں. } il%.ǜ\EΓMT'MTwM>Qⴾpf ^p;<>X8Or*W_ޘ?ԈNt*β>[ԵʃN߉R<xofm׉i_cɓdLƂ2YlٵCj_&ǶdٞB]+zT 7nL`7$t8>t\йۖ7)1\ۚqqDG XZ?{_Pk1o3&܋ds _RM_:w\gtfr$WuFeU~V>ץ{OV'e&6 l:Ie^wd1dO}fQ6gDiJ8xJOt]7MmǏz%WMRK)MO *hgN:_͖'}f27M5Fv\iھIYXgiS6$vzZ'r Im0O[39bΦLqz79y=<޷9ش##ɘ{5{ҟuMƺ?* V8"ܒ!#hE&~frBĿK{39~c}_~wRFtΊɭ\O5]]` &i"SzwROMlMF%-mBaHrvV@(D#:{|4uK7.wu}?~TiMO YUǏlMWn/7>Gut/hNԻWTo胹lhe}S'ԨF{hr_37h!9l`~é/.~O>~..oΝ,w~?|ןL-bl@޺TUuy?~Wեu=z\C}$-DD5'@q;IdµE}rߟQ~r^zuuI~m I@0nc."L9֟,k +M\+[mMJrtgY:;lW)g6K:ǴsJ:8lcCLd5AS 3UϟlZr w+OL4-Z4O}fku=11tZ=5,Wd>~$4%|A2&U lԵ^]O%߃%ءāڗkfP<۲چ;ocY73rsYf8W޺1f?C.1T/}meCqDőO&!1{V_j;&NX[Cry']]^jyyD8gJhdLvB,/c(8CW6s 5+9Qˈ:ge|fL?M?M?M?M?}pix\ڪr}hsGqԚkr\3L6;>}_,mګqtw_:uXynR$+w&_:{LSz1I޿n5_~T;.dkrOubt;=[rUxɻɘy]]|l#Uɘ 6k5v1e}M}sie}/׼!q=E,3o~q;.vnrؗyek 8"ڌ76 6O2cǞg}G~e5t='U_-kG$iymK oY4ߣ[7ٖQɨ7*\$ml5fHXB|&e^XʪuZfz/gIbITʒ2;壒@otQIQ)&j/ ȧH_JTR#ޛЭD%EKp_Ofٷ|oTR$_~{٦S83$9^J3Q더q_o$rbJO9s[>*'< KiB@s|x=Q]2F[q2[#o4&v>wulѝ<~#9 8uɘ>X~rqeHtk2uޮX0-X)lO5 ^ۦ@?M?M?M?M?}pi!݊X6-lqD׳a,&d1-y[ Zt~:.y8B|&6]<|'@(\@QLEP,&J(gO|3h6]>P/oY#6 À,C4< `G :>5|&꼉No̝#6kG83irOT^h^v3[?y6&ec>mrx^F#V.F?.hsoY֫;|Nt=& mᗨc{❴Y[W۔I4i[+= h=Du,' Y~gP E"Q (j@HT EP(BD5P$"Q (j@T"IENDB`libmojomojo-perl-1.11+dfsg.orig/root/static/gfx/poweredby.png0000644000175000017500000000764611357175324023655 0ustar gregoagregoaPNG  IHDR!`gAMA|Q cHRMz%u0`:o1IDATxb,_}?3H >|cx @|,_(y0>|N߿d>ٻ EQ ~2pEZ[%' >Kz6 ޅxr5/hblDBt {S#{Пe.BZt&$\|+pfHzRoX3x QmU]bpAhy Yx FIo@hUBr20xJ1hJ U{헟1l`1PPbpTg«o odXr1~ϧ7 8>9j% XiJ3<OFHCs#H y #Ő!Gccafb#Y?(!k3U > # X|TȈ I/vp>1\Tu޺! 2cfs B TR(`@D .Z ʢdU;z&%& /-af"dG'+͕Db PulHr"psCɁ#ٍ0@r8fD+ ~\p a"&8K%8k J~P?Q <~?=?q 0#Al +0!ܘAHZ5: 'c'? `GO z c֝7a 6bSgHV] L0,I+0xř v\ TT2 2l`7+0A@sVg8|5h3ՔӔk"C"qIu y<~'~q`ߏ/ ~~c J#C02?fXlŐ40#$k/\5%֝{ =mW=? 7^|da(_{lF In%.; lN`6ܞAF`} w܋ oo]iJ@>oz4W]YbVMꞀr&#D("Bab_|k砄 CP"YQX LP A%H i 'e2exz{|!g! *@z"X(_ /?}gG@~R!*(_}#+~ 0!8H7'1 JRwu#,u@fh'@1I>X]g,)Nt'p PJ {H q0gOw ibxa+ J_|p \l߁;pw`%Mq{A@A/1 l%M ^Mq́K q @iANpq'Ą J Xxt(`u;A_|x p< o8&խ#^ "r$r9ԃH !AX\ LUD|ņE(2@~P":Jʀb0|HO 1 C`=`AzAn0t+`z%'V5ι(E) 1dq rN:v)`:tnzPBJ@՗ ~d̫3Af 2\"B7Qn%+~bb!Dy 9N( `QЩh:Ph><} ]x XzO9pI-B5} {;4  2b܊ Uo$ 9Z/r @s%XƬ ΁jР< 8Z>Nhd]#da,*aD4*&d~hāKh J$u+Zn;|w.4 O>]  @} ߣAmPE|{689X9Xa#0_1TW`Ot 0] AH<y,P,Aaq)({nb3#1nE6a˕ :R| hs&jL.6s12@r A~4w071\ H?j JH@Ipy+/#@x{~!` {%`#Q  D(3Df(1=|P z@ܾ&.t@ح:vbё`U(Nw\ `uG*D["V <׏/>d8#00C% b  FAFJ6Ys|3G:*wux`B L@'p13`ן>  627Π5~A ,$ +3* b׏ =c@Q0F)2,3!/TYXu% 1^vNh3;ZG(q") ^`R(@P@4 0 D@xi>ULRPGl hy <|{K*PİF,HP0#]?H֫ +zxo-kzi[7%׍\(TABqP{vb+2kՏɤgWLc `r]lZtUfm̦[u~'>;uZSVG_ޮ۾fۿ^ywU#OQ)bnџv{(m>8##ۆO#EcT"Estkj}/'y]OIWڎIܦ`Vb#judݐNOɲ4/g_'u5sժIT>H.֚F;"~ h {n he#ڝxu ax+Dv=o催ofwKP@w tlHn} q//Vh.ϡ d ~ZMEǡlmM vw*hBVE23tCЎRo)>P3l n?)}_P@JD)QwP~\չsx| }3J훍1U2vC4@ P@4MP@4@ P@4@ P@4@ P@4@ P@4@M4@ P@4MP@4@ P@4@ P@4@ P@4@ P@4@M4@ P@mAMIENDB`libmojomojo-perl-1.11+dfsg.orig/root/static/gfx/maximize_width_1.png0000644000175000017500000000047211357175324025105 0ustar gregoagregoaPNG  IHDR RsRGBbKGDC pHYs  tIME(T9tEXtCommentCreated with GIMPWIDAT(ϥA @ E_ ݨE<(s0Z^$1Ib u.t{X꺤T=O@߅nm#8 [ e9Z6%%IUcm:} 0{ (7*n5eIENDB`libmojomojo-perl-1.11+dfsg.orig/root/static/pod.css0000644000175000017500000001343211357175324021645 0ustar gregoagregoa.formatter_pod TABLE { border-collapse: collapse; border-spacing: 0; border-width: 0; color: inherit; } .formatter_pod IMG { border: 0; } .formatter_pod FORM { margin: 0; } .formatter_pod input { margin: 2px; } .formatter_pod .logo { float: left; width: 264px; height: 77px; } .formatter_pod .front .logo { float: none; display:block; } .formatter_pod .front .searchbox { margin: 2ex auto; text-align: center; } .formatter_pod .front .menubar { text-align: center; } .formatter_pod .menubar { background: #006699; margin: 1ex 0; padding: 1px; } .formatter_pod .menubar A { padding: 0.8ex; font: bold 10pt Arial,Helvetica,sans-serif; } .formatter_pod .menubar A:link, .formatter_pod .menubar A:visited { color: white; text-decoration: none; } .formatter_pod .menubar A:hover { color: #ff6600; text-decoration: underline; } .formatter_pod A:link, .formatter_pod A:visited { background: transparent; color: #006699; } .formatter_pod A[href="#POD_ERRORS"] { background: transparent; color: #FF0000; } .formatter_pod TD { margin: 0; padding: 0; } .formatter_pod DIV { border-width: 0; } .formatter_pod DT { margin-top: 1em; } .formatter_pod .credits TD { padding: 0.5ex 2ex; } .formatter_pod .huge { font-size: 32pt; } .formatter_pod .s { background: #dddddd; color: inherit; } .formatter_pod .s TD, .formatter_pod .r TD { padding: 0.2ex 1ex; vertical-align: baseline; } .formatter_pod TH { background: #bbbbbb; color: inherit; padding: 0.4ex 1ex; text-align: left; } .formatter_pod TH A:link, .formatter_pod TH A:visited { background: transparent; color: black; } .formatter_pod .box { border: 1px solid #006699; margin: 1ex 0; padding: 0; } .formatter_pod .distfiles TD { padding: 0 2ex 0 0; vertical-align: baseline; } .formatter_pod .manifest TD { padding: 0 1ex; vertical-align: top; } .formatter_pod .l1 { font-weight: bold; } .formatter_pod .l2 { font-weight: normal; } .formatter_pod .t1, .formatter_pod .t2, .formatter_pod .t3, .formatter_pod .t4 { background: #006699; color: white; } .formatter_pod .t4 { padding: 0.2ex 0.4ex; } .formatter_pod .t1, .formatter_pod .t2, .formatter_pod .t3 { padding: 0.5ex 1ex; } /* IE does not support .box>.t1 Grrr */ .formatter_pod .box .t1, .formatter_pod .box .t2, .formatter_pod .box .t3 { margin: 0; } .formatter_pod .t1 { font-size: 1.4em; font-weight: bold; text-align: center; } .formatter_pod .t2 { font-size: 1.0em; font-weight: bold; text-align: left; } .formatter_pod .t3 { font-size: 1.0em; font-weight: normal; text-align: left; } /* width: 100%; border: 0.1px solid #FFFFFF; */ /* NN4 hack */ .formatter_pod .datecell { text-align: center; width: 17em; } .formatter_pod .cell { padding: 0.2ex 1ex; text-align: left; } .formatter_pod .label { background: #aaaaaa; color: black; font-weight: bold; padding: 0.2ex 1ex; text-align: right; white-space: nowrap; vertical-align: baseline; } .formatter_pod .categories { border-bottom: 3px double #006699; margin-bottom: 1ex; padding-bottom: 1ex; } .formatter_pod .categories TABLE { margin: auto; } .formatter_pod .categories TD { padding: 0.5ex 1ex; vertical-align: baseline; } .formatter_pod .path A { background: transparent; color: #006699; font-weight: bold; } .formatter_pod .pages { background: #dddddd; color: #006699; padding: 0.2ex 0.4ex; } .formatter_pod .path { background: #dddddd; border-bottom: 1px solid #006699; color: #006699; /* font-size: 1.4em;*/ margin: 1ex 0; padding: 0.5ex 1ex; } .formatter_pod .menubar TD { background: #006699; color: white; } .formatter_pod .menubar { background: #006699; color: white; margin: 1ex 0; padding: 1px; } .formatter_pod .menubar .links { background: transparent; color: white; padding: 0.2ex; text-align: left; } .formatter_pod .menubar .searchbar { background: black; color: black; margin: 0px; padding: 2px; text-align: right; } .formatter_pod A.m:link, .formatter_pod A.m:visited { background: #006699; color: white; font: bold 10pt Arial,Helvetica,sans-serif; text-decoration: none; } .formatter_pod A.o:link, .formatter_pod A.o:visited { background: #006699; color: #ccffcc; font: bold 10pt Arial,Helvetica,sans-serif; text-decoration: none; } .formatter_pod A.o:hover { background: transparent; color: #ff6600; text-decoration: underline; } .formatter_pod A.m:hover { background: transparent; color: #ff6600; text-decoration: underline; } .formatter_pod table.dlsip { background: #dddddd; border: 0.4ex solid #dddddd; } .formatter_pod PRE { background: #eeeeee; border: 1px solid #888888; color: black; padding: 1em; white-space: pre; } .formatter_pod H1 { background: transparent; color: #006699; font-size: large; } .formatter_pod H2 { background: transparent; color: #006699; font-size: medium; } .formatter_pod IMG { vertical-align: top; } .formatter_pod .toc A { text-decoration: none; } .formatter_pod .toc LI { line-height: 1.2em; list-style-type: none; } .formatter_pod .faq DT { font-size: 1.4em; font-weight: bold; } .formatter_pod .chmenu { background: black; color: red; font: bold 1.1em Arial,Helvetica,sans-serif; margin: 1ex auto; padding: 0.5ex; } .formatter_pod .chmenu TD { padding: 0.2ex 1ex; } .formatter_pod .chmenu A:link, .formatter_pod .chmenu A:visited { background: transparent; color: white; text-decoration: none; } .formatter_pod .chmenu A:hover { background: transparent; color: #ff6600; text-decoration: underline; } .formatter_pod .column { padding: 0.5ex 1ex; vertical-align: top; } .formatter_pod .datebar { margin: auto; width: 14em; } .formatter_pod .date { background: transparent; color: #008000; } libmojomojo-perl-1.11+dfsg.orig/root/static/js/0000755000175000017500000000000012546272315020761 5ustar gregoagregoalibmojomojo-perl-1.11+dfsg.orig/root/static/js/jquery.form.js0000644000175000017500000005324211357175324023607 0ustar gregoagregoa/* * jQuery Form Plugin * version: 2.16 (17-OCT-2008) * @requires jQuery v1.2.2 or later * * Examples and documentation at: http://malsup.com/jquery/form/ * Dual licensed under the MIT and GPL licenses: * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html * * Revision: $Id$ */ ;(function($) { /* Usage Note: ----------- Do not use both ajaxSubmit and ajaxForm on the same form. These functions are intended to be exclusive. Use ajaxSubmit if you want to bind your own submit handler to the form. For example, $(document).ready(function() { $('#myForm').bind('submit', function() { $(this).ajaxSubmit({ target: '#output' }); return false; // <-- important! }); }); Use ajaxForm when you want the plugin to manage all the event binding for you. For example, $(document).ready(function() { $('#myForm').ajaxForm({ target: '#output' }); }); When using ajaxForm, the ajaxSubmit function will be invoked for you at the appropriate time. */ /** * ajaxSubmit() provides a mechanism for immediately submitting * an HTML form using AJAX. */ $.fn.ajaxSubmit = function(options) { // fast fail if nothing selected (http://dev.jquery.com/ticket/2752) if (!this.length) { log('ajaxSubmit: skipping submit process - no element selected'); return this; } if (typeof options == 'function') options = { success: options }; options = $.extend({ url: this.attr('action') || window.location.toString(), type: this.attr('method') || 'GET' }, options || {}); // hook for manipulating the form data before it is extracted; // convenient for use with rich editors like tinyMCE or FCKEditor var veto = {}; this.trigger('form-pre-serialize', [this, options, veto]); if (veto.veto) { log('ajaxSubmit: submit vetoed via form-pre-serialize trigger'); return this; } var a = this.formToArray(options.semantic); if (options.data) { options.extraData = options.data; for (var n in options.data) { if(options.data[n] instanceof Array) { for (var k in options.data[n]) a.push( { name: n, value: options.data[n][k] } ) } else a.push( { name: n, value: options.data[n] } ); } } // give pre-submit callback an opportunity to abort the submit if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) { log('ajaxSubmit: submit aborted via beforeSubmit callback'); return this; } // fire vetoable 'validate' event this.trigger('form-submit-validate', [a, this, options, veto]); if (veto.veto) { log('ajaxSubmit: submit vetoed via form-submit-validate trigger'); return this; } var q = $.param(a); if (options.type.toUpperCase() == 'GET') { options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q; options.data = null; // data is null for 'get' } else options.data = q; // data is the query string for 'post' var $form = this, callbacks = []; if (options.resetForm) callbacks.push(function() { $form.resetForm(); }); if (options.clearForm) callbacks.push(function() { $form.clearForm(); }); // perform a load on the target only if dataType is not provided if (!options.dataType && options.target) { var oldSuccess = options.success || function(){}; callbacks.push(function(data) { $(options.target).html(data).each(oldSuccess, arguments); }); } else if (options.success) callbacks.push(options.success); options.success = function(data, status) { for (var i=0, max=callbacks.length; i < max; i++) callbacks[i].apply(options, [data, status, $form]); }; // are there files to upload? var files = $('input:file', this).fieldValue(); var found = false; for (var j=0; j < files.length; j++) if (files[j]) found = true; // options.iframe allows user to force iframe mode if (options.iframe || found) { // hack to fix Safari hang (thanks to Tim Molendijk for this) // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d if ($.browser.safari && options.closeKeepAlive) $.get(options.closeKeepAlive, fileUpload); else fileUpload(); } else $.ajax(options); // fire 'notify' event this.trigger('form-submit-notify', [this, options]); return this; // private function for handling file uploads (hat tip to YAHOO!) function fileUpload() { var form = $form[0]; if ($(':input[@name=submit]', form).length) { alert('Error: Form elements must not be named "submit".'); return; } var opts = $.extend({}, $.ajaxSettings, options); var s = jQuery.extend(true, {}, $.extend(true, {}, $.ajaxSettings), opts); var id = 'jqFormIO' + (new Date().getTime()); var $io = $('"; } $$content .= $line . "\n"; } return $content; } =head1 SEE ALSO L, L, L =head1 AUTHORS Jurnell Cockhren =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/Emote.pm0000644000175000017500000000241711376307503023746 0ustar gregoagregoapackage MojoMojo::Formatter::Emote; eval "use Text::Emoticon::MSN"; my $eval_res = $@; =head2 module_loaded Return true if the module is loaded. =cut sub module_loaded { $eval_res ? 0 : 1 } our $VERSION = '0.01'; =head1 NAME MojoMojo::Formatter::Emote - MSN Smileys in your text. =head1 DESCRIPTION This formatter transforms the full range of MSN Smileys into bitmaps on your page, using L. =head1 METHODS =head2 format_content_order Format order can be 1-99. The Emote formatter runs on 95. =cut sub format_content_order { 95 } =head2 format_content Calls the formatter. Takes a ref to the content as well as the context object. =cut sub format_content { my ($class, $content, $c)=@_; return unless $class->module_loaded && $c->pref('enable_emoticons'); my $emoticon = Text::Emoticon::MSN->new( imgbase => $c->req->base.'/.static/emote', xhtml => 1, strict => 1 ); # Let textile handle the rest $$content = $emoticon->filter( $$content ); } =head1 SEE ALSO L, L, L =head1 AUTHORS Marcus Ramberg =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/Textile.pm0000644000175000017500000000435111357175324024315 0ustar gregoagregoapackage MojoMojo::Formatter::Textile; use parent 'MojoMojo::Formatter'; use Text::Textile; use Text::SmartyPants; my $textile = Text::Textile->new( flavor => 'xhtml1', charset => 'utf-8', char_encoding => 0, # don't encode any other entities than <, >, " and & ); # We do not want Text::Textile to encode HTML entities at all because that will # conflict with with

     tags generated by SyntaxHighlight. SyntaxHighlight
    # already converts C<< < >> and C<< > >> to C<<> and C<>,> and letting
    # Textile process that again will produce C<&lt;> and C<&gt;>
    {
        no strict 'refs';
        no warnings;
        *{"Text::Textile::encode_html"} = sub { my ($self, $html) = @_; return $html; };
    }
    
    =head1 NAME
    
    MojoMojo::Formatter::Textile - Texile+SmartyPants formatting for your content
    
    =head1 DESCRIPTION
    
    This formatter processes content using L (a syntax for writing
    human-friendly formatted text), then post-processes that using L
    (which transforms plain ASCII punctuation characters into "smart" typographic
    punctuation HTML entities, such as smart quotes or the ellipsis character).
    
    Textile reference: 
    
    =head1 METHODS
    
    =head2 main_format_content
    
    Calls the formatter. Takes a ref to the content as well as the
    context object. Note that this is different from the format_content method
    of non-main formatters. This is because we don't want all main formatters
    to be called when iterating over pluggable modules in
    L.
    
    C will only be called by .
    
    =cut
    
    sub main_format_content {
        my ( $class, $content ) = @_;
    
        $$content = $textile->process($$content);
        $$content = Text::SmartyPants->process($$content);
        # for uniformity with Markdown, make sure the output ends with *one* newline.
        # See justification in L.
        $$content =~ s/\n*$/\n/;
        return $$content;
    }
    
    =head1 SEE ALSO
    
    L, L, L
    
    =head1 AUTHORS
    
    Marcus Ramberg 
    
    =head1 LICENSE
    
    This library is free software. You can redistribute it and/or modify
    it under the same terms as Perl itself.
    
    =cut
    
    1;
    libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/DocBook/0000755000175000017500000000000012546272315023655 5ustar  gregoagregoalibmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/DocBook/Colorize.pm0000644000175000017500000001471211376307503026004 0ustar  gregoagregoapackage MojoMojo::Formatter::DocBook::Colorize;
    
    #--------------------------------------------------------------------#
    # Transform XML Docbook in XHTML (colorized programlisting|screen )
    # 'lang' is lost in 'transformation xslt' step then:
    # mark lang -> transformation xslt -> colorize && unmark lang
    #--------------------------------------------------------------------#
    
    use strict;
    eval "use Syntax::Highlight::Engine::Kate;";
    my $eval_res = $@;
    
    =head2 module_loaded
    
    Return true if the module is loaded.
    
    =cut
    
    sub module_loaded { $eval_res ? 0 : 1 }
    
    my $hl_node="programlisting|screen";
    my $hl_attrib="lang";
    my $marklang=0;
    my $colorize=0;
    my $tomark;
    my $tocolorize;
    my $lang;
    my $doc;
    my $step;
    my $debug;
    
    
    sub new {
        my $type = shift;
        $debug = shift;
    
        my $self = ( $#_ == 0 ) ? shift : { @_ };
    
        return bless $self, $type;
    }
    
    
    sub step{
        my $self = shift;
        $step = shift;
    }
    
    
    sub start_document{
        print STDERR "start_document\n" if $debug;
    }
    
    
    sub end_document{
        my $result=$doc;
        $doc="";
    
        print STDERR "end_document\n" if $debug;
        return $result;
    }
    
    
    sub start_element{
        my $self = shift;
        my $el = shift;
    
        my @Attributes = keys %{$el->{Attributes}};
        my $name = $el->{Name};
    
        print STDERR "[$step]start_element: $name\n" if $debug;
    
        $doc .= "<$name";
        foreach my $att (@Attributes) {
            my $val = $el->{Attributes}->{$att}->{Value};
    
            $att =~ s/^\{\}//;
    
            # Uppercase fisrt letter of lang
            $val =~ s/\b(\w)/\U$1/g if (( $att eq "lang" )&&($el->{Name} =~ /$hl_node/));
    
            # Bug  XML::SAX::ParserFactory (???)
            # It add {http://www.w3.org/XML/1998/namespace} before lang="fr"
            #  if attrib class=article|section
            if ( $att eq "{http://www.w3.org/XML/1998/namespace}lang") {
                next;
            }
    
            # to be conform to xhtml 1.1
            if (( $name eq "div" ) && ( $att eq "lang" )) {
                $att = "xml:lang";
            }
    
            $doc .= " $att=\"$val\"";
    
            print STDERR "  $att=\"$val\"\n" if $debug;
    
            if (( $step eq 'marklang') && ( $att =~ /$hl_attrib/i )&&($el->{Name} =~ /$hl_node/ )) {
                $lang = $val;
                $marklang=1;
            } elsif (( $step eq 'colorize' ) && ($el->{Name} eq 'pre' )&&($val =~ /$hl_node/i)) {
                $colorize=1;
            }
        }
    
        $doc .= ">";
    }
    
    
    sub end_element{
        my $self = shift;
        my $el = shift;
    
        my $name = $el->{Name};
    
        print STDERR "[$step]end_element: $name\n" if $debug;
    
        # Mark language
        if (( $el->{Name} =~ /$hl_node/ ) && ($marklang eq 1 )) {
    
            #$tomark =~ s//>/g;
    
            $doc .= "[lang=$lang\]\n${tomark}\n\[\/lang\]";
    
            print STDERR " => MARK LANG\n" if $debug;
    
            $marklang=0;
            $lang="";
            $tomark="";
        }
        # Colorize
        elsif (( $el->{Name} =~ /pre/ ) && ($colorize eq 1 )) {
    
            print STDERR " => COLORIZE\n" if $debug;
            $doc .= ColorizeCode($tocolorize);
            $colorize=0;
            $tocolorize="";
        }
    
        if ( ! $lang ){ $doc =~ s/\n$// }
    
        $doc .= "";
    }
    
    
    sub characters{
        my $self = shift;
        my $el = shift;
    
        print STDERR "[$step]characters: " . $el->{Data} . "\n" if $debug;
    
        if ( $marklang ) {
            $tomark .= $el->{Data};
        } elsif (  $colorize ) {
            $tocolorize .= $el->{Data};
        } else {
            $doc .= $el->{Data} if ( defined $el->{Data} );
        }
    }
    
    
    sub ColorizeCode{
        my $code = shift;
    
        $code =~ m/\[lang=(.*)\]/;
        my $lang=$1;
    
        $code =~ s/^\n//;
        $code =~ s/\[lang=\w*\]\n//g;
        $code =~ s/\[\/lang\]\s*//;
        $code =~ s/\n\s*$//;
    
        if ( $debug ) {
            print STDERR "lang=$lang\ncode=$code\n" . "-"x60 . "\n";
        }
    
        return $code if ( ! $lang );
        return $code unless __PACKAGE__->module_loaded;
    
    
        my $hl = Syntax::Highlight::Engine::Kate->new(
            language      => 'Perl',
            substitutions => {
                "&"  => "&",
                " "  => " ",
                "\t" => "   ",
                "\n" => "\n",
            },
            format_table => {
                Alert        => [ q{},           "" ],
                BaseN        => [ q{},           "" ],
                BString      => [ q{},         "" ],
                Char         => [ q{},            "" ],
                Comment      => [ q{},      "" ],
                DataType     => [ q{},        "" ],
                DecVal       => [ q{},          "" ],
                Error        => [ q{},     "" ],
                Float        => [ q{},           "" ],
                Function     => [ q{},        "" ],
                IString      => [ q{},         "" ],
                Keyword      => [ q{},                            "" ],
                Normal       => [ q{},                               "" ],
                Operator     => [ q{},        "" ],
                Others       => [ q{},          "" ],
                RegionMarker => [ q{}, "" ],
                Reserved     => [ q{},     "" ],
                String       => [ q{},          "" ],
                Variable     => [ q{},     "" ],
                Warning      => [ q{},   "" ],
            },
        );
    
    
        my @LANGS=$hl->languageList;
    
        # check lang
        my @goodlang = grep(/$lang/i, @LANGS );
        if ( ! $goodlang[0]  ) {
            return "{Language '$lang' unknown !!! in :\n". "-"x80 . "\n${code}\n" ."-"x80 . "\n" . "Authorized languages : @LANGS";
        }
    
        $hl->language($goodlang[0]);
        my $result = $hl->highlightText($code);
    
        return $result;
    }
    
    
    1;
    
    __END__
    
    =head1 NAME
    
    ColorizeDbk - syntax-highlight docbook
    
    =head1 FUNCTIONS
    
    I think these are all internal.
    
    =head2 new
    
    =head2 start_tag
    
    =head2 end_tag
    
    =head2 ColorizeCode
    
    =head2 characters
    
    =head2 end_document
    
    =head2 end_element
    
    =head2 start_document
    
    =head2 start_element
    
    =head2 step
    
    =head1 AUTHORS
    
    Daniel Brosseau 
    
    =head1 LICENSE
    
    This module is licensed under the same terms as Perl itself.
    
    =cut
    libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/TOC.pm0000644000175000017500000001607411376307503023326 0ustar  gregoagregoapackage MojoMojo::Formatter::TOC;
    
    use parent qw/MojoMojo::Formatter/;
    
    use HTML::Entities;
    use Encode;
    
    eval "use HTML::Toc;use HTML::TocInsertor;";
    my $eval_res = $@;
    
    =head2 module_loaded
    
    Return true if the module is loaded.
    
    =cut
    
    sub module_loaded { $eval_res ? 0 : 1 }
    
    =head1 NAME
    
    MojoMojo::Formatter::TOC - generate table of contents
    
    =head1 DESCRIPTION
    
    This formatter will replace C<{{toc}}> with a table of contents, using
    HTML::GenToc. If you don't want an element to be included in the TOC,
    make it have C
    
    =head1 METHODS
    
    =head2 format_content_order
    
    The TOC formatter expects HTML input so it needs to run after the main
    formatter. Since comment-type formatters (order 91) could add a heading
    for the comment section, the TOC formatter will run with a priority of 95.
    
    =cut
    
    sub format_content_order { 95 }
    
    =head2 format_content
    
    Calls the formatter. Takes a ref to the content as well as the context object.
    The syntax for the TOC plugin invocation is:
    
      {{toc M- }}     # start from Header level M
      {{toc -N }}     # stop at Header level N
      {{toc M-N }}    # process only header levels M..N
    
    where M is the minimum heading level to include in the TOC, and N is the
    maximum level (depth). For example, suppose you only have one H1 on the page
    so it doesn't make sense to add it to the TOC; also, assume you and don't want
    to include any headers smaller than H3. The {{toc}} markup to achieve that would be:
    
      {{toc 2-3}}
    
    Defaults to 1-6.
    
    =cut
    
    sub format_content {
        my ( $class, $content ) = @_;
        return unless $class->module_loaded;
        my $toc_params_RE = qr/\s+ (\d+)? \s* - \s* (\d+)?/x;
        while (
            # replace the {{toc ..}} markup tag and parse potential parameters
            $$content =~ s[
                {{ toc (?:$toc_params_RE)? \s* \/? }}
            ][
    \n\n
    ]ix) { my ($toc_h_min, $toc_h_max); $toc_h_min = $1 || 1; $toc_h_max = $2 || 9; # in practice, there are no more than 6 heading levels $toc_h_min = 9 if $toc_h_min > 9; # prevent TocGenerator error for headings >= 10 $toc_h_max = 9 if $toc_h_max > 9 or $toc_h_max < $toc_h_min; # {{toc 3-1}} is wrong; make it {{toc 3-9}} instead my $toc = HTML::Toc->new(); my $tocInsertor = HTML::TocInsertor->new(); $toc->setOptions({ header => '', # by default, \n\n footer => '', insertionPoint => 'replace ', doLinkToId => 0, levelToToc => "[$toc_h_min-$toc_h_max]", templateAnchorName => \&assembleAnchorName, }); # http://search.cpan.org/dist/HTML-Toc/Toc.pod#HTML::TocInsertor::insert() $tocInsertor->insert($toc, $$content, {output => $content}); return 1; } } =head2 SEO-friendly anchors Anchors should be generated with SEO- (and human-) friendly names, i.e. out of the entire token text, instead of being numeric or reduced to the first word(s) of the token. In the spirit of http://seo2.0.onreact.com/top-10-fatal-url-design-mistakes, compare: http://beachfashion.com/photos/Pamela_Anderson#In_red_swimsuit_in_Baywatch vs. http://beachfashion.com/photos/Pamela_Anderson#in "Which one speaks your language more, which one will you rather click?" The anchor names generated are compliant with XHTML1.0 Strict. Also, per the HTML 4.01 spec, anchor names should be restricted to ASCII characters and anchors that differ only in case may not appear in the same document. In particular, an anchor name may be defined only once in a document (logically, because otherwise the user agent wouldn't know which #foo to scroll to). This is currently a problem with L v1.11, which doesn't have support for passing the already existing anchors to the C sub. =head2 assembleAnchorName http://search.cpan.org/dist/HTML-Toc/Toc.pod#templateAnchorName =cut sub assembleAnchorName { my ($aFile, $aGroupId, $aLevel, $aNode, $text, $children) = @_; if ($text !~ /^\s*$/) { # generate a SEO-friendly anchor right from the token content # The allowed character set is limited first by the URI specification for fragments, http://tools.ietf.org/html/rfc3986#section-2: characters # then by the limitations of the values of 'id' and 'name' attributes: http://www.w3.org/TR/REC-html40/types.html#type-name # Eventually, the only punctuation allowed in id values is [_.:-] # Unicode characters with code points > 0x7E (e.g. Chinese characters) are allowed (test "

    header

    " at http://validator.w3.org/#validate_by_input+with_options), except for smart quotes (!), see http://www.w3.org/Search/Mail/Public/search?type-index=www-validator&index-type=t&keywords=[VE][122]+smart+quotes&search=Search+Mail+Archives # However, that contradicts the HTML 4.01 spec: "Anchor names should be restricted to ASCII characters." - http://www.w3.org/TR/REC-html40/struct/links.html#h-12.2.1 # ...and the [A-Za-z] class of letters mentioned at http://www.w3.org/TR/REC-html40/types.html#type-name # Finally, note that pod2html fails miserably to generate XHTML-compliant anchor links. See http://validator.w3.org/check?uri=http%3A%2F%2Fsearch.cpan.org%2Fdist%2FCatalyst-Runtime%2Flib%2FCatalyst%2FRequest.pm&charset=(detect+automatically)&doctype=XHTML+1.0+Transitional&group=0&user-agent=W3C_Validator%2F1.606 $text =~ s/\s/_/g; decode_entities($text); # we need to replace [#&;] only when they are NOT part of an HTML entity. decode_entities saves us from crafting a nasty regexp $text = encode('utf-8', $text); # convert to UTF-8 because we need to output the UTF-8 bytes $text =~ s/([^A-Za-z0-9_:.-])/sprintf('.%02X', ord($1))/eg; # MediaWiki also uses the period, see http://en.wikipedia.org/wiki/Hierarchies#Ethics.2C_behavioral_psychology.2C_philosophies_of_identity $text = 'L'.$text if $text =~ /\A\W/; # "ID and NAME tokens must begin with a letter ([A-Za-z])" -- http://www.w3.org/TR/html4/types.html#type-name } $text = 'id' if $text eq ''; # check if the anchor already exists; if so, add a number # NOTE: there is no way currently to do this easily in HTML-Toc-1.10. #my $anch_num = 1; #my $word_name = $name; ## Reference: http://www.w3.org/TR/REC-html40/struct/links.html#h-12.2.1 ## Anchor names must be unique within a document. Anchor names that differ only in case may not appear in the same document. #while (grep {lc $_ eq lc $name} keys %{$args{anchors}}) { # # FIXME (in caller sub): to avoid the grep above, the $args{anchors} hash # # should have as key the lowercased anchor name, and as value its actual value (instead of '1') # $name = $word_name . "_$anch_num"; # $anch_num++; #} return $text; } =head1 SEE ALSO L and L. =head1 AUTHORS Dan Dascalescu, L =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/Defang.pm0000644000175000017500000001354711376307503024067 0ustar gregoagregoapackage MojoMojo::Formatter::Defang; use strict; use warnings; use parent qw/MojoMojo::Formatter/; use MojoMojo::Declaw; use URI; =head1 NAME MojoMojo::Formatter::Defang - Scrub user HTML and XSS =head1 DESCRIPTION This formatter makes sure only a safe range of tags are allowed, using L; It also tries to remove XSS attempts. =head1 METHODS =head2 format_content_order Format order can be 1-99. The Defang formatter runs on 16, just after the main formatter, in order to catch direct user input. Defang trusts the main formatter and all subsequently ran plugins to not output unsafe HTML. =cut sub format_content_order { 16 } =head2 defang_tags_callback Callback for custom handling specific HTML tags =cut sub defang_tags_callback { my ( $c, $defang, $open_angle, $lc_tag, $is_end_tag, $attribute_hash, $close_angle, $html_r, $out_r ) = @_; # Explicitly whitelist this tag, although unsafe return 0 if $lc_tag eq 'embed'; return 0 if $lc_tag eq 'object'; return 0 if $lc_tag eq 'param'; return 0 if $lc_tag eq 'pre'; # I am not sure what to do with this tag, so process as # HTML::Defang normally would #return 2 if $lc_tag eq 'img'; } =head2 defang_url_callback Callback for custom handling URLs in HTML attributes as well as styletag/attribute declarations =cut sub defang_url_callback { my ( $c, $defang, $lc_tag, $lc_attr_key, $attr_val_r, $attribute_hash, $html_r ) = @_; # Do not allow javascript to start a URL in tag attributes or stylesheets return 1 if $$attr_val_r =~ /^javascript/i; # Do not allow bypassing of protocol return 1 if $$attr_val_r =~ m{^//}i; # Explicitly defang this URL in tag attributes or stylesheets return 1 if $$attr_val_r =~ /youporn.com/i; # Allow URL's otherwise return 0; } =head2 defang_css_callback Callback for custom handling style tags/attributes. =cut sub defang_css_callback { my ( $c, $defang, $selectors, $selector_rules, $tag, $is_attr ) = @_; my $i = 0; foreach (@$selectors) { my $selector_rule = $$selector_rules[$i]; foreach my $key_value_rules (@$selector_rule) { foreach my $key_value_rule (@$key_value_rules) { my ( $key, $value ) = @$key_value_rule; # Comment out any ’!important’ directive $$key_value_rule[2] = 1 if $value =~ '!important'; # Comment out any ’position=fixed;’ declaration $$key_value_rule[2] = 1 if $key =~ 'position' && $value =~ 'fixed'; } } $i++; } } =head2 defang_attribs_callback Callback for custom handling HTML tag attributes. =cut sub defang_attribs_callback { my ( $c, $defang, $lc_tag, $lc_attr_key, $attr_val_r, $html_r ) = @_; # if $lc_attr_key eq 'value'; # Initial Defang effort on attributes applies specifically to 'src' if ( $lc_attr_key eq 'src' ) { my $src_uri_object = URI->new($$attr_val_r); # Allow src URI's from configuration. my @allowed_src_regex; # Tests may not have a $c if ( defined $c ) { if ( exists $c->stash->{allowed_src_regexes} ) { @allowed_src_regex = @{ $c->stash->{allowed_src_regexes} }; } else { my $allowed_src = $c->config->{allowed}{src}; my @allowed_src = ref $allowed_src ? @{$allowed_src} : ($allowed_src); @allowed_src_regex = map { qr/$_/ } @allowed_src if $allowed_src[0]; # TODO: Shouldn't this be using pref cache? $c->stash->{allowed_src_regexes} = \@allowed_src_regex; } } for my $allowed_src_regex (@allowed_src_regex) { if ( $$attr_val_r =~ $allowed_src_regex ) { return 0; } } # When $c and src uri authority are defined we want to make sure # it matches the server of the img src. i.e. we allow images from the # local server whether the URI is relative or absolute.. if ( defined $c && defined $src_uri_object->authority ) { if ( $c->request->uri->authority eq $src_uri_object->authority ) { return 0; } else { return 1; } } # We have an authority but no context. # Probably means we're testing with just the Defang formatter # instead of the Full formatter chain. # We will defang any src's left with an authority (defang_src) # since the approved ones were already allowed in above. elsif ( defined $src_uri_object->authority ) { return 1; } # Explicitly defang javascript in img src. elsif ( $$attr_val_r =~ m{javascript}i ) { return 1; } else { return 0; } } return 0; } =head2 format_content Calls the formatter. Takes a ref to the content as well as the context object. =cut sub format_content { my ( $self, $content, $c ) = @_; my $defang = MojoMojo::Declaw->new( context => $c, fix_mismatched_tags => 1, tags_to_callback => [qw/br embed object param img/], tags_callback => \&defang_tags_callback, url_callback => \&defang_url_callback, css_callback => \&defang_css_callback, attribs_to_callback => [qw(src value title)], attribs_callback => \&defang_attribs_callback, ); $$content = $defang->defang($$content); return; } =head1 SEE ALSO L, L, L =head1 AUTHORS Marcus Ramberg =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/Wiki.pm0000644000175000017500000003234712423006323023573 0ustar gregoagregoapackage MojoMojo::Formatter::Wiki; use parent qw/MojoMojo::Formatter/; use URI; use Scalar::Util qw/blessed/; use MojoMojo::Formatter::TOC; =head1 NAME MojoMojo::Formatter::Wiki - Handle interpage linking. =head1 DESCRIPTION This formatter handles intra-Wiki links specified between double square brackets or parentheses: [[wiki link]] or ((another wiki link)). It will also indicate missing links with a question mark and a link to the edit page. Links can be implicit (like the two above), where the path is derived from the link text by replacing spaces with underscores (wiki link), or explicit, where the path is specified before a '|' sign: [[/explicit/path|Link text goes here]] Note that external links have a different syntax: [Link text](http://foo.com). =head1 METHODS =head2 format_content_order Format order can be 1-99. The Wiki formatter runs on 10. =cut sub format_content_order { 10 } ## list of start-end delimiter pairs my @explicit_delims = (qw{ \[\[ \]\] \(\( \)\) }); my $explicit_separator = '\|'; my $wikiword_escape = qr{\\}; sub _explicit_start_delims { my %delims = @explicit_delims; return keys %delims; } sub _explicit_end_delims { my %delims = @explicit_delims; return values %delims; } sub _generate_explicit_start { my $delims = join '|', _explicit_start_delims(); return qr{(?: $delims )}x; # non-capturing match } sub _generate_explicit_end { my $delims = join '|', _explicit_end_delims(); return qr{(?: $delims )}x; # non-capturing match } sub _generate_explicit_path { # non-greedily match characters that don't match the start-end and text delimiters my $not_an_end_delimiter_or_separator = '(?:(?!' . (join '|', _explicit_end_delims(), $explicit_separator) . ').)'; # produces (?: (?! ]] | \)\) | \| ) .) # a character in a place where neither a ]], nor a )), nor a | is return qr{$not_an_end_delimiter_or_separator+?}; } sub _generate_explicit_text { # non-greedily match characters that don't match the start-end delimiters my $not_an_end_delimiter = '(?:(?!' . ( join '|', _explicit_end_delims() ) . ').)'; # produces (?: (?! ]] | \)\) ) .) # a character in a place where neither a ]] nor a )) starts return qr{$not_an_end_delimiter+?}; } my $explicit_start = _generate_explicit_start(); my $explicit_end = _generate_explicit_end(); my $explicit_path = _generate_explicit_path(); my $explicit_text = _generate_explicit_text(); sub _generate_non_wikiword_check { # FIXME: this evaluates incorrectly to a regexp that's clearly mistaken: (?x-ism:( ?]*>}sx ) { # $$content =~ s{^.+?<\s*pre\b[^>]*>}{}sx; $$content =~ s{^.+?<\s*pre(?:\s+lang=['"]*(.*?)['"]*")?>}{}sx; my $lang = $1 || ''; my ($inner) = $$content =~ m{^(.+?)<\s*/pre\s*>}sx; unless ($inner) { $res .= $part; last; } push @parts, $inner; $res .= $part . ""; $$content =~ s{^.+?<\s*/pre\s*>}{}sx; } $res .= $$content; return $res, @parts; } =head2 reinsert_pre Put pre and lang back into place. =cut sub reinsert_pre { my ( $content, @parts ) = @_; foreach my $part (@parts) { $$content =~ s{}{
    $part
    }sx; } return $$content; } =head2 format_content Calls the formatter. Takes a ref to the content as well as the context object. =cut # FIXME: should ACCEPT_CONTEXT? sub format_content { my ( $class, $content, $c, $self ) = @_; # Extract wikiwords, avoiding escaped and part of urls my @parts; ( $$content, @parts ) = strip_pre($content); # Do explicit links, e.g. [[ /path/to/page | link text ]] $$content =~ s{ $non_wikiword_check $explicit_start \s* ($explicit_path) \s* (?: $explicit_separator \s* ($explicit_text) \s* )? $explicit_end }{ $class->format_link($c, $1, $c->req->base, $2) }gex; $$content =~ s{ $non_wikiword_check ( $explicit_start \s* $explicit_path \s* (?: $explicit_separator \s* $explicit_text \s* )? $explicit_end ) }{ $1 }gx; # Remove escapes on escaped wikiwords. The escape means # that this wikiword is NOT a link to a wiki page. $$content =~ s{$wikiword_escape($explicit_start)}{$1}g; $$content = reinsert_pre( $content, @parts ); } =head2 format_link [] Format a wikilink as an HTML hyperlink with the given link_text. If the wikilink doesn't exist, it will be rendered as a hyperlink to an .edit page ready to be created. Since there is no difference in syntax between new and existing links, some abiguities my occur when it comes to characters that are invalid in URLs. For example, * [[say "NO" to #8]] should be rendered as C<< say "NO" to #8 >> * [[100% match]] should be rendered as C<< This is complicated by the fact that '#' can delimit the start of the anchor portion of a link. * C<[[Mambo #5]]> - URL-escape '#' => Mambo_%235 * C<[[Mambo#origins]]> - do not URL-escape * C<[[existing/link#Introduction|See the Introduction]]> - definitely do not URL-escape Since escaping is somewhat magic and therefore potentially counter-intuitive, we will: * only URL-escape '#' if it follows a whitespace directly * always URL-escape '%' unless it is followed by two uppercase hex digits * always escape other characters that are invalid in URLs =cut sub format_link { #FIXME: why both base and $c? my ( $class, $c, $wikilink, $base, $link_text, $action) = @_; $base ||= $c->req->base; # The following control structures are used to build the wikilink # from the stashed path and $wikilink passed to this function. # May as well smoke the page stash from MojoMojo.pm since we got it eh? my $stashed_path = $c->stash->{path}; # If the wikilink starts with a slash the pass it on through my $pass_wikilink_through; if ( $wikilink =~ m{^/} ) { $pass_wikilink_through = 1; } # Make sure the $stashed_path starts with a bang, uh I mean slash. elsif ( $stashed_path ) { $stashed_path = '/' . $stashed_path if $stashed_path !~ m{^/}; } else { $stashed_path = '/'; } # Handle sibling case by making look it like the rest. if ( my ($sibling) = $wikilink =~ m'^\.\./(.*)$' ) { my ($parent) = $stashed_path =~ m'(.*)/.*$'; $wikilink = $parent . '/' . $sibling; } elsif ( !$pass_wikilink_through ) { $wikilink = $stashed_path . '/' . $wikilink; # Old School Method: # $wikilink = ( blessed $c->stash->{page} ? $c->stash->{page}->path : $c->stash->{page}->{path} ). '/' . $wikilink # unless $wikilink =~ m'^(\.\.)?/'; } $c = MojoMojo->context unless ref $c; # keep the original wikilink for display, stripping leading slashes my $orig_wikilink = $wikilink; if ( $orig_wikilink =~ m|^ \s* /+ \s* $|x ) { $orig_wikilink = '/'; } else { $orig_wikilink =~ s/.*\///; } my $fragment = ''; for ($wikilink) { s/(??{|}] # escape all other characters that are invalid in URLs /sprintf('%%%02X', ord($&))/egx; # all other characters in the 0x21..0x7E range are OK in URLs; see the conflicting guidelines at http://www.ietf.org/rfc/rfc1738.txt and http://labs.apache.org/webarch/uri/rfc/rfc3986.html#reserved } } # if the fragment was not properly formatted as a fragment (per the rules explained in MojoMojo::Formatter::TOC::assembleAnchorName, i.e. i has an invalid character), convert it, unless it contains escaped characters already (.[0-9A-F]{2}) if(MojoMojo::Formatter::TOC->module_loaded){ $fragment = MojoMojo::Formatter::TOC::assembleAnchorName(undef, undef, undef, undef, $fragment) if $fragment ne '' and ($fragment =~ /[^A-Za-z0-9_:.-]/ or $fragment !~ /\.[0-9A-F]{2}/); } my $formatted = $link_text || $class->expand_wikilink($orig_wikilink); # convert relative paths to absolute paths if ( $c->stash->{page} && # drop spaces ref $c->stash->{page} eq 'MojoMojo::Model::DBIC::Page' && $wikilink !~ m|^/| ) { $wikilink = URI->new_abs( $wikilink, $c->stash->{page}->path . "/" ); } elsif ( $c->stash->{page_path} && $wikilink !~ m|^/| ) { $wikilink = URI->new_abs( $wikilink, $c->stash->{page_path} . "/" ); } # make sure that base URL has no trailing slash, since the page path will have a leading slash my $url = $base; $url =~ s/[\/]+$//; # remove http://host/ from url $url =~ s!^https?://[^/]+!!; # use the normalized path string returned by path_pages: my ( $path_pages, $proto_pages ) = $c->model('DBIC::Page')->path_pages($wikilink); if ( defined $proto_pages && @$proto_pages ) { my $proto_page = pop @$proto_pages; $url .= $proto_page->{path}; if ( $action) { $url .= ".$action" ; return qq{$formatted}; } else { return qq{$formatted?}; } } else { my $page = pop @$path_pages; $url .= $page->path; $url .= ".$action" if $action; $url .= "#$fragment" if $fragment ne ''; return qq{$formatted}; } } =head2 expand_wikilink Replace C<_> with spaces and unescape URL-encoded characters =cut sub expand_wikilink { my ( $class, $wikilink ) = @_; for ($wikilink) { s/\_/ /g; s/%([0-9A-F]{2})/chr(hex($1))/eg; } return $wikilink; } =head2 find_links Find wiki links in content. Return a listref of linked (existing) and wanted pages. =cut sub find_links { my ( $class, $content, $page ) = @_; my @linked_pages; my @wanted_pages; my @parts; ( $$content, @parts ) = strip_pre($content); my $explicit_regex = qr/$non_wikiword_check$explicit_start \s* ($explicit_path) \s* (?: $explicit_separator \s* $explicit_text \s* )? $explicit_end/x; while ( $$content =~ /$explicit_regex/g ) { my $link = $1; $link =~ s/\s/_/g; # convert relative paths to absolute paths if ( $link !~ m|^/| ) { $link = URI->new_abs( $link, ( $page->path || '' ) . "/" ); } # use the normalized path string returned by path_pages: my ( $path_pages, $proto_pages ) = $page->result_source->resultset->path_pages($link); if ( defined $proto_pages && @$proto_pages ) { push @wanted_pages, pop @$proto_pages; } else { push @linked_pages, pop @$path_pages; } } $$content = reinsert_pre( $content, @parts ); return ( \@linked_pages, \@wanted_pages ); } =head1 SEE ALSO L, L =head1 AUTHORS Marcus Ramberg =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/IRCLog.pm0000644000175000017500000000615711357175324023764 0ustar gregoagregoapackage MojoMojo::Formatter::IRCLog; use parent qw/MojoMojo::Formatter/; =head1 NAME MojoMojo::Formatter::IRCLog - format part of content as an IRC log =head1 DESCRIPTION This formatter will format content between {{irc}} and {{end}} as an IRC log =head1 METHODS =head2 format_content_order Format order can be 1-99. The IRC log formatter runs on 14, just before the main formatter. =cut sub format_content_order { 14 } =head2 format_content Calls the formatter. Takes a ref to the content as well as the context object. =cut sub format_content { my ( $class, $content ) = @_; my ( $in_log, %nicks, $longline, @newlines ); my @lines = split( /\n/, $$content ); $$content = ""; my $start_re=$class->gen_re(qr/irc/); my $end_re=$class->gen_re(qr/end/); foreach my $line (@lines) { if ($in_log) { if ( $line =~ $end_re ) { $in_log = 0; if ($longline) { $longline .= ""; push( @newlines, $longline ); $longline = ""; } push @newlines, $line; } elsif ( $line =~ /^[\d:]*\s*<[+\%\@ ]?(.*?)>\s*(.*)/ ) { if ($longline) { $longline .= ""; push( @newlines, $longline ); $longline = ""; } $nicks{$1} = 1; $longline = "
    $1
    \n
    $2"; } else { $line =~ s/^\s*/ /; $longline .= $line; } } else { if ( $line =~ $start_re ) { push @newlines, $line; $in_log = 1; } else { push( @newlines, $line ); } } } foreach my $line (@newlines) { if ($in_log) { if ( $line =~ $end_re ) { $in_log = 0; # end the dl and the section not handled by textile $$content .= "\n==\n"; } else { my $count = 0; my @colours=( 'navy', 'green' , 'maroon', 'blue', 'lime', 'red', 'silver', 'gray', 'teal', 'olive', 'purple', 'fuchsia' ); my $counter; foreach my $nick ( keys %nicks ) { $colour=$colours[$counter++]; $count += ( $line =~ s!()$nick()!$1[[$nick]]$2!g ); } $$content .= "$line\n"; } } else { if ( $line =~ $start_re ) { $in_log = 1; # start a definition list in a section not handled by # textile $$content .= "==\n
    \n"; } else { $$content .= "$line\n"; } } } } =head1 SEE ALSO L and L. =head1 AUTHORS Martijn van Beers =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/Markdown.pm0000644000175000017500000000471411357175324024464 0ustar gregoagregoapackage MojoMojo::Formatter::Markdown; use parent qw/MojoMojo::Formatter/; my $markdown; eval "use Text::MultiMarkdown"; unless ($@) { $markdown = Text::MultiMarkdown->new( markdown_in_html_blocks => 0, # Allow Markdown syntax within HTML blocks. use_metadata => 0, # Remove MultiMarkdown behavior change to make the top of the document metadata. heading_ids => 0, # Remove MultiMarkdown behavior change in tags. img_ids => 0, # Remove MultiMarkdown behavior change in tags. ); } =head1 NAME MojoMojo::Formatter::Markdown - MultiMarkdown formatting for your content. MultiMarkdown is an extension of Markdown, adding support for tables, footnotes, bibliography, automatic cross-references, glossaries, appendices, definition lists, math syntax, anchor and image attributes, and document metadata. Markdown syntax: L MultiMarkdown syntax: L =head1 DESCRIPTION This formatter processes content using L This is a syntax for writing human-friendly formatted text. =head1 METHODS =head2 main_format_content Calls the formatter. Takes a ref to the content as well as the context object. Note that this is different from the format_content method of non-main formatters. This is because we don't want all main formatters to be called when iterating over pluggable modules in L. C will only be called by . Note that L ensures that the output always ends with B newline. The fact that multiple newlines are collapsed into one makese sense, because this is the behavior of HTML towards whispace. The fact that there's always a newline at the end makes sense again, given that the output will always be nested in a B-level element, be it a C<<

    >> (most often), C<< >>, or C<<
    >> (when passing HTML through). =cut sub main_format_content { my ( $class, $content ) = @_; return unless $markdown; $$content = $markdown->markdown($$content); } =head1 SEE ALSO L, L, L =head1 AUTHORS Marcus Ramberg =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/IDLink.pm0000644000175000017500000000407311525450176024010 0ustar gregoagregoapackage MojoMojo::Formatter::IDLink; use strict; use warnings; use parent qw/MojoMojo::Formatter/; =head1 NAME MojoMojo::Formatter::IDLink - Linked {{id: }} =cut my $CONF = { tw => 'http://twitter.com/%s', htb => 'http://b.hatena.ne.jp/%s', htd => 'http://d.hatena.ne.jp/%s', cpan => 'http://search.cpan.org/~%s/', fb => 'http://facebook.com/%s', }; my $DEFAULT = 'tw'; =head1 DESCRIPTION if you write: {{id bayashi}} it will format like this bayashi you can write: {{id:cpan bayashi}} it will format like this bayashi =head1 METHODS =head2 format_content_order The IDLink formatter has no special requirements in terms of the order it gets run in, so it has a priority of 10. =cut sub format_content_order { 10 } =head2 format_content Calls the formatter. Takes a ref to the content as well as the context object. =cut sub format_content { my ( $class, $content, $c ) = @_; return unless $$content; my @lines = split /\n/, $$content; $$content = ''; my $re = $class->gen_re( qr/id(?::([^\s]+))?\s+(.+)/ ); for my $line (@lines) { if ( $line =~ m/$re/ ) { $line = $class->process($c, $line, $re, $1, $2); } $$content .= $line . "\n"; } } =head2 process Here the actual formatting is done. =cut sub process { my $class = shift; my ($c, $line, $re, $site, $id) = @_; $site ||= $DEFAULT; unless ($CONF->{$site}) { my $sites = join ',', keys %{$CONF}; $line =~ s/$re/"IDLink: ". $c->loc('identifier is wrong.'). " use [$sites]"/e; return $line; } my $url = sprintf($CONF->{$site}, $id); $line =~ s!$re!$id!; return $line; } =head1 SEE ALSO L and L. =head1 AUTHORS Dai Okabayashi, L =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/Amazon.pm0000644000175000017500000000736611525450176024133 0ustar gregoagregoapackage MojoMojo::Formatter::Amazon; eval "use Net::Amazon"; my $eval_res=$@; =head2 module_loaded Return true if the module is loaded. =cut sub module_loaded { $eval_res ? 0 : 1 } our $VERSION='0.01'; =head1 NAME MojoMojo::Formatter::Amazon - Include Amazon objects on your page. =head1 DESCRIPTION This is an url formatter. it takes urls containing amazon and /-/ or /ASIN/ and make a pretty formatted link to that object in the amazon web store. It automatically handles books/movies/dvds and formats them as apropriate. You can also pass 'small' as a parameter after the url, and it will make a thumb link instead of a blurb. =head1 METHODS =head2 format_content_order Format order can be 1-99. The Amazon formatter runs on 5. =cut sub format_content_order { 5 } =head2 format_content calls the formatter. Takes a ref to the content as well as the context object. =cut sub format_content { my ($class,$content,$c)=@_; return unless $class->module_loaded; my @lines=split /\n/,$$content; my $pod;$$content=""; foreach my $line (@lines) { if ($line =~ m/(\{\{?:http:\/\/(?:www\.){0,1}amazon\.com(?:\/.*){0,1}(?:\/dp\/|\/gp\/product\/))(.*?)(?:\/.*|$)\}\}/) { my $item=$class->get($1,$c->config->{amazon_id}); unless (ref($item)) { $$content.=$line."\n"; next; } if ($2) { next unless $class->can($2); $$content.=$class->$2($item); } else { $$content.=$class->blurb($item); } } else { $$content .=$line."\n"; } } } =head2 get Connects to amazon and retrieves a L object based on the supplied ASIN number. =cut sub get { my ($class,$id,$amazon_id,$secret_key)=@_; #FIXME: devel token should be set in formatter config. my $amazon=Net::Amazon->new(token=>$amazon_id,secret_key=>$secret_key); my $response=$amazon->search(asin=>$id); return "Unable to connect to amazon." unless $response->is_success; ($property)=$response->properties; return "No property object" unless $property; return $property; } =head2 small Renders a small version of the formatter. =cut sub small { my ($class,$property)=@_; return "!".$property->ImageUrlMedium. '!:http://www.amazon.com/exec/obidos/ASIN/'.$property->Asin."/feed-20\n"; } =head2 blurb renders a full width blurb of the product, suitable for reviews and such. =cut sub blurb { my ($class,$property)=@_; my $method=ref $property; $method =~ s/.*:://; return "
    !<".$property->ImageUrlSmall. '!:http://www.amazon.com/exec/obidos/ASIN/'.$property->Asin."/feed-20\n\n". "h1. ".$property->ProductName."\n\n". '"buy at amazon for '.$property->OurPrice.'":'. 'http://www.amazon.com/exec/obidos/ASIN/'.$property->Asin."/feed-20\n\n". ($method && ($class->can($method) ? $class->$method($property) :"
    \n\n")). "
    "; } =head2 DVD Product information suitable for DVD movies. =cut sub DVD { my ($class,$property) = @_; return " -- ??".join(',',$property->directors).'?? ('.$property->year .")\n\n"; } =head2 Book Product information suitable for books. =cut sub Book { my ($class,$property) = @_; return " -- ??".join(',',$property->authors).'?? ('.$property->year .")\n\n"; } =head2 Music Product information suitable for music CDs. =cut sub Music { my ($class,$property) = @_; return " -- ??".join(',',$property->artists).'?? ('.$property->year .")\n\n"; } =head1 SEE ALSO L, L, L. =head1 AUTHORS Marcus Ramberg prefix_url /myfiles whitelisting __path_to(uploads)__ =head1 METHODS =over 4 =item format_content_order Format order can be 1-99. The File formatter runs on 92. =cut sub format_content_order { 92 } =item format_content Calls the formatter. Takes a ref to the content as well as the context object. =cut sub format_content { my ( $self, $content, $c ) = @_; # TODO : Add cache if directory is not modified my @lines = split /\n/, $$content; $$content = ""; foreach my $line (@lines) { if ( $line =~ m|

    {{dir\s*(\S*)\s*(\S*)}}

    | ) { my $dir = $1; my $exclude = $2; $exclude =~ s/exclude=//; my $path_to = $c->path_to(); # use path_to(dir) ? $dir =~ s/path_to\((\S*)\)/${path_to}\/$1/; $dir =~ s/\/$//; my $error; if ( $error = $self->checkdir($dir, $c)){ $$content .= $error; } if ( ! $error ){ # format with plugin $$content .= $self->format($dir, $exclude, $c); } } else{ $$content .= $line . "\n"; } } return $content; } =item format Return the content formatted =cut sub format { my $self = shift; my $dir = shift; my $exclude = shift; my $c = shift; my $baseuri = $c->base_uri; my $path = $c->stash->{path}; return $self->to_xhtml($dir, $exclude, $baseuri, $path); } =item to_xhtml Return Directory and files lists in xhtml =cut sub to_xhtml{ my ($self, $dir, $exclude, $baseuri, $path) = @_; my $pcdir = Path::Class::dir->new("$dir"); my @subdirs; my @files; while (my $file = $pcdir->next) { next if ($file =~ m/^$dir\/?\.*$/ ); next if ( "$exclude" && grep(/$exclude/, $file )); if ( -d $file ){ push @subdirs , $file; } else{ push @files, $file; } } #-mxh Sort the array for predictable ordering in formatter_dir.t @subdirs = sort @subdirs; @files = sort @files; $path =~ s/^\///; $path =~ s/\/$//; my $url = "${baseuri}/${path}"; my $ret; if ( $subdirs[0] ){ $ret = '
      '; $ret .= "
    • ..
    • " if ( $url =! "/$path"); foreach my $d (@subdirs){ next if ( ! -r $d); $d =~ s/$dir\///; $ret .= "
    • [$d]
    • "; } $ret .= "
    \n"; } if ( $files[0] ){ $ret .= '
      '; foreach my $f (@files){ next if ( ! -r $f); $f =~ s/$dir\///; $f =~ s/^\///; # Use Image controller if it is a image $f =~ /.*\.(.*)$/; # replace dot with '_' if it's not a image $f =~ s/\./_/ if ( ! MojoMojo::Formatter::File::Image->can_format($1) ); $ret .= "
    • $f
    • "; } $ret .= "
    \n"; } return $ret; } =item checkdir Directory must be include in whitelisting =cut sub checkdir{ my ($self,$dir,$c) = @_; return "Append a directory after 'dir'" if ( ! $dir ); return "You can't use '..' in the name of directory" if ( $dir =~ /\.\./ ); my $confwl = $c->config->{'Formatter::Dir'}{whitelisting}; my @whitelist = ref $confwl eq 'ARRAY' ? @$confwl : ( $confwl ); # Add '/' if not exist at the end of whitelist directories my @wl = map { $_ . '/' } # Add '/' ( map{ /(\S*[^\/])/ } # Delete '/' if exist @whitelist ); # Add '/' if not exist at the end of dierctory $dir =~ s|^(\S*[^/])$|$1\/|; # if $dir is not include in whitelisting if ( ! map ( $dir =~ m|^$_| , @wl) ){ return "Directory '$dir' must be include in whitelisting ! see Formatter::Dir:whitelisting in mojomojo.conf" } return "'$dir' is not a directory !\n" if ( ! -d $dir ); return 0; } =back =head1 SEE ALSO L =head1 AUTHORS Daniel Brosseau =head1 LICENSE This module is licensed under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/YouTube.pm0000644000175000017500000000527511376307503024276 0ustar gregoagregoapackage MojoMojo::Formatter::YouTube; use strict; use parent 'MojoMojo::Formatter'; eval {require URI::Fetch}; my $dependencies_installed = !$@; =head2 module_loaded Return true if the module is loaded. =cut sub module_loaded { $dependencies_installed } our $VERSION = '0.01'; =head1 NAME MojoMojo::Formatter::YouTube - Embed YouTube player =head1 DESCRIPTION Embed YouTube video player for given video by writing {{youtube }}. =head1 METHODS =head2 format_content_order Format order can be 1-99. The YouTube formatter runs on 10. =cut sub format_content_order { 10 } =head2 format_content Calls the formatter. Takes a ref to the content as well as the context object. =cut sub format_content { my ( $class, $content, $c ) = @_; my @lines = split /\n/, $$content; $$content = ""; my $re = $class->gen_re(qr/youtube\s+(.*?)/); my $lang = $c->sessionid ? $c->session->{lang} : $c->pref('default_lang') || 'en'; foreach my $line (@lines) { if ( $line =~ m/$re/ ) { $line = $class->process($c, $line, $re, $lang); } $$content .= $line . "\n"; } } =head2 process Do the meat of inserting a youtube movie into a wiki page. =cut sub process { my ( $class, $c, $line, $re, $lang) = @_; my $youtube = $c->loc('YouTube Video'); my $video_id; $line =~ m/$re/; my $url = URI->new($1); unless ($url){ $line =~ s/$re/"$youtube: $url ".$c->loc('is not a valid url')/e; return $line; } if ($url =~ m!youtube.com/.*?v=([A-Za-z0-9_-]+)!){ $video_id=$1; } else { $line =~ s/$re/"$youtube: $url ".$c->loc('is not a valid link to youtube video')/e; return $line; } if ( ($c->action->reverse eq 'pageadmin/edit') || ($c->action->reverse eq 'jsrpc/render') ){ $line =~ s!$re!
    $youtube
    $url
    !; $c->stash->{precompile_off} = 1; } else { $line =~ s!$re!!; } return $line; } =head1 SEE ALSO L, L, L =head1 AUTHORS Robert 'LiNiO' Litwiniec =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/Pod.pm0000644000175000017500000000603211357175324023417 0ustar gregoagregoapackage MojoMojo::Formatter::Pod; use parent qw/MojoMojo::Formatter/; # Pod::Simple::HTML gives warnings for version_tag_comment() # because $self->VERSION is empty in the sprintf. We don't # really care about this sub do we? It's been monkey zapped. BEGIN { use Pod::Simple::HTML; no warnings 'redefine'; *{"Pod::Simple::HTML::version_tag_comment"} = sub { my $self = shift; return; } } =head1 NAME MojoMojo::Formatter::Pod - format part of content as POD =head1 DESCRIPTION This formatter will format content between {{pod}} and {{end}} as POD (Plain Old Documentation). =head1 METHODS =head2 format_content_order Format order can be 1-99. The POD formatter runs on 10. =cut sub format_content_order { 10 } =head2 format_content calls the formatter. Takes a ref to the content as well as the context object. =cut sub format_content { my ( $class, $content, $c ) = @_; my @lines = split /\n/, $$content; my $pod; $$content = ""; my $start_re=$class->gen_re(qr/pod/); my $end_re=$class->gen_re(qr/end/); foreach my $line (@lines) { if ($pod) { if ( $line =~ m/^(.*)$end_re(.*)$/ ) { $$content .= MojoMojo::Formatter::Pod->to_pod( $pod.$1, $c->req->base ).$2; $pod = ""; } else { $pod .= $line . "\n"; } } else { if ( $line =~ m/^(.*)$start_re(.*)$/ ) { $$content .= $1; $pod = " ".$2; # make it true :) } else { $$content .= $line . "\n"; } } } } =head2 to_pod Takes some POD documentation, a base URL, and renders it as HTML. =cut sub to_pod { my ( $class, $pod, $base ) = @_; my $result; my $parser = MojoMojo::Formatter::Pod::Simple::HTML->new($base); $parser->output_string( \$result ); eval { $parser->parse_string_document($pod); }; return "
    \n$source\n$@\n
    \n" if $@ or not $result; $result =~ s/.*(.*)<\/body>.*/$1/s; return qq{
    \n$result
    }; } package MojoMojo::Formatter::Pod::Simple::HTML; # base class for doing links use parent 'Pod::Simple::HTML'; =head2 Pod::Simple::HTML::new Extended for setting C. =cut sub new { my ( $class, $base ) = @_; my $self = $class->SUPER::new; $self->{_base} = $base; return $self; } =head2 Pod::Simple::HTML::do_link Set links based on base =cut sub do_link { my ( $self, $token ) = @_; my $link = $token->attr('to'); #FIXME: This doesn't look right: return $self->SUPER::do_link($token) unless $link =~ /^$token+$/; my $section = $token->attr('section'); $section = "#$section" if defined $section and length $section; $self->{base} . "$link$section"; } =head1 SEE ALSO L, L, L =head1 AUTHORS Marcus Ramberg =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/GoogleSearch.pm0000644000175000017500000000532212144004346025226 0ustar gregoagregoapackage MojoMojo::Formatter::GoogleSearch; use strict; use warnings; use parent qw/MojoMojo::Formatter/; =head1 NAME MojoMojo::Formatter::GoogleSearch - Linked Google Search Engine by writing {{google: }} =cut my $CONF = { web => { base => 'http://www.google.com/search', }, image => { base => 'http://www.google.com/images', }, movie => { base => 'http://www.google.com/search', param => { tbs => 'vid:1', }, }, }; =head1 DESCRIPTION Normally, to hyperlink to a Search Engine, you'd write: [google SearchWord](http://www.google.com/search?q=SearchWord) This plugin lets you write just {{google SearchWord}} not just Search Web, you can search images and movies {{google:image SearchWord}} {{google:movie SearchWord}} =head1 METHODS =head2 format_content_order The SearchEngine formatter has no special requirements in terms of the order it gets run in, so it has a priority of 16. =cut sub format_content_order { 16 } =head2 format_content Calls the formatter. Takes a ref to the content as well as the context object. =cut sub format_content { my ( $class, $content, $c ) = @_; return unless $class->module_loaded; my @lines = split /\n/, $$content; $$content = ''; my $re = $class->gen_re( qr/google:?([^\s]+)?\s+(.+)/ ); my $lang = $c->sessionid ? $c->session->{lang} : $c->pref('default_lang') || 'en'; for my $line (@lines) { if ( $line =~ m/$re/ ) { $line = $class->process($c, $line, $re, $lang); } $$content .= $line . "\n"; } } =head2 process Here the actual formatting is done. =cut sub process { my $class = shift; my ($c, $line, $re, $lang) = @_; my $google_search = $c->loc('Google Search Link'); $line =~ m/$re/; my $kind = $1 || 'web'; my $keyword = $2; unless ($CONF->{$kind}->{base}) { $line =~ s/$re/"$google_search: ". $c->loc('invalid Kind of Search')/e; return $line; } my %param; $param{q} = $keyword; if ($CONF->{$kind}->{param}) { for my $key (keys %{ $CONF->{$kind}->{param} }) { $param{$key} = $CONF->{$kind}->{param}->{$key}; } } my $uri = URI->new($CONF->{$kind}->{base}); $uri->query_form( map {$_ => $param{$_} } sort keys %param ); $line =~ s!$re!$keyword!; $c->stash->{precompile_off} = 1; return $line; } =head1 SEE ALSO L and L. =head1 AUTHORS Dai Okabayashi, L =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/Main.pm0000644000175000017500000000275611357175324023572 0ustar gregoagregoapackage MojoMojo::Formatter::Main; use parent 'MojoMojo::Formatter'; =head1 NAME MojoMojo::Formatter::Main - MojoMojo's main formatter, dispatching between Textile and MultiMarkdown =head1 DESCRIPTION This is the main MojoMojo formatter, which transforms lightweight plain text markup into XHTML. It reads the site preference main_formatter and calls the corresponding formatter, either L, or L. =head1 METHODS =head2 format_content_order Format order can be 1-99. The main formatter runs on 15. =cut sub format_content_order { 15 } =head2 format_content Calls the formatter. Takes a ref to the content as well as the context object. The latter is needed in order to determine the main formatter via a call to C<< $c->pref('main_formatter') >>. =cut sub format_content { my ( $class, $content, $c ) = @_; # dispatch to the preferred formatter if ($c->pref('main_formatter') eq 'MojoMojo::Formatter::Textile') { require MojoMojo::Formatter::Textile; $$content = MojoMojo::Formatter::Textile->main_format_content($content); } else { require MojoMojo::Formatter::Markdown; $$content = MojoMojo::Formatter::Markdown->main_format_content($content); } } =head1 SEE ALSO L, L, L =head1 AUTHORS Marcus Ramberg =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/Redirect.pm0000644000175000017500000000301211357175324024431 0ustar gregoagregoapackage MojoMojo::Formatter::Redirect; use parent qw/MojoMojo::Formatter/; =head1 NAME MojoMojo::Formatter::Redirect - Handles {{redirect /path}} =head1 DESCRIPTION Redirect to another page. Useful if your URL changes and you want to make sure bookmarked URLs will still work: C could contain: C<{{redirect /help/tutorial}}> To edit a page that redirects, surf to $page_URL . '.edit' See also http://mojomojo.ideascale.com/akira/dtd/6415-2416 =head1 METHODS =head2 format_content_order Format order can be 1-99. The Redirect formatter runs first. =cut sub format_content_order { 1 } =head2 format_content Calls the formatter. Takes a ref to the content as well as the context object. =cut sub format_content { my ( $class, $content, $c ) = @_; if ( my ($page) = $$content =~ m/ \{\{ \s*redirect\s+ (\S+) \s*}}/x ) { if ($c->action->name eq 'view' && !$c->ajax) { $c->flash->{'redirect'}=$c->stash->{'path'};; $c->res->redirect( $c->uri_for($page) ); } elsif ($c->action->name eq 'render') { $$content=$c->loc("redirect to")." ".$page; } # We don't want to precompile a redirected page so turn it off $c->stash->{precompile_off} = 1; } } =head1 SEE ALSO L, L, L =head1 AUTHORS Marcus Ramberg =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/Text.pm0000644000175000017500000000434611357175324023627 0ustar gregoagregoapackage MojoMojo::Formatter::Text; use base qw/MojoMojo::Formatter/; use URI::Find; =head1 NAME MojoMojo::Formatter::Text - format plain text as xhtml =head1 DESCRIPTION This formatter will format content between {{txt}} and {{end}} as XHTML) It is based on Angerwhale/Format/PlainText.pm =head1 METHODS =over 4 =item format_content_order Format order can be 1-99. The Text formatter runs on 10 =cut sub format_content_order { 10 } =item format_content calls the formatter. Takes a ref to the content as well as the context object. =cut sub format_content { my ( $class, $content, $c ) = @_; my @lines = split /\n/, $$content; my $txt; $$content = ""; my $start_re=$class->gen_re(qr/txt/); my $end_re=$class->gen_re(qr/end/); foreach my $line (@lines) { if ($txt) { if ( $line =~ m/^(.*)$end_re(.*)$/ ) { $$content .= MojoMojo::Formatter::Text->to_xhtml( $xhtml ); $txt = ""; } else { $txt .= $line . "\n"; } } else { if ( $line =~ m/^(.*)$start_re(.*)$/ ) { $$content .= $1; $txt = " ".$2; # make it true :) } else { $$content .= $line . "\n"; } } } } =item to_xhtml takes some text and renders it as XHTML. =cut sub to_xhtml { my ( $class, $text ) = @_; my $result; $text =~ s/&/&/g; $text =~ s/>/>/g; $text =~ s/new( sub { my($uri, $orig_uri) = @_; return qq|$orig_uri|; }); $finder->find(\$text); # fix paragraphs my @paragraphs = split /\n+/m, $text; @paragraphs = grep { $_ !~ /^\s*$/ } @paragraphs; $result = join( ' ', map { "

    $_

    " } @paragraphs ); return qq{
    \n$result
    }; } =back =head1 SEE ALSO L,L =head1 AUTHORS Daniel Brosseau =head1 LICENSE This module is licensed under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/WikipediaLink.pm0000644000175000017500000000426212144003572025412 0ustar gregoagregoapackage MojoMojo::Formatter::WikipediaLink; use strict; use warnings; use parent qw/MojoMojo::Formatter/; use utf8; =encoding utf8 =head1 NAME MojoMojo::Formatter::WikipediaLink - Linked Wikipedia by writing {{wikipedia: }} =head1 DESCRIPTION Normally, to hyperlink to the Wikipedia, you'd write: [wikipedia Hello](http://en.wikipedia.org/wiki/Hello) This plugin lets you write just {{wikipedia Hello}} not just Link to Wikipedia in English page, you can use many languages {{wikipedia:ja こんにちは}} {{wikipedia:fr Salut}} Actually, if you wrote this without a language ex.{{wikipedia Foo}}, select location of Wikipedia Link is getting default-language setting of MojoMojo. =head1 METHODS =head2 format_content_order The WikipediaLink formatter has no special requirements in terms of the order it gets run in, so it has a priority of 17. =cut sub format_content_order { 17 } =head2 format_content Calls the formatter. Takes a ref to the content as well as the context object. =cut sub format_content { my ( $class, $content, $c ) = @_; my @lines = split /\n/, $$content; $$content = ''; my $re = $class->gen_re( qr/[wW]ikipedia(?::([^\s]+))?\s+(.+)/ ); my $lang = $c->sessionid ? $c->session->{lang} : $c->pref('default_lang') || 'en'; for my $line (@lines) { if ( $line =~ m/$re/ ) { $line = $class->process($c, $line, $re, $lang); } $$content .= $line . "\n"; } } =head2 process Here the actual formatting is done. =cut sub process { my $class = shift; my ($c, $line, $re, $lang) = @_; $line =~ m/$re/; my $wikipedia_lang = $1 || $c->pref('default_lang') || 'en'; my $keyword = $2; my $uri = URI->new("http://$wikipedia_lang.wikipedia.org/"); $uri->path("/wiki/$keyword"); $line =~ s!$re!$keyword!; $c->stash->{precompile_off} = 1; return $line; } =head1 SEE ALSO L and L. =head1 AUTHORS Dai Okabayashi, L =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/Comment.pm0000644000175000017500000000253011357175324024276 0ustar gregoagregoapackage MojoMojo::Formatter::Comment; use parent qw/MojoMojo::Formatter/; =head1 NAME MojoMojo::Formatter::Comment - Include comments on your page. =head1 DESCRIPTION This is a hook for the page comment functionality. It allows a comment box to be placed anywhere on your page through the {{comments}} tag. =head1 METHODS =head2 format_content_order Format order can be 1-99. The Comment formatter runs on 91. =cut sub format_content_order { 91 } =head2 format_content Calls the formatter. Takes a ref to the content as well as the context object. =cut sub format_content { my ( $class, $content, $c, $self ) = @_; my $re=$class->gen_re('comments'); if ( $$content =~ s|$re|show_comments($c,$c->stash->{page})|xme ) { # We don't want to precompile a page with comments so turn it off $c->stash->{precompile_off} = 1; } } =head2 show_comments Forwards to L. =cut sub show_comments { my ( $c, $page ) = @_; $c->forward('/comment/comment'); return '
    ' . $c->view('TT')->render( $c, 'comment.tt' ) . '
    '; } =head1 SEE ALSO L, L =head1 AUTHORS Marcus Ramberg =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/DocBook.pm0000644000175000017500000000775311376307503024225 0ustar gregoagregoapackage MojoMojo::Formatter::DocBook; use strict; use warnings; use parent qw/MojoMojo::Formatter/; eval "use XML::LibXSLT;use XML::SAX::ParserFactory (); use XML::LibXML::Reader;"; my $eval_res = $@; use MojoMojo::Formatter::DocBook::Colorize; my $xsltfile = "/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/xhtml/docbook.xsl"; =head2 module_loaded Return true if the module is loaded. =cut sub module_loaded { return 0 unless -f $xsltfile; return $eval_res ? 0 : 1; } my $debug = 0; =head1 NAME MojoMojo::Formatter::DocBook - format part of content as DocBook =head1 DESCRIPTION This formatter will format content between two =docbook blocks as DocBook document. =head1 METHODS =head2 format_content_order Format order can be 1-99. The DocBook formatter runs on 10. =cut sub format_content_order { 10 } =head2 format_content Calls the formatter. Takes a ref to the content as well as the context object. =cut sub format_content { my ($class, $content, $c) = @_; my @lines = split /\n/, $$content; my $dbk; $$content = ""; my $start_re = $class->gen_re(qr/docbook/); my $end_re = $class->gen_re(qr/end/); foreach my $line (@lines) { if ($dbk) { if ($line =~ m/^(.*)$end_re(.*)$/) { $$content .= $class->to_xhtml($dbk); $dbk = ""; } else { $dbk .= $line . "\n"; } } else { if ($line =~ m/^(.*)$start_re(.*)$/) { $$content .= $1; $dbk = " " . $2; # make it true :) } else { $$content .= $line . "\n"; } } } } =head2 to_xhtml Takes DocBook documentation and renders it as XHTML. =cut sub to_xhtml { my ($class, $dbk) = @_; my $result; # Beurk $dbk =~ s/&/_-_amp_-_;/g; $dbk =~ s/^\s+//; $dbk =~ s/^\n+//; # 1 - Mark lang # to [lang=...] code [/lang] my $my_Handler = MojoMojo::Formatter::DocBook::Colorize->new($debug); $my_Handler->step('marklang'); my $parsersax = XML::SAX::ParserFactory->parser(Handler => $my_Handler,); my @markeddbk = eval { $parsersax->parse_string($dbk) }; if ($@) { return "\nDocument malformed : $@\n"; } # 2 - Transform with xslt my $parser = XML::LibXML->new(); my $xslt = XML::LibXSLT->new(); my $source = eval { $parser->parse_string("@markeddbk") }; if ($@) { return "\nDocument malformed : line $@\n"; } my $style_doc = $parser->parse_file($xsltfile); my $stylesheet = eval { $xslt->parse_stylesheet($style_doc); }; # warn "@_" if @_; #return "XHTML XHTML XHTML"; # C'est ici que l'on peut ajouter le css, LANG ... # voir http://docbook.sourceforge.net/release/xsl/current/doc/html/index.html # et http://www.sagehill.net/docbookxsl my $results = $stylesheet->transform( $source, XML::LibXSLT::xpath_to_string( 'section.autolabel' => '1', 'chapter.autolabel' => '1', 'suppress.navigation' => '1', 'generate.toc' => '0' ) ); my $format = 0; my $string = eval { $results->toString($format); }; # 3 - Colorize Code [lang=...] ... code ... [/lang] $my_Handler->step('colorize'); my @colorized = $parsersax->parse_string($string); $string = "@colorized"; $string =~ s/_-_amp_-_;/&/g; # 4 - filter # To adapt to mojomojo # delete , ,,,,, $string =~ s/^.*//s; $string =~ s/<\/body>.*<\/html>//s; $string =~ s/<\/a>//g; $string =~ s/clear:\sboth//g; return $string; } =head1 SEE ALSO L, L =head1 AUTHORS Daniel Brosseau =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/File.pm0000644000175000017500000001204011357175324023550 0ustar gregoagregoapackage MojoMojo::Formatter::File; use strict; use warnings; use base qw/MojoMojo::Formatter/; use File::Slurp; use Encode; use MojoMojo::Formatter::Dir; use File::Basename; use Module::Pluggable ( search_path => ['MojoMojo::Formatter::File'], require => 1, ); my $debug=0; =head1 NAME MojoMojo::Formatter::File - format file as XHTML =head1 DESCRIPTION This formatter will format the file argument as XHTML. Usage: {{file TYPE filename}} {{file Text uploads/Files/test.txt}} TYPE is a plugin present in Formatter/File/ directory. Currently there are only three: Pod, DocBook and Text The plugin TYPE format only the file which the extension match with 'can_format' method. Respectively pod, xml and txt for existing plugins. For security reasons the path of file must be include in 'whitelisting' directory. You can use path_to(DIR) to describe directory in mojomojo.conf: Just an example to view the test pod file t/var/files/test.pod : Add this to mojomojo.conf : prefix_url /myfiles whitelisting __path_to(t/var/files)__ To see the pod content formatted in xhtml, write in the text area: {{file Pod path_to(t/var/files)test.pod}} To show recursively all files of directory see script/util/dir2mojomojo.pl script. To test it: # start mojomojo ./script/mojomojo_server.pl # run dir2mojomojo script ./script/util/dir2mojomojo.pl --dir=~/dev/mojomojo/t/var/files/ --url=/myfiles Connect to http://server:3000/myfiles/ =head1 METHODS =over 4 =item format_content_order Format order can be 1-99. The File formatter runs on 92. =cut sub format_content_order { 92 } =item format_content Calls the formatter. Takes a ref to the content as well as the context object. =cut sub format_content { my ( $self, $content, $c ) = @_; # TODO : Add cache if file is not modified my @lines = split /\n/, $$content; $$content = ""; my $is_image = 0; foreach my $line (@lines) { if ( $line =~ m|{{\s*file\s*(\w+)\s*(.*)}}.*| ) { my $plugin=$1; # DocBook, Pod, ... my $file=$2; # File, Attachment $is_image = 1 if ( $plugin eq 'Image' ); # use path_to(dir)/filename ? my $path_to = $c->path_to(); $file =~ s/path_to\([\s|\/]*(\S*)[\s|\/]*\)\s*(\S*)\s*/${path_to}\/$1\/$2/; my $error; if ( $error = checkplugin($plugin, $file)){ $$content .= $error; } if ( ! $error && ( $error = $self->checkfile($file, $c))){ $$content .= $error; } if ( ! $error ){ # format with plugin $$content .= $self->format($plugin,$file); } } else{ # Image have not more content if ( ! $is_image ){ $$content .= $line . "\n"; } } } return $content; } =item plugin Return the plugin to use with file attachment =cut sub plugin { my $self = shift; my $filename = shift; my ($name,$extension) = $filename =~ /(.*)\.(.*)/; foreach my $plugin ( plugins() ) { if ( $plugin->can('can_format') && $plugin->can_format($extension)){ my $pluginname = $plugin; $pluginname =~ s/.*:://; return $pluginname; } } } =item format Return the content formatted =cut sub format { my $self = shift; my $pluginname = shift; my $file = shift; my $error; if ( $error = checkplugin($pluginname)){ return $error; } my $text = read_file( $file ); utf8::decode($text); $text = encode('utf-8', $text); $text = Encode::decode('utf-8', $text); my $plugin = __PACKAGE__ . "::$pluginname"; return $plugin->to_xhtml($text,$file) . "\n"; } =item checkplugin Return 0 if plugin exist =cut sub checkplugin{ my $pluginname = shift; my $file = shift; my $plugin = __PACKAGE__ . "::$pluginname"; return 0 if $plugin->can('can_format'); return "Can't find plugin for $file !"; } =item checkfile Directory must be include in whitelisting =cut sub checkfile{ my ($self, $file, $c) = @_; return "Append a file after 'file'" if ( ! $file ); return "You can't use '..' in the name of file" if ( $file =~ /\.\./ ); my $dir = dirname($file); my $confwl = $c->config->{'Formatter::Dir'}{whitelisting}; my @whitelist = ref $confwl eq 'ARRAY' ? @$confwl : ( $confwl ); # Add '/' if not exist at the end of whitelist directories my @wl = map { $_ . '/' } # Add '/' ( map{ /(\S*[^\/])/ } # Delete '/' if exist @whitelist ); # Add '/' if not exist at the end of dierctory $dir =~ s|^(\S*[^/])$|$1\/|; # if $dir is not include in whitelisting if ( ! map ( $dir =~ m|^$_| , @wl) ){ return "Directory '$dir' must be include in whitelisting ! see Formatter::Dir:whitelisting in mojomojo.conf" } return "'$dir' is not a directory !\n" if ( ! -d $dir ); return "Can not read '$file' !\n" if ( ! -r $file ); return 0; } =back =head1 SEE ALSO L,L =head1 AUTHORS Daniel Brosseau =head1 LICENSE This module is licensed under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/Gist.pm0000644000175000017500000000405511525450470023601 0ustar gregoagregoapackage MojoMojo::Formatter::Gist; use strict; use warnings; use parent qw/MojoMojo::Formatter/; =head1 NAME MojoMojo::Formatter::Gist - Embed Gist script =head1 DESCRIPTION Embed Gist script by writing {{gist }}. if you write: {{gist 618402}} it will be formatted, like this then you can see the syntax highlighted source code. =head1 METHODS =head2 format_content_order The Gist formatter has no special requirements in terms of the order it gets run in, so it has a priority of 17. =cut sub format_content_order { 17 } =head2 format_content Calls the formatter. Takes a ref to the content as well as the context object. =cut sub format_content { my ( $class, $content, $c ) = @_; return unless $$content; my @lines = split /\n/, $$content; $$content = ''; my $re = $class->gen_re( qr/gist\s+(\d+)/ ); for my $line (@lines) { if ( $line =~ m/$re/ ) { $line = $class->process($c, $line, $re, $1); } $$content .= $line . "\n"; } } =head2 process Here the actual formatting is done. =cut sub process { my ( $class, $c, $line, $re, $id) = @_; my $gist = $c->loc('Gist Script'); if (!$id || $id !~ /^\d+$/){ $line =~ s/$re/"$gist: $id ". $c->loc('is not a valid id')/e; return $line; } my $url = "https://gist.github.com/$id"; my $ar = $c->action->reverse; if ( $ar && ($ar eq 'pageadmin/edit' || $ar eq 'jsrpc/render') ){ $line =~ s!$re!!; $c->stash->{precompile_off} = 1; } else { $line =~ s!$re!!; } return $line; } =head1 SEE ALSO L and L. Gist is . =head1 AUTHORS Dai Okabayashi, L =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/CPANHyperlink.pm0000644000175000017500000000440011357175324025301 0ustar gregoagregoapackage MojoMojo::Formatter::CPANHyperlink; use parent qw/MojoMojo::Formatter/; =head1 NAME MojoMojo::Formatter::CPANHyperlink - automatically hyperlink CPAN modules when using the syntax {{cpan Some::Module}} =head1 DESCRIPTION Normally, to hyperlink to a CPAN module, you'd write: [MojoMojo::Formatter::CPANHyperlink](http://search.cpan.org/perldoc?MojoMojo::Formatter::CPANHyperlink) This plugin lets you write just {{cpan MojoMojo::Formatter::CPANHyperlink}} Just like POD, it supports adding a section after the module name: {{cpan Catalyst::Manual::Cookbook/Deployment}} will create a link to http://search.cpan.org/perldoc?Catalyst::Manual::Cookbook#Deployment Sections can contain any characters, except two consecutive closed braces: {{cpan Catalyst::Test/($res, $c) = ctx request( ... ); }} will link to http://search.cpan.org/perldoc?Catalyst::Test#($res,_$c)_=_ctx_request(_..._); In anticipation of future plugin syntax, you can optionally add a trailing slash {{cpan Some::Module/Section /}} =head1 METHODS =head2 format_content_order The CPANHyperlink formatter has no special requirements in terms of the order it gets run in, so it has a priority of 10. =cut sub format_content_order { 10 } =head2 format_content Calls the formatter. Takes a ref to the content as well as the context object. =cut sub format_content { my ( $class, $content ) = @_; my $component = qr/(?:[_[:alpha:]]\w*)/; my $cpan_module = qr[ $component (?: ::$component )* ]x; my $section = qr[ .*? (?= \s* /? }} ) ]x; $$content =~ s[ {{cpan \s+ ($cpan_module) (?: / ($section))? \s* \/? }} ] [ my ($module, $section) = ($1, $2); if (defined $section) { (my $anchor=$section) =~ s/\s/_/g; qq($section in $module) } else { qq($module) } ]eixg; } =head1 SEE ALSO L and L. =head1 AUTHORS Dan Dascalescu, L =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/File/0000755000175000017500000000000012546272315023214 5ustar gregoagregoalibmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/File/Image.pm0000644000175000017500000000145711357175324024604 0ustar gregoagregoapackage MojoMojo::Formatter::File::Image; use base qw/MojoMojo::Formatter/; =head1 NAME MojoMojo::Formatter::File::Image - Image formatter =head1 DESCRIPTION Image is not formatted in xhtml. The controller Image is used instead. =head1 METHODS =over 4 =item can_format Can format Pod File =cut sub can_format { my $self = shift; my $type = shift; return 1 if ( $type =~ /png|jpg|gif|tiff/ ); return 0; } =item to_xhtml takes Text and renders it as XHTML. =cut sub to_xhtml { my ( $self, $text ) = @_; my $result; return "Image can not be formatted in XHTML"; } =back =head1 SEE ALSO L,L =head1 AUTHORS Daniel Brosseau =head1 LICENSE This module is licensed under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/File/Pod.pm0000644000175000017500000000140511357175324024275 0ustar gregoagregoapackage MojoMojo::Formatter::File::Pod; use parent qw/MojoMojo::Formatter/; use MojoMojo::Formatter::Pod; =head1 NAME MojoMojo::Formatter::File::Pod - format Pod File in xhtml =head1 DESCRIPTION =head1 METHODS =over 4 =item can_format Can format Pod File =cut sub can_format { my $self = shift; my $type = shift; return 1 if ( $type eq "pod" ); return 0; } =item to_xhtml takes Pod text and renders it as XHTML. =cut sub to_xhtml { my ( $self, $text ) = @_; my $result; return MojoMojo::Formatter::Pod->to_pod( $text ); } =back =head1 SEE ALSO L,L =head1 AUTHORS Daniel Brosseau =head1 LICENSE This module is licensed under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/File/Text.pm0000644000175000017500000000140411357175324024476 0ustar gregoagregoapackage MojoMojo::Formatter::File::Text; use base qw/MojoMojo::Formatter/; use MojoMojo::Formatter::Text; =head1 NAME MojoMojo::Formatter::File::Pod - format Pod File in xhtml =head1 DESCRIPTION =head1 METHODS =over 4 =item can_format Can format Pod File =cut sub can_format { my $self = shift; my $type = shift; return 1 if ( $type eq "txt" ); return 0; } =item to_xhtml takes Text and renders it as XHTML. =cut sub to_xhtml { my ( $self, $text ) = @_; my $result; return MojoMojo::Formatter::Text->to_xhtml( $text ); } =back =head1 SEE ALSO L,L =head1 AUTHORS Daniel Brosseau =head1 LICENSE This module is licensed under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/File/DocBook.pm0000644000175000017500000000143411357175324025075 0ustar gregoagregoapackage MojoMojo::Formatter::File::DocBook; use parent qw/MojoMojo::Formatter/; use MojoMojo::Formatter::DocBook; =head1 NAME MojoMojo::Formatter::File::DocBook - format Docbook in xhtml =head1 DESCRIPTION =head1 METHODS =head2 can_format Can format DocBook (xml) =cut sub can_format { my $self = shift; my $type = shift; return 1 if ( $type eq "xml" ); return 0; } =head2 to_xhtml Takes DocBook documentation and renders it as XHTML. =cut sub to_xhtml { my ( $class, $dbk ) = @_; my $result; return MojoMojo::Formatter::DocBook->to_xhtml($dbk); } =head1 SEE ALSO L, L =head1 AUTHORS Daniel Brosseau =head1 LICENSE This module is licensed under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/SyntaxHighlight.pm0000644000175000017500000001111212144012163025770 0ustar gregoagregoapackage MojoMojo::Formatter::SyntaxHighlight; use strict; use warnings; use parent qw/MojoMojo::Formatter/; use HTML::Entities; eval {require Syntax::Highlight::Engine::Kate}; my $kate_installed = !$@; =head2 module_loaded Return true if the module is loaded. =cut sub module_loaded { $kate_installed } my $main_formatter; eval { $main_formatter = MojoMojo->pref('main_formatter'); }; $main_formatter ||= 'MojoMojo::Formatter::Markdown'; =head1 NAME MojoMojo::Formatter::SyntaxHighlight - syntax highlighting for code blocks =head1 DESCRIPTION This formatter performs syntax highlighting on code blocks. =head1 METHODS =head2 format_content_order The syntax highlight formatter is based on C<<
     >> tags entered by the
    user, so it must run before other formatters that produce C<< 
     >> tags.
    The earliest such formatter is the main formatter.
    
    =cut
    
    sub format_content_order { 14 }
    
    =head2 format_content
    
    This formatter uses L to syntax highlight code
    inside of C<< 
     ... 
    >> tags:
       say "Hello world!";
     
    See L for a list of supported languages. =cut # The $kate formatter is scoped outside of format_content. Otherwise, memory # leaks have occurred. This is also faster, as it avoids instantiation for every # request. my $kate; sub format_content { my ( $class, $content ) = @_; return unless $class->module_loaded; my @blocks = (); my $ph = 0; my $ph_base = __PACKAGE__ . '::PlaceHolder::'; # new school - consistent with other new syntax, but broke for me to the point of exhaustion # $$content =~ s/\{\{\s*code\s+lang=""\s*\}\}/
    /g;
    # while ( $$content =~ s/\{\{\s*code(?:\s+lang=['"]*(.*?)['"]*")?\s*\}\}(.*?)\{\{\s*end\s*\}\}/$ph_base$ph/si ) {
    # drop all lang="" -- mateu
        $$content =~ s/<\s*pre\s+lang=""\s*>/
    /g;
        while ( $$content =~ s/<\s*pre(?:\s+lang=['"]*(.*?)['"]*")?\s*>(.*?)<\s*\/pre\s*>/$ph_base$ph/si ) {
            my ( $language, $block ) = ( $1, $2 );
    
            # Fix newline issue
            $block =~ s/\r//g;
    
            if ($language) {
                eval {
                    $kate->language($language);
                } and do {
                    $block = $kate->highlightText($block);
                }
            }
            push @blocks, $block;
            $ph++;
        }
    
        for ( my $i = 0 ; $i < $ph ; $i++ ) {
            $$content =~ s/$ph_base$i/
    $blocks[$i]<\/pre>/;
        }
    
        return $content;
    }
    
    if (module_loaded) {
        $kate = Syntax::Highlight::Engine::Kate->new(
            language      => 'Perl',
            substitutions => {
                "<" => "<",
                ">" => ">",
                "&" => "&",
                "^" => "ˆ",
                " "  => " ",
                "\t" => "    ",
                "\n" => "\n",
            },
            format_table => {
                Alert    => [ q{},      "" ],
                BaseN    => [ q{},      "" ],
                BString  => [ q{},    "" ],
                Char     => [ q{},       "" ],
                Comment  => [ q{}, "" ],
                DataType => [ q{},   "" ],
                DecVal   => [ q{},     "" ],
                Error    => [ q{}, "" ],
                Float    => [ q{},       "" ],
                Function => [ q{}, "" ],
                IString  => [ q{},  "" ],
                Keyword  => [ q{},                         "" ],
                Normal   => [ q{},                            "" ],
                Operator => [ q{}, "" ],
                Others   => [ q{},   "" ],
                RegionMarker => [ q{}, "" ],
                Reserved => [ q{}, "" ],
                String   => [ q{},      "" ],
                Variable => [ q{}, "" ],
                Warning  => [ q{}, "" ],
            },
        );
    }    
    
    =head1 SEE ALSO
    
    L, L and L.
    
    =head1 AUTHORS
    
    Johannes Plunien Eplu@cpan.orgE
    
    =head1 LICENSE
    
    This library is free software. You can redistribute it and/or modify
    it under the same terms as Perl itself.
    
    =cut
    
    1;
    libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/Include.pm0000644000175000017500000000507612010165130024244 0ustar  gregoagregoapackage MojoMojo::Formatter::Include;
    
    use strict;
    use parent 'MojoMojo::Formatter';
    
    eval {
        require URI::Fetch;
        require LWP::Simple;  # LWP::Simple is indeed required, and URI::Fetch doesn't depend on it
    };
    my $dependencies_installed = !$@;
    
    =head2 module_loaded
    
    Return true if the module is loaded.
    
    =cut
    
    sub module_loaded { $dependencies_installed }
    
    our $VERSION = '0.01';
    
    =head1 NAME
    
    MojoMojo::Formatter::Include - Include files in your content.
    
    =head1 DESCRIPTION
    
    Include files verbatim in your content, by writing {{include }}. Can
    be used for transclusion from the same wiki, in which case the
    L version of the page is pulled.
    
    =head1 METHODS
    
    =head2 format_content_order
    
    Format order can be 1-99. The Include formatter runs on 5, before all
    formatters (except L), so that
    included content (most often from the same wiki) can be parsed for markup.
    To avoid markup interpretation, surround the {{include }} with a
    C<< 
    >>:
    Some uninterpreted Markdown: {{include http://mysite.com/rawmarkdown.txt}}
    =cut sub format_content_order { 5 } =head2 format_content Calls the formatter. Takes a ref to the content as well as the context object. =cut sub format_content { my ( $class, $content, $c ) = @_; return unless $class->module_loaded; # Regexp::Common::URI is overkill my $re = $class->gen_re(qr( include \s+ (\S+) )x); if ( $$content =~ s/$re/$class->include( $c, $1 )/eg ) { # we don't want to precompile a page with comments so turn it off $c->stash->{precompile_off} = 1; } } =head2 include Returns the content at the URL. Will store a cached version in C<< $c->cache >>. =cut sub include { my ( $class, $c, $url ) = @_; $url = URI->new($url); return $c->loc('x is not a valid URL', $url) unless $url; # check if we're including a page from the same wiki my $rel = $url->rel( $c->req->base ); if (not $rel->scheme) { # if so, then return the inline version of the page is requests return $c->subreq( ($rel.'' eq './' ? '/' : '/'.$rel).'.inline' ); } my $res = URI::Fetch->fetch( $url, Cache => $c->cache ); return $res->content if defined $res; return $c->loc('Could not retrieve x', $url); } =head1 SEE ALSO L, L, L =head1 AUTHORS Marcus Ramberg =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Formatter/RSS.pm0000644000175000017500000000555512144104027023340 0ustar gregoagregoapackage MojoMojo::Formatter::RSS; use strict; use parent 'MojoMojo::Formatter'; eval {require LWP::Simple; require URI::Fetch; require XML::Feed}; my $dependencies_installed = !$@; =head2 module_loaded Return true if the module is loaded. =cut sub module_loaded { $dependencies_installed } our $VERSION = '0.01'; =head1 NAME MojoMojo::Formatter::RSS - Include RSS feeds on your page. =head1 DESCRIPTION This formatter takes a feed in the format {{feed }}, and passes it through L to get a formatted feed suitable for inclusion in your page. It also caches them in the chosen Catalyst cache. By default it will render the first element in the feed, but it can take a numeric parameter to choose number of elements. =head1 METHODS =head2 format_content_order Format order can be 1-99. The RSS formatter runs on 6, after the L), so that transcluding a page from the wiki that brings in a feed, will display the feed in the transcluded section as well. =cut sub format_content_order { 6 } =head2 format_content Calls the formatter. Takes a ref to the content as well as the context object. =cut sub format_content { my ( $class, $content, $c ) = @_; return unless $class->module_loaded; # Regexp::Common::URI is overkill my $re = $class->gen_re(qr( feed \s+ (\S+) # feed URL (?: \s+ (\d+))? # optional maximum number of entries )x); if ( $$content =~ s/$re/$class->include_rss( $c, $1, $2 )/eg ) { # we don't want to precompile a page with comments so turn it off $c->stash->{precompile_off} = 1; } } =head2 include_rss [] Returns HTML-formatted feed content for inclusion, up to a specified number of entries. Will store a cached version in C<< $c->cache >>. =cut sub include_rss { my ($class, $c, $url, $entries) = @_; $entries ||= 1; $url = URI->new($url); return $c->loc('x is not a valid URL', $url) unless $url; my $result = URI::Fetch->fetch( $url, Cache => $c->cache ); return $c->loc('Could not retrieve x', $url) if not defined $result; my $feed = XML::Feed->parse(\$result->content) or return $c->loc('Could not parse feed x', $url); my $count = 0; my $content = ''; foreach my $entry ($feed->entries) { $count++; $content .= '
    ' . '

    ' . ($entry->title||"no title").'

    ' . ($entry->content->body||$entry->summary->body||"")."
    \n"; return $content if $count==$entries; } return $content; } =head1 SEE ALSO L, L, L, L =head1 AUTHORS Marcus Ramberg =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/WordDiff.pm0000644000175000017500000000266611357175324022447 0ustar gregoagregoapackage MojoMojo::WordDiff; # based on Text::WordDiff, but with many differences. use strict; use HTML::Entities; use base qw(Exporter); use Algorithm::Diff; our @EXPORT = qw(word_diff); sub _split_html_str { my $str = shift; my @array; my @tags = split qr/(?:(?<=>)|(?=<))/msx, $str; foreach(@tags) { if(length($_) == 0) { next; } if($_ =~ /^new(@args); my $out = ""; while ($diff->Next) { if (my @same = $diff->Same) { $out .= (join '', @same); } else { if (my @del = $diff->Items(1)) { $out .= '' . (join '', @del) . ''; } if (my @ins = $diff->Items(2)) { $out .= '' . (join '', @ins) . ''; } } } return $out; } =head1 NAME MojoMojo::WordDiff - generate inline word-based HTML diffs =head1 DESCRIPTION Creates a word by word line diff for lines that are changed. =head1 METHODS =head2 word_diff Takes two conflicting lines, and returns a line with the diff in HTML. =head2 =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Schema.pm0000644000175000017500000001315411376310461022127 0ustar gregoagregoapackage MojoMojo::Schema; use Moose; our $VERSION = '1'; has 'attachment_dir' => ( is => 'rw', isa => 'Str' ); use parent 'DBIx::Class::Schema'; __PACKAGE__->load_namespaces( default_resultset_class => '+MojoMojo::Schema::Base::ResultSet' ); =head1 NAME MojoMojo::Schema - DBIC Schema =head1 METHODS =head2 create_initial_data Creates initial set of data in the database which is necessary to run MojoMojo. =cut sub create_initial_data { my ($schema, $config, $custom_values) = @_; my $file = __PACKAGE__ . ".pm"; $file =~ s{::}{/}g; my $path = $INC{$file}; $path =~ s{Schema\.pm$}{I18N}; require Locale::Maketext::Simple; Locale::Maketext::Simple->import( Decode => 1, Class => 'MojoMojo', Path => $path, ); my $lang = $config->{'default_lang'} || 'en'; $lang =~ s/\..*$//; loc_lang($lang); my $default_user = $ENV{USER} || 'admin'; $custom_values ||= { wiki_name => 'MojoMojo', admin_username => 'admin', admin_password => 'admin', admin_fullname => $default_user, admin_email => "$default_user\@localhost", anonymous_email => 'anonymous.coward@localhost', }; print "Creating initial data\n"; my @people = $schema->populate( 'Person', [ [ qw/ active views photo login name email pass timezone born gender occupation industry interests movies music / ], [ 1, 0, 0, loc('anonymouscoward'), loc('Anonymous Coward'), $custom_values->{anonymous_email}, '', '', undef, '', '', '', '', '', '' ], [ 1, 0, 0, $custom_values->{admin_username}, $custom_values->{admin_fullname}, $custom_values->{admin_email}, $custom_values->{admin_password}, '', undef, '', '', '', '', '', '' ], ] ); my @roles = $schema->populate( 'Role', [ [ qw/ name active / ], [ loc('Admins'), 1 ], [ loc('Users'), 1 ], [ loc('Anonymous'), 1 ] ] ); my @role_members = $schema->populate( 'RoleMember', [ [ qw/role person admin/ ], [ $roles[0]->id, $people[1]->id, 1 ], [ $roles[2]->id, $people[0]->id, 0 ] ] ); my @path_permissions = $schema->populate( 'PathPermissions', [ [ qw/path role apply_to_subpages create_allowed delete_allowed edit_allowed view_allowed attachment_allowed / ], [ '/', $roles[0]->id, qw/ no yes yes yes yes yes / ], [ '/', $roles[0]->id, qw/yes yes yes yes yes yes / ], [ '/', $roles[1]->id, qw/ no yes no yes yes yes / ], [ '/', $roles[1]->id, qw/yes yes no yes yes yes / ], [ '/', $roles[2]->id, qw/ no yes no yes yes no / ], [ '/', $roles[2]->id, qw/yes yes no yes yes no / ] ] ); my @prefs = $schema->populate( 'Preference', [ [qw/ prefkey prefvalue /], [ 'name', $custom_values->{wiki_name} ], [ 'admins', $custom_values->{admin_username} ], [ 'theme', $config->{'theme'} || 'default' ], [ 'open_registration', $config->{'open_registration'} || 1 ], [ 'anonymous_user', 'anonymouscoward' ], ] ); my @pages = $schema->populate( 'Page', [ [qw/ version parent name name_orig depth lft rgt content_version /], [ undef, undef, '/', '/', 0, 1, 5, undef ], [ undef, 1, 'help', loc('Help'), 1, 2, 3, undef ], [ undef, 1, 'admin', 'Admin', 1, 4, 5, undef ], ] ); my @pageversions = $schema->populate( 'PageVersion', [ [ qw/page version parent parent_version name name_orig depth content_version_first content_version_last creator status created release_date remove_date comments/ ], [ 1, 1, undef, undef, '/', '/', 0, undef, undef, $people[1]->id, '', 0, '', '', '' ], [ 2, 1, 1, undef, 'help', 'Help', 0, undef, undef, $people[1]->id, '', 0, '', '', '' ], [ 3, 1, 1, undef, 'admin', 'Admin', 0, undef, undef, $people[1]->id, '', 0, '', '', '' ], ] ); my @content = $schema->populate( 'Content', [ [ qw/ page version creator created body status release_date remove_date type abstract comments precompiled / ], [ 1, 1, $people[1]->id, 0, loc('welcome message', "test"), 'released', 1, 1, '', '', '', '' ], [ 2, 1, $people[1]->id, 0, loc('help message'), 'released', 1, 1, '', '', '', '' ], [ 3, 1, $people[1]->id, 0, loc('admin home page'), 'released', 1, 1, '', '', '' ], ] ); $schema->resultset('Page')->update( { version => 1 } ); $schema->resultset('Page')->update( { content_version => 1 } ); $schema->resultset('PageVersion')->update( { content_version_first => 1 } ); $schema->resultset('PageVersion')->update( { content_version_last => 1 } ); print "Success!\n"; } =head1 AUTHOR Marcus Ramberg =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/I18N.pm0000644000175000017500000000122611376307503021406 0ustar gregoagregoapackage MojoMojo::I18N; use strict; use parent 'Locale::Maketext'; =head1 Methods =head2 loc Abbreviation for localize() =cut *loc = \&localize; =head2 localize Translate text to locality =cut sub localize { my $self = shift; return $self->maketext(@_); } =head2 tense This is only here to satisfy Pod coverage tests. Not sure why t/03podcoverage.t thinks there is a tense sub in here? =head1 NAME MojoMojo::I18N - support for language localization =head1 AUTHORS Marcus Ramberg =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; libmojomojo-perl-1.11+dfsg.orig/lib/MojoMojo/Declaw.pm0000644000175000017500000021365712144003572022134 0ustar gregoagregoapackage MojoMojo::Declaw; =head1 NAME MojoMojo::Declaw - Cleans HTML as well as CSS of scripting and other executable contents, and neutralises XSS attacks. Derived from HTML::Defang version 1.01. =head1 SYNOPSIS my $InputHtml = ""; my $Defang = MojoMojo::Declaw->new( context => $Self, fix_mismatched_tags => 1, tags_to_callback => [ br embed img ], tags_callback => \&DefangTagsCallback, url_callback => \&DefangUrlCallback, css_callback => \&DefangCssCallback, attribs_to_callback => [ qw(border src) ], attribs_callback => \&DefangAttribsCallback ); my $SanitizedHtml = $Defang->defang($InputHtml); # Callback for custom handling specific HTML tags sub DefangTagsCallback { my ($Self, $Defang, $OpenAngle, $lcTag, $IsEndTag, $AttributeHash, $CloseAngle, $HtmlR, $OutR) = @_; return 1 if $lcTag eq 'br'; # Explicitly defang this tag, eventhough safe return 0 if $lcTag eq 'embed'; # Explicitly whitelist this tag, eventhough unsafe return 2 if $lcTag eq 'img'; # I am not sure what to do with this tag, so process as HTML::Defang normally would } # Callback for custom handling URLs in HTML attributes as well as style tag/attribute declarations sub DefangUrlCallback { my ($Self, $Defang, $lcTag, $lcAttrKey, $AttrValR, $AttributeHash, $HtmlR) = @_; return 0 if $$AttrValR =~ /safesite.com/i; # Explicitly allow this URL in tag attributes or stylesheets return 1 if $$AttrValR =~ /evilsite.com/i; # Explicitly defang this URL in tag attributes or stylesheets } # Callback for custom handling style tags/attributes sub DefangCssCallback { my ($Self, $Defang, $Selectors, $SelectorRules, $Tag, $IsAttr) = @_; my $i = 0; foreach (@$Selectors) { my $SelectorRule = $$SelectorRules[$i]; foreach my $KeyValueRules (@$SelectorRule) { foreach my $KeyValueRule (@$KeyValueRules) { my ($Key, $Value) = @$KeyValueRule; $$KeyValueRule[2] = 1 if $Value =~ '!important'; # Comment out any '!important' directive $$KeyValueRule[2] = 1 if $Key =~ 'position' && $Value =~ 'fixed'; # Comment out any 'position=fixed;' declaration } } $i++; } } # Callback for custom handling HTML tag attributes sub DefangAttribsCallback { my ($Self, $Defang, $lcTag, $lcAttrKey, $AttrValR, $HtmlR) = @_; $$AttrValR = '0' if $lcAttrKey eq 'border'; # Change all 'border' attribute values to zero. return 1 if $lcAttrKey eq 'src'; # Defang all 'src' attributes return 0; } =head1 DESCRIPTION This module accepts an input HTML and/or CSS string and removes any executable code including scripting, embedded objects, applets, etc., and neutralises any XSS attacks. A whitelist based approach is used which means only HTML known to be safe is allowed through. HTML::Defang uses a custom html tag parser. The parser has been designed and tested to work with nasty real world html and to try and emulate as close as possible what browsers actually do with strange looking constructs. The test suite has been built based on examples from a range of sources such as http://ha.ckers.org/xss.html and http://imfo.ru/csstest/css_hacks/import.php to ensure that as many as possible XSS attack scenarios have been dealt with. HTML::Defang can make callbacks to client code when it encounters the following: =over 4 =item * When a specified tag is parsed =item * When a specified attribute is parsed =item * When a URL is parsed as part of an HTML attribute, or CSS property value. =item * When style data is parsed, as part of an HTML style attribute, or as part of an HTML " if !$ClosingStyleTagPresent; } # We don't want