From c01eca9180c7e2fbc0efbbb3bca55a6061a43333 Mon Sep 17 00:00:00 2001 From: root <root@rivolta.investici.org> Date: Tue, 7 Dec 2010 02:04:03 +0000 Subject: [PATCH] Add theme vanilla --- wp-content/themes/vanilla/404.php | 22 + wp-content/themes/vanilla/LICENSE.TXT | 340 ++++++++ wp-content/themes/vanilla/PHPTAL.php | 788 ++++++++++++++++++ .../themes/vanilla/PHPTAL/CommentFilter.php | 12 + wp-content/themes/vanilla/PHPTAL/Context.php | 405 +++++++++ wp-content/themes/vanilla/PHPTAL/Dom/Defs.php | 237 ++++++ wp-content/themes/vanilla/PHPTAL/Dom/Node.php | 254 ++++++ .../themes/vanilla/PHPTAL/Dom/Parser.php | 154 ++++ .../themes/vanilla/PHPTAL/Dom/XmlParser.php | 386 +++++++++ .../themes/vanilla/PHPTAL/Dom/XmlnsState.php | 98 +++ .../themes/vanilla/PHPTAL/Exception.php | 65 ++ .../themes/vanilla/PHPTAL/FileSource.php | 64 ++ wp-content/themes/vanilla/PHPTAL/Filter.php | 31 + .../vanilla/PHPTAL/GetTextTranslator.php | 143 ++++ wp-content/themes/vanilla/PHPTAL/LICENSE.TXT | 504 +++++++++++ .../themes/vanilla/PHPTAL/Namespace.php | 163 ++++ .../themes/vanilla/PHPTAL/Namespace/I18N.php | 28 + .../themes/vanilla/PHPTAL/Namespace/METAL.php | 28 + .../vanilla/PHPTAL/Namespace/PHPTAL.php | 28 + .../themes/vanilla/PHPTAL/Namespace/TAL.php | 37 + .../themes/vanilla/PHPTAL/Php/Attribute.php | 98 +++ .../PHPTAL/Php/Attribute/I18N/Attributes.php | 107 +++ .../PHPTAL/Php/Attribute/I18N/Data.php | 24 + .../PHPTAL/Php/Attribute/I18N/Domain.php | 41 + .../PHPTAL/Php/Attribute/I18N/Name.php | 40 + .../PHPTAL/Php/Attribute/I18N/Source.php | 38 + .../PHPTAL/Php/Attribute/I18N/Target.php | 32 + .../PHPTAL/Php/Attribute/I18N/Translate.php | 97 +++ .../Php/Attribute/METAL/DefineMacro.php | 71 ++ .../PHPTAL/Php/Attribute/METAL/DefineSlot.php | 75 ++ .../PHPTAL/Php/Attribute/METAL/FillSlot.php | 75 ++ .../PHPTAL/Php/Attribute/METAL/UseMacro.php | 131 +++ .../PHPTAL/Php/Attribute/PHPTAL/Cache.php | 92 ++ .../PHPTAL/Php/Attribute/PHPTAL/Debug.php | 44 + .../PHPTAL/Php/Attribute/PHPTAL/Id.php | 66 ++ .../PHPTAL/Php/Attribute/PHPTAL/Tales.php | 60 ++ .../PHPTAL/Php/Attribute/TAL/Attributes.php | 168 ++++ .../PHPTAL/Php/Attribute/TAL/Comment.php | 40 + .../PHPTAL/Php/Attribute/TAL/Condition.php | 101 +++ .../PHPTAL/Php/Attribute/TAL/Content.php | 98 +++ .../PHPTAL/Php/Attribute/TAL/Define.php | 183 ++++ .../PHPTAL/Php/Attribute/TAL/OmitTag.php | 74 ++ .../PHPTAL/Php/Attribute/TAL/OnError.php | 81 ++ .../PHPTAL/Php/Attribute/TAL/Repeat.php | 115 +++ .../PHPTAL/Php/Attribute/TAL/Replace.php | 117 +++ .../vanilla/PHPTAL/Php/CodeGenerator.php | 55 ++ .../themes/vanilla/PHPTAL/Php/CodeWriter.php | 393 +++++++++ .../vanilla/PHPTAL/Php/ElementWriter.php | 101 +++ wp-content/themes/vanilla/PHPTAL/Php/Node.php | 507 +++++++++++ .../themes/vanilla/PHPTAL/Php/State.php | 152 ++++ .../themes/vanilla/PHPTAL/Php/Tales.php | 135 +++ .../vanilla/PHPTAL/Php/TalesChainExecutor.php | 99 +++ .../vanilla/PHPTAL/Php/TalesInternal.php | 331 ++++++++ .../themes/vanilla/PHPTAL/Php/Transformer.php | 384 +++++++++ .../vanilla/PHPTAL/RepeatController.php | 477 +++++++++++ wp-content/themes/vanilla/PHPTAL/Source.php | 16 + .../themes/vanilla/PHPTAL/SourceResolver.php | 16 + .../themes/vanilla/PHPTAL/StringSource.php | 34 + wp-content/themes/vanilla/PHPTAL/Tales.php | 7 + .../themes/vanilla/PHPTAL/TalesRegistry.php | 109 +++ .../vanilla/PHPTAL/TranslationService.php | 41 + wp-content/themes/vanilla/PHPTAL/Trigger.php | 36 + .../themes/vanilla/_carrington/README.txt | 21 + .../themes/vanilla/_carrington/admin.php | 245 ++++++ .../themes/vanilla/_carrington/ajax-load.php | 84 ++ .../themes/vanilla/_carrington/sandbox.php | 292 +++++++ .../themes/vanilla/_carrington/templates.php | 106 +++ .../themes/vanilla/_carrington/utility.php | 702 ++++++++++++++++ .../vanilla/_custom-widgets/admin_actions.php | 134 +++ .../vanilla/_custom-widgets/admin_css.php | 23 + .../_custom-widgets/admin_template_edit.php | 230 +++++ .../_custom-widgets/admin_template_main.php | 89 ++ .../_custom-widgets/custom_widgets.php | 216 +++++ .../vanilla/_custom-widgets/images/help.gif | Bin 0 -> 402 bytes .../_custom-widgets/images/help_blue.gif | Bin 0 -> 610 bytes .../vanilla/_custom-widgets/images/tip.gif | Bin 0 -> 1109 bytes .../vanilla/_custom-widgets/javascript.js | 47 ++ .../_custom-widgets/show_in_authors.php | 87 ++ .../_custom-widgets/show_in_categories.php | 113 +++ .../vanilla/_custom-widgets/show_in_pages.php | 109 +++ .../vanilla/_custom-widgets/show_in_posts.php | 102 +++ .../vanilla/_custom-widgets/show_in_tags.php | 106 +++ .../themes/vanilla/_hybrid/admin/about.php | 26 + .../themes/vanilla/_hybrid/admin/general.php | 212 +++++ .../themes/vanilla/_hybrid/admin/meta-box.php | 285 +++++++ .../_hybrid/admin/theme-settings-admin.php | 117 +++ .../_hybrid/admin/theme-settings-xhtml.php | 30 + .../vanilla/_hybrid/admin/theme-settings.php | 36 + .../themes/vanilla/_hybrid/breadcrumbs.php | 195 +++++ .../themes/vanilla/_hybrid/comments.php | 225 +++++ .../themes/vanilla/_hybrid/deprecated.php | 94 +++ wp-content/themes/vanilla/_hybrid/filters.php | 325 ++++++++ .../themes/vanilla/_hybrid/functions.php | 473 +++++++++++ .../themes/vanilla/_hybrid/get-the-image.php | 249 ++++++ .../themes/vanilla/_hybrid/get-the-video.php | 84 ++ wp-content/themes/vanilla/_hybrid/hooks.php | 271 ++++++ wp-content/themes/vanilla/_hybrid/media.php | 324 +++++++ wp-content/themes/vanilla/_hybrid/primary.php | 72 ++ .../themes/vanilla/_hybrid/secondary.php | 72 ++ .../vanilla/_hybrid/template-functions.php | 437 ++++++++++ wp-content/themes/vanilla/_hybrid/widgets.php | 174 ++++ .../vanilla/_tarski/api/constants_helper.php | 236 ++++++ .../themes/vanilla/_tarski/api/deprecated.php | 342 ++++++++ .../themes/vanilla/_tarski/api/hooks.php | 132 +++ .../themes/vanilla/_tarski/classes/asset.php | 205 +++++ .../vanilla/_tarski/classes/options.php | 241 ++++++ .../vanilla/_tarski/classes/page_select.php | 101 +++ .../vanilla/_tarski/classes/version.php | 166 ++++ wp-content/themes/vanilla/_tarski/core.php | 68 ++ .../themes/vanilla/_tarski/css/admin.css | 10 + .../themes/vanilla/_tarski/css/options.css | 92 ++ .../themes/vanilla/_tarski/css/print.css | 38 + .../themes/vanilla/_tarski/css/screen.css | 30 + .../vanilla/_tarski/display/credits.php | 6 + .../themes/vanilla/_tarski/display/debug.php | 12 + .../vanilla/_tarski/display/feed_link.php | 3 + .../vanilla/_tarski/display/no_posts.php | 11 + .../vanilla/_tarski/display/options_page.php | 292 +++++++ .../themes/vanilla/_tarski/functions.php | 37 + .../vanilla/_tarski/headers/blank-thumb.gif | Bin 0 -> 1316 bytes .../themes/vanilla/_tarski/headers/blank.gif | Bin 0 -> 185 bytes .../_tarski/headers/coffeerings-thumb.jpg | Bin 0 -> 5619 bytes .../vanilla/_tarski/headers/coffeerings.jpg | Bin 0 -> 20672 bytes .../_tarski/headers/greytree-thumb.jpg | Bin 0 -> 8749 bytes .../vanilla/_tarski/headers/greytree.jpg | Bin 0 -> 23355 bytes .../_tarski/headers/mountain-thumb.png | Bin 0 -> 2030 bytes .../vanilla/_tarski/headers/mountain.png | Bin 0 -> 4279 bytes .../vanilla/_tarski/headers/orbits-thumb.gif | Bin 0 -> 11497 bytes .../themes/vanilla/_tarski/headers/orbits.gif | Bin 0 -> 71800 bytes .../_tarski/headers/splatter-thumb.png | Bin 0 -> 6060 bytes .../vanilla/_tarski/headers/splatter.png | Bin 0 -> 17104 bytes .../vanilla/_tarski/headers/spots-thumb.gif | Bin 0 -> 920 bytes .../themes/vanilla/_tarski/headers/spots.gif | Bin 0 -> 2834 bytes .../_tarski/headers/thoughtwind-thumb.jpg | Bin 0 -> 7220 bytes .../vanilla/_tarski/headers/thoughtwind.jpg | Bin 0 -> 22855 bytes .../vanilla/_tarski/helpers/admin_helper.php | 455 ++++++++++ .../vanilla/_tarski/helpers/author_helper.php | 56 ++ .../_tarski/helpers/content_helper.php | 322 +++++++ .../vanilla/_tarski/helpers/tag_helper.php | 125 +++ .../_tarski/helpers/template_helper.php | 562 +++++++++++++ .../vanilla/_tarski/helpers/widgets.php | 143 ++++ .../themes/vanilla/_tarski/images/avatar.png | Bin 0 -> 1347 bytes .../themes/vanilla/_tarski/images/icons.png | Bin 0 -> 1900 bytes .../vanilla/_tarski/images/page_select.png | Bin 0 -> 421 bytes wp-content/themes/vanilla/_tarski/js/crir.js | 165 ++++ .../themes/vanilla/_tarski/js/page_select.js | 144 ++++ .../themes/vanilla/_tarski/js/tarski.js | 110 +++ .../themes/vanilla/_tarski/launcher.php | 147 ++++ wp-content/themes/vanilla/_vanilla/blocks.php | 685 +++++++++++++++ wp-content/themes/vanilla/_vanilla/core.php | 139 +++ wp-content/themes/vanilla/_vanilla/grid.php | 279 +++++++ .../themes/vanilla/_vanilla/hooks-filters.php | 178 ++++ .../themes/vanilla/_vanilla/minify-html.php | 224 +++++ .../themes/vanilla/_vanilla/phptal-custom.php | 61 ++ .../themes/vanilla/_vanilla/widgets.php | 304 +++++++ wp-content/themes/vanilla/archive.php | 22 + wp-content/themes/vanilla/archives.php | 21 + .../blog-set/carrington-sidebar-top.php | 62 ++ .../vanilla/blog-set/comment/README.txt | 27 + .../blog-set/comment/comment-default.html | 45 + .../blog-set/comment/comment-default.php | 58 ++ .../themes/vanilla/blog-set/comment/ping.html | 33 + .../themes/vanilla/blog-set/comment/ping.php | 45 + .../vanilla/blog-set/comments/README.txt | 37 + .../blog-set/comments/comments-default.html | 49 ++ .../blog-set/comments/comments-default.php | 58 ++ .../blog-set/comments/comments-loop.html | 40 + .../blog-set/comments/comments-loop.php | 36 + .../vanilla/blog-set/comments/pings-loop.html | 34 + .../vanilla/blog-set/comments/pings-loop.php | 36 + .../vanilla/blog-set/content/README.txt | 66 ++ .../vanilla/blog-set/content/cat-asides.php | 67 ++ .../blog-set/content/content-default.html | 48 ++ .../blog-set/content/content-default.php | 57 ++ .../themes/vanilla/blog-set/css/README.txt | 8 + .../blog-set/css/fonts-context-min.css | 7 + .../themes/vanilla/blog-set/css/fonts-min.css | 7 + .../blog-set/css/grids-context-min.css | 7 + .../themes/vanilla/blog-set/css/grids-min.css | 7 + wp-content/themes/vanilla/blog-set/css/ie.css | 55 ++ .../themes/vanilla/blog-set/css/image.css | 80 ++ .../blog-set/css/reset-context-min.css | 7 + .../blog-set/css/reset-fonts-grids.css | 8 + .../themes/vanilla/blog-set/css/reset-min.css | 7 + .../vanilla/blog-set/css/typography.css | 181 ++++ .../themes/vanilla/blog-set/error/404.php | 38 + .../themes/vanilla/blog-set/error/README.txt | 20 + .../themes/vanilla/blog-set/error/exit.php | 24 + .../vanilla/blog-set/excerpt/README.txt | 64 ++ .../blog-set/excerpt/excerpt-default.html | 30 + .../blog-set/excerpt/excerpt-default.php | 38 + .../vanilla/blog-set/excerpt/search.html | 36 + .../vanilla/blog-set/excerpt/search.php | 40 + .../themes/vanilla/blog-set/footer/README.txt | 36 + .../blog-set/footer/footer-default.html | 33 + .../blog-set/footer/footer-default.php | 26 + .../themes/vanilla/blog-set/forms/README.txt | 22 + .../vanilla/blog-set/forms/comment.html | 73 ++ .../themes/vanilla/blog-set/forms/comment.php | 57 ++ .../themes/vanilla/blog-set/forms/search.php | 30 + .../themes/vanilla/blog-set/header/README.txt | 36 + .../blog-set/header/header-default.html | 54 ++ .../blog-set/header/header-default.php | 52 ++ wp-content/themes/vanilla/blog-set/hooks.html | 172 ++++ .../themes/vanilla/blog-set/loop/README.txt | 35 + .../themes/vanilla/blog-set/loop/archive.html | 35 + .../themes/vanilla/blog-set/loop/archive.php | 34 + .../themes/vanilla/blog-set/loop/home.html | 48 ++ .../themes/vanilla/blog-set/loop/home.php | 36 + .../vanilla/blog-set/loop/loop-default.html | 35 + .../vanilla/blog-set/loop/loop-default.php | 39 + .../themes/vanilla/blog-set/loop/search.html | 36 + .../themes/vanilla/blog-set/loop/search.php | 46 + .../themes/vanilla/blog-set/misc/README.txt | 23 + .../themes/vanilla/blog-set/misc/banner.php | 21 + .../vanilla/blog-set/misc/nav-posts.html | 30 + .../vanilla/blog-set/misc/nav-posts.php | 24 + .../themes/vanilla/blog-set/pages/README.txt | 41 + .../vanilla/blog-set/pages/pages-default.html | 93 +++ .../vanilla/blog-set/pages/pages-default.php | 56 ++ .../themes/vanilla/blog-set/posts/README.txt | 46 + .../themes/vanilla/blog-set/posts/author.php | 67 ++ .../vanilla/blog-set/posts/category.html | 88 ++ .../vanilla/blog-set/posts/category.php | 60 ++ .../themes/vanilla/blog-set/posts/home.html | 84 ++ .../themes/vanilla/blog-set/posts/home.php | 55 ++ .../vanilla/blog-set/posts/posts-default.php | 54 ++ .../themes/vanilla/blog-set/posts/search.html | 90 ++ .../themes/vanilla/blog-set/posts/search.php | 63 ++ .../themes/vanilla/blog-set/posts/style.css | 72 ++ .../themes/vanilla/blog-set/posts/tag.php | 41 + .../themes/vanilla/blog-set/single/README.txt | 27 + .../blog-set/single/single-default.html | 111 +++ .../blog-set/single/single-default.php | 57 ++ .../themes/vanilla/blog-set/vanilla-grid.html | 162 ++++ .../vanilla/blog-set/vanilla-utility.html | 68 ++ .../blog-set/widgets/all-categories.html | 40 + .../blog-set/widgets/all-categories.php | 13 + .../vanilla/blog-set/widgets/branding.html | 36 + .../vanilla/blog-set/widgets/branding.php | 13 + .../vanilla/blog-set/widgets/navigation.html | 55 ++ .../vanilla/blog-set/widgets/navigation.php | 17 + .../vanilla/blog-set/widgets/search-form.html | 34 + .../vanilla/blog-set/widgets/search-form.php | 18 + .../blog-set/widgets/site-credits.html | 31 + .../vanilla/blog-set/widgets/site-credits.php | 17 + wp-content/themes/vanilla/comments.php | 22 + wp-content/themes/vanilla/footer.php | 22 + wp-content/themes/vanilla/functions.php | 193 +++++ wp-content/themes/vanilla/header.php | 22 + wp-content/themes/vanilla/image.php | 77 ++ .../themes/vanilla/images/arrow-bullet.gif | Bin 0 -> 46 bytes .../themes/vanilla/images/attachment-next.png | Bin 0 -> 49164 bytes .../vanilla/images/attachment-previous.png | Bin 0 -> 49222 bytes wp-content/themes/vanilla/images/audio.png | Bin 0 -> 637 bytes .../themes/vanilla/images/author-comment.jpg | Bin 0 -> 23642 bytes wp-content/themes/vanilla/images/avatar.gif | Bin 0 -> 5794 bytes .../themes/vanilla/images/background.jpg | Bin 0 -> 27450 bytes wp-content/themes/vanilla/images/blank.gif | Bin 0 -> 43 bytes wp-content/themes/vanilla/images/bullet.gif | Bin 0 -> 52 bytes .../vanilla/images/by-crowd-favorite.gif | Bin 0 -> 2010 bytes .../vanilla/images/by-crowd-favorite.png | Bin 0 -> 2691 bytes wp-content/themes/vanilla/images/comment.gif | Bin 0 -> 370 bytes .../vanilla/images/comments-divider.gif | Bin 0 -> 6855 bytes wp-content/themes/vanilla/images/css.png | Bin 0 -> 595 bytes wp-content/themes/vanilla/images/default.png | Bin 0 -> 548 bytes .../images/divider-ornament-wide-dark.gif | Bin 0 -> 1844 bytes .../vanilla/images/divider-ornament-wide.gif | Bin 0 -> 971 bytes .../vanilla/images/divider-ornament.gif | Bin 0 -> 778 bytes wp-content/themes/vanilla/images/doc.png | Bin 0 -> 1822 bytes .../vanilla/images/dropdown-divider.gif | Bin 0 -> 13213 bytes wp-content/themes/vanilla/images/exe.png | Bin 0 -> 225 bytes .../themes/vanilla/images/feed-icon.gif | Bin 0 -> 1322 bytes .../themes/vanilla/images/footer-gradient.gif | Bin 0 -> 612 bytes .../vanilla/images/grey-to-white-gradient.png | Bin 0 -> 47223 bytes .../themes/vanilla/images/header-gradient.gif | Bin 0 -> 330 bytes .../themes/vanilla/images/header-texture.jpg | Bin 0 -> 47802 bytes wp-content/themes/vanilla/images/html.png | Bin 0 -> 600 bytes wp-content/themes/vanilla/images/js.png | Bin 0 -> 585 bytes .../themes/vanilla/images/mail-icon.gif | Bin 0 -> 1222 bytes wp-content/themes/vanilla/images/ndash.gif | Bin 0 -> 13151 bytes wp-content/themes/vanilla/images/pdf.png | Bin 0 -> 1711 bytes wp-content/themes/vanilla/images/pingback.jpg | Bin 0 -> 1655 bytes wp-content/themes/vanilla/images/pre.png | Bin 0 -> 190 bytes wp-content/themes/vanilla/images/quotes.gif | Bin 0 -> 173 bytes .../themes/vanilla/images/rss-button.gif | Bin 0 -> 2208 bytes wp-content/themes/vanilla/images/rss.gif | Bin 0 -> 1044 bytes wp-content/themes/vanilla/images/rss.png | Bin 0 -> 3341 bytes .../themes/vanilla/images/sample-ad.gif | Bin 0 -> 1196 bytes .../vanilla/images/sidebar-background.gif | Bin 0 -> 1515 bytes wp-content/themes/vanilla/images/spinner.gif | Bin 0 -> 1849 bytes .../images/sub-header-border-bottom.gif | Bin 0 -> 43 bytes .../themes/vanilla/images/subscribe.gif | Bin 0 -> 2181 bytes wp-content/themes/vanilla/images/swf.png | Bin 0 -> 1835 bytes wp-content/themes/vanilla/images/tar.png | Bin 0 -> 1495 bytes wp-content/themes/vanilla/images/text.png | Bin 0 -> 1862 bytes .../themes/vanilla/images/trackback.jpg | Bin 0 -> 1655 bytes wp-content/themes/vanilla/images/video.png | Bin 0 -> 660 bytes .../themes/vanilla/images/watermark-light.gif | Bin 0 -> 31981 bytes wp-content/themes/vanilla/images/zip.png | Bin 0 -> 1484 bytes wp-content/themes/vanilla/index.php | 22 + wp-content/themes/vanilla/js/carrington.js | 49 ++ wp-content/themes/vanilla/js/common.js | 1 + wp-content/themes/vanilla/js/flash-embed.js | 16 + wp-content/themes/vanilla/js/iepngfix.htc | 103 +++ wp-content/themes/vanilla/js/images/blank.gif | Bin 0 -> 49 bytes .../themes/vanilla/js/jquery/effects.blind.js | 2 + .../vanilla/js/jquery/effects.bounce.js | 2 + .../themes/vanilla/js/jquery/effects.clip.js | 2 + .../themes/vanilla/js/jquery/effects.core.js | 2 + .../themes/vanilla/js/jquery/effects.drop.js | 2 + .../vanilla/js/jquery/effects.explode.js | 2 + .../themes/vanilla/js/jquery/effects.fold.js | 2 + .../vanilla/js/jquery/effects.highlight.js | 2 + .../vanilla/js/jquery/effects.pulsate.js | 2 + .../themes/vanilla/js/jquery/effects.scale.js | 2 + .../themes/vanilla/js/jquery/effects.shake.js | 2 + .../themes/vanilla/js/jquery/effects.slide.js | 2 + .../vanilla/js/jquery/effects.transfer.js | 2 + .../themes/vanilla/js/jquery/jquery.ui.all.js | 2 + .../themes/vanilla/js/jquery/ui.accordion.js | 2 + .../themes/vanilla/js/jquery/ui.datepicker.js | 2 + .../themes/vanilla/js/jquery/ui.droppable.js | 2 + .../themes/vanilla/js/jquery/ui.selectable.js | 2 + .../themes/vanilla/js/jquery/ui.slider.js | 2 + .../themes/vanilla/js/mootools/mootools.htc | 341 ++++++++ wp-content/themes/vanilla/js/pullquotes.js | 1 + wp-content/themes/vanilla/links.php | 20 + wp-content/themes/vanilla/page.php | 22 + wp-content/themes/vanilla/plugins/README.txt | 19 + wp-content/themes/vanilla/search.php | 22 + wp-content/themes/vanilla/single.php | 22 + wp-content/themes/vanilla/style.css | 59 ++ .../themes/vanilla/swf/FlowPlayerDark.swf | Bin 0 -> 120893 bytes wp-content/themes/vanilla/swf/single.php | 22 + 335 files changed, 26516 insertions(+) create mode 100644 wp-content/themes/vanilla/404.php create mode 100644 wp-content/themes/vanilla/LICENSE.TXT create mode 100644 wp-content/themes/vanilla/PHPTAL.php create mode 100644 wp-content/themes/vanilla/PHPTAL/CommentFilter.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Context.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Dom/Defs.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Dom/Node.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Dom/Parser.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Dom/XmlParser.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Dom/XmlnsState.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Exception.php create mode 100644 wp-content/themes/vanilla/PHPTAL/FileSource.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Filter.php create mode 100644 wp-content/themes/vanilla/PHPTAL/GetTextTranslator.php create mode 100644 wp-content/themes/vanilla/PHPTAL/LICENSE.TXT create mode 100644 wp-content/themes/vanilla/PHPTAL/Namespace.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Namespace/I18N.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Namespace/METAL.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Namespace/PHPTAL.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Namespace/TAL.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Attribute.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Attributes.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Data.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Domain.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Name.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Source.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Target.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Translate.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Attribute/METAL/DefineMacro.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Attribute/METAL/DefineSlot.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Attribute/METAL/FillSlot.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Attribute/METAL/UseMacro.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Attribute/PHPTAL/Cache.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Attribute/PHPTAL/Debug.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Attribute/PHPTAL/Id.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Attribute/PHPTAL/Tales.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Attributes.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Comment.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Condition.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Content.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Define.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/OmitTag.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/OnError.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Repeat.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Replace.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/CodeGenerator.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/CodeWriter.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/ElementWriter.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Node.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/State.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Tales.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/TalesChainExecutor.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/TalesInternal.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Php/Transformer.php create mode 100644 wp-content/themes/vanilla/PHPTAL/RepeatController.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Source.php create mode 100644 wp-content/themes/vanilla/PHPTAL/SourceResolver.php create mode 100644 wp-content/themes/vanilla/PHPTAL/StringSource.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Tales.php create mode 100644 wp-content/themes/vanilla/PHPTAL/TalesRegistry.php create mode 100644 wp-content/themes/vanilla/PHPTAL/TranslationService.php create mode 100644 wp-content/themes/vanilla/PHPTAL/Trigger.php create mode 100644 wp-content/themes/vanilla/_carrington/README.txt create mode 100644 wp-content/themes/vanilla/_carrington/admin.php create mode 100644 wp-content/themes/vanilla/_carrington/ajax-load.php create mode 100644 wp-content/themes/vanilla/_carrington/sandbox.php create mode 100644 wp-content/themes/vanilla/_carrington/templates.php create mode 100644 wp-content/themes/vanilla/_carrington/utility.php create mode 100755 wp-content/themes/vanilla/_custom-widgets/admin_actions.php create mode 100755 wp-content/themes/vanilla/_custom-widgets/admin_css.php create mode 100755 wp-content/themes/vanilla/_custom-widgets/admin_template_edit.php create mode 100755 wp-content/themes/vanilla/_custom-widgets/admin_template_main.php create mode 100755 wp-content/themes/vanilla/_custom-widgets/custom_widgets.php create mode 100755 wp-content/themes/vanilla/_custom-widgets/images/help.gif create mode 100755 wp-content/themes/vanilla/_custom-widgets/images/help_blue.gif create mode 100755 wp-content/themes/vanilla/_custom-widgets/images/tip.gif create mode 100755 wp-content/themes/vanilla/_custom-widgets/javascript.js create mode 100755 wp-content/themes/vanilla/_custom-widgets/show_in_authors.php create mode 100755 wp-content/themes/vanilla/_custom-widgets/show_in_categories.php create mode 100755 wp-content/themes/vanilla/_custom-widgets/show_in_pages.php create mode 100755 wp-content/themes/vanilla/_custom-widgets/show_in_posts.php create mode 100755 wp-content/themes/vanilla/_custom-widgets/show_in_tags.php create mode 100755 wp-content/themes/vanilla/_hybrid/admin/about.php create mode 100755 wp-content/themes/vanilla/_hybrid/admin/general.php create mode 100755 wp-content/themes/vanilla/_hybrid/admin/meta-box.php create mode 100755 wp-content/themes/vanilla/_hybrid/admin/theme-settings-admin.php create mode 100755 wp-content/themes/vanilla/_hybrid/admin/theme-settings-xhtml.php create mode 100755 wp-content/themes/vanilla/_hybrid/admin/theme-settings.php create mode 100755 wp-content/themes/vanilla/_hybrid/breadcrumbs.php create mode 100755 wp-content/themes/vanilla/_hybrid/comments.php create mode 100755 wp-content/themes/vanilla/_hybrid/deprecated.php create mode 100755 wp-content/themes/vanilla/_hybrid/filters.php create mode 100755 wp-content/themes/vanilla/_hybrid/functions.php create mode 100755 wp-content/themes/vanilla/_hybrid/get-the-image.php create mode 100755 wp-content/themes/vanilla/_hybrid/get-the-video.php create mode 100755 wp-content/themes/vanilla/_hybrid/hooks.php create mode 100755 wp-content/themes/vanilla/_hybrid/media.php create mode 100755 wp-content/themes/vanilla/_hybrid/primary.php create mode 100755 wp-content/themes/vanilla/_hybrid/secondary.php create mode 100755 wp-content/themes/vanilla/_hybrid/template-functions.php create mode 100755 wp-content/themes/vanilla/_hybrid/widgets.php create mode 100644 wp-content/themes/vanilla/_tarski/api/constants_helper.php create mode 100644 wp-content/themes/vanilla/_tarski/api/deprecated.php create mode 100644 wp-content/themes/vanilla/_tarski/api/hooks.php create mode 100644 wp-content/themes/vanilla/_tarski/classes/asset.php create mode 100644 wp-content/themes/vanilla/_tarski/classes/options.php create mode 100644 wp-content/themes/vanilla/_tarski/classes/page_select.php create mode 100644 wp-content/themes/vanilla/_tarski/classes/version.php create mode 100644 wp-content/themes/vanilla/_tarski/core.php create mode 100644 wp-content/themes/vanilla/_tarski/css/admin.css create mode 100644 wp-content/themes/vanilla/_tarski/css/options.css create mode 100644 wp-content/themes/vanilla/_tarski/css/print.css create mode 100644 wp-content/themes/vanilla/_tarski/css/screen.css create mode 100644 wp-content/themes/vanilla/_tarski/display/credits.php create mode 100644 wp-content/themes/vanilla/_tarski/display/debug.php create mode 100644 wp-content/themes/vanilla/_tarski/display/feed_link.php create mode 100644 wp-content/themes/vanilla/_tarski/display/no_posts.php create mode 100644 wp-content/themes/vanilla/_tarski/display/options_page.php create mode 100644 wp-content/themes/vanilla/_tarski/functions.php create mode 100644 wp-content/themes/vanilla/_tarski/headers/blank-thumb.gif create mode 100644 wp-content/themes/vanilla/_tarski/headers/blank.gif create mode 100644 wp-content/themes/vanilla/_tarski/headers/coffeerings-thumb.jpg create mode 100644 wp-content/themes/vanilla/_tarski/headers/coffeerings.jpg create mode 100644 wp-content/themes/vanilla/_tarski/headers/greytree-thumb.jpg create mode 100644 wp-content/themes/vanilla/_tarski/headers/greytree.jpg create mode 100644 wp-content/themes/vanilla/_tarski/headers/mountain-thumb.png create mode 100644 wp-content/themes/vanilla/_tarski/headers/mountain.png create mode 100644 wp-content/themes/vanilla/_tarski/headers/orbits-thumb.gif create mode 100644 wp-content/themes/vanilla/_tarski/headers/orbits.gif create mode 100644 wp-content/themes/vanilla/_tarski/headers/splatter-thumb.png create mode 100644 wp-content/themes/vanilla/_tarski/headers/splatter.png create mode 100644 wp-content/themes/vanilla/_tarski/headers/spots-thumb.gif create mode 100644 wp-content/themes/vanilla/_tarski/headers/spots.gif create mode 100644 wp-content/themes/vanilla/_tarski/headers/thoughtwind-thumb.jpg create mode 100644 wp-content/themes/vanilla/_tarski/headers/thoughtwind.jpg create mode 100644 wp-content/themes/vanilla/_tarski/helpers/admin_helper.php create mode 100644 wp-content/themes/vanilla/_tarski/helpers/author_helper.php create mode 100644 wp-content/themes/vanilla/_tarski/helpers/content_helper.php create mode 100644 wp-content/themes/vanilla/_tarski/helpers/tag_helper.php create mode 100644 wp-content/themes/vanilla/_tarski/helpers/template_helper.php create mode 100644 wp-content/themes/vanilla/_tarski/helpers/widgets.php create mode 100644 wp-content/themes/vanilla/_tarski/images/avatar.png create mode 100644 wp-content/themes/vanilla/_tarski/images/icons.png create mode 100644 wp-content/themes/vanilla/_tarski/images/page_select.png create mode 100644 wp-content/themes/vanilla/_tarski/js/crir.js create mode 100644 wp-content/themes/vanilla/_tarski/js/page_select.js create mode 100644 wp-content/themes/vanilla/_tarski/js/tarski.js create mode 100644 wp-content/themes/vanilla/_tarski/launcher.php create mode 100644 wp-content/themes/vanilla/_vanilla/blocks.php create mode 100644 wp-content/themes/vanilla/_vanilla/core.php create mode 100644 wp-content/themes/vanilla/_vanilla/grid.php create mode 100644 wp-content/themes/vanilla/_vanilla/hooks-filters.php create mode 100644 wp-content/themes/vanilla/_vanilla/minify-html.php create mode 100644 wp-content/themes/vanilla/_vanilla/phptal-custom.php create mode 100644 wp-content/themes/vanilla/_vanilla/widgets.php create mode 100644 wp-content/themes/vanilla/archive.php create mode 100644 wp-content/themes/vanilla/archives.php create mode 100644 wp-content/themes/vanilla/blog-set/carrington-sidebar-top.php create mode 100644 wp-content/themes/vanilla/blog-set/comment/README.txt create mode 100644 wp-content/themes/vanilla/blog-set/comment/comment-default.html create mode 100644 wp-content/themes/vanilla/blog-set/comment/comment-default.php create mode 100644 wp-content/themes/vanilla/blog-set/comment/ping.html create mode 100644 wp-content/themes/vanilla/blog-set/comment/ping.php create mode 100644 wp-content/themes/vanilla/blog-set/comments/README.txt create mode 100644 wp-content/themes/vanilla/blog-set/comments/comments-default.html create mode 100644 wp-content/themes/vanilla/blog-set/comments/comments-default.php create mode 100644 wp-content/themes/vanilla/blog-set/comments/comments-loop.html create mode 100644 wp-content/themes/vanilla/blog-set/comments/comments-loop.php create mode 100644 wp-content/themes/vanilla/blog-set/comments/pings-loop.html create mode 100644 wp-content/themes/vanilla/blog-set/comments/pings-loop.php create mode 100644 wp-content/themes/vanilla/blog-set/content/README.txt create mode 100644 wp-content/themes/vanilla/blog-set/content/cat-asides.php create mode 100644 wp-content/themes/vanilla/blog-set/content/content-default.html create mode 100644 wp-content/themes/vanilla/blog-set/content/content-default.php create mode 100644 wp-content/themes/vanilla/blog-set/css/README.txt create mode 100644 wp-content/themes/vanilla/blog-set/css/fonts-context-min.css create mode 100644 wp-content/themes/vanilla/blog-set/css/fonts-min.css create mode 100644 wp-content/themes/vanilla/blog-set/css/grids-context-min.css create mode 100644 wp-content/themes/vanilla/blog-set/css/grids-min.css create mode 100644 wp-content/themes/vanilla/blog-set/css/ie.css create mode 100644 wp-content/themes/vanilla/blog-set/css/image.css create mode 100644 wp-content/themes/vanilla/blog-set/css/reset-context-min.css create mode 100644 wp-content/themes/vanilla/blog-set/css/reset-fonts-grids.css create mode 100644 wp-content/themes/vanilla/blog-set/css/reset-min.css create mode 100644 wp-content/themes/vanilla/blog-set/css/typography.css create mode 100644 wp-content/themes/vanilla/blog-set/error/404.php create mode 100644 wp-content/themes/vanilla/blog-set/error/README.txt create mode 100644 wp-content/themes/vanilla/blog-set/error/exit.php create mode 100644 wp-content/themes/vanilla/blog-set/excerpt/README.txt create mode 100644 wp-content/themes/vanilla/blog-set/excerpt/excerpt-default.html create mode 100644 wp-content/themes/vanilla/blog-set/excerpt/excerpt-default.php create mode 100644 wp-content/themes/vanilla/blog-set/excerpt/search.html create mode 100644 wp-content/themes/vanilla/blog-set/excerpt/search.php create mode 100644 wp-content/themes/vanilla/blog-set/footer/README.txt create mode 100644 wp-content/themes/vanilla/blog-set/footer/footer-default.html create mode 100644 wp-content/themes/vanilla/blog-set/footer/footer-default.php create mode 100644 wp-content/themes/vanilla/blog-set/forms/README.txt create mode 100644 wp-content/themes/vanilla/blog-set/forms/comment.html create mode 100644 wp-content/themes/vanilla/blog-set/forms/comment.php create mode 100644 wp-content/themes/vanilla/blog-set/forms/search.php create mode 100644 wp-content/themes/vanilla/blog-set/header/README.txt create mode 100644 wp-content/themes/vanilla/blog-set/header/header-default.html create mode 100644 wp-content/themes/vanilla/blog-set/header/header-default.php create mode 100644 wp-content/themes/vanilla/blog-set/hooks.html create mode 100644 wp-content/themes/vanilla/blog-set/loop/README.txt create mode 100644 wp-content/themes/vanilla/blog-set/loop/archive.html create mode 100644 wp-content/themes/vanilla/blog-set/loop/archive.php create mode 100644 wp-content/themes/vanilla/blog-set/loop/home.html create mode 100644 wp-content/themes/vanilla/blog-set/loop/home.php create mode 100644 wp-content/themes/vanilla/blog-set/loop/loop-default.html create mode 100644 wp-content/themes/vanilla/blog-set/loop/loop-default.php create mode 100644 wp-content/themes/vanilla/blog-set/loop/search.html create mode 100644 wp-content/themes/vanilla/blog-set/loop/search.php create mode 100644 wp-content/themes/vanilla/blog-set/misc/README.txt create mode 100644 wp-content/themes/vanilla/blog-set/misc/banner.php create mode 100644 wp-content/themes/vanilla/blog-set/misc/nav-posts.html create mode 100644 wp-content/themes/vanilla/blog-set/misc/nav-posts.php create mode 100644 wp-content/themes/vanilla/blog-set/pages/README.txt create mode 100644 wp-content/themes/vanilla/blog-set/pages/pages-default.html create mode 100644 wp-content/themes/vanilla/blog-set/pages/pages-default.php create mode 100644 wp-content/themes/vanilla/blog-set/posts/README.txt create mode 100644 wp-content/themes/vanilla/blog-set/posts/author.php create mode 100644 wp-content/themes/vanilla/blog-set/posts/category.html create mode 100644 wp-content/themes/vanilla/blog-set/posts/category.php create mode 100644 wp-content/themes/vanilla/blog-set/posts/home.html create mode 100644 wp-content/themes/vanilla/blog-set/posts/home.php create mode 100644 wp-content/themes/vanilla/blog-set/posts/posts-default.php create mode 100644 wp-content/themes/vanilla/blog-set/posts/search.html create mode 100644 wp-content/themes/vanilla/blog-set/posts/search.php create mode 100644 wp-content/themes/vanilla/blog-set/posts/style.css create mode 100644 wp-content/themes/vanilla/blog-set/posts/tag.php create mode 100644 wp-content/themes/vanilla/blog-set/single/README.txt create mode 100644 wp-content/themes/vanilla/blog-set/single/single-default.html create mode 100644 wp-content/themes/vanilla/blog-set/single/single-default.php create mode 100644 wp-content/themes/vanilla/blog-set/vanilla-grid.html create mode 100644 wp-content/themes/vanilla/blog-set/vanilla-utility.html create mode 100644 wp-content/themes/vanilla/blog-set/widgets/all-categories.html create mode 100644 wp-content/themes/vanilla/blog-set/widgets/all-categories.php create mode 100644 wp-content/themes/vanilla/blog-set/widgets/branding.html create mode 100644 wp-content/themes/vanilla/blog-set/widgets/branding.php create mode 100644 wp-content/themes/vanilla/blog-set/widgets/navigation.html create mode 100644 wp-content/themes/vanilla/blog-set/widgets/navigation.php create mode 100644 wp-content/themes/vanilla/blog-set/widgets/search-form.html create mode 100644 wp-content/themes/vanilla/blog-set/widgets/search-form.php create mode 100644 wp-content/themes/vanilla/blog-set/widgets/site-credits.html create mode 100644 wp-content/themes/vanilla/blog-set/widgets/site-credits.php create mode 100644 wp-content/themes/vanilla/comments.php create mode 100644 wp-content/themes/vanilla/footer.php create mode 100644 wp-content/themes/vanilla/functions.php create mode 100644 wp-content/themes/vanilla/header.php create mode 100644 wp-content/themes/vanilla/image.php create mode 100644 wp-content/themes/vanilla/images/arrow-bullet.gif create mode 100644 wp-content/themes/vanilla/images/attachment-next.png create mode 100644 wp-content/themes/vanilla/images/attachment-previous.png create mode 100755 wp-content/themes/vanilla/images/audio.png create mode 100644 wp-content/themes/vanilla/images/author-comment.jpg create mode 100755 wp-content/themes/vanilla/images/avatar.gif create mode 100755 wp-content/themes/vanilla/images/background.jpg create mode 100755 wp-content/themes/vanilla/images/blank.gif create mode 100755 wp-content/themes/vanilla/images/bullet.gif create mode 100644 wp-content/themes/vanilla/images/by-crowd-favorite.gif create mode 100644 wp-content/themes/vanilla/images/by-crowd-favorite.png create mode 100644 wp-content/themes/vanilla/images/comment.gif create mode 100644 wp-content/themes/vanilla/images/comments-divider.gif create mode 100755 wp-content/themes/vanilla/images/css.png create mode 100755 wp-content/themes/vanilla/images/default.png create mode 100644 wp-content/themes/vanilla/images/divider-ornament-wide-dark.gif create mode 100644 wp-content/themes/vanilla/images/divider-ornament-wide.gif create mode 100644 wp-content/themes/vanilla/images/divider-ornament.gif create mode 100755 wp-content/themes/vanilla/images/doc.png create mode 100644 wp-content/themes/vanilla/images/dropdown-divider.gif create mode 100755 wp-content/themes/vanilla/images/exe.png create mode 100755 wp-content/themes/vanilla/images/feed-icon.gif create mode 100644 wp-content/themes/vanilla/images/footer-gradient.gif create mode 100644 wp-content/themes/vanilla/images/grey-to-white-gradient.png create mode 100644 wp-content/themes/vanilla/images/header-gradient.gif create mode 100644 wp-content/themes/vanilla/images/header-texture.jpg create mode 100755 wp-content/themes/vanilla/images/html.png create mode 100755 wp-content/themes/vanilla/images/js.png create mode 100755 wp-content/themes/vanilla/images/mail-icon.gif create mode 100644 wp-content/themes/vanilla/images/ndash.gif create mode 100755 wp-content/themes/vanilla/images/pdf.png create mode 100755 wp-content/themes/vanilla/images/pingback.jpg create mode 100755 wp-content/themes/vanilla/images/pre.png create mode 100755 wp-content/themes/vanilla/images/quotes.gif create mode 100644 wp-content/themes/vanilla/images/rss-button.gif create mode 100755 wp-content/themes/vanilla/images/rss.gif create mode 100755 wp-content/themes/vanilla/images/rss.png create mode 100755 wp-content/themes/vanilla/images/sample-ad.gif create mode 100644 wp-content/themes/vanilla/images/sidebar-background.gif create mode 100644 wp-content/themes/vanilla/images/spinner.gif create mode 100644 wp-content/themes/vanilla/images/sub-header-border-bottom.gif create mode 100755 wp-content/themes/vanilla/images/subscribe.gif create mode 100755 wp-content/themes/vanilla/images/swf.png create mode 100755 wp-content/themes/vanilla/images/tar.png create mode 100755 wp-content/themes/vanilla/images/text.png create mode 100755 wp-content/themes/vanilla/images/trackback.jpg create mode 100755 wp-content/themes/vanilla/images/video.png create mode 100644 wp-content/themes/vanilla/images/watermark-light.gif create mode 100755 wp-content/themes/vanilla/images/zip.png create mode 100644 wp-content/themes/vanilla/index.php create mode 100644 wp-content/themes/vanilla/js/carrington.js create mode 100755 wp-content/themes/vanilla/js/common.js create mode 100755 wp-content/themes/vanilla/js/flash-embed.js create mode 100755 wp-content/themes/vanilla/js/iepngfix.htc create mode 100755 wp-content/themes/vanilla/js/images/blank.gif create mode 100755 wp-content/themes/vanilla/js/jquery/effects.blind.js create mode 100755 wp-content/themes/vanilla/js/jquery/effects.bounce.js create mode 100755 wp-content/themes/vanilla/js/jquery/effects.clip.js create mode 100755 wp-content/themes/vanilla/js/jquery/effects.core.js create mode 100755 wp-content/themes/vanilla/js/jquery/effects.drop.js create mode 100755 wp-content/themes/vanilla/js/jquery/effects.explode.js create mode 100755 wp-content/themes/vanilla/js/jquery/effects.fold.js create mode 100755 wp-content/themes/vanilla/js/jquery/effects.highlight.js create mode 100755 wp-content/themes/vanilla/js/jquery/effects.pulsate.js create mode 100755 wp-content/themes/vanilla/js/jquery/effects.scale.js create mode 100755 wp-content/themes/vanilla/js/jquery/effects.shake.js create mode 100755 wp-content/themes/vanilla/js/jquery/effects.slide.js create mode 100755 wp-content/themes/vanilla/js/jquery/effects.transfer.js create mode 100755 wp-content/themes/vanilla/js/jquery/jquery.ui.all.js create mode 100755 wp-content/themes/vanilla/js/jquery/ui.accordion.js create mode 100755 wp-content/themes/vanilla/js/jquery/ui.datepicker.js create mode 100755 wp-content/themes/vanilla/js/jquery/ui.droppable.js create mode 100755 wp-content/themes/vanilla/js/jquery/ui.selectable.js create mode 100755 wp-content/themes/vanilla/js/jquery/ui.slider.js create mode 100755 wp-content/themes/vanilla/js/mootools/mootools.htc create mode 100755 wp-content/themes/vanilla/js/pullquotes.js create mode 100644 wp-content/themes/vanilla/links.php create mode 100644 wp-content/themes/vanilla/page.php create mode 100644 wp-content/themes/vanilla/plugins/README.txt create mode 100644 wp-content/themes/vanilla/search.php create mode 100644 wp-content/themes/vanilla/single.php create mode 100644 wp-content/themes/vanilla/style.css create mode 100755 wp-content/themes/vanilla/swf/FlowPlayerDark.swf create mode 100644 wp-content/themes/vanilla/swf/single.php diff --git a/wp-content/themes/vanilla/404.php b/wp-content/themes/vanilla/404.php new file mode 100644 index 000000000..aff0c7556 --- /dev/null +++ b/wp-content/themes/vanilla/404.php @@ -0,0 +1,22 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +cfct_error('404'); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/LICENSE.TXT b/wp-content/themes/vanilla/LICENSE.TXT new file mode 100644 index 000000000..3912109b5 --- /dev/null +++ b/wp-content/themes/vanilla/LICENSE.TXT @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/wp-content/themes/vanilla/PHPTAL.php b/wp-content/themes/vanilla/PHPTAL.php new file mode 100644 index 000000000..0efce125c --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL.php @@ -0,0 +1,788 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +define('PHPTAL_VERSION', '1_1_14'); + +//{{{PHPTAL_DIR +if (!defined('PHPTAL_DIR')) define('PHPTAL_DIR',dirname(__FILE__).DIRECTORY_SEPARATOR); +else assert('substr(PHPTAL_DIR,-1) == DIRECTORY_SEPARATOR'); +//}}} + +/* Please don't use the following constants. They have been replaced by methods in the PHPTAL class and are kept for backwards compatibility only. */ +//{{{ +if (!defined('PHPTAL_PHP_CODE_DESTINATION')) { + if (function_exists('sys_get_temp_dir')) define('PHPTAL_PHP_CODE_DESTINATION',rtrim(sys_get_temp_dir(), DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR); + else if (substr(PHP_OS,0,3) == 'WIN') { + if (file_exists('c:\\WINNT\\Temp\\')) define('PHPTAL_PHP_CODE_DESTINATION', 'c:\\WINNT\\Temp\\'); + else define('PHPTAL_PHP_CODE_DESTINATION', 'c:\\WINDOWS\\Temp\\'); + } + else define('PHPTAL_PHP_CODE_DESTINATION', '/tmp/'); +} +if (!defined('PHPTAL_DEFAULT_ENCODING')) define('PHPTAL_DEFAULT_ENCODING', 'UTF-8'); +if (!defined('PHPTAL_PHP_CODE_EXTENSION')) define('PHPTAL_PHP_CODE_EXTENSION', 'php'); +//}}} + +define('PHPTAL_XHTML', 1); +define('PHPTAL_XML', 2); + +require_once PHPTAL_DIR.'PHPTAL/FileSource.php'; +require_once PHPTAL_DIR.'PHPTAL/RepeatController.php'; +require_once PHPTAL_DIR.'PHPTAL/Context.php'; +require_once PHPTAL_DIR.'PHPTAL/Exception.php'; +require_once PHPTAL_DIR.'PHPTAL/TalesRegistry.php'; +require_once PHPTAL_DIR.'PHPTAL/Filter.php'; + +/** + * PHPTAL template entry point. + * + * <code> + * <?php + * require_once 'PHPTAL.php'; + * try { + * $tpl = new PHPTAL('mytemplate.html'); + * $tpl->title = 'Welcome here'; + * $tpl->result = range(1, 100); + * ... + * echo $tpl->execute(); + * } + * catch (Exception $e) { + * echo $e; + * } + * ?> + * </code> + * + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL +{ + const XHTML = 1; + const XML = 2; + + /** + * PHPTAL Constructor. + * + * @param string $path Template file path. + */ + public function __construct($path=false) + { + $this->_path = $path; + $this->_repositories = array(); + if (defined('PHPTAL_TEMPLATE_REPOSITORY')){ + $this->_repositories[] = PHPTAL_TEMPLATE_REPOSITORY; + } + $this->_resolvers = array(); + $this->_globalContext = new StdClass(); + $this->_context = new PHPTAL_Context(); + $this->_context->setGlobal($this->_globalContext); + } + + /** + * create + * returns a new PHPTAL object + * + * @param string $path Template file path. + * @return PHPTAL + */ + public static function create($path=false) + { + return new PHPTAL($path); + } + + /** + * Clone template state and context. + */ + public function __clone() + { + $context = $this->_context; + $this->_context = clone $this->_context; + $this->_context->setParent($context); + $this->_context->setGlobal($this->_globalContext); + } + + /** + * Set template from file path. + * @param $path string + */ + public function setTemplate($path) + { + $this->_prepared = false; + $this->_functionName = null; + $this->_path = $path; + $this->_source = null; + return $this; + } + + /** + * Set template from source. + * + * Should be used only with temporary template sources. Use setTemplate() whenever possible. + * + * @param $src string The phptal template source. + * @param path string Fake and 'unique' template path. + */ + public function setSource($src, $path=false) + { + if ($path == false) + $path = '<string> '.md5($src); + + require_once PHPTAL_DIR.'PHPTAL/StringSource.php'; + $this->_source = new PHPTAL_StringSource($src, $path); + $this->_path = $path; + return $this; + } + + /** + * Specify where to look for templates. + * + * @param $rep mixed string or Array of repositories + */ + public function setTemplateRepository($rep) + { + if (is_array($rep)){ + $this->_repositories = $rep; + } + else { + $this->_repositories[] = $rep; + } + return $this; + } + + /** + * Get template repositories. + */ + public function getTemplateRepositories() + { + return $this->_repositories; + } + + /** + * Clears the template repositories. + */ + public function clearTemplateRepositories() + { + $this->_repositories = array(); + return $this; + } + + /** + * Ignore XML/XHTML comments on parsing. + * @param $bool bool + */ + public function stripComments($bool) + { + $this->_stripComments = $bool; + return $this; + } + + /** + * Set output mode + * XHTML output mode will force elements like <link/>, <meta/> and <img/>, etc. to be empty + * and threats attributes like selected, checked to be boolean attributes. + * + * XML output mode outputs XML without such modifications and is neccessary to generate RSS feeds properly. + * @param $mode int (PHPTAL::XML or PHPTAL::XHTML). + */ + public function setOutputMode($mode=PHPTAL_XHTML) + { + if ($mode != PHPTAL::XHTML && $mode != PHPTAL::XML){ + throw new PHPTAL_Exception('Unsupported output mode '.$mode); + } + $this->_outputMode = $mode; + return $this; + } + + /** + * Get output mode + */ + public function getOutputMode() + { + return $this->_outputMode; + } + + /** + * Set input and ouput encoding. + * @param $enc string example: 'UTF-8' + */ + public function setEncoding($enc) + { + $this->_encoding = $enc; + if ($this->_translator) $this->_translator->setEncoding($enc); + return $this; + } + + /** + * Get input and ouput encoding. + * @param $enc string example: 'UTF-8' + */ + public function getEncoding() + { + return $this->_encoding; + } + + /** + * Set the storage location for intermediate PHP files. The path cannot contain characters that would be interpreted by glob() (e.g. * or ?) + * @param string $path Intermediate file path. + */ + public function setPhpCodeDestination($path) + { + $this->_phpCodeDestination = rtrim($path, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR; + return $this; + } + + /** + * Get the storage location for intermediate PHP files. + */ + public function getPhpCodeDestination() + { + return $this->_phpCodeDestination; + } + + /** + * Set the file extension for intermediate PHP files. + * @param string $extension The file extension. + */ + public function setPhpCodeExtension($extension) + { + $this->_phpCodeExtension = $extension; + return $this; + } + + /** + * Get the file extension for intermediate PHP files. + */ + public function getPhpCodeExtension() + { + return $this->_phpCodeExtension; + } + + /** + * Flags whether to ignore intermediate php files and to + * reparse templates every time (if set to true). + * Don't use in production - this makes PHPTAL significantly slower. + * @param bool bool Forced reparse state. + */ + public function setForceReparse($bool) + { + $this->_forceReparse = (bool) $bool; + return $this; + } + + /** + * Get the value of the force reparse state. + */ + public function getForceReparse() + { + return $this->_forceReparse !== NULL ? $this->_forceReparse : (defined('PHPTAL_FORCE_REPARSE') && PHPTAL_FORCE_REPARSE); + } + + /** + * Set I18N translator. + * This sets encoding used by the translator, so be sure to use encoding-dependent features of the translator (e.g. addDomain) _after_ calling setTranslator. + */ + public function setTranslator(PHPTAL_TranslationService $t) + { + $this->_translator = $t; + $this->_translator->setEncoding($this->getEncoding()); + return $this; + } + + /** + * Set template pre filter. It will be called once before template is compiled. + */ + public function setPreFilter(PHPTAL_Filter $filter) + { + $this->_prefilter = $filter; + return $this; + } + + /** + * Set template post filter. It will be called every time after template generates output. + */ + public function setPostFilter(PHPTAL_Filter $filter) + { + $this->_postfilter = $filter; + return $this; + } + + /** + * Register a trigger for specified phptal:id. + * @param $id string phptal:id to look for + */ + public function addTrigger($id, PHPTAL_Trigger $trigger) + { + $this->_triggers[$id] = $trigger; + return $this; + } + + /** + * Returns trigger for specified phptal:id. + * @param $id string phptal:id + */ + public function getTrigger($id) + { + if (array_key_exists($id, $this->_triggers)){ + return $this->_triggers[$id]; + } + return null; + } + + /** + * Set a context variable. + * @param $varname string + * @param $value mixed + */ + public function __set($varname, $value) + { + $this->_context->__set($varname, $value); + } + + /** + * Set a context variable. + * @param $varname string + * @param $value mixed + */ + public function set($varname, $value) + { + $this->_context->__set($varname, $value); + return $this; + } + + /** + * Execute the template code. + * + * @return string + */ + public function execute() + { + if (!$this->_prepared) { + $this->prepare(); + } + + // includes generated template PHP code + $this->_context->__file = $this->__file; + require_once $this->getCodePath(); + $templateFunction = $this->getFunctionName(); + try { + ob_start(); + $templateFunction($this, $this->_context); + $res = ob_get_clean(); + } + catch (Exception $e){ + ob_end_clean(); + throw $e; + } + + // unshift doctype + $docType = $this->_context->__docType; + if ($docType){ + $res = $docType . "\n" . $res; + } + // unshift xml declaration + $xmlDec = $this->_context->__xmlDeclaration; + if ($xmlDec){ + $res = $xmlDec . "\n" . $res; + } + + if ($this->_postfilter != null){ + return $this->_postfilter->filter($res); + } + return $res; + } + + protected function setConfigurationFrom(PHPTAL $from) + { + // use references - this way config of both objects will be more-or-less in sync + $this->_encoding = &$from->_encoding; + $this->_outputMode = &$from->_outputMode; + $this->_stripComments = &$from->_stripComments; + $this->_forceReparse = &$from->_forceReparse; + $this->_phpCodeDestination = &$from->_phpCodeDestination; + $this->_phpCodeExtension = &$from->_phpCodeExtension; + $this->_cacheLifetime = &$from->_cacheLifetime; + $this->_cachePurgeFrequency = &$from->_cachePurgeFrequency; + $this->setTemplateRepository($from->_repositories); + array_unshift($this->_repositories, dirname($from->_source->getRealPath())); + $this->_resolvers = &$from->_resolvers; + $this->_prefilter = &$from->_prefilter; + $this->_postfilter = &$from->_postfilter; + } + + private $externalMacroTempaltesCache = array(); + + /** + * Execute a template macro. + * Should be used only from within generated template code! + * + * @param $path string Template macro path + */ + public function executeMacro($path) + { + // extract macro source file from macro name, if not source file + // found in $path, then the macro is assumed to be local + if (preg_match('/^(.*?)\/([a-z0-9_]*)$/i', $path, $m)){ + list(,$file,$macroName) = $m; + + if (isset($this->externalMacroTempaltesCache[$file])) + { + $tpl = $this->externalMacroTempaltesCache[$file]; + } + else + { + $tpl = new PHPTAL($file); + $tpl->setConfigurationFrom($this); + $tpl->prepare(); + // require PHP generated code + require_once $tpl->getCodePath(); + + $this->externalMacroTempaltesCache[$file] = $tpl; + if (count($this->externalMacroTempaltesCache) > 10) $this->externalMacroTempaltesCache = array(); // keep it small (typically only 1 or 2 external files are used) + } + + // save current file + $currentFile = $this->_context->__file; + $this->_context->__file = $tpl->__file; + + $fun = $tpl->getFunctionName() . '_' . $macroName; + if (!function_exists($fun)) throw new PHPTAL_Exception("Macro '$macroName' is not defined in $file",$this->_source->getRealPath()); + $fun($this, $this->_context); + + // restore current file + $this->_context->__file = $currentFile; + } + else + { + // call local macro + $fun = $this->getFunctionName() . '_' . trim($path); + if (!function_exists($fun)) throw new PHPTAL_Exception("Macro '$path' is not defined",$this->_source->getRealPath()); + $fun( $this, $this->_context ); + } + } + + private function setCodeFile() + { + $this->_codeFile = $this->getPhpCodeDestination() . $this->getFunctionName() . '.' . $this->getPhpCodeExtension(); + } + + /** + * Prepare template without executing it. + */ + public function prepare() + { + // clear just in case settings changed and cache is out of date + $this->externalMacroTempaltesCache = array(); + + // find the template source file + $this->findTemplate(); + $this->__file = $this->_source->getRealPath(); + $this->setCodeFile(); + + // parse template if php generated code does not exists or template + // source file modified since last generation of PHPTAL_FORCE_REPARSE + // is defined. + if ($this->getForceReparse() || !file_exists($this->_codeFile)) + { + if ($this->getCachePurgeFrequency() && mt_rand()%$this->getCachePurgeFrequency() == 0) + { + $this->cleanUpGarbage(); + } + $this->parse(); + } + $this->_prepared = true; + return $this; + } + + public function getCacheLifetime() + { + return $this->_cacheLifetime; + } + + /** + * how long compiled templates and phptal:cache files are kept, in days + */ + public function setCacheLifetime($days) + { + $this->_cacheLifetime = max(0.5,$days); + return $this; + } + + /** + * PHPTAL will scan cache and remove old files on every nth compile + * Set to 0 to disable cleanups + */ + public function setCachePurgeFrequency($n) + { + $this->_cachePurgeFrequency = (int)$n; + return $this; + } + + public function getCachePurgeFrequency() + { + return $this->_cachePurgeFrequency; + } + + + /** + * Removes all compiled templates from cache after PHPTAL_CACHE_LIFETIME days + */ + public function cleanUpGarbage() + { + $phptalCacheFilesExpire = time() - $this->getCacheLifetime() * 3600 * 24; + $upperLimit = $this->getPhpCodeDestination() . 'tpl_' . $phptalCacheFilesExpire . '_'; + $lowerLimit = $this->getPhpCodeDestination() . 'tpl_0_'; + $phptalCacheFiles = glob($this->getPhpCodeDestination() . 'tpl_*.' . $this->getPhpCodeExtension() . '*'); + + if ($phptalCacheFiles) + { + foreach($phptalCacheFiles as $index => $file) + { + if ($file > $upperLimit && substr($file,0,strlen($lowerLimit)) !== $lowerLimit) + { + unset($phptalCacheFiles[$index]); + } + } + foreach($phptalCacheFiles as $file) + { + $time = filemtime($file); + if ($time && $time < $phptalCacheFilesExpire) @unlink($file); + } + } + } + + /** + * Removes single compiled template from cache and all its fragments cached by phptal:cache. + * Must be called after setSource/setTemplate. + */ + public function cleanUpCache() + { + if (!$this->getCodePath()) + { + $this->findTemplate(); $this->setCodeFile(); + if (!$this->getCodePath()) throw new PHPTAL_Exception("No codefile"); + } + + $filename = $this->getCodePath(); + $phptalCacheFiles = glob($filename . '*'); + if ($phptalCacheFiles) foreach($phptalCacheFiles as $file) + { + if (substr($file, 0, strlen($filename)) !== $filename) continue; // safety net + @unlink($file); + } + $this->_prepared = false; + } + + /** + * Returns the path of the intermediate PHP code file. + * + * The returned file may be used to cleanup (unlink) temporary files + * generated by temporary templates or more simply for debug. + * + * @return string + */ + public function getCodePath() + { + return $this->_codeFile; + } + + /** + * Returns the generated template function name. + * @return string + */ + public function getFunctionName() + { + if (!$this->_functionName) { + $this->_functionName = 'tpl_' . $this->_source->getLastModifiedTime() . '_' . PHPTAL_VERSION . + substr(preg_replace('/[^a-zA-Z]/','',basename($this->_source->getRealPath())),0,10) . md5($this->_source->getRealPath()); + } + return $this->_functionName; + } + + /** + * Returns template translator. + * @return PHPTAL_TranslationService + */ + public function getTranslator() + { + return $this->_translator; + } + + /** + * Returns array of exceptions caught by tal:on-error attribute. + * @return array<Exception> + */ + public function getErrors() + { + return $this->_errors; + } + + /** + * Public for phptal templates, private for user. + * @access private + */ + public function addError(Exception $error) + { + array_push($this->_errors, $error); + return $this; + } + + /** + * Returns current context object. + * Use only in Triggers. + * + * @return PHPTAL_Context + */ + public function getContext() + { + return $this->_context; + } + + /** + * only for use in generated template code + * @access private + */ + public function getGlobalContext() + { + return $this->_globalContext; + } + + /** + * only for use in generated template code + * @access private + */ + public function pushContext() + { + $this->_context = $this->_context->pushContext(); + return $this->_context; + } + + /** + * only for use in generated template code + * @access private + */ + public function popContext() + { + $this->_context = $this->_context->popContext(); + return $this->_context; + } + + protected function parse() + { + require_once PHPTAL_DIR.'PHPTAL/Dom/Parser.php'; + + // instantiate the PHPTAL source parser + $parser = new PHPTAL_Dom_Parser($this->_encoding); + $parser->stripComments($this->_stripComments); + + $data = $this->_source->getData(); + $realpath = $this->_source->getRealPath(); + + if ($this->_prefilter) + $data = $this->_prefilter->filter($data); + $tree = $parser->parseString($data, $realpath); + + require_once PHPTAL_DIR.'PHPTAL/Php/CodeGenerator.php'; + $generator = new PHPTAL_Php_CodeGenerator($this->getFunctionName(), $this->_source->getRealPath()); + $generator->setEncoding($this->_encoding); + $generator->setOutputMode($this->_outputMode); + $generator->generate($tree); + + if (!@file_put_contents($this->_codeFile, $generator->getResult())) { + throw new PHPTAL_Exception('Unable to open '.$this->_codeFile.' for writing'); + } + + return $this; + } + + /** + * Search template source location. + */ + protected function findTemplate() + { + if ($this->_path == false){ + throw new PHPTAL_Exception('No template file specified'); + } + + // template source already defined + if ($this->_source != null){ + return; + } + + array_push($this->_resolvers, new PHPTAL_FileSourceResolver($this->_repositories)); + foreach ($this->_resolvers as $resolver){ + $source = $resolver->resolve($this->_path); + if ($source != null){ + $this->_source = $source; + break; + } + } + array_pop($this->_resolvers); + + if ($this->_source == null){ + throw new PHPTAL_Exception('Unable to locate template file '.$this->_path); + } + } + + protected $_prefilter = null; + protected $_postfilter = null; + + // list of template source repositories + protected $_repositories = array(); + // template path + protected $_path = null; + // template source resolvers + protected $_resolvers = array(); + // template source (only set when not working with file) + protected $_source = null; + // destination of PHP intermediate file + protected $_codeFile = null; + // php function generated for the template + protected $_functionName = null; + // set to true when template is ready for execution + protected $_prepared = false; + + // associative array of phptal:id => PHPTAL_Trigger + protected $_triggers = array(); + // i18n translator + protected $_translator = null; + + // global execution context + protected $_globalContext = null; + // current execution context + protected $_context = null; + // current template file (changes within macros) + public $__file = false; + // list of on-error caught exceptions + protected $_errors = array(); + + protected $_encoding = PHPTAL_DEFAULT_ENCODING; + protected $_outputMode = PHPTAL::XHTML; + protected $_stripComments = false; + + // configuration properties + protected $_forceReparse = NULL; + protected $_phpCodeDestination = PHPTAL_PHP_CODE_DESTINATION; + protected $_phpCodeExtension = PHPTAL_PHP_CODE_EXTENSION; + + protected $_cacheLifetime = 30; + protected $_cachePurgeFrequency = 50; +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/CommentFilter.php b/wp-content/themes/vanilla/PHPTAL/CommentFilter.php new file mode 100644 index 000000000..822b62f38 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/CommentFilter.php @@ -0,0 +1,12 @@ +<?php + +require_once PHPTAL_DIR.'PHPTAL/Filter.php'; + +class PHPTAL_CommentFilter implements PHPTAL_Filter +{ + public function filter($src){ + return preg_replace('/(<!--.*?-->)/s', '', $src); + } +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Context.php b/wp-content/themes/vanilla/PHPTAL/Context.php new file mode 100644 index 000000000..0b630c8c7 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Context.php @@ -0,0 +1,405 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +/** + * This class handles template execution context. + * @package phptal + */ +class PHPTAL_Context +{ + public static $USE_GLOBAL = false; + + public $__line = false; + public $__file = false; + public $__repeat; + public $__xmlDeclaration; + public $__docType; + public $__nothrow; + public $__translator; + + public function __construct() + { + $this->__repeat = new StdClass(); + } + + public function __clone() + { + $this->__repeat = clone($this->__repeat); + } + + public function setParent(PHPTAL_Context $parent) + { + $this->_parentContext = $parent; + } + + public function setGlobal(StdClass $globalContext) + { + $this->_globalContext = $globalContext; + } + + public function pushContext() + { + if (self::$USE_GLOBAL) return $this; + $res = clone $this; + $res->setParent($this); + return $res; + } + + public function popContext() + { + if (self::$USE_GLOBAL) return $this; + return $this->_parentContext; + } + + /** + * Set output document type if not already set. + * + * This method ensure PHPTAL uses the first DOCTYPE encountered (main + * template or any macro template source containing a DOCTYPE. + */ + public function setDocType($doctype) + { + if ($this->_parentContext != null){ + return $this->_parentContext->setDocType($doctype); + } + if ($this->_parentContext != null){ + return $this->_parentContext->setDocType($doctype); + } + if (!$this->__docType){ + $this->__docType = $doctype; + } + } + + /** + * Set output document xml declaration. + * + * This method ensure PHPTAL uses the first xml declaration encountered + * (main template or any macro template source containing an xml + * declaration). + */ + public function setXmlDeclaration($xmldec) + { + if ($this->_parentContext != null){ + return $this->_parentContext->setXmlDeclaration($xmldec); + } + if ($this->_parentContext != null){ + return $this->_parentContext->setXmlDeclaration($xmldec); + } + if (!$this->__xmlDeclaration){ + $this->__xmlDeclaration = $xmldec; + } + } + + /** + * Activate or deactivate exception throwing during unknown path + * resolution. + */ + public function noThrow($bool) + { + $this->__nothrow = $bool; + } + + /** + * Returns true if specified slot is filled. + */ + public function hasSlot($key) + { + if ($this->_parentContext) return $this->_parentContext->hasSlot($key); // setting slots in any context + return array_key_exists($key, $this->_slots); + } + + /** + * Returns the content of specified filled slot. + */ + public function getSlot($key) + { + if ($this->_parentContext) return $this->_parentContext->getSlot($key); // setting slots in any context + return $this->_slots[$key]; + } + + /** + * Fill a macro slot. + */ + public function fillSlot($key, $content) + { + if ($this->_parentContext) $this->_parentContext->fillSlot($key,$content); // setting slots in any context + else $this->_slots[$key] = $content; + } + + /** + * Push current filled slots on stack. + */ + public function pushSlots() + { + array_push($this->_slotsStack, $this->_slots); + $this->_slots = array(); + } + + /** + * Restore filled slots stack. + */ + public function popSlots() + { + $this->_slots = array_pop($this->_slotsStack); + } + + /** + * Context setter. + */ + public function __set($varname, $value) + { + if ($varname[0] == '_') + { + throw new PHPTAL_Exception('Template variable error \''.$varname.'\' must not begin with underscore'); + } + $this->$varname = $value; + } + + + + /** + * Context getter. + */ + public function __get($varname) + { + if ($varname == 'repeat') + return $this->__repeat; + + if (isset($this->$varname)){ + return $this->$varname; + } + + if (isset($this->_globalContext->$varname)){ + return $this->_globalContext->$varname; + } + + if (defined($varname)) + { + return constant($varname); + } + + if ($this->__nothrow) + return null; + + $e = sprintf('Unable to find path %s in current scope', $varname); + throw new PHPTAL_Exception($e, $this->__file, $this->__line); + } + + private $_slots = array(); + private $_slotsStack = array(); + private $_parentContext = null; + private $_globalContext = null; +} + +// emulate property_exists() function, this is slow but much better than +// isset(), use next release of PHP5 as soon as available ! +if (!function_exists('property_exists')){ + function property_exists($o, $property) + { + return array_key_exists($property, get_object_vars($o)); + } +} + + +/** + * Resolve TALES path starting from the first path element. + * + * The TALES path : object/method1/10/method2 + * will call : phptal_path($ctx->object, 'method1/10/method2') + * + * The nothrow param is used by phptal_exists() and prevent this function to + * throw an exception when a part of the path cannot be resolved, null is + * returned instead. + */ +function phptal_path($base, $path, $nothrow=false) +{//{{{ + $parts = split('/', $path); + $current = true; + + if ($base === null) + { + if ($nothrow) return null; + throw new PHPTAL_Exception("Trying to read property '$path' from NULL"); + } + + while (($current = array_shift($parts)) !== null){ + // object handling + if (is_object($base)){ + // look for method + if (method_exists($base, $current)){ + $base = $base->$current(); + continue; + } + + // look for variable + if (property_exists($base, $current)){ + $base = $base->$current; + continue; + } + + if ($base instanceof ArrayAccess && $base->offsetExists($current)) + { + $base = $base->offsetGet($current); + continue; + } + + if ($base instanceof Countable && ($current === 'length' || $current === 'size')) + { + $base = count($base); + continue; + } + + // look for isset (priority over __get) + if (method_exists($base,'__isset') && is_callable(array($base, '__isset'))) + { + if ($base->__isset($current)){ + $base = $base->$current; + continue; + } + } + // ask __get and discard if it returns null + else if (method_exists($base,'__get') && is_callable(array($base, '__get'))) + { + $tmp = $base->$current; + if (NULL !== $tmp){ + $base = $tmp; + continue; + } + } + + // magic method call + if (method_exists($base, '__call')){ + try + { + $base = $base->$current(); + continue; + } + catch(BadMethodCallException $e){} + } + + // emulate array behaviour + if (is_numeric($current) && method_exists($base, '__getAt')){ + $base = $base->__getAt($current); + continue; + } + + if ($nothrow) + return null; + + $err = 'Unable to find part "%s" in path "%s" inside '.(is_object($base)?get_class($base):gettype($base)); + $err = sprintf($err, $current, $path); + throw new PHPTAL_Exception($err); + } + + // array handling + if (is_array($base)) { + // key or index + if (array_key_exists((string)$current, $base)){ + $base = $base[$current]; + continue; + } + + // virtual methods provided by phptal + if ($current == 'length' || $current == 'size'){ + $base = count($base); + continue; + } + + if ($nothrow) + return null; + + $err = 'Unable to find array key "%s" in path "%s"'; + $err = sprintf($err, $current, $path); + throw new PHPTAL_Exception($err); + } + + // string handling + if (is_string($base)) { + // virtual methods provided by phptal + if ($current == 'length' || $current == 'size'){ + $base = strlen($base); + continue; + } + + // access char at index + if (is_numeric($current)){ + $base = $base[$current]; + continue; + } + } + + // if this point is reached, then the part cannot be resolved + + if ($nothrow) + return null; + + $err = 'Unable to find part "%s" in path "%s" with base "%s"'; + $err = sprintf($err, $current, $path, is_scalar($base)?"$base":(is_object($base)?get_class($base):gettype($base))); + throw new PHPTAL_Exception($err); + } + + return $base; +} + +function phptal_true($ctx, $path) +{ + $ctx->noThrow(true); + $res = phptal_path($ctx, $path, true); + $ctx->noThrow(false); + return !!$res; +} + +/** + * Returns true if $path can be fully resolved in $ctx context. + */ +function phptal_exists($ctx, $path) +{ + // special note: this method may requires to be extended to a full + // phptal_path() sibling to avoid calling latest path part if it is a + // method or a function... + $ctx->noThrow(true); + $res = phptal_path($ctx, $path, true); + $ctx->noThrow(false); + return $res !== NULL; +} + +function phptal_isempty($var) +{ + return $var === null || $var === false || $var === '' + || ((is_array($var) || $var instanceof Countable) && count($var)===0); +} + +function phptal_escape($var, $ent, $encoding) +{ + if (is_string($var)) { + return htmlspecialchars($var, $ent, $encoding); + } + elseif (is_object($var)) { + if ($var instanceof SimpleXMLElement) return $var->asXML(); + return htmlspecialchars($var->__toString(), $ent, $encoding); + } + elseif (is_bool($var)){ + return (int)$var; + } + return $var; +} +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Dom/Defs.php b/wp-content/themes/vanilla/PHPTAL/Dom/Defs.php new file mode 100644 index 000000000..1a529c933 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Dom/Defs.php @@ -0,0 +1,237 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +// From http://dev.zope.org/Wikis/DevSite/Projects/ZPT/TAL%20Specification%201.4 +// +// Order of Operations +// +// When there is only one TAL statement per element, the order in which +// they are executed is simple. Starting with the root element, each +// element's statements are executed, then each of its child elements is +// visited, in order, to do the same. +// +// Any combination of statements may appear on the same elements, except +// that the content and replace statements may not appear together. +// +// When an element has multiple statements, they are executed in this +// order: +// +// * define +// * condition +// * repeat +// * content or replace +// * attributes +// * omit-tag +// +// Since the on-error statement is only invoked when an error occurs, it +// does not appear in the list. +// +// The reasoning behind this ordering goes like this: You often want to set +// up variables for use in other statements, so define comes first. The +// very next thing to do is decide whether this element will be included at +// all, so condition is next; since the condition may depend on variables +// you just set, it comes after define. It is valuable be able to replace +// various parts of an element with different values on each iteration of a +// repeat, so repeat is next. It makes no sense to replace attributes and +// then throw them away, so attributes is last. The remaining statements +// clash, because they each replace or edit the statement element. +// +// If you want to override this ordering, you must do so by enclosing the +// element in another element, possibly div or span, and placing some of +// the statements on this new element. +// + +require_once PHPTAL_DIR.'PHPTAL/Namespace.php'; +require_once PHPTAL_DIR.'PHPTAL/Namespace/TAL.php'; +require_once PHPTAL_DIR.'PHPTAL/Namespace/METAL.php'; +require_once PHPTAL_DIR.'PHPTAL/Namespace/I18N.php'; +require_once PHPTAL_DIR.'PHPTAL/Namespace/PHPTAL.php'; + +/** + * PHPTAL constants. + * + * This is a pseudo singleton class, a user may decide to provide + * his own singleton instance which will then be used by PHPTAL. + * + * This behaviour is mainly usefull to remove builtin namespaces + * and provide custom ones. + * + * @package phptal.dom + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Dom_Defs +{ + public static function getInstance() + { + if (self::$_instance == null){ + self::$_instance = new PHPTAL_Dom_Defs(); + } + return self::$_instance; + } + + public static function setInstance(PHPTAL_Dom_Defs $instance) + { + self::$_instance = $instance; + } + + + public function __construct() + { + $this->_dictionary = array(); + $this->_namespaces = array(); + $this->_xmlns = array(); + } + + public function isEmptyTag($tagName) + { + return in_array(strtolower($tagName), self::$XHTML_EMPTY_TAGS); + } + + public function xmlnsToLocalName($xmlns) + { + return $this->_xmlns[$xmlns]; + } + + /** + * Returns true if the attribute is an xhtml boolean attribute. + * + * @return bool + */ + public function isBooleanAttribute($att) + { + return in_array($att, self::$XHTML_BOOLEAN_ATTRIBUTES); + } + + /** + * Returns true if the attribute is in the phptal dictionnary. + * + * @return bool + */ + public function isPhpTalAttribute($att) + { + return array_key_exists(strtolower($att), $this->_dictionary); + } + + /** + * Returns true if the attribute is a valid phptal attribute or an unknown + * attribute. + * + * Examples of valid attributes: tal:content, metal:use-slot + * Examples of invalid attributes: tal:unknown, metal:content + * + * @return bool + */ + public function isValidAttribute($att) + { + if (preg_match('/^(.*):(.*)$/', $att, $m)) { + list (,$ns,$sub) = $m; + if (array_key_exists(strtolower($ns), $this->_namespaces) + && !$this->isPhpTalAttribute($att)) { + return false; + } + } + return true; + } + + /** + * Returns true if the attribute is a phptal handled xml namespace + * declaration. + * + * Examples of handled xmlns: xmlns:tal, xmlns:metal + * + * @return bool + */ + public function isHandledXmlNs($att, $value) + { + $att = strtolower($att); + return substr($att, 0, 6) == 'xmlns:' + && array_key_exists($value, $this->_xmlns); + } + + public function getNamespaceAttribute($attName) + { + return $this->_dictionary[strtolower($attName)]; + } + + /** + * Register a PHPTAL_Namespace and its attribute into PHPTAL. + */ + public function registerNamespace(PHPTAL_Namespace $ns) + { + $nsname = strtolower($ns->name); + $this->_namespaces[$nsname] = $ns; + $this->_xmlns[$ns->xmlns] = $nsname; + foreach ($ns->getAttributes() as $name => $attribute){ + $key = $nsname.':'.strtolower($name); + $this->_dictionary[$key] = $attribute; + } + } + + private static $_instance = null; + private $_dictionary; + private $_namespaces; + private $_xmlns; + + /** + * This array contains XHTML tags that must be echoed in a <tag/> form + * instead of the <tag></tag> form. + * + * In fact, some browsers does not support the later form so PHPTAL + * ensure these tags are correctly echoed. + */ + private static $XHTML_EMPTY_TAGS = array( + 'area', + 'base', + 'basefont', + 'br', + 'col', + 'frame', + 'hr', + 'img', + 'input', + 'isindex', + 'link', + 'meta', + 'param', + ); + + /** + * This array contains XHTML boolean attributes, their value is self + * contained (ie: they are present or not). + */ + private static $XHTML_BOOLEAN_ATTRIBUTES = array( + 'checked', + 'compact', + 'declare', + 'defer', + 'disabled', + 'ismap', + 'multiple', + 'noresize', + 'noshade', + 'nowrap', + 'readonly', + 'selected', + ); +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Dom/Node.php b/wp-content/themes/vanilla/PHPTAL/Dom/Node.php new file mode 100644 index 000000000..7e3b33bd2 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Dom/Node.php @@ -0,0 +1,254 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +require_once PHPTAL_DIR.'PHPTAL/Dom/Defs.php'; +require_once PHPTAL_DIR.'PHPTAL/Php/CodeWriter.php'; +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute.php'; + +/** + * Document node abstract class. + * + * @package phptal.dom + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +abstract class PHPTAL_Dom_Node +{ + public function __construct() + { + } + + public function setSource($file, $line) + { + $this->_file = $file; + $this->_line = $line; + } + + public function getSourceLine() + { + return $this->_line; + } + + public function getSourceFile() + { + return $this->_file; + } + + private $_file; + private $_line; +} + +/** + * Node container. + * + * @package phptal.dom + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Dom_Tree extends PHPTAL_Dom_Node +{ + public function __construct() + { + parent::__construct(); + $this->_children = array(); + } + + public function addChild(PHPTAL_Dom_Node $node) + { + array_push($this->_children, $node); + } + + public function &getChildren() + { + return $this->_children; + } + + public function clearChildren() + { + $this->_children = array(); + } + + protected $_children; +} + +/** + * Document Tag representation. + * + * This is the main class used by PHPTAL because TAL is a Template Attribute + * Language, other Node kinds are (usefull) toys. + * + * @package phptal.dom + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Dom_Element extends PHPTAL_Dom_Tree +{ + private $name; + public $attributes = array(); + + public function __construct($name, $attributes) + { + if (!preg_match('/^[a-z_:][a-z0-9._:\x80-\xff-]*$/i',$name)) throw new PHPTAL_Exception("Invalid element name '$name'"); + parent::__construct(); + $this->name = $name; + $this->attributes = $attributes; + } + + public function setXmlnsState(PHPTAL_Dom_XmlnsState $state) + { + $this->_xmlns = $state; + $this->xmlns = $state; + } + + public function getName() + { + return $this->name; + } + + public function getXmlnsState() + { + return $this->_xmlns; + } + + /** Returns true if the element contains specified PHPTAL attribute. */ + public function hasAttribute($name) + { + $ns = $this->getNodePrefix(); + foreach ($this->attributes as $key=>$value){ + if ($this->_xmlns->unAliasAttribute($key) == $name){ + return true; + } + if ($ns && $this->_xmlns->unAliasAttribute("$ns:$key") == $name){ + return true; + } + } + return false; + } + + /** Returns the value of specified PHPTAL attribute. */ + public function getAttribute($name) + { + $ns = $this->getNodePrefix(); + + foreach ($this->attributes as $key=>$value){ + if ($this->_xmlns->unAliasAttribute($key) == $name){ + return $value; + } + if ($ns && $this->_xmlns->unAliasAttribute("$ns:$key") == $name){ + return $value; + } + } + return false; + } + + /** + * Returns true if this element or one of its PHPTAL attributes has some + * content to print (an empty text node child does not count). + */ + public function hasRealContent() + { + if (count($this->_children) == 0) + return false; + + if (count($this->_children) == 1){ + $child = $this->_children[0]; + if ($child instanceOf PHPTAL_Dom_Text && $child->getValue() == ''){ + return false; + } + } + + return true; + } + + private function getNodePrefix() + { + $result = false; + if (preg_match('/^(.*?):block$/', $this->name, $m)){ + list(,$result) = $m; + } + return $result; + } + + private function hasContent() + { + return count($this->_children) > 0; + } + + /** + * XMLNS aliases propagated from parent nodes and defined by this node + * attributes. + */ + protected $_xmlns; +} + +/** + * @package phptal.dom + */ +class PHPTAL_Dom_ValueNode extends PHPTAL_Dom_Node +{ + public function __construct($data) + { + $this->_value = $data; + } + + public function getValue() + { + return $this->_value; + } + + private $_value; +} + +/** + * Document text data representation. + * @package phptal.dom + */ +class PHPTAL_Dom_Text extends PHPTAL_Dom_ValueNode{} + +/** + * Preprocessor, etc... representation. + * + * @package phptal.dom + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Dom_Specific extends PHPTAL_Dom_ValueNode {} + +/** + * Comment nodes. + * @package phptal.dom + */ +class PHPTAL_Dom_Comment extends PHPTAL_Dom_ValueNode {} + +/** + * Document doctype representation. + * + * @package phptal.dom + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Dom_Doctype extends PHPTAL_Dom_ValueNode {} + +/** + * XML declaration node. + * + * @package phptal.dom + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Dom_XmlDeclaration extends PHPTAL_Dom_ValueNode {} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Dom/Parser.php b/wp-content/themes/vanilla/PHPTAL/Dom/Parser.php new file mode 100644 index 000000000..76d882474 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Dom/Parser.php @@ -0,0 +1,154 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +require_once PHPTAL_DIR.'PHPTAL/Dom/Defs.php'; +require_once PHPTAL_DIR.'PHPTAL/Dom/Node.php'; +require_once PHPTAL_DIR.'PHPTAL/Dom/XmlParser.php'; +require_once PHPTAL_DIR.'PHPTAL/Dom/XmlnsState.php'; +require_once PHPTAL_DIR.'PHPTAL/Php/Tales.php'; + +/** + * Template parser. + * + * @package phptal.dom + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Dom_Parser extends PHPTAL_XmlParser +{ + const ERR_DOCUMENT_END_STACK_NOT_EMPTY = "Not all elements were closed before end of the document (element stack not empty)"; + const ERR_UNSUPPORTED_ATTRIBUTE = "Unsupported attribute '%s'"; + const ERR_ELEMENT_CLOSE_MISMATCH = "Tag closure mismatch, expected '%s' but was '%s'"; + + public function __construct($input_encoding = 'UTF-8') + { + parent::__construct($input_encoding); + $this->_xmlns = new PHPTAL_Dom_XmlnsState(); + } + + public function getXmlnsState() + { + return $this->_xmlns; + } + + public function stripComments($b) + { + $this->_stripComments = $b; + } + + public function parseString($src, $filename = '<string>') + { + parent::parseString($src, $filename); + return $this->_tree; + } + + public function parseFile($path) + { + parent::parseFile($path); + return $this->_tree; + } + + // ~~~~~ XmlParser implementation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + public function onDocumentStart() + { + $this->_tree = new PHPTAL_Dom_Tree(); + $this->_tree->setSource($this->getSourceFile(), $this->getLineNumber()); + $this->_stack = array(); + $this->_current = $this->_tree; + } + + public function onDocumentEnd() + { + if (count($this->_stack) > 0) { + $this->raiseError(self::ERR_DOCUMENT_END_STACK_NOT_EMPTY); + } + } + + public function onDocType($doctype) + { + $this->pushNode(new PHPTAL_Dom_DocType($doctype)); + } + + public function onXmlDecl($decl) + { + $this->pushNode(new PHPTAL_Dom_XmlDeclaration($decl)); + } + + public function onComment($data) + { + if ($this->_stripComments) + return; + $this->pushNode(new PHPTAL_Dom_Comment($data)); + } + + public function onSpecific($data) + { + $this->pushNode(new PHPTAL_Dom_Specific($data)); + } + + public function onElementStart($name, $attributes) + { + $this->_xmlns = PHPTAL_Dom_XmlnsState::newElement($this->_xmlns, $attributes); + + foreach ($attributes as $key=>$value) { + if (!$this->_xmlns->isValidAttribute($key)) { + $this->raiseError(self::ERR_UNSUPPORTED_ATTRIBUTE, $key); + } + } + + $node = new PHPTAL_Dom_Element($name, $attributes); + $node->setXmlnsState($this->getXmlnsState()); + $this->pushNode($node); + array_push($this->_stack, $this->_current); + $this->_current = $node; + } + + public function onElementData($data) + { + $this->pushNode(new PHPTAL_Dom_Text($data)); + } + + public function onElementClose($name) + { + if (!$this->_current instanceof PHPTAL_Dom_Element) $this->raiseError("Found closing tag for '$name' where there are no open tags"); + if ($this->_current->getName() != $name) { + $this->raiseError(self::ERR_ELEMENT_CLOSE_MISMATCH, $this->_current->getName(), $name); + } + $this->_current = array_pop($this->_stack); + if ($this->_current instanceOf PHPTAL_Dom_Element) + $this->_xmlns = $this->_current->getXmlnsState(); + } + + private function pushNode(PHPTAL_Dom_Node $node) + { + $node->setSource($this->getSourceFile(), $this->getLineNumber()); + $this->_current->addChild($node); + } + + private $_tree; /* PHPTAL_Dom_Parser_NodeTree */ + private $_stack; /* array<PHPTAL_Dom_Parser_Node> */ + private $_current; /* PHPTAL_Dom_Parser_Node */ + private $_xmlns; /* PHPTAL_Dom_Parser_XmlnsState */ + private $_stripComments = false; +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Dom/XmlParser.php b/wp-content/themes/vanilla/PHPTAL/Dom/XmlParser.php new file mode 100644 index 000000000..8f6c30c95 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Dom/XmlParser.php @@ -0,0 +1,386 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +/** + * Simple sax like xml parser for PHPTAL. + * + * Because PHP Xml parser libraries tends to fail giving a real xml document + * representation (at the time this file was created, it was impossible to + * retrieve doctypes, xml declaration, problem with comments and CDATA) this + * parser was created and can be manipulated to accept some user errors + * like < and < in attribute values or inside text nodes. + * + * @package phptal + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + * @see PHPTAL_Dom_Parser + */ +abstract class PHPTAL_XmlParser +{ + // available parser states + const ST_ROOT = 0; + const ST_TEXT = 1; + const ST_LT = 2; + const ST_TAG_NAME = 3; + const ST_TAG_CLOSE = 4; + const ST_TAG_SINGLE = 5; + const ST_TAG_ATTRIBUTES = 6; + const ST_CDATA = 7; + const ST_COMMENT = 8; + const ST_DOCTYPE = 9; + const ST_XMLDEC = 15; + const ST_PREPROC = 10; + const ST_ATTR_KEY = 11; + const ST_ATTR_EQ = 12; + const ST_ATTR_QUOTE = 13; + const ST_ATTR_VALUE = 14; + + // exceptions error messages + const ERR_CHARS_BEFORE_DOC_START = + "Characters found before the begining of the document!"; + const ERR_EXPECT_VALUE_QUOTE = + "Unexpected '%s' character, expecting attribute single or double quote"; + + const BOM_STR = "\xef\xbb\xbf"; + + + static $state_names = array( + self::ST_ROOT => 'root node', + self::ST_TEXT => 'text', + self::ST_LT => 'start of tag', + self::ST_TAG_NAME => 'tag name', + self::ST_TAG_CLOSE => 'closing tag', + self::ST_TAG_SINGLE => 'self-closing tag', + self::ST_TAG_ATTRIBUTES => 'tag', + self::ST_CDATA => 'CDATA', + self::ST_COMMENT => 'comment', + self::ST_DOCTYPE => 'doctype', + self::ST_XMLDEC => 'XML declaration', + self::ST_PREPROC => 'preprocessor directive', + self::ST_ATTR_KEY => 'attribute name', + self::ST_ATTR_EQ => 'attribute value', + self::ST_ATTR_QUOTE => 'quoted attribute value', + self::ST_ATTR_VALUE => 'unquoted attribute value', + ); + + public function __construct() + { + $this->_file = "<string>"; + } + + public function parseFile($src) + { + if (!file_exists($src)) { + throw new PHPTAL_Exception("file $src not found"); + } + $this->parseString(file_get_contents($src), $src); + } + + public function parseString($src, $filename = '<string>') + { + $this->_file = $filename; + + // remove BOM (utf8 byte order mark)... + if (substr($src,0,3) == self::BOM_STR){ + $src = substr($src, 3); + } + + $this->_line = 1; + $state = self::ST_ROOT; + $mark = 0; + $len = strlen($src); + + $quoteStyle = '"'; + $tagname = ""; + $attribute = ""; + $attributes = array(); + + $customDoctype = false; + + $this->onDocumentStart(); + for ($i=0; $i<$len; $i++) { + $c = $src[$i]; + + if ($c == "\n") $this->_line++; + + switch ($state) { + case self::ST_ROOT: + if ($c == '<') { + $mark = $i; // mark tag start + $state = self::ST_LT; + } + else if (!self::isWhiteChar($c)) { + $this->raiseError(self::ERR_CHARS_BEFORE_DOC_START); + } + break; + + case self::ST_TEXT: + if ($c == '<') { + if ($mark != $i) { + $this->onElementData(substr($src, $mark, $i-$mark)); + } + $mark = $i; + $state = self::ST_LT; + } + break; + + case self::ST_LT: + if ($c == '/') { + $mark = $i+1; + $state = self::ST_TAG_CLOSE; + } + else if ($c == '?' and substr($src, $i, 4) == '?xml') { + $state = self::ST_XMLDEC; + } + else if ($c == '?') { + $state = self::ST_PREPROC; + } + else if ($c == '!' and substr($src, $i, 3) == '!--') { + $state = self::ST_COMMENT; + } + else if ($c == '!' and substr($src, $i, 8) == '![CDATA[') { + $state = self::ST_CDATA; + } + else if ($c == '!' and substr($src, $i, 8) == '!DOCTYPE') { + $state = self::ST_DOCTYPE; + } + else if (!self::isAlpha($c)) { + $state = self::ST_TEXT; + } + else { + $mark = $i; // mark node name start + $attributes = array(); + $attribute = ""; + $state = self::ST_TAG_NAME; + } + break; + + case self::ST_TAG_NAME: + if (self::isWhiteChar($c)) { + $tagname = substr($src, $mark, $i-$mark); + $state = self::ST_TAG_ATTRIBUTES; + } + else if ($c == '/') { + $tagname = substr($src, $mark, $i-$mark); + $state = self::ST_TAG_SINGLE; + } + else if ($c == '>') { + $tagname = substr($src, $mark, $i-$mark); + $mark = $i+1; // mark text start + $state = self::ST_TEXT; + $this->onElementStart($tagname, $attributes); + } + break; + + case self::ST_TAG_CLOSE: + if ($c == '>') { + $tagname = rtrim(substr($src, $mark, $i-$mark)); + $this->onElementClose($tagname); + $mark = $i+1; // mark text start + $state = self::ST_TEXT; + } + break; + + case self::ST_TAG_SINGLE: + if ($c != '>') { + // error + } + $mark = $i+1; // mark text start + $state = self::ST_TEXT; + $this->onElementStart($tagname, $attributes); + $this->onElementClose($tagname); + break; + + case self::ST_TAG_ATTRIBUTES: + if ($c == '>') { + $mark = $i+1; // mark text start + $state = self::ST_TEXT; + $this->onElementStart($tagname, $attributes); + } + else if ($c == '/') { + $state = self::ST_TAG_SINGLE; + } + else if (self::isWhiteChar($c)) { + } + else { + $mark = $i; // mark attribute key start + $state = self::ST_ATTR_KEY; + } + break; + + case self::ST_COMMENT: + if ($c == '>' and substr($src, $i-2, 2) == '--') { + $this->onComment(substr($src, $mark, $i-$mark+1)); + $mark = $i+1; // mark text start + $state = self::ST_TEXT; + } + break; + + case self::ST_CDATA: + if ($c == '>' and substr($src, $i-2, 2) == ']]') { + $this->onSpecific(substr($src, $mark, $i-$mark+1)); + $mark = $i+1; // mark text start + $state = self::ST_TEXT; + } + break; + + case self::ST_XMLDEC: + if ($c == '?' && substr($src, $i, 2) == '?>') { + $this->onXmlDecl(substr($src, $mark, $i-$mark+2)); + $i++; // skip '>' + $mark = $i+1; // mark text start + $state = self::ST_TEXT; + } + break; + + case self::ST_DOCTYPE: + if ($c == '[') { + $customDoctype = true; + } + else if ($customDoctype && $c == '>' && substr($src, $i-1, 2) == ']>'){ + $customDoctype = false; + $this->onDocType(substr($src, $mark, $i-$mark+1)); + $mark = $i+1; // mark text start + $state = self::ST_TEXT; + } + else if (!$customDoctype && $c == '>') { + $customDoctype = false; + $this->onDocType(substr($src, $mark, $i-$mark+1)); + $mark = $i+1; // mark text start + $state = self::ST_TEXT; + } + break; + + case self::ST_PREPROC: + if ($c == '>' and $src[$i-1] == '?') { + $this->onSpecific(substr($src, $mark, $i-$mark+1)); + $mark = $i+1; // mark text start + $state = self::ST_TEXT; + } + break; + + case self::ST_ATTR_KEY: + if (self::isWhiteChar($c)) { + $attribute = substr($src, $mark, $i-$mark); + $state = self::ST_ATTR_EQ; + } + else if ($c == '=') { + $attribute = substr($src, $mark, $i-$mark); + $state = self::ST_ATTR_VALUE; + } + break; + + case self::ST_ATTR_EQ: + if ($c == '=') { + $state = self::ST_ATTR_VALUE; + } + break; + + case self::ST_ATTR_VALUE: + if (self::isWhiteChar($c)){ + } + else if ($c == '"' or $c == '\'') { + $quoteStyle = $c; + $state = self::ST_ATTR_QUOTE; + $mark = $i+1; // mark attribute real value start + } + else { + $err = self::ERR_EXPECT_VALUE_QUOTE; + $err = sprintf($err, $c); + $this->raiseError($err); + } + break; + + case self::ST_ATTR_QUOTE: + if ($c == $quoteStyle) { + if (isset($attributes[$attribute])) $this->raiseError("Attribute '$attribute' on '$tagname' is defined more than once"); + $attributes[$attribute] = substr($src, $mark, $i-$mark); + $state = self::ST_TAG_ATTRIBUTES; + } + break; + } + } + + if ($state == self::ST_TEXT) // allows text past root node, which is in violation of XML spec + { + if ($i > $mark) + { + $text = substr($src, $mark, $i-$mark); + //if (!ctype_space($text)) $this->onElementData($text); + if (!ctype_space($text)) $this->raiseError("Characters found after end of the root element"); + } + } + else + { + throw new PHPTAL_Exception("Finished document in unexpected state: ".self::$state_names[$state]." is not finished"); + } + + $this->onDocumentEnd(); + } + + public function getSourceFile() + { + return $this->_file; + } + + public function getLineNumber() + { + return $this->_line; + } + + public static function isWhiteChar($c) + { + return strpos(" \t\n\r\0", $c) !== false; + } + + public static function isAlpha($c) + { + $char = strtolower($c); + return ($char >= 'a' && $char <= 'z'); + } + + public abstract function onDocType($doctype); + public abstract function onXmlDecl($decl); + public abstract function onSpecific($data); + public abstract function onComment($data); + public abstract function onElementStart($name, $attributes); + public abstract function onElementClose($name); + public abstract function onElementData($data); + public abstract function onDocumentStart(); + public abstract function onDocumentEnd(); + + protected function raiseError($errFmt) + { + $args = func_get_args(); + $errStr = call_user_func_array('sprintf', $args); + + $str = "%s error: %s in %s:%d"; + $str = sprintf($str, get_class($this), $errStr, $this->_file, $this->_line); + throw new PHPTAL_Exception($str); + } + + private $_file; + private $_line; + private $_source; +} + + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Dom/XmlnsState.php b/wp-content/themes/vanilla/PHPTAL/Dom/XmlnsState.php new file mode 100644 index 000000000..782e84c33 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Dom/XmlnsState.php @@ -0,0 +1,98 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +/** + * Stores XMLNS aliases fluctuation in the xml flow. + * + * This class is used to bind a PHPTAL namespace to an alias, for example using + * xmlns:t="http://xml.zope.org/namespaces/tal" and later use t:repeat instead + * of tal:repeat. + * + * @package phptal.dom + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Dom_XmlnsState +{ + /** Create a new XMLNS state inheriting provided aliases. */ + public function __construct($aliases = array()) + { + assert(is_array($aliases)); + $this->_aliases = $aliases; + } + + /** Returns true if $attName is a valid attribute name, false otherwise. */ + public function isValidAttribute($attName) + { + $unaliased = $this->unAliasAttribute($attName); + return PHPTAL_Dom_Defs::getInstance()->isValidAttribute($unaliased); + } + + /** Returns true if $attName is a PHPTAL attribute, false otherwise. */ + public function isPhpTalAttribute($attName) + { + $unaliased = $this->unAliasAttribute($attName); + return PHPTAL_Dom_Defs::getInstance()->isPhpTalAttribute($unaliased); + } + + /** Returns the unaliased name of specified attribute. */ + public function unAliasAttribute($attName) + { + if (count($this->_aliases) == 0) + return $attName; + + $result = $attName; + foreach ($this->_aliases as $alias => $real){ + $result = str_replace("$alias:", "$real:", $result); + } + return $result; + } + + /** + * Returns a new XmlnsState inheriting of $currentState if $nodeAttributes contains + * xmlns attributes, returns $currentState otherwise. + * + * This method is used by the PHPTAL parser to keep track of xmlns fluctuation for + * each encountered node. + */ + public static function newElement(PHPTAL_Dom_XmlnsState $currentState, $nodeAttributes) + { + $aliases = array(); + foreach ($nodeAttributes as $att => $value){ + if (PHPTAL_Dom_Defs::getInstance()->isHandledXmlNs($att, $value)){ + preg_match('/^xmlns:(.*?)$/', $att, $m); + list(,$alias) = $m; + $aliases[$alias] = PHPTAL_Dom_Defs::getInstance()->xmlnsToLocalName($value); + } + } + if (count($aliases) > 0){ + // inherit aliases with maybe an overwrite + $aliases = array_merge($currentState->_aliases, $aliases); + return new PHPTAL_Dom_XmlnsState($aliases); + } + return $currentState; + } + + private $_aliases; +} + + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Exception.php b/wp-content/themes/vanilla/PHPTAL/Exception.php new file mode 100644 index 000000000..b2e262710 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Exception.php @@ -0,0 +1,65 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +/** + * @package phptal + */ +class PHPTAL_Exception extends Exception +{ + public $srcFile; + public $srcLine; + + public function __construct($msg, $srcFile=false, $srcLine=false) + { + parent::__construct($msg); + $this->srcFile = $srcFile; + $this->srcLine = $srcLine; + } + + public function __toString() + { + if (empty($this->srcFile)){ + return parent::__toString(); + } + $res = sprintf('From %s around line %d'."\n", $this->srcFile, $this->srcLine); + $res .= parent::__toString(); + return $res; + } + + public static function formatted($format /*, ...*/) + { + $args = func_get_args(); + $msg = call_user_func('sprintf', $args); + return new PHPTAL_Exception($format); + } + + /** + * set new source line/file only if one hasn't been set previously + */ + public function hintSrcPosition($srcFile, $srcLine) + { + if ($srcFile && $this->srcFile === false) $this->srcFile = $srcFile; + if ($srcLine && $this->srcLine === false) $this->srcLine = $srcLine; + } +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/FileSource.php b/wp-content/themes/vanilla/PHPTAL/FileSource.php new file mode 100644 index 000000000..246db0019 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/FileSource.php @@ -0,0 +1,64 @@ +<?php + +require_once PHPTAL_DIR.'PHPTAL/Source.php'; +require_once PHPTAL_DIR.'PHPTAL/SourceResolver.php'; + +/** + * @package phptal + */ +class PHPTAL_FileSource implements PHPTAL_Source +{ + public function __construct($path) + { + $this->_path = realpath($path); + if ($this->_path === false) throw new PHPTAL_Exception("Unable to normalize path '$path'"); + } + + public function getRealPath() + { + return $this->_path; + } + + public function getLastModifiedTime() + { + return filemtime($this->_path); + } + + public function getData() + { + return file_get_contents($this->_path); + } + + private $_path; +} + +/** + * @package phptal + */ +class PHPTAL_FileSourceResolver implements PHPTAL_SourceResolver +{ + public function __construct($repositories) + { + $this->_repositories = $repositories; + } + + public function resolve($path) + { + foreach ($this->_repositories as $repository){ + $file = $repository . DIRECTORY_SEPARATOR . $path; + if (file_exists($file)){ + return new PHPTAL_FileSource($file); + } + } + + if (file_exists($path)){ + return new PHPTAL_FileSource($path); + } + + return null; + } + + private $_repositories; +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Filter.php b/wp-content/themes/vanilla/PHPTAL/Filter.php new file mode 100644 index 000000000..36dee6bfb --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Filter.php @@ -0,0 +1,31 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +/** + * @package phptal + */ +interface PHPTAL_Filter +{ + public function filter($str); +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/GetTextTranslator.php b/wp-content/themes/vanilla/PHPTAL/GetTextTranslator.php new file mode 100644 index 000000000..53e2aaa81 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/GetTextTranslator.php @@ -0,0 +1,143 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +require_once PHPTAL_DIR.'PHPTAL/TranslationService.php'; + +/** + * PHPTAL_TranslationService gettext implementation. + * + * Because gettext is the most common translation library in use, this + * implementation is shipped with the PHPTAL library. + * + * Please refer to the PHPTAL documentation for usage examples. + * + * @package phptal + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_GetTextTranslator implements PHPTAL_TranslationService +{ + public function __construct() + { + if (!function_exists('gettext')) throw new PHPTAL_Exception("Gettext not installed"); + $this->useDomain("messages"); // PHP bug #21965 + } + + private $_vars = array(); + private $_currentDomain; + private $_encoding = 'UTF-8'; + private $_canonicalize = false; + + public function setEncoding($enc) + { + $this->_encoding = $enc; + } + + /** + * if true, all non-ASCII characters in keys will be converted to C<xxx> form. This impacts performance. + * by default keys will be passed to gettext unmodified. + */ + public function setCanonicalize($bool) + { + $this->_canonicalize = $bool; + } + + public function setLanguage() + { + $langs = func_get_args(); + foreach ($langs as $langCode){ + putenv("LANG=$langCode"); + putenv("LC_ALL=$langCode"); + putenv("LANGUAGE=$langCode"); + if (setlocale(LC_ALL, $langCode)) { + return; + } + } + + $err = sprintf('Language(s) code(s) "%s" not supported by your system', join(',', $langs)); + throw new PHPTAL_Exception($err); + } + + /** + * encoding must be set before calling addDomain + */ + public function addDomain($domain, $path='./locale/') + { + bindtextdomain($domain, $path); + if ($this->_encoding){ + bind_textdomain_codeset($domain, $this->_encoding); + } + $this->useDomain($domain); + } + + public function useDomain($domain) + { + $old = $this->_currentDomain; + $this->_currentDomain = $domain; + textdomain($domain); + return $old; + } + + public function setVar($key, $value) + { + $this->_vars[$key] = $value; + } + + public function translate($key, $htmlencode=true) + { + if ($this->_canonicalize) $key = self::_canonicalizeKey($key); + + $value = gettext($key); + + if ($htmlencode){ + $value = @htmlspecialchars($value, ENT_QUOTES, $this->_encoding); // silence unsupported encoding error for ISO-8859-x, which doesn't matter. + } + while (preg_match('/\${(.*?)\}/sm', $value, $m)){ + list($src,$var) = $m; + if (!array_key_exists($var, $this->_vars)){ + $err = sprintf('Interpolation error, var "%s" not set', $var); + throw new PHPTAL_Exception($err); + } + $value = str_replace($src, $this->_vars[$var], $value); + } + return $value; + } + + static function _canonicalizeKey($key_) + { + $result = ""; + $key_ = trim($key_); + $key_ = str_replace("\n", "", $key_); + $key_ = str_replace("\r", "", $key_); + for ($i = 0; $i<strlen($key_); $i++){ + $c = $key_[$i]; + $o = ord($c); + if ($o < 5 || $o > 127){ + $result .= 'C<'.$o.'>'; + } + else { + $result .= $c; + } + } + return $result; + } +} + diff --git a/wp-content/themes/vanilla/PHPTAL/LICENSE.TXT b/wp-content/themes/vanilla/PHPTAL/LICENSE.TXT new file mode 100644 index 000000000..d3a38e51b --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/LICENSE.TXT @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + <one line to give the library's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + <signature of Ty Coon>, 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/wp-content/themes/vanilla/PHPTAL/Namespace.php b/wp-content/themes/vanilla/PHPTAL/Namespace.php new file mode 100644 index 000000000..a249b4ff7 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Namespace.php @@ -0,0 +1,163 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +/** + * @package phptal + */ +abstract class PHPTAL_NamespaceAttribute +{ + /** + * @param $name string The attribute name + * @param $priority int Attribute execution priority + */ + public function __construct($name, $priority) + { + $this->_name = $name; + $this->_priority = $priority; + } + + /** + * @return string + */ + public function getName() + { + return $this->_name; + } + + public function getFullName() + { + return $this->_namespace->getName() . ':' . $this->_name; + } + + public function getPriority(){ return $this->_priority; } + public function getNamespace(){ return $this->_namespace; } + public function setNamespace(PHPTAL_Namespace $ns){ $this->_namespace = $ns; } + + public function createAttributeHandler(PHPTAL_Php_Element $tag, $expression) + { + return $this->_namespace->createAttributeHandler($this, $tag, $expression); + } + + private $_name; /* Attribute name without the namespace: prefix */ + private $_priority; /* [0 - 1000] */ + private $_namespace; /* PHPTAL_Namespace */ +} + +/** + * @package phptal + */ +class PHPTAL_NamespaceAttributeSurround extends PHPTAL_NamespaceAttribute +{ + public function __construct($name, $priority) + { + parent::__construct($name, $priority); + } +} + +/** + * @package phptal + */ +class PHPTAL_NamespaceAttributeReplace extends PHPTAL_NamespaceAttribute +{ + public function __construct($name, $priority) + { + parent::__construct($name, $priority); + } +} + +/** + * @package phptal + */ +class PHPTAL_NamespaceAttributeContent extends PHPTAL_NamespaceAttribute +{ + public function __construct($name, $priority) + { + parent::__construct($name, $priority); + } +} + +/** + * @package phptal + */ +abstract class PHPTAL_Namespace +{ + public $xmlns; + public $name; + + public function __construct($name, $xmlns) + { + $this->_attributes = array(); + $this->name = $name; + $this->xmlns = $xmlns; + } + + public function getName() + { + return $this->name; + } + + public function hasAttribute($attributeName) + { + return array_key_exists(strtolower($attributeName), $this->_attributes); + } + + public function getAttribute($attributeName) + { + return $this->_attributes[strtolower($attributeName)]; + } + + public function addAttribute(PHPTAL_NamespaceAttribute $attribute) + { + $attribute->setNamespace($this); + $this->_attributes[strtolower($attribute->getName())] = $attribute; + } + + public function getAttributes() + { + return $this->_attributes; + } + + abstract public function createAttributeHandler(PHPTAL_NamespaceAttribute $att, PHPTAL_Php_Element $tag, $expression); + + protected $_attributes; +} + +/** + * @package phptal + */ +class PHPTAL_BuiltinNamespace extends PHPTAL_Namespace +{ + public function createAttributeHandler(PHPTAL_NamespaceAttribute $att, PHPTAL_Php_Element $tag, $expression) + { + $name = $att->getName(); + $name = str_replace('-', '', $name); + + $class = 'PHPTAL_Php_Attribute_'.$this->getName().'_'.$name; + $result = new $class(); + $result->tag = $tag; + $result->name = strtoupper($att->getFullName()); + $result->expression = $expression; + return $result; + } +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Namespace/I18N.php b/wp-content/themes/vanilla/PHPTAL/Namespace/I18N.php new file mode 100644 index 000000000..1a3cc18f6 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Namespace/I18N.php @@ -0,0 +1,28 @@ +<?php + +require_once PHPTAL_DIR.'PHPTAL/Dom/Defs.php'; +require_once PHPTAL_DIR.'PHPTAL/Namespace.php'; + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute/I18N/Translate.php'; +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute/I18N/Name.php'; +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute/I18N/Domain.php'; +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute/I18N/Attributes.php'; + +/** + * @package phptal.namespace + */ +class PHPTAL_Namespace_I18N extends PHPTAL_BuiltinNamespace +{ + public function __construct() + { + parent::__construct('i18n', 'http://xml.zope.org/namespaces/i18n'); + $this->addAttribute(new PHPTAL_NamespaceAttributeContent('translate', 5)); + $this->addAttribute(new PHPTAL_NamespaceAttributeSurround('name', 5)); + $this->addAttribute(new PHPTAL_NamespaceAttributeSurround('attributes', 10)); + $this->addAttribute(new PHPTAL_NamespaceAttributeSurround('domain', 3)); + } +} + +PHPTAL_Dom_Defs::getInstance()->registerNamespace(new PHPTAL_Namespace_I18N()); + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Namespace/METAL.php b/wp-content/themes/vanilla/PHPTAL/Namespace/METAL.php new file mode 100644 index 000000000..dd64a6c87 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Namespace/METAL.php @@ -0,0 +1,28 @@ +<?php + +require_once PHPTAL_DIR.'PHPTAL/Dom/Defs.php'; +require_once PHPTAL_DIR.'PHPTAL/Namespace.php'; + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute/METAL/DefineMacro.php'; +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute/METAL/UseMacro.php'; +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute/METAL/DefineSlot.php'; +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute/METAL/FillSlot.php'; + +/** + * @package phptal.namespace + */ +class PHPTAL_Namespace_METAL extends PHPTAL_BuiltinNamespace +{ + public function __construct() + { + parent::__construct('metal', 'http://xml.zope.org/namespaces/metal'); + $this->addAttribute(new PHPTAL_NamespaceAttributeSurround('define-macro', 1)); + $this->addAttribute(new PHPTAL_NamespaceAttributeReplace('use-macro', 9)); + $this->addAttribute(new PHPTAL_NamespaceAttributeSurround('define-slot', 9)); + $this->addAttribute(new PHPTAL_NamespaceAttributeSurround('fill-slot', 9)); + } +} + +PHPTAL_Dom_Defs::getInstance()->registerNamespace(new PHPTAL_Namespace_METAL()); + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Namespace/PHPTAL.php b/wp-content/themes/vanilla/PHPTAL/Namespace/PHPTAL.php new file mode 100644 index 000000000..b458f7a59 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Namespace/PHPTAL.php @@ -0,0 +1,28 @@ +<?php + +require_once PHPTAL_DIR.'PHPTAL/Dom/Defs.php'; +require_once PHPTAL_DIR.'PHPTAL/Namespace.php'; + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute/PHPTAL/Tales.php'; +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute/PHPTAL/Debug.php'; +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute/PHPTAL/Id.php'; +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute/PHPTAL/Cache.php'; + +/** + * @package phptal.namespace + */ +class PHPTAL_Namespace_PHPTAL extends PHPTAL_BuiltinNamespace +{ + public function __construct() + { + parent::__construct('phptal', 'http://xml.zope.org/namespaces/phptal'); + $this->addAttribute(new PHPTAL_NamespaceAttributeSurround('tales', -1)); + $this->addAttribute(new PHPTAL_NamespaceAttributeSurround('debug', -2)); + $this->addAttribute(new PHPTAL_NamespaceAttributeSurround('id', 7)); + $this->addAttribute(new PHPTAL_NamespaceAttributeSurround('cache', -3)); + } +} + +PHPTAL_Dom_Defs::getInstance()->registerNamespace(new PHPTAL_Namespace_PHPTAL()); + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Namespace/TAL.php b/wp-content/themes/vanilla/PHPTAL/Namespace/TAL.php new file mode 100644 index 000000000..57916fc53 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Namespace/TAL.php @@ -0,0 +1,37 @@ +<?php + +require_once PHPTAL_DIR.'PHPTAL/Namespace.php'; + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute/TAL/Comment.php'; +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute/TAL/Replace.php'; +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute/TAL/Content.php'; +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute/TAL/Condition.php'; +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute/TAL/Attributes.php'; +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute/TAL/Repeat.php'; +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute/TAL/Define.php'; +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute/TAL/OnError.php'; +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute/TAL/OmitTag.php'; + +/** + * @package phptal.namespace + */ +class PHPTAL_Namespace_TAL extends PHPTAL_BuiltinNamespace +{ + public function __construct() + { + parent::__construct('tal', 'http://xml.zope.org/namespaces/tal'); + $this->addAttribute(new PHPTAL_NamespaceAttributeSurround('define', 4)); + $this->addAttribute(new PHPTAL_NamespaceAttributeSurround('condition', 6)); + $this->addAttribute(new PHPTAL_NamespaceAttributeSurround('repeat', 8)); + $this->addAttribute(new PHPTAL_NamespaceAttributeContent('content', 11)); + $this->addAttribute(new PHPTAL_NamespaceAttributeReplace('replace', 9)); + $this->addAttribute(new PHPTAL_NamespaceAttributeSurround('attributes', 9)); + $this->addAttribute(new PHPTAL_NamespaceAttributeSurround('omit-tag', 0)); + $this->addAttribute(new PHPTAL_NamespaceAttributeSurround('comment', 12)); + $this->addAttribute(new PHPTAL_NamespaceAttributeSurround('on-error', 2)); + } +} + +PHPTAL_Dom_Defs::getInstance()->registerNamespace(new PHPTAL_Namespace_TAL()); + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Attribute.php b/wp-content/themes/vanilla/PHPTAL/Php/Attribute.php new file mode 100644 index 000000000..00f701ef1 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Attribute.php @@ -0,0 +1,98 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +require_once PHPTAL_DIR.'PHPTAL/Dom/Node.php'; + +/** + * Base class for all PHPTAL attributes. + * + * Attributes are first ordered by PHPTAL then called depending on their + * priority before and after the element printing. + * + * An attribute must implements start() and end(). + * + * @package phptal.php + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +abstract class PHPTAL_Php_Attribute +{ + const ECHO_TEXT = 'text'; + const ECHO_STRUCTURE = 'structure'; + + /** Attribute name (ie: 'tal:content'). */ + public $name; + /** Attribute value specified by the element. */ + public $expression; + /** Element using this attribute (xml node). */ + public $tag; + + /** Called before element printing. */ + public abstract function start(); + /** Called after element printing. */ + public abstract function end(); + + /** + * Remove structure|text keyword from expression and stores it for later + * doEcho() usage. + * + * $expression = 'stucture my/path'; + * $expression = $this->extractEchoType($expression); + * + * ... + * + * $this->doEcho($code); + */ + protected function extractEchoType($expression) + { + $echoType = self::ECHO_TEXT; + $expression = trim($expression); + if (preg_match('/^(text|structure)\s+(.*?)$/ism', $expression, $m)) { + list(, $echoType, $expression) = $m; + } + $this->_echoType = strtolower($echoType); + return trim($expression); + } + + protected function doEcho($code) + { + if ($this->_echoType == self::ECHO_TEXT) + $this->tag->generator->doEcho($code); + else + $this->tag->generator->doEchoRaw($code); + } + + protected function parseSetExpression($exp) + { + $exp = trim($exp); + // (dest) (value) + if (preg_match('/^([a-z0-9:\-_]+)\s+(.*?)$/i', $exp, $m)){ + array_shift($m); + return $m; + } + // (dest) + return array($exp, null); + } + + protected $_echoType = PHPTAL_Php_Attribute::ECHO_TEXT; +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Attributes.php b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Attributes.php new file mode 100644 index 000000000..2d5c923ef --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Attributes.php @@ -0,0 +1,107 @@ +<?php + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute.php'; + +// i18n:attributes +// +// This attribute will allow us to translate attributes of HTML tags, such +// as the alt attribute in the img tag. The i18n:attributes attribute +// specifies a list of attributes to be translated with optional message +// IDs? for each; if multiple attribute names are given, they must be +// separated by semi-colons. Message IDs? used in this context must not +// include whitespace. +// +// Note that the value of the particular attributes come either from the +// HTML attribute value itself or from the data inserted by tal:attributes. +// +// If an attibute is to be both computed using tal:attributes and translated, +// the translation service is passed the result of the TALES expression for +// that attribute. +// +// An example: +// +// <img src="http://foo.com/logo" alt="Visit us" +// tal:attributes="alt here/greeting" +// i18n:attributes="alt" +// /> +// +// +// In this example, let tal:attributes set the value of the alt attribute to +// the text "Stop by for a visit!". This text will be passed to the +// translation service, which uses the result of language negotiation to +// translate "Stop by for a visit!" into the requested language. The example +// text in the template, "Visit us", will simply be discarded. +// +// Another example, with explicit message IDs: +// +// <img src="../icons/uparrow.png" alt="Up" +// i18n:attributes="src up-arrow-icon; alt up-arrow-alttext" +// > +// +// Here, the message ID up-arrow-icon will be used to generate the link to +// an icon image file, and the message ID up-arrow-alttext will be used for +// the "alt" text. +// + +/** + * @package phptal.php.attribute + */ +class PHPTAL_Php_Attribute_I18N_Attributes extends PHPTAL_Php_Attribute +{ + public function start() + { + // split attributes to translate + $expressions = $this->tag->generator->splitExpression($this->expression); + // foreach attribute + foreach ($expressions as $exp){ + list($attribute, $key) = $this->parseSetExpression($exp); + // if the translation key is specified + if ($key != null){ + // we use it and replace the tag attribute with the result of + // the translation + $key = str_replace('\'', '\\\'', $key); + $this->tag->attributes[$attribute] = $this->_getTranslationCode("'$key'"); + } + else if ($this->tag->isOverwrittenAttribute($attribute)){ + $varn = $this->tag->getOverwrittenAttributeVarName($attribute); + $this->tag->attributes[$attribute] = $this->_getTranslationCode($varn); + } + // else if the attribute has a default value + else if ($this->tag->hasAttribute($attribute)){ + // we use this default value as the translation key + $key = $this->tag->getAttribute($attribute); + $key = str_replace('\'', '\\\'', $key); + $this->tag->attributes[$attribute] = $this->_getTranslationCode("'$key'"); + } + else { + // unable to translate the attribute + throw new PHPTAL_Exception("Unable to translate attribute $attribute"); + } + } + } + + public function end() + { + } + + private function _getTranslationCode($key) + { + $code = '<?php '; + if (preg_match_all('/\$\{(.*?)\}/', $key, $m)){ + array_shift($m); + $m = array_shift($m); + foreach ($m as $name){ + $code .= "\n".'$_translator->setVar(\''.$name.'\','.phptal_tale($name).');'; // allow more complex TAL expressions + } + $code .= "\n"; + } + + // notice the false boolean which indicate that the html is escaped + // elsewhere looks like an hack doesn't it ? :) + $result = $this->tag->generator->escapeCode(sprintf('$_translator->translate(%s, false)', $key)); + $code .= 'echo '.$result.'?>'; + return $code; + } +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Data.php b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Data.php new file mode 100644 index 000000000..073bf2fde --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Data.php @@ -0,0 +1,24 @@ +<?php + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute.php'; + +// i18n:data +// +// Since TAL always returns strings, we need a way in ZPT to translate +// objects, the most obvious case being DateTime objects. The data attribute +// will allow us to specify such an object, and i18n:translate will provide +// us with a legal format string for that object. If data is used, +// i18n:translate must be used to give an explicit message ID, rather than +// relying on a message ID computed from the content. +// + +/** + * @package phptal.php.attribute.i18n + */ +class PHPTAL_Php_Attribute_I18N_Data extends PHPTAL_Php_Attribute +{ + public function start(){} + public function end(){} +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Domain.php b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Domain.php new file mode 100644 index 000000000..dba7fdb89 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Domain.php @@ -0,0 +1,41 @@ +<?php + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute.php'; + +// i18n:domain +// +// The i18n:domain attribute is used to specify the domain to be used to get +// the translation. If not specified, the translation services will use a +// default domain. The value of the attribute is used directly; it is not +// a TALES expression. +// + +/** + * @package phptal.php.attribute.i18n + */ +class PHPTAL_Php_Attribute_I18N_Domain extends PHPTAL_Php_Attribute +{ + public function start() + { + // ensure a domain stack exists or create it + $this->tag->generator->doIf('!isset($__i18n_domains)'); + $this->tag->generator->pushCode('$__i18n_domains = array()'); + $this->tag->generator->doEnd(); + + //\''.str_replace(array('\\',"'"),array('\\\\',"\\'"),$expression).'\' + $expression = $this->tag->generator->interpolateTalesVarsInString($this->expression); + + // push current domain and use new domain + $code = '$__i18n_domains[] = $_translator->useDomain('.$expression.')'; + $this->tag->generator->pushCode($code); + } + + public function end() + { + // restore domain + $code = '$_translator->useDomain(array_pop($__i18n_domains))'; + $this->tag->generator->pushCode($code); + } +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Name.php b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Name.php new file mode 100644 index 000000000..d68152bd6 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Name.php @@ -0,0 +1,40 @@ +<?php + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute.php'; + +// i18n:name +// +// Name the content of the current element for use in interpolation within +// translated content. This allows a replaceable component in content to be +// re-ordered by translation. For example: +// +// <span i18n:translate=''> +// <span tal:replace='here/name' i18n:name='name' /> was born in +// <span tal:replace='here/country_of_birth' i18n:name='country' />. +// </span> +// +// would cause this text to be passed to the translation service: +// +// "${name} was born in ${country}." +// + +/** + * @package phptal.php.attribute.i18n + */ +class PHPTAL_Php_Attribute_I18N_Name extends PHPTAL_Php_Attribute +{ + public function start() + { + $this->tag->generator->pushCode('ob_start()'); + } + + public function end() + { + $code = '$_translator->setVar(\'%s\', ob_get_contents())'; + $code = sprintf($code, $this->expression); + $this->tag->generator->pushCode($code); + $this->tag->generator->pushCode('ob_end_clean()'); + } +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Source.php b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Source.php new file mode 100644 index 000000000..ce5a7d22a --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Source.php @@ -0,0 +1,38 @@ +<?php + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute.php'; + +// i18n:source +// +// The i18n:source attribute specifies the language of the text to be +// translated. The default is "nothing", which means we don't provide +// this information to the translation services. +// + +/** + * @package phptal.php.attribute.i18n + */ +class PHPTAL_Php_Attribute_I18N_Source extends PHPTAL_Php_Attribute +{ + public function start() + { + // ensure that a sources stack exists or create it + $this->tag->generator->doIf('!isset($__i18n_sources)'); + $this->tag->generator->pushCode('$__i18n_sources = array()'); + $this->tag->generator->end(); + + // push current source and use new one + $code = '$__i18n_sources[] = $_translator->setSource(\'%s\')'; + $code = sprintf($code, $this->expression); + $this->tag->generator->pushCode($code); + } + + public function end() + { + // restore source + $code = '$_translator->setSource(array_pop($__i18n_sources))'; + $this->tag->generator->pushCode($code); + } +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Target.php b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Target.php new file mode 100644 index 000000000..6face5707 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Target.php @@ -0,0 +1,32 @@ +<?php + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute.php'; + +// i18n:target +// +// The i18n:target attribute specifies the language of the translation we +// want to get. If the value is "default", the language negotiation services +// will be used to choose the destination language. If the value is +// "nothing", no translation will be performed; this can be used to suppress +// translation within a larger translated unit. Any other value must be a +// language code. +// +// The attribute value is a TALES expression; the result of evaluating the +// expression is the language code or one of the reserved values. +// +// Note that i18n:target is primarily used for hints to text extraction +// tools and translation teams. If you had some text that should only be +// translated to e.g. German, then it probably shouldn't be wrapped in an +// i18n:translate span. +// + +/** + * @package phptal.php.attribute.i18n + */ +class PHPTAL_Php_Attribute_I18N_Target extends PHPTAL_Php_Attribute +{ + public function start(){} + public function end(){} +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Translate.php b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Translate.php new file mode 100644 index 000000000..149253138 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/I18N/Translate.php @@ -0,0 +1,97 @@ +<?php + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute.php'; + +// ZPTInternationalizationSupport +// +// i18n:translate +// +// This attribute is used to mark units of text for translation. If this +// attribute is specified with an empty string as the value, the message ID +// is computed from the content of the element bearing this attribute. +// Otherwise, the value of the element gives the message ID. +// + +/** + * @package phptal.php.attribute.i18n + */ +class PHPTAL_Php_Attribute_I18N_Translate extends PHPTAL_Php_Attribute +{ + public function start() + { + $escape = true; + if (preg_match('/^(text|structure)(?:\s+(.*)|\s*$)/',$this->expression,$m)) + { + if ($m[1]=='structure') $escape=false; + $this->expression = isset($m[2])?$m[2]:''; + } + + // if no expression is given, the content of the node is used as + // a translation key + if (strlen(trim($this->expression)) == 0){ + $key = $this->_getTranslationKey($this->tag, !$escape); + $key = trim(preg_replace('/\s+/sm'.($this->tag->generator->getEncoding()=='UTF-8'?'u':''), ' ', $key)); + $code = '\'' . str_replace('\'', '\\\'', $key) . '\''; + } + else { + $code = $this->tag->generator->evaluateExpression($this->expression); + } + $this->_prepareNames($this->tag); + + $php = sprintf('echo $_translator->translate(%s,%s);', $code, $escape ? 'true':'false'); + $this->tag->generator->pushCode($php); + } + + public function end() + { + } + + private function _getTranslationKey($tag, $preserve_tags) + { + $result = ''; + foreach ($tag->children as $child){ + if ($child instanceOf PHPTAL_Php_Text){ + $result .= $child->node->getValue(); + } + else if ($child instanceOf PHPTAL_Php_Element){ + if ($child->hasAttribute('i18n:name')){ + $value = $child->getAttribute('i18n:name'); + $result .= '${' . $value . '}'; + } + else { + + if ($preserve_tags) + { + $result .= '<'.$child->name; + foreach($child->attributes as $k => $v) + { + $result .= ' '.$k.'="'.$v.'"'; + } + $result .= '>'.$this->_getTranslationKey($child, $preserve_tags).'</'.$child->name.'>'; + } + else + { + $result .= $this->_getTranslationKey($child, $preserve_tags); + } + } + } + } + return $result; + } + + private function _prepareNames($tag) + { + foreach ($tag->children as $child){ + if ($child instanceOf PHPTAL_Php_Element){ + if ($child->hasAttribute('i18n:name')){ + $child->generate(); + } + else { + $this->_prepareNames($child); + } + } + } + } +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Attribute/METAL/DefineMacro.php b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/METAL/DefineMacro.php new file mode 100644 index 000000000..fd42cd93e --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/METAL/DefineMacro.php @@ -0,0 +1,71 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute.php'; + +// METAL Specification 1.0 +// +// argument ::= Name +// +// Example: +// +// <p metal:define-macro="copyright"> +// Copyright 2001, <em>Foobar</em> Inc. +// </p> +// +// PHPTAL: +// +// <?php function XXX_macro_copyright( $tpl ) { ? > +// <p> +// Copyright 2001, <em>Foobar</em> Inc. +// </p> +// <?php } ? > +// + +/** + * @package phptal.php.attribute.metal + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Php_Attribute_METAL_DefineMacro extends PHPTAL_Php_Attribute +{ + public function start() + { + $macroname = strtr(trim($this->expression),'-','_'); + if (!preg_match('/^[a-z0-9_]+$/i', $macroname)){ + throw new PHPTAL_Exception('Bad macro name "'.$macroname.'"', $this->tag->getSourceFile(), $this->tag->getSourceLine()); + } + + $this->tag->generator->doFunction($macroname, '$tpl, $ctx'); + $this->tag->generator->doXmlDeclaration(); + $this->tag->generator->doDoctype(); + $this->tag->generator->doSetVar('$tpl', 'clone $tpl'); + $this->tag->generator->doSetVar('$ctx', '$tpl->getContext()'); + $this->tag->generator->doSetVar('$glb', '$tpl->getGlobalContext()'); + $this->tag->generator->doSetVar('$_translator', '$tpl->getTranslator()'); + } + + public function end() + { + $this->tag->generator->doEnd(); + } +} + diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Attribute/METAL/DefineSlot.php b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/METAL/DefineSlot.php new file mode 100644 index 000000000..837d81323 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/METAL/DefineSlot.php @@ -0,0 +1,75 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute.php'; + +// METAL Specification 1.0 +// +// argument ::= Name +// +// Example: +// +// <table metal:define-macro="sidebar"> +// <tr><th>Links</th></tr> +// <tr><td metal:define-slot="links"> +// <a href="/">A Link</a> +// </td></tr> +// </table> +// +// PHPTAL: (access to slots may be renamed) +// +// <?php function XXXX_macro_sidebar( $tpl ) { ? > +// <table> +// <tr><th>Links</th></tr> +// <tr> +// <?php if (isset($tpl->slots->links)): ? > +// <?php echo $tpl->slots->links ? > +// <?php else: ? > +// <td> +// <a href="/">A Link</a> +// </td></tr> +// </table> +// <?php } ? > +// + +/** + * @package phptal.php.attribute.metal + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Php_Attribute_METAL_DefineSlot extends PHPTAL_Php_Attribute +{ + public function start() + { + $cond = sprintf('$ctx->hasSlot("%s")', $this->expression); + $this->tag->generator->doIf($cond); + $code = sprintf('<?php echo $ctx->getSlot("%s") ?>', $this->expression); + $this->tag->generator->pushHtml($code); + $this->tag->generator->doElse(); + } + + public function end() + { + $this->tag->generator->doEnd(); + } +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Attribute/METAL/FillSlot.php b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/METAL/FillSlot.php new file mode 100644 index 000000000..2e8d24b5d --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/METAL/FillSlot.php @@ -0,0 +1,75 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute.php'; + +// METAL Specification 1.0 +// +// argument ::= Name +// +// Example: +// +// <table metal:use-macro="here/doc1/macros/sidebar"> +// <tr><th>Links</th></tr> +// <tr><td metal:fill-slot="links"> +// <a href="http://www.goodplace.com">Good Place</a><br> +// <a href="http://www.badplace.com">Bad Place</a><br> +// <a href="http://www.otherplace.com">Other Place</a> +// </td></tr> +// </table> +// +// PHPTAL: +// +// 1. evaluate slots +// +// <?php ob_start(); ? > +// <td> +// <a href="http://www.goodplace.com">Good Place</a><br> +// <a href="http://www.badplace.com">Bad Place</a><br> +// <a href="http://www.otherplace.com">Other Place</a> +// </td> +// <?php $tpl->slots->links = ob_get_contents(); ob_end_clean(); ? > +// +// 2. call the macro (here not supported) +// +// <?php echo phptal_macro($tpl, 'master_page.html/macros/sidebar'); ? > +// + +/** + * @package phptal.php.attribute.metal + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Php_Attribute_METAL_FillSlot extends PHPTAL_Php_Attribute +{ + public function start() + { + $this->tag->generator->pushCode('ob_start()'); + } + + public function end() + { + $code = '$ctx->fillSlot("'.$this->expression.'", ob_get_clean())'; + $this->tag->generator->pushCode($code); + } +} + + diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Attribute/METAL/UseMacro.php b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/METAL/UseMacro.php new file mode 100644 index 000000000..467199010 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/METAL/UseMacro.php @@ -0,0 +1,131 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute.php'; + +// METAL Specification 1.0 +// +// argument ::= expression +// +// Example: +// +// <hr /> +// <p metal:use-macro="here/master_page/macros/copyright"> +// <hr /> +// +// PHPTAL: (here not supported) +// +// <?php echo phptal_macro( $tpl, 'master_page.html/macros/copyright'); ? > +// + +/** + * @package phptal.php.attribute.metal + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Php_Attribute_METAL_UseMacro extends PHPTAL_Php_Attribute +{ + static $ALLOWED_ATTRIBUTES = array( + 'metal:fill-slot', + 'metal:define-macro', + 'tal:define', + ); + + public function start() + { + $this->pushSlots(); + + foreach ($this->tag->children as $child){ + $this->generateFillSlots($child); + } + + $macroname = strtr($this->expression,'-','_'); + + // local macro (no filename specified) and non dynamic macro name + if (preg_match('/^[a-z0-9_]+$/i', $macroname)) { + $code = sprintf( + '%s%s($tpl, $ctx)', + $this->tag->generator->getFunctionPrefix(), + $macroname + ); + $this->tag->generator->pushCode($code); + } + // external macro or ${macroname}, use PHPTAL at runtime to resolve it + else { + $code = $this->tag->generator->interpolateTalesVarsInString($this->expression); + $code = sprintf('<?php $tpl->executeMacro(%s); ?>', $code); + $this->tag->generator->pushHtml($code); + } + + $this->popSlots(); + } + + public function end() + { + } + + private function pushSlots() + { + // reset template slots on each macro call ? + // + // NOTE: defining a macro and using another macro on the same tag + // means inheriting from the used macro, thus slots are shared, it + // is a little tricky to understand but very natural to use. + // + // For example, we may have a main design.html containing our main + // website presentation with some slots (menu, content, etc...) then + // we may define a member.html macro which use the design.html macro + // for the general layout, fill the menu slot and let caller templates + // fill the parent content slot without interfering. + if (!$this->tag->hasAttribute('metal:define-macro')){ + $this->tag->generator->pushCode('$ctx->pushSlots()'); + } + } + + private function popSlots() + { + // restore slots if not inherited macro + if (!$this->tag->hasAttribute('metal:define-macro')){ + $this->tag->generator->pushCode('$ctx->popSlots()'); + } + } + + private function generateFillSlots($tag) + { + if (false == ($tag instanceOf PHPTAL_Php_Tree)) + return; + + // if the tag contains one of the allowed attribute, we generate it + foreach (self::$ALLOWED_ATTRIBUTES as $attribute){ + if ($tag->hasAttribute($attribute)){ + $tag->generate(); + return; + } + } + + // recurse + foreach ($tag->children as $child){ + $this->generateFillSlots($child); + } + } +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Attribute/PHPTAL/Cache.php b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/PHPTAL/Cache.php new file mode 100644 index 000000000..a43ebc3c9 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/PHPTAL/Cache.php @@ -0,0 +1,92 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Kornel LesiÅ„ski <kornel@aardvarkmedia.co.uk> +// + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute.php'; + +/** phptal:cache (note that's not tal:cache) caches element's HTML for a given time. Time is a number with 'd', 'h', 'm' or 's' suffix. + There's optional parameter that defines how cache should be shared. By default cache is not sensitive to template's context at all + - it's shared between all pages that use that template. + You can add per url to have separate copy of given element for every URL. + + You can add per expression to have different cache copy for every different value of an expression (which MUST evaluate to a string). + Expression cannot refer to variables defined using tal:define on the same element. + + NB: + * phptal:cache blocks can be nested, but outmost block will cache other blocks regardless of their freshness. + * you cannot use metal:fill-slot inside elements with phptal:cache + + Examples: + <div phptal:cache="3h">...</div> <!-- <div> to be evaluated at most once per 3 hours. --> + <ul phptal:cache="1d per object/id">...</ul> <!-- <ul> be cached for one day, separately for each object. --> +*/ +class PHPTAL_Php_Attribute_PHPTAL_Cache extends PHPTAL_Php_Attribute +{ + private $cache_tag; + + public function start() + { + if (!preg_match('/^\s*([0-9]+\s*|[a-zA-Z][a-zA-Z0-9_]*\s+)([dhms])\s*(?:\;?\s*per\s+([^;]+)|)\s*$/',$this->expression, $matches)) + throw new PHPTAL_Exception("Cache attribute syntax error: ".$this->expression); + + $cache_len = $matches[1]; + if (!is_numeric($cache_len)) $cache_len = '$ctx->'.$cache_len; + switch($matches[2]) + { + case 'd': $cache_len .= '*24'; /* no break */ + case 'h': $cache_len .= '*60'; /* no break */ + case 'm': $cache_len .= '*60'; /* no break */ + } + + $this->cache_tag = '"'.addslashes( $this->tag->node->getName() . ':' . $this->tag->node->getSourceLine()).'"'; + + $cache_per_expression = isset($matches[3])?trim($matches[3]):NULL; + if ($cache_per_expression == 'url') + { + $this->cache_tag .= '.$_SERVER["REQUEST_URI"]'; + } + else if ($cache_per_expression == 'nothing') { } + else if ($cache_per_expression) + { + $code = $this->tag->generator->evaluateExpression($cache_per_expression); + + if (is_array($code)) { throw new PHPTAL_Exception("Chained expressions in per-cache directive are not supported"); } + + $old_cache_tag = $this->cache_tag; + $this->cache_tag = '$ctx->cache_tag_'; + $this->tag->generator->doSetVar($this->cache_tag, '('.$code.')."@".' . $old_cache_tag ); + } + + $cond = '!file_exists(__FILE__.md5('.$this->cache_tag.')) || time() - '.$cache_len.' >= @filemtime(__FILE__.md5('.$this->cache_tag.'))'; + + $this->tag->generator->doIf($cond); + $this->tag->generator->doEval('ob_start()'); + } + + public function end() + { + $this->tag->generator->doEval('file_put_contents(__FILE__.md5('.$this->cache_tag.'), ob_get_flush())'); + $this->tag->generator->doElse(); + $this->tag->generator->doEval('readfile(__FILE__.md5('.$this->cache_tag.'))'); + $this->tag->generator->doEnd(); + } +} + diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Attribute/PHPTAL/Debug.php b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/PHPTAL/Debug.php new file mode 100644 index 000000000..a41da0fc9 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/PHPTAL/Debug.php @@ -0,0 +1,44 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute.php'; + +/** + * @package phptal.php.attribute.phptal + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Php_Attribute_PHPTAL_DEBUG extends PHPTAL_Php_Attribute +{ + public function start() + { + $this->_oldMode = $this->tag->generator->setDebug(true); + } + + public function end() + { + $this->tag->generator->setDebug( $this->_oldMode ); + } + + private $_oldMode; +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Attribute/PHPTAL/Id.php b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/PHPTAL/Id.php new file mode 100644 index 000000000..591a8be22 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/PHPTAL/Id.php @@ -0,0 +1,66 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute.php'; + +/** + * @package phptal.php.attribute.phptal + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Php_Attribute_PHPTAL_ID extends PHPTAL_Php_Attribute +{ + private $id; + + public function start() + { + $this->id = str_replace('"', '\\\"', $this->expression); + + // retrieve trigger + $this->tag->generator->doSetVar( + '$trigger', + '$tpl->getTrigger("'.$this->id.'")' + ); + + // if trigger found and trigger tells to proceed, we execute + // the node content + $cond = '$trigger && ' + . '$trigger->start("%s", $tpl) == PHPTAL_Trigger::PROCEED'; + $cond = sprintf($cond, $this->id); + + $this->tag->generator->doIf($cond); + } + + public function end() + { + // end of if PROCEED + $this->tag->generator->doEnd(); + + // if trigger found, notify the end of the node + $this->tag->generator->doIf('$trigger'); + $this->tag->generator->pushCode( + '$trigger->end("'.$this->id.'", $tpl)' + ); + $this->tag->generator->doEnd(); + } +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Attribute/PHPTAL/Tales.php b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/PHPTAL/Tales.php new file mode 100644 index 000000000..2bf5b019a --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/PHPTAL/Tales.php @@ -0,0 +1,60 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute.php'; + +/** + * @package phptal.php.attribute.phptal + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Php_Attribute_PHPTAL_TALES extends PHPTAL_Php_Attribute +{ + public function start() + { + $mode = trim($this->expression); + $mode = strtolower($mode); + + if ($mode == '' || $mode == 'default') + $mode = 'tales'; + + if ($mode != 'php' && $mode != 'tales') { + $err = "Unsupported TALES mode '%s'"; + $err = sprintf($err, $mode); + throw new PHPTAL_Exception( + $err, + $this->tag->getSourceFile(), + $this->tag->getSourceLine() + ); + } + + $this->_oldMode = $this->tag->generator->setTalesMode( $mode ); + } + + public function end() + { + $this->tag->generator->setTalesMode( $this->_oldMode ); + } + + private $_oldMode; +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Attributes.php b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Attributes.php new file mode 100644 index 000000000..99de33a90 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Attributes.php @@ -0,0 +1,168 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute.php'; + +// TAL Specifications 1.4 +// +// argument ::= attribute_statement [';' attribute_statement]* +// attribute_statement ::= attribute_name expression +// attribute_name ::= [namespace ':'] Name +// namespace ::= Name +// +// examples: +// +// <a href="/sample/link.html" +// tal:attributes="href here/sub/absolute_url"> +// <textarea rows="80" cols="20" +// tal:attributes="rows request/rows;cols request/cols"> +// +// IN PHPTAL: attributes will not work on structured replace. +// + +require_once PHPTAL_DIR.'PHPTAL/Php/TalesChainExecutor.php'; + +/** + * @package phptal.php.attribute.tal + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Php_Attribute_TAL_Attributes +extends PHPTAL_Php_Attribute +implements PHPTAL_Php_TalesChainReader +{ + const ATT_FULL_REPLACE = '$__ATT_'; + const ATT_VALUE_REPLACE = '$__att_'; + // this regex is used to determine if an attribute is entirely replaced + // by a php variable or if only its value is replaced. + const REGEX_FULL_REPLACE = '/<?php echo \$__ATT_.*? ?>/'; + + public function start() + { + // split attributes using ; delimiter + $attrs = $this->tag->generator->splitExpression($this->expression); + foreach ($attrs as $exp) { + list($attribute, $expression) = $this->parseSetExpression($exp); + if ($expression) { + $this->prepareAttribute($attribute, $expression); + } + } + } + + public function end() + { + } + + private function prepareAttribute($attribute, $expression) + { + $code = $this->extractEchoType(trim($expression)); + $code = $this->tag->generator->evaluateExpression($code); + + // if $code is an array then the attribute value is decided by a + // tales chained expression + if (is_array($code)) { + return $this->prepareChainedAttribute2($attribute, $code); + } + + // XHTML boolean attribute does not appear when empty of false + if (PHPTAL_Dom_Defs::getInstance()->isBooleanAttribute($attribute)) { + return $this->prepareBooleanAttribute($attribute, $code); + } + + // regular attribute which value is the evaluation of $code + $attkey = self::ATT_VALUE_REPLACE . $this->getVarName($attribute); + if ($this->_echoType == PHPTAL_Php_Attribute::ECHO_STRUCTURE) + $value = $code; + else + $value = $this->tag->generator->escapeCode($code); + $this->tag->generator->doSetVar($attkey, $value); + $this->tag->overwriteAttributeWithPhpValue($attribute, $attkey); + } + + private function prepareChainedAttribute2($attribute, $chain) + { + $this->_default = false; + $this->_attribute = $attribute; + if (array_key_exists($attribute, $this->tag->attributes)) { + $this->_default = $this->tag->attributes[$attribute]; + } + $this->_attkey = self::ATT_FULL_REPLACE.$this->getVarName($attribute); + $executor = new PHPTAL_Php_TalesChainExecutor($this->tag->generator, $chain, $this); + $this->tag->overwriteAttributeWithPhpValue($attribute, $this->_attkey); + } + + private function prepareBooleanAttribute($attribute, $code) + { + $attkey = self::ATT_FULL_REPLACE.$this->getVarName($attribute); + $value = "' $attribute=\"$attribute\"'"; + $this->tag->generator->doIf($code); + $this->tag->generator->doSetVar($attkey, $value); + $this->tag->generator->doElse(); + $this->tag->generator->doSetVar($attkey, '\'\''); + $this->tag->generator->doEnd(); + $this->tag->overwriteAttributeWithPhpValue($attribute, $attkey); + } + + private function getVarName($attribute) + { + return strtr($attribute,':-', '__'); + } + + public function talesChainNothingKeyword(PHPTAL_Php_TalesChainExecutor $executor) + { + $executor->doElse(); + $this->tag->generator->doSetVar( + $this->_attkey, + "''" + ); + $executor->breakChain(); + } + + public function talesChainDefaultKeyword(PHPTAL_Php_TalesChainExecutor $executor) + { + $executor->doElse(); + $code = ($this->_default !== false) + ? "' $this->_attribute=\"".str_replace("'",'\\\'',$this->_default)."\"'" // default value + : '\'\''; // do not print attribute + $this->tag->generator->doSetVar($this->_attkey, $code); + $executor->breakChain(); + } + + public function talesChainPart(PHPTAL_Php_TalesChainExecutor $executor, $exp, $islast) + { + if (!$islast) { + $condition = "!phptal_isempty($this->_attkey = $exp)"; + } + else { + $condition = "NULL !== ($this->_attkey = $exp)"; + } + + $executor->doIf($condition); + if ($this->_echoType == PHPTAL_Php_Attribute::ECHO_STRUCTURE) + $value = $this->_attkey; + else + $value = $this->tag->generator->escapeCode($this->_attkey); + + $this->tag->generator->doSetVar($this->_attkey, "' $this->_attribute=\"'.$value.'\"'"); + } +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Comment.php b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Comment.php new file mode 100644 index 000000000..4698fb7d7 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Comment.php @@ -0,0 +1,40 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute.php'; + +/** + * @package phptal.php.attribute.tal + */ +class PHPTAL_Php_Attribute_TAL_Comment extends PHPTAL_Php_Attribute +{ + public function start() + { + $this->tag->generator->doComment($this->expression); + } + + public function end() + { + } +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Condition.php b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Condition.php new file mode 100644 index 000000000..b2d3c2889 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Condition.php @@ -0,0 +1,101 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +// TAL Specifications 1.4 +// +// argument ::= expression +// +// Example: +// +// <p tal:condition="here/copyright" +// tal:content="here/copyright">(c) 2000</p> +// +// + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute.php'; +require_once PHPTAL_DIR.'PHPTAL/Php/TalesChainExecutor.php'; + +/** + * @package phptal.php.attribute.tal + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Php_Attribute_TAL_Condition +extends PHPTAL_Php_Attribute +implements PHPTAL_Php_TalesChainReader +{ + private $expressions = array(); + + public function start() + { + $code = $this->tag->generator->evaluateExpression($this->expression); + + // If it's a chained expression build a new code path + if (is_array($code)) { + $this->expressions = array(); + $executor = new PHPTAL_Php_TalesChainExecutor( $this->tag->generator, $code, $this ); + return; + } + + // Force a falsy condition if the nothing keyword is active + if ($code == PHPTAL_TALES_NOTHING_KEYWORD) { + $code = 'false'; + } + + $this->tag->generator->doIf($code); + } + + public function end() + { + $this->tag->generator->doEnd(); + } + + + public function talesChainPart(PHPTAL_Php_TalesChainExecutor $executor, $exp, $islast) + { + // check if the expression is empty + if ( $exp !== 'false' ) { + $this->expressions[] = '!phptal_isempty($__content__ = ' . $exp . ')'; + } + + if ( $islast ) { + // for the last one in the chain build a ORed condition + $this->tag->generator->doIf( implode(' || ', $this->expressions ) ); + // The executor will always end an if so we output a dummy if + $executor->doIf('false'); + } + } + + public function talesChainNothingKeyword(PHPTAL_Php_TalesChainExecutor $executor) + { + // end the chain + $this->talesChainPart( $executor, 'false', true ); + $executor->breakChain(); + } + + public function talesChainDefaultKeyword(PHPTAL_Php_TalesChainExecutor $executor) + { + throw new PHPTAL_Exception('\'default\' keyword not allowed on condition expressions'); + } + +} + + diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Content.php b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Content.php new file mode 100644 index 000000000..2cf320c9d --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Content.php @@ -0,0 +1,98 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute.php'; + +// TAL Specifications 1.4 +// +// argument ::= (['text'] | 'structure') expression +// +// Example: +// +// <p tal:content="user/name">Fred Farkas</p> +// +// + +require_once PHPTAL_DIR.'PHPTAL/Php/TalesChainExecutor.php'; + +/** + * @package phptal.php.attribute.tal + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Php_Attribute_TAL_Content +extends PHPTAL_Php_Attribute +implements PHPTAL_Php_TalesChainReader +{ + public function start() + { + $expression = $this->extractEchoType($this->expression); + + $code = $this->tag->generator->evaluateExpression($expression); + + if (is_array($code)) { + return $this->generateChainedContent($code); + } + + if ($code == PHPTAL_TALES_NOTHING_KEYWORD) { + return; + } + + if ($code == PHPTAL_TALES_DEFAULT_KEYWORD) { + return $this->generateDefault(); + } + + $this->doEcho($code); + } + + public function end() + { + } + + private function generateDefault() + { + $this->tag->generateContent(true); + } + + private function generateChainedContent($code) + { + $executor = new PHPTAL_Php_TalesChainExecutor($this->tag->generator, $code, $this); + } + + public function talesChainPart(PHPTAL_Php_TalesChainExecutor $executor, $exp, $islast) + { + $executor->doIf('!phptal_isempty($__content__ = '.$exp.')'); + $this->doEcho('$__content__'); + } + + public function talesChainNothingKeyword(PHPTAL_Php_TalesChainExecutor $executor) + { + $executor->breakChain(); + } + + public function talesChainDefaultKeyword(PHPTAL_Php_TalesChainExecutor $executor) + { + $executor->doElse(); + $this->generateDefault(); + $executor->breakChain(); + } +} +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Define.php b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Define.php new file mode 100644 index 000000000..dfccdf2fa --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Define.php @@ -0,0 +1,183 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute.php'; + +// TAL spec 1.4 for tal:define content +// +// argument ::= define_scope [';' define_scope]* +// define_scope ::= (['local'] | 'global') define_var +// define_var ::= variable_name expression +// variable_name ::= Name +// +// Note: If you want to include a semi-colon (;) in an expression, it must be escaped by doubling it (;;).* +// +// examples: +// +// tal:define="mytitle template/title; tlen python:len(mytitle)" +// tal:define="global company_name string:Digital Creations, Inc." +// + + +require_once PHPTAL_DIR.'PHPTAL/Php/TalesChainExecutor.php'; + +/** + * @package phptal.php.attribute.tal + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Php_Attribute_TAL_Define +extends PHPTAL_Php_Attribute +implements PHPTAL_Php_TalesChainReader +{ + public function start() + { + $expressions = $this->tag->generator->splitExpression($this->expression); + $definesAnyNonGlobalVars = false; + + foreach ($expressions as $exp){ + list($defineScope, $defineVar, $expression) = $this->parseExpression($exp); + if (!$defineVar) { + continue; + } + + $this->_defineScope = $defineScope; + + if ($defineScope != 'global') $definesAnyNonGlobalVars = true; // <span tal:define="global foo" /> should be invisible, but <img tal:define="bar baz" /> not + + if ($this->_defineScope != 'global' && !$this->_pushedContext){ + $this->tag->generator->pushContext(); + $this->_pushedContext = true; + } + + $this->_defineVar = $defineVar; + if ($expression === null) { + // no expression give, use content of tag as value for newly defined + // var. + $this->bufferizeContent(); + continue; + } + + $code = $this->tag->generator->evaluateExpression($expression); + if (is_array($code)){ + $this->chainedDefine($code); + } + elseif ($code == PHPTAL_TALES_NOTHING_KEYWORD) { + $this->doDefineVarWith('null'); + } + else { + $this->doDefineVarWith($code); + } + } + + // if the content of the tag was buffered or the tag has nothing to tell, we hide it. + if ($this->_buffered || (!$definesAnyNonGlobalVars && !$this->tag->hasRealContent() && !$this->tag->hasRealAttributes())){ + $this->tag->hidden = true; + } + } + + public function end() + { + if ($this->_pushedContext){ + $this->tag->generator->popContext(); + } + } + + private function chainedDefine($parts) + { + $executor = new PHPTAL_Php_TalesChainExecutor( + $this->tag->generator, $parts, $this + ); + } + + public function talesChainNothingKeyword(PHPTAL_Php_TalesChainExecutor $executor) + { + $executor->doElse(); + $this->doDefineVarWith('null'); + $executor->breakChain(); + } + + public function talesChainDefaultKeyword(PHPTAL_Php_TalesChainExecutor $executor) + { + $executor->doElse(); + $this->bufferizeContent(); + $executor->breakChain(); + } + + public function talesChainPart(PHPTAL_Php_TalesChainExecutor $executor, $exp, $islast) + { + if ($this->_defineScope == 'global'){ + $executor->doIf('($glb->'.$this->_defineVar.' = '.$exp.') !== null'); + } + else { + $executor->doIf('($ctx->'.$this->_defineVar.' = '.$exp.') !== null'); + } + } + + /** + * Parse the define expression, already splitted in sub parts by ';'. + */ + public function parseExpression($exp) + { + $defineScope = false; // (local | global) + $defineVar = false; // var to define + + // extract defineScope from expression + $exp = trim($exp); + if (preg_match('/^(local|global)\s+(.*?)$/ism', $exp, $m)) { + list(,$defineScope, $exp) = $m; + $exp = trim($exp); + } + + // extract varname and expression from remaining of expression + list($defineVar, $exp) = $this->parseSetExpression($exp); + if ($exp !== null) $exp = trim($exp); + return array($defineScope, $defineVar, $exp); + } + + private function bufferizeContent() + { + if (!$this->_buffered){ + $this->tag->generator->pushCode( 'ob_start()' ); + $this->tag->generateContent(); + $this->tag->generator->pushCode('$__tmp_content__ = ob_get_clean()'); + $this->_buffered = true; + } + $this->doDefineVarWith('$__tmp_content__'); + } + + private function doDefineVarWith($code) + { + if ($this->_defineScope == 'global'){ + $this->tag->generator->doSetVar('$glb->'.$this->_defineVar, $code); + } + else { + $this->tag->generator->doSetVar('$ctx->'.$this->_defineVar, $code); + } + } + + private $_buffered = false; + private $_defineScope = null; + private $_defineVar = null; + private $_pushedContext = false; +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/OmitTag.php b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/OmitTag.php new file mode 100644 index 000000000..ad4c47a7a --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/OmitTag.php @@ -0,0 +1,74 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute.php'; + +// TAL Specifications 1.4 +// +// argument ::= [expression] +// +// Example: +// +// <div tal:omit-tag="" comment="This tag will be removed"> +// <i>...but this text will remain.</i> +// </div> +// +// <b tal:omit-tag="not:bold">I may not be bold.</b> +// +// To leave the contents of a tag in place while omitting the surrounding +// start and end tag, use the omit-tag statement. +// +// If its expression evaluates to a false value, then normal processing +// of the element continues. +// +// If the expression evaluates to a true value, or there is no +// expression, the statement tag is replaced with its contents. It is up to +// the interface between TAL and the expression engine to determine the +// value of true and false. For these purposes, the value nothing is false, +// and cancellation of the action has the same effect as returning a +// false value. +// + +/** + * @package phptal.php.attribute.tal + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Php_Attribute_TAL_OmitTag extends PHPTAL_Php_Attribute +{ + public function start() + { + if (trim($this->expression) == ''){ + $this->tag->headFootDisabled = true; + } + else { + // print tag header/foot only if condition is false + $cond = $this->tag->generator->evaluateExpression($this->expression); + $this->tag->headFootPrintCondition = '!('.$cond.')'; + } + } + + public function end() + { + } +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/OnError.php b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/OnError.php new file mode 100644 index 000000000..c22dd9ef3 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/OnError.php @@ -0,0 +1,81 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute.php'; + +// TAL Specifications 1.4 +// +// argument ::= (['text'] | 'structure') expression +// +// Example: +// +// <p tal:on-error="string: Error! This paragraph is buggy!"> +// My name is <span tal:replace="here/SlimShady" />.<br /> +// (My login name is +// <b tal:on-error="string: Username is not defined!" +// tal:content="user">Unknown</b>) +// </p> +// + +/** + * @package phptal.php.attribute.tal + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Php_Attribute_TAL_OnError extends PHPTAL_Php_Attribute +{ + const ERR_VAR = '$__err__'; + + public function start() + { + $this->tag->generator->doTry(); + $this->tag->generator->pushCode('ob_start()'); + } + + public function end() + { + $this->tag->generator->pushCode('ob_end_flush()'); + $this->tag->generator->doCatch('Exception '.self::ERR_VAR); + $this->tag->generator->pushCode('$tpl->addError('.self::ERR_VAR.')'); + $this->tag->generator->pushCode('ob_end_clean()'); + + $expression = $this->extractEchoType($this->expression); + + $code = $this->tag->generator->evaluateExpression($expression); + switch ($code) { + case PHPTAL_TALES_NOTHING_KEYWORD: + break; + + case PHPTAL_TALES_DEFAULT_KEYWORD: + $this->tag->generator->pushHtml('<pre class="phptalError"'); + $this->tag->generator->doEcho(self::ERR_VAR); + $this->tag->generator->pushHtml('</pre>'); + break; + + default: + $this->doEcho($code); + break; + } + $this->tag->generator->doEnd(); + } +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Repeat.php b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Repeat.php new file mode 100644 index 000000000..d798b6cb0 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Repeat.php @@ -0,0 +1,115 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute.php'; + +// TAL Specifications 1.4 +// +// argument ::= variable_name expression +// variable_name ::= Name +// +// Example: +// +// <p tal:repeat="txt python:'one', 'two', 'three'"> +// <span tal:replace="txt" /> +// </p> +// <table> +// <tr tal:repeat="item here/cart"> +// <td tal:content="repeat/item/index">1</td> +// <td tal:content="item/description">Widget</td> +// <td tal:content="item/price">$1.50</td> +// </tr> +// </table> +// +// The following information is available from an Iterator: +// +// * index - repetition number, starting from zero. +// * number - repetition number, starting from one. +// * even - true for even-indexed repetitions (0, 2, 4, ...). +// * odd - true for odd-indexed repetitions (1, 3, 5, ...). +// * start - true for the starting repetition (index 0). +// * end - true for the ending, or final, repetition. +// * length - length of the sequence, which will be the total number of repetitions. +// +// * letter - count reps with lower-case letters: "a" - "z", "aa" - "az", "ba" - "bz", ..., "za" - "zz", "aaa" - "aaz", and so forth. +// * Letter - upper-case version of letter. +// * roman - count reps with lower-case roman numerals: "i", "ii", "iii", "iv", "v", "vi" ... +// * Roman - upper-case version of roman numerals. +/// +// * first - true for the first item in a group - see note below +// * lasst - true for the last item in a group - see note below +// +// Note: first and last are intended for use with sorted sequences. They try to +// divide the sequence into group of items with the same value. If you provide +// a path, then the value obtained by following that path from a sequence item +// is used for grouping, otherwise the value of the item is used. You can +// provide the path by appending it to the path from the repeat variable, +// as in "repeat/item/first/color". +// +// PHPTAL: index, number, even, etc... will be stored in the +// $ctx->repeat->'item' object. Thus $ctx->repeat->item->odd +// + + +/** + * @package phptal.php.attribute.tal + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Php_Attribute_TAL_Repeat extends PHPTAL_Php_Attribute +{ + const REPEAT = '$__repeat__'; + + public function start() + { + // alias to repeats handler to avoid calling extra getters on each variable access + $this->tag->generator->doSetVar( self::REPEAT, '$ctx->repeat' ); + + list( $varName, $expression ) = $this->parseSetExpression( $this->expression ); + $code = $this->tag->generator->evaluateExpression( $expression ); + + $item = '$ctx->' . $varName; + $controller = self::REPEAT . '->' . $varName; + + // reset item var into template context + /* // Is this actually needed? + $this->tag->generator->doIf( '!isset('.$this->item.')' ); + $this->tag->generator->doSetVar( $this->item, 'false' ); + $this->tag->generator->doEnd(); + */ + + // instantiate controller using expression + $this->tag->generator->doSetVar( $controller, 'new PHPTAL_RepeatController('.$code.')' ); + + // Lets loop the iterator with a foreach construct + $this->tag->generator->doForeach( $item, $controller ); + } + + public function end() + { + $this->tag->generator->doEnd(); + } + + private $item; + private $controller; +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Replace.php b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Replace.php new file mode 100644 index 000000000..121b4571f --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Attribute/TAL/Replace.php @@ -0,0 +1,117 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute.php'; + +// TAL Specifications 1.4 +// +// argument ::= (['text'] | 'structure') expression +// +// Default behaviour : text +// +// <span tal:replace="template/title">Title</span> +// <span tal:replace="text template/title">Title</span> +// <span tal:replace="structure table" /> +// <span tal:replace="nothing">This element is a comment.</span> +// + +require_once PHPTAL_DIR.'PHPTAL/Php/TalesChainExecutor.php'; + +/** + * @package phptal.php.attribute.tal + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Php_Attribute_TAL_Replace +extends PHPTAL_Php_Attribute +implements PHPTAL_Php_TalesChainReader +{ + const REPLACE_VAR = '$__replace__'; + + public function start() + { + // tal:replace="" => do nothing and ignore node + if (trim($this->expression) == ""){ + return; + } + + $expression = $this->extractEchoType($this->expression); + $code = $this->tag->generator->evaluateExpression($expression); + + // chained expression + if (is_array($code)){ + return $this->replaceByChainedExpression($code); + } + + // nothing do nothing + if ($code == PHPTAL_TALES_NOTHING_KEYWORD) { + return; + } + + // default generate default tag content + if ($code == PHPTAL_TALES_DEFAULT_KEYWORD) { + return $this->generateDefault(); + } + + // replace tag with result of expression + $this->doEcho($code); + } + + public function end() + { + } + + private function replaceByChainedExpression($expArray) + { + $executor = new PHPTAL_Php_TalesChainExecutor( + $this->tag->generator, $expArray, $this + ); + } + + public function talesChainNothingKeyword(PHPTAL_Php_TalesChainExecutor $executor) + { + $executor->continueChain(); + } + + public function talesChainDefaultKeyword(PHPTAL_Php_TalesChainExecutor $executor) + { + $executor->doElse(); + $this->generateDefault(); + $executor->breakChain(); + } + + public function talesChainPart(PHPTAL_Php_TalesChainExecutor $executor, $exp, $islast) + { + $executor->doIf('!phptal_isempty('.self::REPLACE_VAR.' = '.$exp.')'); + $this->doEcho(self::REPLACE_VAR); + } + + private function generateDefault() + { + $this->tag->generateSurroundHead(); + $this->tag->generateHead(); + $this->tag->generateContent(); + $this->tag->generateFoot(); + $this->tag->generateSurroundFoot(); + } +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/CodeGenerator.php b/wp-content/themes/vanilla/PHPTAL/Php/CodeGenerator.php new file mode 100644 index 000000000..5d7bb7133 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/CodeGenerator.php @@ -0,0 +1,55 @@ +<?php + +require_once PHPTAL_DIR.'PHPTAL/Php/Node.php'; +require_once PHPTAL_DIR.'PHPTAL/Php/State.php'; +require_once PHPTAL_DIR.'PHPTAL/Php/CodeWriter.php'; + +/** + * @package phptal.php + */ +class PHPTAL_Php_CodeGenerator +{ + public function __construct($function_name, $source_path) + { + $this->_functionName = $function_name; + $this->_sourceFile = $source_path; + $this->_state = new PHPTAL_Php_State(); + $this->_writer = new PHPTAL_Php_CodeWriter($this->_state); + } + + public function setOutputMode($mode) + { + $this->_state->setOutputMode($mode); + } + + public function setEncoding($enc) + { + $this->_state->setEncoding($enc); + } + + public function generate(PHPTAL_Dom_Tree $tree) + { + $treeGen = new PHPTAL_Php_Tree($this->_writer, $tree); + + $this->_writer->doComment('Generated by PHPTAL from '.$this->_sourceFile); + $this->_writer->doFunction($this->_functionName, '$tpl, $ctx'); + $this->_writer->setFunctionPrefix($this->_functionName . "_"); + $this->_writer->doSetVar('$glb', '$tpl->getGlobalContext()'); + $this->_writer->doSetVar('$_translator', '$tpl->getTranslator()'); + $treeGen->generate(); + $this->_writer->doEnd(); + } + + public function getResult() + { + return $this->_writer->getResult(); + } + + + private $_functionName; + private $_sourceFile; + private $_writer; + private $_state; +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/CodeWriter.php b/wp-content/themes/vanilla/PHPTAL/Php/CodeWriter.php new file mode 100644 index 000000000..21eb1d9f9 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/CodeWriter.php @@ -0,0 +1,393 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +/** + * Helps generate php representation of a template. + * + * @package phptal.php + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Php_CodeWriter +{ + public function __construct(PHPTAL_Php_State $state) + { + $this->_state = $state; + } + + public function getResult() + { + $this->flush(); + $this->_result = trim($this->_result); + return $this->_result; + } + + public function setDocType(PHPTAL_Php_Doctype $dt) + { + $this->_doctype = str_replace('\'', '\\\'', $dt->node->getValue()); + } + + public function setXmlDeclaration(PHPTAL_Php_XmlDeclaration $dt) + { + $this->_xmldeclaration = str_replace('\'', '\\\'', $dt->node->getValue()); + } + + public function setFunctionPrefix($prefix) + { + $this->_functionPrefix = $prefix; + } + + public function getFunctionPrefix() + { + return $this->_functionPrefix; + } + + /** + * Returns old tales mode. + */ + public function setTalesMode($mode) + { + return $this->_state->setTalesMode($mode); + } + + public function splitExpression($src) + { + preg_match_all('/(?:[^;]+|;;)+/sm', $src, $array); + $array = $array[0]; + foreach($array as &$a) $a = str_replace(';;',';',$a); + return $array; + } + + public function evaluateExpression($src) + { + return $this->_state->evalTalesExpression($src); + } + + public function indent() + { + $this->_indentation ++; + } + + public function unindent() + { + $this->_indentation --; + } + + public function flush() + { + $this->flushCode(); + $this->flushHtml(); + } + + public function noThrow($bool) + { + if ($bool){ + $this->pushCode('$ctx->noThrow(true)'); + } + else { + $this->pushCode('$ctx->noThrow(false)'); + } + } + + public function flushCode() + { + if (count($this->_codeBuffer) == 0) + return; + + // special treatment for one code line + if (count($this->_codeBuffer) == 1){ + $codeLine = $this->_codeBuffer[0]; + // avoid adding ; after } and { + if (!preg_match('/\}|\{\s+$/', $codeLine)) + $this->_result .= '<?php '.$codeLine.'; ?>'; + else + $this->_result .= '<?php '.$codeLine.' ?>'; + $this->_codeBuffer = array(); + return; + } + + $this->_result .= '<?php '."\n"; + foreach ($this->_codeBuffer as $codeLine) { + // avoid adding ; after } and { + if (!preg_match('/\}|\{\s+$/', $codeLine)) + $this->_result .= $codeLine . ' ;'."\n"; + else + $this->_result .= $codeLine; + } + $this->_result .= '?>'; + $this->_codeBuffer = array(); + } + + public function flushHtml() + { + if (count($this->_htmlBuffer) == 0) return; + + $this->_result .= join( '', $this->_htmlBuffer ); + $this->_htmlBuffer = array(); + } + + public function doDoctype() + { + if ($this->_doctype){ + $code = '$ctx->setDocType(\''.$this->_doctype.'\')'; + $this->pushCode($code); + } + } + + public function doXmlDeclaration() + { + if ($this->_xmldeclaration){ + $code = '$ctx->setXmlDeclaration(\''.$this->_xmldeclaration.'\')'; + $this->pushCode($code); + } + } + + public function doFunction($name, $params) + { + $name = $this->_functionPrefix . $name; + $this->pushGeneratorContext(); + $this->pushCode("function $name( $params ) {\n"); + $this->indent(); + array_push($this->_segments, 'function'); + } + + public function doComment($comment) + { + $comment = str_replace('*/', '* /', $comment); + $this->pushCode("/* $comment */"); + } + + public function doEval($code) + { + $this->pushCode($code); + } + + public function doForeach($out, $source) + { + array_push($this->_segments, 'foreach'); + $this->pushCode("foreach ($source as \$__key__ => $out ):"); + $this->indent(); + } + + public function doEnd() + { + $segment = array_pop($this->_segments); + $this->unindent(); + if ($segment == 'function') { + $this->pushCode("\n}\n\n"); + $functionCode = $this->getResult(); + $this->popGeneratorContext(); + $this->_result = $functionCode . $this->_result; + } + else if ($segment == 'try') + $this->pushCode('}'); + else if ($segment == 'catch') + $this->pushCode('}'); + else + $this->pushCode("end$segment"); + } + + public function doTry() + { + array_push($this->_segments, 'try'); + $this->pushCode('try {'); + $this->indent(); + } + + public function doSetVar($varname, $code) + { + $this->pushCode($varname.' = '.$code); + } + + public function doCatch($catch) + { + $this->doEnd(); + array_push($this->_segments, 'catch'); + $code = 'catch(%s) {'; + $this->pushCode(sprintf($code, $catch)); + $this->indent(); + } + + public function doIf($condition) + { + array_push($this->_segments, 'if'); + $this->pushCode('if ('.$condition.'): '); + $this->indent(); + } + + public function doElseIf($condition) + { + $this->unindent(); + $this->pushCode('elseif ('.$condition.'): '); + $this->indent(); + } + + public function doElse() + { + $this->unindent(); + $this->pushCode('else: '); + $this->indent(); + } + + public function doEcho($code) + { + $this->flush(); + $html = '<?php echo %s ?>'; + $html = sprintf($html, $this->escapeCode($code)); + $this->pushHtml($html); + } + + public function doEchoRaw($code) + { + $this->pushHtml('<?php echo '.$code.' ?>'); + } + + public function pushHtml($html) + { + $html = $this->_state->interpolateTalesVarsInHtml($html); + $this->flushCode(); + array_push($this->_htmlBuffer, $html); + } + + public function pushRawHtml($html) + { + $this->flushCode(); + array_push($this->_htmlBuffer, $html); + } + + public function pushString($str) + { + $this->flushCode(); + + // replace ${var} inside strings + while (preg_match('/^(.*?)((?<!\$)\$\{[^\}]*?\})(.*?)$/s', $str, $m)){ + list(,$before,$expression,$after) = $m; + + $before = $this->escapeLTandGT($before); + array_push($this->_htmlBuffer, $before); + + $expression = $this->_state->interpolateTalesVarsInHtml($expression); + array_push($this->_htmlBuffer, $expression); + + $str = $after; + } + + $str = str_replace('$${', '${', $str); + + if (strlen($str) > 0){ + $str = $this->escapeLTandGT($str); + array_push($this->_htmlBuffer, $str); + } + } + + public function pushCode($codeLine) + { + $this->flushHtml(); + $codeLine = $this->indentSpaces() . $codeLine; + array_push($this->_codeBuffer, $codeLine); + } + + public function escapeLTandGT($str){ + $str = str_replace('<', '<', $str); + $str = str_replace('>', '>', $str); + return $str; + } + + public function escapeCode($code) + { + return $this->_state->htmlchars($code); + } + + public function getEncoding() + { + return $this->_state->getEncoding(); + } + + public function interpolateTalesVarsInString($src) + { + return $this->_state->interpolateTalesVarsInString($src); + } + + public function setDebug($bool) + { + return $this->_state->setDebug($bool); + } + + public function isDebugOn() + { + return $this->_state->isDebugOn(); + } + + public function getOutputMode() + { + return $this->_state->getOutputMode(); + } + + public function pushContext() + { + $this->pushCode('$ctx = $tpl->pushContext()'); + } + + public function popContext() + { + $this->pushCode('$ctx = $tpl->popContext()'); + } + + // ~~~~~ Private members ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + private function indentSpaces() + { + return str_repeat("\t", $this->_indent); + } + + private function pushGeneratorContext() + { + array_push($this->_contexts, clone $this); + $this->_result = ""; + $this->_indent = 0; + $this->_codeBuffer = array(); + $this->_htmlBuffer = array(); + $this->_segments = array(); + } + + private function popGeneratorContext() + { + $oldContext = array_pop($this->_contexts); + $this->_result = $oldContext->_result; + $this->_indent = $oldContext->_indent; + $this->_codeBuffer = $oldContext->_codeBuffer; + $this->_htmlBuffer = $oldContext->_htmlBuffer; + $this->_segments = $oldContext->_segments; + } + + private $_state; + private $_result = ""; + private $_indent = 0; + private $_codeBuffer = array(); + private $_htmlBuffer = array(); + private $_segments = array(); + private $_contexts = array(); + private $_functionPrefix = ""; + private $_doctype = ""; + private $_xmldeclaration = ""; +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/ElementWriter.php b/wp-content/themes/vanilla/PHPTAL/Php/ElementWriter.php new file mode 100644 index 000000000..4dd24d176 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/ElementWriter.php @@ -0,0 +1,101 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +/** + * @package phptal.php + */ +class PHPTAL_Php_ElementWriter +{ + public function __construct(PHPTAL_Php_CodeWriter $writer, PHPTAL_Php_Element $tag) + { + $this->_writer = $writer; + $this->_tag = $tag; + } + + public function writeHead() + { + if ($this->_tag->headFootDisabled) + return; + + if ($this->_tag->headFootPrintCondition){ + $this->_writer->doIf($this->_tag->headFootPrintCondition); + } + + $this->_writer->pushHtml('<'.$this->_tag->name); + $this->_writeAttributes(); + + if ($this->_tag->isEmptyNode()){ + $this->_writer->pushHtml('/>'); + } + else { + $this->_writer->pushHtml('>'); + } + + if ($this->_tag->headFootPrintCondition){ + $this->_writer->doEnd(); + } + + } + + public function writeFoot() + { + if ($this->_tag->headFootDisabled) + return; + if ($this->_tag->isEmptyNode()) + return; + + if ($this->_tag->headFootPrintCondition){ + $this->_writer->doIf($this->_tag->headFootPrintCondition); + } + + $this->_writer->pushHtml('</'.$this->_tag->name.'>'); + + if ($this->_tag->headFootPrintCondition){ + $this->_writer->doEnd(); + } + } + + public function writeAttributes() + { + $fullreplaceRx = PHPTAL_Php_Attribute_TAL_Attributes::REGEX_FULL_REPLACE; + foreach ($this->_tag->attributes as $key=>$value) { + if (preg_match($fullreplaceRx, $value)){ + $this->_writer->pushHtml($value); + } + /* + else if (strpos('<?php', $value) === 0){ + $this->_writer->pushHtml(' '.$key.'="'); + $this->_writer->pushRawHtml($value); + $this->_writer->pushHtml('"'); + } + */ + else { + $this->_writer->pushHtml(' '.$key.'="'.$value.'"'); + } + } + } + + private $_tag; + private $_writer; +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Node.php b/wp-content/themes/vanilla/PHPTAL/Php/Node.php new file mode 100644 index 000000000..5667a5611 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Node.php @@ -0,0 +1,507 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +require_once PHPTAL_DIR.'PHPTAL/Dom/Defs.php'; +require_once PHPTAL_DIR.'PHPTAL/Php/CodeWriter.php'; +require_once PHPTAL_DIR.'PHPTAL/Php/Attribute.php'; + +/** + * Document node abstract class. + * @package phptal.php + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +abstract class PHPTAL_Php_Node +{ + public $node; + public $generator; + + public function __construct(PHPTAL_Php_CodeWriter $generator, PHPTAL_Dom_Node $node) + { + $this->generator = $generator; + $this->node = $node; + } + + public function getSourceFile() + { + return $this->node->getSourceFile(); + } + + public function getSourceLine() + { + return $this->node->getSourceLine(); + } + + public abstract function generate(); +} + +/** + * Node container. + * + * @package phptal.php + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Php_Tree extends PHPTAL_Php_Node +{ + public $children; + + public function __construct(PHPTAL_Php_CodeWriter $gen, $node) + { + parent::__construct($gen,$node); + $this->children = array(); + foreach ($node->getChildren() as $child){ + if ($child instanceOf PHPTAL_Dom_Element){ + $gen = new PHPTAL_Php_Element($this->generator, $child); + } + else if ($child instanceOf PHPTAL_Dom_Text){ + $gen = new PHPTAL_Php_Text($this->generator, $child); + } + else if ($child instanceOf PHPTAL_Dom_Doctype){ + $gen = new PHPTAL_Php_Doctype($this->generator, $child); + } + else if ($child instanceOf PHPTAL_Dom_XmlDeclaration){ + $gen = new PHPTAL_Php_XmlDeclaration($this->generator, $child); + } + else if ($child instanceOf PHPTAL_Dom_Specific){ + $gen = new PHPTAL_Php_Specific($this->generator, $child); + } + else if ($child instanceOf PHPTAL_Dom_Comment){ + $gen = new PHPTAL_Php_Comment($this->generator, $child); + } + else { + throw new PHPTAL_Exception('Unhandled node class '.get_class($child)); + } + array_push($this->children, $gen); + } + } + + public function generate() + { + try + { + foreach ($this->children as $child){ + $child->generate(); + } + } + catch(PHPTAL_Exception $e) + { + $e->hintSrcPosition($this->getSourceFile(), $this->getSourceLine()); + throw $e; + } + } +} + +/** + * Document Tag representation. + * + * This is the main class used by PHPTAL because TAL is a Template Attribute + * Language, other Node kinds are (usefull) toys. + * + * @package phptal.php + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Php_Element extends PHPTAL_Php_Tree +{ + const ERR_ATTRIBUTES_CONFLICT = + "Attribute conflict in '%s' at line '%d', '%s' cannot appear with '%s'"; + + public $name; + public $attributes = array(); + public $talAttributes = array(); + public $overwrittenAttributes = array(); + public $replaceAttributes = array(); + public $contentAttributes = array(); + public $surroundAttributes = array(); + public $headFootDisabled = false; + public $headFootPrintCondition = false; + public $hidden = false; + + public function __construct(PHPTAL_Php_CodeWriter $generator, $node) + { + parent::__construct($generator, $node); + $this->name = $node->getName(); + $this->attributes = $node->attributes; + $this->xmlns = $node->getXmlnsState(); + $this->prepare(); + } + + private function prepare() + { + $this->prepareAttributes(); + $this->separateAttributes(); + $this->orderTalAttributes(); + } + + public function generate() + { + if ($this->generator->isDebugOn()){ + $this->generator->pushCode('$ctx->__line = '.$this->getSourceLine()); + $this->generator->doComment('tag "'.$this->name.'" from line '.$this->getSourceLine()); + } + + + if (count($this->replaceAttributes) > 0) { + $this->generateSurroundHead(); + foreach ($this->replaceAttributes as $att) { + $att->start(); + $att->end(); + } + $this->generateSurroundFoot(); + return; + } + + $this->generateSurroundHead(); + // a surround tag may decide to hide us (tal:define for example) + if (!$this->hidden){ + $this->generateHead(); + $this->generateContent(); + $this->generateFoot(); + } + $this->generateSurroundFoot(); + } + + /** Returns true if the element contains specified PHPTAL attribute. */ + public function hasAttribute($name) + { + return $this->node->hasAttribute($name); + } + + /** Returns the value of specified PHPTAL attribute. */ + public function getAttribute($name) + { + return $this->node->getAttribute($name); + } + + public function isOverwrittenAttribute($name) + { + return array_key_exists($name, $this->overwrittenAttributes); + } + + public function getOverwrittenAttributeVarName($name) + { + return $this->overwrittenAttributes[$name]; + } + + public function overwriteAttributeWithPhpValue($name, $phpVariable) + { + $this->attributes[$name] = '<?php echo '.$phpVariable.' ?>'; + $this->overwrittenAttributes[$name] = $phpVariable; + } + + /** + * Returns true if this element or one of its PHPTAL attributes has some + * content to print (an empty text node child does not count). + */ + public function hasRealContent() + { + return $this->node->hasRealContent() + || count($this->contentAttributes) > 0; + } + + public function hasRealAttributes() + { + return ((count($this->attributes) - count($this->talAttributes)) > 0) || $this->hasAttribute('tal:attributes'); + } + + // ~~~~~ Generation methods may be called by some PHPTAL attributes ~~~~~ + + public function generateSurroundHead() + { + foreach ($this->surroundAttributes as $att) { + $att->start(); + } + } + + public function generateHead() + { + if ($this->headFootDisabled) return; + if ($this->headFootPrintCondition) { + $this->generator->doIf($this->headFootPrintCondition); + } + + $this->generator->pushHtml('<'.$this->name); + $this->generateAttributes(); + + if ($this->isEmptyNode()){ + $this->generator->pushHtml('/>'); + } + else { + $this->generator->pushHtml('>'); + } + + if ($this->headFootPrintCondition) { + $this->generator->doEnd(); + } + } + + public function generateContent($realContent=false) + { + if ($this->isEmptyNode()){ + return; + } + + if (!$realContent && count($this->contentAttributes) > 0) { + foreach ($this->contentAttributes as $att) { + $att->start(); + $att->end(); + } + return; + } + + parent::generate(); + } + + public function generateFoot() + { + if ($this->headFootDisabled) + return; + if ($this->isEmptyNode()) + return; + + if ($this->headFootPrintCondition) { + $this->generator->doIf($this->headFootPrintCondition); + } + + $this->generator->pushHtml( '</'.$this->name.'>' ); + + if ($this->headFootPrintCondition) { + $this->generator->doEnd(); + } + } + + public function generateSurroundFoot() + { + for ($i = (count($this->surroundAttributes)-1); $i >= 0; $i--) { + $this->surroundAttributes[$i]->end(); + } + } + + // ~~~~~ Private members ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + private function generateAttributes() + { + // A phptal attribute can modify any node attribute replacing + // its value by a <?php echo $somevalue ?\ >. + // + // The entire attribute (key="value") can be replaced using the + // '$__ATT_' value code, it is very usefull for xhtml boolean + // attributes like selected, checked, etc... + // + // example: + // + // $tag->generator->pushCode( + // '$__ATT_checked = $somecondition ? \'checked="checked"\' : \'\'' + // ); + // $tag->attributes['checked'] = '<?php echo $__ATT_checked ?\>'; + // + + $fullreplaceRx = PHPTAL_Php_Attribute_TAL_Attributes::REGEX_FULL_REPLACE; + foreach ($this->attributes as $key=>$value) { + if (preg_match($fullreplaceRx, $value)){ + $this->generator->pushHtml($value); + } + else if (strpos($value,'<?php') === 0){ + $this->generator->pushHtml(' '.$key.'="'); + $this->generator->pushRawHtml($value); + $this->generator->pushHtml('"'); + } + else { + $this->generator->pushHtml(' '.$key.'="'.$value.'"'); + } + } + } + + private function getNodePrefix() + { + $result = false; + if (preg_match('/^(.*?):block$/', $this->name, $m)){ + list(,$result) = $m; + } + return $result; + } + + private function isEmptyNode() + { + return ($this->generator->getOutputMode() == PHPTAL::XHTML && PHPTAL_Dom_Defs::getInstance()->isEmptyTag($this->name)) || + ($this->generator->getOutputMode() == PHPTAL::XML && !$this->hasContent()); + } + + private function hasContent() + { + return count($this->children) > 0 || count($this->contentAttributes) > 0; + } + + private function prepareAttributes() + { + //TODO: use registered namespaces instead of the raw list + if (preg_match('/^(tal|metal|phptal|i18n):block$/', $this->name, $m)) { + $this->headFootDisabled = true; + list(,$ns) = $m; + $attributes = array(); + foreach ($this->attributes as $key=>$value) { + if ($this->xmlns->isPhpTalAttribute("$ns:$key")) { + $attributes["$ns:$key"] = $value; + } + else { + $attributes[$key] = $value; + } + } + $this->attributes = $attributes; + } + } + + private function separateAttributes() + { + $attributes = array(); + $this->talAttributes = array(); + foreach ($this->attributes as $key=>$value) { + // remove handled xml namespaces + if (PHPTAL_Dom_Defs::getInstance()->isHandledXmlNs($key,$value)){ + } + else if ($this->xmlns->isPhpTalAttribute($key)) { + $this->talAttributes[$key] = $value; + } + else if (PHPTAL_Dom_Defs::getInstance()->isBooleanAttribute($key)) { + $attributes[$key] = $key; + } + else { + $attributes[$key] = $value; + } + } + $this->attributes = $attributes; + } + + private function orderTalAttributes() + { + $attributes = array(); + foreach ($this->talAttributes as $key=>$exp){ + $name = $this->xmlns->unAliasAttribute($key); + $att = PHPTAL_Dom_Defs::getInstance()->getNamespaceAttribute($name); + if (array_key_exists($att->getPriority(), $attributes)){ + $err = sprintf(self::ERR_ATTRIBUTES_CONFLICT, + $this->name, + $this->getSourceLine(), + $key, + $attributes[$att->getPriority()][0] + ); + throw new PHPTAL_Exception($err); + } + $attributes[$att->getPriority()] = array($key, $att, $exp); + } + ksort($attributes); + + $this->talHandlers = array(); + foreach ($attributes as $prio => $dat){ + list($key, $att, $exp) = $dat; + $handler = $att->createAttributeHandler($this, $exp); + $this->talHandlers[$prio] = $handler; + + if ($att instanceOf PHPTAL_NamespaceAttributeSurround) + $this->surroundAttributes[] = $handler; + else if ($att instanceOf PHPTAL_NamespaceAttributeReplace) + $this->replaceAttributes[] = $handler; + else if ($att instanceOf PHPTAL_NamespaceAttributeContent) + $this->contentAttributes[] = $handler; + else + throw new PHPTAL_Exception("Unknown namespace attribute class ".get_class($att)); + + } + } +} + +/** + * @package phptal.php + */ +class PHPTAL_Php_Comment extends PHPTAL_Php_Node +{ + public function generate() + { + $this->generator->pushRawHtml($this->node->getValue()); + } +} + +/** + * Document text data representation. + * @package phptal.php + */ +class PHPTAL_Php_Text extends PHPTAL_Php_Node +{ + public function generate() + { + $this->generator->pushString($this->node->getValue()); + } +} + +/** + * Comment, preprocessor, etc... representation. + * + * @package phptal.php + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Php_Specific extends PHPTAL_Php_Node +{ + public function generate() + { + $this->generator->pushHtml($this->node->getValue()); + } +} + +/** + * Document doctype representation. + * + * @package phptal.php + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Php_Doctype extends PHPTAL_Php_Node +{ + public function __construct(PHPTAL_Php_CodeWriter $generator, $node) + { + parent::__construct($generator, $node); + $this->generator->setDocType($this); + } + + public function generate() + {; + $this->generator->doDoctype(); + } +} + +/** + * XML declaration node. + * + * @package phptal.php + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Php_XmlDeclaration extends PHPTAL_Php_Node +{ + public function __construct(PHPTAL_Php_CodeWriter $gen, $node) + { + parent::__construct($gen, $node); + $this->generator->setXmlDeclaration($this); + } + + public function generate() + { + $this->generator->doXmlDeclaration(); + } +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/State.php b/wp-content/themes/vanilla/PHPTAL/Php/State.php new file mode 100644 index 000000000..ce1ce9c6a --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/State.php @@ -0,0 +1,152 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +require_once PHPTAL_DIR.'PHPTAL/Php/Tales.php'; + +/** + * @package phptal.php + */ +class PHPTAL_Php_State +{ + public function __construct() + { + $this->_debug = false; + $this->_talesMode = 'tales'; + $this->_encoding = 'UTF-8'; + $this->_outputMode = ''; + } + + public function setDebug($bool) + { + $old = $this->_debug; + $this->_debug = $bool; + return $old; + } + + public function isDebugOn() + { + return $this->_debug; + } + + public function setTalesMode($mode) + { + $old = $this->_talesMode; + $this->_talesMode = $mode; + return $old; + } + + public function getTalesMode() + { + return $this->_talesMode; + } + + public function setEncoding($enc) + { + $this->_encoding = $enc; + } + + public function getEncoding() + { + return $this->_encoding; + } + + public function setOutputMode($mode) + { + $this->_outputMode = $mode; + } + + public function getOutputMode() + { + return $this->_outputMode; + } + + public function evalTalesExpression($expression) + { + if ($this->_talesMode == 'php') + return PHPTAL_TalesInternal::php($expression); + return phptal_tales($expression); + } + + public function interpolateTalesVarsInString($string) + { + if ($this->_talesMode == 'tales'){ + return PHPTAL_TalesInternal::string($string); + } + + // replace ${var} found in expression + while (preg_match('/(?<!\$)\$\{([^\}]+)\}/ism', $string, $m)){ + list($ori, $exp) = $m; + $php = PHPTAL_TalesInternal::php($exp); + $repl = '\'.%s.\''; + $repl = sprintf($repl, $php, $this->_encoding); + $string = str_replace($ori, $repl, $string); + } + $string = str_replace('$${', '${', $string); + return '\''.$string.'\''; + } + + private function _interpolateTalesVarsStructure($matches) { + return '<?php echo '.phptal_tale($matches[1]).' ?>'; + } + + private function _interpolateTalesVarsEscaped($matches) { + return '<?php echo phptal_escape('.phptal_tale($matches[1]).', ENT_QUOTES, \''.$this->_encoding.'\');?>'; + } + + public function interpolateTalesVarsInHtml($src) + { + if ($this->_talesMode == 'tales'){ + $result = preg_replace_callback('/(?<!\$)\$\{structure (.*?)\}/ism', array($this,'_interpolateTalesVarsStructure'), $src); + $result = preg_replace_callback('/(?<!\$)\$\{(.*?)\}/ism', array($this,'_interpolateTalesVarsEscaped'), $result); + $result = str_replace('$${', '${', $result); + return $result; + } + + while (preg_match('/(?<!\$)\${(structure )?([^\}]+)\}/ism', $src, $m)){ + list($ori, $struct, $exp) = $m; + $php = PHPTAL_TalesInternal::php($exp); + // when structure keyword is specified the output is not html + // escaped + if ($struct){ + $repl = '<?php echo '.$php.'; ?>'; + } + else { + $repl = '<?php echo '.$this->htmlchars($php).'; ?>'; + } + $src = str_replace($ori, $repl, $src); + } + + return str_replace('$${','${', $src); + } + + public function htmlchars($php) + { + return 'phptal_escape('.$php.', ENT_QUOTES, \''.$this->_encoding.'\')'; + } + + private $_debug; + private $_talesMode; + private $_encoding; + private $_outputMode; +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Tales.php b/wp-content/themes/vanilla/PHPTAL/Php/Tales.php new file mode 100644 index 000000000..0fb7345ab --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Tales.php @@ -0,0 +1,135 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +define('PHPTAL_TALES_DEFAULT_KEYWORD', '_DEFAULT_DEFAULT_DEFAULT_DEFAULT_'); +define('PHPTAL_TALES_NOTHING_KEYWORD', '_NOTHING_NOTHING_NOTHING_NOTHING_'); + + +// TALES Specification 1.3 +// +// Expression ::= [type_prefix ':'] String +// type_prefix ::= Name +// +// Examples: +// +// a/b/c +// path:a/b/c +// nothing +// path:nothing +// python: 1 + 2 +// string:Hello, ${username} +// +// +// Builtin Names in Page Templates (for PHPTAL) +// +// * nothing - special singleton value used by TAL to represent a +// non-value (e.g. void, None, Nil, NULL). +// +// * default - special singleton value used by TAL to specify that +// existing text should not be replaced. +// +// * repeat - the repeat variables (see RepeatVariable). +// + +function _phptal_tale_wrap($array, $nothrow) +{ + if (count($array)==1) return '($ctx->noThrow('.($nothrow?'true':'false').')||1?('. + ($array[0]==PHPTAL_TALES_NOTHING_KEYWORD?'NULL':$array[0]). + '):"")'; + + $expr = array_shift($array); + + return "((\$tmp5=$expr) && (\$ctx->noThrow(false)||1)?\$tmp5:"._phptal_tale_wrap($array, $nothrow).')'; +} + +/** translates array of alternative expressions into single PHP expression. Identical to phptal_tales() for singular expressions. */ +function phptal_tale($expression, $nothrow=false) +{ + $r = phptal_tales($expression,true); + if (!is_array($r)) return $r; + + // this weird ternary operator construct is to execute noThrow inside the expression + return '($ctx->noThrow(true)||1?'._phptal_tale_wrap($r, $nothrow).':"")'; +} + +function phptal_tales($expression, $nothrow=false) +{ + $expression = trim($expression); + + // Look for tales modifier (string:, exists:, etc...) + //if (preg_match('/^([-a-z]+):(.*?)$/', $expression, $m)) { + if (preg_match('/^([a-z][-.a-z]*[a-z]):(.*?)$/i', $expression, $m)) { + list(,$typePrefix,$expression) = $m; + } + // may be a 'string' + else if (preg_match('/^\'((?:[^\']|\\\\.)*)\'$/', $expression, $m)) { + $expression = stripslashes($m[1]); + $typePrefix = 'string'; + } + // failback to path: + else { + $typePrefix = 'path'; + } + + // is a registered TALES expression modifier + if(PHPTAL_TalesRegistry::getInstance()->isRegistered($typePrefix)) { + $callback = PHPTAL_TalesRegistry::getInstance()->getCallback($typePrefix); + return call_user_func($callback, $expression, $nothrow); + } + + // class method + if (strpos($typePrefix, '.')){ + $classCallback = explode('.', $typePrefix, 2); + $callbackName = NULL; + if(!is_callable($classCallback, FALSE, $callbackName)) { + $err = 'Unknown phptal modifier %s function %s does not exists or is not statically callable.'; + $err = sprintf($err, $typePrefix, $callbackName); + throw new PHPTAL_Exception($err); + } + $ref = new ReflectionClass($classCallback[0]); + if(!$ref->implementsInterface('PHPTAL_Tales')){ + $err = 'Unable to use phptal modifier %s as the class %s does not implement the PHPTAL_Tales interface.'; + $err = sprintf($err, $typePrefix, $callbackName); + throw new PHPTAL_Exception($err); + } + return call_user_func($classCallback, $expression, $nothrow); + } + + // check if it is implemented via code-generating function + $func = 'phptal_tales_'.str_replace('-','_',$typePrefix); + if (function_exists($func)) { + return $func($expression, $nothrow); + } + + // check if it is implemented via runtime function + $runfunc = 'phptal_runtime_tales_'.str_replace('-','_',$typePrefix); + if (function_exists($runfunc)) { + return "$runfunc(".phptal_tale($expression, $nothrow).")"; + } + + throw new PHPTAL_Exception("Unknown phptal modifier '$typePrefix'. Function '$func' does not exist"); +} + +// Register internal Tales expression modifiers +require_once PHPTAL_DIR.'PHPTAL/Php/TalesInternal.php'; +PHPTAL_TalesInternal::registerInternalTales(); +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/TalesChainExecutor.php b/wp-content/themes/vanilla/PHPTAL/Php/TalesChainExecutor.php new file mode 100644 index 000000000..f0d649ab4 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/TalesChainExecutor.php @@ -0,0 +1,99 @@ +<?php + +/** + * @package phptal.php + */ +interface PHPTAL_Php_TalesChainReader +{ + public function talesChainNothingKeyword(PHPTAL_Php_TalesChainExecutor $executor); + public function talesChainDefaultKeyword(PHPTAL_Php_TalesChainExecutor $executor); + public function talesChainPart(PHPTAL_Php_TalesChainExecutor $executor, $expression, $islast); +} + +/** + * @package phptal.php + */ +class PHPTAL_Php_TalesChainExecutor +{ + const CHAIN_BREAK = 1; + const CHAIN_CONT = 2; + + public function __construct($generator, $chain, $reader) + { + assert(is_array($chain)); + $this->_chain = $chain; + $this->_chainStarted = false; + $this->_chainGenerator = $generator; + $this->_reader = $reader; + $this->_executeChain(); + } + + public function doIf($condition) + { + if ($this->_chainStarted == false){ + $this->_chainStarted = true; + $this->_chainGenerator->doIf($condition); + } + else { + $this->_chainGenerator->doElseIf($condition); + } + } + + public function doElse() + { + if ($this->_chainStarted){ + $this->_chainGenerator->doElse(); + } + } + + public function breakChain() + { + $this->_state = self::CHAIN_BREAK; + } + + public function continueChain() + { + $this->_state = self::CHAIN_CONT; + } + + private function _executeChain() + { + $this->_chainGenerator->noThrow(true); + + end($this->_chain); $lastkey = key($this->_chain); + + foreach ($this->_chain as $key => $exp){ + $this->_state = 0; + if ($exp == PHPTAL_TALES_NOTHING_KEYWORD){ + $this->_reader->talesChainNothingKeyword($this); + if ($this->_state == self::CHAIN_BREAK) + break; + if ($this->_state == self::CHAIN_CONT) + continue; + } + else if ($exp == PHPTAL_TALES_DEFAULT_KEYWORD){ + $this->_reader->talesChainDefaultKeyword($this); + if ($this->_state == self::CHAIN_BREAK) + break; + if ($this->_state == self::CHAIN_CONT) + continue; + } + else { + $this->_reader->talesChainPart($this, $exp, $lastkey === $key); + if ($this->_state == self::CHAIN_BREAK) + break; + if ($this->_state == self::CHAIN_CONT) + continue; + } + } + $this->_chainGenerator->doEnd(); + $this->_chainGenerator->noThrow(false); + } + + private $_state = 0; + private $_chain; + private $_chainStarted = false; + private $_chainGenerator = null; +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/TalesInternal.php b/wp-content/themes/vanilla/PHPTAL/Php/TalesInternal.php new file mode 100644 index 000000000..3cfe2c59f --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/TalesInternal.php @@ -0,0 +1,331 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// Moritz Bechler <mbechler@eenterphace.org> +// + +require_once PHPTAL_DIR.'PHPTAL/TalesRegistry.php'; + +class PHPTAL_TalesInternal implements PHPTAL_Tales { + + // + // This function registers all internal expression modifiers + // + static public function registerInternalTales() { + + static $registered = false; + + if($registered) { + return; + } + + $registry = PHPTAL_TalesRegistry::getInstance(); + + $registry->registerPrefix('not', array(__CLASS__, 'not')); + $registry->registerPrefix('path', array(__CLASS__, 'path')); + $registry->registerPrefix('string', array(__CLASS__, 'string')); + $registry->registerPrefix('php', array(__CLASS__, 'php')); + $registry->registerPrefix('exists', array(__CLASS__, 'exists')); + $registry->registerPrefix('number', array(__CLASS__, 'number')); + $registry->registerPrefix('true', array(__CLASS__, 'true')); + + $registered = true; + } + + static public function true($src, $nothrow) + { + return sprintf('phptal_true($ctx, %s)', self::string(trim($src), $nothrow)); + } + + // + // not: + // + // not: Expression + // + // evaluate the expression string (recursively) as a full expression, + // and returns the boolean negation of its value + // + // return boolean based on the following rules: + // + // 1. integer 0 is false + // 2. integer > 0 is true + // 3. an empty string or other sequence is false + // 4. a non-empty string or other sequence is true + // 5. a non-value (e.g. void, None, Nil, NULL, etc) is false + // 6. all other values are implementation-dependent. + // + // Examples: + // + // not: exists: foo/bar/baz + // not: php: object.hasChildren() + // not: string:${foo} + // not: foo/bar/booleancomparable + // + static public function not($expression, $nothrow) + { + return '!(' . phptal_tales($expression, $nothrow) . ')'; + } + + + // + // path: + // + // PathExpr ::= Path [ '|' Path ]* + // Path ::= variable [ '/' URL_Segment ]* + // variable ::= Name + // + // Examples: + // + // path: username + // path: user/name + // path: object/method/10/method/member + // path: object/${dynamicmembername}/method + // path: maybethis | path: maybethat | path: default + // + // PHPTAL: + // + // 'default' may lead to some 'difficult' attributes implementation + // + // For example, the tal:content will have to insert php code like: + // + // if (isset($ctx->maybethis)) { + // echo $ctx->maybethis; + // } + // else if (isset($ctx->maybethat) { + // echo $ctx->maybethat; + // } + // else { + // // process default tag content + // } + // + // @returns string or array + // + static public function path($expression, $nothrow=false) + { + $expression = trim($expression); + if ($expression == 'default') return PHPTAL_TALES_DEFAULT_KEYWORD; + if ($expression == 'nothing') return PHPTAL_TALES_NOTHING_KEYWORD; + if ($expression == '') return PHPTAL_TALES_NOTHING_KEYWORD; + + // split OR expressions terminated by a string + if (preg_match('/^(.*?)\s*\|\s*?(string:.*)$/sm', $expression, $m)){ + list(, $expression, $string) = $m; + } + // split OR expressions terminated by a 'fast' string + else if (preg_match('/^(.*?)\s*\|\s*\'((?:[^\'\\\\]|\\\\.)*)\'\s*$/sm', $expression, $m)){ + list(, $expression, $string) = $m; + $string = 'string:'.stripslashes($string); + } + + // split OR expressions + $exps = preg_split('/\s*\|\s*/sm', $expression); + + // if (many expressions) or (expressions or terminating string) found then + // generate the array of sub expressions and return it. + if (count($exps) > 1 || isset($string)) { + $result = array(); + foreach ($exps as $exp) { + $result[] = phptal_tales(trim($exp), true); + } + if (isset($string)){ + $result[] = phptal_tales($string, true); + } + return $result; + } + + // only one expression to process + + // first evaluate ${foo} inside the expression and threat the expression + // as if it was a string to interpolate + $expression = self::string($expression); + $expression = substr($expression, 1, -1); + + $pos = strpos($expression, '/'); + // if no sub part for this expression, just optimize the generated code + // and access the $ctx->var + if ($pos === false) { + if (!self::checkExpressionPart($expression)) throw new PHPTAL_Exception("Invalid TALES path: '$expression', expected variable name"); + return '$ctx->'.$expression; + } + + // otherwise we have to call phptal_path() to resolve the path at runtime + // extract the first part of the expression (it will be the phptal_path() + // $base and pass the remaining of the path to phptal_path() + $next = substr($expression, 0, $pos); + $expression = substr($expression, $pos+1); + + if (!self::checkExpressionPart($next)) throw new PHPTAL_Exception("Invalid TALES path: '$next/$expression', expected '$next' to be variable name"); + + // return php code invoking phptal_path($next, $expression, $notrhow) + return 'phptal_path($ctx->'.$next.', \''.$expression.'\''.($nothrow ? ', true' : '').')'; + } + + private static function checkExpressionPart($expression) + { + return preg_match('/^(\$?[a-z_][a-z0-9_]*|{.*})$/i',$expression); + } + + // + // string: + // + // string_expression ::= ( plain_string | [ varsub ] )* + // varsub ::= ( '$' Path ) | ( '${' Path '}' ) + // plain_string ::= ( '$$' | non_dollar )* + // non_dollar ::= any character except '$' + // + // Examples: + // + // string:my string + // string:hello, $username how are you + // string:hello, ${user/name} + // string:you have $$130 in your bank account + // + static public function string($expression, $nothrow=false) + { + // This is a simple parser which evaluates ${foo} inside + // 'string:foo ${foo} bar' expressions, it returns the php code which will + // print the string with correct interpollations. + // Nothing special there :) + + $inPath = false; + $inAccoladePath = false; + $lastWasDollar = false; + $result = ''; + $len = strlen($expression); + for ($i=0; $i<$len; $i++) { + $c = $expression[$i]; + switch ($c) { + case '$': + if ($lastWasDollar) { + $lastWasDollar = false; + } + else { + $lastWasDollar = true; + $c = ''; + } + break; + + case '\\': + $c = '\\\\'; + break; + + case '\'': + $c = '\\\''; + break; + + case '{': + if ($lastWasDollar) { + $lastWasDollar = false; + $inAccoladePath = true; + $subPath = ''; + $c = ''; + } + break; + + case '}': + if ($inAccoladePath) { + $inAccoladePath = false; + $subEval = self::path($subPath); + if (is_array($subEval)) { + $err = 'cannot use | operator in evaluated expressions'; + throw new PHPTAL_Exception($err); + } + $result .= "'." . $subEval . ".'"; + $subPath = ''; + $lastWasDollar = false; + $c = ''; + } + break; + + default: + if ($lastWasDollar) { + $lastWasDollar = false; + $inPath = true; + $subPath = $c; + $c = ''; + } + else if ($inAccoladePath) { + $subPath .= $c; + $c = ''; + } + else if ($inPath) { + $t = strtolower($c); + if (($t >= 'a' && $t <= 'z') || ($t >= '0' && $t <= '9') || ($t == '_')){ + $subPath .= $c; + $c = ''; + } + else { + $inPath = false; + $subEval = self::path($subPath); + if (is_array($subEval)) { + $err = 'cannot use | operator in evaluated expressions'; + throw new PHPTAL_Exception($err); + } + $result .= "'." . $subEval . ".'"; + } + } + break; + } + $result .= $c; + } + if ($inPath){ + $subEval = self::path($subPath); + if (is_array($subEval)){ + $err = 'cannot use | operator in evaluated expressions'; + throw new PHPTAL_Exception($err); + } + $result .= "'." . $subEval . ".'"; + } + return '\''.$result.'\''; + } + + /** + * php: modifier. + * + * Transform the expression into a regular PHP expression. + */ + static public function php($src) + { + require_once PHPTAL_DIR.'PHPTAL/Php/Transformer.php'; + return PHPTAL_Php_Transformer::transform($src, '$ctx->'); + } + + /** + * exists: modifier. + * + * Returns the code required to invoke phptal_exists() on specified path. + */ + static public function exists($src, $nothrow) + { + return sprintf('phptal_exists($ctx, %s)', self::string(trim($src), $nothrow)); + } + + /** + * number: modifier. + * + * Returns the number as is. + */ + static public function number($src, $nothrow) + { + return trim($src); + } +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Php/Transformer.php b/wp-content/themes/vanilla/PHPTAL/Php/Transformer.php new file mode 100644 index 000000000..e7a81bc15 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Php/Transformer.php @@ -0,0 +1,384 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + + +/** + * Tranform php: expressions into their php equivalent. + * + * This transformer produce php code for expressions like : + * + * - a.b["key"].c().someVar[10].foo() + * - (a or b) and (c or d) + * - not myBool + * - ... + * + * The $prefix variable may be changed to change the context lookup. + * + * example: + * + * $res = PHPTAL_Php_Transformer::transform('a.b.c[x]', '$ctx->'); + * $res == '$ctx->a->b->c[$ctx->x]'; + * + * @package phptal.php + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_Php_Transformer +{ + const ST_NONE = 0; + const ST_STR = 1; // 'foo' + const ST_ESTR = 2; // "foo ${x} bar" + const ST_VAR = 3; // abcd + const ST_NUM = 4; // 123.02 + const ST_EVAL = 5; // ${somevar} + const ST_MEMBER = 6; // abcd.x + const ST_STATIC = 7; // class::[$]static|const + const ST_DEFINE = 8; // @MY_DEFINE + + public static function transform( $str, $prefix='$' ) + { + + // + // Here comes the good old state machine. + // TODO: benchmark this version and then benchmark a refactored version + // with states behaviour separated into methods, keep the fastest. + // + + $len = strlen($str); + $state = self::ST_NONE; + $result = ''; + $i = 0; + $inString = false; + $backslashed = false; + $instanceOf = false; + $eval = false; + + for ($i = 0; $i <= $len; $i++) { + if ($i == $len) $c = "\0"; + else $c = $str[$i]; + + switch ($state) { + // no state defined, just eat char and see what to do with it. + case self::ST_NONE: + // begin of eval without { + if ($c == '$' && $i < $len && self::isAlpha($str[$i+1])){ + $state = self::ST_EVAL; + $mark = $i+1; + $result .= $prefix.'{'; + } + // that an alphabetic char, then it should be the begining + // of a var + else if (self::isAlpha($c) || $c==='_') { + $state = self::ST_VAR; + $mark = $i; + } + // begining of double quoted string + else if ($c == '"') { + $state = self::ST_ESTR; + $mark = $i; + $inString = true; + } + // begining of single quoted string + else if ($c == '\'') { + $state = self::ST_STR; + $mark = $i; + $inString = true; + } + // closing a method, an array access or an evaluation + else if ($c == ')' || $c == ']' || $c == '}') { + $result .= $c; + // if next char is dot then an object member must + // follow + if ($i < $len-1 && $str[$i+1] == '.') { + $result .= '->'; + $state = self::ST_MEMBER; + $mark = $i+2; + $i+=2; + } + } + // @ is an access to some defined variable + else if ($c == '@') { + $state = self::ST_DEFINE; + $mark = $i+1; + } + // character we don't mind about + else { + $result .= $c; + } + break; + + // $xxx + case self::ST_EVAL: + if (!self::isVarNameChar($c)){ + $result .= $prefix . substr($str, $mark, $i-$mark); + $result .= '}'; + $state = self::ST_NONE; + } + break; + + // single quoted string + case self::ST_STR: + if ($c == '\\') { + $backslashed = true; + } + else if ($backslashed) { + $backslashed = false; + } + // end of string, back to none state + else if ($c == '\'') { + $result .= substr( $str, $mark, $i-$mark+1 ); + $inString = false; + $state = self::ST_NONE; + } + break; + + // double quoted string + case self::ST_ESTR: + if ($c == '\\') { + $backslashed = true; + } + else if ($backslashed) { + $backslashed = false; + } + // end of string, back to none state + else if ($c == '"') { + $result .= substr( $str, $mark, $i-$mark+1 ); + $inString = false; + $state = self::ST_NONE; + } + // instring interpolation, search } and transform the + // interpollation to insert it into the string + else if ($c == '$' && $i < $len && $str[$i+1] == '{') { + $result .= substr( $str, $mark, $i-$mark ) . '{'; + + $sub = 0; + for ($j = $i; $j<$len; $j++) { + if ($str[$j] == '{') { + $sub++; + } + elseif ($str[$j] == '}' && (--$sub) == 0) { + $part = substr( $str, $i+2, $j-$i-2 ); + $result .= self::transform($part, $prefix); + $i = $j; + $mark = $i; + } + } + } + break; + + // var state + case self::ST_VAR: + if (self::isVarNameChar($c)) { + } + // end of var, begin of member (method or var) + else if ($c == '.') { + $result .= $prefix . substr( $str, $mark, $i-$mark ); + $result .= '->'; + $state = self::ST_MEMBER; + $mark = $i+1; + } + // static call, the var is a class name + else if ($c == ':') { + $result .= substr( $str, $mark, $i-$mark+1 ); + $mark = $i+1; + $i++; + $state = self::ST_STATIC; + break; + } + // function invocation, the var is a function name + else if ($c == '(') { + $result .= substr( $str, $mark, $i-$mark+1 ); + $state = self::ST_NONE; + } + // array index, the var is done + else if ($c == '[') { + if ($str[$mark]==='_') { // superglobal? + $result .= '$' . substr( $str, $mark, $i-$mark+1 ); + } + else { + $result .= $prefix . substr( $str, $mark, $i-$mark+1 ); + } + $state = self::ST_NONE; + } + // end of var with non-var-name character, handle keywords + // and populate the var name + else { + $var = substr( $str, $mark, $i-$mark ); + $low = strtolower($var); + // boolean and null + if ($low == 'true' || $low == 'false' || $low == 'null') { + $result .= $var; + } + // lt, gt, ge, eq, ... + else if (array_key_exists($low, self::$TranslationTable)){ + $result .= self::$TranslationTable[$low]; + } + // instanceof keyword + else if ($low == 'instanceof'){ + $result .= $var; + $instanceOf = true; + } + // previous was instanceof + else if ($instanceOf){ + // last was instanceof, this var is a class name + $result .= $var; + $instanceOf = false; + } + // regular variable + else { + $result .= $prefix . $var; + } + $i--; + $state = self::ST_NONE; + } + break; + + // object member + case self::ST_MEMBER: + if (self::isVarNameChar($c)) { + } + // eval mode ${foo} + else if ($c == '$') { + $result .= '{' . $prefix; + $mark++; + $eval = true; + } + // end of var member var, begin of new member + else if ($c == '.') { + $result .= substr( $str, $mark, $i-$mark ); + if ($eval) { $result .='}'; $eval = false; } + $result .= '->'; + $mark = $i+1; + $state = self::ST_MEMBER; + } + // begin of static access + else if ($c == ':') { + $result .= substr( $str, $mark, $i-$mark+1 ); + if ($eval) { $result .='}'; $eval = false; } + $state = self::ST_STATIC; + break; + } + // the member is a method or an array + else if ($c == '(' || $c == '[') { + $result .= substr( $str, $mark, $i-$mark+1 ); + if ($eval) { $result .='}'; $eval = false; } + $state = self::ST_NONE; + } + // regular end of member, it is a var + else { + $result .= substr( $str, $mark, $i-$mark ); + if ($eval) { $result .='}'; $eval = false; } + $state = self::ST_NONE; + $i--; + } + break; + + // wait for separator + case self::ST_DEFINE: + if (self::isVarNameChar($c)) { + } + else { + $state = self::ST_NONE; + $result .= substr( $str, $mark, $i-$mark ); + $i--; + } + break; + + // static call, can be const, static var, static method + // Klass::$static + // Klass::const + // Kclass::staticMethod() + // + case self::ST_STATIC: + if (self::isVarNameChar($c)) { + } + // static var + else if ($c == '$') { + } + // end of static var which is an object and begin of member + else if ($c == '.') { + $result .= substr( $str, $mark, $i-$mark ); + $result .= '->'; + $mark = $i+1; + $state = self::ST_MEMBER; + } + // end of static var which is a class name + else if ($c == ':') { + $result .= substr( $str, $mark, $i-$mark+1 ); + $state = self::ST_STATIC; + break; + } + // static method or array + else if ($c == '(' || $c == '[') { + $result .= substr( $str, $mark, $i-$mark+1 ); + $state = self::ST_NONE; + } + // end of static var or const + else { + $result .= substr( $str, $mark, $i-$mark ); + $state = self::ST_NONE; + $i--; + } + break; + + // numeric value + case self::ST_NUM: + if (!self::isDigitCompound($c)) { + $result .= substr( $str, $mark, $i-$mark ); + $state = self::ST_NONE; + } + break; + } + } + + return trim($result); + } + + private static function isAlpha($c) + { + $c = strtolower($c); + return $c >= 'a' && $c <= 'z'; + } + + private static function isDigitCompound($c) + { + return ($c >= '0' && $c <= '9' || $c == '.'); + } + + private static function isVarNameChar($c) + { + return self::isAlpha($c) || ($c >= '0' && $c <= '9') || $c == '_'; + } + + private static $TranslationTable = array( + 'not' => '!', + 'ne' => '!=', + 'and' => '&&', + 'or' => '||', + 'lt' => '<', + 'gt' => '>', + 'ge' => '>=', + 'le' => '<=', + 'eq' => '==', + ); +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/RepeatController.php b/wp-content/themes/vanilla/PHPTAL/RepeatController.php new file mode 100644 index 000000000..e902c25e0 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/RepeatController.php @@ -0,0 +1,477 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +/** + * Stores tal:repeat information during template execution. + * + * An instance of this class is created and stored into PHPTAL context on each + * tal:repeat usage. + * + * repeat/item/index + * repeat/item/number + * ... + * are provided by this instance. + * + * 'repeat' is an StdClass instance created to handle RepeatControllers, + * 'item' is an instance of this class. + * + * @package phptal + * @author Laurent Bedubourg <lbedubourg@motion-twin.com> + */ +class PHPTAL_RepeatController implements Iterator +{ + private $key; + private $current; + private $valid; + private $validOnNext; + + protected $iterator; + protected $index; + protected $end; + protected $length; + + /** + * Construct a new RepeatController. + * + * @param $source array, string, iterator, iterable. + */ + public function __construct($source) + { + if ( is_string($source) ) { + $this->iterator = new ArrayIterator( str_split($source) ); // FIXME: invalid for UTF-8 encoding, use preg_match_all('/./u') trick + } else if ( is_array($source) ) { + $this->iterator = new ArrayIterator($source); + } else if ( $source instanceof IteratorAggregate ) { + $this->iterator = $source->getIterator(); + } else if ( $source instanceof Iterator ) { + $this->iterator = $source; + } else if ( $source instanceof SimpleXMLElement) { // has non-unique keys! + $array = array(); + foreach ( $source as $v ) { + $array[] = $v; + } + $this->iterator = new ArrayIterator($array); + } else if ( $source instanceof Traversable || $source instanceof DOMNodeList ) { + // PDO Statements for example implement the engine internal Traversable + // interface. To make it fully iterable we traverse the set to populate + // an array which will be actually used for iteration. + $array = array(); + foreach ( $source as $k=>$v ) { + $array[$k] = $v; + } + $this->iterator = new ArrayIterator($array); + } else { + $this->iterator = new ArrayIterator( array() ); + } + + // Try to find the set length + $this->length = 0; + if ( $this->iterator instanceof Countable ) { + $this->length = count($this->iterator); + } else if ( is_object($this->iterator) ) { + // This should be removed since there is already the Countable interface in PHP5 + if ( method_exists( $this->iterator, 'size' ) ) { + $this->length = $this->iterator->size(); + } else if ( method_exists( $this->iterator, 'length' ) ) { + $this->length = $this->iterator->length(); + } + } + + $this->groups = new PHPTAL_RepeatController_Groups(); + + $this->rewind(); + } + + /** + * Returns the current element value in the iteration + * + * @return Mixed The current element value + */ + public function current() + { + return $this->current; + } + + /** + * Returns the current element key in the iteration + * + * @return String/Int The current element key + */ + public function key() + { + return $this->key; + } + + /** + * Tells if the iteration is over + * + * @return bool True if the iteration is not finished yet + */ + public function valid() + { + $valid = $this->valid || $this->validOnNext; + $this->validOnNext = $this->valid; + + return $valid; + } + + /** + * Restarts the iteration process going back to the first element + * + */ + public function rewind() + { + $this->index = 0; + $this->end = false; + + $this->iterator->rewind(); + + // Prefetch the next element + if ( $this->iterator->valid() ) { + $this->validOnNext = true; + $this->prefetch(); + } else { + $this->validOnNext = false; + } + + // Notify the grouping helper of the change + $this->groups->reset(); + } + + /** + * Fetches the next element in the iteration and advances the pointer + * + */ + public function next() + { + $this->index++; + + // Prefetch the next element + $this->prefetch(); + + // Notify the grouping helper of the change + $this->groups->reset(); + } + + /** + * Gets an object property + * + * @return $var Mixed The variable value + */ + public function __get( $var ) + { + switch ( $var ) { + case 'index': + case 'end': + case 'length': + return $this->$var; + case 'number': + return $this->index + 1; + case 'start': + return $this->index === 0; + case 'even': + return ($this->index % 2) === 0; + case 'odd': + return ($this->index % 2) === 1; + case 'key': + return $this->key(); + case 'letter': + return strtolower( $this->int2letter($this->index+1) ); + case 'Letter': + return strtoupper( $this->int2letter($this->index+1) ); + case 'roman': + return strtolower( $this->int2roman($this->index+1) ); + case 'Roman': + return strtoupper( $this->int2roman($this->index+1) ); + + case 'first': + // Compare the current one with the previous in the dictionary + $res = $this->groups->first( $this->current ); + return is_bool($res) ? $res : $this->groups; + case 'last': + // Compare the next one with the dictionary + $res = $this->groups->last( $this->iterator->current() ); + return is_bool($res) ? $res : $this->groups; + + default: + throw new PHPTAL_Exception( "Unable to find part '$var' in repeater controller" ); + } + } + + /** + * Fetches the next element from the source data store and + * updates the end flag if needed. + * + * @access protected + */ + protected function prefetch() + { + $this->valid = true; + $this->key = $this->iterator->key(); + $this->current = $this->iterator->current(); + + $this->iterator->next(); + if ( !$this->iterator->valid() ) { + $this->valid = false; + $this->end = true; + } + } + + /** + * Converts an integer number (1 based) to a sequence of letters + * + * @param $int Int The number to convert + * @return String The letters equivalent as a, b, c-z ... aa, ab, ac-zz ... + * @access protected + */ + protected function int2letter( $int ) + { + $lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; + $size = strlen($lookup); + + $letters = ''; + while ( $int > 0 ) { + $int--; + $letters = $lookup[$int % $size] . $letters; + $int = floor($int / $size); + } + return $letters; + } + + /** + * Converts an integer number (1 based) to a roman numeral + * + * @param $int Int The number to convert + * @return String The roman numeral + * @access protected + */ + protected function int2roman( $int ) + { + $lookup = array( + '1000' => 'M', + '900' => 'CM', + '500' => 'D', + '400' => 'CD', + '100' => 'C', + '90' => 'XC', + '50' => 'L', + '40' => 'XL', + '10' => 'X', + '9' => 'IX', + '5' => 'V', + '4' => 'IV', + '1' => 'I', + ); + + $roman = ''; + foreach ( $lookup as $max => $letters ) { + while ( $int >= $max ) { + $roman .= $letters; + $int -= $max; + } + } + + return $roman; + } +} + + +/** + * Keeps track of variable contents when using grouping in a path (first/ and last/) + * + * @package phptal + * @author Iv�n Montes <drslump@pollinimini.net> + */ +class PHPTAL_RepeatController_Groups { + + protected $dict = array(); + protected $cache = array(); + protected $data = null; + protected $vars = array(); + protected $branch; + + + public function __construct() + { + $this->dict = array(); + $this->reset(); + } + + /** + * Resets the result caches. Use it to signal an iteration in the loop + * + */ + public function reset() + { + $this->cache = array(); + } + + /** + * Checks if the data passed is the first one in a group + * + * @param $data Mixed The data to evaluate + * @return Mixed True if the first item in the group, false if not and + * this same object if the path is not finished + */ + public function first( $data ) + { + if ( !is_array($data) && !is_object($data) && !is_null($data) ) { + + if ( !isset($this->cache['F']) ) { + + $hash = md5($data); + + if ( !isset($this->dict['F']) || $this->dict['F'] !== $hash ) { + $this->dict['F'] = $hash; + $res = true; + } else { + $res = false; + } + + $this->cache['F'] = $res; + } + + return $this->cache['F']; + } + + $this->data = $data; + $this->branch = 'F'; + $this->vars = array(); + return $this; + } + + /** + * Checks if the data passed is the last one in a group + * + * @param $data Mixed The data to evaluate + * @return Mixed True if the last item in the group, false if not and + * this same object if the path is not finished + */ + public function last( $data ) + { + if ( !is_array($data) && !is_object($data) && !is_null($data) ) { + + if ( !isset($this->cache['L']) ) { + + $hash = md5($data); + + if (empty($this->dict['L'])) { + $this->dict['L'] = $hash; + $res = false; + } else if ( $this->dict['L'] !== $hash ) { + $this->dict['L'] = $hash; + $res = true; + } else { + $res = false; + } + + $this->cache['L'] = $res; + } + + return $this->cache['L']; + } + + $this->data = $data; + $this->branch = 'L'; + $this->vars = array(); + return $this; + } + + /** + * Handles variable accesses for the tal path resolver + * + * @param $var String The variable name to check + * @return Mixed An object/array if the path is not over or a boolean + * + * @todo replace the phptal_path() with custom code + */ + public function __get( $var ) + { + // When the iterator item is empty we just let the tal + // expression consume by continuously returning this + // same object which should evaluate to true for 'last' + if ( is_null($this->data) ) { + return $this; + } + + // Find the requested variable + $value = @phptal_path( $this->data, $var, true ); + + // Check if it's an object or an array + if ( is_array($value) || is_object($value) ) { + // Move the context to the requested variable and return + $this->data = $value; + $this->addVarName( $var ); + return $this; + } + + // get a hash of the variable contents + $hash = md5( $value ); + + // compute a path for the variable to use as dictionary key + $path = $this->branch . $this->getVarPath() . $var; + + // If we don't know about this var store in the dictionary + if ( !isset($this->cache[$path]) ) { + + if ( !isset($this->dict[$path]) ) { + $this->dict[$path] = $hash; + $res = $this->branch === 'F'; + } else { + // Check if the value has changed + if ( $this->dict[$path] !== $hash ) { + $this->dict[$path] = $hash; + $res = true; + } else { + $res = false; + } + } + + $this->cache[$path] = $res; + } + + return $this->cache[$path]; + + } + + /** + * Adds a variable name to the current path of variables + * + * @param $varname String The variable name to store as a path part + * @access protected + */ + protected function addVarName( $varname ) + { + $this->vars[] = $varname; + } + + /** + * Returns the current variable path separated by a slash + * + * @return String The current variable path + * @access protected + */ + protected function getVarPath() + { + return implode('/', $this->vars) . '/'; + } +} diff --git a/wp-content/themes/vanilla/PHPTAL/Source.php b/wp-content/themes/vanilla/PHPTAL/Source.php new file mode 100644 index 000000000..dc5f0706d --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Source.php @@ -0,0 +1,16 @@ +<?php + +/** + * @package phptal + */ +interface PHPTAL_Source +{ + /** Returns string, unique path identifying the template source. */ + public function getRealPath(); + /** Returns long, the template source last modified time. */ + public function getLastModifiedTime(); + /** Returns string, the template source. */ + public function getData(); +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/SourceResolver.php b/wp-content/themes/vanilla/PHPTAL/SourceResolver.php new file mode 100644 index 000000000..065a8f1cb --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/SourceResolver.php @@ -0,0 +1,16 @@ +<?php + +require_once PHPTAL_DIR.'PHPTAL/Source.php'; + +/** + * @package phptal + */ +interface PHPTAL_SourceResolver +{ + /** + * Returns PHPTAL_Source or null. + */ + public function resolve($path); +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/StringSource.php b/wp-content/themes/vanilla/PHPTAL/StringSource.php new file mode 100644 index 000000000..f62546da2 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/StringSource.php @@ -0,0 +1,34 @@ +<?php + +require_once PHPTAL_DIR.'PHPTAL/Source.php'; + +/** + * @package phptal + */ +class PHPTAL_StringSource implements PHPTAL_Source +{ + public function __construct($data, $realpath) + { + $this->_data = $data; + $this->_realpath = $realpath; + } + + public function getLastModifiedTime() + { + if (file_exists($this->_realpath)) + return @filemtime($this->_realpath); + return 0; + } + + public function getData() + { + return $this->_data; + } + + public function getRealPath() + { + return $this->_realpath; + } +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Tales.php b/wp-content/themes/vanilla/PHPTAL/Tales.php new file mode 100644 index 000000000..c9a203cb9 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Tales.php @@ -0,0 +1,7 @@ +<?php + +interface PHPTAL_Tales +{ +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/TalesRegistry.php b/wp-content/themes/vanilla/PHPTAL/TalesRegistry.php new file mode 100644 index 000000000..7973952cc --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/TalesRegistry.php @@ -0,0 +1,109 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Moritz Bechler <mbechler@eenterphace.org> +// + +require_once PHPTAL_DIR.'PHPTAL/Tales.php'; + +/** + * Global registry of TALES expression modifiers + * + */ +class PHPTAL_TalesRegistry { + + static $instance; + + static public function initialize() { + self::$instance = new PHPTAL_TalesRegistry(); + } + + /** + * Enter description here... + * + * @return PHPTAL_TalesRegistry + */ + static public function getInstance() { + if(!(self::$instance instanceof PHPTAL_TalesRegistry)) { + self::initialize(); + } + + return self::$instance; + } + + protected function __construct() { + + } + + /** + * + * Expects an either a function name or an array of class and method as + * callback. + * + * @param unknown_type $prefix + * @param unknown_type $callback + */ + public function registerPrefix($prefix, $callback) { + if($this->isRegistered($prefix)) { + throw new PHPTAL_Exception(sprintf('Expression modifier "%s" is already registered.',$prefix)); + } + + // Check if valid callback + + if(is_array($callback)) { + + $class = new ReflectionClass($callback[0]); + + if(!$class->isSubclassOf('PHPTAL_Tales')) { + throw new PHPTAL_Exception('The class you want to register does not implement "PHPTAL_Tales".'); + } + + $method = new ReflectionMethod($callback[0], $callback[1]); + + if(!$method->isStatic()) { + throw new PHPTAL_Exception('The method you want to register is not static.'); + } + + // maybe we want to check the parameters the method takes + + } else { + if(!function_exists($callback)) { + throw new PHPTAL_Exception('The function you are trying to register does not exist.'); + } + } + + + $this->_callbacks[$prefix] = $callback; + } + + public function isRegistered($prefix) { + return (array_key_exists($prefix, $this->_callbacks)); + } + + public function getCallback($prefix) { + if(!$this->isRegistered($prefix)) { + throw new PHPTAL_Exception(sprintf('Expression modifier "%s" is not registered.', $prefix)); + } + return $this->_callbacks[$prefix]; + } + + private $_callbacks = array(); +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/TranslationService.php b/wp-content/themes/vanilla/PHPTAL/TranslationService.php new file mode 100644 index 000000000..8fd63a8f2 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/TranslationService.php @@ -0,0 +1,41 @@ +<?php + +/** + * @package phptal + */ +interface PHPTAL_TranslationService +{ + /** + * Set the target language for translations. + * + * When set to '' no translation will be done. + * + * You can specify a list of possible language for exemple : + * + * setLanguage('fr_FR', 'fr_FR@euro') + */ + function setLanguage(); + + /** + * PHPTAL will inform translation service what encoding page uses. + * Output of translate() must be in this encoding. + */ + function setEncoding($encoding); + + /** + * Set the domain to use for translations. + */ + function useDomain($domain); + + /** + * Set an interpolation var. + */ + function setVar($key, $value); + + /** + * Translate a gettext key and interpolate variables. + */ + function translate($key, $htmlescape=true); +} + +?> diff --git a/wp-content/themes/vanilla/PHPTAL/Trigger.php b/wp-content/themes/vanilla/PHPTAL/Trigger.php new file mode 100644 index 000000000..75a5bc935 --- /dev/null +++ b/wp-content/themes/vanilla/PHPTAL/Trigger.php @@ -0,0 +1,36 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +// Copyright (c) 2004-2005 Laurent Bedubourg +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// Authors: Laurent Bedubourg <lbedubourg@motion-twin.com> +// + +/** + * @package phptal + */ +interface PHPTAL_Trigger +{ + const SKIPTAG = 1; + const PROCEED = 2; + + public function start($id, $tpl); + + public function end($id, $tpl); +} + +?> diff --git a/wp-content/themes/vanilla/_carrington/README.txt b/wp-content/themes/vanilla/_carrington/README.txt new file mode 100644 index 000000000..118f61fe3 --- /dev/null +++ b/wp-content/themes/vanilla/_carrington/README.txt @@ -0,0 +1,21 @@ +## functions/ + +### Overview + +This directory contains Carrington's custom features and functionality. + + +### Supported Override Filenames + +- (none) + + +### File Descriptions + +You do not need to do anything with files in this folder; they should remain as-is. + +- *admin.php* - Handles custom admin pages for Carrington features. +- *classnames.php - Includes semantic CSS classname functions for Carrington +- *sandbox.php* - Includes further useful semantic CSS classname functions - from the Sandbox theme. +- *templates.php* - Carrington template functions. +- *utility.php* - Carrington utility functions. diff --git a/wp-content/themes/vanilla/_carrington/admin.php b/wp-content/themes/vanilla/_carrington/admin.php new file mode 100644 index 000000000..c79060630 --- /dev/null +++ b/wp-content/themes/vanilla/_carrington/admin.php @@ -0,0 +1,245 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +// - add admin page for config settings + +function cfct_admin_menu() { + if (!current_user_can('manage_options')) { + return; + } + add_submenu_page( + 'themes.php' + , __('Carrington Settings', 'carrington') + , __('Carrington', 'carrington') + , 0 + , 'carrington-settings' + , 'cfct_settings_form' + ); +} +add_action('admin_menu', 'cfct_admin_menu'); + +function cfct_admin_request_handler() { + if (isset($_POST['cf_action'])) { + switch ($_POST['cf_action']) { + case 'cfct_update_settings': + call_user_func($_POST['cf_action']); + wp_redirect(trailingslashit(get_bloginfo('wpurl')).'wp-admin/themes.php?page=carrington-settings&updated=true'); + } + } +} + +function cfct_update_settings() { + if (!current_user_can('manage_options')) { + return; + } + global $cfct_options; + foreach ($cfct_options as $option) { + if (isset($_POST[$option])) { + update_option($option, stripslashes($_POST[$option])); + } + } + do_action('cfct_update_settings'); +} + +function cfct_settings_form() { + if (isset($_GET['updated'])) { + print(' +<div id="message" class="updated fade"> + <p>'.__('Settings updated.', 'carrington').'</p> +</div> + '); + } + print(' +<div class="wrap"> + <h2>'.__('Carrington Settings', 'carrington').'</h2> + <form action="options.php" method="post"> + <table class="form-table"> + <tbody>' +// .cfct_options_home_column('1') +// .cfct_options_home_column('2') +// .cfct_options_home_column('3') + .cfct_options_misc() + .'</tbody> + </table> + '); + do_action('cfct_settings_form'); + print(' + <p class="submit"> + <input type="hidden" name="cf_action" value="cfct_update_settings" /> + <input type="submit" name="submit_button" value="'.__('Save Changes', 'carrington').'" /> + </p> + </form> +</div> + '); + do_action('cfct_settings_form_after'); +} + +function cfct_options_home_column($key) { + $categories = get_categories('hide_empty=0'); + $cat_options = ''; + foreach ($categories as $category) { + if ($category->term_id == get_option('cfct_home_col_'.$key.'_cat')) { + $selected = 'selected="selected"'; + } + else { + $selected = ''; + } + $cat_options .= "\n\t<option value='$category->term_id' $selected>$category->name</option>"; + } + $show_options = ''; + $show_option = cfct_get_option('cfct_home_column_'.$key.'_content'); + if ($show_option == 'latest') { + $latest_selected = 'selected="selected"'; + $list_selected = ''; + } + else { + $latest_selected = ''; + $list_selected = 'selected="selected"'; + } + $html = ' + <tr valign="top"> + <th scope="row">'.sprintf(__('Home Column %s', 'carrington'), $key).'</td> + <td> + <fieldset> + <p> + <label for="cfct_home_column_'.$key.'_cat">'.__('Category:', 'carrington').'</label> + <select name="cfct_home_column_'.$key.'_cat" id="cfct_home_column_'.$key.'_cat">'.$cat_options.'</select> + </p> + <p> + <label for="cfct_home_column_'.$key.'_content">'.__('Show:', 'carrington').'</label> + <select name="cfct_home_column_'.$key.'_content" id="cfct_home_column_'.$key.'_content" class="home_column_select"> + <option value="latest" '.$latest_selected.'>'.__('Latest Post Preview', 'carrington').'</option> + <option value="list" '.$list_selected.'>'.__('List of Recent Post Titles', 'carrington').'</option> + </select> + </p> + <p id="cfct_latest_limit_'.$key.'_option" class="hidden"> + <label for="cfct_latest_limit_'.$key.'">'.__('Length of preview, in characters (250 recommended):', 'carrington').'</label> + <input type="text" name="cfct_latest_limit_'.$key.'" id="cfct_latest_limit_'.$key.'" value="'.cfct_get_option('cfct_latest_limit_'.$key).'" /> + </p> + <p id="cfct_list_limit_'.$key.'_option" class="hidden"> + <label for="cfct_list_limit_'.$key.'">'.__('Number of titles to show in list (5 recommended):', 'carrington').'</label> + <input type="text" name="cfct_list_limit_'.$key.'" id="cfct_list_limit_'.$key.'" value="'.cfct_get_option('cfct_list_limit_'.$key).'" /> + </p> + </fieldset> + </td> + </tr> + '; + return $html; +} + +function cfct_options_misc() { + $options = array( + 'yes' => 'Yes' + , 'no' => 'No' + ); + $ajax_load_options = ''; + $credit_options = ''; + foreach ($options as $k => $v) { + if ($k == get_option('cfct_ajax_load')) { + $ajax_load_selected = 'selected="selected"'; + } + else { + $ajax_load_selected = ''; + } + $ajax_load_options .= "\n\t<option value='$k' $ajax_load_selected>$v</option>"; + if ($k == get_option('cfct_credit')) { + $credit_selected = 'selected="selected"'; + } + else { + $credit_selected = ''; + } + $credit_options .= "\n\t<option value='$k' $credit_selected>$v</option>"; + } + $cfct_posts_per_archive_page = get_option('cfct_posts_per_archive_page'); + if (intval($cfct_posts_per_archive_page) == 0) { + $cfct_posts_per_archive_page = 25; + } + $html = ' + <tr valign="top"> + <th scope="row">'.sprintf(__('Misc.', 'carrington'), $key).'</td> + <td> + <fieldset> + <p> + <label for="cfct_about_text">'.__('About text (shown in sidebar):', 'carrington').'</label> + <br /> + <textarea name="cfct_about_text" id="cfct_about_text" cols="40" rows="8">'.htmlspecialchars(get_option('cfct_about_text')).'</textarea> + </p> + <p> + <label for="cfct_ajax_load">'.__('Load archives and comments with AJAX:', 'carrington').'</label> + <select name="cfct_ajax_load" id="cfct_ajax_load">'.$ajax_load_options.'</select> + </p> + <p> + <label for="cfct_posts_per_archive_page">'.__('Posts shown on archives pages:', 'carrington').'</label> + <input type="text" name="cfct_posts_per_archive_page" id="cfct_posts_per_archive_page" value="'.$cfct_posts_per_archive_page.'" size="3" /> + </p> + <p> + <label for="cfct_credit">'.__('Give <a href="http://crowdfavorite.com">Crowd Favorite</a> credit in footer:', 'carrington').'</label> + <select name="cfct_credit" id="cfct_credit">'.$credit_options.'</select> + </p> + <p> + <label for="cfct_wp_footer">'.__('Footer code (for analytics, etc.):', 'carrington').'</label> + <br /> + <textarea name="cfct_wp_footer" id="cfct_wp_footer" cols="40" rows="5">'.htmlspecialchars(get_option('cfct_wp_footer')).'</textarea> + </p> + </fieldset> + </td> + </tr> + '; + return $html; +} + +function cfct_admin_js() { +?> +<script type="text/javascript"> +jQuery(function() { + jQuery('select.home_column_select').each(function() { + cfct_home_columns(jQuery(this), false); + }).change(function() { + cfct_home_columns(jQuery(this), true); + }); +}); + +function cfct_home_columns(elem, slide) { + var id = elem.attr('id').replace('cfct_home_column_', '').replace('_content', ''); + var val = elem.val(); + var option_show = '#cfct_latest_limit_' + id + '_option'; + var option_hide = '#cfct_list_limit_' + id + '_option'; + if (val == 'list') { + option_show = '#cfct_list_limit_' + id + '_option'; + option_hide = '#cfct_latest_limit_' + id + '_option'; + } + if (slide) { + jQuery(option_hide).slideUp(function() { + jQuery(option_show).slideDown(); + }); + } + else { + jQuery(option_show).show(); + jQuery(option_hide).hide(); + } +} +</script> +<?php +} +add_action('admin_head', 'cfct_admin_js'); + +// TODO +// - color pickers for background/theme integration + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_carrington/ajax-load.php b/wp-content/themes/vanilla/_carrington/ajax-load.php new file mode 100644 index 000000000..74facc7db --- /dev/null +++ b/wp-content/themes/vanilla/_carrington/ajax-load.php @@ -0,0 +1,84 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +function cfct_ajax_post_content($post_id) { + global $posts, $post, $wp; + $posts = get_posts('include='.$post_id); + $post = $posts[0]; + if (is_null($post)) { + $posts = get_pages('include='.$post_id); + $post = $posts[0]; + } + setup_postdata($post); + remove_filter('the_content', 'st_add_widget'); + $wp->send_headers(); + cfct_content(); +} + +function cfct_ajax_post_comments($post_id) { + global $post, $wp_query, $wp; + $wp_query->is_single = true; + $posts = get_posts('include='.$post_id); + $post = $posts[0]; + if (is_null($post)) { + $posts = get_pages('include='.$post_id); + $post = $posts[0]; + } + setup_postdata($post); + $wp->send_headers(); + comments_template(); +} + +function cfct_ajax_load() { + if (isset($_GET['cfct_action'])) { + switch ($_GET['cfct_action']) { + case 'post_content': + case 'post_comments': + if (isset($_GET['id'])) { + $post_id = intval($_GET['id']); + } + else if (isset($_GET['url'])) { + $post_id = url_to_post_id($_GET['url']); + } + if ($post_id) { + call_user_func('cfct_ajax_'.$_GET['cfct_action'], $post_id); + die(); + } + } + } +} + +function cfct_ajax_comment_link() { + global $post; + return ' rev="post-'.$post->ID.'" '; // alister modified +} +add_filter('comments_popup_link_attributes', 'cfct_ajax_comment_link'); + +function cfct_posts_per_archive_page($query) { + $count = get_option('cfct_posts_per_archive_page'); + intval($count) > 0 ? $count = $count : $count = 25; + $query->set('posts_per_archive_page', $count); + if (is_category()) { + $query->set('posts_per_page', $count); + } + return $query; +} +add_filter('pre_get_posts', 'cfct_posts_per_archive_page'); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_carrington/sandbox.php b/wp-content/themes/vanilla/_carrington/sandbox.php new file mode 100644 index 000000000..6cbaefb2e --- /dev/null +++ b/wp-content/themes/vanilla/_carrington/sandbox.php @@ -0,0 +1,292 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +// The following functions are taken from Sandbox +// http://www.plaintxt.org/themes/sandbox/ + +function sandbox_date_classes( $t, &$c, $p = '' ) { + $t = $t + ( get_option('gmt_offset') * 3600 ); + $c[] = $p . 'y' . gmdate( 'Y', $t ); // Year + $c[] = $p . 'm' . gmdate( 'm', $t ); // Month + $c[] = $p . 'd' . gmdate( 'd', $t ); // Day + $c[] = $p . 'h' . gmdate( 'H', $t ); // Hour +} + +function sandbox_body_class( $print = true ) { + global $wp_query, $current_user; + + // It's surely a WordPress blog, right? + $c = array('wordpress'); + + // Applies the time- and date-based classes (below) to BODY element + sandbox_date_classes( time(), $c ); + + // Generic semantic classes for what type of content is displayed + is_front_page() ? $c[] = 'home' : null; // For the front page, if set + is_home() ? $c[] = 'blog' : null; // For the blog posts page, if set + is_archive() ? $c[] = 'archive' : null; + is_date() ? $c[] = 'date' : null; + is_search() ? $c[] = 'search' : null; + is_paged() ? $c[] = 'paged' : null; + is_attachment() ? $c[] = 'attachment' : null; + is_404() ? $c[] = 'four04' : null; // CSS does not allow a digit as first character + + // Special classes for BODY element when a single post + if ( is_single() ) { + $postID = $wp_query->post->ID; + the_post(); + + // Adds 'single' class and class with the post ID + $c[] = 'single postid-' . $postID; + + // Adds classes for the month, day, and hour when the post was published + if ( isset( $wp_query->post->post_date ) ) + sandbox_date_classes( mysql2date( 'U', $wp_query->post->post_date ), $c, 's-' ); + + // Adds category classes for each category on single posts + if ( $cats = get_the_category() ) + foreach ( $cats as $cat ) + $c[] = 's-category-' . $cat->slug; + + // Adds tag classes for each tags on single posts + if ( $tags = get_the_tags() ) + foreach ( $tags as $tag ) + $c[] = 's-tag-' . $tag->slug; + + // Adds MIME-specific classes for attachments + if ( is_attachment() ) { + $mime_type = get_post_mime_type(); + $mime_prefix = array( 'application/', 'image/', 'text/', 'audio/', 'video/', 'music/' ); + $c[] = 'attachmentid-' . $postID . ' attachment-' . str_replace( $mime_prefix, "", "$mime_type" ); + } + + // Adds author class for the post author + $c[] = 's-author-' . sanitize_title_with_dashes(strtolower(get_the_author_login())); + rewind_posts(); + } + + // Author name classes for BODY on author archives + elseif ( is_author() ) { + $author = $wp_query->get_queried_object(); + $c[] = 'author'; + $c[] = 'author-' . $author->user_nicename; + } + + // Category name classes for BODY on category archvies + elseif ( is_category() ) { + $cat = $wp_query->get_queried_object(); + $c[] = 'category'; + $c[] = 'category-' . $cat->slug; + } + + // Tag name classes for BODY on tag archives + elseif ( is_tag() ) { + $tags = $wp_query->get_queried_object(); + $c[] = 'tag'; + $c[] = 'tag-' . $tags->slug; + } + + // Page author for BODY on 'pages' + elseif ( is_page() ) { + $pageID = $wp_query->post->ID; + $page_children = wp_list_pages("child_of=$pageID&echo=0"); + the_post(); + $c[] = 'page pageid-' . $pageID; + $c[] = 'page-author-' . sanitize_title_with_dashes(strtolower(get_the_author('login'))); + // Checks to see if the page has children and/or is a child page; props to Adam + if ( $page_children ) + $c[] = 'page-parent'; + if ( $wp_query->post->post_parent ) + $c[] = 'page-child parent-pageid-' . $wp_query->post->post_parent; + if ( is_page_template() ) // Hat tip to Ian, themeshaper.com + $c[] = 'page-template page-template-' . str_replace( '.php', '-php', get_post_meta( $pageID, '_wp_page_template', true ) ); + rewind_posts(); + } + + // Search classes for results or no results + elseif ( is_search() ) { + the_post(); + if ( have_posts() ) { + $c[] = 'search-results'; + } else { + $c[] = 'search-no-results'; + } + rewind_posts(); + } + + // For when a visitor is logged in while browsing + if ( $current_user->ID ) + $c[] = 'loggedin'; + + // Paged classes; for 'page X' classes of index, single, etc. + if ( ( ( $page = $wp_query->get('paged') ) || ( $page = $wp_query->get('page') ) ) && $page > 1 ) { + $c[] = 'paged-' . $page; + if ( is_single() ) { + $c[] = 'single-paged-' . $page; + } elseif ( is_page() ) { + $c[] = 'page-paged-' . $page; + } elseif ( is_category() ) { + $c[] = 'category-paged-' . $page; + } elseif ( is_tag() ) { + $c[] = 'tag-paged-' . $page; + } elseif ( is_date() ) { + $c[] = 'date-paged-' . $page; + } elseif ( is_author() ) { + $c[] = 'author-paged-' . $page; + } elseif ( is_search() ) { + $c[] = 'search-paged-' . $page; + } + } + + // Separates classes with a single space, collates classes for BODY + $c = join( ' ', apply_filters( 'body_class', $c ) ); // Available filter: body_class + + // And tada! + return $print ? print($c) : $c; +} + +// Generates semantic classes for each post DIV element. Edited from original code: moved static hentry classname out of function. +function sandbox_post_class( $print = true ) { + global $post, $sandbox_post_alt; + + // gets 'alt' for every other post DIV, describes the post type and p[n] + $c = array( "p$sandbox_post_alt", $post->post_type, $post->post_status ); + + // Author for the post queried + $c[] = 'author-' . sanitize_title_with_dashes(strtolower(get_the_author('login'))); + + // Category for the post queried + foreach ( (array) get_the_category() as $cat ) + $c[] = 'category-' . $cat->slug; + + // Tags for the post queried; if not tagged, use .untagged + if ( get_the_tags() == null ) { + $c[] = 'untagged'; + } else { + foreach ( (array) get_the_tags() as $tag ) + $c[] = 'tag-' . $tag->slug; + } + + // For password-protected posts + if ( $post->post_password ) + $c[] = 'protected'; + + // Applies the time- and date-based classes (below) to post DIV + sandbox_date_classes( mysql2date( 'U', $post->post_date ), $c ); + + // If it's the other to the every, then add 'alt' class + if ( ++$sandbox_post_alt % 2 ) + $c[] = 'alt'; + + // Separates classes with a single space, collates classes for post DIV + $c = join( ' ', apply_filters( 'post_class', $c ) ); // Available filter: post_class + + // And tada! + return $print ? print($c) : $c; +} + + +// Define the num val for 'alt' classes (in post DIV and comment LI) +$sandbox_post_alt = 1; + +// Generates semantic classes for each comment LI element +function sandbox_comment_class( $print = true ) { + global $comment, $post, $sandbox_comment_alt; + + // Collects the comment type (comment, trackback), + $c = array( $comment->comment_type ); + + // Counts trackbacks (t[n]) or comments (c[n]) + if ( $comment->comment_type == 'comment' ) { + $c[] = "c$sandbox_comment_alt"; + } else { + $c[] = "t$sandbox_comment_alt"; + } + + // If the comment author has an id (registered), then print the log in name + if ( $comment->user_id > 0 ) { + $user = get_userdata($comment->user_id); + // For all registered users, 'byuser'; to specificy the registered user, 'commentauthor+[log in name]' + $c[] = 'byuser comment-author-' . sanitize_title_with_dashes(strtolower( $user->user_login )); + // For comment authors who are the author of the post + if ( $comment->user_id === $post->post_author ) + $c[] = 'bypostauthor'; + } + + // If it's the other to the every, then add 'alt' class; collects time- and date-based classes + sandbox_date_classes( mysql2date( 'U', $comment->comment_date ), $c, 'c-' ); + if ( ++$sandbox_comment_alt % 2 ) + $c[] = 'alt'; + + // Separates classes with a single space, collates classes for comment LI + $c = join( ' ', apply_filters( 'comment_class', $c ) ); // Available filter: comment_class + + // Tada again! + return $print ? print($c) : $c; +} + +// based on sandbox_comment_class() above +function cfct_comment_class($print = true) { + global $comment, $post, $sandbox_comment_alt; + + // Collects the comment type (comment, trackback), + $c = array( $comment->comment_type ); + + // If the comment author has an id (registered), then print the log in name + if ( $comment->user_id > 0 ) { + $user = get_userdata($comment->user_id); + // For all registered users, 'byuser'; to specificy the registered user, 'commentauthor+[log in name]' + $c[] = 'byuser comment-author-' . sanitize_title_with_dashes(strtolower( $user->user_login )); + // For comment authors who are the author of the post + if ( $comment->user_id === $post->post_author ) + $c[] = 'bypostauthor'; + } + + // collects time- and date-based classes + sandbox_date_classes( mysql2date( 'U', $comment->comment_date ), $c, 'c-' ); + // Separates classes with a single space, collates classes for comment DIV + $c = join( ' ', apply_filters( 'comment_class', $c ) ); // Available filter: comment_class + + // Tada again! + return $print ? print($c) : $c; +} + +// based on sandbox_comment_class() above +function cfct_comment_list_class($print = true) { + global $comment, $post, $sandbox_comment_alt; + + // Counts trackbacks (t[n]) or comments (c[n]) + if ( $comment->comment_type == 'comment' ) { + $c[] = "c$sandbox_comment_alt"; + } else { + $c[] = "t$sandbox_comment_alt"; + } + + // If it's the other to the every, then add 'alt' class + if ( ++$sandbox_comment_alt % 2 ) + $c[] = 'alt'; + + // Separates classes with a single space, collates classes for comment LI + $c = join( ' ', apply_filters( 'comment_list_class', $c ) ); // Available filter: comment_list_class + + // Tada again! + return $print ? print($c) : $c; +} + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_carrington/templates.php b/wp-content/themes/vanilla/_carrington/templates.php new file mode 100644 index 000000000..2cb9b69fb --- /dev/null +++ b/wp-content/themes/vanilla/_carrington/templates.php @@ -0,0 +1,106 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +function cfct_page($file = '') { + if (empty($file)) { + $file = cfct_default_file('pages'); + } + cfct_template_file('pages', $file); +} + +/* ======================================== + General + ======================================== */ + +function cfct_header() { + $file = cfct_choose_general_template('header'); + cfct_template_file('header', $file); +} + +function cfct_footer() { + $file = cfct_choose_general_template('footer'); + cfct_template_file('footer', $file); +} + +function cfct_sidebar() { + $file = cfct_choose_general_template('sidebar'); + cfct_template_file('sidebar', $file); +} + +function cfct_posts() { + $file = cfct_choose_general_template('posts'); + cfct_template_file('posts', $file); +} + +function cfct_single() { + $file = cfct_choose_general_template('single'); + cfct_template_file('single', $file); +} + +function cfct_loop() { + $file = cfct_choose_general_template('loop'); + cfct_template_file('loop', $file); +} + +/* ======================================== + Content + ======================================== */ + +function cfct_content() { + $file = cfct_choose_content_template(); + cfct_template_file('content', $file); +} + +function cfct_excerpt() { + $file = cfct_choose_content_template('excerpt'); + cfct_template_file('excerpt', $file); +} + +/* ======================================== + Comments + ======================================== */ + +function cfct_comments() { + $file = cfct_choose_general_template('comments'); + cfct_template_file('comments', $file); +} + +function cfct_comment() { + $file = cfct_choose_comment_template(); + cfct_template_file('comment', $file); +} + +/* ======================================== + Other + ======================================== */ + +function cfct_form($name = '') { + cfct_template_file('forms', $name); +} + +function cfct_misc($name = '') { + cfct_template_file('misc', $name); +} + +function cfct_error($name = '') { + cfct_template_file('error', $name); +} + + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_carrington/utility.php b/wp-content/themes/vanilla/_carrington/utility.php new file mode 100644 index 000000000..4740240cd --- /dev/null +++ b/wp-content/themes/vanilla/_carrington/utility.php @@ -0,0 +1,702 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +function cfct_die($str = '') { + if (!empty($str)) { + $set = vanilla_get_option('vnl_tpl_set').'-set/'; + include(CFCT_PATH.$set.'error/exit.php'); + die(); + } +} + +function cfct_banner($str = '') { + if (!empty($str)) { + $set = vanilla_get_option('vnl_tpl_set').'-set/'; + include(CFCT_PATH.$set.'misc/banner.php'); + } +} + +function cfct_get_option($name) { + $defaults = array( + 'cfct_list_limit_1' => CFCT_HOME_LIST_LENGTH + , 'cfct_latest_limit_1' => CFCT_HOME_LATEST_LENGTH + , 'cfct_list_limit_2' => CFCT_HOME_LIST_LENGTH + , 'cfct_latest_limit_2' => CFCT_HOME_LATEST_LENGTH + , 'cfct_list_limit_3' => CFCT_HOME_LIST_LENGTH + , 'cfct_latest_limit_3' => CFCT_HOME_LATEST_LENGTH + , 'cfct_ajax_load' => 'yes' + , 'cfct_credit' => 'yes' + ); + $value = get_option($name); + if ($value == '' && isset($defaults[$name])) { + $value = $defaults[$name]; + } + return $value; +} + +function cfct_load_plugins() { + // load universal plugins + $files = cfct_files(CFCT_PATH.'plugins'); + foreach ($files as $file) { + include(CFCT_PATH.'plugins/'.$file); + } + // load template set-specific plugins + $set = vanilla_get_option('vnl_tpl_set').'-set/'; + $files = cfct_files(CFCT_PATH.$set.'plugins'); + foreach ($files as $file) { + include(CFCT_PATH.$set.'plugins/'.$file); + } +} + +function cfct_default_file($dir) { + $set = vanilla_get_option('vnl_tpl_set').'-set/'; + $fancy = $dir.'-default.php'; + file_exists(CFCT_PATH.$set.$dir.'/'.$fancy) ? $default = $fancy : $default = 'default.php'; + return $default; +} + +function cfct_context() { + $context = 'home'; + if (is_page()) { + $context = 'page'; + } + else if (is_single()) { + $context = 'single'; + } + else if (is_category()) { + $context = 'category'; + } + else if (is_tag()) { + $context = 'tag'; + } + else if (is_author()) { + $context = 'author'; + } + else if (is_archive()) { +// possible future abstraction for: +// is_month() +// is_year() +// is_day() + $context = 'archive'; + } + else if (is_search()) { + $context = 'search'; + } + else if (is_home()) { + $context = 'home'; + // TODO - check page # + } + else if (is_404()) { + $context = '404'; + } + return apply_filters('cfct_context', $context); +} + +/** + * @param $template = folder name of file + * @param $type = file name of file + * @param $keys = keys that could be used for additional filename params + * returns false if file does not exist + * + */ +function cfct_filename($dir, $type = 'default', $keys = array()) { + switch ($type) { + case 'author': + if (count($keys)) { + $file = 'author-'.$keys[0]; + } + else { + $file = 'author'; + } + break; + case 'category': + if (count($keys)) { + $file = 'cat-'.$keys[0]; + } + else { + $file = 'category'; + } + break; + case 'tag': + if (count($keys)) { + $file = 'tag-'.$keys[0]; + } + else { + $file = 'tag'; + } + break; + case 'meta': + if (count($keys)) { + foreach ($keys as $k => $v) { + if (!empty($v)) { + $file = 'meta-'.$k.'-'.$v; + } + else { + $file = 'meta-'.$k; + } + break; + } + } + break; + case 'user': + if (count($keys)) { + $file = 'user-'.$keys[0]; + } + break; + case 'role': + if (count($keys)) { + $file = 'role-'.$keys[0]; + } + break; + case 'parent': + if (count($keys)) { + $file = 'parent-'.$keys[0]; + } + break; + default: + // handles single, etc. + $file = $type; + } + // fallback for category, author, tag, etc. + $set = vanilla_get_option('vnl_tpl_set').'-set/'; + $path = CFCT_PATH.$set.$dir.'/'.$file.'.php'; + if (!file_exists($path)) { + switch ($type) { + case 'author': + case 'category': + case 'tag': + $archive_file = CFCT_PATH.$set.$dir.'/archive.php'; + if (file_exists($archive_file)) { + $path = $archive_file; + } + } + } + $default = CFCT_PATH.$set.$dir.'/'.cfct_default_file($dir); + if (file_exists($path)) { + $path = $path; + } + else if (file_exists($default)) { + $path = $default; + } + else { + $path = false; + } + return apply_filters('cfct_filename', $path); +} + +function cfct_template($dir, $keys = array()) { + $context = cfct_context(); + $file = cfct_filename($dir, $context, $keys); + if ($file) { + include($file); + } + else { + cfct_die('Error loading '.$dir.' '.__LINE__); + } +} + +function cfct_template_file($dir, $file) { + $path = ''; + $set = vanilla_get_option('vnl_tpl_set').'-set/'; + if (!empty($file)) { + $file = basename($file, '.php'); + $path = CFCT_PATH.$set.$dir.'/'.$file.'.php'; + } + if (file_exists($path)) { + + // Alister - if there is a way to dynamically load PHPTAL template components, do it here... + include($path); + } + else { + cfct_die('Error loading '.$file.' '.__LINE__); + } +} + +/* ======================================== + General Template Selection + ======================================== */ + +function cfct_choose_general_template($dir) { + $exec_order = array( + 'author' + , 'role' + , 'category' + , 'tag' + , 'default' + ); + $new_exec_order = apply_filters('cfct_general_match_order', $exec_order); + $set = vanilla_get_option('vnl_tpl_set').'-set/'; + $files = cfct_files(CFCT_PATH.$set.$dir); + foreach ($new_exec_order as $func) { + $func_name = 'cfct_choose_general_template_'.$func; + if (function_exists($func_name) && in_array($func, $exec_order)) { + $filename = $func_name($dir, $files); + if ($filename != false) { + break; + } + } + } + return apply_filters('cfct_choose_general_template', $filename); +} + +function cfct_choose_general_template_author($dir, $files) { + $files = cfct_author_templates($dir, $files); + if (count($files)) { + $username = get_query_var('author_name'); + $filename = 'author-'.$username.'.php'; + if (in_array($filename, $files)) { + $keys = array($username); + return cfct_filename($dir, 'author', $keys); + } + } + return false; +} + +function cfct_choose_general_template_category($dir, $files) { + $files = cfct_cat_templates($dir, $files); + if (count($files)) { + global $cat; + $slug = cfct_cat_id_to_slug($cat); + if (in_array('cat-'.$slug.'.php', $files)) { + $keys = array($slug); + return cfct_filename($dir, 'category', $keys); + } + } + return false; +} + +function cfct_choose_general_template_tag($dir, $files) { + $files = cfct_tag_templates($dir, $files); + if (count($files)) { + $tag = get_query_var('tag'); + if (in_array('tag-'.$tag.'.php', $files)) { + $keys = array($tag); + return cfct_filename($dir, 'tag', $keys); + } + } + return false; +} + +function cfct_choose_general_template_role($dir, $files) { + $files = cfct_role_templates($dir, $files); + if (count($files)) { + $username = get_query_var('author_name'); + $user = new WP_User(cfct_username_to_id($username)); + if (!empty($user->user_login)) { + if (count($user->roles)) { + foreach ($user->roles as $role) { + $role_file = 'role-'.$role.'.php'; + if (in_array($role_file, $files)) { + return $role_file; + } + } + } + } + } + return false; +} + +function cfct_choose_general_template_default($dir, $files) { + $context = cfct_context(); + return cfct_filename($dir, $context); +} + +/* ======================================== + Content Template Selection + ======================================== */ + +function cfct_choose_content_template($type = 'content') { + $exec_order = array( + 'author' + , 'meta' + , 'category' + , 'role' + , 'tag' + , 'parent' + , 'default' + ); + $new_exec_order = apply_filters('cfct_content_match_order', $exec_order); + $set = vanilla_get_option('vnl_tpl_set').'-set/'; + $files = cfct_files(CFCT_PATH.$set.$type); + foreach ($new_exec_order as $func) { + $func_name = 'cfct_choose_content_template_'.$func; + if (function_exists($func_name) && in_array($func, $exec_order)) { + $filename = $func_name($type, $files); + if ($filename != false) { + break; + } + } + } + return apply_filters('cfct_choose_content_template', $filename); +} + +function cfct_choose_content_template_author($type = 'content', $files = null) { + $files = cfct_author_templates($type, $files); + if (count($files)) { + $author = get_the_author_login(); + $file = 'author-'.$author.'.php'; + if (in_array($file, $files)) { + $keys = array($author); + return cfct_filename($type, 'author', $keys); + } + } + return false; +} + +function cfct_choose_content_template_meta($type = 'content', $files = null) { + global $post; + $files = cfct_meta_templates($type, $files); + if (count($files)) { + $meta = get_post_custom($post->ID); + if (count($meta)) { +// check key, value matches first + foreach ($meta as $k => $v) { + $val = $v[0]; + $file = 'meta-'.$k.'-'.$val.'.php'; + if (in_array($file, $files)) { + $keys = array($k => $val); + return cfct_filename($type, 'meta', $keys); + } + } +// check key matches only + foreach ($meta as $k => $v) { + $file = 'meta-'.$k.'.php'; + if (in_array($file, $files)) { + $keys = array($k => ''); + return cfct_filename($type, 'meta', $keys); + } + } + } + } + return false; +} + +function cfct_choose_content_template_category($type = 'content', $files = null) { + $files = cfct_cat_templates($type, $files); + if (count($files)) { + foreach ($files as $file) { + $cat_id = cfct_cat_filename_to_id($file); + if (in_category($cat_id)) { + $keys = array(cfct_cat_filename_to_slug($file)); + return cfct_filename($type, 'category', $keys); + } + } + } + return false; +} + +function cfct_choose_content_template_role($type = 'content', $files = null) { + $files = cfct_role_templates($type, $files); + if (count($files)) { + $user = new WP_User(get_the_author_ID()); + if (count($user->roles)) { + foreach ($files as $file) { + foreach ($user->roles as $role) { + if (cfct_role_filename_to_name($file) == $role) { + $keys = array($role); + return cfct_filename($type, 'role', $keys); + } + } + } + } + } + return false; +} + +function cfct_choose_content_template_tag($type = 'content', $files = null) { + global $post; + $files = cfct_tag_templates($type, $files); + if (count($files)) { + $tags = get_the_tags($post->ID); + if (count($tags)) { + foreach ($files as $file) { + foreach ($tags as $tag) { + if ($tag->slug == cfct_tag_filename_to_name($file)) { + $keys = array($tag->slug); + return cfct_filename($type, 'tag', $keys); + } + } + } + } + } + return false; +} + +function cfct_choose_content_template_parent($type = 'content', $files = null) { + global $post; + $files = cfct_parent_templates($type, $files); + if (count($files) && $post->post_parent > 0) { + $parent = cfct_post_id_to_slug($post->post_parent); + $file = 'parent-'.$parent.'.php'; + if (in_array($file, $files)) { + $keys = array($parent); + return cfct_filename($type, 'parent', $keys); + } + } + return false; +} + +function cfct_choose_content_template_default($type = 'content') { + $context = cfct_context(); + return cfct_filename($type, $context); +} + +/* ======================================== + Comment Template Selection + ======================================== */ + +function cfct_choose_comment_template() { + $exec_order = array( + 'ping' + , 'author' + , 'user' + , 'role' + , 'default' + ); + $new_exec_order = apply_filters('cfct_comment_match_order', $exec_order); + $set = vanilla_get_option('vnl_tpl_set').'-set/'; + $files = cfct_files(CFCT_PATH.$set.'comment'); + foreach ($new_exec_order as $func) { + $func_name = 'cfct_choose_comment_template_'.$func; + if (function_exists($func_name) && in_array($func, $exec_order)) { + $filename = $func_name($files); + if ($filename != false) { + break; + } + } + } + return apply_filters('cfct_choose_comment_template', $filename); +} + +function cfct_choose_comment_template_ping($files) { + global $comment; + switch ($comment->comment_type) { + case 'pingback': + case 'trackback': + return 'ping'; + break; + } + return false; +} + +function cfct_choose_comment_template_author($files) { + global $post, $comment; + if (!empty($comment->user_id) && $comment->user_id == $post->post_author && in_array('author.php', $files)) { + return 'author'; + } + return false; +} + +function cfct_choose_comment_template_user($files) { + global $comment; + $files = cfct_comment_templates('user', $files); + if (count($files) && !empty($comment->user_id)) { + $user = new WP_User($comment->user_id); + if (!empty($user->user_login)) { + $user_file = 'user-'.$user->user_login.'.php'; + if (in_array($user_file, $files)) { + return $user_file; + } + } + } + return false; +} + +function cfct_choose_comment_template_role($files) { + global $comment; + $files = cfct_comment_templates('user', $files); + if (count($files) && !empty($comment->user_id)) { + $user = new WP_User($comment->user_id); + if (!empty($user->user_login)) { + if (count($user->roles)) { + foreach ($user->roles as $role) { + $role_file = 'role-'.$role.'.php'; + if (in_array($role_file, $files)) { + return $role_file; + } + } + } + } + } + return false; +} + +function cfct_choose_comment_template_default($files) { + return cfct_default_file('comment'); +} + +/* ======================================== + Files + ======================================== */ + +function cfct_files($path) { + $files = wp_cache_get('cfct_files_'.$path, 'cfct'); + if ($files) { + return $files; + } + $files = array(); + if ($handle = opendir($path)) { + while (false !== ($file = readdir($handle))) { + $path = trailingslashit($path); + if (is_file($path.$file) && strtolower(substr($file, -4, 4)) == ".php") { + $files[] = $file; + } + } + } + wp_cache_set('cfct_files_'.$path, $files, 'cfct', 3600); + return $files; +} + +function cfct_filter_files($files = array(), $prefix = '') { + $matches = array(); + if (count($files)) { + foreach ($files as $file) { + if (substr($file, 0, strlen($prefix)) == $prefix) { + $matches[] = $file; + } + } + } + return $matches; +} + +function cfct_meta_templates($dir, $files = null) { + if (is_null($files)) { + $set = vanilla_get_option('vnl_tpl_set').'-set/'; + $files = cfct_files(CFCT_PATH.$set.$dir); + } + $matches = cfct_filter_files($files, 'meta-'); + return apply_filters('cfct_meta_templates', $matches); +} + +function cfct_cat_templates($dir, $files = null) { + if (is_null($files)) { + $set = vanilla_get_option('vnl_tpl_set').'-set/'; + $files = cfct_files(CFCT_PATH.$set.$dir); + } + $matches = cfct_filter_files($files, 'cat-'); + return apply_filters('cfct_cat_templates', $matches); +} + +function cfct_tag_templates($dir, $files = null) { + if (is_null($files)) { + $set = vanilla_get_option('vnl_tpl_set').'-set/'; + $files = cfct_files(CFCT_PATH.$set.$dir); + } + $matches = cfct_filter_files($files, 'tag-'); + return apply_filters('cfct_tag_templates', $matches); +} + +function cfct_author_templates($dir, $files = null) { + if (is_null($files)) { + $set = vanilla_get_option('vnl_tpl_set').'-set/'; + $files = cfct_files(CFCT_PATH.$set.$dir); + } + $matches = cfct_filter_files($files, 'author-'); + return apply_filters('cfct_author_templates', $matches); +} + +function cfct_role_templates($dir, $files = null) { + if (is_null($files)) { + $set = vanilla_get_option('vnl_tpl_set').'-set/'; + $files = cfct_files(CFCT_PATH.$set.$dir); + } + $matches = cfct_filter_files($files, 'role-'); + return apply_filters('cfct_role_templates', $matches); +} + +function cfct_parent_templates($dir, $files = null) { + if (is_null($files)) { + $set = vanilla_get_option('vnl_tpl_set').'-set/'; + $files = cfct_files(CFCT_PATH.$set.$dir); + } + $matches = cfct_filter_files($files, 'parent-'); + return apply_filters('cfct_parent_templates', $matches); +} + +function cfct_comment_templates($type, $files = false) { + if (!$files) { + $set = vanilla_get_option('vnl_tpl_set').'-set/'; + $files = cfct_files(CFCT_PATH.$set.'comment'); + } + $matches = array(); + switch ($type) { + case 'user': + $matches = cfct_filter_files($files, 'user-'); + break; + case 'role': + $matches = cfct_filter_files($files, 'role-'); + break; + } + return apply_filters('cfct_comment_templates', $matches); +} + +/* ======================================== + Utility Functions + ======================================== */ + +function cfct_cat_filename_to_id($file) { + $cat = str_replace(array('cat-', '.php'), '', $file); + $cat = get_category_by_slug($cat); + return $cat->cat_ID; +} + +function cfct_cat_filename_to_name($file) { + $cat = str_replace(array('cat-', '.php'), '', $file); + $cat = get_category_by_slug($cat); + return $cat->name; +} + +function cfct_cat_filename_to_slug($file) { + return str_replace(array('cat-', '.php'), '', $file); +} + +function cfct_cat_id_to_slug($id) { + $cat = &get_category($id); + return $cat->slug; +} + +function cfct_username_to_id($username) { + return get_profile('ID', $username); +} + +function cfct_tag_filename_to_name($file) { + return str_replace(array('tag-', '.php'), '', $file); +} + +function cfct_author_filename_to_name($file) { + return str_replace(array('author-', '.php'), '', $file); +} + +function cfct_role_filename_to_name($file) { + return str_replace(array('role-', '.php'), '', $file); +} + +function cfct_hcard_comment_author_link($str) { + return str_replace('<a href', "<a class='fn url' href", $str); +} +function cfct_hcard_ping_author_link($str) { + return str_replace('<a href', "<a rel='bookmark' class='fn url' href", $str); +} + +function cfct_post_id_to_slug($id) { + $post = get_post($id); + return $post->post_name; +} + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_custom-widgets/admin_actions.php b/wp-content/themes/vanilla/_custom-widgets/admin_actions.php new file mode 100755 index 000000000..ea8bd263e --- /dev/null +++ b/wp-content/themes/vanilla/_custom-widgets/admin_actions.php @@ -0,0 +1,134 @@ +<?php + +global $wp_registered_sidebars, $wp_registered_widgets, $wp_registered_widget_controls; + + +// Compute current admin sub-page +$_POST['act'] = !empty($_POST['act']) ? $_POST['act'] : (!empty($_GET['act']) ? $_GET['act'] : false ); + + +// Do action +switch($_POST['act']){ + + default: + // Default action | Save main plugin options + + echo '<div class="updated"><p><strong>', _e('Options saved.', 'mt_trans_domain' ) ,'</strong></p></div>'; + + + break; + + case 'save_ext': + + if(isset($_GET['id']) && !empty($wp_registered_widgets[$_GET['id']])){ + + if(empty($this->widgets[$_GET['id']])) $this->widgets[$_GET['id']] = $this->info['blank']; + + $opts = array('is_home', 'is_single', 'is_sticky', 'comments_open', 'is_page', 'is_category', 'is_tag', 'is_archive', 'is_search', 'is_404', 'is_preview'); + + foreach($opts as $opt) + $this->widgets[$_GET['id']]['opts'][$opt] = isset($_POST['opt'][$opt]); + + update_option('slayer_widgets', $this->widgets); + + echo '<div class="updated"><p><strong>', _e('Options saved.', 'mt_trans_domain' ) ,'</strong></p></div>'; + + } + + + break; + + case 'edit': + + if(isset($_GET['id']) && !empty($wp_registered_widgets[$_GET['id']])){ + + if(empty($this->widgets[$_GET['id']])) $this->widgets[$_GET['id']] = $this->info['blank']; + + if(!empty($_POST['posts'])){ + + foreach($_POST['posts'] as $post){ + + $title = explode('_', $post); + $id = array_shift($title); + $title = implode('_', $title); + + $this->widgets[$_GET['id']]['posts'][$id] = $title; + + } + + } + + if(!empty($_POST['authors'])){ + foreach($_POST['authors'] as $author){ + + $title = explode('_', $author); + $id = array_shift($title); + $title = implode('_', $title); + + $this->widgets[$_GET['id']]['authors'][$id] = $title; + + } + + } + + if(!empty($_POST['pages'])){ + + foreach($_POST['pages'] as $post){ + + $title = explode('_', $post); + $id = array_shift($title); + $title = implode('_', $title); + + $this->widgets[$_GET['id']]['pages'][$id] = $title; + + } + + } + + + if(!empty($_POST['categories'])){ + + foreach($_POST['categories'] as $post){ + + $title = explode('_', $post); + $id = array_shift($title); + $title = implode('_', $title); + + $this->widgets[$_GET['id']]['categories'][$id] = $title; + + } + + } + + + if(!empty($_POST['tags'])){ + + foreach($_POST['tags'] as $post){ + + $title = explode('_', $post); + $id = array_shift($title); + $title = implode('_', $title); + + $this->widgets[$_GET['id']]['tags'][$id] = $title; + + } + + } + + + + update_option('slayer_widgets', $this->widgets); + + + echo '<div class="updated"><p><strong>Widget saved</strong></p></div>'; + + + } + + break; + + + } + + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_custom-widgets/admin_css.php b/wp-content/themes/vanilla/_custom-widgets/admin_css.php new file mode 100755 index 000000000..66585e628 --- /dev/null +++ b/wp-content/themes/vanilla/_custom-widgets/admin_css.php @@ -0,0 +1,23 @@ +.slayer_list{list-style:none;padding:5px;margin:0px;display:block;line-height:normal;background:#FFF;border:1px solid #C6D9E9;overflow:hidden;} +.slayer_list li {margin:5px;padding:5px;border:1px solid #F0F0F0;float:left;width:30% !important;} +.slayer_list li ul{list-style:none;padding:0px;height:225px;overflow:auto;} +.slayer_list li li{float:none;width:auto !important;height:auto;overflow:visible;} +.slayer_list h4{margin:0px;padding:5px;} +.slayer_list span{float:right;} +.slayer_main_table{width:100%;background:#E4F2FD;padding:5px;margin:10px 0px;border:1px solid #C6D9E9;} +.slayer_main_table table{background:#FFF;} +.slayer_post_list {background:#FFF;height:400px;margin:10px 10px 10px 0px;border:1px solid #C6D9E9;overflow:auto;list-style:none;padding:0px;} +.slayer_post_list li{padding:5px;margin:5px 5px;border-bottom:1px solid #C6D9E9;} +.slayer_post_list li a,.slayer_post_list li a:visited{display:block;} +.slayer_paypal{display:block;margin:10px 0px;text-align:center;} +.not_registered{opacity:0.15;} +.slayer_donate_wrapper{margin:10px 0px;} +.rbet_checkbox div{position:relative;} +.rbet_tip{display:none;position:absolute;background:url(<?php echo $this->info['url']; ?>/images/tip.gif) top left no-repeat;padding:5px 4px;width:242px;height:70px;left:-60px;top:-55px;z-index:2;line-height:135%;cursor:default;color:#2583AD;font-size:11px;font-weight:normal;} +.rbet_tip_img{background:url(<?php echo $this->info['url']; ?>/images/help.gif) top left no-repeat;background-position:0px 15px;position:relative;padding:16px 0px 5px 0px;margin:0px 5px;} +.rbet_tip_img ,link{padding:16px 16px 5px 0px;outline:none;} + +#rbet_extended h3 .rbet_tip{left:auto;margin-left:-60px;font-size:10px;} +#rbet_extended h3 .rbet_tip_img{background-image:url(<?php echo $this->info['url']; ?>/images/help_blue.gif);} +#rbet_extended h3 img{vertical-align:middle;} +#rbet_extended table{width:100%;} \ No newline at end of file diff --git a/wp-content/themes/vanilla/_custom-widgets/admin_template_edit.php b/wp-content/themes/vanilla/_custom-widgets/admin_template_edit.php new file mode 100755 index 000000000..939672bee --- /dev/null +++ b/wp-content/themes/vanilla/_custom-widgets/admin_template_edit.php @@ -0,0 +1,230 @@ +<?php + + +global $wp_registered_sidebars, $wp_registered_widgets, $wp_registered_widget_controls; + + + +if(!isset($_GET['id']) || empty($wp_registered_widgets[$_GET['id']])) + + echo '<div class="error"><p><strong>Error! Could not find widget.</strong></p></div>'; + +else { + + if(isset($_GET['reset_widget'])){ + + $this->widgets[$_GET['id']] = $this->info['blank']; + + update_option(slayer_widgets,$this->widgets); + + } + + $url = $this->info['admin_url'] . '&act=edit&id=' . $_GET['id']; + + $widget = &$wp_registered_widgets[$_GET['id']]; + + if(!empty($_GET['opt'])){ + + echo '<h2><a href="', $this->info['admin_url'] ,'">Custom widgets</a> » <a href="',$url,'">', $widget['name'], '</a> » ' , $_GET['opt'] ,'</h2>'; + + require(dirname(__FILE__) . '/show_in_' . $_GET['opt'] . '.php'); + + } + + else + { + + echo '<h2><a href="', $this->info['admin_url'] ,'">Custom widgets</a> » ', $widget['name'],'</h2>'; + + echo '<table class="form-table">'; + echo '<tr>'; + echo '<th scope="row" style="width:200px;">'; + echo '<h3>Options</h3>'; + echo '<div style="font-weight:normal;margin-bottom:20px;">Select where do you want this specific widget to show:</div>'; + + echo '<ul style="margin:0px;padding:0px;font-weight:normal;list-style-position:inside;">'; + echo '<li><strong>Posts</strong>: will only show if the user is viewing one of the posts in the list</li>'; + echo '<li><strong>Pages</strong>: will only show if the user is viewing one of the pages in the list</li>'; + echo '<li><strong>Categories</strong>: will only show if the user is viewing one of the categories in the list or a post that was filed under one of the specified categories.</li>'; + echo '<li><strong>Tags</strong>: will only show if the user is viewing the specified tags page.</li>'; +echo '<li><strong>Authors</strong>: will only show if the user is viewing a page or post which was written by the specified author.</li>'; + echo '</ul>'; + + echo '<br /><a class="button" onclick="if(!confirm(\'Are you sure you want to reset this widget?\')) return false;" href="',$url,'&reset_widget">Reset this widget</a>'; + + echo '</th>'; + echo '<td>'; + echo '<ul class="metabox-holder">'; + + if(empty($this->widgets[$_GET['id']])) + $this->widgets[$_GET['id']] = $this->info['blank']; + + $has_limit = false; + + foreach($this->widgets[$_GET['id']] as $group => $data ) + if(!empty($data)) + if($group != 'opts') + $has_limit = true; + else + foreach($data as $opt) + if(!empty($opt)){ + $has_limit = true; + break; + } + + foreach($this->info['blank'] as $group => $data ) + if($group != 'opts') { + + $data = $this->widgets[$_GET['id']][$group]; + + echo '<li style="float:left; margin-right:2em;"><div class="postbox">'; + + echo '<h3 class="hndle">', $group ,' (<a href="',$url,'&opt=', $group ,'">Edit</a>)</h3>'; + + echo '<div class="inside" style="padding: 0 1em;"><ul>'; + + $i = 0; + + if(!$data) + echo '<li>', $has_limit ? 'none' : 'all' ,'</li>'; + else + foreach($data as $name){ + + echo '<li><strong>' , ++$i , '.</strong> ' ; + + echo $name; + + echo '</li>'; + + } + echo '</ul></div>'; + + echo '</div></li>'; + + } + + echo '</ul>'; + + + echo '<form action="" method="post" style="clear:both;" class="metabox-holder"><div id="rbet_extended" class="postbox">'; + + echo '<h3 class="hndle" style="margin:0;">Extended features (assign a widget to a specific WP template)'; + + echo '<span class="rbet_tip_img">'; + echo '<a class="link" onclick="return false;" href="', $v['url'] ,'"></a>'; + echo '<span class="rbet_tip">'; + echo 'The Conditional Tags can be used in your Template files to change what content is displayed and how that content is displayed on a particular page.'; + echo '</span>'; + echo '</span>'; + + echo '</h3>'; + + + $data = array( + + 'is_home' => array( + 'title' => 'Show Widget Only on Homepage', + 'url' => 'http://codex.wordpress.org/Conditional_Tags#The_Main_Page', + 'tip' => 'The widget is shown only on your blog\'s homepage using the <a onclick="window.open(this.href); return false;" href="http://codex.wordpress.org/Conditional_Tags#The_Main_Page">is_home()</a> tag', + ), + 'is_single' => array( + 'title' => 'Show Widget on all posts', + 'url' => 'http://codex.wordpress.org/Conditional_Tags#A_Single_Post_Page', + 'tip' => 'The widget is shown when any post is displayed using the <a onclick="window.open(this.href); return false;" href="http://codex.wordpress.org/Conditional_Tags#A_Single_Post_Page">is_single()</a> tag', + ), + 'is_sticky' => array( + 'title' => 'Show Widget only on Sticky posts', + 'url' => 'http://codex.wordpress.org/Conditional_Tags#A_Sticky_Post', + 'tip' => 'The widget is shown when any stickied page is displayed using the <a onclick="window.open(this.href); return false;" href="http://codex.wordpress.org/Conditional_Tags#A_Sticky_Post">is_sticky()</a> tag' + ), + 'comments_open' => array( + 'title' => 'Show Widget on Posts/pages Where commenting is open', + 'url' => 'http://codex.wordpress.org/Conditional_Tags#Any_Page_Containing_Posts', + 'tip' => 'The widget is shown when any post is displayed where commenting is possible using the <a onclick="window.open(this.href); return false;" href="http://codex.wordpress.org/Conditional_Tags#Any_Page_Containing_Posts">comments_open()</a> tag' + ), + 'is_page' => array( + 'title' => 'Show widget on all pages', + 'url' => 'http://codex.wordpress.org/Conditional_Tags#A_PAGE_Page', + 'tip' => 'The widget is shown when any page is displayed using the <a onclick="window.open(this.href); return false;" href="http://codex.wordpress.org/Conditional_Tags#A_PAGE_Page">is_page()</a> tag' + ), + + 'is_category' => array( + 'title' => 'Show widget on all Categories', + 'url' => 'http://codex.wordpress.org/Conditional_Tags#A_Category_Page', + 'tip' => 'The widget is shown when any category is displayed using the <a onclick="window.open(this.href); return false;" href="http://codex.wordpress.org/Conditional_Tags#A_Category_Page">is_category()</a> tag' + ), + 'is_tag' => array( + 'title' => 'Show widget on all Tag Pages', + 'url' => 'http://codex.wordpress.org/Conditional_Tags#A_Tag_Page', + 'tip' => 'The widget is shown when any Tag page is displayed using the <a onclick="window.open(this.href); return false;" href="http://codex.wordpress.org/Conditional_Tags#A_Tag_Page">is_tag()</a> tag' + ), + 'is_archive' => array( + 'title' => 'Show widget on all Archive pages', + 'url' => 'http://codex.wordpress.org/Conditional_Tags#Any_Archive_Page', + 'tip' => 'The widget is shown when any type of Archive page is displayed using the <a onclick="window.open(this.href); return false;" href="http://codex.wordpress.org/Conditional_Tags#Any_Archive_Page">is_archive()</a> tag' + ), + 'is_search' => array( + 'title' => 'Show widget on Search results', + 'url' => 'http://codex.wordpress.org/Conditional_Tags#A_Search_Result_Page', + 'tip' => 'The widget is shown on all search results using the <a onclick="window.open(this.href); return false;" href="http://codex.wordpress.org/Conditional_Tags#A_Search_Result_Page">is_search()</a> tag' + ), + 'is_404' => array( + 'title' => 'Show widget on the 404 - Not found Error Page', + 'url' => 'http://codex.wordpress.org/Conditional_Tags#A_404_Not_Found_Page', + 'tip' => 'The widget is shown on the 404 - Not found error page using the <a onclick="window.open(this.href); return false;" href="http://codex.wordpress.org/Conditional_Tags#A_404_Not_Found_Page">is_404()</a> tag' + ), + 'is_preview' => array( + 'title' => 'Show Widget for admin previews', + 'url' => 'http://codex.wordpress.org/Conditional_Tags#A_Preview', + 'tip' => 'The widget is shown when a single post being displayed is viewed in Draft mode using the <a onclick="window.open(this.href); return false;" href="http://codex.wordpress.org/Conditional_Tags#A_Preview">is_preview()</a> tag' + ) + ); + + + echo '<table class="rbet_checkbox">'; + + $i = 1 ; + echo '<tr>'; + + foreach($data as $id => $v){ + + //if($i === true) echo '</tr><tr>'; + + echo '<tr><td><label>'; + echo '<input ', !empty($this->widgets[$_GET['id']]['opts'][$id]) ? 'checked="checked"' : false ,' type="checkbox" name="opt[',$id,']" value="1" /> ', $v['title']; + echo '<span class="rbet_tip_img">'; + echo '<a class="link" onclick="return false;" href="', $v['url'] ,'"></a>'; + echo '<span class="rbet_tip">'; + echo $v['tip']; + echo '</span>'; + echo '</span>'; + echo '</label></td></tr>'; + + //$i = $i ? false : true; + + }/* + if($i) echo '<td></td>'; + echo '</tr>'; + */ + echo '</table>'; + + echo '<input type="hidden" name="act" value="save_ext" />'; + + echo '<p class="submit" style="padding:1em 2em;"><input type="submit" value="Save Changes" class="button-primary" /></p>'; + + echo '</div></form>'; + + echo '</td>'; + + echo '</tr>'; + + echo '</table>'; + + } + + echo '<script type="text/javascript">//<!--' , "\n" , file_get_contents(dirname(__FILE__) . '/javascript.js') , '//--></script>'; + + } + + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_custom-widgets/admin_template_main.php b/wp-content/themes/vanilla/_custom-widgets/admin_template_main.php new file mode 100755 index 000000000..424da1e2e --- /dev/null +++ b/wp-content/themes/vanilla/_custom-widgets/admin_template_main.php @@ -0,0 +1,89 @@ + +<h2>Custom widgets</h2> +<table class="form-table"> + <tr> + <th scope="row" style="width:200px;"> + <h3>Widgets</h3> + <div style="font-weight:normal;margin-bottom:20px;">Select a widget from the list that you want to customize.</div> + + <h4>Legend</h4> + <div style="font-weight:normal;margin-top:10px;"> + Blue text - normal widget <br/> + Red text - customized widget + </div> + + <br/><br/> + + <a class="button" onclick="if(!confirm('Are you sure you want to reset all widgets?')) return false;" href="<?php echo $this->info['admin_url'] ?>&reset_widgets">Reset all widgets</a> + </th> + <td> + <?php +/* +<div id="postexcerpt" class="postbox " > +<div class='handlediv'><br /></div><h3 class='hndle'><span>Excerpt</span></h3> +<div class="inside"> +<label class="hidden" for="excerpt">Excerpt</label><textarea rows="1" cols="40" name="excerpt" tabindex="6" id="excerpt"></textarea> +<p>Excerpts are optional hand-crafted summaries of your content. You can <a href="http://codex.wordpress.org/Template_Tags/the_excerpt" target="_blank">use them in your template</a></p> +</div> +</div> +*/ + + + + + global $wp_registered_sidebars, $wp_registered_widgets, $wp_registered_widget_controls; + + $sidebars = wp_get_sidebars_widgets(); + + if(!$sidebars) + echo '<div class="slayer_list">No widgets registered. Please setup at least one widget via wordpress <a href="widgets.php">widgets control panel</a>(found under the Design tab)</div>'; + else + { + echo '<ul class="metabox-holder">'; + + foreach($sidebars as $sidebar_id => $widgets){ + + echo '<li style="float:left; margin-right:2em;"><div class="postbox">'; + + echo '<h3 class="hndle ', !empty($wp_registered_sidebars[$sidebar_id]['name']) ? false : 'not_registered' ,'"><span>',!empty($wp_registered_sidebars[$sidebar_id]['name']) ? $wp_registered_sidebars[$sidebar_id]['name'] : 'Not registered','</span></h3>'; + + echo '<div class="inside" style="padding: 0 1em;"><ul>'; + + foreach($widgets as $widget_id){ + + $has_limit = false; + if(!empty($this->widgets[$widget_id])) + foreach($this->widgets[$widget_id] as $group => $data ) + if(!empty($data)) + if($group != 'opts'){ + $has_limit = true; + break; + } + else + foreach($data as $opt) + if(!empty($opt)){ + $has_limit = true; + break; + } + + echo '<li><a style="', $has_limit ? 'color:red;' : false ,'" href="',$this->info['admin_url'],'&act=edit&id=',$wp_registered_widgets[$widget_id]['id'],'">'; + + echo !empty($wp_registered_widgets[$widget_id]['name']) ? $wp_registered_widgets[$widget_id]['name'] : $wp_registered_widgets[$widget_id]['id']; + + echo '</a></li>'; + + } + echo '</ul></div>'; + + echo '</div></li>'; + + + } + + echo '</ul>'; + } + ?> + + </td> + </tr> +</table> diff --git a/wp-content/themes/vanilla/_custom-widgets/custom_widgets.php b/wp-content/themes/vanilla/_custom-widgets/custom_widgets.php new file mode 100755 index 000000000..494695789 --- /dev/null +++ b/wp-content/themes/vanilla/_custom-widgets/custom_widgets.php @@ -0,0 +1,216 @@ +<?php +/* +Description: This plugin enables you to select which widgets appear on specific posts, pages, categories,author's posts and tag pages. By default, all widgets appear wherever the sidebar is loaded within your theme. With this plugin, you can configure where widgets are displayed on a per post or per <a href="http://codex.wordpress.org/Conditional_Tags" target ="_blank">WP Template</a>(Using conditional Tags) basis. +Author: ThaSlayer +Version: 1.2 +Author URI: http://www.thaslayer.com/ +*/ + + + + + /* + * + * PHP Code by mucenica.bogdan@yahoo.com for ThaSlayer | Romania 2008 + * + * + * Creation date: October 14, 2008 + * Revision date: October 30, 2008 + * + */ + +class slayer_Custom_widgets{ + + + /* + * Contains information regarding the plugin + * + * access public + * type: array + * + */ + var $info; + + + + /* + * Object constructor + * + */ + function slayer_Custom_widgets(){ + + // Initialization + + + // Main plugin options + $this->info = array( + 'admin_url' => '?page=' . (!empty($_GET['page']) ? $_GET['page'] : false), + 'dir' => array_pop(explode("/", str_replace("\\", "/", dirname(__FILE__)))), + 'posts_per_page' => 10, + 'blank' => array( + 'posts' => array(), + 'pages' => array(), + 'categories' => array(), + 'tags' => array(), + 'authors' => array(), + 'opts' => array() + ) + ); + + if(isset($_GET['reset_widgets'])) + update_option(slayer_widgets,array()); + + // Compute option page link + $this->info['url'] = get_bloginfo('template_directory') . '/' . $this->info['dir']; + + + // Compute plugin images link + $this->info['images'] = $this->info['url'] . '/images'; + + $this->widgets = get_option('slayer_widgets'); + $this->widgets = $this->widgets ? $this->widgets : array(); + + add_action('get_header', array(&$this, 'init')); + add_action('admin_head', array(&$this, 'add_admin_css')); + add_action('admin_menu', array(&$this, 'add_admin_menu')); + + } + + + /* + * Style admin panel page through CSS head inseriton + * + */ + function add_admin_css(){ + + echo '<style type="text/css">'; + require( dirname(__FILE__) .'/admin_css.php'); + echo '</style>'; + + } + + + /* + * Add new submeniu under the admin settings page + * + */ + function add_admin_menu() { + + //add_options_page('Custom widgets', 'Custom widgets', 8, __FILE__ , array(&$this, 'admin_page')); + add_theme_page("Custom Widgets", "Custom Widgets", 8, basename(__FILE__), array(&$this, 'admin_page')); + } + + + /* + * Render admin page controllers + * + */ + function admin_page() { + // If data was sent through POST, process it + if(!empty($_POST)) + require(dirname(__FILE__) . '/admin_actions.php'); + + // Compute current admin sub page + $_GET['act'] = !empty($_GET['act']) ? $_GET['act'] : 'main'; + + // Find current page + if(!file_exists( $f = dirname(__FILE__) . '/admin_template_' . $_GET['act'] . '.php' )) { + $_GET['act'] = 'main'; + $f = dirname(__FILE__) . '/admin_template_' . $_GET['act'] . '.php'; + } + + //Render current page + + echo '<div class="wrap">'; + + require($f); + + echo '</div>'; + + } + + + /* + * Initialize the plugin + * + */ + function init(){ + + global $wp_registered_widgets; + + foreach($this->widgets as $id => $data){ + + $keep = false; + + if(!empty($data['opts'])) + foreach($data['opts'] as $opt => $bool) + if($bool && $opt()) + $keep = true; + + + if(is_single()){ + + global $post; + + $categories = get_the_category($post->ID); + if($categories) + foreach( $categories as $category ) + if(isset($data['categories'][$category->term_id])) + $keep = true; + + if(!empty($data['authors'][$post->post_author])) + $keep = true; + + $tags = get_the_tags($post->ID); + if($tags) + foreach( $tags as $tag ) + if(isset($data['tags'][$tag->term_id])) + $keep = true; + + if(isset($data['posts'][$post->ID])) + $keep = true; + + } + + if(is_page()){ + + global $post; + + if(isset($data['pages'][$post->ID])) + $keep = true; + } + + if(is_category()){ + + if(isset($data['categories'][get_query_var('cat')])) + $keep = true; + + } + + if(is_tag()){ + + if(is_array($data['tags']) && in_array(get_query_var('tag'), $data['tags'])) + $keep = true; + + } + + if(!$keep) + unset($wp_registered_widgets[$id]); + + } + + } + + + } + + +new slayer_Custom_widgets; + + + +// I'm done :) + + + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_custom-widgets/images/help.gif b/wp-content/themes/vanilla/_custom-widgets/images/help.gif new file mode 100755 index 0000000000000000000000000000000000000000..31c2166fee75ad55ff1726ba2f7228645b0e5a95 GIT binary patch literal 402 zcmZ?wbhEHb6krfwxXQrbQoMTEfyY&g&tHA~e)g8jX_F4@yZrp|t50zq+fLtjx%JGW zuGN>{eg07}<5*Db#$A^`?mYKw;m&IhUwy7!el@OR*OV<ckKTB5`QiH)@4gkzJ)1TC z$k!i#@4f#%ch~(_pZ@GQ|17e3>#?iP&)#`|;@*#nIVV=`ztytz<k}NYCa*u=y83!b z=T`U9b#Fd?zxL$o-gEcvzWA2hw>Nv{@ti69H=ljG@A}u}dv8qHdhg7gSFOuVC$w!W zm~~{qo|}hmetr1%k5AS5|Ns9h{$ycfXRv3`VPIfj0Qrf5ZT*4y1s*zL=6ePEk5%XP z*!zEWt=*cochU2YLaae6`<9AU@S4YXM<`ixDm3#s-^l7zYwE3Q-X6i@q^>I~DJjIo zCe0=#D$eaBtIH&5XvoDQVa;mA%<CjNNotX_kdc9b5i{$2anY%)8$>o)m>W6C%Zu?Y z*U{nFFJNlwq@%(qU?ifU!C|S&rXb<WX`slarlqCEC9f^-swg7JDK5^*Vy73tE~vo3 Oz{kQK@Ws`U!5RQflD=91 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/_custom-widgets/images/help_blue.gif b/wp-content/themes/vanilla/_custom-widgets/images/help_blue.gif new file mode 100755 index 0000000000000000000000000000000000000000..35b17948882dc97eca55a4d6593961a15e9abb86 GIT binary patch literal 610 zcmZ?wbhEHb6krfwc*ekBlCyNdo|`#S_FsGSA);+({emMq&pgm?-T30&x2<O$b*;Vb zS+l8d?pdAc)o1R!itFAx@8DCPsr$eF_;c;a*V^S**PeUlRJL}?mYavKKF?ToCUf%P zu(?NdOII%4bJMtLZBoaUmZc}NXCA-%;@gsAFW!9o9x&tJw#%Q3)?Kn_-F)@&`+b+6 zr%gK0y7t=S_2;dNR!!M<uWIr6qc`51z4LzOxo4L3>&q6NTf6t3R^vMVrftDf4s5yj z@!tFI1v8E(_w7yT+&XvHeT(d6Q9WBNd$)i3_G|Bj$F0jw7tA^`d&}juC!XAU_THp( z%d!KHv)7(8Y22XJypCb;0mYvzjO+}43_2jEf#QULeSd>rQ*%petCPB@nw7GTQ=6Z( zsM3@v!UC$T(pE}F-dtSvhQjuO%}&Znh9dSH93BS7%sO68lEOwJrb2s!L<}S(ESvO~ znDTINY6)pciEAnz5jNmaROD3QVAOVFmTKZ+Hn=9`ti)t%%cRNQWU48yC?)msrMxSj zMU$Yhq0LJbj~a=L1<bsT>{Uk$6dpKsi!oaZY%E9?;9@%H@Z&?^0R};FUM|x}fdh@6 a?CuRMCMAcPxfL833RZBeR9oo4U=08oz|=ng literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/_custom-widgets/images/tip.gif b/wp-content/themes/vanilla/_custom-widgets/images/tip.gif new file mode 100755 index 0000000000000000000000000000000000000000..29106f23a33e2955aa96532712e5b6e30505d7f4 GIT binary patch literal 1109 zcmZ?wbhEHb{KeqUaD;(j$Mp|a-~T`I;{UU+|CiqVzxUbyGq3*L`}qIekN?{q|G)SB z|JH~9*4_NR=KlZ9H@}{L`+v)w9~<uc{Qv(y193p{CkrDxgAjubNIA$(2G;)y3VkV= z^D<Vg%Xz)8K<9jkuX4q@_cibTA6QV}p(E9QVo6b@h~fMTD@wf9Ms=QBU3U6y)&BiD z6+U{i&s!Q+oz2_b{c3xSpZW3EKla#ZNxk{s(CEZm+tk+H*uucv)7#fSVdA98Q>IRv zK4a#r*>mR3n?JjD!Qv%Lmn~nha@F)jtJkgHuyNDoNo%)k-?4Mo?w)OX_8&NSXvV(7 z$Bv)adGzF&v*(taK7Z-*m5EC1S8v|B!hW6o{)2~)9zS{d?D>nAuU@}-`|kaRkDuP& z`~2<ukDtGO|M~m!>pvzg8IKJM9E%wEwPH?eSa>*(LC$NA$HqsyTf~gB?wkm4VdztE z?t1dvu;Junjo|;QVoq*adV0D+@~JtVo0pxPZBcwlXXWPQ=jS^#bIE#%sGVQrF<C42 z)Rvd07W*ysn(MVSi(y6B=B&G?OqX@A#~$vIo&8n&=H`sce1Cr}SbKYW!Q)eNy|=Hs zySw7^tGlPSufM;);rk|DpB)<>9_|p<j;jf8VLUcL*?XSPPNUf4(~Pt4o!R+0`Z$|Y zx18^;EiW&x2woj`cGuR|*Eb}ep6C19^u?_m#jo$3-M#(&{nh!*@_u`Ee0+Suw_9Ms zo}HhcUs&89r?+6&*Vi{TXWu`!clY=A4-R+B`|sQH^Ye@2!T#s>?fw1z!{gKQ|JU07 z{r%(f>-*>9cmMszz^3t_fraZsd?Sb2iU<Fj9&`pAXclnOc-SHmmhrGvB5lRPHkq;) z58D;mG#0h<^<_Nj)L6FSQJ2oP6^WgC$21=Im|V+9ZZ){K;&GqNw-=9_E&pjencyO} zGjW2O+R7)BY`P{Km>l4y`E*K1Smx8I5os%*PKzmf`E+_ho943VetntGW@ao~`D|9s zww0+f^NwjgpHp%zGkt2oy_L`B)qH#Td~)SK%@+$=#C9#^;8t1nVo{ITs~3wWxM{sy zG9@hQ<<c2xt6naflhl>5d_kMms})P8WxZNCrLODMsx{kQy;{A&F6;1`ExQ;TnRh%} z^?Kc&Z(NKlTiLYVY&g=TaB$-ZwbgGnoiTg;X7dHN**Xk@U$Wj_+RAHT(6r@F+3UC4 zAGB$|+wo+Y_BxIm%eu2!Zb@ao+x_8~_WM0w&S^VseHG>HwD-@q*YEc;%=gaSx5sTm z?g0+<H6IRryyso8PEg{F-eHmOoR3G3Tm9K^L^%1)$KwjOUmrO9mPz2#NsZ+^dJM{| zPj5V_bzJB38A)b`17|Is*L>b*^8JnR38fcnjG5X0=X|-yvsnAfSykn?UoJCrA85GX zBF_8uYQ%o+t>=8x-+sN$<X>BSRkk_z+s*S#3TEdsw!huBDQoiIZ+A*o=bGNFn0>bF LUX8Id6N5DX4+(C* literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/_custom-widgets/javascript.js b/wp-content/themes/vanilla/_custom-widgets/javascript.js new file mode 100755 index 000000000..8301f7805 --- /dev/null +++ b/wp-content/themes/vanilla/_custom-widgets/javascript.js @@ -0,0 +1,47 @@ +jQuery(document).ready(function(){ + + jQuery('.rbet_tip').each(function(){ + + this.parentNode.rbet_tip = this; + + jQuery(this).hide(); + + this.parentNode.onmouseover = function(){ + + jQuery(this.rbet_tip).show(); + + }; + this.parentNode.onmouseout = function(){ + + jQuery(this.rbet_tip).hide(); + + + }; + + } + ); + + jQuery('.check-column-controller').each(function(){ + + jQuery('tr',this.parentNode.parentNode.parentNode.tBodies[0]).each(function(){ + this.style.cursor = 'pointer'; + this.onclick = function(ev) { + ev = ev || window.event; + var target = ev.target || ev.srcElement; + if( !target.type || target.type != 'checkbox' ) + this.firstChild.firstChild.checked = !this.firstChild.firstChild.checked; + } + } + ); + + this.firstChild.onclick = function(){ + jQuery('.check-column',this.parentNode.parentNode.parentNode.parentNode.tBodies[0]).each(function(){ + this.firstChild.checked = !this.firstChild.checked; + } + ); + } + } + ); + + } +); \ No newline at end of file diff --git a/wp-content/themes/vanilla/_custom-widgets/show_in_authors.php b/wp-content/themes/vanilla/_custom-widgets/show_in_authors.php new file mode 100755 index 000000000..c62047b43 --- /dev/null +++ b/wp-content/themes/vanilla/_custom-widgets/show_in_authors.php @@ -0,0 +1,87 @@ +<?php + +$url .= '&opt='. $_GET['opt'] . '&author_pag=' . ( $_GET['author_pag'] = ( !empty($_GET['author_pag']) ? $_GET['author_pag'] : 0 ) ); + +if(!empty($_GET['delete_author']) && isset($this->widgets[$_GET['id']]['authors'][$_GET['delete_author']])){ + + unset($this->widgets[$_GET['id']]['authors'][$_GET['delete_author']]); + + update_option('slayer_widgets', $this->widgets); + + } + +echo '<table class="slayer_main_table">'; + + echo '<tr>'; + + echo '<td style="width:50%;" valign="top">'; + + echo '<h2>Show in posts with the folowing authors</h2>'; + + echo '<ul class="slayer_post_list">'; + + if(empty($this->widgets[$_GET['id']]['authors'])) + echo '<li>all</li>'; + else + { + + foreach($this->widgets[$_GET['id']]['authors'] as $id => $title){ + + echo '<li><a onclick="if(!confirm(\'Are you sure you want to remove this author from the list?\')) return false;" href="', $url , '&delete_author=' , $id ,'">', $title ,'</a></li>'; + + } + + } + + echo '</ul>'; + + echo 'Click a author to remove it.'; + + echo '</td>'; + + + echo '<td valign="top">'; + echo '<form action="', $url ,'" method="post">'; + echo '<table class="widefat" style="width:100%;">'; + echo '<thead>'; + echo '<tr>'; + echo '<th class="check-column check-column-controller" scope="col"><input type="checkbox"/></th>'; + echo '<th scope="col">Post title</th>'; + echo '</tr>'; + echo '</thead>'; + + echo '<tbody>'; + + $authors = get_users_of_blog(); + + $alternative = true; + + foreach($authors as $author){ + + if($alternative) $alternative = false; + else $alternative = true; + + echo '<tr class="', $alternative ? 'alternate':false ,' author-self status-publish">'; + + echo '<th class="check-column"><input name="authors[]" ', isset($this->widgets[$_GET['id']]['authors'][$author->user_id]) ? 'checked="checked"' : false ,' type="checkbox" value="', $author->user_id ,'_', $author->display_name ,'" /></th>'; + + echo '<td>', $author->display_name ,'</td>'; + + echo '</tr>'; + + } + echo '</tbody>'; + + echo '</table>'; + + echo '<p class="submit" style="clear:both;margin-top:25px;">'; + echo '<input type="submit" value="« Add selected authors" />'; + echo '</p>'; + echo '</form>'; + echo '</td>'; + + echo '</tr>'; + +echo '</table>'; + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_custom-widgets/show_in_categories.php b/wp-content/themes/vanilla/_custom-widgets/show_in_categories.php new file mode 100755 index 000000000..1e64093bb --- /dev/null +++ b/wp-content/themes/vanilla/_custom-widgets/show_in_categories.php @@ -0,0 +1,113 @@ +<?php + + +$url .= '&opt='. $_GET['opt'] . '&cat_pag=' . ( $_GET['cat_pag'] = ( !empty($_GET['cat_pag']) ? $_GET['cat_pag'] : 0 ) ); + + +if(!empty($_GET['delete_cat']) && isset($this->widgets[$_GET['id']]['categories'][$_GET['delete_cat']])){ + + + unset($this->widgets[$_GET['id']]['categories'][$_GET['delete_cat']]); + + update_option('slayer_widgets', $this->widgets); + + } + + + +echo '<table class="slayer_main_table">'; + + echo '<tr>'; + + echo '<td style="width:50%;" valign="top">'; + + echo '<h2>Show in Category</h2>'; + + echo '<ul class="slayer_post_list">'; + + if(empty($this->widgets[$_GET['id']]['categories'])) + echo '<li>all</li>'; + else + { + + foreach($this->widgets[$_GET['id']]['categories'] as $id => $title){ + + echo '<li><a onclick="if(!confirm(\'Are you sure you want to remove this category from the list?\')) return false;" href="', $url , '&delete_cat=' , $id ,'">', $title ,'</a></li>'; + + } + + } + + echo '</ul>'; + + echo 'Click a category to remove it.'; + + echo '</td>'; + + + echo '<td valign="top">'; + echo '<form action="', $url ,'" method="post">'; + echo '<table class="widefat" style="width:100%;">'; + echo '<thead>'; + echo '<tr>'; + echo '<th class="check-column check-column-controller" scope="col"><input type="checkbox"/></th>'; + echo '<th scope="col">Category name</th>'; + echo '</tr>'; + echo '</thead>'; + + echo '<tbody>'; + + $data = get_categories(array('hide_empty'=>false)); + $categories = array(); + + foreach($data as $category) + $categories[] = $category; + + $alternative = true; + + $offset = $_GET['cat_pag'] * $this->info['posts_per_page']; + $limit = $offset + $this->info['posts_per_page']; + $count = count($categories); + + for($i = $offset ; $i < $limit && $i < $count ; $i++){ + + $category = $categories[$i]; + + if($alternative) $alternative = false; + else $alternative = true; + + echo '<tr class="', $alternative ? 'alternate':false ,' author-self status-publish">'; + + echo '<th class="check-column"><input name="categories[]" ', isset($this->widgets[$_GET['id']]['categories'][$category->term_id]) ? 'checked="checked"' : false ,' type="checkbox" value="', $category->term_id ,'_', $category->name ,'" /></th>'; + + echo '<td>',$category->name,'</td>'; + + echo '</tr>'; + + } + echo '</tbody>'; + + echo '</table>'; + + if( $_GET['cat_pag']+1 < ($count / $this->info['posts_per_page']) ) + echo '<a style="float:left;" href="', str_replace( '&cat_pag='.$_GET['cat_pag'],'&cat_pag='.($_GET['cat_pag']+1),$url) ,'">« Next</a>'; + + if($_GET['cat_pag']) + echo '<a style="float:right;" href="', str_replace('&cat_pag='.$_GET['cat_pag'],'&cat_pag='.($_GET['cat_pag']-1),$url) ,'">Previous »</a>'; + + echo '<p class="submit" style="clear:both;margin-top:25px;">'; + echo '<input type="submit" value="« Add selected categories" />'; + echo '</p>'; + echo '</form>'; + echo '</td>'; + + echo '</tr>'; + +echo '</table>'; + + + + + + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_custom-widgets/show_in_pages.php b/wp-content/themes/vanilla/_custom-widgets/show_in_pages.php new file mode 100755 index 000000000..fee349001 --- /dev/null +++ b/wp-content/themes/vanilla/_custom-widgets/show_in_pages.php @@ -0,0 +1,109 @@ +<?php + +$url .= '&opt='. $_GET['opt'] . '&page_pag=' . ( $_GET['page_pag'] = ( !empty($_GET['page_pag']) ? $_GET['page_pag'] : 0 ) ); + +if(!empty($_GET['delete_page']) && isset($this->widgets[$_GET['id']]['pages'][$_GET['delete_page']])){ + + + unset($this->widgets[$_GET['id']]['pages'][$_GET['delete_page']]); + + update_option('slayer_widgets', $this->widgets); + + } + + + +echo '<table class="slayer_main_table">'; + + echo '<tr>'; + + echo '<td style="width:50%;" valign="top">'; + + echo '<h2>Show in Pages</h2>'; + + echo '<ul class="slayer_post_list">'; + + if(empty($this->widgets[$_GET['id']]['pages'])) + echo '<li>', !empty($this->widgets[$_GET['id']]['posts']) || !empty($this->widgets[$_GET['id']]['cats']) ? 'none' : 'all' ,'</li>'; + else + { + foreach($this->widgets[$_GET['id']]['pages'] as $id => $title){ + + echo '<li><a onclick="if(!confirm(\'Are you sure you want to remove this post from the list?\')) return false;" href="', $url , '&delete_page=' , $id ,'">', $title ,'</a></li>'; + + } + + } + + echo '</ul>'; + + echo 'Click a post to remove it.'; + + echo '</td>'; + + + echo '<td valign="top">'; + echo '<form action="', $url ,'" method="post">'; + echo '<table class="widefat" style="width:100%;">'; + echo '<thead>'; + echo '<tr>'; + echo '<th class="check-column check-column-controller" scope="col"><input type="checkbox"/></th>'; + echo '<th scope="col">Page title</th>'; + echo '</tr>'; + echo '</thead>'; + + echo '<tbody>'; + + $posts = get_posts(array( + 'numberposts' => $this->info['posts_per_page'], + 'offset' => $_GET['page_pag'] * $this->info['posts_per_page'], + 'post_type' => 'page' + )); + + //alert($posts); + + $alternative = true; + + foreach($posts as $post){ + + //alert($post); + if($alternative) $alternative = false; + else $alternative = true; + + echo '<tr class="', $alternative ? 'alternate':false ,' author-self status-publish">'; + + echo '<th class="check-column"><input name="pages[]" ', isset($this->widgets[$_GET['id']]['pages'][$post->ID]) ? 'checked="checked"' : false ,' type="checkbox" value="', $post->ID ,'_', $post->post_title ,'" /></th>'; + + echo '<td>',$post->post_title,'</td>'; + + echo '</tr>'; + + } + echo '</tbody>'; + + echo '</table>'; + + $num_posts = wp_count_posts( 'page', 'readable' ); + + $num_posts = $num_posts->publish; + + + if( $_GET['page_pag']+1 < ($num_posts / $this->info['posts_per_page']) ) + echo '<a style="float:left;" href="', str_replace( '&page_pag='.$_GET['page_pag'],'&page_pag='.($_GET['page_pag']+1),$url) ,'">« Older Entries</a>'; + + if($_GET['page_pag']) + echo '<a style="float:right;" href="', str_replace('&page_pag='.$_GET['page_pag'],'&page_pag='.($_GET['page_pag']-1),$url) ,'">Newer Entries »</a>'; + + echo '<p class="submit" style="clear:both;margin-top:25px;">'; + echo '<input type="submit" value="« Add selected pages" />'; + echo '</p>'; + echo '</form>'; + echo '</td>'; + + echo '</tr>'; + +echo '</table>'; + + + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_custom-widgets/show_in_posts.php b/wp-content/themes/vanilla/_custom-widgets/show_in_posts.php new file mode 100755 index 000000000..7e74160d2 --- /dev/null +++ b/wp-content/themes/vanilla/_custom-widgets/show_in_posts.php @@ -0,0 +1,102 @@ +<?php + +$url .= '&opt='. $_GET['opt'] . '&post_pag=' . ( $_GET['post_pag'] = ( !empty($_GET['post_pag']) ? $_GET['post_pag'] : 0 ) ); + +if(!empty($_GET['delete_post']) && isset($this->widgets[$_GET['id']]['posts'][$_GET['delete_post']])){ + + unset($this->widgets[$_GET['id']]['posts'][$_GET['delete_post']]); + + update_option('slayer_widgets', $this->widgets); + + } + +echo '<table class="slayer_main_table">'; + + echo '<tr>'; + + echo '<td style="width:50%;" valign="top">'; + + echo '<h2>Show in Posts</h2>'; + + echo '<ul class="slayer_post_list">'; + + if(empty($this->widgets[$_GET['id']]['posts'])) + echo '<li>all</li>'; + else + { + + foreach($this->widgets[$_GET['id']]['posts'] as $id => $title){ + + echo '<li><a onclick="if(!confirm(\'Are you sure you want to remove this post from the list?\')) return false;" href="', $url , '&delete_post=' , $id ,'">', $title ,'</a></li>'; + + } + + } + + echo '</ul>'; + + echo 'Click a post to remove it.'; + + echo '</td>'; + + + echo '<td valign="top">'; + echo '<form action="', $url ,'" method="post">'; + echo '<table class="widefat" style="width:100%;">'; + echo '<thead>'; + echo '<tr>'; + echo '<th class="check-column check-column-controller" scope="col"><input type="checkbox"/></th>'; + echo '<th scope="col">Post title</th>'; + echo '</tr>'; + echo '</thead>'; + + echo '<tbody>'; + + $posts = get_posts(array( + 'numberposts' => $this->info['posts_per_page'], + 'offset' => $_GET['post_pag'] * $this->info['posts_per_page'], + 'post_type' => 'post' + )); + + $alternative = true; + + foreach($posts as $post){ + + if($alternative) $alternative = false; + else $alternative = true; + + echo '<tr class="', $alternative ? 'alternate':false ,' author-self status-publish">'; + + echo '<th class="check-column"><input name="posts[]" ', isset($this->widgets[$_GET['id']]['posts'][$post->ID]) ? 'checked="checked"' : false ,' type="checkbox" value="', $post->ID ,'_', $post->post_title ,'" /></th>'; + + echo '<td>',$post->post_title,'</td>'; + + echo '</tr>'; + + } + echo '</tbody>'; + + echo '</table>'; + + $num_posts = wp_count_posts( 'post', 'readable' ); + + $num_posts = $num_posts->publish; + + + if( $_GET['post_pag']+1 < ($num_posts / $this->info['posts_per_page']) ) + echo '<a style="float:left;" href="', str_replace( '&post_pag='.$_GET['post_pag'],'&post_pag='.($_GET['post_pag']+1),$url) ,'">« Older Entries</a>'; + + if($_GET['post_pag']) + echo '<a style="float:right;" href="', str_replace('&post_pag='.$_GET['post_pag'],'&post_pag='.($_GET['post_pag']-1),$url) ,'">Newer Entries »</a>'; + + echo '<p class="submit" style="clear:both;margin-top:25px;">'; + echo '<input type="submit" value="« Add selected posts" />'; + echo '</p>'; + echo '</form>'; + echo '</td>'; + + echo '</tr>'; + +echo '</table>'; + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_custom-widgets/show_in_tags.php b/wp-content/themes/vanilla/_custom-widgets/show_in_tags.php new file mode 100755 index 000000000..1850b4f15 --- /dev/null +++ b/wp-content/themes/vanilla/_custom-widgets/show_in_tags.php @@ -0,0 +1,106 @@ +<?php + +$url .= '&opt='. $_GET['opt'] . '&tags_pag=' . ( $_GET['tags_pag'] = ( !empty($_GET['tags_pag']) ? $_GET['tags_pag'] : 0 ) ); + +if(!empty($_GET['delete_tag']) && isset($this->widgets[$_GET['id']]['tags'][$_GET['delete_tag']])){ + + + unset($this->widgets[$_GET['id']]['tags'][$_GET['delete_tag']]); + + update_option('slayer_widgets', $this->widgets); + + } + + +echo '<table class="slayer_main_table">'; + + echo '<tr>'; + + echo '<td style="width:50%;" valign="top">'; + + echo '<h2>Show in posts with tags</h2>'; + + echo '<ul class="slayer_post_list">'; + + if(empty($this->widgets[$_GET['id']]['tags'])) + echo '<li>all</li>'; + else + { + + foreach($this->widgets[$_GET['id']]['tags'] as $id => $title){ + + echo '<li><a onclick="if(!confirm(\'Are you sure you want to remove this tag from the list?\')) return false;" href="', $url , '&delete_tag=' , $id ,'">', $title ,'</a></li>'; + + } + + } + + echo '</ul>'; + + echo 'Click a tag to remove it.'; + + echo '</td>'; + + + echo '<td valign="top">'; + echo '<form action="', $url ,'" method="post">'; + echo '<table class="widefat" style="width:100%;">'; + echo '<thead>'; + echo '<tr>'; + echo '<th class="check-column check-column-controller" scope="col"><input type="checkbox"/></th>'; + echo '<th scope="col">Tag name</th>'; + echo '</tr>'; + echo '</thead>'; + + echo '<tbody>'; + + + $alternative = true; + + $tags = get_tags(array('hide_empty'=>false)); + + $offset = $_GET['tags_pag'] * $this->info['posts_per_page']; + $limit = $offset + $this->info['posts_per_page']; + $count = count($tags); + + for($i = $offset ; $i < $limit && $i < $count ; $i++){ + + $tag = $tags[$i]; + + if($alternative) $alternative = false; + else $alternative = true; + + echo '<tr class="', $alternative ? 'alternate':false ,' author-self status-publish">'; + + echo '<th class="check-column"><input name="tags[]" ', isset($this->widgets[$_GET['id']]['tags'][$tag->term_id]) ? 'checked="checked"' : false ,' type="checkbox" value="', $tag->term_id ,'_', $tag->name ,'" /></th>'; + + echo '<td>',$tag->name,'</td>'; + + echo '</tr>'; + + } + echo '</tbody>'; + + echo '</table>'; + + if( $_GET['tags_pag'] + 1 < ($count / $this->info['posts_per_page']) ) + echo '<a style="float:left;" href="', str_replace( '&tags_pag='.$_GET['tags_pag'],'&tags_pag='.($_GET['tags_pag']+1),$url) ,'">« Next</a>'; + + if($_GET['tags_pag']) + echo '<a style="float:right;" href="', str_replace('&tags_pag='.$_GET['tags_pag'],'&tags_pag='.($_GET['tags_pag']-1),$url) ,'">Previous »</a>'; + + echo '<p class="submit" style="clear:both;margin-top:25px;">'; + echo '<input type="submit" value="« Add selected categories" />'; + echo '</p>'; + echo '</form>'; + echo '</td>'; + + echo '</tr>'; + +echo '</table>'; + + + + + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_hybrid/admin/about.php b/wp-content/themes/vanilla/_hybrid/admin/about.php new file mode 100755 index 000000000..13653c5c8 --- /dev/null +++ b/wp-content/themes/vanilla/_hybrid/admin/about.php @@ -0,0 +1,26 @@ +<div class="postbox close"> +<h3><?php _e('About This Theme','hybrid'); ?></h3> + +<div class="inside"> + <table class="form-table"> + + <tr> + <th><?php _e('Theme Description:','hybrid'); ?></th> + <td><?php echo $theme_data['Description']; ?></td> + </tr> + <tr> + <th><?php _e('Theme Version:','hybrid'); ?></th> + <td><?php echo $theme_data['Title']; ?> <?php echo $theme_data['Version']; ?></td> + </tr> + <tr> + <th><?php _e('Theme Documentation:','hybrid'); ?></th> + <td><a href="<?php echo $theme_data['URI']; ?>" title="<?php _e('Theme Documentation','hybrid'); ?>"><?php _e('Theme Documentation','hybrid'); ?></a></td> + </tr> + <tr> + <th><?php _e('Theme Support:','hybrid'); ?></th> + <td><a href="http://themehybrid.com/support" title="<?php _e('Get support for this theme','hybrid'); ?>"><?php _e('Visit the support forums.','hybrid'); ?></a></td> + </tr> + + </table> +</div> +</div> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_hybrid/admin/general.php b/wp-content/themes/vanilla/_hybrid/admin/general.php new file mode 100755 index 000000000..b7c0d3ddf --- /dev/null +++ b/wp-content/themes/vanilla/_hybrid/admin/general.php @@ -0,0 +1,212 @@ +<div class="postbox open"> + +<h3><?php _e('Select your theme settings','hybrid'); ?></h3> + +<div class="inside"> + + <table class="form-table"> + + <tr> + <th> + <label for="<?php echo $data['primary_inserts_default']; ?>"><?php _e('Widget Inserts:','hybrid'); ?></label> + </th> + <td> + <input id="<?php echo $data['primary_inserts_default']; ?>" name="<?php echo $data['primary_inserts_default']; ?>" type="checkbox" <?php if($val['primary_inserts_default']) echo 'checked="checked"'; ?> value="true" /> + <label for="<?php echo $data['primary_inserts_default']; ?>"> + <?php _e('Select this if you want your primary widget inserts to default to the home insert when nothing else is selected.','hybrid'); ?> + </label> + <br /> + <input id="<?php echo $data['secondary_inserts_default']; ?>" name="<?php echo $data['secondary_inserts_default']; ?>" type="checkbox" <?php if($val['secondary_inserts_default']) echo 'checked="checked"'; ?> value="true" /> + <label for="<?php echo $data['secondary_inserts_default']; ?>"> + <?php _e('Select this if you want your secondary widget inserts to default to the home insert when nothing else is selected.','hybrid'); ?> + </label> + </td> + </tr> + + <tr> + <th> + <label for="<?php echo $data['print_style']; ?>"><?php _e('Stylesheets:','hybrid'); ?></label> + </th> + <td> + <input id="<?php echo $data['print_style']; ?>" name="<?php echo $data['print_style']; ?>" type="checkbox" <?php if($val['print_style']) echo 'checked="checked"'; ?> value="true" /> + <label for="<?php echo $data['print_style']; ?>"> + <?php _e('Select this to have the theme automatically include a print stylesheet.','hybrid'); ?> + </label> + </td> + </tr> + + <tr> + <th> + <label for="<?php echo $data['pullquotes_js']; ?>"><?php _e('JavaScript:','hybrid'); ?></label> + </th> + <td> + <input id="<?php echo $data['pullquotes_js']; ?>" name="<?php echo $data['pullquotes_js']; ?>" type="checkbox" <?php if($val['pullquotes_js']) echo 'checked="checked"'; ?> value="true" /> + <label for="<?php echo $data['pullquotes_js']; ?>"> + <?php _e('Include the pull quote JavaScript.','hybrid'); ?> + </label> + </td> + </tr> + + <tr> + <th> + <label for="<?php echo $data['feed_url']; ?>"><?php _e('Feeds:','hybrid'); ?></label> + </th> + <td> + <input id="<?php echo $data['feed_url']; ?>" name="<?php echo $data['feed_url']; ?>" value="<?php echo $val['feed_url']; ?>" size="30" /> + <br /> + <?php _e('If you have a an alternate feed address, such as one from <a href="http://feedburner.com" title="Feedburner">Feedburner</a>, you can enter it here to have the theme set your feed URL link. If blank, the theme will default to your WordPress RSS feed.','hybrid'); ?> + </td> + </tr> + + <tr> + <th> + <label for="<?php echo $data['seo_cats']; ?>"><?php _e('Title & Meta:','hybrid'); ?></label> + </th> + <td> + <input id="<?php echo $data['seo_cats']; ?>" name="<?php echo $data['seo_cats']; ?>" type="checkbox" <?php if($val['seo_cats']) echo 'checked="checked"'; ?> value="true" /> + <label for="<?php echo $data['seo_cats']; ?>"> + <?php _e('Use category slugs on single posts for your meta keywords?','hybrid'); ?> + </label> + <br /> + <input id="<?php echo $data['seo_tags']; ?>" name="<?php echo $data['seo_tags']; ?>" type="checkbox" <?php if($val['seo_tags']) echo 'checked="checked"'; ?> value="true" /> + <label for="<?php echo $data['seo_tags']; ?>"> + <?php _e('Use tag slugs on single posts for your meta keywords?','hybrid'); ?> + </label> + <br /> + <input id="<?php echo $data['seo_single_excerpts']; ?>" name="<?php echo $data['seo_single_excerpts']; ?>" type="checkbox" <?php if($val['seo_single_excerpts']) echo 'checked="checked"'; ?> value="true" /> + <label for="<?php echo $data['seo_single_excerpts']; ?>"> + <?php _e('Use the excerpt on single posts for your meta description?','hybrid'); ?> + </label> + <br /> + <input id="<?php echo $data['seo_author']; ?>" name="<?php echo $data['seo_author']; ?>" type="checkbox" <?php if($val['seo_author']) echo 'checked="checked"'; ?> value="true" /> + <label for="<?php echo $data['seo_author']; ?>"> + <?php _e('Use the author bio on author archives for your meta description?','hybrid'); ?> + </label> + <br /> + <input id="<?php echo $data['seo_category']; ?>" name="<?php echo $data['seo_category']; ?>" type="checkbox" <?php if($val['seo_category']) echo 'checked="checked"'; ?> value="true" /> + <label for="<?php echo $data['seo_category']; ?>"> + <?php _e('Use the category description on category archives for your meta description?','hybrid'); ?> + </label> + <br /> + <input id="<?php echo $data['seo_blog_title']; ?>" name="<?php echo $data['seo_blog_title']; ?>" type="checkbox" <?php if($val['seo_blog_title']) echo 'checked="checked"'; ?> value="true" /> + <label for="<?php echo $data['seo_blog_title']; ?>"> + <?php _e('Append site title to the end of the page name?','hybrid'); ?> + </label> + <p> + <?php _e('You can change these settings in the box labeled <em>Hybrid Settings</em> when writing a post or page.','hybrid'); ?> <?php printf(__('The <a href="%1$s" title="All-In-One SEO Pack">All-In-One SEO Pack</a> and <a href="%2$s" title="Headspace2">Headspace2</a> plugins will override these settings and the Indexing settings.','hybrid'), 'http://wordpress.org/extend/plugins/all-in-one-seo-pack', 'http://wordpress.org/extend/plugins/headspace2'); ?> + </p> + </td> + </tr> + + <tr> + <th> + <label for="<?php echo $data['robots_home']; ?>"><?php _e('Indexing:','hybrid'); ?></label> + </th> + <td> + <?php _e('Choose which pages of your blog get indexed by the search engines. Only selected pages will be indexed. If not selected, those pages will be blocked.','hybrid'); ?> <em><?php _e('Note: Some of these settings will render the Title & Meta settings moot. Also, setting your site to privacy mode will override these controls.','hybrid'); ?></em> + <p style="width:30%;float:left;"> + <input id="<?php echo $data['robots_home']; ?>" name="<?php echo $data['robots_home']; ?>" type="checkbox" <?php if($val['robots_home']) echo 'checked="checked"'; ?> value="true" /> + <label for="<?php echo $data['robots_home']; ?>"><?php _e('Home page','hybrid'); ?></label> + <br /> + <input id="<?php echo $data['robots_single']; ?>" name="<?php echo $data['robots_single']; ?>" type="checkbox" <?php if($val['robots_single']) echo 'checked="checked"'; ?> value="true" /> + <label for="<?php echo $data['robots_single']; ?>"><?php _e('Single posts','hybrid'); ?></label> + <br /> + <input id="<?php echo $data['robots_attachment']; ?>" name="<?php echo $data['robots_attachment']; ?>" type="checkbox" <?php if($val['robots_attachment']) echo 'checked="checked"'; ?> value="true" /> + <label for="<?php echo $data['robots_attachment']; ?>"><?php _e('Attachments','hybrid'); ?></label> + <br /> + <input id="<?php echo $data['robots_page']; ?>" name="<?php echo $data['robots_page']; ?>" type="checkbox" <?php if($val['robots_page']) echo 'checked="checked"'; ?> value="true" /> + <label for="<?php echo $data['robots_page']; ?>"><?php _e('Pages','hybrid'); ?></label> + </p> + <p style="width:30%;float:left;"> + <input id="<?php echo $data['robots_date']; ?>" name="<?php echo $data['robots_date']; ?>" type="checkbox" <?php if($val['robots_date']) echo 'checked="checked"'; ?> value="true" /> + <label for="<?php echo $data['robots_date']; ?>"><?php _e('Date-based archives','hybrid'); ?></label> + <br /> + <input id="<?php echo $data['robots_category']; ?>" name="<?php echo $data['robots_category']; ?>" type="checkbox" <?php if($val['robots_category']) echo 'checked="checked"'; ?> value="true" /> + <label for="<?php echo $data['robots_category']; ?>"><?php _e('Category archives','hybrid'); ?></label> + <br /> + <input id="<?php echo $data['robots_tag']; ?>" name="<?php echo $data['robots_tag']; ?>" type="checkbox" <?php if($val['robots_tag']) echo 'checked="checked"'; ?> value="true" /> + <label for="<?php echo $data['robots_tag']; ?>"><?php _e('Tag archives','hybrid'); ?></label> + <br /> + <input id="<?php echo $data['robots_author']; ?>" name="<?php echo $data['robots_author']; ?>" type="checkbox" <?php if($val['robots_author']) echo 'checked="checked"'; ?> value="true" /> + <label for="<?php echo $data['robots_author']; ?>"><?php _e('Author archives','hybrid'); ?></label> + </p> + <p style="width:30%;float:left;"> + <input id="<?php echo $data['robots_search']; ?>" name="<?php echo $data['robots_search']; ?>" type="checkbox" <?php if($val['robots_search']) echo 'checked="checked"'; ?> value="true" /> + <label for="<?php echo $data['robots_search']; ?>"><?php _e('Search','hybrid'); ?></label> + <br /> + <input id="<?php echo $data['robots_404']; ?>" name="<?php echo $data['robots_404']; ?>" type="checkbox" <?php if($val['robots_404']) echo 'checked="checked"'; ?> value="true" /> + <label for="<?php echo $data['robots_404']; ?>"><?php _e('404','hybrid'); ?></label> + </p> + </td> + </tr> + + <tr> + <th> + <label for="<?php echo $data['default_avatar']; ?>"><?php _e('Avatars:','hybrid'); ?></label> + </th> + <td> + <input id="<?php echo $data['default_avatar']; ?>" name="<?php echo $data['default_avatar']; ?>" value="<?php echo $val['default_avatar']; ?>" size="30" /> + <br /> + <?php _e('You can set a default avatar for users without one if you don\'t like the choices WordPress offers you. Simply add the full path to the image file.','hybrid'); ?> + </td> + </tr> + + <tr> + <th> + <label for="<?php echo $data['comments_popup']; ?>"><?php _e('Comments:','hybrid'); ?></label> + </th> + <td> + <input id="<?php echo $data['comments_popup']; ?>" name="<?php echo $data['comments_popup']; ?>" type="checkbox" <?php if($val['comments_popup']) echo 'checked="checked"'; ?> value="true" /> + <label for="<?php echo $data['comments_popup']; ?>"> + <?php _e('Check to use the comments popup window instead of regular comments.','hybrid'); ?> <em><?php _e('WP 2.7+ only.','hybrid'); ?></em> + </label> + </td> + </tr> + + <tr> + <th> + <label for="<?php echo $data['footer_insert']; ?>"><?php _e('Footer Insert:','hybrid'); ?></label> + </th> + <td> + <textarea id="<?php echo $data['footer_insert']; ?>" name="<?php echo $data['footer_insert']; ?>" cols="60" rows="5" style="width: 95%;"><?php echo str_replace('<','<',stripslashes($val['footer_insert'])); ?></textarea> + <br /> + <?php _e('You can place XHTML and JavaScript here to have it inserted automatically into your theme. If you have a script, such as one from Google Analytics, this could be useful.','hybrid'); ?> + </td> + </tr> + + <tr> + <th> + <label for="<?php echo $data['copyright']; ?>"><?php _e('Footer Settings:', 'hybrid'); ?></label> + </th> + <td> + <input id="<?php echo $data['copyright']; ?>" name="<?php echo $data['copyright']; ?>" type="checkbox" <?php if($val['copyright']) echo 'checked="checked"'; ?> value="true" /> + <label for="<?php echo $data['copyright']; ?>"> + <?php _e('Check this if you want the theme to auto-generate your site\'s copyright and title in the footer.','hybrid'); ?> + </label> + <br /> + <input id="<?php echo $data['wp_credit']; ?>" name="<?php echo $data['wp_credit']; ?>" type="checkbox" <?php if($val['wp_credit']) echo 'checked="checked"'; ?> value="true" /> + <label for="<?php echo $data['wp_credit']; ?>"> + <?php _e('Want to show your love of WordPress? Check this and a link will be added to your footer back to WordPress.org.','hybrid'); ?> + </label> + <br /> + <input id="<?php echo $data['th_credit']; ?>" name="<?php echo $data['th_credit']; ?>" type="checkbox" <?php if($val['th_credit']) echo 'checked="checked"'; ?> value="true" /> + <label for="<?php echo $data['th_credit']; ?>"> + <?php _e('Check this to have a link back to Theme Hybrid automatically appended to your footer. This is totally optional. Really.','hybrid'); ?> + </label> + <br /> + <input id="<?php echo $data['query_counter']; ?>" name="<?php echo $data['query_counter']; ?>" type="checkbox" <?php if($val['query_counter']) echo 'checked="checked"'; ?> value="true" /> + <label for="<?php echo $data['query_counter']; ?>"> + <?php _e('For testing purposes, this will append a database query counter and page load timer to your footer.','hybrid'); ?> + </label> + </td> + </tr> + + </table> + + <p class="submit"> + <input type="submit" name="Submit" class="button-primary" value="<?php _e('Save Changes', 'hybrid' ) ?>" /> + <input type="hidden" name="<?php echo $hidden_field_name; ?>" value="Y" /> + </p> + +</div> +</div> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_hybrid/admin/meta-box.php b/wp-content/themes/vanilla/_hybrid/admin/meta-box.php new file mode 100755 index 000000000..a38a04982 --- /dev/null +++ b/wp-content/themes/vanilla/_hybrid/admin/meta-box.php @@ -0,0 +1,285 @@ +<?php + +/** +* Add actions to the admin +*/ +add_action('admin_menu', 'hybrid_create_meta_box'); +add_action('save_post', 'hybrid_save_meta_data'); + +/** +* Function for adding meta boxes to the admin +* Separate the post and page meta boxes +* +* @since 0.3 +*/ +function hybrid_create_meta_box() { + global $theme_name; + + add_meta_box('post-meta-boxes', __('Hybrid Settings','hybrid'), 'post_meta_boxes', 'post', 'normal', 'high'); + add_meta_box('page-meta-boxes', __('Hybrid Settings','hybrid'), 'page_meta_boxes', 'page', 'normal', 'high'); +} + +/** +* Array of variables for post meta boxes +* Make the function filterable to add options through child themes +* +* @since 0.3 +* @return Array $meta_boxes +* @filter +*/ +function hybrid_post_meta_boxes() { + $meta_boxes = array( + 'title' => array( + 'name' => 'Title', + 'default' => '', + 'title' => __('Title','hybrid'), + 'type' => 'text', + 'show_description' => false, + 'description' => __('Add a title that will be seen by search engines.','hybrid'), + ), + 'description' => array( + 'name' => 'Description', + 'default' => '', + 'title' => __('Description','hybrid'), + 'type' => 'textarea', + 'show_description' => false, + 'description' => __('Add a description that will be seen by search engines.','hybrid'), + ), + 'keywords' => array( + 'name' => 'Keywords', + 'default' => '', + 'title' => __('Keywords:','hybrid'), + 'type' => 'text', + 'show_description' => false, + 'description' => __('Add keywords that will be seen by search engines.','hybrid'), + ), + 'thumbnail' => array( + 'name' => 'Thumbnail', + 'default' => '', + 'title' => __('Thumbnail:','hybrid'), + 'type' => 'text', + 'show_description' => false, + 'description' => __('Add an image URL here.','hybrid'), + ), + ); + + return apply_filters('hybrid_post_meta_boxes', $meta_boxes); +} + +/** +* Array of variables for meta boxes to pages +* Make the function filterable to add options through child themes +* +* @since 0.3 +* @return Array $meta_boxes +* @filter +*/ +function hybrid_page_meta_boxes() { + $meta_boxes = array( + 'title' => array( + 'name' => 'Title', + 'default' => '', + 'title' => __('Title','hybrid'), + 'type' => 'text', + 'show_description' => false, + 'description' => __('Add a title that will be seen by search engines.','hybrid'), + ), + 'description' => array( + 'name' => 'Description', + 'default' => '', + 'title' => __('Description','hybrid'), + 'type' => 'textarea', + 'show_description' => false, + 'description' => __('Add a title that will be seen by search engines.','hybrid'), + ), + 'keywords' => array( + 'name' => 'Keywords', + 'default' => '', + 'title' => __('Keywords:','hybrid'), + 'type' => 'text', + 'show_description' => false, + 'description' => __('Add a title that will be seen by search engines.','hybrid'), + ), + ); + + return apply_filters('hybrid_page_meta_boxes', $meta_boxes); +} + +/** +* Displays meta boxes on the Write Post panel +* Loops through each meta box in the $meta_boxes variable +* Gets array from hybrid_post_meta_boxes() +* +* @since 0.3 +*/ +function post_meta_boxes() { + global $post; + $meta_boxes = hybrid_post_meta_boxes(); +?> + +<table class="form-table"> +<?php + foreach($meta_boxes as $meta) : + + $value = get_post_meta($post->ID, $meta['name'], true); + + if($meta['type'] == 'text') : + get_meta_text_input($meta, $value); + elseif($meta['type'] == 'textarea') : + get_meta_textarea($meta, $value); + elseif($meta['type'] == 'select') : + get_meta_select($meta, $value); + endif; + + endforeach; +?> +</table> +<?php +} + +/** +* Displays meta boxes on the Write Page panel +* Loops through each meta box in the $meta_boxes variable +* Gets array from hybrid_page_meta_boxes() +* +* @since 0.3 +*/ +function page_meta_boxes() { + global $post; + $meta_boxes = hybrid_page_meta_boxes(); +?> + +<table class="form-table"> +<?php + foreach($meta_boxes as $meta) : + + $value = stripslashes(get_post_meta($post->ID, $meta['name'], true)); + + if($meta['type'] == 'text') : + get_meta_text_input($meta, $value); + elseif($meta['type'] == 'textarea') : + get_meta_textarea($meta, $value); + elseif($meta['type'] == 'select') : + get_meta_select($meta, $value); + endif; + + endforeach; +?> +</table> +<?php +} + +/** +* Outputs a text input box with arguments from the parameters +* Used for both the post/page meta boxes +* +* @since 0.3 +*/ +function get_meta_text_input($args = array(), $value = false) { + extract($args); +?> + + <tr> + <th style="width:10%;"> + <label for="<?php echo $name; ?>"><?php echo $title; ?></label> + </th> + <td> + <input type="text" name="<?php echo $name; ?>" id="<?php echo $name; ?>" value="<?php echo htmlentities($value, ENT_QUOTES); ?>" size="30" tabindex="30" style="width: 97%;" /> + <input type="hidden" name="<?php echo $name; ?>_noncename" id="<?php echo $name; ?>_noncename" value="<?php echo wp_create_nonce(plugin_basename(__FILE__)); ?>" /> + </td> + </tr> +<?php +} + +/** +* Outputs a select box with arguments from the parameters +* Used for both the post/page meta boxes +* +* @since 0.3 +*/ +function get_meta_select($args = array(), $value = false) { + extract($args); +?> + + <tr> + <th style="width:10%;"> + <label for="<?php echo $name; ?>"><?php echo $title; ?></label> + </th> + <td> + <select vname="<?php echo $name; ?>" id="<?php echo $name; ?>"> + <?php foreach($options as $option) : ?> + <option <?php if(htmlentities($value, ENT_QUOTES) == $option) echo ' selected="selected"'; ?>> + <?php echo $option; ?> + </option> + <?php endforeach; ?> + <input type="hidden" name="<?php echo $name; ?>_noncename" id="<?php echo $name; ?>_noncename" value="<?php echo wp_create_nonce(plugin_basename(__FILE__)); ?>" /> + </td> + </tr> +<?php +} + +/** +* Outputs a textarea with arguments from the parameters +* Used for both the post/page meta boxes +* +* @since 0.3 +*/ +function get_meta_textarea($args = array(), $value = false) { + extract($args); +?> + <tr> + <th style="width:10%;"> + <label for="<?php echo $name; ?>"><?php echo $title; ?></label> + </th> + <td> + <textarea name="<?php echo $name; ?>" id="<?php echo $name; ?>" cols="60" rows="4" tabindex="30" style="width: 97%;"><?php echo $value; ?></textarea> + <input type="hidden" name="<?php echo $name; ?>_noncename" id="<?php echo $name; ?>_noncename" value="<?php echo wp_create_nonce(plugin_basename(__FILE__)); ?>" /> + </td> + </tr> +<?php +} + +/** +* Loops through each meta box's set of variables +* Saves them to the database as custom fields +* +* @since 0.3 +*/ +function hybrid_save_meta_data($post_id) { + global $post; + + if('page' == $_POST['post_type']) + $meta_boxes = array_merge(hybrid_page_meta_boxes()); + else + $meta_boxes = array_merge(hybrid_post_meta_boxes()); + + foreach($meta_boxes as $meta_box) : + + if(!wp_verify_nonce($_POST[$meta_box['name'] . '_noncename'], plugin_basename(__FILE__))) : + return $post_id; + endif; + + if('page' == $_POST['post_type']) : + if(!current_user_can('edit_page', $post_id)) : + return $post_id; + endif; + else : + if(!current_user_can('edit_post', $post_id)) : + return $post_id; + endif; + endif; + + $data = $_POST[$meta_box['name']]; + + if(get_post_meta($post_id, $meta_box['name']) == '') + add_post_meta($post_id, $meta_box['name'], $data, true); + + elseif($data != get_post_meta($post_id, $meta_box['name'], true)) + update_post_meta($post_id, $meta_box['name'], $data); + + elseif($data == '') + delete_post_meta($post_id, $meta_box['name'], get_post_meta($post_id, $meta_box['name'], true)); + + endforeach; +} +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_hybrid/admin/theme-settings-admin.php b/wp-content/themes/vanilla/_hybrid/admin/theme-settings-admin.php new file mode 100755 index 000000000..eaeae71c8 --- /dev/null +++ b/wp-content/themes/vanilla/_hybrid/admin/theme-settings-admin.php @@ -0,0 +1,117 @@ +<?php + +/** +* hybrid_theme_page() +* Handles the main theme settings +* +* @since 0.2 +*/ +function hybrid_theme_page() { + +// Some variables + $theme_name = __('Hybrid','hybrid'); + $settings_page_title = __('Hybrid Theme Settings','hybrid'); + $hidden_field_name = 'hybrid_submit_hidden'; + $theme_data = get_theme_data(TEMPLATEPATH . '/style.css'); + +// Add all options to a single array +// This makes one entry in the database + $settings_arr = array( + 'feed_url' => get_bloginfo('rss2_url'), // General settings + 'print_style' => true, + 'page_nav' => array(), + + 'common_js' => false, // JavaScript settings + 'pullquotes_js' => false, + // 'comment_tabs' => false, + + 'primary_inserts_default' => true, // Widget settings + 'secondary_inserts_default' => false, + + 'robots_home' => true, // Indexing + 'robots_single' => true, + 'robots_attachment' => true, + 'robots_page' => true, + 'robots_date' => true, + 'robots_category' => true, + 'robots_tag' => true, + 'robots_author' => true, + 'robots_search' => true, + 'robots_404' => true, + + 'seo_cats' => true, // SEO + 'seo_tags' => true, + 'seo_single_excerpts' => true, + 'seo_author' => true, + 'seo_category' => true, + 'seo_blog_title' => false, + + 'default_avatar' => false, // Avatars + + 'separate_comments' => 'false', + 'comments_popup' => false, // Comments popup + // 'comments_popup_width' => false, + // 'comments_popup_height' => false, + // 'comments_pagination' => __('Previous/Next Links','hybrid'), + + 'footer_insert' => false, // Footer settings + 'copyright' => true, + 'wp_credit' => true, + 'th_credit' => true, + 'query_counter' => false, + ); + +// Add theme settings to database + add_option('hybrid_theme_settings', $settings_arr); + +// Set form data IDs the same as settings keys +// Loop through each + $settings_keys = array_keys($settings_arr); + foreach($settings_keys as $key) : + $data[$key] = $key; + endforeach; + +// Get existing options from database + $settings = get_option('hybrid_theme_settings'); + + foreach($settings_arr as $key => $value) : + $val[$key] = $settings[$key]; + endforeach; + + // See if information has been posted + if($_POST[$hidden_field_name] == 'Y') : + + // Loop through values and set them if posted + foreach($settings_arr as $key => $value) : + $settings[$key] = $val[$key] = $_POST[$data[$key]]; + endforeach; + + // Update theme settings + update_option('hybrid_theme_settings', $settings); + + ?> + + <div class="wrap"> + <h2><?php echo $settings_page_title; ?></h2> + + <div class="updated" style="margin: 15px 0;"> + <p><strong><?php _e('Settings saved.', 'hybrid'); ?></strong></p> + </div> + + <?php else : ?> + + <div class="wrap"> + <h2><?php echo $settings_page_title; ?></h2> + <?php + endif; + + // Alister override this checking... + //if($theme_data['URI'] !== 'http://themehybrid.com/themes/hybrid') : hybrid_error(); + //elseif($theme_data['Name'] !== 'Hybrid') : hybrid_error(); + //else : include(HYBRID_ADMIN . '/theme-settings-xhtml.php'); + //endif; + include(CFCT_PATH.'_hybrid/admin/theme-settings-xhtml.php'); + +} + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_hybrid/admin/theme-settings-xhtml.php b/wp-content/themes/vanilla/_hybrid/admin/theme-settings-xhtml.php new file mode 100755 index 000000000..a368b9d1e --- /dev/null +++ b/wp-content/themes/vanilla/_hybrid/admin/theme-settings-xhtml.php @@ -0,0 +1,30 @@ +<?php + +// Theme data + $theme_data = get_theme_data(TEMPLATEPATH . '/style.css'); + +// Get all category slugs for use + $all_cat_slugs_arr = hybrid_all_cat_slugs(); + +// Get all category names for use + $all_cats_arr = hybrid_all_cats(); + +// Get all tags for use + $all_tags_arr = hybrid_all_tags(); +?> + +<div id="poststuff" class="dlm"> + + <form name="form0" method="post" action="<?php echo str_replace( '%7E', '~', $_SERVER['REQUEST_URI']); ?>" style="border:none;background:transparent;"> + + <?php + include(CFCT_PATH.'_hybrid/admin/about.php'); + include(CFCT_PATH.'_hybrid/admin/general.php'); + hybrid_child_settings(); // Hook for child settings + ?> + + </form> + +</div> + +</div> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_hybrid/admin/theme-settings.php b/wp-content/themes/vanilla/_hybrid/admin/theme-settings.php new file mode 100755 index 000000000..9f2ba1cbd --- /dev/null +++ b/wp-content/themes/vanilla/_hybrid/admin/theme-settings.php @@ -0,0 +1,36 @@ +<?php + +// Include files + include(CFCT_PATH.'_hybrid/admin/theme-settings-admin.php'); + +// Add actions + add_action('admin_menu', 'hybrid_add_pages'); + add_action('admin_head', 'hybrid_admin_enqueue_style'); + +/** +* hybrid_add_pages() +* Gets all theme admin menu pages +* +* @since 0.2 +*/ +function hybrid_add_pages() { + add_theme_page(__('Hybrid Theme Settings','hybrid'), __('Hybrid Settings','hybrid'), 10, 'theme-settings.php', 'hybrid_theme_page'); +} + +/** +* hybrid_admin_css() +* Adds admin CSS +* +* @since 0.2 +*/ +function hybrid_admin_enqueue_style() { + + if(function_exists('wp_enqueue_style')) : + wp_enqueue_style('hybrid_admin_css',HYBRID_CSS . '/theme-settings.css', false, false, 'screen'); + wp_print_styles(array('hybrid_admin_css')); + else : + echo '<link rel="stylesheet" href="' . HYBRID_CSS . '/theme-settings.css?ver=0.2" type="text/css" media="screen" />'; + echo "\n"; + endif; +} +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_hybrid/breadcrumbs.php b/wp-content/themes/vanilla/_hybrid/breadcrumbs.php new file mode 100755 index 000000000..6dbda0a04 --- /dev/null +++ b/wp-content/themes/vanilla/_hybrid/breadcrumbs.php @@ -0,0 +1,195 @@ +<?php + +/** +* Shows a breadcrumb for all types of pages +* Child themes and plugins can filter this +* Allow filtering of only the arguments ($args) +* +* Date-based archives need some work +* Currently, months and days, don't trail back through the date archives +* +* Check for page templates in use: archives.php, authors.php, categories.php, tags.php +* This is to set the breadcrumb for archives: date.php, author.php, category.php, tag.php +* If in use, add the first page found using it as part of the breadcrumb for archives +* +* @since 0.1 +* @filter $args +* @hook hybrid_before_content +* @echo string +*/ +function hybrid_breadcrumb($args = array()) { + global $post; + +// Set up the default arguments for the breadcrumb + $defaults = array( + 'separator' => '/', + 'before' => '<span class="breadcrumb-title">' . __('Browse:','hybrid') . '</span>', + 'after' => false, + 'front_page' => false, + 'show_home' => __('Home','home'), + 'echo' => true, + ); + +// Apply filters to the arguments + $args = apply_filters('hybrid_breadcrumb', $args); + +// Parse the arguments and extract them for easy variable naming + $args = wp_parse_args($args, $defaults); + extract($args); + +// Put spaces around the separator + $separator = ' ' . $separator . ' '; + +// If it is the home page +// Return no value + if((is_home() || is_front_page()) && (!$front_page)) + return; + +// Begin the breadcrumb + $breadcrumb = '<div class="breadcrumb">'; + $breadcrumb .= $before; + if($show_home) + $breadcrumb .= ' <a href="' . get_bloginfo('url') . '" title="' . get_bloginfo('name') . '" class="trail-home">' . $show_home . '</a>'; + $breadcrumb .= $separator; + +// If home or front page + if((is_home() || is_front_page()) && ($front_page)) : + $breadcrumb = '<div class="breadcrumb">' . $before . ' ' . $show_home; +// If attachment + elseif(is_attachment()) : + /* + * Don't like categories by default on attachment pages + * + $categories = get_the_category($post->post_parent); + foreach($categories as $cat) : + $cats[] = '<a href="' . get_category_link($cat->term_id) . '" title="' . $cat->name . '">' . $cat->name . '</a>'; + endforeach; + $breadcrumb .= join(', ', $cats); + $breadcrumb .= $separator; + */ + $breadcrumb .= '<a href="' . get_permalink($post->post_parent) . '" title="' . get_the_title($post->post_parent) . '">' . get_the_title($post->post_parent) . '</a>'; + $breadcrumb .= $separator; + $breadcrumb .= '<span class="trail-end">' . get_the_title() . '</span>'; +// Single posts + elseif(is_single()) : + $categories = get_the_category(', '); + foreach($categories as $cat) : + $cats[] = '<a href="' . get_category_link($cat->term_id) . '" title="' . $cat->name . '">' . $cat->name . '</a>'; + endforeach; + $breadcrumb .= join(', ', $cats); + $breadcrumb .= $separator . '<span class="trail-end">' . single_post_title(false,false) . '</span>'; + +// Pages + elseif(is_page()) : + $parents = array(); + $parent_id = $post->post_parent; + while($parent_id) : + $page = get_page($parent_id); + if($params["link_none"]) + $parents[] = get_the_title($page->ID); + else + $parents[] = '<a href="'.get_permalink($page->ID).'" title="'.get_the_title($page->ID).'">'.get_the_title($page->ID).'</a> ' . $separator; + $parent_id = $page->post_parent; + endwhile; + $parents = array_reverse($parents); + $breadcrumb .= join(' ', $parents); + $breadcrumb .= '<span class="trail-end">' . get_the_title() . '</span>'; + +// Categories + elseif(is_category()) : + $pages = get_pages(array( + 'title_li' => '', + 'meta_key' => '_wp_page_template', + 'meta_value' => 'categories.php', + 'echo' => 0 + )); + if($pages && $pages[0]->ID !== get_option('page_on_front')) $breadcrumb .= '<a href="' . get_page_link($pages[0]->ID) . '" title="' . $pages[0]->post_title . '">' . $pages[0]->post_title . '</a>' . $separator; + // Category parents + $cat = intval( get_query_var('cat') ); + $parent = &get_category($cat); + if(is_wp_error($parent)) + $parents = false; + if($parent->parent && ($parent->parent != $parent->term_id) ) + $parents = get_category_parents($parent->parent, true, $separator, false); + + if($parents) $breadcrumb .= $parents; + $breadcrumb .= '<span class="trail-end">' . single_cat_title(false,false) . '</span>'; + +// Tags + elseif(is_tag()) : + $pages = get_pages(array( + 'title_li' => '', + 'meta_key' => '_wp_page_template', + 'meta_value' => 'tags.php', + 'echo' => 0 + )); + if($pages && $pages[0]->ID !== get_option('page_on_front')) $breadcrumb .= '<a href="' . get_page_link($pages[0]->ID) . '" title="' . $pages[0]->post_title . '">' . $pages[0]->post_title . '</a>' . $separator; + $breadcrumb .= '<span class="trail-end">' . single_tag_title(false,false) . '</span>'; + +// Authors + elseif(is_author()) : + $pages = get_pages(array( + 'title_li' => '', + 'meta_key' => '_wp_page_template', + 'meta_value' => 'authors.php', + 'echo' => 0 + )); + if($pages && $pages[0]->ID !== get_option('page_on_front')) $breadcrumb .= '<a href="' . get_page_link($pages[0]->ID) . '" title="' . $pages[0]->post_title . '">' . $pages[0]->post_title . '</a>' . $separator; + $breadcrumb .= '<span class="trail-end">' . wp_title(false,false,false) . '</span>'; + +// Search + elseif(is_search()) : + $breadcrumb .= '<span class="trail-end">' . __('Search results for','hybrid') . ' "' . attribute_escape(get_search_query()) . '"</span>'; + +// Day + elseif(is_day()) : + $pages = get_pages(array( + 'title_li' => '', + 'meta_key' => '_wp_page_template', + 'meta_value' => 'archives.php', + 'echo' => 0 + )); + if($pages && $pages[0]->ID !== get_option('page_on_front')) $breadcrumb .= '<a href="' . get_page_link($pages[0]->ID) . '" title="' . $pages[0]->post_title . '">' . $pages[0]->post_title . '</a>' . $separator; + $breadcrumb .= '<a href="' . get_year_link(get_the_time('Y')) . '" title="' . get_the_time(__('Y','hybrid')) . '">' . get_the_time(__('Y','hybrid')) . '</a>' . $separator; + $breadcrumb .= '<a href="' . get_month_link(get_the_time('Y'), get_the_time('m')) . '" title="' . get_the_time(__('F','hybrid')) . '">' . get_the_time(__('F','hybrid')) . '</a>' . $separator; + $breadcrumb .= '<span class="trail-end">' . get_the_time(__('j','hybrid')) . '</span>'; + +// Month + elseif(is_month()) : + $pages = get_pages(array( + 'title_li' => '', + 'meta_key' => '_wp_page_template', + 'meta_value' => 'archives.php', + 'echo' => 0 + )); + if($pages && $pages[0]->ID !== get_option('page_on_front')) $breadcrumb .= '<a href="' . get_page_link($pages[0]->ID) . '" title="' . $pages[0]->post_title . '">' . $pages[0]->post_title . '</a>' . $separator; + $breadcrumb .= '<a href="' . get_year_link(get_the_time('Y')) . '" title="' . get_the_time(__('Y','hybrid')) . '">' . get_the_time(__('Y','hybrid')) . '</a>' . $separator; + $breadcrumb .= '<span class="trail-end">' . get_the_time(__('F','hybrid')) . '</span>'; + +// Year + elseif(is_year()) : + $pages = get_pages(array( + 'title_li' => '', + 'meta_key' => '_wp_page_template', + 'meta_value' => 'archives.php', + 'echo' => 0 + )); + if($pages && $pages[0]->ID !== get_option('page_on_front')) $breadcrumb .= '<a href="' . get_page_link($pages[0]->ID) . '" title="' . $pages[0]->post_title . '">' . $pages[0]->post_title . '</a>' . $separator; + $breadcrumb .= '<span class="trail-end">' . get_the_time(__('Y','hybrid')) . '</span>'; + +// 404 + elseif(is_404()) : + $breadcrumb .= '<span class="trail-end">' . __('404 Not Found','hybrid') . '</span>'; + + endif; + +// End the breadcrumb + $breadcrumb .= $after . '</div>'; + +// Output the breadcrumb + if($echo) + echo $breadcrumb; + else + return $breadcrumb; +} +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_hybrid/comments.php b/wp-content/themes/vanilla/_hybrid/comments.php new file mode 100755 index 000000000..465df5942 --- /dev/null +++ b/wp-content/themes/vanilla/_hybrid/comments.php @@ -0,0 +1,225 @@ +<?php + +/** +* Better display of avatars in comments +* Should only be used in comment sections (may update in future) +* Checks for false empty commenter URLs 'http://' w/registered users +* Adds the class 'photo' to the image +* Adds a call to HYBRID_IMAGES . '/trackback.jpg' for trackbacks +* Adds a call to HYBRID_IMAGES . '/pingback.jpg' for pingbacks +* +* Filters should only return a string for an image URL for the avatar with class $avatar +* They should not get the avatar as this is done after the filter +* +* @since 0.2 +* @filter +*/ +function hybrid_avatar() { + global $comment, $hybrid_settings; + + $url = get_comment_author_url(); + + $comment_type = get_comment_type(); + + if($comment_type == 'trackback') + $avatar = HYBRID_IMAGES . '/trackback.jpg'; + + elseif($comment_type == 'pingback') + $avatar = HYBRID_IMAGES . '/pingback.jpg'; + + elseif($hybrid_settings['default_avatar']) + $avatar = $hybrid_settings['default_avatar']; + + $avatar = apply_filters('hybrid_avatar', $avatar); + + if($url == true && $url != 'http://') + echo '<a href="' . $url . '" rel="external nofollow" title="' . get_comment_author() . '">'; + + echo str_replace("class='avatar", "class='photo avatar", get_avatar(get_comment_author_email(), '80', $avatar)); + + if($url == true && $url != 'http://') + echo '</a>'; +} + +/** +* Displays individual comments +* Uses the callback parameter for wp_list_comments +* Overwrites the default display of comments +* +* @since 0.2.3 +* +* @param $comment The comment variable +* @param $args Array of arguments passed from wp_list_comments +* @param $depth What level the particular comment is +*/ +function hybrid_comments_callback($comment, $args, $depth) { + $GLOBALS['comment'] = $comment; + $GLOBALS['comment_depth'] = $depth; +?> + + <li id="comment-<?php comment_ID(); ?>" class="<?php hybrid_comment_class(); ?>"> + + <?php hybrid_avatar(); // Avatar filter ?><div class="comment-meta-data"> + + <div class="comment-author vcard"> + <?php hybrid_comment_author(); ?> + </div> + + <abbr class="comment-time" title="<?php comment_date(__('F jS, Y, g:i a (P - e)','hybrid')); ?>"> + <?php printf(__('%1$s at %2$s','hybrid'), get_comment_date(), get_comment_time()); ?> + </abbr> + + <span class="separator">|</span> + <a class="permalink" href="#comment-<?php comment_ID(); ?>" title="<?php _e('Permalink to comment','hybrid'); ?>"><?php _e('Permalink','hybrid'); ?></a> + + <?php + if((get_option('thread_comments')) && ($args['type'] == 'all' || get_comment_type() == 'comment')) : + $max_depth = get_option('thread_comments_depth'); + echo comment_reply_link(array( + 'reply_text' => __('Reply','hybrid'), + 'login_text' => __('Log in to reply.','hybrid'), + 'depth' => $depth, + 'max_depth' => $max_depth, + 'before' => '<span class="separator">|</span> <span class="comment-reply-link">', + 'after' => '</span>' + )); + endif; + ?> + + <?php edit_comment_link('<span class="edit">'.__('Edit','hybrid').'</span>',' <span class="separator">|</span> ',''); ?> + + <?php if($comment->comment_approved == '0') : ?> + <em><?php _e('Your comment is awaiting moderation.','hybrid'); ?></em> + <?php endif; ?> + + </div> + + <div class="comment-text"> + <?php comment_text(); ?> + </div> +<?php +} + +/** +* Ends the display of individual comments +* Uses the callback parameter for wp_list_comments +* Needs to be used in conjunction with hybrid_comments_callback +* Not needed but used just in case something is changed +* +* @since 0.2.3 +*/ +function hybrid_comments_end_callback() { + echo '</li>'; +} + +/** +* Sets a class for each comment +* Sets alt, odd/even, and author/user classes +* Adds author, user, and reader classes +* +* @since 0.2 +*/ +function hybrid_comment_class() { + global $comment; + static $comment_alt; + $classes = array(); + + if(function_exists('get_comment_class')) + $classes = get_comment_class(); + + $classes[] = get_comment_type();; + + /* + * User classes + */ + if($comment->user_id > 0 && $user = get_userdata($comment->user_id)) : + + $classes[] = 'user user-' . $user->user_nicename; + + if($post = get_post($post_id)) : + if($comment->user_id === $post->post_author) + $classes[] = 'author author-' . $user->user_nicename; + endif; + else : + $classes[] = 'reader'; + endif; + + /* + * Alt classes + */ + if($comment_alt++ % 2) : + $classes[] = 'even'; + $classes[] = 'alt'; + else : + $classes[] = 'odd'; + endif; + + /* + * http://microid.org + */ + $email = get_comment_author_email(); + $url = get_comment_author_url(); + if(!empty($email) && !empty($url)) { + $microid = 'microid-mailto+http:sha1:' . sha1(sha1('mailto:'.$email).sha1($url)); + $classes[] = $microid; + } + + + $classes = join(' ', $classes); + + echo $classes; +} + +/** +* Properly displays comment author name/link +* bbPress and other external systems sometimes don't set a display name for registrations +* WP has problems if no display name is set +* WP gives registered users URL of 'http://' if none is set +* +* @since 0.2.2 +*/ +function hybrid_comment_author() { + global $comment; + + $author = get_comment_author(); + $url = get_comment_author_url(); + + /* + * Registered members w/o URL defaults to 'http://' + */ + if($url == 'http://') + $url = false; + + /* + * Registered through bbPress sometimes leaves no display name + * Bug with bbPress 0.9 series and WP 2.5 (no later testing) + */ + if(!$author && $comment->user_id > 0) : + $user = get_userdata($comment->user_id); + if($user->display_name !== '') + $author = $user->display_name; + elseif($user->user_nickname !== '') + $author = $user->nickname; + elseif($user->user_nicename !== '') + $author = $user->user_nicename; + else + $author = $user->user_login; + endif; + + /* + * Display link and cite if URL is set + * Also properly cites trackbacks/pingbacks + */ + if($url) : + $output = '<cite title="' . $url . '">'; + $output .= '<a href="' . $url . '" title="' . $author . '" class="external nofollow">' . $author . '</a>'; + $output .= '</cite>'; + else : + $output = '<cite>'; + $output .= $author; + $output .= '</cite>'; + endif; + + echo $output; +} +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_hybrid/deprecated.php b/wp-content/themes/vanilla/_hybrid/deprecated.php new file mode 100755 index 000000000..a7b435b08 --- /dev/null +++ b/wp-content/themes/vanilla/_hybrid/deprecated.php @@ -0,0 +1,94 @@ +<?php + +/** +* get_the_image_link() +* Catchall function for getting images with a link +* +* @since 0.1 +* @deprecated 0.2.3 +* @replaced get_the_image() now handles an echo argument +*/ +function get_the_image_link($args = array(), $deprecated =false, $deprecated_2 = false) { + get_the_image($args, $deprecated, $deprecated_2); +} + +/** +* Returns an array of the available tags (slugs) +* +* @since 0.2 +* @deprecated 0.2.3 +* @return array +* @replaced with hybrid_all_tag_slugs() for proper naming conventions +*/ +function hybrid_all_tags() { + $tags = hybrid_all_tag_slugs(); + return $tags; +} + +/** +* hybrid_page_id() +* Dynamic page ID +* +* @since 1.0 +* @deprecated 0.2 +*/ +function hybrid_page_id() { + + if(is_front_page() || is_home() && !is_paged()) : + $page_id = 'home'; + else : + $page_id = 'content'; + endif; + + return $page_id; +} + +/** +* hybrid_page_class() +* Dynamic page class +* +* @since 0.1 +* @deprecated 0.2 +*/ +function hybrid_page_class() { + + if(is_front_page() || is_home()) : $class = 'home front-page'; + elseif(is_attachment()) : $class = 'attachment'; + elseif(is_single()) : $class = 'single'; + elseif(is_page()) : $class = 'page'; + elseif (is_category()) : $class = 'category'; + elseif(is_tag()) : $class = 'tag'; + elseif(is_search()) : $class = 'search'; + elseif (is_404()) : $class = 'error-404'; + elseif(is_year()) : $class = 'year'; + elseif(is_month()) : $class = 'month'; + elseif(is_day()) : $class = 'day'; + elseif(is_time()) : $class = 'time'; + elseif(is_author()) : $class = 'author'; + endif; + + if(is_date()) $class .= ' date'; + if(is_archive()) $class .= ' archive'; + if(is_paged()) $class .= ' paged'; + + echo $class; +} + + +/* + === Removed Functions === +*/ + +/** +* hybrid_get_insert() +* Function for getting insert +* Replacement for get_sidebar() +* +* @since 0.1 +* @removed 0.2.2 +*/ +function hybrid_get_insert() { + _e('This function has been removed or replaced by another function.','hybrid'); +} + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_hybrid/filters.php b/wp-content/themes/vanilla/_hybrid/filters.php new file mode 100755 index 000000000..4b6888b5e --- /dev/null +++ b/wp-content/themes/vanilla/_hybrid/filters.php @@ -0,0 +1,325 @@ +<?php + +/* Functions that can be filtered or that filter other functions. */ + +// Filters to be added + add_filter('comments_template', 'hybrid_legacy_comments'); + +/** +* Filters the comments_template() function +* Grabs the file legacy.comments.php if older than WP 2.7 +* +* @since 0.3 +* @return return $file legacy.comments.php +*/ +function hybrid_legacy_comments($file) { + if(!function_exists('wp_list_comments')) : + $file = HYBRID_LEGACY . '/legacy.comments.php'; + endif; + return $file; +} + +/** +* Shows the allowed tags on the comment form +* +* @since 0.2.2 +* @filter +* @hook comment_form() +*/ +function hybrid_allowed_tags() { + + $tags = array(); + + $tags[] = '<a href="" title="">'; + $tags[] = '<abbr title="">'; + $tags[] = '<acronym title="">'; + $tags[] = '<blockquote cite="">'; + $tags[] = '<cite>'; + $tags[] = '<code>'; + $tags[] = '<del datetime="">'; + $tags[] = '<em>'; + $tags[] = '<q cite="">'; + $tags[] = '<strong>'; + + $tags = join(' ', $tags); + + echo '<p class="allowed-tags">'; + echo '<strong>' . __('You can use these <acronym title="Extensible Hypertext Markup Language">XHTML</acronym> tags:','hybrid') . '</strong> '; + echo apply_filters('hybrid_allowed_tags', $tags); + echo '</p>'; +} + +/** +* Dynamic site title element +* Wrap in an <h1> element if on the home page +* All other pages, wrap in <div> +* +* @since 0.1 +* @filter +*/ +function hybrid_site_title() { + if(is_home() || is_front_page()) $tag = 'h1'; + else $tag = 'div'; + + $name = '<' . $tag . ' id="site-title">'; + $name .= '<a href="' . get_bloginfo('url') . '" title="' . get_bloginfo('name') . '"><span>' . get_bloginfo('name') . '</span></a>'; + $name .= '</' . $tag . '>'; + + echo apply_filters('hybrid_site_title', $name); +} + +/** +* Dynamic site description element +* Add <h2> around the description if on the home page +* Add <div> for all other pages +* +* @since 0.1 +* @filter +*/ +function hybrid_site_description() { + if(is_home() || is_front_page()) $tag = 'h2'; + else $tag = 'div'; + + $desc = '<' . $tag . ' id="site-description">'; + $desc .= '<span>' . get_bloginfo('description') . '</span>'; + $desc .= '</' . $tag . '>'; + + echo apply_filters('hybrid_site_description', $desc); +} + +/** +* Filterable page navigation +* Users should filter wp_page_menu() or wp_page_menu_args() if only changing links +* wp_page_menu() recreated in legacy.functions.php (pre-WP 2.7) +* +* @since 0.1 +* @hook hybrid_after_header +* @filter +*/ +function hybrid_page_nav() { + echo "<div id='navigation'>\n\t\t"; + + hybrid_before_page_nav(); // Before navigation hook + + if(is_front_page() || is_home()) $home = 'current_page_item'; + else $home = 'page_item'; + + $nav = wp_page_menu('show_home=Home&menu_class=page-nav&depth=1&echo=0'); + + echo apply_filters('hybrid_page_nav', $nav); + + hybrid_after_page_nav(); // After navigation hook + + echo "\t</div>\n"; +} + + +/** +* Filterable category navigation block +* Users should filter hybrid_category_menu() if only wanting to filter links +* This should only be filtered if directly adding something outside of the nav list +* Also, added hooks for before and after +* This will allow for custom content to be added in the same div +* +* @since 0.1 +* @filter +*/ +function hybrid_cat_nav() { + echo "\n\t<div id='cat-navigation'>\n\t\t"; + + hybrid_before_cat_nav(); // Before category navigation + + $nav = hybrid_category_menu('menu_class=cat-nav&echo=0'); + echo apply_filters('hybrid_cat_nav',$nav); + + hybrid_after_cat_nav(); // After category navigation hook + + echo "\n\t</div>\n"; +} + +/** +* Menu listing for categories +* Much like WP 2.7's wp_page_menu() functionality +* Ability to easily filter or call hybrid template tag to show cat list +* Add all the default arguments of wp_list_categories() +* Always set the title_li paramater to false b/c this is a menu list +* +* Allow users to filter the function in child themes +* Filter should return an array of arguments for $cats +* +* @since 0.2.3 +* @param array Optional $args +* Ability to add a home link with show_home=Home +* @filter hybrid_category_menu_args to filter arguments +* @filter hybrid_category_menu to filter entire menu +*/ +function hybrid_category_menu($args = array()) { + + $defaults = array( + 'show_home' => false, + 'menu_class' => 'cat-nav', + 'show_option_all' => '', + 'orderby' => 'name', + 'order' => 'ASC', + 'show_last_update' => 0, + 'style' => 'list', + 'show_count' => 0, + 'hide_empty' => 1, + 'use_desc_for_title' => 0, + 'child_of' => 0, + 'feed' => '', + 'feed_image' => '', + 'exclude' => '', + 'depth' => 1, + 'orderby' => 'name', + 'hierarchical' => true, + 'echo' => 1 + ); + + // Allow filter of arguments + $args = apply_filters('hybrid_category_menu_args', $args); + + $args = wp_parse_args($args, $defaults); + extract($args); + + if($echo) : + $echo = false; + $echo_menu = true; + endif; + + $args = array( + 'title_li' => false, + 'show_option_all' => $show_option_all, + 'orderby' => $orderby, + 'order' => $order, + 'show_last_update' => $show_last_update, + 'style' => $style, + 'show_count' => $show_count, + 'hide_empty' => 1, + 'use_desc_for_title' => $use_descr_for_title, + 'child_of' => $child_of, + 'feed' => $feed, + 'feed_image' => $feed_image, + 'exclude' => $exclude, + 'depth' => $depth, + 'hierarchical' => $hierarchical, + 'echo' => false + ); + + if($show_home) : + $cats[0] = '<li class="' . $home . '"><a href="' . get_bloginfo('url') . '" title="' . $show_home . '">' . $show_home . '</a></li>'; + endif; + + $cats[1] = str_replace(array("\t","\n","\r"), '', wp_list_categories($args)); + + $cats = join('', $cats); + + $menu = '<div id="' . $menu_class . '"><ul>' . $cats . '</ul></div>'; + + $menu = apply_filters('hybrid_category_menu', $menu); + + if($echo_menu) : + echo $menu; + else : + return $menu; + endif; +} + +/** +* Displays a search form +* Iterates for each search form called so no repeat IDs +* +* @since 0.1 +* @filter +*/ + +function hybrid_search_form() { + + global $search_form_num; + if(!$search_form_num) + $search_num = false; + else + $search_num = '-' . $search_form_num; + + if(is_search()) $search_text = attribute_escape(get_search_query()); + else $search_text = __('Search this site...','hybrid'); + + $search = "\n\t\t<div id='search" . $search_num . "'>\n\t\t\t"; + $search .= '<form method="get" class="search-form" id="search-form' . $search_num . '" action="' . get_bloginfo("home") . '">'; + $search .= '<div>'; + $search .= '<input class="search-text" type="text" name="s" id="search-text' . $search_num . '" tabindex="7" value="' . $search_text . '" onfocus="if(this.value==this.defaultValue)this.value=\'\';" onblur="if(this.value==\'\')this.value=this.defaultValue;" />'; + $search .= '<input class="search-submit button" name="submit" type="submit" id="search-submit' . $search_num . '" tabindex="8" value="' . __('Search','hybrid') . '" />'; + $search .= '</div>'; + $search .= '</form>'; + $search .= "\n\t\t</div>\n"; + + echo apply_filters('hybrid_search_form',$search); + $search_form_num++; +} + +/** +* Ability to design custom sidebars with/without widgets +* Changed from action to filter in 0.2.2 +* Only useful if adding completely custom sidebars/widget areas +* One could simply create a custom function and hook it w/o using this function +* +* @since 0.2 +* @filter +*/ +function hybrid_insert() { + $insert = false; + echo apply_filters('hybrid_insert', $insert); +} + +/** +* Displays site copyright info with link back to site +* Can be removed/added through theme settings +* +* @since 0.1 +* @filter +*/ +function hybrid_copyright() { + + global $hybrid_settings; + + if($hybrid_settings['copyright']) : + + $copyright = '<p class="copyright">'; + $copyright .= '<span class="text">' . __('Copyright','hybrid') . ' © ' . date(__('Y','hybrid')) . '</span> <a href="' . get_bloginfo('url') . '" title="' . get_bloginfo('name') . '" rel="bookmark"><span>' . get_bloginfo('name') . '</span></a>. '; + $copyright .= '</p>'; + + endif; + + echo apply_filters('hybrid_copyright', $copyright); +} + +/** +* Displays Hybrid and/or WordPress credit links +* Can be added/removed through theme settings +* +* @since 0.1 +* @filter +*/ +function hybrid_credit() { + + global $hybrid_settings; + + if($hybrid_settings['wp_credit'] || $hybrid_settings['th_credit']) : + + $data = get_theme_data(TEMPLATEPATH . '/style.css'); + + $credit = '<p class="credit">'; + $credit .= '<span class="text">' . __('Powered by','hybrid') . '</span>'; + if($hybrid_settings['wp_credit']) + $credit .= ' <a href="http://wordpress.org" class="wp-link" title="' . __('Powered by WordPress, state-of-the-art semantic personal publishing platform','hybrid') . '"><span>' . __('Wordpress','hybrid') . '</span></a>'; + if($hybrid_settings['wp_credit'] && $hybrid_settings['th_credit']) + $credit .= ' <span class="text">' . __('and','hybrid') . '</span> '; + if($hybrid_settings['th_credit']) + $credit .= ' <a class="hybrid-link" href="' . $data['URI'] . '" title="' . __('Hybrid Theme Framework','hybrid') . '">' . __('Hybrid','hybrid') . '</a>'; + $credit .= '.</p>'; + + endif; + + echo apply_filters('hybrid_credit', $credit); +} +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_hybrid/functions.php b/wp-content/themes/vanilla/_hybrid/functions.php new file mode 100755 index 000000000..0029f03cd --- /dev/null +++ b/wp-content/themes/vanilla/_hybrid/functions.php @@ -0,0 +1,473 @@ +<?php + +/** +* Gets legacy functions if needed +* For versions pre-2.7 +* +* @since 0.3 +*/ +function hybrid_legacy_functions() { + if(!function_exists('wp_list_comments')) + require_once(HYBRID_LEGACY . '/legacy.functions.php'); +} + +/** +* Checks if the template exists and returns appropriate link +* Useful for log in, publish, and registration templates and functions +* +* @since 0.3 +* @return link +*/ +function hybrid_template_in_use($template = false) { + $link = false; + if($template) : + $pages = get_pages(array( + 'title_li' => '', + 'meta_key' => '_wp_page_template', + 'meta_value' => $template, + 'echo' => 0 + )); + if($pages[0]->ID) : + $link = get_permalink($pages[0]->ID); + else : + if($template == 'log-in.php') : + $link = get_option('siteurl') . '/wp-login.php?redirect_to=' . urlencode(get_permalink()); + elseif($template == 'register.php') : + $link = get_option('siteurl') . '/wp-register.php'; + endif; + endif; + endif; + return $link; +} + +/** +* Checks for capabilities assigned to current user +* Capability is pulled by use of the custom field key Capability or capability +* Multiple capabilities can be set as values with a single custom field key +* Users can also directly input a single capability into the function +* If no custom field is set or capability added, defaults to is_user_logged_in() +* +* @since 0.2.3 +* +* @param array Optional +* Input an array of custom field keys (on posts/pages) to check for values (capabilities) +* Input an array of capabilities to check +* Can set $logged_in to false if checking for capabilities only (default: true) +* Else, the script simply checks for logged in users failing any input capabilities +* +* @return true/false +* @reference http://codex.wordpress.org/Roles_and_Capabilities +*/ +function hybrid_capability_check($args = array()) { + + /* + * Set up defaults and mix with $args + */ + $defaults = array( + 'custom_key' => array('Capability','capability'), + 'capability' => array(), + 'logged_in' => true, + ); + + $args = wp_parse_args($args, $defaults); + extract($args); + + /* + * If is post/page, check for custom fields + */ + if(is_single() || is_page()) : + global $post; + foreach($custom_key as $key) : + $caps = get_post_meta($post->ID, $key, false); + if(!empty($caps)) + break; + endforeach; + endif; + + /* + * Check if there are any arguments set for capabilities + */ + if(!empty($capability)) : + foreach($capability as $cap) : + $caps[] = $cap; + endforeach; + endif; + + /* + * Loop through each capability + * Check if the currently logged in user has permission + * If there are no capabilities set, check if the user is logged in + */ + if(!empty($caps)) : + foreach($caps as $cap) : + if(current_user_can($cap)) : + $capable = true; + break; + else : + $capable = false; + endif; + endforeach; + return $capable; + else : + /* + * If $logged_in is set to true, check + */ + if($logged_in) : + if(is_user_logged_in()) + return true; + else + return false; + else : + return false; + endif; + endif; +} + +/** +* Error output message +* Shouldn't be used much, but just in case, it's here +* +* @since 0.2 +* @echo string +*/ +function hybrid_error() { + _e('You have encountered an error. This is usually because you\'ve changed something in the core Hybrid theme files. Try undoing your last edit to correct this issue. If this doesn\'t resolve it, head over to the support forums for help.','hybrid'); +} + +/** +* Display footnotes at the bottom of posts or pages +* Collects data from custom field key Footnote +* Only show footnotes on single posts and pages +* +* @since 0.3 +* return Footnotes in an ordered list appended to bottom of post +*/ +function hybrid_footnote() { + if(is_single() || is_page()) : + global $post; + $footnotes = get_post_meta($post->ID, 'Footnote', false); + if(!empty($footnotes)) : + $content = '<ol class="footnotes">'; + $i = 1; + foreach($footnotes as $note) : + $content .= '<li id="footnote-' . $i . '" class="footnote-' . $i . '">' . $note . ' <a href="#f' . $i . '" class="return">↩</a></li>'; + $i++; + endforeach; + $content .= '</ol>'; + endif; + endif; + //return $content; + echo $content; +} + +/** +* Function to load SimplePie correctly +* Checks for the existence of the '/cache/' folder +* Creates the folder if none exists +* Chmods the '/cache/' folder +* +* Not loaded by default (only added for use with plugins/child themes) +* +* @since 0.2.3 +* @reference http://simplepie.org +*/ +function hybrid_load_SimplePie() { + if(!class_exists('SimplePie')) : + include_once(HYBRID_EXTENSIONS . '/simplepie.inc'); + if(!file_exists(HYBRID_EXTENSIONS . '/cache/')) : + mkdir(HYBRID_EXTENSIONS . '/cache/', 0777); + chmod(HYBRID_EXTENSIONS . '/cache/', 0777); + endif; + endif; +} + +/** +* Uses SimplePie to display feeds +* Must load SimplePie before using +* Load SimplePie with hybrid_load_SimplePie() +* +* @since 0.2.3 +* +* @param array $args +* Not Optional: $feed can be a single feed or an array of feeds +* All other arguments are optional +* $class = CSS class for each item, which is also iterated +* $limit = How many items to display +* $format = XHTML element to wrap around each item +* $date = How to format the date +* $cache = Cache feeds for (mins) +* $echo = echo the feeds (true) or return for use in an array (false) +* +* @reference http://simplepie.org +*/ +function hybrid_lifestream($args = array()) { + + if(!$args['feed']) + return; + + $defaults = array( + 'feed' => false, // Can be multiple feeds input by array + 'class' => 'lifestream', + 'limit' => 10, + 'format' => 'li', + 'date' => __('F jS, Y','hybrid'), + 'cache' => 60, + 'echo' => true + ); + + $r = wp_parse_args($args, $defaults); + + extract($r); + +// Throw the feeds into SimplePie + $feeds = new SimplePie($feed, HYBRID_EXTENSIONS . '/cache', 60 * $cache); + +// Iterator + $count = 1; + +// Loop through each feed item + foreach($feeds->get_items(0,$limit) as $item) : + + // Date + $item_date = $item->get_date($date); + if($stored_date != $item_date) + $stored_date = $item_date; + + // Put together the feed item + $output = '<' . $format . ' class="' . $class . ' '. $class . '-' . $count . '">'; + $output .= '<abbr class="published time date" title="' . $stored_date . '>' . $stored_date . '</span>: <a href="' . $item->get_permalink() . '" title="' . $item->get_title() . '">'; + $output .= $item->get_title(); + $output .= '</a></' . $format . '>'; + + // Echo + if($echo) + echo $output; + else + $output_arr[] = $output; + + // Iterate + $count++; + endforeach; + + if(!$echo) + return $output_arr; +} + +/** +* Displays query count and load time +* Appended to the footer if set +* Option to add this from the theme settings page +* +* @since 0.2.1 +* @hook wp_footer() +*/ +function hybrid_query_counter() { + global $hybrid_settings; + if($hybrid_settings['query_counter']) : + echo '<p class="query-count">'; + printf(__('This page loaded in %1$s seconds with %2$s database queries.', 'hybrid'), timer_stop(0,3), get_num_queries()); + echo '</p>'; + endif; +} + +/** +* Returns an array of available categories +* Returns categories by name +* Most calls should use hybrid_all_cat_slugs() if possible when using query_posts() +* Addition of 'none' category for use on the theme settings page +* +* @since 0.2 +* @return array +*/ +function hybrid_all_cats() { + $all_cats = get_all_category_ids(); + foreach($all_cats as $key => $value) : + $all_cats[$key] = get_cat_name($all_cats[$key]); + $all_cats[$key] = str_replace("&", "&", $all_cats[$key]); + $all_cats[$key] = str_replace("&","&", $all_cats[$key]); + endforeach; + $all_cats['none'] = false; + return $all_cats; +} + +/** +* Returns an array of available category slugs +* Better for use when eventually using query_posts() by category_name +* query_posts() doesn't like non-matching names/slugs +* Addition of 'none' category for use on the theme settings page +* +* @since 0.2 +* @return array +*/ +function hybrid_all_cat_slugs() { + $cats = get_categories("hierarchical=0"); + foreach($cats as $key) : + $all_cats[] = $key->category_nicename; + endforeach; + $all_cats['none'] = false; + return $all_cats; +} + +/** +* Returns an array of the available tags (slugs) +* Addition of 'none' tag for use on the theme settings page +* +* @since 0.2 +* @renamed 0.2.3 +* @return array +*/ +function hybrid_all_tag_slugs() { + $all_tags = wp_tag_cloud('number=0&format=array'); + if($all_tags) : + foreach($all_tags as $key => $value) : + $value = strip_tags(stripslashes($value)); + $value = strtolower($value); + $value = str_replace(array(" ", " "), "-", $value); + $all_tags[$key] = $value; + endforeach; + endif; + $all_tags['none'] = false; + return $all_tags; +} + +/** +* Function for handling what the browser/search engine title should be +* Tries to handle every situation to make for the best SEO +* Check for All-in-One SEO and HeadSpace2 for compatibility +* +* @since 0.1 +* @plugin Optional http://wordpress.org/extend/plugins/all-in-one-seo-pack +* @plugin Optional http://wordpress.org/extend/plugins/headspace2 +* @echo string +*/ +function hybrid_document_title() { + global $post, $wp_query, $hybrid_settings; + + /* + * Make compatible with plugins + * All-in-One SEO Pack + * HeadSpace2 + */ + if(class_exists('All_in_One_SEO_Pack') || class_exists('HeadSpace2_Admin')) : + if(is_front_page() || is_home()) : + echo get_bloginfo('name') . ': ' . get_bloginfo('description'); + else : + wp_title(''); + endif; + else : + + /* + * Custom field Title replaces title on posts, pages + * Custom field Subtitle appended to title on posts, pages + */ + if(is_single() || is_page()) : + $title = get_post_meta($post->ID, 'Title', $single = true); + if($title) : + echo str_replace('"', '"', stripslashes($title)); + else : + single_post_title(); + $subtitle = get_post_meta($post->ID, 'Subtitle', $single = true); + if($subtitle) echo ': '. str_replace('"', '"', stripslashes($subtitle)); + endif; + + elseif(is_front_page() || is_home()) : + echo bloginfo('name'); echo ": "; echo bloginfo('description'); + elseif(is_attachment()) : + single_post_title(); + elseif(is_single()) : + single_post_title(); + elseif(is_page()) : + single_post_title(); + elseif(is_category()) : + single_cat_title(); + elseif(is_tag()) : + single_tag_title(); + elseif(is_search()) : + echo __('Search results for','hybrid') . ' "' . attribute_escape(get_search_query()) . '"'; + elseif(is_day()) : + printf(__('Archive for %1$s','hybrid'), get_the_time(__('F jS, Y','hybrid'))); + elseif(is_month()) : + printf(__('Archive for %1$s','hybrid'), single_month_title(' ', false)); + elseif(is_year()) : + printf(__('Archive for %1$s','hybrid'), get_the_time(__('Y','hybrid'))); + elseif(is_comments_popup()) : + printf(__('Comment on "%1$s"','hybrid'), single_post_title(false,false)); + elseif(is_404()) : + _e('404 Not Found','hybrid'); + else : + echo wp_title(''); + + endif; + + // Append blog title if set in theme settings + if(($hybrid_settings['seo_blog_title']) && (!is_home() || !is_front_page())) : + echo ': ' . get_bloginfo('name'); + endif; + + endif; +} + +/** +* Easily create dynamic tables w/PHP +* Put strings into function for th/td +* Current functionality only allows for <th> and <td> within <tr> elements +* Needs to be updated to accomodate more uses +* Should use an array of arguments, then be parsed with wp_parse_args() +* +* @since 0.1 +* @echo XHTML +*/ +function tabular_data($tabular_data_header = false, $tabular_data = false) { + + echo '<table>'; + if($tabular_data_header) echo '<tr>'; + + foreach($tabular_data_header as $header) : + echo '<th>' . $header . '</th>'; + endforeach; + + if($tabular_data_header) echo '</tr>'; + + $tr_class = 'odd'; + + foreach($tabular_data as $data) : + + echo '<tr class="' . $tr_class . '">'; + foreach($data as $value) : + echo '<td>' . $value . '</td>'; + endforeach; + echo '</tr>'; + + if($tr_class == 'odd') $tr_class = 'even alt'; + else $tr_class = 'odd'; + + endforeach; + echo '</table>'; +} + +/** +* Returns all authors with posts +* Needed for use with the Authors page template +* +* @since 0.2.2 +* +* @param array $args Mixed arguments (currently can only change order_by) +* @return array Authors with posts +*/ +function hybrid_get_authors($args = array()) { + global $wpdb; + + /* + * Set up defaults and mix with $args + */ + $defaults = array( + 'order_by' => 'display_name', + ); + + $args = wp_parse_args($args, $defaults); + extract($args); + + $user_ids = $wpdb->get_results("SELECT COUNT(b.ID) AS postsperuser, a.ID as post_id, display_name, user_nicename, b.ID as ID FROM wp_posts AS a LEFT join wp_users AS b ON a.post_author = b.ID GROUP BY b.ID ORDER BY $order_by"); + return $user_ids; +} +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_hybrid/get-the-image.php b/wp-content/themes/vanilla/_hybrid/get-the-image.php new file mode 100755 index 000000000..79e6dc7c6 --- /dev/null +++ b/wp-content/themes/vanilla/_hybrid/get-the-image.php @@ -0,0 +1,249 @@ +<?php + +/** +* This is a highly intuitive script file that gets images +* It first calls for custom field keys +* If no custom field key is set, check for images "attached" to post +* Check for image order if looking for attached images +* Scan the post for images if $image_scan = true +* Check for default image if there is one set +* +* Entirely rewrote the system in 0.2.3 +* +* @package Hybrid +* @subpackage Media +* +* @since 0.1 +*/ +function get_the_image($args = array()) { + + $defaults = array( + 'custom_key' => array('Thumbnail','thumbnail'), + 'post_id' => false, // Build functionality in later + 'default_size' => 'thumbnail', + 'default_image' => false, + 'order_of_image' => 0, + 'link_to_post' => true, + 'image_class' => false, + 'image_scan' => false, + 'show_caption' => false, + 'width' => false, + 'height' => false, + 'echo' => true + ); + + $args = wp_parse_args($args, $defaults); + extract($args); + + if(!is_array($custom_key)) : + $custom_key = str_replace(' ', '', $custom_key); + $custom_key = str_replace(array('+'), ',', $custom_key); + $custom_key = explode(',', $custom_key); + $args['custom_key'] = $custom_key; + endif; + + $image = image_by_custom_field($args); + + if(!$image) $image = image_by_attachment($args); + + if(!$image && $image_scan) $image = image_by_scan($args); + + if(!$image && $default_image) $image = image_by_default($args); + + if($image) + $image = display_the_image($args, $image); + + else + $image = '<!-- No images were added to this post. -->'; + + if($echo) + echo $image; + else + return $image; +} + +/** +* Calls images by custom field key +* Allow looping through multiple custom fields +* +* @since 0.2.3 +* @param $args Not Optional +* @return array $image, $classes, $alt +*/ +function image_by_custom_field($args = array()) { + + extract($args); + + if(!$post_id) + global $post; + + if(isset($custom_key)) : + foreach($custom_key as $custom) : + $image = get_post_custom_values($key = $custom); + if($image[0]) : + $image = $image[0]; + $classes[] = str_replace(' ', '-', strtolower($custom)); + break; + endif; + endforeach; + if(!$image) + return false; + endif; + + $classes[] = $default_size; + $alt = $post->post_title; + + return array('image' => $image, 'classes' => $classes, 'alt' => $alt); +} + +/** +* Check for attachment images +* Uses get_children() to check if the post has images attached +* +* @since 0.2.3 +* @param $args Not Optional +* @return array $image, $classes, $alt, $caption +*/ +function image_by_attachment($args = array()) { + + extract($args); + + global $post; + + $classes[] = str_replace(' ', '-', strtolower($custom_key[0])); + $classes[] = $default_size; + $alt = $post->post_title; + if($default_size == 'thumbnail') $show_caption = false; + + /* + * Use a WP 2.6 function to check + */ + if(function_exists('wp_enqueue_style')) : + $attachments = get_children(array('post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID')); + + /* + * WP 2.5 compatibility + */ + else : + $attachments = get_children("post_parent=$post->ID&post_type=attachment&post_mime_type=image&orderby=\"menu_order ASC, ID ASC\""); + + endif; + + if(!empty($attachments)) : + foreach($attachments as $id => $attachment) : + if($i == $order_of_image) : + $image = wp_get_attachment_image_src($id, $default_size); + $image = $image[0]; + if($show_caption) : + $caption = $attachment->post_excerpt; + if(!$caption) $caption = $attachment->post_title; + endif; + break; + endif; + $i++; + endforeach; + return array('image' => $image, 'classes' => $classes, 'alt' => $alt, 'caption' => $caption); + else : + return false; + endif; +} + +/** +* Scans the post for images within the content +* Not called by default with get_the_image() +* Shouldn't use if using large images within posts, better to use the other options +* +* @since 0.2.3 +* @param $args Not Optional +* @return $image, $classes, $alt +*/ +function image_by_scan($args = array()) { + + global $post; + + preg_match_all('|<img.*?src=[\'"](.*?)[\'"].*?>|i', $post->post_content, $matches); + + if(isset($matches)) $image = $matches[1][0]; + + $classes[] = $default_size; + + if($matches) + return array('image' => $image, 'classes' => $classes, 'alt' => $post->post_title); + else + return false; +} + +/** +* Used for setting a default image +* Not used with get_the_image() by default +* Function needed for getting the class and alt text +* +* @since 0.2.3 +* @param $args Not Optional +* @return array $image, $classes, $alt +function image_by_default($args = array()) { + + extract($args); + global $post; + + $image = $default_image; + $classes[] = $default_size; + + foreach($custom_key as $key) : + $classes[] = $key; + endforeach; + + $alt = $post->post_title; + + return array('image' => $image, 'classes' => $classes, 'alt' => $alt); +} + +/** +* Formats an image with appropriate alt text and class +* Adds a link to the post if argument is set +* Should only be called if there is an image to display, but will handle it if not +* +* @since 0.1 +* @param $args Not Optional +* @param $arr Array of image info ($image, $classes, $alt, $caption) +* @return string Formatted image (w/link to post if the option is set) +*/ +function display_the_image($args = array(), $arr = false) { + global $post; + + extract($arr); + + if($image) : + extract($args); + + if($width) $width = ' width="' . $width . '"'; + if($height) $height = ' height="' . $height . '"'; + + $img = $image; + $classes[] = $css_class; + $class = join(' ', $classes); + + if($caption) : + $image = '<div class="wp-caption ' . $class . '">'; + + if($link_to_post) $image .= '<a href="' . get_permalink($post->ID) . '" title="' . the_title_attribute('echo=0') . '">'; + $image .= '<img src="' . $img . '" alt="' . the_title_attribute('echo=0') . '"' . $width . $height . ' />'; + if($link_to_post) $image .= '</a>'; + $image .= '<p class="wp-caption-text">' . $caption . '</p></div>'; + + else : + $image = ''; + if($link_to_post) $image .= '<a href="' . get_permalink($post->ID) . '" title="' . the_title_attribute('echo=0') . '">'; + $image .= '<img src="' . $img . '" alt="' . the_title_attribute('echo=0') . '" class="' . $class . '"' . $width . $height . ' />'; + if($link_to_post) $image .= '</a>'; + + endif; + + return $image; + + else : + return false; + + endif; +} +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_hybrid/get-the-video.php b/wp-content/themes/vanilla/_hybrid/get-the-video.php new file mode 100755 index 000000000..42d888671 --- /dev/null +++ b/wp-content/themes/vanilla/_hybrid/get-the-video.php @@ -0,0 +1,84 @@ +<?php +/** +* Set of functions to gather video by custom field +* Output in XHTML-compliant <object> element +* +* @package Hybrid +* @subpackage Media +* @since 0.2 +*/ + +/** +* get_the_video() +* Catchall function for getting videos +* +* @since 0.2 +*/ +function get_the_video($arr = false, $default = false) { + global $post; + $cf_array = load_the_video($arr, $post, $default); + $video = display_the_video($cf_array); + return $video; +} + +/** +* load_the_video() +* Function for loading a video +* +* @since 0.2 +*/ +function load_the_video($custom_fields = false, $post = false, $default = false) { + +// If custom fields and default video are set to false +if($custom_fields == false && $default == false) : + $video = false; + +// If custom fields are set +elseif($custom_fields == true) : +// Checks only if there are custom fields to check for + if(isset($custom_fields)) : + // Loop through the custom fields, checking for a video + $i = 0; + while(strcmp($video[0],'') == 0 && $i <= sizeof($custom_fields)) : + $video = get_post_custom_values($key = $custom_fields[$i]); + $i++; + endwhile; + endif; + +// If a default is set or no custom field videos are found +elseif($default == true) : + $video[] = $default; +endif; + +// Return array with video (make array in case we need to add values later) + return array($video); +} + +/** +* display_the_video() +* Function for displaying a video +* +* @since 0.2 +*/ +function display_the_video($cf_array) { + +// Set video nicename + $video = $cf_array[0]; + +// If there's an imported video associated with this post + if(isset($video[0]) && strcmp($video[0],'') != 0) : + $output = " + <object type='application/x-shockwave-flash' data='$video[0]' width='298' height='250'> + <param name='movie' value='$video[0]' /> + <param name='allowfullscreen' value='true' /> + <param name='wmode' value='transparent' /> + </object>"; +// If there's no video + else : + $output = false; + endif; + +// Return the video + return $output; +} +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_hybrid/hooks.php b/wp-content/themes/vanilla/_hybrid/hooks.php new file mode 100755 index 000000000..04aa4f14c --- /dev/null +++ b/wp-content/themes/vanilla/_hybrid/hooks.php @@ -0,0 +1,271 @@ +<?php +/** +* Define theme hooks and add actions to them +* +* Actions can be added to these hooks throughout the theme +* This can be done through child themes and/or plugins +* +* Hooks should be defined and named by the order called (generated) relative to a theme element +*/ + +// Head actions + add_action('hybrid_head', 'hybrid_enqueue_script'); + add_action('wp_head', 'hybrid_enqueue_style'); + add_action('wp_head', 'hybrid_theme_meta'); + remove_action('wp_head', 'pagenavi_css'); + +// Header actions + add_action('hybrid_header', 'hybrid_site_title'); + add_action('hybrid_header', 'hybrid_site_description'); + add_action('hybrid_after_header', 'hybrid_page_nav'); + +// Container actions + add_action('hybrid_after_container', 'hybrid_get_primary'); + add_action('hybrid_after_container', 'hybrid_get_secondary'); + add_action('hybrid_after_container', 'hybrid_insert'); + +// Content actions + add_action('hybrid_before_content', 'hybrid_breadcrumb'); + add_action('hybrid_after_content', 'hybrid_navigation_links'); + add_action('hybrid_after_page', 'hybrid_footnote'); + add_action('hybrid_after_single', 'hybrid_footnote'); + +// Secondary actions + add_action('hybrid_after_secondary', 'wp_meta'); + +// Footer actions + add_action('hybrid_footer', 'hybrid_footer_insert'); + add_action('hybrid_footer', 'hybrid_copyright'); + add_action('hybrid_footer', 'hybrid_credit'); + add_action('hybrid_footer', 'hybrid_query_counter'); + +/** +* hybrid_head() +* +* @since 0.1 +* @file header.php +*/ +function hybrid_head() { + do_action('hybrid_head'); +} + +/** +* hybrid_before_header() +* +* @since 0.1 +* @file header.php +*/ +function hybrid_before_header() { + do_action('hybrid_before_header'); +} + +/** +* hybrid_header() +* +* @since 0.1 +* @file header.php +*/ +function hybrid_header() { + do_action('hybrid_header'); +} + +/** +* hybrid_after_header() +* +* @since 0.1 +* @file header.php +*/ +function hybrid_after_header() { + do_action('hybrid_after_header'); +} + +/** +* hybrid_before_page_nav() +* +* @since 0.2 +* @file filters.php +*/ +function hybrid_before_page_nav() { + do_action('hybrid_before_page_nav'); +} + +/** +* hybrid_after_page_nav() +* +* @since 0.2 +* @file filters.php +*/ +function hybrid_after_page_nav() { + do_action('hybrid_after_page_nav'); +} + +/** +* hybrid_before_cat_nav() +* +* @since 0.2 +* @file filters.php +*/ +function hybrid_before_cat_nav() { + do_action('hybrid_before_cat_nav'); +} + +/** +* hybrid_after_cat_nav() +* +* @since 0.2 +* @file filters.php +*/ +function hybrid_after_cat_nav() { + do_action('hybrid_after_cat_nav'); +} + +/** +* hybrid_before_container() +* +* @since 0.1 +* @file header.php +*/ +function hybrid_before_container() { + do_action('hybrid_before_container'); +} + +/** +* hybrid_before_content() +* +* @since 0.1 +* @file header.php +*/ +function hybrid_before_content() { + do_action('hybrid_before_content'); +} + +/** +* hybrid_after_content() +* +* @since 0.1 +* @file header.php +*/ +function hybrid_after_content() { + do_action('hybrid_after_content'); +} + +/** +* hybrid_after_single() +* +* @since 0.2 +* @file single.php +*/ +function hybrid_after_single() { + do_action('hybrid_after_single'); +} + +/** +* hybrid_after_page() +* +* @since 0.2 +* @file page.php +*/ +function hybrid_after_page() { + do_action('hybrid_after_page'); +} + +/** +* hybrid_before_comments() +* +* @since 0.3 +* @file page.php +*/ +function hybrid_before_comments() { + do_action('hybrid_before_comments'); +} + +/** +* hybrid_before_primary() +* +* @since 0.1 +* @file insert.php +*/ +function hybrid_before_primary() { + do_action('hybrid_before_primary'); +} + +/** +* hybrid_after_primary() +* +* @since 0.1 +* @file insert.php +*/ +function hybrid_after_primary() { + do_action('hybrid_after_primary'); +} + +/** +* hybrid_before_secondary() +* +* @since 0.2 +* @file insert.php +*/ +function hybrid_before_secondary() { + do_action('hybrid_before_secondary'); +} + +/** +* hybrid_after_secondary() +* +* @since 0.2 +* @file insert.php +*/ +function hybrid_after_secondary() { + do_action('hybrid_after_secondary'); +} + +/** +* hybrid_after_container() +* +* @since 0.1 +* @file insert.php +*/ +function hybrid_after_container() { + do_action('hybrid_after_container'); +} + +/** +* hybrid_before_footer() +* +* @since 0.1 +* @file footer.php +*/ +function hybrid_before_footer() { + do_action('hybrid_before_footer'); +} + +/** +* hybrid_footer() +* +* @since 0.1 +* @file footer.php +*/ +function hybrid_footer() { + do_action('hybrid_footer'); +} + +/** +* hybrid_after_footer() +* +* @since 0.1 +* @file footer.php +*/ +function hybrid_after_footer() { + do_action('hybrid_after_footer'); +} + +/** +* hybrid_child_settings() +* +* @since 0.2.1 +* @file child-settings.php +*/ +function hybrid_child_settings() { + do_action('hybrid_child_settings'); +} +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_hybrid/media.php b/wp-content/themes/vanilla/_hybrid/media.php new file mode 100755 index 000000000..0e4a08627 --- /dev/null +++ b/wp-content/themes/vanilla/_hybrid/media.php @@ -0,0 +1,324 @@ +<?php + +/** +* Media API +* +* Loads media styles and scripts for the theme +* Handles attachment files +* See (get-the-image.php, get-the-video.php) for other media +* +* @package Hybrid +* @subpackage Media +* @since 0.1 +*/ + +/** +* Filter to load CSS appropriately +* +* @since 0.1 +* @filter +* @hook wp_head() +*/ +function hybrid_enqueue_style() { + global $hybrid_settings; + + $css = false; + + if($hybrid_settings['print_style']) : + + // WP 2.6+ + if(function_exists('wp_enqueue_style')) : + wp_enqueue_style('hybrid_print', HYBRID_CSS . '/print.css', false, '0.2', 'print'); + wp_print_styles(array('hybrid_print')); + else : + $css = '<link rel="stylesheet" href="' . HYBRID_CSS . '/print.css" type="text/css" media="print" />'; + endif; + + endif; + + echo apply_filters('hybrid_enqueue_style', $css); +} + +/** +* Filter to load JavaScript at appropriate time +* +* @since 0.1 +* @filter +* @hook hybrid_head() +*/ +function hybrid_enqueue_script() { + + global $hybrid_settings; + + /* + * Common JS files + * jQuery pullquotes + */ + if($hybrid_settings['common_js']) : + wp_enqueue_script('hybrid_common', HYBRID_JS . '/common.js', array('jquery'), 0.3); + else : + if($hybrid_settings['pullquotes_js']) + wp_enqueue_script('hybrid_pullquotes', HYBRID_JS . '/pullquotes.js', array('jquery'), 0.3); + endif; + + /* + * Comment reply (WP 2.7) + */ + if(function_exists('is_singular')) : + if(is_singular()) : + if(get_option('thread_comments')) wp_enqueue_script('comment-reply'); + endif; + endif; + + /* + * Comments popup script if selected + */ + if($hybrid_settings['comments_popup'] && is_page_template('blog.php')) : + comments_popup_script(620, 400); + + elseif(($hybrid_settings['comments_popup']) && (is_archive() || is_search() || is_home() || is_front_page())) : + comments_popup_script(620, 400); + endif; + + /* + * Flash video embed + */ + if(is_attachment() && get_post_mime_type() == 'application/octet-stream') : + if(preg_match('/\.flv$/', wp_get_attachment_url())) + wp_enqueue_script('flash_embed', HYBRID_JS . '/flash-embed.js', false, 0.1); + endif; + + $script = false; + echo apply_filters('hybrid_enqueue_script', $script); +} + +/** +* Checks the mime type and attachment extension +* Calls a function, if needed, to handle the output +* +* @since 0.2.2 +*/ +function hybrid_handle_attachment($mime = false, $file = false) { + + if(!$mime || !$file) : + return; + + elseif($mime == 'video/asf' || $mime == 'video/quicktime') : + hybrid_video_attachment($mime, $file); + + elseif($mime == 'application/octet-stream' && preg_match('/\.flv$/', $file)) : + hybrid_video_attachment($mime, $file); + + elseif($mime == 'audio/mpeg' || $mime == 'audio/wma') : + hybrid_audio_attachment($mime, $file); + + elseif($mime == 'text/plain' || $mime == 'text/css' || $mime == 'text/html') : + hybrid_text_attachment($mime, $file); + + elseif($mime == 'application/pdf' || $mime == 'application/javascript' || $mime == 'application/rtf' || $mime == 'application/msword') : + hybrid_application_attachment($mime, $file); + + endif; +} + +/** +* Handles application attachments on their attachment pages +* Uses the <object> tag to embed media on those pages +* +* @since 0.3 +*/ +function hybrid_application_attachment($mime = false, $file = false) { + + echo '<object class="text" type="' . $mime . '" data="' . $file . '" width="400">'; + echo '<param name="src" value="' . $file . '" />'; + echo '</object>'; +} + +/** +* Handles text attachments on their attachment pages +* Uses the <object> element to show embed media in the pages +* +* @since 0.3 +*/ +function hybrid_text_attachment($mime = false, $file = false) { + + echo '<object class="text" type="' . $mime . '" data="' . $file . '" width="400">'; + echo '<param name="src" value="' . $file . '" />'; + echo '</object>'; +} + +/** +* Handles audio attachments on their attachment pages +* Puts audio/mpeg and audio/wma files into an <object> element +* +* @since 0.2.2 +*/ +function hybrid_audio_attachment($mime = false, $file = false) { + + if($mime == false || $file == false) : + return; + + elseif($mime == 'audio/mpeg' || $mime == 'audio/wma') : + + echo '<object type="' . $mime . '" class="audio" data="' . $file . '" width="400" height="50">'; + echo '<param name="src" value="' . $file . '" />'; + echo '<param name="autostart" value="false" />'; + echo '<param name="controller" value="true" />'; + echo '</object>'; + + endif; + +} + +/** +* Handles video attachments on attachment pages +* Also handles application/octet-stream attachments if video (flv) +* FLV files are loaded with Flowplayer (see hybrid_enqueue_script() for JS) +* Add other video types to the <object> element +* +* @since 0.2.2 +*/ +function hybrid_video_attachment($mime = false, $file = false) { + + if($mime == false || $file == false) : + return; + + elseif($mime == 'video/asf') : + + echo '<object type="video/x-ms-wmv" class="video" data="' . $file . '" width="400" height="320">'; + echo '<param name="src" value="' . $file . '" />'; + echo '<param name="autostart" value="false" />'; + echo '<param name="allowfullscreen" value="true" />'; + echo '<param name="controller" value="true" />'; + echo '</object>'; + + elseif($mime == 'video/quicktime') : + + echo '<object type="video/quicktime" class="video" data="' . $file . '">'; + echo '<param name="autoplay" value="false" />'; + echo '<param name="allowfullscreen" value="true" />'; + echo '<param name="controller" value="true" />'; + echo '</object>'; + + elseif($mime == 'application/octet-stream') : + + if(preg_match('/\.flv$/', $file)) : + + echo '<div id="flash-video" class="video"></div>'; + ?> + <script type="text/javascript"> + flashembed("flash-video", "<?php echo HYBRID_SWF; ?>/FlowPlayerDark.swf", { + config: { + videoFile: '<?php echo $file; ?>', + initialScale: 'scale', + autoPlay: false, + loop: false, + showVolumeSlider: false, + controlsOverVideo: 'ease', + controlBarBackgroundColor: -1, + controlBarGloss: 'low' + } + }); + </script> + +<?php + endif; + + else : + return; + + endif; + +} + +/** +* Pulls an image for the particular mime type +* Currently, just passes variables to hybrid_attachment_icon +* Need to update and work with wp_mime_type_icon() +* +* @since 0.2.3 +* @param $mime, $file +*/ +function hybrid_mime_type_icon($mime = false, $file = false) { + + if($mime && $file) + hybrid_attachment_icon($mime, $file); + + // global $post; + // echo '<img src="' . wp_mime_type_icon($post->ID) . '" class="mime-type-icon" alt="' . __('Mime-type icon','hybrid') . '" />'; +} + +/** +* Displays icons for attachments +* +* @since 0.2.2 +*/ +function hybrid_attachment_icon($mime = false, $file = false) { + + $img = false; + + if(!$mime || !$file) : + return; + +// Video + elseif($mime == 'video/asf') : + $img = HYBRID_IMAGES . '/video.png'; + + elseif($mime == 'video/quicktime') : + $img = HYBRID_IMAGES . '/video.png'; + +// Audio + elseif($mime == 'audio/mpeg' || $mime == 'audio/wma') : + $img = HYBRID_IMAGES . '/audio.png'; + +// Application + elseif($mime == 'application/octet-stream' && preg_match('/\.flv$/', $file)) : + $img = HYBRID_IMAGES . '/video.png'; + + elseif($mime == 'application/javascript') : + $img = HYBRID_IMAGES . '/js.png'; + + elseif($mime == 'application/octet-stream') : + $img = HYBRID_IMAGES . '/default.png'; + + elseif($mime == 'application/zip') : + $img = HYBRID_IMAGES . '/zip.png'; + + elseif($mime == 'application/x-tar') : + $img = HYBRID_IMAGES . '/tar.png'; + + elseif($mime == 'application/pdf') : + $img = HYBRID_IMAGES . '/pdf.png'; + + elseif($mime == 'application/msword') : + $img = HYBRID_IMAGES . '/doc.png'; + + elseif($mime == 'application/rtf') : + $img = HYBRID_IMAGES . '/doc.png'; + + elseif($mime == 'application/x-msdownload') : + $img = HYBRID_IMAGES . '/exe.png'; + + elseif($mime == 'application/x-shockwave-flash') : + $img = HYBRID_IMAGES . '/swf.png'; + +// Text + elseif($mime == 'text/plain') : + $img = HYBRID_IMAGES . '/text.png'; + + elseif($mime == 'text/html') : + $img = HYBRID_IMAGES . '/html.png'; + + elseif($mime == 'text/css') : + $img = HYBRID_IMAGES . '/css.png'; + + else : + $img = HYBRID_IMAGES . '/default.png'; + + endif; + + if($img) + echo '<img class="attachment-icon" src="' . $img . '" alt="' . $mime . '" title="' . $mime . '" />'; + +} +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_hybrid/primary.php b/wp-content/themes/vanilla/_hybrid/primary.php new file mode 100755 index 000000000..d0e11168a --- /dev/null +++ b/wp-content/themes/vanilla/_hybrid/primary.php @@ -0,0 +1,72 @@ +<?php + +/** +* Runs through a list of primary inserts according to page +* Let users filter through the child theme if necessary +* +* @since 0.1 +* @filter +*/ +function hybrid_primary_var() { + + if(is_front_page() || is_home()) + $hybrid_insert_id = __('Primary Home','hybrid'); + elseif(is_author()) + $hybrid_insert_id = __('Primary Author','hybrid'); + elseif(is_category()) + $hybrid_insert_id = __('Primary Category','hybrid'); + elseif(is_date()) + $hybrid_insert_id = __('Primary Date','hybrid'); + elseif(is_page_template('no-widgets.php')) + $hybrid_insert_id = false; + elseif(is_page()) + $hybrid_insert_id = __('Primary Page','hybrid'); + elseif(is_search()) + $hybrid_insert_id = __('Primary Search','hybrid'); + elseif(is_single()) + $hybrid_insert_id = __('Primary Single','hybrid'); + elseif(is_tag()) + $hybrid_insert_id = __('Primary Tag','hybrid'); + elseif(is_404()) + $hybrid_insert_id = __('Primary 404','hybrid'); + else + $hybrid_insert_id = __('Primary Home','hybrid'); + + return apply_filters('hybrid_primary_var', $hybrid_insert_id); +} + +/** +* Displays the primary widget area +* Check if the widget area is active or if the default is set to home +* If neither is true, don't display the XHTML +* +* @since 0.2.2 +*/ +function hybrid_get_primary() { + + global $hybrid_settings; + + if( + ($hybrid_settings['primary_inserts_default'] && is_sidebar_active(__('Primary Home','hybrid')) && !is_page_template('no-widgets.php')) || + (is_sidebar_active(hybrid_primary_var()) && !is_page_template('no-widgets.php')) + ) : ?> + + <div id="primary"> + <?php + hybrid_before_primary(); // Before primary hook + + if(dynamic_sidebar(hybrid_primary_var())) : + else : + if($hybrid_settings['primary_inserts_default']) : + if(dynamic_sidebar(__('Primary Home','hybrid'))) : + endif; + endif; + endif; + + hybrid_after_primary(); // After primary hook + ?> + </div> + + <?php endif; +} +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_hybrid/secondary.php b/wp-content/themes/vanilla/_hybrid/secondary.php new file mode 100755 index 000000000..c3d15701f --- /dev/null +++ b/wp-content/themes/vanilla/_hybrid/secondary.php @@ -0,0 +1,72 @@ +<?php + +/** +* Runs through a list of secondary inserts according to page +* Let users filter through the child theme if necessary +* +* @since 0.1 +* @filter +*/ +function hybrid_secondary_var() { + + if(is_front_page() || is_home()) + $hybrid_insert_id = __('Secondary Home','hybrid'); + elseif(is_author()) + $hybrid_insert_id = __('Secondary Author','hybrid'); + elseif(is_category()) + $hybrid_insert_id = __('Secondary Category','hybrid'); + elseif(is_date()) + $hybrid_insert_id = __('Secondary Date','hybrid'); + elseif(is_page_template('no-widgets.php')) + $hybrid_insert_id = false; + elseif(is_page()) + $hybrid_insert_id = __('Secondary Page','hybrid'); + elseif(is_search()) + $hybrid_insert_id = __('Secondary Search','hybrid'); + elseif(is_single()) + $hybrid_insert_id = __('Secondary Single','hybrid'); + elseif(is_tag()) + $hybrid_insert_id = __('Secondary Tag','hybrid'); + elseif(is_404()) + $hybrid_insert_id = __('Secondary 404','hybrid'); + else + $hybrid_insert_id = __('Secondary Home','hybrid'); + + return apply_filters('hybrid_secondary_var', $hybrid_insert_id); +} + +/** +* Displays the secondary widget area +* Check if the widget area is active or if the default is set to home +* If neither is true, don't display the XHTML +* +* @since 0.2.2 +*/ +function hybrid_get_secondary() { + + global $hybrid_settings; + + if( + ($hybrid_settings['secondary_inserts_default'] && is_sidebar_active(__('Secondary Home','hybrid')) && !is_page_template('no-widgets.php')) || + (is_sidebar_active(hybrid_secondary_var()) && !is_page_template('no-widgets.php')) + ) : ?> + + <div id="secondary"> + <?php + hybrid_before_secondary(); // Before secondary hook + + if(dynamic_sidebar(hybrid_secondary_var())) : + else : + if($hybrid_settings['secondary_inserts_default']) : + if(dynamic_sidebar(__('Secondary Home','hybrid'))) : + endif; + endif; + endif; + + hybrid_after_secondary(); // After secondary hook + ?> + </div> + + <?php endif; +} +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_hybrid/template-functions.php b/wp-content/themes/vanilla/_hybrid/template-functions.php new file mode 100755 index 000000000..8693ee27e --- /dev/null +++ b/wp-content/themes/vanilla/_hybrid/template-functions.php @@ -0,0 +1,437 @@ +<?php + +/** +* Calls up several theme functions to get meta info +* hybrid_meta_keywords() +* hybrid_meta_description() +* hybrid_meta_robots() +* hybrid_meta_other() +* Once all functions are loaded output data into header +* Check for All in One SEO and HeadSpace2 +* If in use, only load hybrid_meta_other() +* +* @since 0.1 +* @hook wp_head() +*/ +function hybrid_theme_meta() { + if(!class_exists('All_in_One_SEO_Pack') && !class_exists('HeadSpace2_Admin')) : + hybrid_meta_robots(); + hybrid_meta_description(); + hybrid_meta_keywords(); + endif; + hybrid_meta_other(); +} + +/** +* Allows/disallows indexing by search engines +* Calls theme settings to check for data +* Check options 'blog_public' for privacy mode +* If private, don't send meta info to header +* +* @since 0.2.3 +*/ +function hybrid_meta_robots() { + global $post, $hybrid_settings, $wp_query; + + if(!get_option('blog_public')) + return; + + /* + * Indexing/Robots + */ + if((is_home() || is_front_page()) && ($hybrid_settings['robots_home'])) : + $follow = true; + elseif(is_attachment() && $hybrid_settings['robots_attachment']) : + $follow = true; + elseif(is_single() && !is_attachment() && $hybrid_settings['robots_single']) : + $follow = true; + elseif(is_page() && !is_attachment() && $hybrid_settings['robots_page']) : + $follow = true; + elseif(is_date() && $hybrid_settings['robots_date']) : + $follow = true; + elseif(is_category() && $hybrid_settings['robots_category']) : + $follow = true; + elseif(is_tag() && $hybrid_settings['robots_tag']) : + $follow = true; + elseif(is_search() && $hybrid_settings['robots_search']) : + $follow = true; + elseif(is_author() && $hybrid_settings['robots_author']) : + $follow = true; + elseif(is_404() && $hybrid_settings['robots_404']) : + $follow = true; + else : + $follow = false; + endif; + + if($follow) : + echo '<meta name="robots" content="index,follow" />' . "\n"; + else : + echo '<meta name="robots" content="noindex,follow" />' . "\n"; + endif; +} + +/** +* Generates the meta description +* Checks theme settings for indexing, title, and meta settings +* +* @since 0.2.3 +*/ +function hybrid_meta_description() { + global $post, $hybrid_settings, $wp_query; + + /* + * Get meta description + * Check for custom fields on posts/pages + */ + // If on home page + if(is_home() || is_front_page()) : + $meta_desc = get_bloginfo('description'); + elseif(is_single() || is_page()) : + $meta_desc = get_post_meta($post->ID, 'Description', $single = true); + if(!$meta_desc && $hybrid_settings['seo_single_excerpts']) : + $meta_desc = get_the_excerpt(); + endif; + elseif(is_category()) : + $meta_desc = stripslashes(strip_tags(category_description())); + elseif(is_author()) : + $meta_auth = get_userdata(get_query_var('author')); + $meta_desc = str_replace(array('"'), '"', $meta_auth->description); + endif; + + /* + * Meta description + */ + if($meta_desc && strlen($meta_desc) > 1) : + $meta_desc = str_replace(array('"'), '"', $meta_desc); + $meta_desc = strip_tags(stripslashes($meta_desc)); + echo '<meta name="description" content="' . $meta_desc . '" />' . "\n"; + endif; +} + +/** +* Generates meta keywords/tags for the site +* Checks theme settings +* Checks indexing settings +* +* @since 0.2.3 +* +*/ +function hybrid_meta_keywords() { + global $post, $hybrid_settings, $wp_query; + + $keywords = array(); + + // If on a single post + // Check for custom fields + // Check for SEO settings + if(is_single()) : + $post_keywords = get_post_meta($post->ID, 'Keywords', true); + if($post_keywords) $keywords[] = $post_keywords; + + if($hybrid_settings['seo_cats'] && !$post_keywords) : + $cats = get_the_category(); + foreach($cats as $cat) : + $keywords[] = $cat->name; + endforeach; + endif; + if($hybrid_settings['seo_tags'] && !$post_keywords) : + $wp_query->in_the_loop = true; + $tags = get_the_tags(); + if($tags) : + foreach($tags as $tag) : + $keywords[] = $tag->slug; + endforeach; + endif; + $wp_query->in_the_loop = false; + endif; + + // If on a page + // Check for custom fields + elseif(is_page()) : + $post_keywords = get_post_meta($post->ID, 'Keywords', true); + if($post_keywords) : + $keywords[] = $post_keywords; + endif; + endif; + + if(!empty($keywords)) : + $keywords = join(', ', $keywords); + echo "<meta name='keywords' content='" . stripslashes($keywords) . "' />\n"; + endif; +} + +/** +* Generates other relevant meta info +* +* @since 0.2.3 +*/ +function hybrid_meta_other() { + global $hybrid_settings; + + /* + * Theme name/version + */ + $data = get_theme_data(TEMPLATEPATH . '/style.css'); + echo "\n<meta name='wordpress_theme' content='" . $data['Title'] . " " . $data['Version'] . "' />\n"; + + /* + * Feed and pingback display + */ + if($hybrid_settings['feed_url']) $feed = $hybrid_settings['feed_url']; + else $feed = get_bloginfo('rss2_url'); + + echo "\n<link rel='alternate' type='application/rss+xml' title='" . __('RSS 2.0','hybrid') . "' href='" . $feed . "' />\n"; + echo "<link rel='alternate' type='text/xml' title='" . __('RSS .92','hybrid') . "' href='" . get_bloginfo('rss_url') . "' />\n"; + echo "<link rel='alternate' type='application/atom+xml' title='" . __('Atom 0.3','hybrid') . "' href='" . get_bloginfo('atom_url') . "' />\n"; + echo "<link rel='pingback' href='" . get_bloginfo('pingback_url') . "' />\n\n"; +} + +/** +* Dynamic body class based on page +* +* @since 0.1 +*/ +function hybrid_body_class() { + global $wp_query, $hybrid_settings; + + $class = array(); + + if(is_front_page() || is_home()) : + $class[] = 'home'; + $class[] = 'front-page'; + elseif(is_attachment()) : + global $post; + $class[] = 'attachment'; + if(wp_attachment_is_image($post->ID)) : + $class[] = 'attachment-image'; + endif; + $mime = get_post_mime_type($post->ID); + $class[] = 'attachment-' . str_replace('/', '-', $mime); + elseif(is_single()) : + $class[] = 'single'; + $class[] = 'single-' . $wp_query->post->ID; + if(function_exists('is_sticky')) : + if(is_sticky($wp_query->post->ID)) + $class[] = 'single-sticky'; + endif; + elseif(is_page()) : + $class[] = 'page page-' . $wp_query->post->ID; + if(is_page_template()) : + $class[] = 'page-template'; + $class[] = 'page-template-' . str_replace('.php', '', get_post_meta($wp_query->post->ID, '_wp_page_template', true)); + endif; + elseif (is_category()) : + $cat = $wp_query->get_queried_object(); + $class[] = 'category'; + $class[] = 'category-' . $cat->slug; + elseif(is_tag()) : + $tags = $wp_query->get_queried_object(); + $class[] = 'tag'; + $class[] = 'tag-' . $tags->slug; + elseif(is_search()) : + $class[] = 'search'; + elseif (is_404()) : + $class[] = 'error-404'; + elseif(is_year()) : + $class[] = 'year'; + elseif(is_month()) : + $class[] = 'month'; + elseif(is_day()) : + $class[] = 'day'; + elseif(is_time()) : + $class[] = 'time'; + elseif(is_author()) : + $author = $wp_query->get_queried_object(); + $class[] = 'author'; + $class[] = ' author-' . $author->user_nicename; + endif; + + if(is_user_logged_in()) + $class[] = 'logged-in'; + else + $class[] = 'not-logged-in'; + if(is_date()) + $class[] = 'date'; + if(is_archive()) + $class[] = 'archive'; + if(is_paged()) + $class[] = 'paged'; + if((($page = $wp_query->get('paged')) || ($page = $wp_query->get('page'))) && $page > 1) : + + $class[] = 'paged'; + $class[] = 'paged-' . $page; + + if(is_home() || is_front_page()) + $class[] = 'home-paged-' . $page; + elseif(is_attachment()) + $class[] = 'attachment-paged-' . $page; + elseif(is_single()) + $class[] = 'single-paged-' . $page; + elseif(is_page()) + $class[] = 'page-paged-' . $page; + elseif(is_category()) + $class[] = 'category-paged-' . $page; + elseif(is_tag()) + $class[] = 'tag-paged-' . $page; + elseif(is_date()) + $class[] = 'date-paged-' . $page; + elseif(is_author()) + $class[] = 'author-paged-' . $page; + elseif(is_search()) + $class[] = 'search-paged-' . $page; + endif; + if(is_comments_popup()) + $class[] = 'comments-popup'; + + if($hybrid_settings['primary_inserts_default']) : + if(!is_sidebar_active(__('Primary Home','hybrid')) && !is_sidebar_active(hybrid_primary_var())) : + $class[] = 'no-primary-widgets'; + $no_primary_widgets = true; + endif; + else : + if(!is_sidebar_active(hybrid_primary_var())) : + $class[] = 'no-primary-widgets'; + $no_primary_widgets = true; + endif; + endif; + + if($hybrid_settings['secondary_inserts_default']) : + if(!is_sidebar_active(__('Secondary Home','hybrid')) && !is_sidebar_active(hybrid_secondary_var())) : + $class[] = 'no-secondary-widgets'; + $no_secondary_widgets = true; + endif; + else : + if(!is_sidebar_active(hybrid_secondary_var())) : + $class[] = 'no-secondary-widgets'; + $no_secondary_widgets = true; + endif; + endif; + + if(is_page_template('no-widgets.php')) : + $class[] = 'no-widgets'; + $no_widgets = true; + endif; + + if(($no_widgets) || ($no_primary_widgets && $no_secondary_widgets)) + $class[] = 'no-default-widgets'; + else + $class[] = 'has-widgets'; + + $class = join(' ', $class); + echo $class; +} + +/** +* Sets alternating classes for posts +* Gives class of odd/even and post-# +* +* @since 0.2 +*/ +function hybrid_post_class() { + global $post, $hybrid_post_alt, $hybrid_post_num; + +// Add class 'post' if attachment + if(is_attachment() || is_search() || is_404() || is_page()) + $class[] = 'post'; + +// Iterated class + $hybrid_post_num++; + $class[] = 'post-' . $hybrid_post_num; +// Alt class + if($hybrid_post_alt++ % 2) : + $class[] = 'even'; + $class[] = 'alt'; + else : + $class[] = 'odd'; + endif; + + /* + * WP 2.7 get_post_class() + * Only call if available + */ + if(function_exists('get_post_class')) : + $class = join( ' ', get_post_class( $class, $post_id ) ); + else : + $class[] = 'post'; + $class = join(' ', $class); + endif; + +// Echo class + echo $class; +} + +/** +* Archived navigation links +* Always use except on pages and posts +* Check for WP PageNavi plugin first +* +* @since 0.2 +* @hook hybrid_after_content +* @plugin http://wordpress.org/extend/plugins/wp-pagenavi +*/ +function hybrid_navigation_links() { + + if(is_home() || is_front_page() || is_archive() || is_search() || is_page_template('blog.php')) : + + if(function_exists('wp_pagenavi')) : + wp_pagenavi(); + else : ?> + <div class="navigation-links section"> + <?php posts_nav_link('', + '<span class="previous">« '.__('Previous Page','options').'</span>', + '<span class="next">'.__('Next Page','options').' »</span>' + ); ?> + </div> + + <?php endif; + endif; +} + +/** +* Shows related posts by plugin +* Only show if plugin is active +* +* @since 0.2.2 +* +* @plugin - http://wasabi.pbwiki.com/Related%20Entries +* @plugin - http://rmarsh.com/plugins/similar-posts +* @plugin - http://wordpress.org/extend/plugins/wordpress-23-related-posts-plugin +***********************************************************/ +function hybrid_related_posts() { + if( + function_exists('related_posts') || + function_exists('similar_posts') || + function_exists('wp_related_posts') + ) : + echo '<div class="related-posts">'; + echo '<h3>' . __('Related Posts','options') . '</h3>'; + + if(function_exists('related_posts')) : + echo '<ul class="related">'; related_posts(); echo '</ul>'; + + elseif(function_exists('similar_posts')) : + similar_posts(); + + elseif(function_exists('wp_related_posts')) : + wp_related_posts(); + + endif; + + echo '</div>'; + + endif; +} + +/** +* Footer insert from the theme settings page +* Uses stripslashes() for proper output of code +* +* @since 0.2.1 +*/ +function hybrid_footer_insert() { + global $hybrid_settings; + if($hybrid_settings['footer_insert']) : + echo stripslashes($hybrid_settings['footer_insert']); + endif; +} +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_hybrid/widgets.php b/wp-content/themes/vanilla/_hybrid/widgets.php new file mode 100755 index 000000000..ca654c6c2 --- /dev/null +++ b/wp-content/themes/vanilla/_hybrid/widgets.php @@ -0,0 +1,174 @@ +<?php + +/** +* Call the widget init function +* Run each set of inserts through the function +*/ + +hybrid_widget_init(hybrid_primary_inserts()); +hybrid_widget_init(hybrid_secondary_inserts()); +hybrid_widget_init(hybrid_subsidiary_inserts()); + +/** +* Add widget inserts to array +* Filterable to add/remove inserts in child themes +* +* @since 0.1 +* @filter +*/ +function hybrid_primary_inserts() { + $inserts = array( + __('Primary Home','hybrid'), + __('Primary Author','hybrid'), + __('Primary Category','hybrid'), + __('Primary Date','hybrid'), + __('Primary Page','hybrid'), + __('Primary Tag','hybrid'), + __('Primary Search','hybrid'), + __('Primary Single','hybrid'), + __('Primary 404','hybrid'), + ); + + return apply_filters('hybrid_primary_inserts', $inserts); +} + +/** +* Add widget inserts to array +* Filterable to add/remove inserts in child themes +* +* @since 0.2 +* @filter +*/ +function hybrid_secondary_inserts() { + $inserts = array( + __('Secondary Home','hybrid'), + __('Secondary Author','hybrid'), + __('Secondary Category','hybrid'), + __('Secondary Date','hybrid'), + __('Secondary Page','hybrid'), + __('Secondary Single','hybrid'), + __('Secondary Tag','hybrid'), + __('Secondary Search','hybrid'), + __('Secondary 404','hybrid'), + ); + + return apply_filters('hybrid_secondary_inserts', $inserts); +} + +/** +* Function for additional widget inserts +* These inserts should not fall under the Primary/Secondary domain +* +* @since 0.3 +* @filter +*/ +function hybrid_subsidiary_inserts() { + $inserts = array( + __('Widget Template','hybrid') + ); + + return apply_filters('hybrid_subsidiary_inserts', $inserts); +} + +/** +* Loop through inserts array +* Creates individual widget displays +* +* @since 0.2.1 +*/ +function hybrid_widget_init($insert_id = false) { + + return; // alister shutting this down for now! + + if($insert_id) : + foreach($insert_id as $insert) : + + // Register the widget section + register_sidebar(array( + 'name' => $insert, + 'before_widget' => '<div id="%1$s" class="' . hybrid_widget_class() . '"><div class="widget-inside">', + 'after_widget' => '</div></div>', + 'before_title' => '<h3 class="widget-title widget-header">', + 'after_title' => '</h3>', + ) + ); + endforeach; + endif; +} + +/** +* Check for widgets in widget-ready sections +* Allows user to completely collapse widget-ready sections +* Even if there are no widgets added +* +* Checks widget areas by name instead of ID +* Using WP functionality from /wp-includes/widgets.php +* From function dynamic_sidebar() +* +* Idea from: +* http://wordpress.org/support/topic/190184?replies=7#post-808787 +* http://themeshaper.com/collapsing-wordpress-widget-ready-areas-sidebars +* Thanks to Chaos Kaizer http://blog.kaizeku.com +* Ian Stewart http://themeshaper.com +* +* @since 0.2 +* @return true/false +*/ +function is_sidebar_active($index = 1) { + global $wp_registered_sidebars, $wp_registered_widgets; + + if(is_int($index)) : + $index = "sidebar-$index"; + else : + $index = sanitize_title($index); + foreach((array) $wp_registered_sidebars as $key => $value) : + if(sanitize_title($value['name']) == $index) : + $index = $key; + break; + endif; + endforeach; + endif; + + $sidebars_widgets = wp_get_sidebars_widgets(); + + if(empty($wp_registered_sidebars[$index]) || !array_key_exists($index, $sidebars_widgets) || !is_array($sidebars_widgets[$index]) || empty($sidebars_widgets[$index])) + return false; + else return true; +} + +/** +* Defines the classes for widgets +* Currently trying to add alt classes, but can't get it to work +* +* @since 0.2.2 +*/ +function hybrid_widget_class() { + + global $widget_num; + +// Widget class + $class = array(); + $class[] = 'widget'; + $class[] = '%2$s'; + $class[] = 'widget-%2$s'; + +// Iterated class +// $widget_num++; +// $class[] = 'widget-' . $widget_num; + +// Alt class +// if($widget_num % 2) : +// $class[] = 'widget-even'; +// $class[] = 'widget-alt'; +// else : +// $class[] = 'widget-odd'; +// endif; + +// Join the classes in an array + $class = join(' ', $class); + +// Return the widget class + return $class; +} + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_tarski/api/constants_helper.php b/wp-content/themes/vanilla/_tarski/api/constants_helper.php new file mode 100644 index 000000000..1b8b4bdee --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/api/constants_helper.php @@ -0,0 +1,236 @@ +<?php + +/** + * tarski_output_constant() - Checks if constant exists and outputs it if it does. + * + * This function must always either be wrapped by another + * constants output function, as in the other functions in + * this file, or have constants.php @included and the variable + * the $constant parameter is set to declared global. + * @since 1.5 + * @param string $constant + * @param boolean|string $pre + * @param boolean|string $post + * @return string + */ +function tarski_output_constant($constant, $pre = false, $post = false) { + if($constant) { + echo $pre . $constant . $post; + } +} + +/** + * tarski_output_headinclude() - Outputs $headerInclude variable from constants.php. + * + * @since 1.5 + * @global string $headerInclude + * @return string $headerInclude + */ +function tarski_output_headinclude() { + global $headerInclude; + tarski_output_constant($headerInclude); +} + +/** + * tarski_output_navbarinclude() - Adds $navbarInclude variable from constants.php to navbar. + * + * @since 1.5 + * @param array $input + * @global string $navbarInclude + * @return array $navbarInclude + */ +function tarski_output_navbarinclude($navbar) { + global $navbarInclude; + + if ( !check_input($navbar, 'array') ) + $navbar = array(); + + if ( $navbarInclude ) + $navbar['navbarinclude'] = $navbarInclude; + + return $navbar; +} + +/** + * tarski_output_frontpageinclude() - Outputs $frontPageInclude variable from constants.php. + * + * @since 1.5 + * @global string $frontPageInclude + * @global string $completedBlurb + * @return string $frontPageInclude + */ +function tarski_output_frontpageinclude() { + global $frontPageInclude; + global $completedBlurb; + if(is_home() && !$completedBlurb) { + $completedBlurb = true; + tarski_output_constant($frontPageInclude); + } +} + +/** + * tarski_output_postendinclude() - Outputs $postEndInclude variable from constants.php. + * + * @since 1.5 + * @global string $postEndInclude + * @return string $postEndInclude + */ +function tarski_output_postendinclude() { + global $postEndInclude; + if(is_single()) { + tarski_output_constant($postEndInclude); + } +} + +/** + * tarski_output_pageendinclude() - Outputs $pageEndInclude variable from constants.php. + * + * @since 1.5 + * @global string $pageEndInclude + * @return string $pageEndInclude + */ +function tarski_output_pageendinclude() { + global $pageEndInclude; + if(is_page()) { + tarski_output_constant($pageEndInclude); + } +} + +/** + * tarski_output_commentsforminclude() - Outputs $commentsFormInclude variable from constants.php. + * + * @since 1.5 + * @global string $commentsFormInclude + * @return string $commentsFormInclude + */ +function tarski_output_commentsforminclude() { + global $commentsFormInclude; + tarski_output_constant($commentsFormInclude); +} + +/** + * tarski_output_sidebartopinclude() - Outputs $sidebarTopInclude variable from constants.php. + * + * @since 1.5 + * @global string $sidebarTopInclude + * @return string $sidebarTopInclude + */ +function tarski_output_sidebartopinclude() { + global $sidebarTopInclude; + if(get_tarski_option('sidebar_onlyhome')) { // Sidebar only on index pages + if(!(is_page() || is_single())) { + tarski_output_constant($sidebarTopInclude); + } + } else { // Sidebar everywhere + if(!(is_page() || is_single())) { + tarski_output_constant($sidebarTopInclude); + } + } +} + +/** + * tarski_output_sidebarbottominclude() - Outputs $sidebarBottomInclude variable from constants.php. + * + * @since 2.0 + * @global string $sidebarBottomInclude + * @return string $sidebarBottomInclude + */ +function tarski_output_sidebarbottominclude() { + global $sidebarBottomInclude; + if(get_tarski_option('sidebar_onlyhome')) { // Sidebar only on index pages + if(!(is_page() || is_single())) { + tarski_output_constant($sidebarBottomInclude); + } + } else { // Sidebar everywhere + if(!(is_page() || is_single())) { + tarski_output_constant($sidebarBottomInclude); + } + } +} + +/** + * tarski_output_nosidebarinclude() - Outputs $noSidebarInclude variable from constants.php. + * + * @since 1.5 + * @global string $noSidebarInclude + * @return string $noSidebarInclude + */ +function tarski_output_nosidebarinclude() { + global $noSidebarInclude; + if((get_tarski_option('sidebar_pp_type') == 'none') && (is_single() || is_page())) { + if(!is_page_template('archives.php')) { + tarski_output_constant($noSidebarInclude); + } + } +} + +/** + * tarski_output_archivesinclude() - Outputs $archivesPageInclude variable from constants.php. + * + * @since 1.5 + * @global string $archivesPageInclude + * @return string $archivesPageInclude + */ +function tarski_output_archivesinclude() { + global $archivesPageInclude; + if(is_page_template('archives.php')) { + tarski_output_constant($archivesPageInclude); + } +} + +/** + * tarski_output_searchtopinclude() - Outputs $searchTopInclude variable from constants.php. + * + * @since 1.5 + * @global string $searchTopInclude + * @return string $searchTopInclude + */ +function tarski_output_searchtopinclude() { + global $searchTopInclude; + tarski_output_constant($searchTopInclude); +} + +/** + * tarski_output_searchbottominclude() - Outputs $searchBottomInclude variable from constants.php. + * + * @since 1.5 + * @global string $searchBottomInclude + * @return string $searchBottomInclude + */ +function tarski_output_searchbottominclude() { + global $searchBottomInclude; + tarski_output_constant($searchBottomInclude); +} + +/** + * tarski_output_footerinclude() - Outputs $footerInclude variable from constants.php. + * + * @since 1.5 + * @global string $footerInclude + * @return string $footerInclude + */ +function tarski_output_footerinclude() { + global $footerInclude; + tarski_output_constant($footerInclude, '<div id="footer-include">', '</div>'); +} + + +/** + * tarski_output_errorinclude() - Outputs $errorPageInclude variable from constants.php. + * + * @since 1.5 + * @param string $input + * @global string $errorPageInclude + * @return string $output equal to $errorPageInclude or $input + */ +function tarski_output_errorinclude($input) { + global $errorPageInclude; + if($errorPageInclude) { + $output = $errorPageInclude; + } else { + $output = $input; + } + return $output; +} + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_tarski/api/deprecated.php b/wp-content/themes/vanilla/_tarski/api/deprecated.php new file mode 100644 index 000000000..a84e48bbf --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/api/deprecated.php @@ -0,0 +1,342 @@ +<?php + +/** + * The scrapyard: deprecated functions that haven't yet been removed. + * + * Don't write plugins that rely on these functions, as they are liable + * to be removed between versions. There will usually be a better way + * to do what you want; post on the forum if you need help. + * @link http://tarskitheme.com/forum/ + */ + +/** + * version_to_integer() - Turns Tarski version numbers into integers. + * + * @since 2.0.3 + * @deprecated 2.3 + * @param string $version + * @return integer + */ +function version_to_integer($version) { + _deprecated_function(__FUNCTION__, '2.3'); + + // Remove all non-numeric characters + $version = preg_replace('/\D/', '', $version); + + if($version && strlen($version) >= 1) { + // Make the string exactly three characters (numerals) long + if(strlen($version) < 2) { + $version_int = $version . '00'; + } elseif(strlen($version) < 3) { + $version_int = $version . '0'; + } elseif(strlen($version) == 3) { + $version_int = $version; + } elseif(strlen($version) > 3) { + $version_int = substr($version, 0, 3); + } + + // Return an integer + return (int) $version_int; + } +} + +/** + * version_newer_than() - Returns true if current version is greater than given version. + * + * @since 2.0.3 + * @deprecated 2.3 + * @param mixed $version + * @return boolean + */ +function version_newer_than($version) { + _deprecated_function(__FUNCTION__, '2.3'); + + $version = version_to_integer($version); + $current = version_to_integer(theme_version('current')); + + if($version && $current) { + return (bool) ($current > $version); + } +} + +/** + * tarski_excerpt() - Excerpts a la Tarski. + * + * Code shamelessly borrowed from Kaf Oseo's 'the_excerpt Reloaded' plugin. + * @link http://guff.szub.net/2005/02/26/the-excerpt-reloaded/ + * @since 1.2.1 + * @deprecated 2.2 + * @param $return boolean + * @param string $excerpt_length + * @return string + */ +function tarski_excerpt($return = false, $excerpt_length = 35) { + _deprecated_function(__FUNCTION__, '2.2', the_excerpt()); + + global $post; + + if(!empty($post->post_password)) { // if there's a password + if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) { // and it doesn't match cookie + $output = get_the_password_form(); + } + if($return) { + return $output; + } else { + echo $output; + return; + } + } + + if(!($text = $post->post_excerpt)) + $text = $post->post_content; + + if($excerpt_length < 0) { + $output = $text; + } else { + str_replace('<!--more-->', '', $text); + $text = explode(' ', $text); + if(count($text) > $excerpt_length) { + $l = $excerpt_length; + $ellipsis = '…'; + } else { + $l = count($text); + $ellipsis = false; + } + for ($i = 0; $i < $l; $i++) + $output .= $text[$i] . ' '; + } + + $output = rtrim($output, " \n\t\r\0\x0B"); + $output = strip_tags($output); + $output .= $ellipsis; + $output = apply_filters('get_the_excerpt', $output); + $output = apply_filters('the_excerpt', $output); + $output = apply_filters('tarski_excerpt', $output); + + if($return) + return $output; + else + echo $output; +} + +/** + * tarski_date() - Tweaked WordPress date function that shows up on every post. + * + * The WP function the_date only shows up on the first post + * of that day. This one displays on every post, regardless + * of how many posts are made that day. + * @since 1.2.2 + * @deprecated 2.2 + * @see the_time() + * @global object $post + * @return string + * @hook filter tarski_date + * Filter for the date formatting that Tarski uses to ensure that dates are + * displayed everywhere using the user's date preferences. + */ +function tarski_date() { + _deprecated_function(__FUNCTION__, '2.2', get_the_time(get_option('date_format'))); + + global $post; + $date = mysql2date(get_option('date_format'), $post->post_date); + return apply_filters('tarski_date', $date); +} + +/** + * add_robots_meta() - Adds robots meta element if blog is public. + * + * WordPress adds a meta element denying robots access if the site is set + * to private, but it doesn't add one allowing them if it's set to public. + * @since 2.0 + * @deprecated 2.1 + * @see Asset::meta() + * @return string + */ +function add_robots_meta() { + _deprecated_function(__FUNCTION__, '2.1', Asset::meta()); + + if(get_option('blog_public') != '0') + echo '<meta name="robots" content="all" />' . "\n"; +} + +/** + * tarski_stylesheets() - Adds Tarski's stylesheets to the document head. + * + * @deprecated 2.1 + * @since 2.0.1 + * @return string + */ +function tarski_stylesheets() { + _deprecated_function(__FUNCTION__, '2.1', Asset::stylesheets()); + + $assets = new Asset; + $assets->stylesheets(); + $assets->output(); +} + +/** + * tarski_feeds() - Outputs feed links for the page. + * + * Can be set to return Atom, RSS or RSS2. Will always return the + * main site feed, but will additionally return an archive, search + * or comments feed depending on the page type. + * @deprecated 2.1 + * @since 2.0 + * @see Asset::feeds() + * @return string + */ +function tarski_feeds() { + _deprecated_function(__FUNCTION__, '2.1', Asset::feeds()); + + $assets = new Asset; + $assets->feeds(); + $assets->output(); +} + +/** + * tarski_javascript() - Adds Tarski JavaScript to the document head. + * + * @deprecated 2.1 + * @since 2.0.1 + * @return string + */ +function tarski_javascript() { + _deprecated_function(__FUNCTION__, '2.1', Asset::javascript()); + + $assets = new Asset; + $assets->javascript(); + $assets->output(); +} + +/** + * hide_sidebar_for_archives() - Hides the sidebar on pages using the Archives template. + * + * @deprecated 2.1 + * @since 2.0 + * @return string|boolean $sidebar_file + */ +function hide_sidebar_for_archives($sidebar_file) { + _deprecated_function(__FUNCTION__, '2.1'); + + if(is_archives_template()) + $sidebar_file = false; + return $sidebar_file; +} + +/** + * is_active_sidebar() - Checks to see whether a particular sidebar has widgets. + * + * Stolen from ticket #4594 on Trac, hence the conditional definition. No longer + * needed in 2.1 since all sidebars are widgets and only widgets, so default + * states are not needed. + * @link http://trac.wordpress.org/ticket/4594 + * @deprecated 2.1 + * @since 2.0 + * @return boolean + */ +if(!function_exists('is_active_sidebar')) { + function is_active_sidebar( $index ) { + _deprecated_function(__FUNCTION__, '2.1'); + + $index = ( is_int($index) ) ? "sidebar-$index" : sanitize_title($index); + $sidebars_widgets = (array) get_option('sidebars_widgets'); + return (bool) ( isset( $sidebars_widgets[$index] ) ); + } +} + +/** + * tarski_sidebar_custom() - Returns custom sidebar content, appropriately formatted. + * + * Gets the database value; strips slashes; prettifies the quotes + * and other typographical nuances; converts ampersands and other + * characters in need of encoding as HTML entities; applies + * automatic paragaphing; and finally applies filters and returns + * the output. + * @deprecated 2.1 + * @since 2.0 + * @return string + */ +function tarski_sidebar_custom($return = false) { + _deprecated_function(__FUNCTION__, '2.1'); + + $content = get_tarski_option('sidebar_custom'); + $output = apply_filters('tarski_sidebar_custom', $content); + if($return) { + return $output; + } else { + echo $output; + } +} + +/** + * tarski_footer_blurb() - Outputs custom footer content, appropriately formatted. + * + * Gets the database value; strips slashes; prettifies the quotes + * and other typographical nuances; converts ampersands and other + * characters in need of encoding as HTML entities; applies + * automatic paragaphing; and finally applies filters and returns + * the output. + * @deprecated 2.1 + * @since 2.0 + * @param boolean $return + * @return string + */ +function tarski_footer_blurb($return = false) { + _deprecated_function(__FUNCTION__, '2.1'); + + $content = get_tarski_option('blurb'); + $output = apply_filters('tarski_footer_blurb', $content); + + if($return) { + return $output; + } else { + echo $output; + } +} + +/** + * tarski_blurb_wrapper() - Wraps footer blurb in div element. + * + * @deprecated 2.1 + * @since 2.0 + * @see tarski_footer_blurb() + * @param string $blurb + * @return string + */ +function tarski_blurb_wrapper($blurb) { + _deprecated_function(__FUNCTION__, '2.1'); + + if(is_user_logged_in()) { + $edit_link = sprintf( + '<p class="edit-link">(<a title="%1$s" id="edit-footer-blurb" href="%2$s">%3$s</a>)</p>' . "\n", + __('Edit the footer content area'), + admin_url('themes.php?page=tarski-options#footer_blurb'), + __('edit','tarski') + ); + } + + if(get_tarski_option('blurb')) { + $blurb = "<div class=\"content\">\n$blurb</div>\n$edit_link"; + $blurb = "<div id=\"blurb\">\n$blurb</div> <!-- /blurb -->\n"; + } + + return $blurb; +} + +/** + * is_archives_template() - Returns true if the current page uses the Archives template + * + * This function exists for backwards-compatibility with WordPress 2.3, + * which does not include the is_page_template() function. + * @deprecated 2.1 + * @since 2.0 + * @global object $post + * @return boolean + */ +function is_archives_template() { + _deprecated_function(__FUNCTION__, '2.1', is_page_template('archives.php')); + + return is_page_template('archives.php'); +} + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_tarski/api/hooks.php b/wp-content/themes/vanilla/_tarski/api/hooks.php new file mode 100644 index 000000000..8d45cee52 --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/api/hooks.php @@ -0,0 +1,132 @@ +<?php + +/** + * th_header() - Tarski header hook + * + * Template function appearing in header.php, allows actions + * to be executed at that point in the template. By default + * used to add header images and the title and tagline. + * @example add_action('th_header', 'my_function'); + * @since 1.5 + * @hook action th_header + * One can use this hook to print additional header content. Tarski uses it + * internally to add the header image, site title, tagline and navbar. + */ +function th_header() { + do_action('th_header'); +} + +/** + * th_navbar() - Tarski navbar hook + * + * Template function appearing in header.php, allows actions + * to be executed at that point in the template. By default + * used to add the navbar and site feed link. + * @example add_action('th_navbar', 'my_function'); + * @since 1.5 + * @hook action th_navbar + * Executed by a wrapper function added to the th_header hook, + * this hook is used to add content to the navbar. + */ +function th_navbar() { + do_action('th_navbar'); +} + +/** + * th_postend() - Tarski post end hook + * + * Template function appearing at the end of each post, + * to be executed at that point in the template. By default + * used to add tags, page navigation and the $postEndInclude + * and $pageEndInclude constants. + * @example add_action('th_postend', 'my_function'); + * @since 1.5 + * @hook action th_postend + * This hook is used to add content to the end of posts. Tarski uses it + * internally to add tags to posts and navigation for multi-page posts. + */ +function th_postend() { + do_action('th_postend'); +} + +/** + * th_posts_nav - Tarski posts navigation hook + * + * Template function appearing at the end of the loop, + * to be executed at that point in the template. By default + * used to add next and previous posts navigation on index pages. + * @since 2.1 + * @hook action th_posts_nav + * Tarski uses this hook to add the next and previous posts navigation on index + * pages. It could be used to replace this navigation with some other kind. + */ +function th_posts_nav() { + do_action('th_posts_nav'); +} + +/** + * th_sidebar() - Tarski sidebar hook + * + * Template function appearing in sidebar.php, allows actions + * to be executed at that point in the template. By default + * used to output the $sidebarTopInclude and $noSidebarInclude + * constants. + * @example add_action('th_sidebar', 'my_function'); + * @since 1.5 + * @hook action th_sidebar + * The sidebar hook is used by Tarski to add different sidebars, depending on + * the options chosen by the user. It can be used to override the default + * sidebar code. + */ +function th_sidebar() { + do_action('th_sidebar'); +} + +/** + * th_fsidebar() - Tarski footer sidebar hook + * + * Template function appearing in footer.php, allows actions + * to be executed at that point in the template. By default + * used to add a search form. + * @example add_action('th_fsidebar', 'my_function'); + * @since 1.5 + * @hook action th_fsidebar + * Like th_sidebar, but for the footer, this hook is used to add widgets + * to the secondary footer area. + */ +function th_fsidebar() { + do_action('th_fsidebar'); +} + +/** + * th_fmain() - Tarski footer main section hook + * + * Template function appearing in footer.php, allows actions + * to be executed at that point in the template. By default + * used to add the footer blurb and recent entries + * @example add_action('th_fmain', 'my_function'); + * @since 2.0.5 + * @hook action th_fmain + * Similar to th_fsidebar and th_sidebar, this hook is used to add widgets to + * the primary footer area. + */ +function th_fmain() { + do_action('th_fmain'); +} + +/** + * th_footer() - Tarski footer hook + * + * Template function appearing in footer.php, allows actions + * to be executed at that point in the template. By default + * used to add the theme credit and site feed link. + * @example add_action('th_footer', 'my_function'); + * @since 1.5 + * @hook action th_footer + * Used by default to add the theme credit and site feed link. + */ +function th_footer() { + do_action('th_footer'); +} + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_tarski/classes/asset.php b/wp-content/themes/vanilla/_tarski/classes/asset.php new file mode 100644 index 000000000..997b3fba0 --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/classes/asset.php @@ -0,0 +1,205 @@ +<?php +/** + * class Asset + * + * @package Tarski + * @since 2.1 + */ +class Asset { + + /** + * Initialisation method which calls all other methods in turn. + */ + function init() { + $assets = new Asset; + + $assets->meta(); + $assets->stylesheets(); + $assets->javascript(); + $assets->feeds(); + + $assets->output(); + } + + /** + * Generate meta elements pertaining to Tarski and the site. + * + * @hook filter tarski_asset_meta + * Filters the metadata generated by the Asset wrapper. + */ + function meta() { + $themeversion = theme_version(); + $meta = array("<meta name=\"wp_theme\" content=\"Tarski $themeversion\" />"); + + global $wp_query; + $excerpt = trim(strip_tags(wp_specialchars($wp_query->post->post_excerpt))); + + if ( (is_single() || is_page()) && strlen($excerpt) ) + $description = $excerpt; + else + $description = get_bloginfo('description'); + + if ( strlen($description) ) + $meta[] = "<meta name=\"description\" content=\"$description\" />"; + + if(get_option('blog_public') != '0') + $meta[] = '<meta name="robots" content="all" />'; + + $this->meta = apply_filters('tarski_asset_meta', $meta); + } + + /** + * Generate links to the various Tarski stylesheets. + * + * @hook filter tarski_style_array + * Filter the array of stylesheet attributes from which the stylesheet + * links are generated. + * + * @hook filter tarski_stylesheets + * Filter the raw stylesheet link elements before they're printed to + * the document. + */ + function stylesheets() { + $style_array = array( + 'main' => array( + 'url' => get_bloginfo('stylesheet_url'), + ), + 'screen' => array( + 'url' => get_bloginfo('template_directory') . '/library/css/screen.css', + 'media' => 'screen,projection' + ), + 'print' => array( + 'url' => get_bloginfo('template_directory') . '/library/css/print.css', + 'media' => 'print' + ) + ); + + if(get_tarski_option('style')) { + $style_array['alternate'] = array( + 'url' => get_bloginfo('template_directory') . '/styles/' . get_tarski_option('style') + ); + } + + $style_array = apply_filters('tarski_style_array', $style_array); + + if(is_array($style_array)) { + foreach($style_array as $type => $values) { + if(is_array($values) && $values['url']) { + if(empty($values['media'])) { + $values['media'] = 'all'; + } + $stylesheets[$type] = sprintf( + '<link rel="stylesheet" href="%1$s" type="text/css" media="%2$s" />', + $values['url'], + $values['media'] + ); + } + } + } + + $this->stylesheets = apply_filters('tarski_stylesheets', $stylesheets); + } + + /** + * Generate script elements linking to Tarski's JavaScript. + * + * @hook filter tarski_javascript + * Filter script elements before they're printed to the document. + */ + function javascript() { + $scripts = array( + 'tarski-js' => get_bloginfo('template_directory') . '/app/js/tarski.js' + ); + + foreach($scripts as $name => $url) { + $javascript[$name] = "<script type=\"text/javascript\" src=\"$url\"></script>"; + } + + $this->javascript = apply_filters('tarski_javascript', $javascript); + } + + /** + * Generate RSS or Atom feed link elements appropriate to the context. + * + * @hook filter tarski_feeds + * Filter the RSS or Atam feed link elements before they're printed to the + * document. + */ + function feeds() { + global $comments; + if(is_single() || (is_page() && ($comments || comments_open()))) { + global $post; + $title = sprintf(__('Commments feed for %s','tarski'), get_the_title()); + $link = get_post_comments_feed_link($post->ID); + $source = 'post_comments'; + } elseif(is_archive()) { + if(is_category()) { + $title = sprintf( __('Category feed for %s','tarski'), single_cat_title('','',false) ); + $link = get_category_feed_link(get_query_var('cat')); + $source = 'category'; + } elseif(is_tag()) { + $title = sprintf( __('Tag feed for %s','tarski'), single_tag_title('','',false)); + $link = get_tag_feed_link(get_query_var('tag_id')); + $source = 'tag'; + } elseif(is_author()) { + $title = sprintf( __('Articles feed for %s','tarski'), the_archive_author_displayname()); + $link = get_author_feed_link(get_query_var('author')); + $source = 'author'; + } elseif(is_date()) { + if(is_day()) { + $title = sprintf( __('Daily archive feed for %s','tarski'), get_the_time(get_option('date_format'))); + $link = get_day_link(get_the_time('Y'), get_the_time('m'), get_the_time('d')); + $source = 'day'; + } elseif(is_month()) { + $title = sprintf( __('Monthly archive feed for %s','tarski'), get_the_time('F Y')); + $link = get_month_link(get_the_time('Y'), get_the_time('m')); + $source = 'month'; + } elseif(is_year()) { + $title = sprintf( __('Yearly archive feed for %s','tarski'), get_the_time('Y')); + $link = get_year_link(get_the_time('Y')); + $source = 'year'; + } + if(get_settings('permalink_structure')) { + $link .= 'feed/'; + } else { + $link .= '&feed=' . get_default_feed(); + } + } + } elseif(is_search()) { + $search_query = attribute_escape(get_search_query()); + $feeds['search'] = generate_feed_link( sprintf(__('Search feed for %s','tarski'), $search_query), get_search_feed_link('', $type), feed_link_type($type) ); + $title = sprintf(__('Search comments feed for %s','tarski'), $search_query); + $link = get_search_comments_feed_link('', $type); + $source = 'search_comments'; + } else { + $title = false; + } + + if($title && $link) + $feeds[$source] = generate_feed_link($title, $link, feed_link_type(get_default_feed())); + + $feeds['site'] = generate_feed_link( sprintf(__('%s feed','tarski'), get_bloginfo('name')), get_feed_link(), feed_link_type(get_default_feed()) ); + + $this->feeds = apply_filters('tarski_feeds', $feeds); + } + + /** + * Print generated HTML to the document. + * + * @hook filter tarski_assets + * A more generalised filter for all assets generated by this class and + * printed by this method. + */ + function output() { + $assets_collapsed = array(); + + foreach ( $this as $asset ) { + $assets_collapsed[] = implode("\n", $asset); + } + + $assets_filtered = apply_filters('tarski_assets', $assets_collapsed); + echo implode("\n\n", $assets_filtered); + } +} + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_tarski/classes/options.php b/wp-content/themes/vanilla/_tarski/classes/options.php new file mode 100644 index 000000000..e191b1280 --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/classes/options.php @@ -0,0 +1,241 @@ +<?php + +/** + * class Options + * + * The Options class handles the retrieval and setting of Tarski's options, + * although an external function, save_tarski_options(), saves updated + * options to the database (via WordPress's API functions). Options can be + * set on the Tarski Options page, which can be found in the WP admin panel: + * Presentation > Tarski Options, or /wp-admin/themes.php?page=tarski-options + * in your WordPress directory. + * @package Tarski + * @since 2.0 + */ +class Options { + + var $installed; + var $deleted; + var $update_notification; + var $sidebar_pp_type; + var $header; + var $display_title; + var $display_tagline; + var $nav_pages; + var $collapsed_pages; + var $home_link_name; + var $nav_extlinkcat; + var $style; + var $asidescategory; + var $centred_theme; + var $swap_sides; + var $tags_everywhere; + var $show_categories; + var $show_authors; + var $use_pages; + + /** + * tarski_options_defaults() - Sets Options object's properties to their default values. + * + * @since 2.0 + */ + function tarski_options_defaults() { + $this->installed = theme_version('current'); + $this->update_notification = true; + $this->sidebar_pp_type = 'main'; + $this->header = 'greytree.jpg'; + $this->display_title = true; + $this->display_tagline = true; + $this->nav_pages = false; + $this->collapsed_pages = ''; + $this->home_link_name = __('Home','tarski'); + $this->nav_extlinkcat = 0; + $this->style = false; + $this->asidescategory = 0; + $this->centred_theme = true; + $this->swap_sides = false; + $this->swap_title_order = false; + $this->tags_everywhere = false; + $this->show_categories = true; + $this->show_authors = true; + $this->use_pages = true; + } + + /** + * tarski_options_get() - Sets Options properties to the values retrieved from the database. + * + * @since 2.0 + */ + function tarski_options_get() { + $saved_options = maybe_unserialize(get_option('tarski_options')); + + if(!empty($saved_options) && is_object($saved_options)) { + foreach($saved_options as $name => $value) { + $this->$name = $value; + } + } + } + + /** + * tarski_options_update() - Sets Options properties to the values set on the Options page. + * + * Note that this function doesn't save anything to the database, that's the + * preserve of save_tarski_options(). + * @since 2.0 + * @see save_tarski_options() + */ + function tarski_options_update() { + if(($_POST['delete_options'] == 1)) { + $this->deleted = time(); + } elseif($_POST['restore_options'] == 1) { + unset($this->deleted); + } else { + if($_POST['update_notification'] == 'off') + $this->update_notification = false; + elseif($_POST['update_notification'] == 'on') + $this->update_notification = true; + + $header = $_POST['header_image']; + if(isset($header)) { + $header = str_replace('-thumb', '', $header); + $this->header = $header; + } + + $nav_pages = $_POST['nav_pages']; + if(isset($nav_pages)) { + $nav_pages = implode(',', $nav_pages); + $this->nav_pages = $nav_pages; + } else { + $this->nav_pages = false; + } + + $collapsed_pages = $_POST['collapsed_pages']; + if(isset($collapsed_pages)) { + $this->collapsed_pages = $collapsed_pages; + } else { + $this->collapsed_pages = ''; + } + + $stylefile = $_POST['alternate_style']; + if(is_valid_tarski_style($stylefile)) + $this->style = $stylefile; + elseif(!$stylefile) + $this->style = false; + + $this->display_title = (bool) $_POST['display_title']; + $this->display_tagline = (bool) $_POST['display_tagline']; + $this->show_categories = (bool) $_POST['show_categories']; + $this->tags_everywhere = (bool) $_POST['tags_everywhere']; + $this->use_pages = (bool) $_POST['use_pages']; + $this->centred_theme = (bool) $_POST['centred_theme']; + $this->swap_sides = (bool) $_POST['swap_sides']; + $this->swap_title_order = (bool) $_POST['swap_title_order']; + $this->asidescategory = $_POST['asides_category']; + $this->nav_extlinkcat = $_POST['nav_extlinkcat']; + $this->home_link_name = $_POST['home_link_name']; + $this->sidebar_pp_type = $_POST['sidebar_pp_type']; + $this->show_authors = tarski_should_show_authors(); + unset($this->deleted); + } + } + +} + +/** + * save_tarski_options() - Saves a new set of Tarski options. + * + * If the Tarski Options page request includes a $_POST call + * and it's been generated by hitting the 'submit' button, this + * function will generate a new Options object, set its properties + * to the existing set of options, and then save the new options + * over the old ones. It then flushes the options so the Options + * page, which executes after this function, will display the new + * values rather than the old ones. + * @see tarskiupdate() which it replaces + * @since 2.0 + */ +function save_tarski_options() { + $tarski_options = new Options; + $tarski_options->tarski_options_get(); + + if(ready_to_delete_options($tarski_options->deleted)) { + delete_option('tarski_options'); + flush_tarski_options(); + return; + } + + tarski_upgrade_and_flush_options(); + + if(isset($_POST['submit'])) { + $tarski_options->tarski_options_update(); + update_option('tarski_options', $tarski_options); + } + + flush_tarski_options(); +} + +/** + * flush_tarski_options() - Flushes Tarski's options for use by the theme. + * + * Creates a new Options object, and gets the current options. If + * no options have been set in the database, it will return the + * defaults. Additionally, if the 'deleted' property has been set + * then the function will check to see if it was set more than two + * hours ago--if it was, the tarski_options database row will be + * dropped. If the 'deleted' property has been set, then the defaults + * will be returned regardless of whether other options are set. + * @since 1.4 + * @global object $tarski_options + * @return object $tarski_options + */ +function flush_tarski_options() { + global $tarski_options; + $tarski_options = new Options; + $tarski_options->tarski_options_get(); + + if(!get_option('tarski_options') || isset($tarski_options->deleted)) + $tarski_options->tarski_options_defaults(); +} + +/** + * update_tarski_option() - Updates the given Tarski option with a new value. + * + * This function can be used either to update a particular option + * with a new value, or to delete that option altogether by setting + * $drop to true. + * @since 1.4 + * @param string $option + * @param string $value + * @param boolean $drop + * @global object $tarski_options + */ +function update_tarski_option($option, $value) { + $tarski_options = new Options; + $tarski_options->tarski_options_get(); + + if(empty($value)) + unset($tarski_options->$option); + else + $tarski_options->$option = $value; + + update_option('tarski_options', $tarski_options); + flush_tarski_options(); +} + +/** + * get_tarski_option() - Returns the given Tarski option. + * + * @since 1.4 + * @param string $name + * @return mixed + */ +function get_tarski_option($name) { + global $tarski_options; + + if(!is_object($tarski_options)) + flush_tarski_options(); + + return $tarski_options->$name; +} + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_tarski/classes/page_select.php b/wp-content/themes/vanilla/_tarski/classes/page_select.php new file mode 100644 index 000000000..3dbf00765 --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/classes/page_select.php @@ -0,0 +1,101 @@ +<?php + +/** + * class WalkerPageSelect + * + * Extends the Walker class for generating HTML for tree-like structures. + * Used to generate a tree of ordered lists of pages, with associated + * form elements to allow for the selection of particular pages. + * @package Tarski + * @since 2.2 + */ +class WalkerPageSelect extends Walker { + + var $tree_type = 'page'; + var $db_fields = array('parent' => 'post_parent', 'id' => 'ID'); + var $selected = array(); + var $collapsed = array(); + + /** + * WalkerPageSelect() - Constructor for the class. + * + * Constructor to allow a list of selected pages to be passed in. + * @since 2.2 + */ + function WalkerPageSelect($selected, $collapsed) { + $this->selected = $selected; + $this->collapsed = $collapsed; + } + + /** + * start_lvl() - Start a level. + * + * Implements the abstract start_lvl() function from the Walker class, + * starting a particular level of the tree by opening an ordered list. + * @since 2.2 + */ + function start_lvl(&$output, $depth) { + $indent = str_repeat("\t", $depth); + $output .= "\n$indent<ol>\n"; + } + + /** + * end_lvl() - End a level. + * + * Implements the abstract end_lvl() function from the Walker class, + * ending a particular level of the tree by closing an ordered list. + * @since 2.2 + */ + function end_lvl(&$output, $depth) { + $indent = str_repeat("\t", $depth); + $output .= "$indent</ol>\n"; + } + + /** + * start_el() - Start an element, and add its content. + * + * Implements the abstract start_el() function from the Walker class, + * starting a particular element of the tree by opening a list item + * and adding its content. + * @since 2.2 + * @hook filter the_title + * Native WordPress filter on post titles. + */ + function start_el(&$output, $page, $depth) { + if ( $depth ) + $indent = str_repeat("\t", $depth); + else + $indent = ''; + + if ( in_array($page->ID, $this->selected) ) + $checked = ' checked="checked"'; + else + $checked = ''; + + if ( in_array($page->ID, $this->collapsed) ) + $coll_class = ' class="collapsed"'; + else + $coll_class = ''; + + $output .= $indent. '<li id="page-list-'. $page->ID. '"'. $coll_class. '>'; + $output .= '<p class="nav-page">'. + '<label for="opt-pages-'. $page->ID. '">'. apply_filters('the_title', $page->post_title). '</label> '. + '<a title="'. __('View this page','tarski'). '" href="'. get_page_link($page->ID). '">→</a> '. + '<input id="opt-pages-'. $page->ID. '" name="nav_pages[]" type="checkbox" value="'. $page->ID. '"'. $checked. ' />'. + '</p>'; + } + + /** + * end_el() - End an element. + * + * Implements the abstract end_el() function from the Walker class, + * ending a particular element of the tree by closing a list item. + * @since 2.2 + */ + function end_el(&$output, $page, $depth) { + $output .= "</li>\n"; + } + +} + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_tarski/classes/version.php b/wp-content/themes/vanilla/_tarski/classes/version.php new file mode 100644 index 000000000..d3f0645cf --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/classes/version.php @@ -0,0 +1,166 @@ +<?php + +/** + * class Version + * + * The Version class is the foundation of Tarski's update notifier. + * A Version object can have several properties: the current theme + * version (i.e. the currently installed version), the latest theme + * version (i.e. the most recently released version, as specified by + * the Tarski version feed {@link http://tarskitheme.com/version.atom}), + * the link to the release post on the Tarski website of the latest + * version, and the version status, i.e. whether the currently + * installed version equal to the latest version, and hence whether + * the theme is in need of updating. + * @package Tarski + * @since 2.0 + */ +class Version { + + /** + * The version number of the currently installed theme. + * @var string + */ + var $current; + + /** + * The version number of the latest Tarski release. + * @var string + */ + var $latest; + + /** + * Link to the latest Tarski release post. + * @var string + */ + var $latest_link; + + /** + * The status of the currently installed version. + * @var string + */ + var $status; + + /** + * current_version_number() - Returns current version number. + * + * @since 2.0 + */ + function current_version_number() { + $themedata = get_theme_data(TEMPLATEPATH . '/style.css'); + $installed_version = trim($themedata['Version']); + if(strlen($installed_version) < 1) { + $this->current = 'unknown'; + } else { + $this->current = $installed_version; + } + } + + /** + * version_feed_data() - Returns latest version feed data. + * + * @link http://tarskitheme.com/version.atom + * @since 2.0 + * @return string $atomdata + */ + function version_feed_data() { + ob_start(); + + // Thanks to Simon Willison for the inspiration + $cachefile = TARSKICACHE . "/version.atom"; + $cachetime = 60 * 60; + + // Serve from the cache if it is younger than $cachetime + if(file_exists($cachefile) && (time() - $cachetime < filemtime($cachefile)) && file_get_contents($cachefile)) { + $atomdata = file_get_contents($cachefile); + } else { + if(function_exists('curl_init')) { // If libcurl is installed, use that + $ch = curl_init(TARSKIVERSIONFILE); + curl_setopt($ch, CURLOPT_FAILONERROR, 1); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_HEADER, 0); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1); + curl_setopt($ch, CURLOPT_TIMEOUT, 1); + $atomdata = curl_exec($ch); + curl_close($ch); + } elseif(ini_get('allow_url_fopen')) { // Otherwise try file_get_contents() + $ctx = stream_context_create(array('http' => array('timeout' => 1.0))); + $atomdata = @file_get_contents(TARSKIVERSIONFILE, false, $ctx); + } + + if(!empty($atomdata) && cache_is_writable("version.atom")) { + $fp = fopen($cachefile, "w"); + if($fp) { + fwrite($fp, $atomdata); + fclose($fp); + } + } + } + + return $atomdata; + $atomdata = ob_get_contents(); + ob_end_clean(); + + return $atomdata; + } + + /** + * latest_version_number() - Returns latest version number. + * + * @since 2.0 + * @return string + */ + function latest_version_number() { + if(preg_match('/<entry>.*?<title>(.+?)<\/title>.*?<\/entry>/is', Version::version_feed_data(), $matches)) { + $this->latest = wp_specialchars($matches[1]); + } + } + + /** + * latest_version_link() - Returns link to latest version release post. + * + * The link should be the release post on the Tarski website + * for the latest version of Tarski, which will include a link + * to download the .zip file of that latest version. + * @since 2.0 + * @return string + */ + function latest_version_link() { + if(preg_match('/<entry>.*?<id>(.+?)<\/id>.*?<\/entry>/is', Version::version_feed_data(), $matches)) { + $this->latest_link = wp_specialchars($matches[1]); + } + } + + /** + * version_status() - Returns the status of the current version. + * + * This lets Tarski know whether there is a connection to the version + * feed {@link http://tarskitheme.com/version.atom} and if so, whether + * the current version is equal to the latest version. + * @since 2.0 + * @return string + */ + function version_status() { + $this->current_version_number(); + $this->latest_version_number(); + + $status = version_compare($this->latest, $this->current); + + if ($this->latest) { + if ($status === 0) { + $this->status = 'current'; + } elseif ($status === 1) { + $this->status = 'older'; + } elseif ($status === -1) { + $this->status = 'newer'; + } else { + $this->status = 'error'; + } + } else { + $this->status = 'no_connection'; + } + } + +} + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_tarski/core.php b/wp-content/themes/vanilla/_tarski/core.php new file mode 100644 index 000000000..c06bc5071 --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/core.php @@ -0,0 +1,68 @@ +<?php + +/** + * check_input() - Checks input is of correct type + * + * Always returns true when WP_DEBUG is true, to allow for easier debugging + * in the development environment while handling erroneous input more + * robustly in the production environment. + * @see http://uk3.php.net/manual/en/function.gettype.php + * @since 2.1 + * @param mixed $input + * @param string $type + * @param string $name + * @return boolean + * + */ +function check_input($input, $type, $name = '') { + if ( WP_DEBUG === true ) + return true; + + if ( $type == 'object' && strlen($name) > 0 ) + return is_a($input, $name); + else + return call_user_func("is_$type", $input); +} + +/** + * theme_version() - Returns the current theme version. + * + * @since 2.0 + * @return string + */ +function theme_version() { + $themedata = get_theme_data(TEMPLATEPATH . '/style.css'); + $version = trim($themedata['Version']); + + if (strlen($version) > 0) + return $version; +} + +/** + * detectWPMU() - Detects whether WordPress Multi-User is in use. + * + * @since 1.4 + * @return boolean + */ +function detectWPMU() { + return function_exists('is_site_admin'); +} + +/** + * is_valid_tarski_style() - Checks whether a given file name is a valid Tarski stylesheet name. + * + * It must be a valid CSS identifier, followed by the .css file extension, + * and it cannot have a name that is already taken by Tarski's CSS namepsace. + * @since 2.0 + * @param string $file + * @return boolean + */ +function is_valid_tarski_style($file) { + return (bool) ( + !preg_match('/^\.+$/', $file) + && preg_match('/^[A-Za-z][A-Za-z0-9\-]*.css$/', $file) + && !preg_match('/^(janus|centre|rtl|js).css$/', $file) + ); +} + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_tarski/css/admin.css b/wp-content/themes/vanilla/_tarski/css/admin.css new file mode 100644 index 000000000..fe722a0b1 --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/css/admin.css @@ -0,0 +1,10 @@ +/** + * Tarski stylesheet for WordPress admin pages + * + * Styles the few cross-admin-page elements Tarski has, like messages. + */ + +/** + * Messages + */ +.tarski-message { max-width:958px; margin: 0 15px 1em 15px; border: 1px solid #c6d9e9; padding: 10px; background: #eaf3fa; } diff --git a/wp-content/themes/vanilla/_tarski/css/options.css b/wp-content/themes/vanilla/_tarski/css/options.css new file mode 100644 index 000000000..e9bc68f5f --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/css/options.css @@ -0,0 +1,92 @@ +/** + * Tarski options page + * + * Tarski's options page lets users change the way Tarski looks and behaves. + * As a fairly involved form-based page with a non-standard layout, a certain + * amount of CSS is needed to keep things in order. + */ + +/** + * Overall page styling + * + * Broad-brush stuff, setting the stage for the form elements. Makes the page + * background grey, puts the page title in its place, and sorts out other + * header and footer elements. + */ +#tarski-options {} +#tarski-options-header { clear: both; margin: 0.4em 0 0.8em 0; border-bottom: 1px solid #dadada; padding: 0.4em; } +#tarski-options-header h2 { float: left; margin: 0 0.8em 0 0; border: none; padding: 0; } +#tarski-save-options, #tarski-info { display: block; padding: 0; } +#tarski-save-options { float: left; margin: 0; } +#tarski-info { float: right; margin: 0.8em 0 0 0; } +.rtl { text-align: right; direction: rtl; } + +/** + * Positioning + * + * The 'span' class is for elements which span the entire page width, while + * the 'primary' and 'secondary' classes are for blocks which are floated to + * left and right respectively, clearing only those above them and thus + * allowing for fairly flexible layouts. + */ +.span { clear: both; } +.clearer { display: block; clear: both; height: 0; visibility: hidden; } +.primary, .secondary { width: 49.5%; } +.primary, .rtl .secondary { float: left; clear: left; } +.secondary, .rtl .primary { float: right; clear: right; } + +/** + * Form sections and elements + * + * Form layouts are a dark art, and these rules let us specify a bit more + * precisely than the WordPress defaults do how things should appear. + */ +.section label, .section select, #opt-nav-homename { display: block; margin: 0.8em 0; } +.section { margin: 0 0 0.8em 0; padding: 0.8em 0.8em 0.4em 0.8em; background: #eaf3fa; position: relative; *zoom: 1; } +.section h3, .section p { margin: 0 0 0.8em 0; } +.tip { margin: 0.8em 0; border: 1px solid #c6d9e9; border-left-width: 3px; padding: 0.4em; background: #f7fafd; } +#tarski-options .highlight { background: none; color: #d54e21; } +#tarski-options .tip p:last-child { margin-bottom: 0; } +#tarski-headers label { display: inline; } +#tarski-headers label img { background: #fff; margin: 5px; font-weight: bold; } + +/** + * Navbar selection node tree + * + * The navbar selection tool is an ordered list of pages, whose list elements + * may also contain child lists of sub-pages. + */ +#navbar-select { clear: both; margin: 0 0 1em 0; padding: 0; } +#navbar-select ol { margin: 0; padding: 0; } +#navbar-select li { margin: 0; padding: 0; list-style-type: none; } +#navbar-select li ol li { padding-left: 1.5em; } +#navbar-select .nav-page { position: relative; margin: 0 0 0.5em 0; padding: 4px 20px 3px 5px; background-color: #cedeeb; background-repeat:no-repeat; background-position: 5px 6px; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } +#navbar-select .nav-page a { text-decoration: none; } +#navbar-select.js .nav-page { padding-left: 28px; background-image: url('../../images/page_select.png'); } +#navbar-select .nav-page label { display: inline; margin: 0 0 0.7em 0; } +#navbar-select .nav-page input { display: block; position: absolute; top: 4px; right: 5px; width: 1em; height: 1em; } +#navbar-select .nav-page .toggle { display: block; position: absolute; top: 0; left: 0; width: 23px; height: 23px; background: url('../../images/page_select.png') no-repeat 5px -194px; text-indent: -9999em; cursor: pointer; } +#navbar-select.js .collapsed .nav-page .collapsed-toggle { background-position: 5px -94px; } +#navbar-select.js li.collapsed ol { display: none; } +/* Some hacks to work around Internet Explorer bugs */ +#navbar-select, #navbar-select ol, #navbar-select li, #navbar-select .nav-page, #navbar-select .nav-page input { *zoom: 1; } +#navbar-select .nav-page input { _top: 5px; } + +/** + * Checkboxes and radio buttons + * + * The Tarski options page uses JavaScript to allow the styling of input + * elements. It's mainly used to create clickable header image thumbnails + * and consequently the styling rules here are fairly minimal, but all the + * important classes are listed for possible future reference. + */ +label.checkbox_checked {} +label.checkbox_unchecked {} +label.radio_checked {} +label.radio_checked img { border: 2px solid #d54e21; padding: 3px; } +label.radio_unchecked {} +label.radio_unchecked img { border: 1px solid #8ebfd5; padding: 4px; } +label.radio_unchecked:hover {} +label.radio_unchecked:hover img { border: 1px solid #d54e21; padding: 4px; } +label.highlighted { border: 1px solid #333; } +.crirHidden { position: absolute; left: -9999em; } \ No newline at end of file diff --git a/wp-content/themes/vanilla/_tarski/css/print.css b/wp-content/themes/vanilla/_tarski/css/print.css new file mode 100644 index 000000000..83fef4e84 --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/css/print.css @@ -0,0 +1,38 @@ +/* +Tarski print stylesheet +*/ + +#header-image, #navigation, #sidebar, #footer { display: none; } + +body { border: none; padding: 0; text-align: left; font-size: 10pt; line-height: normal; font-family: Verdana, sans-serif; color: #000; background: #fff; } + body.rtl { text-align: right; direction: rtl; } + +#blog-title { font-size: 18pt; font-weight: bold; margin: 1em 0 0.5em 0; } + #blog-title a:link, #blog-title a:visited, #blog-title a:hover, #blog-title a:active { color: #000; text-decoration: none; } + + + h1, h2, h4 { font-family: "Times New Roman", Times, serif; } + h1 { font-size: 24pt; font-weight: normal; margin: 1em 0; } + h2 { font-size: 18pt; font-weight: normal; margin: 0.5em 0; } + h3 { font-size: 10pt; font-weight: normal; text-transform: uppercase; margin: 0 0 1em 0; border-bottom: 1px dotted #000; padding: 0 0 0.2em 0; } + h4 { font-size: 12px; font-weight: normal; margin: 0 0 0.5em 0; } + + body .entry { margin: 0 0 2em 0; } + body .entry .meta { margin: 0 0 1em 0; } + body .entry .meta .title { margin: 0 0 0.1em 0; } + body .entry .meta .metadata { margin: 0; font-size: 9pt; } + + ul, ol { margin: 0 0 1em 0; } + ul { list-style: circle; } + + p { margin: 0 0 1em 0; } + blockquote { margin: 0 2em 1em 2em; } + strong { font-weight: bold; } + em { font-style: italic; } + cite { font-style: italic; } + code { font-family: Courier, "Courier New", monospace; } + +a img { border: none; } + +a:link, a:visited, a:hover, a:active { color: #000; text-decoration: underline; } + body .content a[href]:after { font-size: 9pt; content: " (" attr(href) ") "; } \ No newline at end of file diff --git a/wp-content/themes/vanilla/_tarski/css/screen.css b/wp-content/themes/vanilla/_tarski/css/screen.css new file mode 100644 index 000000000..1beac9dc3 --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/css/screen.css @@ -0,0 +1,30 @@ +/* +Tarski screen stylesheet +*/ + +/* Main structure +----------------------------------------------- */ +body { min-width: 760px; } +#wrapper { width: 760px; } + +/* Positioning +----------------------------------------------- */ +body .primary { width: 500px; float: right; } + body.janus .primary { float: left; } +body .primary-span { padding-left: 220px; clear: both; } + body.janus .primary-span { padding-left: 0; padding-right: 220px; } + +body .secondary { width: 200px; float: left; } + body.janus .secondary { float: right; } +body .secondary-span { padding-left: 520px; clear: both; } + body.janus .secondary-span { padding-right: 520px; } + +body { text-align: left; } +body.centre { text-align: center; } +body #wrapper { margin: 0 auto 0 0; } +body.centre #wrapper { margin: 0 auto; } + +/* Comment form +--------------------------------------- */ +body #author, body #email, body #url { width: 194px; } +body #comment-input textarea { width: 494px; } \ No newline at end of file diff --git a/wp-content/themes/vanilla/_tarski/display/credits.php b/wp-content/themes/vanilla/_tarski/display/credits.php new file mode 100644 index 000000000..4b664fe32 --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/display/credits.php @@ -0,0 +1,6 @@ +<div class="primary content"> + <p><?php _e('Powered by <a href="http://wordpress.org/">WordPress</a> and <a href="http://tarskitheme.com/">Tarski</a>', 'tarski'); + if(detectWPMU()) { + echo ' | '. sprintf( __('Hosted by %s','tarski'), '<a href="http://'. $current_site->domain. $current_site->path. '">'. $current_site->site_name. '</a>' ); + } ?></p> +</div> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_tarski/display/debug.php b/wp-content/themes/vanilla/_tarski/display/debug.php new file mode 100644 index 000000000..57f68a648 --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/display/debug.php @@ -0,0 +1,12 @@ +<?php global $tarski_options; ?> +<div class="tarski-debug"> + <h4>$_POST</h4> + <pre> + <?php print_r($_POST); ?> + </pre> + + <h4>$tarski_options</h4> + <pre> + <?php print_r($tarski_options); ?> + </pre> +</div> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_tarski/display/feed_link.php b/wp-content/themes/vanilla/_tarski/display/feed_link.php new file mode 100644 index 000000000..b686501c1 --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/display/feed_link.php @@ -0,0 +1,3 @@ +<div class="secondary"> + <p><a class="feed" href="<?php bloginfo(get_default_feed() . '_url'); ?>"><?php _e('Subscribe to feed','tarski'); ?></a></p> +</div> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_tarski/display/no_posts.php b/wp-content/themes/vanilla/_tarski/display/no_posts.php new file mode 100644 index 000000000..02fb6a455 --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/display/no_posts.php @@ -0,0 +1,11 @@ +<div class="entry"> + + <div class="meta"> + <h1 class="title"><?php _e('Sorry','tarski'); ?></h1> + </div> + + <div class="content"> + <p><?php _e('Looks like there᾿s nothing here, sorry. You might want to try the search function. Alternatively, return to the ','tarski'); ?><a href="<?php echo get_bloginfo('url'); ?>/"><?php _e('front page','tarski'); ?></a><?php _e('.','tarski'); ?></p> + </div> + +</div> <!-- /entry --> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_tarski/display/options_page.php b/wp-content/themes/vanilla/_tarski/display/options_page.php new file mode 100644 index 000000000..e8669f28d --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/display/options_page.php @@ -0,0 +1,292 @@ +<div id="tarski-options" class="wrap tarski-options<?php if(get_bloginfo("text_direction") == "rtl") { echo " rtl"; } ?>"> + + <?php if(isset($_POST['submit']) && !get_tarski_option('deleted')) { ?> + <div id="updated" class="updated fade"> + <?php if(isset($_POST['restore_options'])) { ?> + <p><?php echo __('Tarski options have been restored.','tarski') . ' <a href="' . get_bloginfo('url') . '/">' . __('View site »','tarski') . '</a>'; ?></p> + <?php } else { ?> + <p><?php echo __('Tarski options have been updated.','tarski') . ' <a href="' . get_bloginfo('url') . '/">' . __('View site »','tarski') . '</a>'; ?></p> + <?php } ?> + </div> + <?php } ?> + + <?php if(get_tarski_option('deleted')) { ?> + <div class="updated fade"> + <form name="dofollow" action="<?php echo $tarski_options_link; ?>" method="post"> + <?php wp_nonce_field('update-options'); ?> + <input type="hidden" name="restore_options" value="1" /> + <p><?php _e('You have deleted your Tarski options.','tarski'); ?> <input class="button" type="submit" name="submit" value="<?php _e('Restore Tarski Options »','tarski'); ?>" /></p> + </form> + </div> + <?php } ?> + +<form name="dofollow" action="<?php echo $tarski_options_link; ?>" method="post"> + + <div id="tarski-options-header"> + <h2><?php _e('Tarski Options', 'tarski'); ?></h2> + <p id="tarski-save-options"> + <input type="submit" class="button-secondary" name="submit" value="<?php _e('Save Options','tarski'); ?>" /> + <input type="hidden" name="page_options" value="'dofollow_timeout'" /> + </p> + + <p id="tarski-info"> + <a href="http://tarskitheme.com/help/"><?php _e('Tarski documentation','tarski'); ?></a> + | <a href="http://tarskitheme.com/credits/"><?php _e('Credits & Thanks','tarski'); ?></a> + | <a href="http://tarskitheme.com/forum/"><?php _e('Forum','tarski'); ?></a> + </p> + + <div class="clearer"></div> + </div> + + <div id="tarski-update-notifier" class="secondary"><div class="section"> + <?php if ( (!detectWPMU() || detectWPMUadmin()) ) { ?> + <?php if(can_get_remote()) { ?> + <h3><?php _e('Update Notification','tarski'); ?></h3> + <?php if(get_tarski_option('update_notification')) { ?> + <p><?php _e('Tarski is set to notify you when an update is available.','tarski'); ?></p> + <?php } else { ?> + <p><?php _e('Tarski can be set to notify you when updates are available.','tarski'); ?></p> + <?php } ?> + <label for="update-on"><input type="radio" id="update-on" name="update_notification" value ="on" <?php if(get_tarski_option('update_notification')) { echo 'checked="checked" '; } ?>/> <?php _e('Update notification on (recommended)','tarski'); ?></label> + <label for="update-off"><input type="radio" id="update-off" name="update_notification" value ="off" <?php if(!get_tarski_option('update_notification')) { echo 'checked="checked" '; } ?>/> <?php _e('Update notification off','tarski'); ?></label> + <?php if(!cache_is_writable('version.atom') && get_tarski_option('update_notification')) { ?> + <p class="tip"><?php printf( __('The version check could not be cached. To enable caching, follow the tutorial on the %s page.','tarski'), '<a href="http://tarskitheme.com/help/updates/notifier/">' . __('update notifier','tarski') . '</a>' ); ?></p> + <?php } ?> + <?php } else { ?> + <h3><?php _e('Update Notification','tarski'); ?></h3> + <p><?php printf( + __('Your server appears to have %1$s disabled and %2$s not installed. This means that the update notifier will not work.','tarski'), + '<a href="http://uk.php.net/manual/en/ref.filesystem.php"><code>allow_url_fopen</code></a>', + '<a href="http://uk.php.net/manual/en/ref.curl.php"><code>libcurl</code></a>' + ); ?></p> + <p><?php printf( + __('You can read our %1$s on how to fix your server setup, but if you are unable to change it we recommend subscribing to either the %2$s or the %3$s in your feed reader, so that you can be alerted when new Tarski versions become available.','tarski'), + '<a href="http://tarskitheme.com/help/updates/notifier/">' . __('documentation','tarski') . '</a>', + '<a href="' . TARSKIVERSIONFILE . '">' . __('Tarski version feed','tarski') . '</a>', + '<a href="http://tarskitheme.com/feed/">' . __('Tarski website feed','tarski') . '</a>' + ); ?></p> + <?php } } ?> + </div></div> + + <div class="primary"><div class="section"> + <h3><?php _e('Navigation Display','tarski'); ?></h3> + <?php + + $pages = &get_pages('sort_column=post_parent,menu_order'); + + if($pages) { + echo '<p>'. __('Pages selected here will display in your navbar.','tarski'). "</p>\n"; + echo tarski_navbar_select($pages); + echo '<input type="hidden" id="opt-collapsed-pages" name="collapsed_pages" value="' . get_tarski_option('collapsed_pages') . '" />' . "\n\n"; + echo '<p class="tip">' . __('To change the order in which they appear, edit the ‘Page Order’ value on each page.','tarski') . "</p>\n"; + + } else { + echo '<p>' . __('There are no pages to select navbar items from.','tarski') . "</p>\n"; + } ?> + + <h3><?php _e('Navigation Options','tarski'); ?></h3> + + <?php $categories = &get_categories('type=link&hide_empty=0'); ?> + <label for="opt-nav-extlinkcat"><?php _e('Add external links to the navbar.','tarski'); ?></label> + <select name="nav_extlinkcat" id="opt-nav-extlinkcat" size="1"> + <option value="0"><?php _e('No external links','tarski'); ?></option> + <?php foreach($categories as $link_cat) { ?> + <?php if(get_tarski_option('nav_extlinkcat') == $link_cat->cat_ID) { + $status = ' selected="selected"'; + } else { + $status = false; + } + printf( + '<option'. '%1$s'. ' value="%2$s">%3$s</option>', + $status, + $link_cat->cat_ID, + $link_cat->cat_name + ); ?> + <?php } ?> + </select> + <p class="tip"><?php printf( __('You can add or edit links on the %s page. We recommend creating a link category specifically for the links you want displayed in your navbar, but you can use any category.','tarski'), '<a href="'. admin_url('link-manager.php') . '">'. __('Manage Links','tarski'). '</a>' ); ?></p> + + <label for="opt-nav-homename"><?php _e('Rename your ‘Home’ link.','tarski'); ?></label> + <input type="hidden" name="home_link_name" value="Home" /> + <input type="text" id="opt-nav-homename" name="home_link_name" value="<?php if(get_tarski_option('home_link_name')) { echo get_tarski_option('home_link_name'); } else { _e('Home','tarski'); } ?>" /> + <p class="tip"><?php _e('This link is not displayed when you have a static front page.','tarski'); ?></p> + </div></div> + + <div class="secondary"> + <div class="section"> + <h3><?php _e('Alternate Style','tarski'); ?></h3> + <?php + $style_dir = dir(TEMPLATEPATH . '/styles'); + if($style_dir) { + while(($file = $style_dir->read()) !== false) { + if(is_valid_tarski_style($file)) { + $styles[] = $file; + } + } + } + if($style_dir && $styles) { ?> + <select name="alternate_style" id="alternate_style" size="1"> + <option<?php if(!get_tarski_option('style')) { echo ' selected="selected"'; } ?> value=""><?php _e('Default style','tarski'); ?></option> + <?php foreach($styles as $style) { + if(get_tarski_option('style') == $style) { + $status = ' selected="selected"'; + } else { + $status = false; + } + printf( + '<option%1$s value="%2$s">%3$s</option>'."\n", + $status, + $style, + $style + ); + } ?> + </select> + <?php } ?> + + <?php if(detectWPMU()) { // WPMU users ?> + <p><?php _e('Tarski allows you to select an alternate style that modifies the default one. Choose from the list above.','tarski'); ?></p> + <?php } else { // non-WPMU users ?> + <p><?php printf( __('Tarski allows you to select an %1$s that modifies the default one. Choose from the list above, or upload your own to %2$s.','tarski'), '<a href="http://tarskitheme.com/help/styles/">'. __('alternate style','tarski'). '</a>', '<code>wp-content/themes/' . get_template() . '/styles/</code>' ); ?></p> + <?php } ?> + </div> + + <div class="section"> + <h3><?php _e('Asides Category','tarski'); ?></h3> + <select name="asides_category" id="asides_category"> + <option <?php if(!get_tarski_option('asidescategory')) { echo 'selected="selected" '; } ?>value="0"><?php _e('Disable asides','tarski'); ?></option> + <?php $asides_cats = &get_categories('hide_empty=0'); + if($asides_cats) { + foreach ($asides_cats as $cat) { + if(($cat->cat_ID) == get_tarski_option('asidescategory')) { + $status = 'selected ="selected" '; + } else { + $status = false; + } + echo '<option '. $status. 'value="'. $cat->cat_ID. '">'. $cat->cat_name. '</option>'; + } + } ?> + </select> + <p><?php echo __('This option will make Tarski display posts from the selected category in the ','tarski') . '<a href="http://photomatt.net/2004/05/19/asides/">' . __('Asides','tarski') . '</a>' . __(' format. Asides are short posts, usually only a single paragraph, and Tarski displays them in a condensed format without titles.','tarski'); ?></p> + </div> + + <div class="section"> + <h3><?php _e('Sidebar','tarski'); ?></h3> + + <p><?php _e('The sidebar for posts and pages can be the same as that for index pages, or use its own set of widgets.','tarski'); ?></p> + + <label for="sidebar-pp-type"> + <input type="hidden" name="sidebar_pp_type" value="0" /> + <input type="checkbox" id="sidebar-pp-type" name="sidebar_pp_type" value="main" <?php if(get_tarski_option('sidebar_pp_type') == 'main') { echo 'checked="checked" '; } ?>/> + <?php _e('Same content as main sidebar?','tarski'); ?> + </label> + </div> + </div> + + <div class="span"><div class="section"> + <h3><?php _e('Header Images', 'tarski'); ?></h3> + + <div id="tarski-headers"> + <?php + $name = get_tarski_option('header'); + if ( $header_dir = dir(TEMPLATEPATH . '/headers' ) ) { + while(($file = $header_dir->read()) !== false) { + if(!preg_match('|^\.+$|', $file) && preg_match('@\-thumb.(jpg|png|gif)$@', $file)) { + $header_images[] = $file; + } + } + if ($header_dir || $header_images) { + $count = 0; + foreach($header_images as $header_image) { + $count++; + $header_name = str_replace('-thumb', '', $header_image); ?> + <label for="header_<?php echo $header_name; ?>"><img class="header_image" alt="<?php echo $header_name; ?>" src="<?php echo get_bloginfo('template_directory') . '/headers/' . $header_image; ?>" /></label> + <input id="header_<?php echo $header_name; ?>" name="header_image" class="crirHiddenJS" value="<?php echo $header_name; ?>" type="radio"<?php if(get_tarski_option('header') == $header_name) { echo ' checked="checked"'; } ?> /> + <?php } + } + } ?> + </div> + + <p><?php printf( __('Choose a header image by clicking on it. The current image is the %s one.','tarski'), '<span class="highlight">' . __('highlighted','tarski') . '</span>' ); ?></p> + <?php if(!detectWPMU()) { ?> + <div class="tip"> + <p><?php printf( __('You can upload your own header images (.gif, .jpg or .png) to %s.','tarski'), '<code>wp-content/themes/' . get_template() . '/headers/</code>' ); ?></p> + <p><?php printf( __('Make sure that you upload a thumbnail file as well. If your image is named %1$s, the corresponding thumbnail file should be named %2$s.','tarski'), '<code>'. __('example','tarski'). '.jpg</code>', '<code>'. __('example','tarski'). '-thumb.jpg</code>'); ?></p> + </div> + <?php } ?> + </div></div> + + <div class="primary"><div id="tarski-miscellaneous-options" class="section"> + <h3><?php _e('Miscellaneous Options','tarski'); ?></h3> + + <label for="opt-misc-title"> + <input type="hidden" name="display_title" value="0" /> + <input type="checkbox" id="opt-misc-title" name="display_title" value="1" <?php if(get_tarski_option('display_title')) { echo 'checked="checked" '; } ?>/> + <?php _e('Display site title','tarski'); ?> + </label> + + <label for="opt-misc-tagline"> + <input type="hidden" name="display_tagline" value="0" /> + <input type="checkbox" id="opt-misc-tagline" name="display_tagline" value="1" <?php if(get_tarski_option('display_tagline')) { echo 'checked="checked" '; } ?>/> + <?php _e('Display site tagline','tarski'); ?> + </label> + + <?php if(!get_bloginfo('description')) { ?> + <p class="tip"><?php echo __('Your tagline is currently ','tarski'). '<a href="'. admin_url('options-general.php') . '">'. __('blank','tarski'). '</a>'. __(' and won’t be displayed.') ?></p> + <?php } ?> + + <label for="opt-misc-cats"> + <input type="hidden" name="show_categories" value="0" /> + <input type="checkbox" id="opt-misc-cats" name="show_categories" value="1" <?php if(get_tarski_option('show_categories')) { echo 'checked="checked" '; } ?>/> + <?php _e('Show post categories','tarski'); ?> + </label> + + <label for="opt-misc-tags"> + <input type="hidden" name="tags_everywhere" value="0" /> + <input type="checkbox" id="opt-misc-tags" name="tags_everywhere" value="1" <?php if(get_tarski_option('tags_everywhere')) { echo 'checked="checked" '; } ?>/> + <?php _e('Show tags everywhere','tarski'); ?> + </label> + + <label for="opt-misc-pagination"> + <input type="hidden" name="use_pages" value="0" /> + <input type="checkbox" id="opt-misc-pagination" name="use_pages" value="1" <?php if(get_tarski_option('use_pages')) { echo 'checked="checked" '; } ?>/> + <?php _e('Paginate index pages (such as the front page or monthly archives)','tarski'); ?> + </label> + + <label for="opt-misc-centre"> + <input type="hidden" name="centred_theme" value="0" /> + <input type="checkbox" id="opt-misc-centre" name="centred_theme" value="1" <?php if(get_tarski_option('centred_theme')) { echo 'checked="checked" '; } ?>/> + <?php _e('Centre the theme','tarski'); ?> + </label> + + <label for="opt-misc-janus"> + <input type="hidden" name="swap_sides" value="0" /> + <input type="checkbox" id="opt-misc-janus" name="swap_sides" value="1" <?php if(get_tarski_option('swap_sides')) { echo 'checked="checked" '; } ?>/> + <?php _e('Switch the column positions (left becomes right, and vice versa)','tarski'); ?> + </label> + + <label for="opt-misc-titleswap"> + <input type="hidden" name="swap_title_order" value="0" /> + <input type="checkbox" id="opt-misc-titleswap" name="swap_title_order" value="1" <?php if(get_tarski_option('swap_title_order')) { echo 'checked="checked" '; } ?>/> + <?php _e('Reverse document title order (show site name last)','tarski'); ?> + </label> + </div></div> + +</form> + + <?php if(get_option('tarski_options') && !get_tarski_option('deleted')) { ?> + <div class="secondary"> + <div class="section"> + <h3><?php _e('Reset Options', 'tarski'); ?></h3> + <form action="<?php echo $tarski_options_link; ?>" method="post"> + <p><input class="button-secondary" type="submit" name="submit" value="<?php _e('Reset Tarski’s options to their default values','tarski'); ?>" /></p> + <?php wp_nonce_field('update-options'); ?> + <input type="hidden" name="delete_options" value="1" /> + </form> + <p class="tip"><?php _e('If you change your mind, you’ll have three hours to restore your options before they’re removed for good.','tarski'); ?></p> + </div> + </div> + <?php } ?> + + + <div class="clearer"></div> +</div> diff --git a/wp-content/themes/vanilla/_tarski/functions.php b/wp-content/themes/vanilla/_tarski/functions.php new file mode 100644 index 000000000..c7b35f632 --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/functions.php @@ -0,0 +1,37 @@ +<?php + +// Path constants +define('TARSKICLASSES', TEMPLATEPATH . '/library/classes'); +define('TARSKIHELPERS', TEMPLATEPATH . '/library/helpers'); +define('TARSKIDISPLAY', TEMPLATEPATH . '/app/display'); +define('TARSKICACHE', TEMPLATEPATH . '/app/cache'); +define('TARSKIVERSIONFILE', 'http://tarskitheme.com/version.atom'); + +// Core library files +require_once(TEMPLATEPATH . '/library/core.php'); +require_once(TARSKICLASSES . '/options.php'); +require_once(TARSKICLASSES . '/asset.php'); + +// Admin library files +if (is_admin()) { + require_once(TARSKICLASSES . '/version.php'); + require_once(TARSKICLASSES . '/page_select.php'); + require_once(TARSKIHELPERS . '/admin_helper.php'); +} + +// Various helper libraries +require_once(TARSKIHELPERS . '/template_helper.php'); +require_once(TARSKIHELPERS . '/content_helper.php'); +require_once(TARSKIHELPERS . '/author_helper.php'); +require_once(TARSKIHELPERS . '/tag_helper.php'); +require_once(TARSKIHELPERS . '/widgets.php'); + +// API files +require_once(TEMPLATEPATH . '/app/api/hooks.php'); +require_once(TEMPLATEPATH . '/app/api/constants_helper.php'); +include_once(TEMPLATEPATH . '/app/api/deprecated.php'); + +// Launch +require_once(TEMPLATEPATH . '/app/launcher.php'); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_tarski/headers/blank-thumb.gif b/wp-content/themes/vanilla/_tarski/headers/blank-thumb.gif new file mode 100644 index 0000000000000000000000000000000000000000..a5a96bc9d5a69f85c01c39593064975a5105f0af GIT binary patch literal 1316 zcmZ?wbhEHboW?MXVKW26|NsA=K7IQ6^XE5j-u(FS<L}?UuU@_S_3PJ*7cbtwfB)yt zpXbk?fBW|B>({RzKYo1o?w#UK76uT|0TCcG7+C%robX(|*W&fr-Txo3_oQUb%UHE8 z=k>mVJ6=V(_bb*d|MKqtfdy;Sb)@>Om5NU0EShp|#TJgaQR}yBm7R{w-2LE#xzDk_ z(=T3Fo^@My`@;ikzw2jT|F~s)zWnX)1{=o47PI=+*7lCZuI}32zRC#`OD9h$oHjjo z=B&&)b5rLpNNQd@Wzn*j6)V%0uIX64K6vA%taV!(w(RiPwL5S7zKXpELk=97aqRf) zlc(mLIlJ)ug(a6yTrD_!-Qwo0wo7-z?>sPk^jQC?3Kz@kH*dH!-nzef{r*Z2lN2`- ztE!0m4<VKbj^<1Y*qHyg{V+}nSg==v&D4Tr!v>GTjrUtza>PF}c6LeqSND12B;ep8 z%%;Zk!{Q(dBO`N?oj}0)1q_V53>pFx64DMeDS6)6GqX7Cn1Z^u!i<0^Nv8!_*<vCt zgrqjJiipVwNQpQ!adNDk(qkc_cB9Up(c^4DK2sPs+YYubueL3lvQb*#M(m1&rZ@&x zIfGCS#m0uE!mmtCR&2dGr9(nW_+8)uSx)v?O$(h5W(<rAgo3;#$h^}K*yJo*;&wpj zRO4)Bf%BzW51&V!U!biLkowC#NQgzlV8)xS#vE=w$9w;BgqS~H>UR|K|7Wt}J`1nG z`7pai%ar~0y>9;2hkkuq9<Tc5oNw&OPj}e(GRkWFi(j2%+;&OtYhB9=hPQVw-T&_@ z_)<NtR_2K79gdf*2@K3E9MdE#nb|@ca=7F;0-H>AQ{>nfrv*IB;W@K>q452mUmb$E z`x53vGtF48P%cz)eQK15#0wWs2N{Qk*ts7v`V^e)LY{~@$#qVfw8yYBCExE9W9k%p zm6uDV`n<ZtH^FY*;$-1iAptq*T{Aom<!XCgls5~WSNxbG!*Am=Bexlx%e{)q+}&s9 zKhkiV6?n!oZFb!k$>p3p76Ox*56=x?@HgZ=puxp+KxFa!9aAT~Sk%j8K830OSP9Gg z&2u}|IobcPPwNYhH8|iO82aHr{rRO_(;L|gKipr@a_&L+62nrq7mPnrr(S3mTjM^R z?Tnyw<bNl&m8Y`j$}(u(wqwl@KTySMl_HmI75IUHnOElcovo}X)(5L5C>l7lIZfE* zI7@Yv`XiP<EuKz{+>$IA@m1G$zumjl^m@ACm7)o0&27A;(aTvwW*x}2^^jobes36a z?JyfV!wY>*=8QuNMVdJxn#J!#CUf%Eg?(aWiap}JUgt(<=B(|K3_2Su18o`@KG~W+ zueN+Ilj&!qulU}>{Q0p(oDA#^QTv507EGDPW}EADNkKe#)hW4tfi2DUno_~3%b64k zG@p51V_==%D|?M2ZT~I9%U9aYd|5a{=|Ka-|Ft5f4J=z`O<Tn#GyP?59dn)5^~+Vd zMh6p}muj&V?~h@;xaz3Y3iX8P&8%+^a(M46zr`xse!%YcBAWw@GW`o0j&g+js(dA~ z=AZDB%H@GK`!)akJH(jG=Fcw?p*8c*#M9z8|4cYPTllZV<>ug8^Xu7@|C-(ozx>za zzO!(h@nh}ae}>P6C)XLg{(b46-uuTw^}3%=2mROnzIjr;*6-Pu{%ibac4cUGG1f|5 z*uZv$nMv5AkJadcFaMp1%*qj)IfDXNnXkC8>2Ew39Py#a|AzvH?}dXNQ!WUq$GC7M fDjpKtbfk4}^TH`k4u_>~eQ2{dlgOsTz+epkd74~) literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/_tarski/headers/blank.gif b/wp-content/themes/vanilla/_tarski/headers/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..86e79b017acfd9df836a950afe0e9bd0a47c27ee GIT binary patch literal 185 zcmZ?wbhEHbyuc*F(7?d(|Nnmm1_s5SEQ|~c3=BFT0wlx0G@+$`<>|Nli|1^))xG)N zp5Od!k36P5>s<Eg)V6or$3OX8|JM8b*SYWi_<6Y6k1YDw;iEPE%(Bm%y<W?&toqt@ zHf#Hxb>F%9x{p8E^s~or_4PN~e)IO9e*R_G-@fy&zyI0ypI<`5!XqN1qGQI29Vc$Q q_`xBmY3Ui6S=l*r<<65gU;gBj(z5c3%Bt#`wQAR?TU9{}4AuY?Bwp?S literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/_tarski/headers/coffeerings-thumb.jpg b/wp-content/themes/vanilla/_tarski/headers/coffeerings-thumb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fecf9d3fc72b33c8d8bab713745df4153415c761 GIT binary patch literal 5619 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 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/_tarski/headers/coffeerings.jpg b/wp-content/themes/vanilla/_tarski/headers/coffeerings.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b983851004794e005f294e2b73ae1edb698c44fd GIT binary patch literal 20672 zcmex=<NpH&0WUXCHwH!~28I-d6b6R>Zx{q!N|UoI85kK@7#JA585sV*W8ia4$xljU zNIAg3z`*$bHbV;oGZP3fGchr<GBY!?va&EUv#_$Uf&d!_8#_BYI~xZFCl?nNCkGE0 z@PU8;956Dou&}YQ@o;eP2=Vdo35kGYL<B*kfFOhtfKp&F4C4O*20;#nEld}f83h@b z1R0qH8UG()SkA!6z{twT$jAT(j7%)7Z0yV&oFGwV5P^_lW?^MwV;5jxWMO1xVr61w zVqsxnXJlYx5M*LzQ50e|WOEEu5@t^<Y@BE$!m-e4W011whomCogAYHdTx^=O>5!_J zgdigW6B8pd6Ehnt3p3baMkYaKMMEJL$H2rwr4Nl0HyQ~qJb3XTt5cA%$VX+-B$fZS z7<iZ&8JGl_1sUua{sudGhKBu|dN<E>>f_U?lUSVm&eYton$~%oztCpq@v`7D(~EtP z-}R>S)LxX`IHBQ7yMnNSsdnR2mm{CAUb$>&c=#FrlW+X$r^=SBoWr^!XxEC+9wpV( zpW%{DD(`YPuG{<R!h9ofy-WAjNvj{+FI#YT^^pe!GepC?eYDrTxXHD5h2yIpwG@Y* zWhss`jk+hrrYtFso<7@8xjk<_d(OvohmTF&cQ;8%%zZ`Q0~NOialRL_#J*(Bd?dB^ z$Fo@N=97ocJTf%e@hiQ*KQ$@zVrtsV10|Ub4M+6es;O->cp9gsYpDI`ANM^u_RkK# z7fcKA@z(0v&UVqLD@5e)RDl<K%N$Ro26)SLPL!Up%*R0H?o7$+a#k@cl{Qs9I%cWW zZj<$|*zP!cr}@gZZtv3f#vRK`Y6|;zZe6FOY<na1$Il{mq5a>TBTrqq{f3k4@T3EI zDla62ABCOUxjm;m*`AI2Xz`aXG5MeWi23YE%%9!ec_LZH=hV@y9>;=Ob_sKG@}Fo` zpT6RZ<@qz)KHb?b$S1t5c*m*DKFfuBPj?<$8M$HBiA@3%+b(fWxFuG4?sIY0(WK<} zc|UHfc~<=0a)0*a>GLXT^wMUn+4sY(`#(cUI#=zX+Mu5P)p_qfXKyY18ocYGFkkE2 zj%gR~>|KBI+clP*i2<7?r*GF<P+l!K`OTaq-V>hZ&3d&t|KnP(?^Sg^QQuvc^JPw+ zc=r6X6UR3N{@rrI^fqUs*7Ge*2lijsU6(z#^K`Lc+s2Rkg{*Jy*tyPqXOaGV&i?6d zF1Lq13*!u9`{9viS{?K^kb#qV$@IM?o%5>1_gu4h^~<{H?Yf7LKCo2i1Rr-Y$g@|w z!L8ddF?aGYE4GeTDY9jz6~DF5Cd=oioBhr-KJ)zTyO)3RH}gobN<0_ZERfu*(Q#_~ zl_L!vEVW#3!v$pup4~RqZq|*gc8wJjR5~c?IQdJkR=+q0|HHo_LiVbH0WKnrfu0-+ zi}++G*u=Urq=foC4Gdnu`D^y!vw^{jI5?U#8dfN@hP-GFe`b_>@~Q6e&6mRrI@a)( zdj$$j>3?>*`DtA4w&Y9FQ#!hy-+g~u)bIDE;-~5@oX6Lg2T7dr|9<&{wtl1M%-MfW z?(XRLeVgmeRu&c(sqY1!zlA40s+hUWZ~l%Gyo!A$3WgWXIWPF|YNuTKbkkp&zxJlz z{=MyMR!@2K@@Ll``uSdS?t1L~^p3j4DL<F^uhA)OYo5n{mKB$pvUT~Uz3Fdf{w}(6 zrfzk~??T?|Ee{KK#Kfm9eiv&W=H|0McJfE7Nrz9_GX2VzKfZ3(BdcHMchB9Na<4K) z>@r6K5^!#_)8dJ#|F%<K@t3#9hT`S%CySL|>{ef_s^N4)!iUq%Iq;ddSCX#8yna~; zoj2ZwdSY%tUtaecD#<wq3b{Z1%H6#?<n^}VPrqw7-B`Qn)PuC1U9)nf7qRb-&^v#j ze_^bx^x~A7+KAkkn(5xD4;&mEgF2Qpty<7@OKUCro(G9-8OOKW*2&zL_E#l6kx59f zwnQa!)uW#izdTZ39`5e)>8b6-1Bt~`1H0!k=7!$Tz2V8^rqK3!eQdZ`;>9)F;!Yf1 zFRo;s)Es+LcxnpQ_f8jf1p_<p?Bo5b`@>{6AJ<!X_+#XZORIkCEAb|5mN{UuT_92E zSCe>s*v|E<r*HbGb3)GkYOd*}7b@&YRSSCec`?hg8g#Ha+6G7pau~{<KJlGhypel% ze%pVB>N9gEtp9dgYmJ4Iklkwa)TStx3OALh&AIO*ereyew=v3In^w2-NS)3!lTGUV zA)6jby`Pelw{EB8A!FqL6_*(1M+Z~Z6`l|8JXZ1Ii{4(PPI*<iDU)t3Saf^!vYoec zjwmwtEGuE)7kYi>oU+kI$*KFrYm5xCcL{DYoc4DA&caOTz9n)EU*%o<LpOWOIDh}@ zyN{hQ^IvSXF_?Su&Wt;97M1Sb#W{N-PRLH$q<COr-)gqATbC4_T_1Dv$mZSk&+kvL ztlm^9*ci?kyZJvu{>;taE}Qxsk^gc;HSyNb?GyYT?YM3F)B5=(?H~2!UfVCPvn_ft zxADfG<9SD(eCNwC$`kA{{J5$z)R~D>cm~UkU#yotemS?}S<&U&n{;iQjz8hidw6<R z&>GH1JLK-@2pX(mH=5&lMR>ihn7!Kc?SB1L%QifT*`jFk%V#-r>V>(X;+c7!yc+U8 zGfLBABKx90+L+cqp08)L)9%gj=c!?VHuvJ+9~I~gnzKBn>Wbfsvkh0iUTJ;rbG-cO z8MPa83V!Y0y3^~$dVX=P{rP?Kel6C{HQs%f-Q9Si&i$YI3od6INnSj8+nzJ$!ya*e zjn0i}?4Hmy&5^|_wP<<Xik%)(o0J?}{Qt19yErdWF3`KRJw(9!OQ7>24rk^UPZXxt z9~ISWat!fcyu<41*I}j56u`7<ia-<Bs*k5m{M~1|Q@Xr5VCrng*IR_{cOBn!ck9e= z?W>NZ^Xk30>n5{SkX<P$n4x6K8|&F0C#HTj>+E`d^+I3nhdi4ynF521Lw)<Muz1?3 zue9%scV8Zpy(G+5N_>0ivT$wd0}aj6=Ra+FRPi(3$91NdV3=u<4)3HF{+De1FJ@In z|7XaKOJ2X&Y;Eng=ZoEYmUj2Py`q}h&`_hAI$1~h;8W!v`qMjR^jXe77i&}QuY14Y z;c@=fw>ORRT#w&5xy>gorEbE3s^m+Gwf5bQkF83+R<(0?S^4=xlBPQjD4>AN=bI&N z*<Je2Ah6~8F+=@;F9)_nI!JGqc=@BE-u1of=J<)}Yqz?+dK&V}!!Vcs!REM)8Aq1* zNl1oNytz0*$@fEri===~%L!Swd2&&rM`p|oKfk74>{zkHm-Lmp_H->SbuUR>p;-2^ zVoREp=`(}1)sBp;UP}Bfa*@JwOCqgq7jzmH9lY(XX)Cwzto5Xmcj8W-Ix~6u{gxw% zh8k6F4+ZQ`KYnof`JT?1^Qv~;TKpl)^6L&kLH0uqVz#AeF|W-Y?)#J8c|5+k|HR|e z6qz$wyp}gEPMvVncvo8C#6~8gImwIr=6AjQA-d+8uCV2CyL0(djpz8d*>~4=Tn>7@ z?n1~t4GyVQssfH|dJC4$4i#Z_@eg5fQPNaX*t}xJ1lLwJ_0#_LtGXHmYOH>U$Vo<4 z{Mfuq{6uHUnP49WBcqutU*vdX=CeM!-f^rp^_8~qciVK~3;G#P|Gqr*S#t0B*04O^ zOOFkgTE8}Z^n0?<j2?#j0-OonmND__v2QmirBzpbDcN#sW1Q9Yx^TM~ae<=$4Ed8! zMh2`~^<ojzneH_c1-cs!WW@ztV0c>cEq>F^XZ2=NlXu-apL21l4Y!+x;K`}!8A1hW z$^X(m*lFK+E-yY~UX;3-{_c#YTK&6YSW+`DMW;v{nNZ5@pL2e7+I)8HcdzVor~8Ep zeBX9M#w)JlnB&sxSL#`h-ISR2SKZ)Zo$|6db${MT90;{|@-)zTQ?jPh$@jtn-xsHQ zcASoMcalDO%{G4R<n))dn$3ql2+oiU>kLgP^Wv3GmR453_k88WnbWJ|R;8ZV`sQV5 z1W)qnm)FmhNCoqIOccB-SFpzOs>?2|X5C2F6I^PcOe?II7ik*jb=f9*H~cd1<XXq5 z%EPdruR}{#Q1H8J$g9p07NMttih>HOIvtE|9cYT#*0EBniObyb@^Y6j@tyfwoTY_~ zZc9JcjJYMub$I)Y6YVkg%`SJWsrveRc2tt({4{MIckOA1k4@Rud+a9vXRfvn_GYCE zS6OenX7``r;H-)zrwdtYx#wxgr?5!ztDd-dHa&8li)+NOQx!i-)$~}_O#X4A*Zyg| z_LIE1+uwcZIZ_|L_v%t>?c49KmfxCF`g5o0XO)iRaBJld6`5Oy^FBUdx!d2ZJD=I- zR&x6C<;NfY*i$Lqbv%D{alF&B4%q+!#)20d2w+q6Am{ju{=gM~Oe4y}O{Vs(wzG1H zbFiD~dZuncoBh?yAD6!-U*<1+aZ+!x)NOl-Cm~-OavCe_zw&>Ly8X5Mdf$fck%!Lr zp4=p9d|=vT3CTQ#*OEIX*LG+JAG>Lock;LQ-NikdR<Agups>=#@kO)vx$u&gjXh_w zI_=&h$;>tRv+HYwxy!@(F~_3BOM)%D#0^`PxqbT^H{o!hZHa8SaE<rkRZ(>*e|M!@ z-7!!RI2^bBYs}Bw!$ohRe>X+^sj=t?D*TweY|Scl%kX#M>8nml_Wx@3+n=!Op30je zF3E!5&YxZU#MScr>Ses*xo1LFaW#RuWn3xp3j#wXxj$GiQ9a;5>VJk+Y65KQn%VEw z-fq1qyMN-HIn(sQ((DWyHuXsPem7ZiEIP&{$u?-B4nu@_Zg0tKAD_oJCx`9ayF2mc z#Jlz9>b^a#-eg`_Gc8?qw(s}g&cZ!xho`yklzPt9qCJ6yH&tBO^|SHj+I{<8mM@yM z_~jA1cmGUl&d&YxpCL<nr%tubsmJ>-o_f0Nn8=d|ez%SeVL`>)&R6t~H$REaP1C(* zTl=43_spj+*Qy&{s+BD|XV<+s^ZW*n+x?P<ChmA6_n1?5uWYmZq!)fWX1nf9{<&q* zXTko`V^=3W^lVU^ShT2g+NWUd>Ah1KZ0)<cp39yMDcl)(vETBJx<P*HX6d9fbCZ<1 z_J#i$SQqYIT^w)l-1d*IfxvebP9>F2&qt2@E7CvOc~9NHx;T2;ANy06&y@RHpE!T( z<f%SaQ@=Nnolb=<{o86cMCr@RI)2dE`tsMz_wwGa_FXyiHo7Ri{aCowr|r^fmfbk} zQ1ghj(8IR-yz;O1b%(CB?AmGGU9~;x3A66D%~w3c80xgT4!Rs#5b9&|Br5;mqlGQU zq9(kU5yHv7JVbbR{H{fv=Tmr|JkKyvV7JO%taQZQ@;}3j{paWXep~mg|G2$Gw{^vb zdk>#)e$)QzrtmiVm!UD~5~rk-YU@9jyx4KuJU-`4SlULJn)=NvV?&q66<zwz(Dk3; zT>b=O>*oz``zKpQ@8nafEIf96+s&Jn7mAj?4N+Cpz1(5M(E0B25gozoS6hoSXB}2K znlIeZG5r<0=)6iDE@Sn`Wo1XaN>21%uygH<y>;7A_}$Z6h8A)BVjtt?xv;qGpT${t zk@2dK{80vZQ<j}BA$F@4tyrZR5a6WM+j>V<FhZ^_De}e#y|33TWlg@G;Q!AcdivAz zR~<jhwz^-|x4R>-dD6)l*Ke;<_;UHq#LKJyGh}^yc*O7I{ER=>%SHQVr^t$@E}Oz4 zk@xJW?!m)<x5=C_`oz&1#2`EI-^<re*ye}D{AVyOxin+_tNGiatu%!#=S{fuX4#o$ zf6-&7b8oT)hn!pU_^P^GAX|LX&vQ4o9M!&7QL?CTcJ#$dg)iGoMIT?05_L0Z_~l{{ zpXhZoTTrggbh+{LMc+QLGQV13-OeGkf~(<*wfRMd5ZK5AM}hmSNv3zA&ze7uESbgR z#PYRRDVzPHYJq9|wy!gPSDB^lO_CP+#kQeYa<1dLyB{wZU6GeP_x#tZowHwdr%5VB zO1<fwAlz9{Q+G@B;@U;Y1|PMiFA)e?r0~VD>q)AQy4CxsQ>$EF@9{jKzk=b#)^9#l zn=jk-D(~t|+A(X+jnq9e_b(8LsGNHIe!shOSd?AZZ_U}iYIQj55`MIvo%Y21-ic?G zuPykr`s|t~`q=0Deq)xL;jnpTp7k7;_R`xQ%i=O4I?h<$e(Cpe=Db**e$}hRllZ^J zO$}NBX`r+P1aGiPENYV#5#k6GlljlUc=Wry;KYN)rl;=cY*3yUqPuCaMw80zRZ~*V znewmiI=(qJKXUCZ@4NaY+mcs5xc{Hwz~AS`%Ka5j9`8T)<nhdj(ix{$D|H<Wja2$D zVat(U5|SRS=Nq)2=|1>r_~l5NUEZ6@sPvh0YR|9R$MvI}{o%R`GCF#eHhn3rf3`Vn zJ9$~#xua{b8H1bZ_FT4D{|WCZ>dfC<7Cv)6K7Z%QPv!sK?szFHtC+u4h<Tc0Fu&@H zK*e?4XZj@%)MeQ^&-wi6gyhbNPqM^s8(Jnf@M^8omGww3UblMwZp%5J-`rj9CsV(B zX`Nfh#)C%RT9Q;$I6DoC-1aiqX}51G*6X!s+xoFzbawyAPcvnvPMw+hJa5GjjzBJ! zvasY0?AA$~TG{<8^Dlm3&q;WeoE~mtaV-9&mr|k8w<l+gxt~6v_pR%U_v}qcu}qWo z^Xy)8Zn$&K`N!t9&z9_MZ~SxBweb47{Uve}tycA0Ht%#)b`1?)(Y9_yXX%B%6Y8Ss z?fx@#$19zF#^?Mb?#AQ)40m_fJz#oqy^-_OpPEM5>}?xN?m6C8c<`6&;hWCOm9tA` zp7H-$nrXi?;&?>c#6MR5G-`I=iP!zG_xPD_f9II9AGjN?IkDWZH@D!-->r)ZmMw6o zz0@sPBA35tvix2{(SOJP6wa*MSum&a@rT6N4eP|ua6b91&>_unwNYi$+b~0k;#|vV zj&rLjJb4-#&NRH>d%>_^!i%n^MGIDGb#Xd4a;(r;8$HEnzTwo@g@Pdt<q9))%KNR` zvHL&6)A>7h`(NblyV|;}^83kclA$s6uUb5<>OZs2KG^wd`D1?TXNCedw#KH-XlV9$ zC-XA3`1>J2>jFh7N4;ag9h+R(a~T<H?$6x3yX5%qia(VlU&EyyKU%+KLtDCbzM?f_ zAIHszwuYM-*7yAy%pZmCXO1sBx#vH_^3U^DK8fBo<9lBBi<s+k9$IF+kw1OVwaVhf zD)|x?fx7v#nnGC+Kx(^krr?QPg4Qp0ycPJ*FzG^7<@(uo?L*FQ`OjeXRCz|O_DiWG zewiKli+p5`Uty2y7Q6LqHFup+(UdfahO(3W0Uj^^itX>UO?-9w>8=k7D_sO4KbbuY z?zT*q;96pK;^wc?i=A=$rX9~0t0om6c7J!qTH}yd%rn6W-_|JzDqgYdad;6feR9c> zq8FLlQWvC!<@Ehke*2|+gI)e=y^zCY((K18_rLv?^yEp(v0WRp_KO5@uw8s-z`{`D zVBJ}3Gu{30{+uIcKK7W_bbWVIlJ#zX`mu74{{19QuJ1SFS2k8XN%BZ4(Ruu0cgdb8 zW4_qcrgOYL&a8IntdKujbz*|^BGrHr78Z6#mhGV|LiQq|_O2|gEGs@`K3Z|*_vxqe zd+ltV?ug^wXFZv_<@`HsKYQ-(nFZ@2&6pSkYZ;1|Pd2}J&35+7k|R-t^S9sqzB$<U zz2q9RqjNhIHkL4}`z)Fw_H$=QV)AKaB`1Uapgm_EzS=n5`uQe<Pn*(D6pCHW(Nn*- ztK7rItc9cL-0S(<k}B8Pi+xo}GSu_FBWZH|#NEmjT#SDW*^>P?6kk5EPVMBcxm?G& z{Vuh6&MjDf)$*>UN6uY&F$EVP2d=En*^Zkf%JQzg{TFwu%`GnS*nYW_hYXv~<g%aG zko+ayae3_G_2I^;k1y^!`bX?_RNMml`zHk>q+Tvsw1K<6OG(Ani<41M=it->xi9|; z@;36UE#C3Q&s(g*@~hh~-Tw?bL)uy^w<aYEUwo(AdB*l(+zqbBOOg&LpJ2RL<+G|M zdR6CCpVg;0u8J`9{}Ewgy!>n7lw3zI+dW3cg&(uc?%QtcOsabQLuHLy=;PGDsR8@t zl1_MkIi-5Y<;ap_;>>5mTOC8f<+@hMhdy=ZSy7>(sT!JfXJTHs&P-16_Ga^6g$X-m z|7Uoz{r1JZ{+GG;U17OCS1n`q5x4a#R`D-?w9Q81(dCc-e5(K2`TU3tTNL2(RN}}f z*9Ml!PuROATeP+t&kHR&GF{P{cj^t*`rQe)EnUBJdN3|bi<iwla^&`<%Ce2;q>tw$ zAC_-A!n8jx+#x>2KiJyulYiX0ebWyw3HPnD`KOom^X${9zt>*d(PUC0w4m)j!$p=a z@JbO>IcDAI;ZAc>j=XKVu|0UjNA=a~XWx~%WoL9}&1c@FwaPvYj=jQtYMxW>&d>bC zRH8joSnB=ElvgM9W=k|J6>wbgXKG_vzAQtcX2;o$ElN3pn*x<<9z8Jl^^bezvrE_d zo2!p+aoI5C@w4QzUKzX0d4DQ}Ll-$Eg$hLR#k^&Cu{GUrmA1~u&V7l?<J2AnHwelt zyJGqA>UE>Uo$UG7we>dlA2w8pmz=HQshjOFN%90wm~Y@b<-7V8J-hX@uOIl&u=U;B zgB(exUZ-X(nJio}v3LLK_$%TUUv`!Km6eIzocDh9YNO2?75)m??G+6?-^5ww(@|S< zf%Bt-%8L_HQ`kQK>r%MKq3RIIBJ=%;|KtA*hyOEZf7fTf`=3Fv?5@pu-P?T@b5<|U z5Iu7K&TS2+!j?xW=8OgrUp_|duF0)dH*2e{e(!O_ihJso>z=O83xrPbR`1?fXWw=7 z*t9x})8F6sXe@m6EJ>|;k&5#K<_%YqZdR-*I=^nSt<3XTPe1T$mKL>6SaA66gk!6C zIXxR!2Qe!A+Fr*!d)wD{|K?9F+d9Xt?48`>dGRN9mUOG?@ZEd#=Je?m5{Kgc`84Ox z+1hw3`R6*5bEy|Pj+obX8)~0^T(SGxxo(wI!Hk(3`s*Gm8(uugAU8|rmiEjx-OD}u zdf&$J?GqO};Z(TeuI^(ctJ%tzR3>;>m85>DdU;!-C_m?PVv8fgk2PoXBaVLvsp9zZ zF;tXeQOfOAocSV-Q`sC+4B7(O9P&+sx|&{jwCAsy$$N5QU^6@SHMXtyYcJ|uez5LY zw&<D1g4&DI9$noyrQ4<HSLUi~pUnQ<wVo|i`u#Tl+4Ga@=iR+O`P`@UEoUn>&J8}e z-Dt&3ceR2I^UF+6>GCr4RGpk3dg%S_$}{JT`PS!ZOB{E5{3rBZWzp8uLVJnwJBFJT zXHL>Q^fYJNspWk}YW0^l1>NJgS8L~gb!JZ1{n|i5!&(1)qD{loZB>6sAAkP1$l|cN zSo8wV&R<@t9e=JDZR_kgJTdExpK8forG1To{%sv!n!K17v==ppKFK!ubaSfDBprio z`j1ov>=lxB%ziAbEB9ynO3NjB)=`IL<~d8uTef<!Je%Q-`rl#kY?WJTmjASQ-=`F< zlKg1bTa#5i`sMK{7BXw97JWX|xWJ=%lhPqYC65<nlkSHud>)nTyU6Oie0Tcso_p#y zmp%!|Z;dE%nHj0|O0ev;#qrhs{HuPhyYpz{YeT-N>5?-`o_@<ySfQZMx6sjQ6$gjH zyMntm0bWd8$s7kxw11U7deUlxl)Yc~nK0$|F{|PxI5;>k@O3dQXbwBuJ9*o!2aZ#3 zN+)rbm^JLn&+)mJWSjfv_SWMcKsBNh6F1L`Q)cg2=U5az61T7M@xG&f+;!gvEv-Nn z5uZZ}r&2ijmb?&5T=uCc?a!<;Cl?j{XSnTg&3W4-h8Ggz{~68}eLHS+@A}2_mR{+; z+m885a0)o&I@;&87QUCrzZP*u^WXIeYi?ZV{b({XOU`$n9sAM$45p9v#;rYLrJn!! zri`e-W7lRibDwi-5A^3(d*?Nt@2=F_H}|r~+j&varmo9%?{__U_2gsghm13sxlYkN zs!u%fSud~My;xT|d|SbuxOr?`D-JTWuyJs3DXi*f;&72=5n8nHF5`s*FA~|Jwug#y z`P^UMq$ibrQl?(@M8U_CkCpVMiTwS&ktbC%mgCihTP`h!GwxRD#w%?$d3<s6vLyBC zs?RHRc5B!@O%}T|n>BFFk?Wg`RD4@*`AT$V?D)Rr{K5SZ?I(UlKA(8}-MXjMODEoy zIdS;#qFX(RI<=d6ozm2dCUi113Q0`=aM{@=b$5@SeC#)MUU$huA7{+j(st8H^!8*m z(_@9*;*7tx$8|4WG_|L^YRk5$w2HEImmYq$=u?xJInC*iim$;MiR+;{EZPml3mD5y zuO;o6ZuG5l+Ch#ClY~thefF}19zGY!v2bdFR&!RDfkQ%*q$tk<1tSiJf`%pu*%0Tf z1n+67?%e;v%ESxH+tUx7ySK^oSl9c$j4L;Ff3sFIH!fd!x3K<X*4EWxeG{)<{!kXC zmQ))*bMJqK5B^0TWT)qqUUjQ!K6ZMkq14e(Mx`Y7@1ET=OJn9%7iOGyce`??@ap-0 zTyNK<&-m%QeZ!A89(RprIyXy7nD5}cbAB<?>--a2d<|dgNUiQX{XM&T-HC)Nd5a{r zol*+B7|13#^RJJ4(=V&zf-fG$ulgWn@A~p-B%k=gXC)VYXnZmMx2k<22k+tq*M8n` zTIXkEq<(+J=_@hJoD3J`7`q-<2KLUk$jhE{{mI7%d7{OO7TLeQoFH`Zo={Kw7uDpC zy1h5PcUIk&y#8t0Et~6=3mQrlcUAmcVfydeiElf0t?1!dTKm<__}>i)kH}Z{fkNz8 zi~cj5xGlBF_L=lNleEkBY+GB~<I1%=n<ucW+H`D}k(HNW&+;vQPsHS!biY}fzASp% zHcex`Zox&rZWK;}cC{cKE)cowwz6;VuKHy=W_s>vDB5%DV#Lh(t{rE#p5f@}-mtJh zZa42C24jilgg;$B{|er%I`aGZ&uwduMQi<1ThP#Sd4iOa&tLav^8XoFS3Ys~tZLt9 z{O{fdzsFlF|A^JrFS7Hrjq6qdWy_m_8Z#!S@Hf8b=JmH$`m^IuMacZ@LSZ(B>Llfr zEKQ77Y}|7<8(*@>3m3e)<hvM4vT+I9<U~aUnZFTs-P5=2TYJkp==8Cf6S`-;>0c*i z|8h>1z`eL^f1aQDHT=bHbEMWRT3pdveav*XceFrx)o~~9zth9R{y2N5?Kxfd_Dr9> ze%E^K-W9>2$AYI8>akAJ*R3i27#mwG9CLX7CN<sDYO;HyrcUkGbZ~HR<WRlfq|n6a z5E$U!#N{7rwPL~N(7;t3pS3ttzDU&uBwOaC3->HJ^?PB=iLAv&hl12Ir0j#jXKryR z`X2RkNzvTPr=v4=%})NU&Dpy<S-rsOT1@7%E$??-v?<9Ao7mso@Sj1cF7)AV{cUaO z%5#kiR{bcv>K)T_XHAEc3)@9aMvrMP1?*4B7M0((&)@F$Zq>u%b|P<e`o8^VNIf;d zaIskF^HASSE&H#m$yr{|!NVwh^FPDUjB7h*<lef`e%p5L(NwR?JaSf*5?}q+<gC`q zddRU+El`*@?Sfllc}<mHMgR8CMc;1Ore4{&VpC7mt4-(23VF48T*}S6-5r1EZE>DE zXK#aI$e{(VRxP|JsI}mzNQz^Z#)%H)lj0gFAp!wr3vzuFx2)i4cKmt%X-s_UKBK4q zT+SSwmRgh1AmXsmcw5{Z8@|~c^@}cl+U~b1O?h5#uhgRNM|Q0L82@vr`zPl4r{B(5 zqxIs<(KYuoR~|cc=7>_Q4^PbNM_WoNqpKfn?_0ZepRILq<cnYNJ1S;=-lLZ;7#H&4 zT#W7Ji2-bdoyrBt3t2MiT1(9?@0%R+SeLi#?G`_yXENsx>?zm%?PKR=c)HDZrs$`g zTXUC$_hc$bYt7jBB<;ZKi$&^x$_>w-t15hXc%fWM@gIr(efAym#s1W~7!`a-{`cma zSIyk2yYl7E99{{HVwb-(uR81h@k+<9WodEx&(53|JiH^&x8jOZm)ng{K@Rs*hCEEK zz7%hs8CIpWveS+=(9YIg)MXX#Dn`fVcU7uy9;Y!Knr(KbV(VJ@kEv%rXMZ`mclqbs zjCmUlUY#B%R%e!b;V##bq@)Ledvb+}pS+&#JJEMy=1bmr_g<ZGE@#{l@AXVIaCP~^ zDOrzumelUQlO1vE_THT)-E(hcUp^mt>_3D0uk6qH6?=0(W#92%zRTj0)?LZFnh{Fg z`!{NImVU6U>z?}f{C|dv{_{WO<@{&pyRZN3rG4qwby~<>PjDwxtY+(Dd8V7<mHm0v z4yw;zO3ClK`YHeRx;mRWomr2~B0hZOHqP1YwrnFu+si%s=C_3Px5wN|zh!UceNOAF z-r*Pr$Nc%aQ#cJL3%+DL`Qe4wzW0|ld^z@?VIx1U_}=(MoK-q2R=Nm)hoqBIQ$i&l zozA;1)*u(uAIAIjLxg!)nnl|6jLxS^zPqtj1RP&=`pCMIja7Wp7=@R7`^xy`)y~;p zk0x2Zx_dR}>7q}iw-vNijzw8?GW_zMUeA1C)6-kh6Z-VEO5=5M6JvkPn06^aT=96v ze+Jf9lV4105B%}*oa~`BuZvzDop`)smto(%X^gT<b};!o554<wzkkfm>R(@S-))!b zEOlfAfj<IHjf*tSbr@-x{ZyQs-^85JwLH;T!$48=+|D~Tk7rNR*;8K^a3^P1d(Sq{ z=C>?g5+DE6mA!lO#hqma7k78hIQDiPztZRUt-YR8-dJzz2p9M~vxt3};_a1Iyy1G^ z->&C9b=~NP@wDYT_D_gckaO0%t$w)fL7&m?xVW<gf1P$ryOnaT<m0QIpEL80Cdud3 z1m6lNh$#*HyW!X}X${eB6BHO6>>b$pwv`-T9iOsWJ@5Ian7TZD=|-Q;6*r^b#AWyF z|5m+FTUmX=HI+8q3lnx*>1WJX<Cgu?@^*G)&w1gW+ly?j`zbCn2nkUVarFR?&@(Y{ zD2g%|Eof*6Nc_Eh%kT1i)y4K(esAZJnJ#$p`kUv8QIE_V555-SNMd9Wk0{Gtck0{i z#j5(IbB>3b{RscD`NQ`E*HWLA*$ZyBH++~@7dq+0Hj~cIV>`T(FEKKIdbQQ$$J8ay zD(83G-B-HaQ_>z^y5~wnam_w^_C}pIy>2fK3CgBw&Sg5fIVEW4^j$&u7H!KvnV<Z_ zpZsyA(UanZN1t;1XL!5r4AZVP^JBOEZnHk$)_?u@qN|^3R=w`*4?8wrF4uBiSGE6> zoH*~E{gd`<&2ttKTC}I;jOC%ElQ(%kb!6tMDX%VhQ5v!3XXTo+dkrtXPwzkD8oi9K zOkcH==Zxn2Wyf!;DKAW3m@lx)WJ{E>tW?>WYlYe~cJsg5v}kF7qoRw`s!dOK{3x<0 zUY%if#N+Xq{|u=;5ih?+{r>89%BSj=(d+#=TXt*pxu%769xH3xwyEB+<5m*mi{q<) zuC5I{y;#^#_i)3RY4zf+-^8~m-`??`;e6yR@9e8{YsI@a?~n2M`qI95{;s{-rn%;B z*t+ibT{(NPgPbSae!QFFV9+o@x#YBk97Dg*PWvbOA9w!PUK4-SUTyO+pX2i%J>_Wn z-ZAqCr@_=B{+0R5f9RR_+y7qq`JeCY<NtQo%+)ZITEDK)*Z(5RD#R2Nm}O}5<)Nal zThx(LhXqP=mnj~fwtD)rGllZiW?Q~JHFIVvzs2L{J9(3#;VqYvmiTu{{~5YYKDd+| zmwv7I&%$z_bh$IDUKnt2*c2T!&3xb(VO}@2HN@e%kAn9E)3~qKMLSeqY*Jb(;Na*P z8YNzmoSOFevEDhG%fBn??n$aHG18hS%zA8bVlCH`pMqxl{pRg^``1`7Zmsv6LqaW^ zvZdtx=Ei)PezRC#ZtbnpjME)v7_eVm*ms}FO8&sB4c;nx7S@|rKH0d_@YL<2Hys7e zZ<iB2b2n1)@wOW`#U?U`72I{Yak;WP-Qs)F&4?Mtj9zUi?=?ERtNfhcu@?E;ot;xu z{`$=Ao9De<`nA!sb2AU8t~zl$Mz_1sfTNagUt-SIWpd4-aW4F;m>2>?*&O~eG%c7K z;^55Ik#LcRr)lOXfzCNklqH%{l_D6dCWRP0{qxMn;@y*{sofK`v(J8eZ+<!Z*lyds zZPJd4w-n~@di-vG?sMU*SFXogGk)=KzFG9_b04Oa-4j$+o+O=j!|&Hip=+@YMd9+f z&ti2$k37x)sD4be?3{|C)MA(XX>Y2IM;#AJ)%4gc{z;a->2t))Xzv$(=MQg}i@1}j zHfNXq^xb6&+jdH2rhQ*7nLBwV?<PU^Ag;GRuFO;J?ELcW$IjVnUthdX@Z+2{Q_wsy z+mcg-t;JId1&w<1w+LBno)%kmY3obAl3VGko~AlzXazpi04EI&4i1IZP!QQ35d8g* zNI<1VU-@VG^1?gjx#{6NEBw{@<o^DtY<pbd;@M+9S0Sd;e$tblx3fjwc0Rwk|IzC? z&t>eD?GoS1eR!Yu;N%m_droIgwJf)Coiw${Kz&WR^2OQjuNG|$vpOH{_PI}a@uvR_ zl9vBIJbZcR@y7Mb#jomg^cVOg?K~CTvvQ)Yrps4`jMKb7wqH6Omwoz6{l=Yr{*%tk zjSN3`E3selcioBBP@fYfv2(wDkuSab;d|WY&iVd%GV_(Du1S+#Y!RE*wKRZ3D^O(B zB3}Jz$L7gvPnG4-oBmFVVLFpTzEr=Y<>j+A&nK_T-c-AM{;QYSbFSI5ug^_$=AXV< z?zrF+27`%K+*#~yAMVP3i2I{EcemR9cYhxL`p=*~_v%^WH@6R#e&MTj{kbRo^rLeR zY*L>~Yl((hZDKUMkz8A(GJ%t^vG~c(`X`UlkL|OQpJTp9r|xg@w};18zw>+a*2^I8 z$bu(HAH{<w*D16tO`Yl#Xxx&*sM!2Ap=SE=*LQQv*8FlgvisWg=p)D19DdmoGt0Pe z)tO`Sclv(p-Rj$Mm$Ol0n$;_=zigl}fTwAO7Snfq`vhvkBjHXjgU%@(4D2dj7)pcE z1x(j8+ButqeUjfbv$06d)J6RE4<`4!HGdzKy*a+;KLgvHLV2~5G0HK@9Be%f47CiY z_d7azoWs&V(?SBl=?;>2eykT0)lUG8lF6qqb!~aFG_@i;(zj^aK_TrH2BYG|jk+eU z_S|25wQ38`EY(tFF@wr5&XW@pZ2jJfF<3pkWh-kjKWypAgi|w5HF2y{e5m$%vDrLt zud9dCHXU)=vns!JL$`#%WC7a)rFzom7e+j`tV;iJ=1ro@+CJIJ;tkbx*F3Eg%$XG& zlvmxoUUj78H0x{K-!1R??Cu5i@yl(DGo5<OVp8SI-#w`s9)b(<TEE6d<*!|Po3Hk( zk6U!ott{05hZKI6kOc}#eKQ1CzF5by(MPMSwV*@!gO3)6&Voz7w;NBJ`aQH;^WS~> z+fyEkiOx9TWz^gLyJc>Vzc1IbN^5;#Ls`YW%cdSlUp?>H^P~xh$CG)iBHS#lHaQr6 z%r%MezNfw<NmlDxZDqpZgUQj;)9P|+UoTz2`c>hV1N+HqGDfL;%C1ZI^6bg}thZ`% z>ICuNy!8@u6)*ILJ0D+C?v^GsJJ({4Rk-x+Ir^eCpEeXKazEc)=KgAPPWOyXS(mzI z*L&BOO__6~=xKE7+G~-n8;-Pw25>2bK-w&zb_<KZs)dX!@{5`#`8NhSUOoS8k>&A| zF$T}mr{2DNtfkO+^{U%xnzwSd7dD@}FS~%@UTnDXnKfs=9VxWWTQ|MmqUZVa=iATx zXJGoSE<Jl<>7>8Uc&&Xjlf{lR?5uy6yDnn4Ua0!kz4<Gr{IjaDJomZg$fgg4Io}Fg z&7x};9NNL*c|_&liOGx?)izf?EEesHUv#%yE~jvU<=10#Ji|GY1M1&}D|t@1kS+AE zd)@a=@vhI8FP{9QwmHvgTgSTQK&{R|p(d_XOTXs7T5#mM8qcN=yjvao-UPq9CNWch z`J7?CB<s?ruih`0O`djacG8V6(`MFw4fQaXcHV!t%VPx<Geb7}T=8>f_a;Ak>5{tX zn|j&hyK@vy*!A2=$~=EuMbhcSBxR)oY%`=69o%Che&I)*OWt+i*RMbSdsjbk`M3A| z{;u~c3L|6Q=M>rai9C+|87dKOtur;W>A|n1j7n!rFUNJ8Ph3})HS72q!<T!)J{rGx zyr<0kce^Oh%#dVbVM$Kocl}Gg)a!~Lc1=s3e(~%g)vN!k`+Ta+yDcM)Pi+f56};<Y z{<O`L-8~#z+<I=66kn~K-)d~7ZEV-aKDqzyHfe?EvmvNeG%K6_)RW((`8M(QIg2aV zI{fkf5_4ZWt*+zu&6N^Q9vLbtRdOD`s*vdXRe(Ln{+0bj8{hcX^LIb}d;0dpDY0sT zjEwAazHYNB`52M@)!|EIBdeD}LqpTl(5`0|QJ)`LD;&DJfcMFpgnzMod&BnK4a`Wp zzIp3{V$+ASm5=XKb38Cna7OWkexZ9&dTO_h6ub;dtIW1(Q**Of9vUe3#-vAeiHCg0 zb=Q>{M>ZdMx-#<q95L~dXJvPcd}I1Vi?-{{Jh~{m$K|xZua3F*s!Jn&Z`7H)vuC^B zg?IbZjm}x`{4x7n98cV7jiaW1LHC&ycLmup@9Qphd$D%Wz24ki&ytd_-l&i(mY;uM zTB&HHOQL0{MXc;5p=Kes<-R4_d)KGL?QB>2^=xxz{N>#8tJ16VIomsvOn%FTxp($x z7p$;wC}@&pXqW#W8q&Bv<iIqpMWHNw&9MQ2)`=YFT=s9{oY8Tog#SX;o-^yD^2@(3 z+4#Zm<-?ErOXJnU9JXr(o7P<uWU^iw$&@npX!G&qq31u@tmrzPZ+ZUCoy&{T?tE;w zFz4EsePB_MX^5gkRrl%J(#bo7N|?{q{AVbaC@p;T!Sp(#?5EpC5133ZpZGg{j$Wjk zIoE4Fv5DHb<%?##-een}KjZU<$d{foe{77paNjz9^Nv63^eSu4*>0K^yK$GrPGP2y z>bQ<ZEgwfA<+}aPQg2;;9G3mnJ-*)m;JMqosy9Zyxbs?YonTA7hx`S-DJEA}bx18* zg;aTSD1r(BEm=|ape9L2B?X1gCy%Yxni*J7;r*38Jt*0*Q>oB0OXhr1!jsfXS;u>? zdZkF*QclV4e90&*f64Ck{LM#tKHOgR^SI9Zys~-vjML}lnTB2tb7{M^swbI~cOuJM z=F1mnWNdzUS!Cw?GTYhJi=^2uN^~4CaY$fmVAwW;@oHeetBxs-3=_JRyl9%g@cMy& z8ta_z#dc3U{9WaD%d=Detc|J-Ha=tM<9W`&YslExa>A%@maNV6(?9R&r~ZDt<Ua%d zpWSwL|6YCjb^K$}j@O$j?DFMz8nhhQ@N~O5+iITVsr?E`NmZN@`+n^I&bo4W?w0$z ztg4RhwtXqSK4-T%@7cmR{~6@@!rM>u`I)X$PGD2<QqNheae~v$;VX+peDvyEv+!M; zXB4dW4l2wzvh%y`q00x0ca}Vo-I6Xmho$e4?!J?=nGF(m2kc8fb6M)!IV*qrtJg1Y z%J(=Q@v#1u&Axp3)EGU}z+EfvYv<ihU^Ccc)s?Kt<T1lYIaW6Jhx9VLj_<#d-zR=5 zJ@Pl6e_Jd=>FY(m#5IFoHK2^RU9Eoo#EySs;X*x!+hwkcOAI$=&i&@JJoCQA;iUzy z{QDiA7XR6AG)sBj=5OauZe4tQ+sVhvZ?`VbE9Ymtx8eS+J9A~$nLU<ybH+P4VVwh~ zgwK&ZX^wJ}7?a-Y+_lK;w&<MWYyR%N_ue~rwwvwjCCL(u5^c;5><!#6k_;|+Eof+H zKDXhMvC5ClYeIU?xi31!p%uu&!XgkDu;SY9bMtN=d#v|l=dQ$GuN01*Pdfd!@jrvt z`T_y(xsq9xqStR5XXIqfelBoj^M}4tNy(Dr$-YMY%LI#~-D8hTa=UoVWu5ESvy0M{ zJMypHIO4No`k8p{!u_hJ#ity6l78U3y+rLf{h14dxtB`J-5RG<?^$-|Sl}mHvDQ_$ z*KT;WpSNb}>>G#8AK!a&U_1ZJho92BC%4B=+#>Y5rIEo#mE&FKpItkT3Y(_Rcvq`> zq<DtSIi1`^k7GQuU-mrb;8r;l-4d~H*4kP34X>`xdbs!Tcb%*g#~)Yxm>KBf8?f#4 z(p>@RMiUHQaeR)=_*7^Z^(EunJY$_U_2PJ`N6PW<Se_g!EK=Zny<@_|X;D9IsyE*D zF}jm(-g`or{idd0;Q|52IZ3kr9v{sO&dt5p^y}H08GK@8BClSsSfubC$nxM&cXhGI ztyg8^p8M>C*~dL@uE|!5BX?OZN{vyeKUL%L;^DM)cXvG68*TOV*LgQ{?z!hTckkQN zbJ=l|(;l9e7gTLcXU>uBE~&LzTa`a^&9lO{7OC4-ynAF<aOBh7^S!QWWvP+7irV-8 zuI3Fplc~;s$;x<b_D_qR=O5D7t#5XFQkk>o_haoR>8U;p6O9s{{91Bvk!;cW>Zr=R zu#K{E#wU8sa@Fr_N>egSS6L~r-kHaT>pw&Fi5r(%7P0U&+)~wDC)@n`@uIUL9j}g? z&3y6VPkCxlXi?y{H!B|{A2O8Q_*Q7w+2tN*PVsK(Tl?hn*7e6{-L^bDxAvpyG3gy? zi3>iY?z?y@QsnBFa4pySp+(xPf*R1F1tumAhmsHlBL*oA>3|cbn5`B~;_8^NVj9O{ zBTm^+7DrJI#fbsQj}~lx`s0>mpSg1HX_fGj(ka|tYU(8^vR_%4HojRBw>k2qe#w?= z#eAjHkIa#2?5^ycb~svxU-p4(OH188<%2c%?izb1USD?RSa=Ly%<poe$cgvUWDorQ zF_q!>muxBbAco{GaerzzFT43=-u|nPbM1=^U!5s$Gp)RFWAD-CiP9Pieus0sH8j1c zyU5||UC9lKd6ieYFPViE3ta#BEZf-gYj(xYvX7QmKW%l0)TzDy(zk6=C;OEneXA$0 zPI<j2`sU88qpNSdtf_OIX<>0woKf<2jLw9<jg>C4@?r6j-f0`{-kB~IHrQD@@u3zx zSeW>=i#ER8v}^4Kx3algj~|&JyI=KLuE1A8qm55~xA#6a_|H&oom}=^#A%UQ&V-9? z*FRpE*L*ZP?^EWwoiqQvnQ}GTPv+9E%|`Fco*c7`Syr;`4SPze@~;G$4IO2#_J!U3 ztvmDCrME6ellzpU<B!Hp@4b0<yRnvfy!z?*w0h&*539t^E7eWlSaM3qpe32Z@UMdK zE7e;4=Euj@21-1u`g3Q!c7E+Y!HYZBH3v92IQl%@QtQ`Px#bbdA?u`*5l1-VAZ?0< zrlx*>ZNrW4Zy9Oz?p9G}wCK#8P&T2i#Xj^|q4w0a`n-=ne|$?m<F&uct?b-3p~=$~ zrhQE9yY)Kb@Rgh`-gCakr>B2A$Fq~iC$l)>TdI?JIA?Y6;lr8rs})!7XmXfrHgDO* zqVE-VCmIXRe=2`=|LXdZM-|0-uYc^`R^2^m`HrHGNtITMLlRGhT-<+q&EA5U@@riF zO}|p17rS-)>KfaMI%e(G!uG;VI~sTRM@m*qQhgLA(b>LpTQs};*{6@ZOI>Fi3!Ly; ziT(P22BuBdF7p%%>Q3)}&-L7A!@9|wGfe(;=&RX=JvA?Elg@swv)1ODjsCPWyOf^S zs|t^b^<HRQ?kLvq;$OCH*`wn5eiF-O_9VX7d-l{a#?P7Q#{QkYZnGbib)50O=EB(d zfpxq1Z=H!xZe29|Q1N%xkt2uh_dWl;yVY>9vXRZwxVK8Xa+euwl9+mZQ+|$*T$-=C zQe2$&S(~|2A65RFe>Hd6w3ml79$BB}pYr7KkuKfVdq-ym?>NGh%n_k*%w_j<mW;cl z(ZBZ0x_9Hb#p$qLY8$8NPkgrU%%?4vkA4bTEi}{Qgy6S#n-)DXm{{bY9(>_T)Nk|h zD5Y&j+&`u*+jr|(^3)&i+;)YBTj#A$-)`}yCpqT3N$T^}Yc@VPR`K-lw~Fi?dq1C_ z7u^52c<*MPcPEaYvo`Y!oGG~ASfC20%fGb}f5n#8>^{3_^Ls=4lk;wA3mS9F`A>VC zvAVXhaMJ~|Xb;2h9zu4D80zIk*KWFaUFT}&x2&D97i)h8ZD!gWyO~YRp{Z>0mX3`I zR#)e4Ha=_;n5Yq*G4-bKx9@C*s-5*l8x!B_M|9p`4GrHU$RN$%@$$!{*H^;zjdk~L z{+-<a^jyT;PwRfAvTah*iS2(mef5i7b@u(y>AJSJ)7Eb8cyrt0UEDdhH#hD&H~05S zDGMF(JUUq|daJ$|<FtQ!ZMV%l9rU|;u|zJjUw7uZHKK6^Yvlh-6*6@_72>jK!%C!) za)A>(3&0)hCRyezPKOjWtrZ;#M$8(EI275KckP(d=QJlXF?3(ajZ`%SL1Cs}a=SL9 zE`Rds{hH*}$-ckSr!Cid8Yue2DKsKUP1$hEjQQ{6YQ_1!&Y0t4WoY?g(|kppjB{OY zrYNU9wtA?fto)zBfOTs`^)h9FleedCd$Xtcm)VAD*}nG+N;}_o<iyTC`LN(>inF!Z zi%TDREw;%Q?U=1{o`GeV#5CO(^0Qu7M8Ebr6P5n<?YG1JC$5{#IAVUo&xk#<wnn^K zFKKCj0~9!>p8jO`=*R2NJ*xTJ#d`~KFWEWFwKwg~J9o-=?@ZInyDsuFPkQ>v(kQcc zvf;G1N9Hbb`EtpM^>g%|*>M%qqh>8y&6A^36FXs9N4LGJ=>Z0-FY-=X9_{(^bXMxl zZ|(WsQvKikymojiE9Xvi3Y}=>%qF+ik@XkDzV<^OcWd9x+x$o7ymDUpHY?|h*suu= z4GqnQ%&M<%srRvZdHrLA(%ox6oc3NT5fBJj1R9T8v~aFNDvOrx=M9BFb*wiSJ>J*T z;k7&AiA{<`J5Tt`ju}TL8Vk?Js#%^<D5K9mS<hPR_VdgZ+YRZqiwhDZjxS&jU70Jo zHeKM>ve&*lr)@p|ZJrzJjEaA&^Y*D#XDtdARA^M&AbjyKlj+rrw;wkOzW<aPTo(29 zPh6hP(|6%1uZ^c<n>idilze3~d-{hcv#SO-yInSZOXgNe{-yTd2!rG2;@v?T9==nJ zHBH@kQ>iq`yKk<0Xrc1GeZf->OZh(LWYb^0xl}pyovy)*&bZJ!F}-Gz=S${@3tf?D z{INc8+sT_;>1S^wTX-HV&&a;}A|ZZpmg$T6J1wj|K7V_B$Y?@~s^4W^Pd@&z1glo1 z&+J)6*4-1fE#jGTI`+~X=Zddd=T3Wyb|kNp=?m#;J+@*(<X)A&xpk}MQeU^O*>NLu zThNrHatks{wa;fgecSIl?Z9ECNy#gO8QY&lPT#TSy!*_lPi;(Q+?@H^@S5nWBo6z# z&o;U3FYkNq@b=ujw`<<a+9|zJUC$%=khot`!1@dBYr=&$8L5;q-YhH4Uh?S1b6(!* zTMFk%$IBln{FB04A@O06$|)BIv(3|9W?v6pb-U|GN!G2)w&6`Wl2w(=uP=&5a4lNU zu}16Dgs!QG0Srb)MpmH<>y-oq!uE1P6R3lOBNr1#zDn5MyD<z;R{#C0SESX^z~-KJ zTxEm&-Bp)Al^lI+w|1_zb-G-y)gGT9k8QdM7n&b$`B{7D!P!EK>Fzt9PL27vH?VQW zbT|I3dpsi6N>q2Ax-D;WwI-+0dZppC9}QO1nXhoL{0&*VJKf-`;f%vIkAI%A`O{y| z`BdsaBg^Yo{0i=~e(~11=3BPw{aUv1v}yCZ+=)}$PMmTJxWjOZ|6AKD_E~qA)!w=m ztFvASwBdo@di|=7cN;eR`Ok2$a%M+F&uSr|jw#+vGPPYh-MEc+Z`io{q(RHlRD(II zR>k#K1$K8F3%VdF%e+?mXUV!c`J-E7g)NHor`k`9-F(a9Pn%d=PSK{<Q%l?%58uv< zS)QV-$jKz9UYKs*5L2&wcI)Pd7xynec1enhZJ&O3XH4jw=OvG&^iR%tyS}&AI<>K1 zsI0qe=44A3OO}@xi&sYbFaMSsEi3EY@>c5IGRvFg)f-N&E@8W*E_-jqDWihpFPz?I zd`Om@c`otH%_n|^a=n{&a6Ob@^1E=ZRJBZTp%y5*ShvN#74}WPt|nDs-+nji-Ob}U zrBxlF?Jg_UbWWersk)2t0sDi!FR$N}`Kng*J$3F=okbj~jEsyd3L1-)q)&?SH2Ks_ zbrot!;ZQty;hz?dT6)HVv?or#*KX<X@xP@a@izaGNrBzE*Q{HvU7nfVd#&Se%)7Yj z%fy-u)b!@8oxAB;(8O-Jy~=_Y>_eA6$?V(rc5SrLk-ImhID~7&Z(tOT@l<m!C|)eO z*3QJ(?V8%Tt7m&RuUoy}Jy_$#@uQ~>TBS}hv&nmCDb>F{vb8}-=9ltI`B*D`<5h9H zALdm2c`a4A#HIg&-(COqu8%jh?{cnhKflQ*EA!P`1?IkewzBcJC*^YVbDoLR^b6>5 zahRNE#s2DmylH*j$@@Gl*7{SonM|m?nIbGvU35u(*)l%{yKJ3`YjbMi)N^cKzLl9( zod5Wf!SXaWjfPD>4xQGpd%wy^%)`x!ZwW7d=;VKUjy#q*eEi*!&(rFa+YHyOsFr)8 z-5~cwdCM=)x*pjazn#h5>ni+iKQS)U+4ee-!@D$uqkRg4dZGG4b=TQpGiQA|T02qb z_6Gy4gNsa$R5dUKsZ8?sTbg$yadmcT@%GR--=zUPEDrfBMk^<ZGMrlE#2MlRO0Y}~ zpuXv%VnO*wA&lx=T^9r#`4%jGv7lc>ZuJFljRzrG1QxBFAjD?G#~)A=7}59g@afYJ z-?dA3^Q_sBkhQKzbgqg_r(6qr>e?sSvo9qn8=YNsF}m2sboCFuYH@-1$u4?5F6B-$ zXWnFI{BrwMQnd4f*Aq7%xfyZJ_~-WQU6U<dT(53sR_d5x@^Re`pMcz!#jiS(BHk9* zwPw6oa;>t*Y-Ps0UT*Pca@t#VADegeowf3jr%z7pGFX3NqDb14^BJPymR0E~jrWrH zmt^Wzovl`z_VC@8Zs!dj<|`FeiX1zg_)c0W)h|}XYh_yj|997aXLjw{^Xsu#U)}xY z`SoJ8R%Yw0=RK~}dTo+&DQ|}K#-kgJTRLi&>2be&vMXv&SDdo2<hRp7x7J2JlN6tH zGtp%UgZk-^Q)@O@?vZo*ZMgAF?^Gu--$!Lz?mH?xm~gB8V&bw__X_2Drd>DfIeqKT zo2oa{?00Uv+m@uenqTx?zM#d|%C7UFQ|BIU?w$DCXYPfq&68!>-t~WvP(Qge_qJ`M zvhOluo_h5=b8>}@PRvosmR_yk<-_rr|7!NzPnp7}bxm$nS!_RX|Ma?pZ|t0I8SWH3 zRV4Aq>7KFtRRt--p0%tq@@D*1IXUO8f?nx=h7(b`v$ktKayh1YWb@|w3GyfIg>`%o zKJn%s!?S4VpPuKcH!VosWN`ei&_uncLWRz^_RE9Mp4}EbFD-hq=#rYb`ycr~`p$Us z=H@4#4Bwo1lHYgdT)NreiBqk$r~Nop_hgBuk>0O~%T_O3eqitNSC6E2*R1GxJiYqi z4xK!)j>|4jZP&ljF;STyQEBx)^I~jaN71*O+2>LxMe`^zF){JWbpPEk<3R881$O+8 zHoV!VEO_;m;=}g7bp5)M`FuXHTkWbUOSswQR?d4FIrX#dF%w7=OhKUqbg%}C`BhQb zDy5A-_qbN>3^+BV!?3e4{hDfb?cC&TJ7%6%&F?rYIrCUi@vf7%L-OwGyS%pcXx_l% z-Vk;DdgipOdpiQl*{7CCZep12lfvTfkn|+;5htfrTJod)J0&Y)Z_jB9jb5{k>1OBK z=8j`3Y@HJs=GHZOUd&X^aoSO~Bz0=Pbi!4J)QPWEnwS~5*{{Eu|Mh2o%G^7KS3XK^ zoVuvQOKOIX1!HHe&FyvF{BLj1ldOJN?Jt-ca?|Rew&Jf;35K+~`MKdcu3J>jJ{CSh z#`5q!%Na`P`AgSW<(5sj_4q^N%JtiddBXN33!ObD`ZRD;^fsT8YpVTUqhq5!9-8&x z<Ey{Qr&ro>3T!s|F3{ub!eG<ZwP$vq@D?R$CuRkPu4xX?+|8lI#Kg3qO5tg}arw-L z7B7;M+<t9Zxgn}3nfdJ-(X$7xU#a42oi2U;zG+9t8NaGsacXNmTO6MLpF!q7!vx!t z_vW6o<Db1OG~skbi=M*WuxH<vuILohiT@DwPkegj_T1$LXP;Jl?RsXlZ%Mq<<E4zO zLULM4Q`uL2Sp+Uyn3$M2ek(M1Z*&aeaCPjGbd+}q&hL2DEO;ky-JPrz^K6Q~M{ur6 zU7&PCQr6wCacj}mnvS!DJ)5&0RXzMX{gd{?82^bDmfyac_xbVpPKk8=y(GOeH~Nf` z))ZxB>4d*Ad2*Al*1Wr0c0Ip&{i?59>;isN@B3HyR(|&4kMVW)^G&;_TXv+UK8>{S zV`8~D*>_^4ysw*@9qYjt8={mYJJb6ozx`8PvFA@#?~Dywn@wK#EM4%iwqCR?JMuN> znW{}<r_3L_^WWS4t#@0*y}$GBw9GJEU&vB>ec#Jt#uh(MpR+t?`P1mrv+B0A{rOXN zDec^&D4)^SrsDg+lkskU*RB5yn|J^H{KtMV``heqRS(iW)#L`X@j0%qyqmJk$^SpY z6|U^Nn<joaC-i0Q@)?muk~62@);V+fY3&k*15O(p%2*iKJ0srj`Znjxvq){PBT0&h zW#Pp|mUj2lPNynFm3f_hH?ccc$?${JkM*+G_xw8ZPd{R9^3C(VS3k`A^HZ;W^YiLe zf8wlG7a1wH9}WMlt*E?fM)-T)G}a=8PUctYFWgsU?A;N0J8JXZ$$x@=Ja5~#FZu5- zn|*P&_(K1zoO*fNDTg%?$q5ExZU%yP1!Q#J#);fgs^1*<FHD{9^x<#ylC81E0(Z3M z<gOF$=xkYS|FUt*X4lfviYe>utKHLn`}6iT-Ou6x0h@Ju!g!L`{89eTa5QP(nUYr< z`MET|FG;seC^i1iVEE#6e601(dHul_aSaTK3!-~6;jKRh2S*N$#R^KQED8n=2@MBX zjn{a;zaUl;v!}3dX`iaF?txcNPuB1H81?YgwbQqDWv>wA*!Jl8yS*+pXHG2(Wpl_^ z33PA~0F8JyfI*W83kwVLMRwJHuHWmE%h;2T@A&<^|NIj}y;G~XcKul4R(`C^t@uv) zDMLXf)_-dkJ^Oig?)(s+&oAzMw0?GD&0*z_@yB8pA9$SnJzV%*s`tcomJ#Oh@tZA@ zpByr7n3}^e@AB$@j+Gy6yn@9$XP$RHaX;HX-^VKG)fN|lUn{t}IFj}(zE~9qnyv$5 z79-HsC55k{E^_7J(%OboSZ*#+a<FQ8u<>K*vt)yfI;nGHWm?{Bw=&$c+JUK=!EEBA zf7wwbuFuWVdM8I5v9K?#k-z;z_U6$~2i`t0VBF^}p733J^IxfBE^j)wIjx<&dfM~y z@_6(8$N%n5N`Lew>+XHYJQ)_%gHOYA7Rsz(XIq^t$=SS8Vfxj|t97T-l2mTWUhM1L z&+_fMy0Xk4o9ZGX&pCf*@zm}(9Pw^u^5r9X`*vQg(-kzfyLfS7#m%_M7VTUA&OM%% z7C5(~KDSqc<8CiU<IcuR=I0kvwzqmm>B_ioK2s^yF=Jlpgkx|0_+~AP`M9{`p@ds` z<gaCke~+;7)kNrg{jlZuucD)NuFtRbJ+ZTSm@oaoJSi%j)1&j$35m|Cwwseo+5MGH zi~eUg{%ZbZiInwID_)<rZa(yJPR`jK5g%4v=D4n{ETEDs%b@!=GVijl=C5Sl?3}H; zPE9@@p||OVzc*t=h2_WKZ$D3cFKj(4QSx~1hYn!{mx)ho7$UPh+B>(LzFS=h+BxDl zp~Glm;<F{^Sl9l%*kO0`<+bz$QQPm!^%sUp?D%%ebvo}xtBDs*{G7k&^ZJ<cMw>0- zL5cNKbdM)eYQ@WR<YI0K6!^73;q!@O$4;-fI5k9Xo$s#QO6o#K4>vttHCfQc>&Tgs zDucL*8XSu4Awo?&jsb|I3rW9Rt6ErCB;Mt-^BapC*IF5oa-n~lPx{rv9<}Z_v)?Vv zjqypH9lK1uZQ<lw*M2XvNt`gZ^jO*B6P<<$5vO!6{bJZL{ljN_|LyKhyZ<xXITG!A z)i2aXD$j1V)sYEq3o3U+2@6La_sltR<j+hQzNgO$(nC@w=&qI%Zhvzofu)hb$<4`n zukQ2JYuCo5ohqDjq{<-PRrf=BVfE`ifo(N2OgPMLx*2UQYrJL17A5~;SJj_aKK|vr z-WA)vJl%BY)$$Pip2n5~2Gbi^EMhHY%sB0rJV&c%vEeQi4|#zYZ6@%zM1j?UWyL)T zITM)_gi@*)Y(i!p(J_d;d%Hb0{qH9Ey|aaMgl@akznb}<fum{X?3!QhFMcimQKviW z$LD|R>`k{bo_+FN&1O?Fe`xXCASR>Mz$sQ+mc0MY9q;z~eb0Y}hp+QiT(`&xO?F~0 z{OaxN-+r@n^*ZHgOHSWSt%S6NVU-p>nj=LZFkn&N2^A5SMI5T|(G*1FJF<p4F)=am zl<tXHs586bbF5hEDWiQwof9WB3cXeQyV!r#^=<1m$Ej6qI{GX9VtPI!_rp9r52Izr z)Cwj?L>y`O&(OBtwXLRN#*BGA6SpPL$o|uw8Q&N?-RVPiZ(6`AL!*f^rY-6JwDHw1 zy|nY}+tiYxOFk)G?lBMxo}!eqsVSL>XAR4YpX~{cKgFE9p3(Dgr?A}ns+~N4j~SlX zVX{b>Inhu-TyCb=#j168C)%%yOPl(w^&h|KsSh`j+51epRx1UxJW5?TbI#ZLcPjh8 zL`(hIJL~mriNm~GgD%fZ;jb=Q;^fSe-(!EJM~z3-_&bvW|E^pA8D2*JT@(K```td< zkBkxj8NPm(Ho0RSru;Q|=YNJpH~urcbpM_H!?6D9k3+Z4Pgt{T<NnTV#r=PeZCY`B zq21i$Z?8_X{Li2%_;2Pv{`jxP_A8&)*QVWld%N8=;;Wa!iIlmQgp`*r@?CVa{!`if z%YuR*tNO*1*F1mnaq;fYI}-}Ccg<d$In^m5V9xSAybjY|vddpg?l;dnr!4cIVVm6Y z<6WQokF0KeCo}tboN8I}HJ{Yfo7;Vkerx!+Ml$d6zp2`f-tYN1qyIlc@So1x9(|QR z&HS{t7ykH>cWVB7{mHhI8w5Iee<`kJ=U=J*YS%3rtKjuUm-oHg?k8Cw?znEMAbjN% zsInt~6&AFFC^fRQ3TiYh3ILTms5od<2L}fS9}`!3t%%4u!wtDJ*whdFSgEyrf8T+V zt3vL(sB;=9?&|n*C415F+|n&ciSP6?=Bcj#G`H8S{O#h-nL1Xltn+#jbj-pZ3ZyG< z=`Fp!>eB6pK{t*(=ABh(EO{oiaN^CF+?%E6mLEOVws~1ovbNg8o+X|a8+rc*-D6uh zKjVi=rCG=KY1Y~sK4r}NXKr;`q10f<ku#ouIC`8Jw&wpcmtS`I`{wXdov*q3|1)&& z5@S0(aYe`bFUO1L?Qi<}pW)o|uLYm~Go%?_eA;_+YyA80Jl9R4GmZ(fa0)%~JY4cA zF8iO=<~e8f`cLjDIGyw@J}>!{+1+-T-HVPyPqKZ)!D5rF-s89b7Sp}!4_>af-8sKs zH@i|={kq_XG_B*u7wrgk4OqA9Kf~KYf`UDD2QtLogee&cT%S3!O5a0a!XnTx1Gr)( zieM3Q4Sv?ezlv*$qktpQ#0)I!bA^IyYF5QRAtBk17HBAFso9n|#{Ut030^bJA_|}5 I;{SgW00(HhR{#J2 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/_tarski/headers/greytree-thumb.jpg b/wp-content/themes/vanilla/_tarski/headers/greytree-thumb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bcc5796387d0467f362281066b0bb9f5b6080759 GIT binary patch literal 8749 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 L*6dv>|Nol+lA?s; literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/_tarski/headers/greytree.jpg b/wp-content/themes/vanilla/_tarski/headers/greytree.jpg new file mode 100644 index 0000000000000000000000000000000000000000..564cdae67da51316c6b117084160d48da36b8a56 GIT binary patch literal 23355 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 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/_tarski/headers/mountain-thumb.png b/wp-content/themes/vanilla/_tarski/headers/mountain-thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..09c7ee6e09074371ddd5720e48d486ad77ef7b3f GIT binary patch literal 2030 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 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/_tarski/headers/mountain.png b/wp-content/themes/vanilla/_tarski/headers/mountain.png new file mode 100644 index 0000000000000000000000000000000000000000..f974acf51960507f488379b6e2d933264b798a9d GIT binary patch literal 4279 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 A=l}o! literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/_tarski/headers/orbits-thumb.gif b/wp-content/themes/vanilla/_tarski/headers/orbits-thumb.gif new file mode 100644 index 0000000000000000000000000000000000000000..f0627ba46addaaedc234bdfa855567648b3d44ad GIT binary patch literal 11497 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 Tj@Q?m=&w0B|IbN&4hCxg+#I&c literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/_tarski/headers/orbits.gif b/wp-content/themes/vanilla/_tarski/headers/orbits.gif new file mode 100644 index 0000000000000000000000000000000000000000..d72423dd9a8e3309f5e480d9805bbe7ae7d3f67c GIT binary patch literal 71800 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 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/_tarski/headers/splatter-thumb.png b/wp-content/themes/vanilla/_tarski/headers/splatter-thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..8aa70e51aff863d27c0917a40816137949f5e554 GIT binary patch literal 6060 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 E0GF}vApigX literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/_tarski/headers/splatter.png b/wp-content/themes/vanilla/_tarski/headers/splatter.png new file mode 100644 index 0000000000000000000000000000000000000000..aa8b936be5655b36f266364fbf8797794e81b5d9 GIT binary patch literal 17104 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�qFB@S50{@F&VB!EBR^{NJR=?I>aj& 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 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/_tarski/headers/spots-thumb.gif b/wp-content/themes/vanilla/_tarski/headers/spots-thumb.gif new file mode 100644 index 0000000000000000000000000000000000000000..aab9174473448c0e85e20e93e9bececaf4734cda GIT binary patch literal 920 zcmZ?wbhEHboW?MX;VJ{e^EdB*{`&pn=dYtKF8^0CeE9tJ<Cm}Be*FCW?fcj7KmMPL z{r_ys|NZv=e*gae_T>N5$xm0WzEWEH|LemCvu1sJ{P_P)-Tw!i-kmt{{_NTRcc%US z_vim6iGP3pe!hPFn7jL<g$w_D`}TjA!Sf9pj(d3g|9JK1+qW;aZ27-Y^n7yi^G%!n z|9t!7<;(x8neX)X|9^k}(V|6vfBt;>^y&Zq{~3q_ia%Mv3Uxpv$WIJx{}0S4@X(R! zKe43fWRBJR3(Ir7)<&(rv8L?w+p7H!3c@w?W}knt#mYNw_x%q$cId9Z{XW~O?)>}Y zuXT-0r47w(?dh!@-96D=y%Q$(Pn^;*dFqVD=`-h4%$~cTaQ?z2S&NshNL{{iP2B3W z8*&UcZb@6eb?f#W8+YwqyLaEp0|%ELKC<xG@wq2Y%{+5<>iG+kHeWt+=~~Z?o71kA zF|ji?J$TfpEvvfdUJ)z9JGQ#F@9X55nUysQZig_v`}efs*H31K4}5IZ-)sUZHs^CS zH8Kc&sI&-pG>?<x?aYK7e0>M%YwUJuXSll@V-&ZzH<6toPJWu+_X7@%22AWz%TM%j zi*p?5{x2pV_2Tu3Uh#{I_V+1?E-T60xXf>&WACmUt<dza^=_wEO^pg)79VKJv${`b z<;JwT3w*P?v~N3R-&ZTrzV3f#SMiHScZ<v4Pv2K}`~|O1hQY&4?c$7ne~ueGw&{~! z9;q{v>**;Yz3^)~Ge0Mv?{QR*TWuVWX}|oc+cPHPdHZKnM?IdRJSoAWL*@0AbGFy{ zT<gU?{wWjxbM8aO=EraL*-qGAbm!#b6VHrozr9|_SUKxj->ltPXPR8(#r$W~Bz&&B z_&&6MdTs3YqKEsZo}X41^*in3<g4=2{)hjMWn3|}AzaX7YGa_{iz!Xsh8<IyT^&#K zw%iQJ=xx26z|q@wwqV89p7!Gn6=$;^v~HZnt->=Y%Hy76T04uVfCB@w)(*4t-q&5f zx3L<XTHzpn`mNxS?xKtXPW>!%E*vjB`jahiaz@Wq#z~3{oO36H3u(HudFUl1d&eKT zc1@OB<3j_pwdHr;?&N7V+B*&&c-cK?_l3^xxjQGkSf*X|?j-BHEeu&x=GT1nT%pr` zPf<gsTW#tJ+1^b;ni2h{3|B_9g=Ix9o0WEK<+AB^S2fEPuM#`Da>cS$uU4&56J%kq F1_0M~;@$uN literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/_tarski/headers/spots.gif b/wp-content/themes/vanilla/_tarski/headers/spots.gif new file mode 100644 index 0000000000000000000000000000000000000000..4e5963cd52b3766dcbefde2fb2e687f396a8dfdf GIT binary patch literal 2834 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 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/_tarski/headers/thoughtwind-thumb.jpg b/wp-content/themes/vanilla/_tarski/headers/thoughtwind-thumb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bdb429b289f70adb85d1141492f9d63fe8200106 GIT binary patch literal 7220 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 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/_tarski/headers/thoughtwind.jpg b/wp-content/themes/vanilla/_tarski/headers/thoughtwind.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3bc4b5a0546760faeeb587660d8ca0ba0b64ec69 GIT binary patch literal 22855 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Γ~7RuS3QY#aEi$i`_O!%ch}^G zX@$qUV)bX#S*h4u{<(tv4&M)p*={VyE`5`p`opa7s^5`X3CC?K9a`T_mhE7ve$=qg zbTd~7?;isrA=lf-1R0kJ9CEvK-{3Cmb`QqiIo$oJ_rE@vn0HY2t@7om>3e&vjaS%f z^}n7VbEosI_|gCdh8w(XDORm4g|Fs>>RsK^?HO`nwWo8btogkep{%SuottX==f64{ zSlFRhYE<L<Tl>o7t~EPnoQ<1!h}TYT$#?Gm45mq|JP-CCnq6kgrZw}Hhmig~3$Ci_ zgwRWO9E7j)NVu#y!265q(R!2G$i=gQVm{Au`zleY@cz2ml$`P+9d4c650;O#?=;5E z5S7h8+HY?2M7hjlt$mw@Pp++e{FD?Sw^!CRAGFw`ujXD_Ex9tPfBuO?Mjhk8Jv-*@ zx#;yn?fCoqTuZ_?FYH;-JEcD>w>9GJq3M&BFZw%0mf_GU$8F2BPSxxC)|_0nytrKO zKSQJGfzU60VePnjdH)&yUqvMBRYh0w3_YSYRXp(3)8o@vDjsV6=!A}`ET3l7ksl92 z)u)Q@^)oxcYV_$u#e$`Ee|WZW%*aWO?~3m{pQB)4{LV#1gYVFc%tozwvmSeFJ*8o= za8rh1h{*L<yu$BK+)ij}j<bB(bhBV*-mKko%$8~F$P?)j-X{<tv51j<nHcXQNVdzI zU>*~iwbpDM%Z_=6MWdpYcYS^Twrf?RqmM?^sWlqq>>>;29WpZwKF(?+oLTbYc-Z<r zlRa4{SqlG7+}~%?6w37eZENqkqajN=1h=s?wM;U+%xn;*k!oAlyyNJkwYwH3Mdvei zB&)b=Jg!nAyG!u4$`L8AceWn>l9N{6T)EY*lIfQDlW8%oqTa{qk{R=QCiGki>;7<g zpX<hqNl$sh+=3sO9nH`;|9)lR%o+7l3b#J!FRqWBaU^7ZZ|Caj>g4PLy81JwPcHtT z?_d0QVve-trbkn=rKfp1UF)+ud5BA0%rmoWQ&G5yQqPv#$=5%gY<lEnvgVSLx$fon zhmKA9eK(K0RE5DmYZg!E<QzkxqwDjdp1Dn3^5pIP+V+N1CyN!iTz{r$XBo8JC}!KQ z+$M7)%WnD-nG>ZNf*;Nv-)XUW9m^}3<Kn9(1#D_#Sk2q3-L)|CUDy1(I$XPp%XsQq zB|<ri4yoE`ox7hGyp!SE&pDw!Hq}gy$_rktvhO?^%CjJ7zG!`$*4-mZZcY2G=<0v5 zYw4v|hqTor4yKhRaLS+2ynG;Oz1ohQ)2ugWc`z4$vNTy<kTuCWW5Zsa^eWz6H5;^2 zb5)P7vD-Phhs#pDwn1W5Z1J=1XGz-<oR<H+b!eUY279i@9$w3L?J3h$J<@Z$$h)3L z(|PNi=AtKmK8DDiz3a-!ew!=krng7MTBg1Q^)dlVUMNd{wOFn8XAeu|Y7g1^OX2^N zj(<(i`lXSY0dHSG5)PcZ{{J;Zl3u5@w=k4bF>%-Xw@ovdmUx#~Nb2MVZ_|vZP3|ho ze)ZWtYEEWF)0(OZ>5aeGOpcrtmC<PG(rlX{wDqhi!*}VVi6=vXxy6OM))s$w+vOzn zD(k?ZEw<-eHh0`rF*4pOa{a#2lOR=*%lEmN!V3!b8b-%TnjU2}Y+b?XA2T6KV}j$M zgOCP_OlY!&gs`th*~<^jzunhqg)h?L-8V;L>w2yJ#VZfYay+~8*jk7CWj}N`BuC1= zI#H&!@5e14&B)a6hmK7R^NF~$YHPuw>ER;gU28Kg?&`@5Il9KyV;z_8I>ANFM}kGS zus*ruaOcA1<BYl+dlz1gtlwzV7JMh+QA%OC!aAu-ZmO1U)gKqi7aoXK;_!Zwu%zql zjmtIN8C+@)e=!EWZ@O8qMx1TG!0mlzd-RIq+Vf?CM9$h2dQIMT<Uz_}ZiO9B&WO#v zGKWzmXQtjlCa%uV8N4gpeWq@e5D~q%-lY9<%RKjQyLs4rCmvxp5$BrcQ@OwMzS7OC zqSg<l2PX7fNZ~9OW_Esc%=~+SQDF8N9b2=o1<O))m6&v`DVJEaMP<{)UVpDgE3{i9 zrFyhh@4ILBBeegu`B^DBX{nD62Cd1w)hm>LbuC#mx5M`L+g8nebJwn!#AvHD;fpNe zftIwzE3S%3oXB%)Yuoo+)N5UBzGsB6*M%QR(>T{25=&NkV`;SESN0^X)eEh*98yz0 z68^hTtLJL|@;wvW{D0Z7bUcpV9JpQiQGpiYHtEujhgP|1J~44gx3k^%C-k`2+~dcb z`uUbihiv<H;y_l$%lkQIEAm@(Me?uk%Y^crc=si5>&vdq>rbtgk3MJCHZ?k8*^c^! zF3umPE2~y7fVPOy5+{he|NnKQ1bQ^KYez#>*Q2!s@r+%!cdTzX8odnE!(VkWNl3p@ zmQRyy!Y0WJ@2pA^C#GqvG(GaT>aw&)hvV6m{!yCixN{^9P3PX-|DIR)FjE;v$6C!z z>o2#>n5nF^ZP^*~!@g<W&t3bBs^_RC?~>E#mii(o=CVl1ZplLTn{huP<~F^{Tfg7y zvPh6d$w>o9{#judp0ujiUi9Y!O-7X~@4a?3`h8hlYbg}dQ}C*-spU#jk<KYSW9PV^ zYOJvl4-?i)S}a(-x<5z9Blg^0!(?BRqpXp<HV*5gJ;b)==gv<pkUsFHAnJp_)^#s3 z<M&JZbNiO<@z=?<(Tu%v*0?3^r%?1FP0l(Yp^f2HdH#Jao7;XbIDOK0SGh8Cs-~RE zJU=!ruj{`y^>01#(C<aDO3IteH$^(zv*#Ly&ADC^Byh=QF01V}3&~ctNa?o%bv-<- zCW;>y$T5p<b?xDs5#aTT_2;7&)jPWz_#XdV)0r+Xqtf4Z()X~o1%Kn%gib#2l3M@A z%!}!C*m8BAn$wrm?ib$9Ia$h4#`5K8Xzomrd45}MS>3euzI{AtsW0b;mt7ls!+mEi zVJu&0`cWcOFn96o*#T{aC;A@OPt%%um*Z{h)wPG!d)W@(=UV79VYg8CM|svqnqA>m zdnRnqV*1K?eVImb)xH+Fn@@DzlVVh@F7FeVrY*Wz(kr;2Od?d2T_{qbVDgR2k7PH7 zRxFsbN+zV_slUAZ>#lWs_Ev}}$@Z2lSf@4hY^8Nmmc#qMJ66RP7aVnZ=Pmam)VtS_ z_tK2jfeO4`d!s+ad)k!BrXFRUn4VMPRQD<PlTKj$4KpX#xP=p)agFv88bVxon#*Eg zVACXC#oj3iS3{D0ew<q5#vaNpBDDH&e*433M|)RJ-65+{=y#fT&$?{2e>XIz3oY2T zVzHEd!(pF_sX-==t|Et;Li93EI=u2@I;Ao3GB-QCMY6EWPOxE9x9k;GQ&#nFQ|oy* zZ9aRt{nBdbV(C)084*)l3NIIx9Xc@8QK|W;W7;3PIf32{<@Un453CZMv`hmutR5zX zPPp*CTWI6l#kK!V9?f)nbcwrl-N8TZF)T(s9S+-Om+VhHFaP=DLEn7}A<?3tYc^Th z$r>(^{B9C<Pw=GM<DEyvyh2yp`L%!d0+qaoZzm?*?=#)Sektv@^nBsVN;fkqb7HpI zI)4(i(3~;r{Ka6oNrGSM^GxQ8=vw(6`Z7U2xoP@Q-rAsN_Vq`S_BbX^yq+d<?9w}r z`}VuJwjKyya8!?L@ivV(WtBGux+`O+_Ez-mJzw=BDOiMe>yq!+Gg&m^+)cO)7;`60 z=-Bk-tguJ7&lW*0$=Q{2O4c`glbk4VdBxf3J&W&6S(<ropU6p5mGJMMOy&qJ5e(_c z-QIa<1=IAcyk|rEo&^86wqw=r+^7f@#%=eD%-3nnbu7;>u~TE*ZSPQ5_hZ$~r!K5w zUfb{f`WUk5k&0=i+0XwBd0La>y@fRMk~G5Cv?sR)?f80|W5$J(+BGYGeYmuC`WdlH zfhkUox3;Xi?`AS((__DFJ11Y;GBtEpSMC?S<I>@>c9D$PvrBlrBqucZ?+or*zxndp zr4tm&6tz$OJ8^%*+pZ<Q7TvCT6J8u8{60o&+FhM&`6FfWn`~+fLv|*AO?m3oVAo)< z>XT^L+P(I|UArXGCb{&P82KBs_L+*NrI~~>-<ib|`o({0N$ABAZe61Vd$%O`99}r} zyd}psy|YuNsNE0+SFNBD6>a`vKf#gEQZ}tuJcxm@g%f=?Pyajhz?nCK77^Cqv9C3u zSC59BSa|&OHcd{qwaZRwE4w+QvUl2YSYK9DxZkg;@M!biupgPhk20HP&SY`ex;xpu zp!v_-b5hAi1UKH+(g?7tQ-9tz>&)8Vi_FVRy5n}2-sckkbU!EHE;E<Gilbq*5p}00 zzP&E`DC72qS5JO3`oHegU2*#5fz~_M4_40!V$_tq`q<-$`ojyUDLVsu6(qkuYMwmr zr`VO4u%lv|q_($tux-}PzigB3RlyT>#Ut+qx9URaoyt!ebI<g8UC-Yw6)N5u5zzJM zgow>Fj`Fp9Txn_{Q8%Z5J18MpsQcj0_7%)KkLFfeE*1C~cqh?S;fV0PyQ*s#wyb}6 zvwDtb&KsA=^ndXebhpf~V%t^t`=-@}dad8}M>hR9Ha9QlSo%p*6Q<=V7Zw^m-S|P_ zPoGv}t(j_l_!aFBA5EDPTZ5`kcl;D--5Y#i<I69MT}#b#Emj+K&F6aP#ituoF>7Jh zrnw(O4w_z_!&u;Gd*h3|n?~@Sy(I~eC&T13=5-l{nXkMrd4F>4)LSMWzW;m}!o#JS zCH6?$tHJL-gPUl`j;#+RwC=3Xa1>E^G({v_$mxvR*#Q3?M>)UEU$<u3CU*taD>+y1 zwZAwpWmELc)O44d@kMOM4|54j7m48Z&~Upg81?O_rpg3QmD!%B_G-6AP57nxvWe3^ zYsRV*7fxKw-(<f0v}l$5Q~#;6UI$qHy;A?;TFcUo#LZ{DjQc+&$#eW?=$8Ju_{53T z*RBLqe?Os!HoA&5r?wyeI4gM41+F~IHvXYB-*b`H6AQx{0+QN3g68F-ELL4A^p5$U z9ka(UT#Sb!F`zKi-ji{~pTg8U#_V9Po`46Q)+O?Nn)!cTcI{qqG@4mNkNLQW-in2X zR{0k+Rth^dT~eC#s+`xjm96uE^%L&NJwcpnQxZh@w8||s=L@Y7>y-6>TXt;5sj#&N zgj;*Jn`CwGxG&1eArj7P9izzd*gHG5;fu;+Pa)@%LJMvuKW>`IwBXELyK8J-Mw-%> zW=OKgY?T+h&zulc-QU){KRzc{N$2#*TR8%eruWVlTi)G2)!kJx&+zJjt0^ki-5j)i ze?9Hfx~c78Qy8MNsqp3X<D#DV@1E?Kb8B^BC%fkDBj4f|uROH+ZSKzH?}EC2tMB}N zH00eD>z|eZP4?54{M!@Sk!@CV)7Ye;$?E!68_nw~E3ICMTW?={%>G&KSsPzNucYhQ z<w+ZNvlcq|R`az~G<R)ZURjlWa;MLg?dzW8L`#Rfs%5fHWiyeRo$LI#>B8}?C3U|3 zTg9%}di_Y`Ob%D7Tf2+*X2U|!4~JG2zuF%jDyS>kD&_qCzG$@Qcf;Q|Bd`B-_X!o! zTU7Bw@Q~G&$xg@SF^hWT-Q_ux$P#{-YfVH}eV^9Jnx#*z*H#Bar>rT<blbB-e$)I@ z%YWW}v;L3xn+IxB-%TqkyH<8F>eeyE?Tt>ZQeQ%4*}__D5GBzLc)bWs8yJJ9Xk{HT z7u;@yOcX|0thy$#)VI|@HSwt4v%;wCE9-N@=6qTH@xX+}xgM+&-dV}8&WJLVGkGTc zH?ep5;ZR>knLoPMkLQ>jIViAQw|C>ixbzjbrQNw&wx4QP9qRessc>5o2d7#kKVwwI ztP4Ed2_l<r@%g^;{N{dBqG6NP8OJQWCtocBR%}~S_0Qt6uxiTo&==b8+h)vET-thb zpJL+-?Yeb~7swlTRm}0-RJ-i{x*NLX-g>5<QvP1&?wnS9q2d3)NX_@+@heldecZal zW~oENzoX(m>SH>$-QbY(&RusYpmJr9-38fye;j=ld%siPCU}KU{lKh;4y@YKoW9!q z6nh}Tq3}u8`a#N^j9Fi=&GB%OQ~MpbHKQ)%<)ogKi}eJ}N|$AAtD3?Vowi<fiSuSn zJLMlwABDZ%lx$!U=%;0{b%BI<?eF=IyEg8wm=&4&JihN?bMv*vZIY^~Vp$^L3tzA| zoLIGHJCmu3zS<kZFvVxy*0V3EJU-Do)8XFKbvG4O{R*4D>@?G{i=wHwr}95C)O3C& z=XLSt^zGAI?f10Wo&0#?KLbxL*9U27k83xx_PB~n+<0J>RNH!~BZ+QLvb1V6TO;Nz zH%Om2p(*~YJoCL7K~ueyC)p_!C$N?+_;*Lcd)_5UHM@<sri93^7g?aEYs=}STk$pa zcVehghUPx4JJ~0$yfF-U>~b-`G}cL5TI1(=wI{Pa^cmD?swgk&|B?1X{Lulgz2_Y- zy!jGqX04qVXMI{zBvWqo#((oS?TmCvj0uIb|FJg_QHMWKNB6PRzpym9vTLovqqTxv zVIu5IxxR}NyK+6QlpHwe+by?asn2z$kR?s#B1-dhGAC#$-MnyBYVm;w%VNA|uCwk6 z-my+&!Hw+cAAeq(u{hO1&*{R3#0Ta7Bmy^G?Ona&b(d$@7l{T2>95~F&C7+G9#w`f z?>j7&l(tUU`QpLl4TpVn7jSJm(q9v_sp3k=`~`eJrZlxZ@=%&vq;p|y{@GIxmeqvJ zh{!yd$GPCi-y(<Lkmnh(WgNY88XEWe&*NmP=-g&3H|x@Jg*$c5>q7k^PkLC-=3MkU zK7Hds--$D{l=!rRcc?W~JoZ_ezTk14Js-=ht5H%FNmCx5Dva5;S)g^Mn88_VeP@Zk zlOLbl@#Nvz<5wmg+-+aKsV=g5jgw2rN$0Ju+FeV&Px};gcX#V5%a#AwxfU(llPTW! z_;~Ke&<e{FPy3xR7Bj8B=gGQv$>tCIFW27`x${lFPHSSX-=oqWCpzYD6{%*ZtNpM_ z?Dd;Z9aBs1&#iA0O}>7sdGkb7=XH15eL@v?@6@@<^6{O)QZKQuonbe=$?i+%T9`KR z!i2l-H)ZYqgzC*Ietku@^Zk!U>!#0H6~Q-`^JqYmQ3T)NABmw)R^>k2xlHT(dbOWL zvivSx`aZgEUTuo^^zU4vw8!&b#Os6g&z_w+xkY{JfwlZHp#`@^^TACfY|XLt$m5H6 zk_wh|w@mB0OlW3I(8dXJi<xpg7sO9vxixXSZJ){M&it$QxBa+OG0W@{-=Z0pK3cze z|FBnI=<BxRUgge6-OStdH6}++21M&`t&6y1G3SuRl#SATKNip8if(#d?E2wgZj<iP z3xTep%gmN(tuE;GOITsQb))DngN+YEW|<gD&6~aQNDI^S%`+ubN=;u*%v<H+EK)FQ zBkP`m%S^ek>lV4LOfa}DCp7uq`LEOOXIx+AFztuigrgVhdU#$kR~r-_;rc5nbdzCG z?twn51`Vz3UZY3OGh?T1ynW*1ygpXOpE5kJ&pJ4L_R-om<K?3QwHL<z+L?usH)bAY zoAj#hNC}tr(R$fWFWj0NSDZ-6{<-p+?{R0({EtG5b3*sKu}2v^ec!cKAX?Yy^3#~m z?c6dxr?)c7>x6clU**ZY(NpWm#Ft;A_|DjV^4fH*GJWdu85(H}8gUIttJkq!IdYt* z=B)W!|K&_er1~b8EuEL8X)B&J$85^RFHNVzOy!t%gt}zLO?=KRHDB)Ejayq+XKwP8 zGLT7I?l*T=a@O(G#z_f1TPCm8Kfg@W<z&vi>9ObYb3(ZkthbumrzEZT&!Cyfz4GUF zzs-{$wO<uF!|$}ASu_5dtHq;A?H4?2xvd_p-WYaF>mF!q15!t!tviZG8Mh<4kO8F} zwHd4K2b8fqniY{UYqu`@K5k#O!=CXSOt$;CbBTWpzAa+iRFSmpL6;Rz=qAS3U0X!m z6T7x|?U>lLR$bKl{X1rZUf#@W^DKp;6GRfWPjdSvTM*<kwMY76pyT6KvDGpxOjf@W zlf2_YoHy#Qe`?-lGEdc|QTR>o$7O2XsayH?J3sE^6ml|cIdCQ5@^NL~ro^+^3c&$O zegx-aR!k7rYY=+T<Gz)R>9#<_qzb-&9V=e$yD4^1_}*)6_bcmNbhMcQ*F|raJNdb8 z{;N+%xFb(D#D{sWh<3@1wdn5%YT#e2qj;pHccbJ>nKkzJQ~pT?7Pr0p&oDXYLFT&m ziWzZkUy^La+8-(WXP9z#)0vt%v4Jw4A5ZQ$WzKudYTi_aKdZYI-gCOoaI^fWe@>{+ z8c%5hkr2_J@;RZLw*MJcOGmf;m?P-*{&8!N@Uq<}ZWm}Be`IU0%I>niR>&vO7w$=h zA(y08`iw5gDO{P#zTu;VD7Ws`HESY{Nww!izwKJ6r`TqEGC7EGh3v*qwq4tj-P+nW ziX08v{adB*eC{s68xO<O*WQwN|7db@$gd2(tA~Vk=ElDLDc>UZ{IIB_#I+^sU0M1c zwg&%aICa`CF3V_pMDEkV&#J-y%q>)wzF}YH$Q@FC)VpFe2!bLSTdJr>A5Mc+Ke#l& zYr54Q>u#*>N?IE<TPEn@itiGlCp?dOEiHh}0!Afh#)LAL7I-|AEq|5SFs-nwckj-L zD{t>Sz-*Lh6cQ4!N@KCgrT4zsQAx841AR9-he)j6=ymML;<v$vcB}|apTCvkyM!cz z(C^DDH~hV=)%Sp>Q+1n+rp?DJ-OYUQx|`H)AME<=%lGMF`-(>@_8I-1E8kev{^(e< znepVLn>TOYJh0JWPk_{qY3eK0cb;Zg&KG247GkR1+Ql~UM$tkJ`#z?~<lbrWn$IQ) zUtQ%F^1OF)zIxm_z0^(C2Letl-nBtNs@k+D;=EgL2y1*;SO%+K)I-JR)7YH)GVCf= zv4}o7D7D}V`#RCUDc<S_B0j_&PwZOZo+{%L^LO#ZKCQ=+b<GcD{i7bOI9=_uu~X(k zne0celM|QZ>69@SzJ1swP+nB!-0@;>4WCw1ThS*5rwuB(L1up=LOEBqPja|+`eoyW z4*nzaWkQpg+=a{*uDkm&WR<V2zA4Az!Vg>~`yQ0UFXxI~r*u$WG=O3KAv00yItiwY z8#I<5nS0DL(*0>E`%FFeKfCPz%<WfJ)ep4gbLHim0Zs+9SO~Ya<Y;V6Xtsdc??+ST zth~+?Rl4rMg&#d(SN=0p>~3R!f7Dv*pkd+u8b?R2B@dI{Ipp3KEv+#O7YyuLSsR-D zu_nIps9C6xsiUjNQI@sSLVNN!Z5s||GF?+WwQ;eg^ZU!vo?YvXFZ=f+V#lA2VKaC1 zU+r>gWSKR2ADg%2iTB$yBQAB7|1waU(%JCt!2IPuWP*41e%+JQ;NkFw&1{d#it}sM zWJEX}K5*&)|BjFck5UZd!|bbTi%Wl><kYB|V0L?fWTe?sHwI0M$DH}1w?+Cg+oy=k z4RW&5VcYM$);`Qz-fXY`<&P=fc_NP_d=yz}ncZ+F?8O$F@^{CJ3PYU_ym455TGa8b zL&FuWD?u|>aYTD6UuY8lSyQmOyhw#L;DXkyt=98-LPhiS*DdLrvOq%A@8yxC1vTkO ze4<{q?7QZ7u8g`gW7XDweH)|pY~1-(py=^dt8W&!Rvk<UyR%z2HE-GMnvWsV-nOJn z;uKx}J0di#Iq%Y)^963F_kRfN4B?;swj%nF!$O_Px?PWi4nKX;H19{yyt<gU8GCL^ zZ537TeYn0;dB&e$#wVcSz_mMK^~TTx=zS#Qb_KzqA9(IZ*0nLL^Jv)SV3C#656sHg zrgcs0hQ+GZ>nk`OWi8*vbWYdd3FG6-0!y@J&OXd7m49so%U9WtQE}V3?@POLEto33 z@III3hU3q>wx399<>XMA`~AQfjVX2(LK{{yZ#=5Y`6RaUSK(GeKI0SBSH2y)Hak!= zF{u1#S=g`DvZo6rGW&&l7hO*OeavK!m(Z=4{G*i>0+~%SIazGBMRl_1FPH!6GP$YS z&|+b{-<FQgJEmVR6*YYsBXY)PUbMnG$(hYx0yI`%;9sm1tu#IM#1Xj%Zzt+*<Y_;- zp)tMCzEbt!7p4A3XQw4UdGxC9f!cPCLs?&*#xK_?4ClV;rPFb6w}2L()`~q#SUVp7 zS@39eq--z0Pw2+qdz&WJ)ZacDBySLX>S8;?l{yQjCD*F%UR`0><Y8a`xNWM@_TAa@ zdtaa4ufsL(X0(n0@2WFd)p_Ly)@~8@);|)O6vV3;HSxY^;NCEfOxgNVX)At-FVi}v zH_h|TqR>tg-Kf7eRsFx5wbgkmq-Qd*U9+ZA?!FsqvRwWwO+i6luZ=2yS`AtgzI$#| z<~F!DvFKLa!p!P_Kc}YTPulALM^D4%-iLMT7G7x!V^}H6Vf{n`RN#X!w9AYVv7mvJ zcv6O9kXj{SeOgPt9yp=-zAK#dD0frRw)--nUMZ{oZ1m6$PF*OvjAiN{X8xAH>|DA& z$B(Z#YIc>qhU-CSVQA{qnu6Ox;$rNgOP4%aE0r|0C;T|m$~9_kHm+_u>m~}`TJ`mJ zn^Z!|Dp7YwADyUVzhyI)CVOx!ue%}aT{+1r;L$AS^GYjhX6N($;8qao-f8Q`G$%y1 zy?(ipca5vYDOMZzJ~l_)U7cF4<+etu+f?J7uS@&#O0Qp;_iSB5!>PNLx@9kK^Q8I| zCqDkZ>2<8T-@YhED=)u4+8_C6&F@HE<gml&xW;F$WA}eX^dIMDyKt<bSwVfT$5E3V zB1#Jz<xG!?TwEx3e4p0Fi;+G>d>*$2$|Y6>+E3G+mmg%l>_0=|_T?uYZgst#aly%1 z_SBbeKa*B;s`)8~Cm3j5c+%f;;rGK3(KqHrf7DvcQ*G-iR?QK(b+ab#;Id^`UhLNi z)xT1@D0FelyW3(Cmo~0`{K_KONwA{-ajT~27ljbb^{2U<Sh_^xd0)2j$9}T?x%<-} zjpLJV3FjU8p~_W%(#)sPsjfgfVim5a2E|@I`g${bX#=DIRwM{^tx1dt+TQj<XosGN z-ZG6+!?3PLvm=t_B*d<LRCqM?z>i05Js$V&>u7FmySrQJ&xfFjX;ngeH!gj&zC8P< zpXP?$mu7tXQ|Q`ubW8hNsbudXdvlZJv(|oo*{j?c!NAIP_%OG)5W~tFd_Pw4Wj|r> zss7I}wP9Kkm)w%|@jN^)SYPwZEx*0rCotDw^3Ro@jyknWeZTX4;{=D8=#A>V{@YyI zZk%LRifMNJ(O!Ds28WX`cj0RO?!&Ccta@`(oSk;h{mIjr+ckZSqfEPB`@(}cD@A6_ zeVG4!QPgjbtA8uC6AJsD>)5pVB-9)@ux-UgquS;}d#6nNwPDfQxO?CJUGfj(oEiPC zS?JWgGt1Zi@#au5oT9ATk!BUQSZ-m;<`s_~Kb&TDy}NJm)4TO2PcO>7{^VFvro>*m zh^Xs=f&Ma~YSY~MoZ7!d*H065bNRT5IfiR_aVbyXtnE3Wz2{%u@j6~*`2FRiP;Xf^ z@2Tl4LfJc#LBXIEuN76r^T<ut|7P6&I&N>yYdW*;MU{%)xHR{V!BVB23+$dRJgGRd zF5=ZeQ^_sQtz(X#v;X?&75iC<{|pD7q_i*jc4D=&C~_R4*A44YR&HTyKf+=kUFSMw z(d<60yM~|=B(`hUjMXuPVLKkJTc)`^Sj1|^>JrF2?UBZ=l{QC8<UJ3}ayV}?X}e(1 zVn*EsK|gdPUtE&XPrUPpiRa=<kt_{1&vkdzy^<DkoO-ycX63{**`vGPcCAf~Dmki= znI!A9wk|@FX?ko_)zn)pCCW=}j8x2yl`NX2zxLZc#z$5U9;QCJwBcf6haC6*&O7t> z^K;n*1zb1F*tl6hYj?BnF(yejPtPaiYBR;Y^{=p=!+A4t;x5CZnT8ii^;g{2EdJMD z=<)1>^dJ3yN9O;Knd2+A=Ejf3&m?!;xV$gsb$CxG>nf*tom2FWaj^7X?^-JGtEZy7 z-~UE$|K--u*`8Cc$hmpFkGtPmxHV+^r7*o9pB5!1U;hshtK;J~bV*E7=at@m`u)+c z`>&4O=(1vwt)3<)@27RB^z_D3#rhqI-eUXntbae5TGqRA+w9f1;&n6gwRT_L72ebQ zvS-7Q)%Omv7w)ibp1N=YG@NndRq}@s@I-m&vbi5adtY3*&a8VS_~J9|%iG&8clj>* zu%S%ra^d@~9fiy8T0dHq`||rTmUqi)bt3bY{hMl?5Mnb&EBn&yM<>kY?u!swTKxLs z-@Eqx7dw42RrfsIzdGK3f84&GOi!Fo>e)^8&7PQhcjL<omwy|2@zrnBY}nlO*xz?& z?X3JyM<f5uef`(z`fK_7zdT>nys)~yzc0mo@~V?DZabC3mx*zwe%WjG)qeN#qwzeU z{r+F;!@tMu`1aICtM77cUOfAazpK71)0%Pi<uBdyZ-Q&MKA#Q0{OiiRc76Yezdw03 z&3-*aZfWh#uq{Wl_~Jk9o1^JbnpK!pvQA)y#>+FGU;20L6S*&1eSX@$t^edN*KPg# gpW*7G=a0X+YRBJNe(OJjwzh^3cn$(**7|=F01?zhR{#J2 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/_tarski/helpers/admin_helper.php b/wp-content/themes/vanilla/_tarski/helpers/admin_helper.php new file mode 100644 index 000000000..d58ce7427 --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/helpers/admin_helper.php @@ -0,0 +1,455 @@ +<?php + +/** + * detectWPMUadmin() - Detect whether the current user is a WPMU site administrator. + * + * @since 2.0 + * @return boolean + */ +function detectWPMUadmin() { + if(detectWPMU()) { + return is_site_admin(); + } +} + +/** + * can_get_remote() - Detects whether Tarski can download remote files. + * + * Checks if either allow_url_fopen is set or libcurl is available. + * Mainly used by the update notifier to ensure Tarski only attempts to + * use available functionality. + * @since 2.0.3 + * @return boolean + */ +function can_get_remote() { + return (bool) (function_exists('curl_init') || ini_get('allow_url_fopen')); +} + +/** + * cache_is_writable() - Checks if WordPress can write to $file in Tarski's cache directory. + * + * If $file isn't given, the function checks to see if new files can + * be written to the cache directory. + * @since 1.7 + * @param string $file + * @return boolean + */ +function cache_is_writable($file = false) { + if ( $file ) + $cachefile = TARSKICACHE . '/' . $file; + + if ( file_exists($cachefile) ) + return is_writable($cachefile); + else + return is_writable(TARSKICACHE); +} + +/** + * ready_to_delete_options() - Returns true if Tarski is ready to delete its options. + * + * When options are deleted, the time of deletion is saved in Tarski's + * options. This function checks that time against the current time: + * if the current time minus the saved time is greater than three hours + * (i.e. if more than two hours have elapsed since the options were + * deleted) then this function will return true. + * @since 2.0.5 + * @return boolean + */ +function ready_to_delete_options($del_time) { + if(!empty($del_time)) { + $del_time = (int) $del_time; + return (bool) (time() - $del_time) > (3 * 3600); + } +} + +/** + * tarski_upgrade_needed() - Returns true if Tarski needs upgrading. + * + * 'Needs upgrading' is defined as having either no installed version, + * or having an installed version with a lower version number than the + * version number extracted from the main stylesheet. + * @since 2.1 + * @return boolean + */ +function tarski_upgrade_needed() { + if ( get_option('tarski_options') ) { + $installed = get_tarski_option('installed'); + return empty($installed) || version_compare($installed, theme_version('current')) === -1; + } +} + +/** + * tarski_upgrade_and_flush_options() - Upgrades Tarski if needed and flushes options. + * + * @since 2.1 + * @see tarski_upgrade_needed() + * @see tarski_upgrade() + */ +function tarski_upgrade_and_flush_options() { + if ( tarski_upgrade_needed() ) { + tarski_upgrade(); + $tarski_options = new Options; + $tarski_options->tarski_options_get(); + } +} + +/** + * tarski_upgrade_special() - Upgrades Tarski options special cases. + * + * @since 2.3 + * @see tarski_upgrade() + * @param object $options + * @param object $defaults + */ +function tarski_upgrade_special($options, $defaults) { + if ( tarski_should_show_authors() ) + $options->show_authors = true; + + if ( empty($options->centred_theme) && isset($options->centered_theme) ) + $options->centred_theme = true; + + if ( empty($options->show_categories) && isset($options->hide_categories) && ($options->hide_categories == 1) ) + $options->show_categories = false; + +} + +/** + * tarski_upgrade_widgets() - Upgrades old Tarski sidebar options to use widgets. + * + * @since 2.3 + * @see tarski_upgrade() + * @param object $options + * @param object $defaults + */ +function tarski_upgrade_widgets($options, $defaults) { + $widgets = wp_get_sidebars_widgets(false); + $widget_text = get_option('widget_text'); + + // Change sidebar names and initialise new sidebars + if ( empty($widgets['sidebar-main']) && !empty($widgets['sidebar-1']) ) + $widgets['sidebar-main'] = $widgets['sidebar-1']; + + if ( empty($widgets['footer-sidebar']) && !empty($widgets['sidebar-2']) ) + $widgets['footer-sidebar'] = $widgets['sidebar-2']; + + // Main footer widgets + if ( empty($widgets['footer-main']) ) { + $widgets['footer-main'] = array(); + + // Footer blurb + if ( strlen(trim($options->blurb)) ) { + $widget_text[] = array( 'title' => '', 'text' => $options->blurb ); + $wt_num = (int) end(array_keys($widget_text)); + $widgets['footer-main'][] = "text-$wt_num"; + } + + // Recent articles + if ( $options->footer_recent ) + $widgets['footer-main'][] = 'recent-articles'; + } + + // Main sidebar + if ( empty($widgets['sidebar-main']) && $options->sidebar_type == 'tarski' ) { + $widgets['sidebar-main'] = array(); + + // Custom text -> text widget + if( strlen(trim($options->sidebar_custom)) ) { + $widget_text[] = array( 'title' => '', 'text' => $options->sidebar_custom ); + $wt_num = (int) end(array_keys($widget_text)); + $widgets['sidebar-main'][] = "text-$wt_num"; + } + + // Pages list -> pages widget + if($options->sidebar_pages) + $widgets['sidebar-main'][] = 'pages'; + + // Links list -> links widget + if($options->sidebar_links) + $widgets['sidebar-main'][] = 'links'; + } + + // Update options + update_option('widget_text', $widget_text); + wp_set_sidebars_widgets($widgets); +} + +/** + * function tarski_upgrade() - Upgrades Tarski's options where appropriate. + * + * Tarski preferences sometimes change between versions, and need to + * be updated. This function does not determine whether an update is + * needed, it merely perfoms it. It's also self-contained, so it + * won't update the global $tarski_options object either. + * @since 2.1 + */ +function tarski_upgrade() { + // Get existing options + $options = new Options; + $options->tarski_options_get(); + + // Get our defaults, so we can merge them in + $defaults = new Options; + $defaults->tarski_options_defaults(); + + // Update the options version so we don't run this code more than once + $options->installed = theme_version('current'); + + // Handle special cases first + tarski_upgrade_special($options, $defaults); + + // Upgrade old display options to use widgets instead + tarski_upgrade_widgets($options, $defaults); + + // Conform our options to the expected values, types, and defaults + foreach($options as $name => $value) { + if(!isset($defaults->$name)) { + // Get rid of options which no longer exist + unset($options->$name); + } elseif(!isset($options->$name)) { + // Use the default if we don't have this option + $options->$name = $defaults->$name; + } elseif(is_array($options->$name) && !is_array($defaults->$name)) { + // If our option is an array and the default is not, implode using " " as a separator + $options->$name = implode(" ", $options->$name); + } elseif(!is_array($options->$name) && is_array($defaults->$name)) { + // If our option is a scalar and the default is an array, wrap our option in an array + $options->$name = array($options->$name); + } + } + + // Save our upgraded options + update_option('tarski_options', $options); +} + +/** + * tarski_messages() - Adds messages about Tarski to the WordPress admin panel. + * + * @since 2.1 + * @hook filter tarski_messages + * Filter the messages Tarski prints to the WordPress admin panel. + */ +function tarski_messages() { + $messages = apply_filters('tarski_messages', array()); + + foreach ( $messages as $message ) { + echo "<p class=\"tarski-message\">$message</p>\n\n"; + } +} + +/** + * tarski_addmenu() - Adds the Tarski Options page to the WordPress admin panel. + * + * @since 1.0 + */ +function tarski_addmenu() { + add_theme_page(__('Tarski Options','tarski'), __('Tarski Options','tarski'), 'edit_themes', 'tarski-options', 'tarski_admin'); +} + +/** + * tarski_admin() - Saves Tarski's options, and displays the Options page. + * + * @since 1.0 + */ +function tarski_admin() { + if (current_user_can('edit_themes')) { + save_tarski_options(); + tarski_update_notifier('options_page'); + $widgets_link = admin_url('widgets.php'); + $tarski_options_link = admin_url('themes.php?page=tarski-options'); + include(TARSKIDISPLAY . '/options_page.php'); + } +} + +/** + * tarski_admin_header_style() - Styles the custom header image admin page for use with Tarski. + * + * @since 1.4 + */ +function tarski_admin_header_style() { ?> + <style type="text/css"> + #headimg { + height: <?php echo HEADER_IMAGE_HEIGHT; ?>px; + width: <?php echo HEADER_IMAGE_WIDTH; ?>px; + } + #headimg h1, #headimg #desc { + display: none; + } + </style> +<?php } + +/** + * tarski_admin_style() - Tarski CSS for the WordPress admin panel. + * + * @since 2.1 +*/ +function tarski_admin_style() { + wp_enqueue_style( + 'tarski_admin', + get_bloginfo('template_directory') . '/library/css/admin.css', + array(), false, 'screen' + ); +} + +/** + * tarski_inject_styles() - Adds CSS to the Tarski Options page. + * + * @since 2.1 +*/ +function tarski_inject_styles() { + wp_enqueue_style( + 'tarski_options', + get_bloginfo('template_directory') . '/library/css/options.css', + array(), false, 'screen' + ); +} + +/** + * tarski_inject_scripts() - Adds JavaScript to the Tarski Options page. + * + * @since 1.4 +*/ +function tarski_inject_scripts() { + $js_dir = get_bloginfo('template_directory') . '/app/js'; + wp_enqueue_script('page_select', "$js_dir/page_select.js"); + wp_enqueue_script('crir', "$js_dir/crir.js"); +} + +/** + * tarski_count_authors() - Returns the number of authors who have published posts. + * + * This function returns the number of author ids associated with published posts. + * @since 2.0.3 + * @global object $wpdb + * @return integer + */ +function tarski_count_authors() { + global $wpdb; + return count($wpdb->get_col($wpdb->prepare( + "SELECT post_author, COUNT(DISTINCT post_author) FROM $wpdb->posts WHERE post_status = 'publish' GROUP BY post_author" + ), 1)); +} + +/** + * tarski_should_show_authors() - Determines whether Tarski should show authors. + * + * @since 2.0.3 + * @see tarski_count_authors() + * @global object $wpdb + * @return boolean + * @hook filter tarski_show_authors + * Allows other components to decide whether or not Tarski should show authors. + */ +function tarski_should_show_authors() { + $show_authors = tarski_count_authors() > 1; + return (bool) apply_filters('tarski_show_authors', $show_authors); +} + +/** + * tarski_resave_show_authors() - Re-saves Tarski's 'show_authors' option. + * + * If more than one author is detected, it will turn the 'show_authors' + * option on; otherwise it will turn it off. + * @since 2.0.3 + * @see tarski_should_show_authors() + */ +function tarski_resave_show_authors() { + if(get_option('tarski_options')) { + update_tarski_option('show_authors', tarski_should_show_authors()); + } +} + +/** + * tarski_navbar_select() - Generates a list of checkboxes for the site's pages. + * + * Walks the tree of pages and generates nested ordered lists of pages, with + * corresponding checkboxes to allow the selection of pages for the navbar. + * @since 2.2 + * @param array $pages + * @param array $selected + */ +function tarski_navbar_select($pages) { + $nav_pages = explode(',', get_tarski_option('nav_pages')); + $collapsed_pages = explode(',', get_tarski_option('collapsed_pages')); + $walker = new WalkerPageSelect($nav_pages, $collapsed_pages); + $return = ''; + + if ( !empty($pages) ) { + $return = "<ol id=\"navbar-select\">\n" . $walker->walk($pages, 0, 0, array()) . "\n</ol>\n\n"; + } + + return $return; +} + +/** + * tarski_update_notifier() - Performs version checks and outputs the update notifier. + * + * Creates a new Version object, checks the latest and current + * versions, and lets the user know whether or not their version + * of Tarski needs updating. The way it displays varies slightly + * between the WordPress Dashboard and the Tarski Options page. + * @since 2.0 + * @param string $location + * @return string + */ +function tarski_update_notifier($messages) { + global $plugin_page; + + if ( !is_array($messages) ) + $messages = array(); + + $version = new Version; + $version->current_version_number(); + $svn_link = 'http://tarskitheme.com/help/updates/svn/'; + + // Update checking only performed when remote files can be accessed + if ( can_get_remote() ) { + + // Only performs the update check when notification is enabled + if ( get_tarski_option('update_notification') ) { + $version->latest_version_number(); + $version->latest_version_link(); + $version->version_status(); + + if ( $version->status == 'older' ) { + $messages[] = sprintf( + __('A new version of the Tarski theme, version %1$s %2$s. Your installed version is %3$s.','tarski'), + "<strong>$version->latest</strong>", + '<a href="' . $version->latest_link . '">' . __('is now available','tarski') . '</a>', + "<strong>$version->current</strong>" + ); + } elseif ( $plugin_page == 'tarski-options' ) { + switch($version->status) { + case 'current': + $messages[] = sprintf( + __('Your version of Tarski (%s) is up to date.','tarski'), + "<strong>$version->current</strong>" + ); + break; + case 'newer': + $messages[] = sprintf( + __('You appear to be running a development version of Tarski (%1$s). Please ensure you %2$s.','tarski'), + "<strong>$version->current</strong>", + "<a href=\"$svn_link\">" . __('stay updated','tarski') . '</a>' + ); + break; + case 'no_connection': + case 'error': + $messages[] = sprintf( + __('No connection to update server. Your installed version is %s.','tarski'), + "<strong>$version->current</strong>" + ); + break; + } + } + } elseif ( $plugin_page == 'tarski-options' ) { + $messages[] = sprintf( + __('Update notification for Tarski is disabled. Your installed version is %s.','tarski'), + "<strong>$version->current</strong>" + ); + } + } + + return $messages; +} + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_tarski/helpers/author_helper.php b/wp-content/themes/vanilla/_tarski/helpers/author_helper.php new file mode 100644 index 000000000..5f3879041 --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/helpers/author_helper.php @@ -0,0 +1,56 @@ +<?php + +/** + * tarski_author_posts_link() - If site has more than one author, output a link to that author's archive page. + * + * @global object $authordata + * @return string + */ +function tarski_author_posts_link() { + global $authordata; + if(get_tarski_option('show_authors')) { + printf( + __(' by ','tarski') . '<span class="vcard author"><a href="%1$s" title="%2$s" class="url fn">%3$s</a></span>', + get_author_posts_url($authordata->ID, $authordata->user_nicename), + sprintf( + __('Articles by %s','tarski'), + attribute_escape(get_the_author()) + ), + get_the_author() + ); + } +} + +/** + * the_archive_author() - Returns the author object associated with an author archive page. + * + * @global object $wp_query + * @return object $current_author + */ +function the_archive_author() { + global $wp_query; + $current_author = $wp_query->get_queried_object(); + return $current_author; +} + +/** + * the_archive_author_displayname() - Returns the display name of the author associated with a given archive page. + * + * @return string + */ +function the_archive_author_displayname() { + $current_author = the_archive_author(); + return $current_author->display_name; +} + +/** + * the_archive_author_description() - Returns the author description of the author associated with a given archive page. + * + * @return string + */ +function the_archive_author_description() { + $current_author = the_archive_author(); + return $current_author->user_description; +} + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_tarski/helpers/content_helper.php b/wp-content/themes/vanilla/_tarski/helpers/content_helper.php new file mode 100644 index 000000000..eca849816 --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/helpers/content_helper.php @@ -0,0 +1,322 @@ +<?php + +/** + * tarski_next_prev_posts() - Outputs links to the next and previous posts. + * + * WordPress has this functionality, but the built-in formatting isn't + * to Tarski's tastes, so this function builds its own. + * @since 1.2 + * @return string + */ +function tarski_next_prev_posts() { + if ( is_single() ) { + $prev_post = get_previous_post(); + $next_post = get_next_post(); + if($prev_post || $next_post) { + echo '<p class="primary-span articlenav">'; + + if($prev_post) { + echo '<span class="previous-entry">'; + previous_post_link('%link','‹ %title'); + echo '</span>'; + + if($next_post) { + echo ' <span class="separator"> • </span> '; + } + } + + if($next_post) { + echo '<span class="next-entry">'; + next_post_link('%link','%title ›'); + echo '</span>'; + } + + echo "</p>\n"; + } + } +} + +/** + * tarski_link_pages() - Tarski wrapper around wp_link_pages(). + * + * @since 2.0 + * @return string + */ +function tarski_link_pages() { + $arguments = array( + 'before' => '<p class="link-pages"><strong>' . __('Pages:','tarski') . '</strong>', + 'after' => '</p>', + 'next_or_number' => 'number', + 'nextpagelink' => __('Next page','tarski'), + 'previouspagelink' => __('Previous page','tarski'), + 'pagelink' => '%', + 'more_file' => '', + 'echo' => 1 + ); + + if(!in_category(get_tarski_option('asidescategory'))) { + wp_link_pages($arguments); + } +} + +/** + * tarski_posts_nav_link() - Outputs next / previous index page links. + * + * @since 1.2 + * @global object $wp_query + * @return string + */ +function tarski_posts_nav_link() { + if(get_tarski_option('use_pages')) { + global $wp_query; + + if(!is_singular()) { + $max_num_pages = $wp_query->max_num_pages; + $paged = get_query_var('paged'); + $sep = ' § '; + + // Only have sep if there's both prev and next results + if ($paged < 2 || $paged >= $max_num_pages) { + $sep = ''; + } + + if($max_num_pages > 1) { + echo '<p class="pagination">'; + if(is_search()) { + previous_posts_link('« ' . __('Previous results','tarski')); + echo $sep; + next_posts_link(__('More results','tarski') . ' »'); + } else { + next_posts_link('« ' . __('Older entries','tarski')); + echo $sep; + previous_posts_link(__('Newer entries','tarski') . ' »'); + } + echo "</p>\n"; + } + } + } +} + +/** + * tarski_post_categories_link() - Outputs post categories + * + * Categories list is nicely wrapped for potential DOM interactions + * via JavaScript, CSS etc. + * @since 2.0 + * @return string + */ +function tarski_post_categories_link() { + if(get_tarski_option('show_categories')) { + printf( + __(' in %s','tarski'), + '<span class="categories">' . get_the_category_list(', ') . '</span>' + ); + } +} + +/** + * tarski_comments_link() - Outputs comments links. + * + * @since 2.1 + * @global object $post + * @return string + */ +function tarski_comments_link() { + global $post; + if($post->comment_status == 'open' || $post->comment_count > 0) { + if(is_single() || is_page()) { + echo ' | <a class="comments-link" href="#comments">'; comments_number(__('No comments', 'tarski'), __('1 comment', 'tarski'), '%' . __(' comments', 'tarski')); echo '</a>'; + } else { + echo ' | '; + comments_popup_link(__('No comments', 'tarski'), __('1 comment', 'tarski'), '%' . __(' comments', 'tarski'), 'comments-link', __('Comments closed', 'tarski')); + } + } +} + +/** + * tarski_asides_permalink_text() - Outputs permalink text for asides. + * + * @since 2.1 + * @global object $post + * @return string + */ +function tarski_asides_permalink_text() { + global $post; + if($post->comment_status == 'open' || $post->comment_count > 0) { + comments_number(__('No comments','tarski'), __('1 comment','tarski'), __('% comments','tarski')); + } else { + _e('Permalink', 'tarski'); + } +} + +/** + * tarski_comment_datetime() - Ties the date and time together. + * + * Makes the comment date and time output more translateable. + * @since 2.0 + * @return string + * @hook filter tarski_comment_datetime + * Filters the date and time printed with a comment. + */ +function tarski_comment_datetime() { + $datetime = sprintf( + __('%1$s at %2$s','tarski'), + get_comment_date(), + get_comment_time() + ); + $datetime = apply_filters('tarski_comment_datetime', $datetime); + echo $datetime; +} + +/** + * tidy_openid_names() - Strips the http:// prefix from OpenID names. + * + * @since 2.0 + * @global object $comment_author + * @return string $comment_author + */ +function tidy_openid_names($comment_author) { + global $comment; + $comment_author = str_replace('http://', '', $comment_author); + $comment_author = rtrim($comment_author, '/'); + return $comment_author; +} + +/** + * tidy_avatars - Remove some of the cruft generated by get_avatar() + * + * Adds proper alternate text for the image, replaces single quotes + * with double ones for markup consistency, and removes the height + * and width attributes so a naturally sized default image can be + * employed (e.g. a 1x1 pixel transparent GIF so there appears to + * be no default image). + * @since 2.1 + * @param string $avatar + * @param string $id_or_email + * @param string $size + * @param string $default + * @return mixed + */ +function tidy_avatars($avatar, $id_or_email, $size, $default) { + $url = get_comment_author_url(); + $author_alt = sprintf( __('%s’s avatar'), get_comment_author() ); + $avatar = preg_replace("/height='[\d]+' width='[\d]+'/", '', $avatar); + + if ( !is_admin() ) + $avatar = preg_replace("/'/", '"', $avatar); + + $avatar = preg_replace('/alt=""/', "alt=\"$author_alt\"", $avatar); + + return $avatar; +} + +/** + * tarski_avatar() - Linked avatar images for Tarski. + * + * Links to the comment author's home page if they have one, + * and just returns the image otherwise. + * @return string + */ +function tarski_avatar() { + if ( get_option('avatar_default') == '' ) + $default = get_bloginfo('template_directory') . '/images/avatar.png'; + else + $default = ''; + + $avatar = get_avatar(get_comment_author_email(), '50', $default); + $url = get_comment_author_url(); + + if ( empty($url) || preg_match('/^\s*http:\/\/\s*$/', $url) ) { + return $avatar; + } else { + return "<a class=\"avatar-link\" href=\"$url\" rel=\"external nofollow\">$avatar</a>"; + } +} + +/** + * tarski_default_avatar() - Make Tarski avatar selectable. + * + * Adds the Tarski avatar to the Discussion options page, allowing it to be selected + * but also allowing users to choose other avatars. + * @return string + */ +function tarski_default_avatar($avatar_defaults) { + $tarski_avatar = get_bloginfo('template_directory') . '/images/avatar.png'; + $avatar_defaults[$tarski_avatar] = 'Tarski'; + return $avatar_defaults; +} + +/** + * tarski_comment_author_link() - Returns a comment author's name, wrapped in a link if present. + * + * It also includes hCard microformat markup. + * @link http://microformats.org/wiki/hcard + * @since 2.0 + * @global object $comment + * @return string + * @hook filter get_comment_author_link + * Native WordPress filter on comment author links. + * @hook filter tarski_comment_author_link + * Tarski-specific filter on comment author links. + */ +function tarski_comment_author_link() { + global $comment; + $url = get_comment_author_url(); + $author = get_comment_author(); + + if(empty($url) || 'http://' == $url) { + $return = sprintf( + '<span class="fn">%s</span>', + $author + ); + } else { + $return = sprintf( + '<a class="url fn" href="%1$s" rel="external nofollow">%2$s</a>', + $url, + $author + ); + } + + $return = apply_filters('get_comment_author_link', $return); + $return = apply_filters('tarski_comment_author_link', $return); + return $return; +} + +/** + * tarski_404_content() - Outputs default text for 404 error pages. + * + * @since 1.5 + * @return string + * @hook filter th_404_content + * Allows users to change their 404 page messages via a plugin. + */ +function tarski_404_content() { + $content = sprintf( + __('The page you are looking for does not exist; it may have been moved, or removed altogether. You might want to try the search function or return to the %s.','tarski'), + '<a href="' . user_trailingslashit(get_bloginfo('url')) . '">' . __('front page','tarski') . '</a>' + ); + $content = wpautop($content); + $content = apply_filters('th_404_content', $content); + echo $content; +} + +/** + * tarski_content_massage() - Filter adding smart quotes, auto-paragraphs etc. + * + * This function strips slashes, adds smart quotes and other typographical + * niceties, converts characters such as ampersands to their HTML equivalent, + * adds automatic paragraphing and line breaks, and finally returns the + * altered content. + * @since 2.0.5 + * @param string $input + * @return string $output + * + */ +function tarski_content_massage($input) { + if(!empty($input)) { + $output = wpautop(convert_chars(wptexturize(stripslashes($input)))); + } + return $output; +} + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_tarski/helpers/tag_helper.php b/wp-content/themes/vanilla/_tarski/helpers/tag_helper.php new file mode 100644 index 000000000..6ce1d594e --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/helpers/tag_helper.php @@ -0,0 +1,125 @@ +<?php + +/** + * wrap_values_in_element() - Wraps array values in the specified HTML element + * + * Given the array <code>array('Bread', 'Milk', 'Cheese')</code>, if the specified + * HTML element were <code>'li'</code> it would return the array + * <code>array('<li>Bread</li>', '<li>Milk</li>', '<li>Cheese</li>')</code>. + * @since 2.0 + * @param $array array + * @param $element string + * @return array + */ +function wrap_values_in_element($array, $element) { + if(!check_input($array, 'array') || empty($array)) + return; + + foreach($array as $value) + $output[] = "<$element>$value</$element>"; + + return $output; +} + +/** + * implode_proper() - Implodes an array and adds a final conjuction. + * + * Given the array <code>array('John', 'Paul', 'George', 'Ringo')</code> it will + * return the string <code>'John, Paul, George and Ringo'</code>. + * @since 2.0 + * @param $array array + * @param $glue string + * @param $last_connective string + * @return string + */ +function implode_proper($array, $glue = NULL, $last_connective = NULL) { + if ( !check_input($array, 'array') || count($array) == 0 ) + return; + + if ($glue == NULL) + $glue = __(', ', 'tarski'); + + if ($last_connective == NULL) + $last_connective = __('and', 'tarski'); + + $last_value = array_pop($array); + + if ( count($array) ) + $output = implode($glue, $array) . " $last_connective $last_value"; + else + $output = $last_value; + + return $output; +} + +/** + * multiple_tag_titles() - Outputs all tags for a tag archive + * + * Tag intersections and unions currently don't have a simple, single template + * function. This provides one. + * + * @example multiple_tag_titles('<em>%s</em>') will wrap every printed tag in + * an HTML emphasis element. + * @since 2.0 + * @global $wpdb object + * @param $format string + * @return string + * @hook filter multiple_tag_titles + * Filter the value returned when generating the title of multiple (union or + * intersection) tag archive page. + */ +if ( !function_exists('multiple_tag_titles') ) { +function multiple_tag_titles($format = '') { + global $wpdb; + + if ( !is_tag() ) + return; + + if ( $tag_slugs = get_query_var('tag_slug__and') ) + $connective = __('and'); + elseif ( $tag_slugs = get_query_var('tag_slug__in') ) + $connective = __('or'); + else + $single_tag = intval( get_query_var('tag_id') ); + + $tags = array(); + if ( $tag_slugs ) { + foreach ( $tag_slugs as $tag_slug ) { + $tag = get_term_by('slug', $tag_slug, 'post_tag', OBJECT, 'display'); + if ( !is_wp_error($tag) && !empty($tag->name) ) + $tags[] = $tag->name; + } + } elseif ( $single_tag ) { + $tag = &get_term($single_tag, 'post_tag', OBJECT, 'display'); + if ( is_wp_error($tag) || empty($tag->name) ) + return false; + else + $tags[] = $tag->name; + } else { + return; + } + + if ( strlen($format) > 0 ) { + foreach ( $tags as $index => $tag ) + $tags[$index] = sprintf($format, $tag); + } + + $tags = implode_proper($tags, __(', ', 'tarski'), $connective); + $tags = apply_filters('multiple_tag_titles', $tags); + return $tags; +} +} + +/** + * add_post_tags() - Appends tags to posts. + * + * @since 2.0 + * @return string + */ +function add_post_tags() { + if (is_single() || (get_tarski_option('tags_everywhere') && !in_category(get_tarski_option('asidescategory')))) { + the_tags('<p class="tagdata"><strong>'. __('Tags','tarski'). ':</strong> ', ', ', '</p>'."\n"); + } +} + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_tarski/helpers/template_helper.php b/wp-content/themes/vanilla/_tarski/helpers/template_helper.php new file mode 100644 index 000000000..c9b12c5b7 --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/helpers/template_helper.php @@ -0,0 +1,562 @@ +<?php + +/** + * is_wp_front_page() - Returns true when current page is the WP front page. + * + * Very useful, since is_home() doesn't return true for the front page + * if it's displaying a static page rather than the usual posts page. + * @since 2.0 + * @return boolean + */ +function is_wp_front_page() { + if(get_option('show_on_front') == 'page') + return is_page(get_option('page_on_front')); + else + return is_home(); +} + +/** + * only_paginate_home() - Turns off paging for everything except feeds and the home page. + * + * @since 2.2 + * @param object $query + */ +function only_paginate_home($query) { + if ( !get_tarski_option('use_pages') && !is_admin() ) { + if ( !is_home() && !is_feed() && '' === $query->get('nopaging') ) { + $query->set('nopaging', 1); + } + } +} + +/** + * tarski_doctitle() - Returns the document title. + * + * The order (site name first or last) can be set on the Tarski Options page. + * While the function ultimately returns a string, please note that filters + * are applied to an array! This allows plugins to easily alter any aspect + * of the title. For example, one might write a plugin to change the separator. + * @since 1.5 + * @param string $sep + * @return string $doctitle + * @hook filter tarski_doctitle + * Filter document titles. + */ +function tarski_doctitle($sep = '·') { + $site_name = get_bloginfo('name'); + + if(is_404()) { + $content = __(sprintf('Error %s','404'),'tarski'); + } elseif((get_option('show_on_front') == 'posts') && is_home()) { + if(get_bloginfo('description')) { + $content = get_bloginfo('description'); + } + } elseif(is_search()) { + $content = sprintf( __('Search results for %s','tarski'), attribute_escape(get_search_query()) ); + } elseif(is_month()) { + $content = single_month_title(' ', false); + } elseif(is_tag()) { + $content = multiple_tag_titles(); + } else { + $content = trim(wp_title('', false)); + } + + if($content) { + $elements = array( + 'site_name' => $site_name, + 'separator' => $sep, + 'content' => $content + ); + } else { + $elements = array( + 'site_name' => $site_name + ); + } + + if(get_tarski_option('swap_title_order')) { + $elements = array_reverse($elements, true); + } + + // Filters should return an array + $elements = apply_filters('tarski_doctitle', $elements); + + // But if they don't, it won't try to implode + if(check_input($elements, 'array')) + $doctitle = implode(' ', $elements); + + echo $doctitle; +} + +/** + * add_version_to_styles() - Adds version number to style links. + * + * This makes browsers re-download the CSS file when the version + * number changes, reducing problems that may occur when markup + * changes but the corresponding new CSS is not downloaded. + * @since 2.0.1 + * @see tarski_stylesheets() + * @param array $style_array + * @return array $style_array + */ +function add_version_to_styles($style_array) { + if(check_input($style_array, 'array')) { + foreach($style_array as $type => $values) { + if(is_array($values) && $values['url']) { + $style_array[$type]['url'] .= '?v=' . theme_version(); + } + } + } + return $style_array; +} + +/** + * generate_feed_link() - Returns a properly formatted RSS or Atom feed link + * + * @since 2.1 + * @param string $title + * @param string $link + * @param string $type + * @return string + */ +function generate_feed_link($title, $link, $type = '') { + if ( $type == '' ) + $type = feed_link_type(); + + return "<link rel=\"alternate\" type=\"$type\" title=\"$title\" href=\"$link\" />"; +} + +/** + * feed_link_type() - Returns an Atom or RSS feed MIME type + * + * @since 2.1 + * @param string $type + * @return string + */ +function feed_link_type($type = '') { + if(empty($type)) + $type = get_default_feed(); + + if($type == 'atom') + return 'application/atom+xml'; + else + return 'application/rss+xml'; +} + +/** + * tarski_headerimage() - Outputs header image. + * + * @since 1.0 + * @return string + */ +function tarski_headerimage() { + if(get_theme_mod('header_image')) { + $header_img_url = get_header_image(); + } elseif(get_tarski_option('header')) { + if(get_tarski_option('header') != 'blank.gif') { + $header_img_url = get_bloginfo('template_directory') . '/headers/' . get_tarski_option('header'); + } + } else { + $header_img_url = get_bloginfo('template_directory') . '/headers/greytree.jpg'; + } + + if($header_img_url) { + if(get_tarski_option('display_title')) { + $header_img_alt = __('Header image','tarski'); + } else { + $header_img_alt = get_bloginfo('name'); + } + + $header_img_tag = "<img alt=\"$header_img_alt\" src=\"$header_img_url\" />"; + + if(!get_tarski_option('display_title') && !is_wp_front_page()) { + $header_img_tag = sprintf( + '<a title="%1$s" rel="home" href="%2$s">%3$s</a>', + __('Return to main page','tarski'), + user_trailingslashit(get_bloginfo('url')), + $header_img_tag + ); + } + + echo "<div id=\"header-image\">$header_img_tag</div>\n\n"; + } +} + +/** + * tarski_sitetitle() - Returns site title, wrapped in appropriate markup. + * + * The title on the home page will appear inside an h1 element, + * whereas on other pages it will be a link (to the home page), + * wrapped in a p (paragraph) element. + * @since 1.5 + * @return string + * @hook filter tarski_sitetitle + * Filter site title. + */ +function tarski_sitetitle() { + if(get_tarski_option('display_title')) { + $site_title = get_bloginfo('name'); + + if(!is_wp_front_page()) { + $site_title = sprintf( + '<a title="%1$s" href="%2$s" rel="home">%3$s</a>', + __('Return to main page','tarski'), + user_trailingslashit(get_bloginfo('url')), + $site_title + ); + } + + if((get_option('show_on_front') == 'posts') && is_home()) { + $site_title = sprintf('<h1 id="blog-title">%s</h1>', $site_title); + } else { + $site_title = sprintf('<p id="blog-title">%s</p>', $site_title); + } + + $site_title = apply_filters('tarski_sitetitle', $site_title); + return $site_title; + } +} + +/** + * tarski_tagline() - Returns site tagline, wrapped in appropriate markup. + * + * @since 1.5 + * @return string + * @hook filter tarski_tagline + * Filter site tagline. + */ +function tarski_tagline() { + if((get_tarski_option('display_tagline') && get_bloginfo('description'))) + $tagline = '<p id="tagline">' . get_bloginfo('description') . '</p>'; + + $tagline = apply_filters('tarski_tagline', $tagline); + return $tagline; +} + +/** + * tarski_titleandtag() - Outputs site title and tagline. + * + * @since 1.5 + * @return string + */ +function tarski_titleandtag() { + if(tarski_tagline() || tarski_sitetitle()) { + echo '<div id="title">'."\n"; + echo tarski_sitetitle() . "\n"; + echo tarski_tagline() . "\n"; + echo '</div>'."\n"; + } +} + +/** + * navbar_wrapper() - Outputs navigation section. + * + * @see th_navbar() + * @since 2.1 + * @return string + */ +function navbar_wrapper() { + echo '<div id="navigation" class="clearfix">'; + th_navbar(); + echo '</div>'; +} + +/** + * home_link_name() - Returns the name for the navbar 'Home' link. + * + * The option 'home_link_name' can be set in the Tarski Options page; + * if it's not set, it defaults to 'Home'. + * @since 1.7 + * @return string + */ +function home_link_name() { + if(get_tarski_option('home_link_name')) + return get_tarski_option('home_link_name'); + else + return __('Home','tarski'); +} + +/** + * tarski_navbar() - Outputs the Tarski navbar. + * + * @since 1.2 + * @param boolean $return + * @global object $wpdb + * @return string $navbar + * @hook filter tarski_navbar + * Filter the HTML generated for the navbar. + */ +function tarski_navbar($return = false) { + global $wpdb; + $current = ' class="nav-current"'; + + if(get_option('show_on_front') != 'page') { + if(is_home()) { + $home_status = $current; + } else { + $home_status = false; + } + $navbar['home'] = sprintf( + '<li><a id="nav-home"%1$s href="%2$s" rel="home">%3$s</a></li>', + $home_status, + user_trailingslashit(get_bloginfo('url')), + home_link_name() + ); + } + + $pages = &get_pages('sort_column=post_parent,menu_order'); + $nav_pages = explode(',', get_tarski_option('nav_pages')); + + if(!empty($nav_pages) && !empty($pages)) { + foreach($pages as $page) { + if(in_array($page->ID, $nav_pages)) { + if(is_page($page->ID) || ((get_option('show_on_front') == 'page') && (get_option('page_for_posts') == $page->ID) && is_home())) { + $page_status = $current; + } else { + $page_status = false; + } + + $navbar[$page->ID] = sprintf( + '<li><a id="nav-%1$s"%2$s href="%3$s">%4$s</a></li>', + $page->ID . '-' . $page->post_name, + $page_status, + get_permalink($page->ID), + htmlspecialchars($page->post_title) + ); + } + } + } + + // Filters should return an array + $navbar = apply_filters('tarski_navbar', $navbar); + + // But if they don't, the function will return false + if(check_input($navbar, 'array') && !empty($navbar)) { + $navbar = "\n" . implode("\n", $navbar) . "\n\n"; + } else { + $navbar = false; + } + + if($return) { + return $navbar; + } else { + echo $navbar; + } +} + +/** + * add_external_links() - Adds external links to the Tarski navbar. + * + * @since 2.0 + * @see tarski_navbar() + * @param array $navbar + * @return array $navbar + */ +function add_external_links($navbar) { + if(!check_input($navbar, 'array')) + $navbar = array(); + + if(get_tarski_option('nav_extlinkcat')) { + $extlinks_cat = get_tarski_option('nav_extlinkcat'); + $extlinks = get_bookmarks("category=$extlinks_cat"); + foreach($extlinks as $link) { + if($link->link_rel) { + $rel = 'rel="' . $link->link_rel . '" '; + } + if($link->link_target) { + $target = 'target="' . $link->link_target . '" '; + } + if($link->link_description) { + $title = 'title="'. $link->link_description . '" '; + } + $navbar[] = sprintf( + '<li><a id="nav-link-%1$s" %2$s href="%3$s">%4$s</a></li>', + $link->link_id, + $rel . $target . $title, + $link->link_url, + $link->link_name + ); + } + } + + return $navbar; +} + +/** + * add_admin_link() - Adds a WordPress site admin link to the Tarski navbar. + * + * @since 2.0 + * @see tarski_navbar() + * @param string $navbar + * @return string $navbar + */ +function add_admin_link($navbar) { + if(!check_input($navbar, 'array')) + $navbar = array(); + + if(is_user_logged_in()) + $navbar['admin'] = sprintf( + '<li><a id="nav-admin" href="%1$s">%2$s</a></li>', + admin_url(), + __('Site Admin','tarski') + ); + + return $navbar; +} + +/** + * wrap_navlist() - Wraps the Tarski navbar in an unordered list element. + * + * Unlike other navbar filters, wrap_navlist() doesn't make $navbar an array + * if it isn't one, since that would result in it outputting an empty + * unordered list. Instead, it simply returns false. + * @since 2.0 + * @see tarski_navbar() + * @param string $navbar + * @return string $navbar + */ +function wrap_navlist($navbar) { + if(check_input($navbar, 'array')) { + array_unshift($navbar, '<ul class="primary xoxo">'); + array_push($navbar, '</ul>'); + return $navbar; + } else { + return false; + } +} + +/** + * tarski_feedlink() - Adds the site feed link to the site navigation. + * + * @since 2.0 + * @param boolean $return echo or return? + * @return string $output + */ +function tarski_feedlink() { + include(TARSKIDISPLAY . '/feed_link.php'); +} + +/** + * tarski_bodyclass() - Returns the classes that should be applied to the document body. + * + * @since 1.2 + * @param boolean $return + * @return string $classes + * @hook filter tarski_bodyclass + * Filter the classes applied to the document body by Tarski. + */ +function tarski_bodyclass($return = false) { + if(get_tarski_option('centred_theme')) { // Centred or not + $classes[] = 'centre'; + } + if(get_tarski_option('swap_sides')) { // Swapped or not + $classes[] = 'janus'; + } + if(get_tarski_option('style')) { // Alternate style + $stylefile = get_tarski_option('style'); + $stylename = str_replace('.css', '', $stylefile); + if(is_valid_tarski_style($stylefile)) { + $classes[] = $stylename; + } + } + if(get_bloginfo('text_direction') == 'rtl') { + $classes[] = 'rtl'; + } + + // Filters should return an array + $classes = apply_filters('tarski_bodyclass', $classes); + + // But if they don't, it won't implode + if(is_array($classes)) + $classes = implode(' ', $classes); + + if($return) + return $classes; + else + echo $classes; +} + +/** + * tarski_bodyid() - Outputs the id that should be applied to the document body. + * + * @since 1.7 + * @param boolean $return + * @global object $post + * @global object $wp_query + * @return string $body_id + * @hook filter tarski_bodyid + * Filter the document id value. + */ +function tarski_bodyid($return = false) { + global $post, $wp_query; + + if(is_home()) { + $body_id = 'home'; + } elseif(is_search()) { + $body_id = 'search'; + } elseif(is_page()) { + $body_id = 'page-'. $post->post_name; + } elseif(is_single()) { + $body_id = 'post-'. $post->post_name; + } elseif(is_category()) { + $cat_ID = intval(get_query_var('cat')); + $category = &get_category($cat_ID); + $body_id = 'cat-'. $category->category_nicename; + } elseif(is_tag()) { + $tag_ID = intval(get_query_var('tag_id')); + $tag = &get_term($tag_ID, 'post_tag'); + $body_id = 'tag-'. $tag->slug; + } elseif(is_author()) { + $author = the_archive_author(); + $body_id = 'author-'. $author->user_login; + } elseif(is_date()) { + $year = get_query_var('year'); + $monthnum = get_query_var('monthnum'); + $day = get_query_var('day'); + $body_id = "date"; + if(is_year()) { + $body_id .= '-'. $year; + } elseif(is_month()) { + $body_id .= '-'. $year. '-'. $monthnum; + } elseif(is_day()) { + $body_id .= '-'. $year. '-'. $monthnum. '-'. $day; + } + } elseif(is_404()) { + $body_id = '404'; + } else { + $body_id = 'unknown'; + } + + $body_id = apply_filters('tarski_bodyid', $body_id); + + if($return) + return $body_id; + else + echo $body_id; +} + +/** + * tarski_searchform() - Outputs the WordPress search form. + * + * Will only output the search form on pages that aren't a search + * page or a 404, as these pages include the search form earlier + * in the document and the search form relies on the 's' id value, + * which as an HTML id must be unique within the document. + * @since 2.0 + */ +function tarski_searchform() { + include_once(TEMPLATEPATH . "/searchform.php"); +} + +/** + * tarski_credits() - Outputs the site feed and Tarski credits. + * + * @since 1.5 + */ +function tarski_credits() { + if(detectWPMU()) + $current_site = get_current_site(); + + include(TARSKIDISPLAY . "/credits.php"); +} + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_tarski/helpers/widgets.php b/wp-content/themes/vanilla/_tarski/helpers/widgets.php new file mode 100644 index 000000000..f2eb41d56 --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/helpers/widgets.php @@ -0,0 +1,143 @@ +<?php + +/** + * tarski_sidebar() - Outputs Tarski's sidebar. + * + * @since 2.0 + * @global object $post + * @return mixed + */ +function tarski_sidebar() { + global $post; + $user_sidebar = TEMPLATEPATH . '/user-sidebar.php'; + + if ( file_exists($user_sidebar) ) { + include($user_sidebar); + } elseif ( is_page_template('archives.php') ) { + return; + } else { + if ( (is_single() || is_page()) && (get_tarski_option('sidebar_pp_type') != 'main') ) + dynamic_sidebar('sidebar-post-and-page'); + else + dynamic_sidebar('sidebar-main'); + } +} + +/** + * tarski_footer_main() - Outputs footer main widgets field. + * + * @since 2.1 + * @return mixed + */ +function tarski_footer_main() { + dynamic_sidebar('footer-main'); +} + +/** + * tarski_footer_sidebar() - Outputs the footer sidebar widgets field. + * + * @since 2.0 + * @return mixed + */ +function tarski_footer_sidebar() { + dynamic_sidebar('footer-sidebar'); +} + +/** + * tarski_widget_text_wrapper() - Wraps text widgets in content div with edit link. + * + * @since 2.1 + * @param string $text + * @return string + */ +function tarski_widget_text_wrapper($text) { + if ( strlen(trim($text)) ) + $text = "<div class=\"content\">\n$text</div>\n"; + + return $text; +} + +/** + * tarski_widget_links_args() - Removes navbar links from the links widget. + * + * @since 2.2 + * @param array $args + * @return array + */ +function tarski_widget_links_args($args) { + $args['exclude_category'] = get_tarski_option('nav_extlinkcat'); + return $args; +} + +/** + * tarski_recent_entries() - Recent entries á la Tarski. + * + * Basically a ripoff of the WP widget function wp_widget_recent_entries(). + * @since 2.0.5 + * @see wp_widget_recent_entries() + * @global object $posts + * @return string + */ +function tarski_recent_entries($args) { + if ( $output = wp_cache_get('tarski_recent_entries') ) + return print($output); + + ob_start(); + extract($args); + global $posts; + // Allow for configuration in the future + $options = array(); + // $options = get_option('tarski_recent_entries'); + $title = empty($options['title']) ? __('Recent Articles','tarski') : $options['title']; + + if ( !$number = (int) $options['number'] ) + $number = 5; + elseif ( $number < 1 ) + $number = 1; + elseif ( $number > 10 ) + $number = 10; + + if ( is_home() ) + $offset = count($posts); + else + $offset = 0; + + $r = new WP_Query("showposts=$number&what_to_show=posts&nopaging=0&post_status=publish&offset=$offset"); + + if ( $r->have_posts() ) { +?> +<div id="recent"> + <?php echo $before_title . $title . $after_title; ?> + <ul> + <?php while ($r->have_posts()) : $r->the_post(); ?> + <li> + <h4 class="recent-title"><a title="<?php _e('View this post', 'tarski'); ?>" href="<?php the_permalink(); ?>"><?php the_title() ?></a></h4> + <p class="recent-metadata"><?php + echo the_time(get_option('date_format')); + if(!get_tarski_option('hide_categories')) { + _e(' in ', 'tarski'); the_category(', '); + } ?></p> + <div class="recent-excerpt content"><?php the_excerpt(); ?></div> + </li> + <?php endwhile; ?> + </ul> +</div> <!-- /recent --> +<?php + unset($r); + wp_reset_query(); // Restore global post data stomped by the_post(). + } + + wp_cache_add('tarski_recent_entries', ob_get_flush(), 'widget'); +} + +/** + * flush_tarski_recent_entries() - Deletes tarski_recent_entries() from the cache. + * + * @since 2.0.5 + * @see tarski_recent_entries() + */ +function flush_tarski_recent_entries() { + wp_cache_delete('tarski_recent_entries'); +} + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_tarski/images/avatar.png b/wp-content/themes/vanilla/_tarski/images/avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..8f979a853ddcf081fb59f8b122e854a23bc4df60 GIT binary patch literal 1347 zcmeAS@N?(olHy`uVBq!ia0y~yU@!t<4rT@h2F-^R%?u0-k|nMYCBgY=CFO}lsSJ)O z`AMk?p1FzXsX?iUDV2pMQ*9U+82bZ!LR_D|db{)Zxm_pDZ$El&+~UcKFP@YL4B zXCA+NbKuP7v)Aw5d;0RyorfC^oH%^$>Vs#m4xYPu|LMz%w;$Yn^5Wt1*X#EkKY#Q7 z(eu|Y-+B1#^}Fl$pPajK@5<drHy%8__2}8{$Iov*e0ufX<Kq`^uHJKW?Y`s7wjW%v z^YHUG@0V^paOV2mQ&(@@dHnpst@~%L-#K#r+M^e*51qey<H3^^I}R=1e(>zIyNAwQ zy>$D*u?sgIy?k@{{I!QKULU@2?cS3Yr>@>UeeKTaD|e1vy0QPv<&&3hUAgmc-|0(R zkDR@B_tC9~Pmf=|dGq138xNlz1G(+N>1(%dKYG4u=iwXopB_4Ub>HdBCobJOaPG>z zr!TJDeR%rXtu05+9J_RL+mW;9Z{FQ<=+x!g57+KJe)Ph%Q&(=Ezj6QGlb0J0p1S$q z>77T<&)>Lr>*2Gb7p|YadTYz!GkZ>6+<WTsnX7k>UATVj?&IAjF09*k{NnBVr>@+( z{pi`jvsW+Ny0`J*$;}5(UA_0{>YYbtuH89$@y5w3w@zNVb?oBx9mmd}xqkcP)!RFc zojZ2%Ms-!CE&~Izm#2$kNX4y^tEttG97I?ja5^%1UtrR_pwKF|I`?krT@ZNM{(kPx zWX`+4XMVT*o-(Pi=MYaH-zCK&CxdCG43k?tmtU?<*mRSt=k=sOncfzTzkB0THuvoC zVB0IHcqU<){o*Lqq_uVr&p$Y{R;Zp|k4;B#q2Tm39>Hzm9|gQar!P`s5y%$|WWF9G zm=JSD!s$`xgY&19LtI2V-&?Hdd~@>AbMf-`Yb)mGZ9V1Gb!57r)Qh;;mcjZWT#wJ+ z&k4VDPe9?Q(x0M$>JVY}bulZhuhdWx>b#P)a`ic8V~IdX?&o&4uNHU&Fcv3EE5~Sd zRrRud4{zskU34*{;P6@x#wB5wt9ACKH*_+c?FbV3voJqYxMg4G!p@Z&`>rt?CotJg z7f)ZL)0wKf_uY?aNlFqoW+r*_X144PJNY%%h{@nsAfLmO(@L%LD!=d63v!ZZ+qg{0 z;^F#}Yh$-19jZC5WKp=~d~&Qczsiin8UB@Q9LEbe{%0kwU;As_A(OMyZ5Fw;D(APc zf4-r7RsW2-O;g*E$1XKnjQ>7wjGmd6(*C_*MTao=$+yZoLY=tWGTc;(cC9edIGF!x z$35j0vzR+t(mw_!dbEAWFH4>G)nkKHplU<Q;pr7@+>D3x+tP0_W?fy$v0iH;<DvDd zpVX;+F*YyMo}q7gQJLBK$<xoeisx(|C~Mwi_K@?KbicEGn&?D^7TLJTrU{=a53$Cm zO5P8f)AH6(SNS~Wz3|jr?aLxpbAKPM4V*JkDA0WCVoqnK+xx7R=eD~1k+cZBALdb1 ze<LbrO2@7h$M^Ji*~SU%bX}j&()oF^(cufmMe^0FEJY0ut-rhI-#fP@3`VP~rg%wJ z&c5VluqgFO(c6j`-O#S1Ni5E0M;cdbXK~Dv@1CGI>C3Ns+OyO5{L-zO@=2q?;n>5o z|8q;9FSs|SQ{rUW?!6}+7VNidaC@x%dZOUji6zg^ZQ{7sEW1nB<#AHM&xrGr8B^~3 zzxs)1cGoe3GhdI-t`DEuA$WhcbeOF`&jFL!)%y8IMFa)e?w(R!A?e8UV#@p(|I%Bd zdwCXTm_}dbfBF8l!;|L^Pd+fU$k_J6r$6{oo^XC~VbjiI1<sr*YlY2MG9*>p7qWHX i@QbpKJY~<w#$fHV`Mu-$L+T6+3=E#GelF{r5}E+CYVh&^ literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/_tarski/images/icons.png b/wp-content/themes/vanilla/_tarski/images/icons.png new file mode 100644 index 0000000000000000000000000000000000000000..0adec5ac856bac6bbef08d0032f732e5386a9103 GIT binary patch literal 1900 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 Qz`(%Z>FVdQ&MBb@0Dh97>Hq)$ literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/_tarski/images/page_select.png b/wp-content/themes/vanilla/_tarski/images/page_select.png new file mode 100644 index 0000000000000000000000000000000000000000..854021180340bfadd05556cf4827448223a30de6 GIT binary patch literal 421 zcmeAS@N?(olHy`uVBq!ia0vp@3=9lcIhYw37<NZ=@h~tjNS3%plmzFem6RtIr7}3C z<R_&nc;+Uirv{}arc@T5OtoQPU<eQJ332`O>C>}k&kkO=bL7f{{pW7IefJ@I(&npv zipQ@#K6CrUqsLG0J$ZTh+JgsAUtPQR^yrm`$F4ql|Ka1!dylT)ef06urxRE1p1%G3 z!p#RypFO*J@9E>GPcPiK&%nT->c?!sz`!6|666>B9}i%NY<r#sa<`|8V@SoVH&;#y zH7oEmJlqg@l(l^A+28i*ky^?XuQpzOG9_O^!p~kINp;7QMVq7*rWIZC@!wSP%KYq| z7vcF^Hx!Gp7`pW`?dZEC^F(gz={Guix2xqZy2-a+e)i74s=uG7dZ-A!ygsFLd)R_k z{^i!Jc~>r%Zr^zO@a~OwbLZMb-;RCybVW}2bA{89Y3VQbnpO(?n*XSMaptZ5l~|$9 zFZ1uVF4>*vRNifnUe26UZktrTa7UT=zIX4U8yFcT?c&(GG)iF^0|Nttr>mdKI;Vst E00K+lw*UYD literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/_tarski/js/crir.js b/wp-content/themes/vanilla/_tarski/js/crir.js new file mode 100644 index 000000000..58ab3d54c --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/js/crir.js @@ -0,0 +1,165 @@ +/* + CRIR - Checkbox & Radio Input Replacement + Author: Chris Erwin (me[at]chriserwin.com) + www.chriserwin.com/scripts/crir/ + + Update August 13th, 2007 + Major re-wrote by zbobet2012 to make script truly cross browser + compatible including Internet Explorer, Firefox, and Safari. Selection + event now added to label instead of checkbox. + + Updated July 27, 2006. + Jesse Gavin added the AddEvent function to initialize + the script. He also converted the script to JSON format. + + Updated July 30, 2006. + Added the ability to tab to elements and use the spacebar + to check the input element. This bit of functionality was + based on a tip from Adam Burmister. +*/ + +crir = { + init: function() { + headerSection = document.getElementById("tarski-headers"); + //alert("headerSection length: " + headerSection.length); + arrLabels = headerSection.getElementsByTagName('label'); + //alert("arrLabel length: " + arrLabels.length); + + searchLabels: + for (var i=0; i<arrLabels.length; i++) { + // get the input element based on the for attribute of the label tag + if (arrLabels[i].getAttributeNode('for') && arrLabels[i].getAttributeNode('for').value != '') { + labelElementFor = arrLabels[i].getAttributeNode('for').value; + inputElement = document.getElementById(labelElementFor); + } + else { + continue searchLabels; + } + + inputElementClass = inputElement.className; + + // if the input is specified to be hidden intiate it + if (inputElementClass == 'crirHiddenJS') { + inputElement.className = 'crirHidden'; + + inputElementType = inputElement.getAttributeNode('type').value; + + // add the appropriate event listener to the label for each element so that IE and Safari can use this + if (inputElementType == "checkbox") { + arrLabels[i].onclick = function(){crir.clickedCheckBoxLabel(this);}; + } + else { + arrLabels[i].onclick = function(){crir.clickedRadioLabel(this);}; + } + + // set the initial label state + if (inputElement.checked) { + if (inputElementType == 'checkbox') { arrLabels[i].className = 'checkbox_checked'} + else { arrLabels[i].className = 'radio_checked' } + } + else { + if (inputElementType == 'checkbox') { arrLabels[i].className = 'checkbox_unchecked'} + else { arrLabels[i].className = 'radio_unchecked' } + } + } + else if (inputElement.nodeName != 'SELECT' && inputElement.getAttributeNode('type').value == 'radio') { // this so even if a radio is not hidden but belongs to a group of hidden radios it will still work. + arrLabels[i].onclick = function(){crir.clickedRadioLabel(this);}; + inputElement.onclick = function(){crir.toggleRadioLabel(this,crir.findLabel(this.getAttributeNode('id').value));}; + } + } + }, + + //returns the laba for the specified inputElementId + findLabel: function (inputElementID) { + //arrLabels = document.getElementsByTagName('label'); + + searchLoop: + for (var i=0; i<arrLabels.length; i++) { + if (arrLabels[i].getAttributeNode('for') && arrLabels[i].getAttributeNode('for').value == inputElementID) { + return arrLabels[i]; + break searchLoop; + } + } + }, + + //returns the input with the id specified by labelElementFor + findInput: function (labelElementFor) { + arrInputs = document.getElementsByTagName('input'); + searchLoop: + for (var i=0; i<arrInputs.length; i++) { + if (arrInputs[i].getAttributeNode('id') && arrInputs[i].getAttributeNode('id').value == labelElementFor) { + return arrInputs[i]; + break searchLoop; + } + } + }, + + toggleCheckboxLabel: function (callingElement,labelElement) { + //check/uncheck the "real" box + callingElement.checked=!callingElement.checked; + + //check/uncheck the image + if(labelElement.className == 'checkbox_checked') { + labelElement.className = "checkbox_unchecked"; + } + else { + labelElement.className = "checkbox_checked"; + } + }, + + toggleRadioLabel: function (clickedInputElement,clickedLabelElement) { + + clickedInputElementName = clickedInputElement.getAttributeNode('name').value; + + //get all me inputs so I can uncheck them + tarskiHeader = document.getElementById("tarski-headers"); + arrInputs = tarskiHeader.getElementsByTagName('input'); + + //check the radio button + clickedInputElement.checked|=1; + + // uncheck (label class) all radios in the same group + for (var i=0; i<arrInputs.length; i++) { + inputElementType = arrInputs[i].getAttributeNode('type').value; + if (inputElementType == 'radio') { + inputElementName = arrInputs[i].getAttributeNode('name').value; + inputElementClass = arrInputs[i].className; + // find radio buttons with the same 'name' as the one we've changed and have a class of chkHidden + // and then set them to unchecked + if (inputElementName == clickedInputElementName && inputElementClass == 'crirHidden') { + inputElementID = arrInputs[i].getAttributeNode('id').value; + labelElement = crir.findLabel(inputElementID); + labelElement.className = 'radio_unchecked'; + } + } + } + + // if the radio clicked is hidden set the label to checked + if (clickedInputElement.className == 'crirHidden') { + clickedLabelElement.className = 'radio_checked'; + } + }, + + clickedRadioLabel: function(callingElement){ + crir.toggleRadioLabel(crir.findInput(callingElement.getAttributeNode('for').value),callingElement); + }, + + clickedCheckBoxLabel: function(callingElement){ + crir.toggleCheckboxLabel(crir.findInput(callingElement.getAttributeNode('for').value),callingElement); + }, + + addEvent: function(element, eventType, doFunction, useCapture){ + if (element.addEventListener) + { + element.addEventListener(eventType, doFunction, useCapture); + return true; + } else if (element.attachEvent) { + var r = element.attachEvent('on' + eventType, doFunction); + return r; + } else { + element['on' + eventType] = doFunction; + } + } +} + +crir.addEvent(window, 'load', crir.init, false); \ No newline at end of file diff --git a/wp-content/themes/vanilla/_tarski/js/page_select.js b/wp-content/themes/vanilla/_tarski/js/page_select.js new file mode 100644 index 000000000..29cdacb66 --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/js/page_select.js @@ -0,0 +1,144 @@ +// Included for cross-browser compatibility +if (!Array.prototype.reduce) +{ + Array.prototype.reduce = function(fun /*, initial*/) + { + var len = this.length; + if (typeof fun != "function") + throw new TypeError(); + + // no value to return if no initial value and an empty array + if (len == 0 && arguments.length == 1) + throw new TypeError(); + + var i = 0; + if (arguments.length >= 2) + { + var rv = arguments[1]; + } + else + { + do + { + if (i in this) + { + rv = this[i++]; + break; + } + + // if array contains no values, no initial value to return + if (++i >= len) + throw new TypeError(); + } + while (true); + } + + for (; i < len; i++) + { + if (i in this) + rv = fun.call(null, rv, this[i], i, this); + } + + return rv; + }; +}; + +var UniqueNumList = function(memo, item) { + if (Number(item) > 0 && jQuery.inArray(item, memo) < 0) memo.push(item); + return memo; +}; + +function CollapsibleList(container, collapsed_page_set) { + var id_format = /^page-list-(\d+)$/; + + this.container = jQuery(container); + this.root_id = parseInt(this.container.attr('id').replace(id_format, '$1')); + this.main = jQuery(container.children('p')[0]); + this.list = jQuery(container.children('ol')[0]); + + this.toggle = function() { + if ( this.container.hasClass('collapsed') ) { + this.expand(); + } else { + this.collapse(); + } + }; + + this.collapse = function() { + this.list.slideUp(150); + this.toggler.addClass('collapsed-toggle'); + this.container.addClass('collapsed'); + collapsed_page_set.addPage(this.root_id); + }; + + this.expand = function() { + this.list.slideDown(150); + this.toggler.removeClass('collapsed-toggle'); + this.container.removeClass('collapsed'); + collapsed_page_set.removePage(this.root_id); + }; + + this.addToggle = function(toggler) { + var thisp = this; + this.toggler = jQuery(toggler); + + if (this.container.hasClass('collapsed')) this.toggler.addClass('collapsed-toggle'); + + this.main.prepend(this.toggler); + this.toggler.bind('click', function(ev) { + thisp.toggle(); + }); + }; + +}; + +function CollapsedPageSet(selector) { + this.pages = []; + + this.retrieve = function() { + this.pages = jQuery(selector).val().split(',').reduce(UniqueNumList, []); + }; + + this.save = function() { + this.pages = this.pages.reduce(UniqueNumList, []); + jQuery(selector).val(this.pages.join(',')); + }; + + this.addPage = function(page_id) { + this.retrieve(); + + if (this.pages instanceof Array) { + this.pages.push(page_id); + } else { + this.pages = [page_id]; + } + + this.save(); + }; + + this.removePage = function(page_id) { + this.retrieve(); + + if (this.pages instanceof Array) { + this.pages = jQuery.grep(this.pages, function(n) { + return n != page_id; + }); + } else { + this.pages = []; + } + + this.save(); + }; + +}; + +jQuery(document).ready(function() { + jQuery('#navbar-select').addClass('js'); + + var collapsed_page_set = new CollapsedPageSet('#opt-collapsed-pages'); + + jQuery('#navbar-select ol').each(function(i) { + list = new CollapsibleList(jQuery(this).parent(), collapsed_page_set); + list.addToggle('<span class="toggle">Toggle</span>'); + }); +}); diff --git a/wp-content/themes/vanilla/_tarski/js/tarski.js b/wp-content/themes/vanilla/_tarski/js/tarski.js new file mode 100644 index 000000000..297ebcf59 --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/js/tarski.js @@ -0,0 +1,110 @@ +Function.prototype.bind = function(object) { + var method = this; + return function() { + return method.apply(object, arguments); + }; +}; + +function addEvent( obj, type, fn ) { + if (obj.addEventListener) { + obj.addEventListener( type, fn, false ); + EventCache.add(obj, type, fn); + } + else if (obj.attachEvent) { + obj["e"+type+fn] = fn; + obj[type+fn] = function() { obj["e"+type+fn]( window.event ); } + obj.attachEvent( "on"+type, obj[type+fn] ); + EventCache.add(obj, type, fn); + } + else { + obj["on"+type] = obj["e"+type+fn]; + } +}; + +var EventCache = function(){ + var listEvents = []; + return { + listEvents : listEvents, + add : function(node, sEventName, fHandler){ + listEvents.push(arguments); + }, + flush : function(){ + var i, item; + for(i = listEvents.length - 1; i >= 0; i = i - 1){ + item = listEvents[i]; + if(item[0].removeEventListener){ + item[0].removeEventListener(item[1], item[2], item[3]); + }; + if(item[1].substring(0, 2) != "on"){ + item[1] = "on" + item[1]; + }; + if(item[0].detachEvent){ + item[0].detachEvent(item[1], item[2]); + }; + item[0][item[1]] = null; + }; + } + }; +}(); +addEvent(window,'unload',EventCache.flush); + +/** + * <p>Replaces element el1's empty 'value' attribute with element el2's content.</p> + * @param {Object} replaceable + * @param {Object} replacing + */ +function replaceEmpty(replaceable, replacing) { + if (/^\s*$/.test(replaceable.value)) { + replaceable.value = replacing.firstChild.nodeValue; + } +}; + +/** + * <p>Search box object, allowing us to add some default text to the search + * field which will then be removed when that field is given focus. It remains + * accessible because the default text is pulled from the search field's label + * and that label is only hidden when JavaScript is enabled.</p> + */ +var Searchbox = { + + /** + * <p>If the search box and associated label exist, hide the label and + * add the label's content to the search box. Then add two events to the + * search box, one which will reset the box's content when it's given focus + * and one which will add the label content back when it loses focus (as + * long as the box is empty).</p> + */ + init : function() { + this.sBox = document.getElementById('s'); + this.sLabel = document.getElementById('searchlabel'); + if (this.sBox && this.sLabel) { + this.sLabel.style.display = 'none'; + replaceEmpty(this.sBox, this.sLabel); + addEvent(this.sBox, 'focus', this.reset_text.bind(this)); + addEvent(this.sBox, 'blur', this.add_text.bind(this)); + } + }, + + /** + * <p>Removes the search box's default content.</p> + */ + reset_text : function() { + if (this.sBox.value == this.sLabel.firstChild.nodeValue) { + this.sBox.value = ''; + } + }, + + /** + * <p>Adds the search box's default content back in if it's empty.</p> + */ + add_text : function() { + replaceEmpty(this.sBox, this.sLabel); + } +}; + +addEvent(window, 'load', function() { + var body = document.getElementsByTagName('body')[0]; + body.className += " js"; +}); + +addEvent(window, 'load', Searchbox.init.bind(Searchbox)); \ No newline at end of file diff --git a/wp-content/themes/vanilla/_tarski/launcher.php b/wp-content/themes/vanilla/_tarski/launcher.php new file mode 100644 index 000000000..a23092dcf --- /dev/null +++ b/wp-content/themes/vanilla/_tarski/launcher.php @@ -0,0 +1,147 @@ +<?php + +// Localisation +load_theme_textdomain('tarski'); + +// Custom header image +define('HEADER_TEXTCOLOR', ''); +define('HEADER_IMAGE', '%s/headers/' . get_tarski_option('header')); // %s is theme directory URI +define('HEADER_IMAGE_WIDTH', 720); +define('HEADER_IMAGE_HEIGHT', 180); +define('NO_HEADER_TEXT', true); +add_custom_image_header('', 'tarski_admin_header_style'); + +// Widgets +register_sidebar( // Main sidebar widgets + array( + 'id' => 'sidebar-main', + 'name' => __('Main sidebar','tarski'), + 'before_widget' => '<div id="%1$s" class="widget %2$s">', + 'after_widget' => '</div>', + 'before_title' => '<h3>', + 'after_title' => '</h3>' + ) +); +register_sidebar( // Post and page sidebar widgets + array( + 'id' => 'sidebar-post-and-page', + 'name' => __('Post and page sidebar','tarski'), + 'before_widget' => '<div id="%1$s" class="widget %2$s">', + 'after_widget' => '</div>', + 'before_title' => '<h3>', + 'after_title' => '</h3>' + ) +); +register_sidebar( // Footer main widgets + array( + 'id' => 'footer-main', + 'name' => __('Footer main widgets','tarski'), + 'before_widget' => '<div id="%1$s" class="widget %2$s">', + 'after_widget' => '</div>', + 'before_title' => '<h3>', + 'after_title' => '</h3>' + ) +); +register_sidebar( // Footer sidebar widgets + array( + 'id' => 'footer-sidebar', + 'name' => __('Footer sidebar widgets','tarski'), + 'before_widget' => '<div id="%1$s" class="widget %2$s">', + 'after_widget' => '</div>', + 'before_title' => '<h3>', + 'after_title' => '</h3>' + ) +); + +// Tarski widgets +register_sidebar_widget(__('Recent Articles','tarski'), 'tarski_recent_entries'); + +// Widget filters +add_filter('widget_text', 'tarski_content_massage'); +add_filter('widget_text', 'tarski_widget_text_wrapper'); +add_filter('widget_links_args', 'tarski_widget_links_args'); + +if (is_admin()) { + // Generate messages + add_filter('tarski_messages', 'tarski_update_notifier'); + + // Output messages on dashboard and options page + add_action('admin_notices', 'tarski_messages'); + + // Tarski Options page + add_action('admin_print_styles', 'tarski_admin_style'); + add_action('admin_print_scripts-design_page_tarski-options', 'tarski_inject_scripts'); + add_action('admin_print_styles-design_page_tarski-options', 'tarski_inject_styles'); + add_action('admin_menu', 'tarski_addmenu'); + + // Options + add_action('save_post', 'tarski_resave_show_authors'); + add_action('deleted_post', 'tarski_resave_show_authors'); + add_action('save_post', 'flush_tarski_recent_entries'); + add_action('deleted_post', 'flush_tarski_recent_entries'); + add_action('switch_theme', 'flush_tarski_recent_entries'); + add_action('switch_theme', 'tarski_upgrade_and_flush_options'); +} + +// Header +add_action('wp_head', array('Asset', 'init')); + +add_action('th_header', 'tarski_headerimage'); +add_action('th_header', 'tarski_titleandtag'); +add_action('th_header', 'navbar_wrapper'); +add_action('th_header', 'tarski_next_prev_posts'); + +add_filter('tarski_navbar', 'add_external_links'); +add_filter('tarski_navbar', 'add_admin_link', 20); +add_filter('tarski_navbar', 'wrap_navlist', 21); + +add_action('th_navbar', 'tarski_navbar'); +add_action('th_navbar', 'tarski_feedlink'); + +// Posts +add_action('parse_query', 'only_paginate_home'); + +add_action('th_postend', 'add_post_tags', 10); +add_action('th_postend', 'tarski_link_pages', 11); + +add_action('th_posts_nav', 'tarski_posts_nav_link'); + +// Sidebar +add_filter('tarski_sidebar_custom', 'tarski_content_massage', 9); +add_filter('tarski_sidebar', 'hide_sidebar_for_archives'); + +add_action('th_sidebar', 'tarski_sidebar', 10); + +// Comments +add_filter('avatar_defaults', 'tarski_default_avatar'); +add_filter('get_comment_author', 'tidy_openid_names'); +add_filter('get_avatar', 'tidy_avatars', 10, 4); + +// Footer +add_action('th_fsidebar', 'tarski_footer_sidebar'); +add_action('th_fmain', 'tarski_footer_main'); +add_action('th_footer', 'tarski_feedlink'); +add_action('th_footer', 'tarski_credits'); + +// Constants output +if(file_exists(TEMPLATEPATH . '/constants.php')) { + include_once(TEMPLATEPATH . '/constants.php'); + + add_filter('tarski_navbar', 'tarski_output_navbarinclude'); + add_filter('th_404_content', 'tarski_output_errorinclude'); + + add_action('wp_head', 'tarski_output_headinclude'); + add_action('th_postend', 'tarski_output_frontpageinclude'); + add_action('th_postend', 'tarski_output_postendinclude', 12); + add_action('th_postend', 'tarski_output_pageendinclude', 12); + add_action('comment_form', 'tarski_output_commentsforminclude', 11); + add_action('th_sidebar', 'tarski_output_sidebartopinclude', 9); + add_action('th_sidebar', 'tarski_output_sidebarbottominclude', 11); + add_action('th_sidebar', 'tarski_output_nosidebarinclude', 11); + add_action('th_sidebar', 'tarski_output_archivesinclude', 9); + add_action('th_fsidebar', 'tarski_output_searchtopinclude', 9); + add_action('th_fsidebar', 'tarski_output_searchbottominclude', 11); + add_action('th_footer', 'tarski_output_footerinclude'); +} + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_vanilla/blocks.php b/wp-content/themes/vanilla/_vanilla/blocks.php new file mode 100644 index 000000000..4ad0d2dca --- /dev/null +++ b/wp-content/themes/vanilla/_vanilla/blocks.php @@ -0,0 +1,685 @@ +<?php + +// Theme options adapted from "A Theme Tip For WordPress Theme Authors" +// http://literalbarrage.org/blog/archives/2007/05/03/a-theme-tip-for-wordpress-theme-authors/ + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +$themename = "Vanilla"; +$shortname = "vnl"; + +// Create theme options + +$blocks = array ( + +/* -------------------------------------------------- + Layout/grid befores and afters + -------------------------------------------------- */ + + array( "name" => "1. Before div#doc", + "desc" => "Between the opening body tag and the opening div#doc tag.<br />(Pair with No. 14 for correctly nested tags.)", + "id" => $shortname."_before_doc", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "2. Before div#page", + "desc" => "Between the opening div#doc tag and the opening div#page tag.<br />(Pair with No. 13 for correctly nested tags.)", + "id" => $shortname."_before_page", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "3. Before div#hd", + "desc" => "Between the opening div#page tag and the opening div#hd tag.<br />(Pair with No. 12 for correctly nested tags.)", + "id" => $shortname."_before_hd", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "4. Before div#bd", + "desc" => "Between the closing div#access tag and the opening div#bd tag.<br />(Pair with No. 11 for correctly nested tags.)", + "id" => $shortname."_before_bd", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "5. Top of div#bd", + "desc" => "Immediately after (below) the opening div#bd tag.<br />(Pair with No. 10 for correctly nested tags.)", + "id" => $shortname."_before_top_grid", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "6. Top of div#content", + "desc" => "Immediately after (below) the opening div#content tag.<br />(Pair with No. 9 for correctly nested tags.)", + "id" => $shortname."_after_top_grid", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "7. Bottom of div#content", + "desc" => "Immediately before (above) the closing div#content tag.<br />(Pair with No. 8 for correctly nested tags.)", + "id" => $shortname."_before_bottom_grid", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "8. Bottom of div#bd", + "desc" => "Immediately before (above) the closing div#bd tag.<br />(Pair with No. 7 for correctly nested tags.)", + "id" => $shortname."_after_bottom_grid", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "9. After div#bd", + "desc" => "Between the closing div#bd tag the opening div#ft tag.<br />(Pair with No. 6 for correctly nested tags.)", + "id" => $shortname."_before_ft", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "10. Before div#utility", + "desc" => "Between the opening div#ft tag and the opening div#utility tag.<br />(Pair with No. 5 for correctly nested tags.)", + "id" => $shortname."_before_utility_grid", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "11. After div#utility", + "desc" => "Immediately after (below) the closing div#utility tag.<br />(Pair with No. 4 for correctly nested tags.)", + "id" => $shortname."_after_utility_grid", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "12. After div#ft", + "desc" => "Between the closing div#ft tag and the closing div#page tag.<br />(Pair with No. 3 for correctly nested tags.)", + "id" => $shortname."_after_ft", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "13. After div#page", + "desc" => "Between the closing div#page tag and the closing div#doc tag.<br />(Pair with No. 2 for correctly nested tags.)", + "id" => $shortname."_after_page", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "14. After div#doc", + "desc" => "Between the closing div#doc tag and the closing body tag.<br />(Pair with No. 1 for correctly nested tags.)", + "id" => $shortname."_after_doc", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "Widget Blocks", + "desc" => "Vanilla allows you to add code/markup before and after each widget block. This is, of course, entirely optional. If you wish to customise this on a per-child-theme basis, then you should use the child theme’s functions.php file for this purpose. Note that code added before or after a widget block will display whether or not a widget block contains any active widgets.", + "id" => "", + "std" => "", + "type" => "heading"), + +/* -------------------------------------------------- + Before and after Header Nav widget block + -------------------------------------------------- */ + + array( "name" => "15. Before Header Nav widget block", + "desc" => "Before (above) the opening div#header-nav tag", + "id" => $shortname."_widget_header_nav_before", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "16. After Header Nav widget block", + "desc" => "After (below) the closing div#header-nav tag", + "id" => $shortname."_widget_header_nav_after", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + +/* -------------------------------------------------- + Before and after Header widget block + -------------------------------------------------- */ + + array( "name" => "17. Before Header widget block", + "desc" => "Before (above) the opening div#header tag", + "id" => $shortname."_widget_header_before", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "18. After Header widget block", + "desc" => "After (below) the closing div#header tag", + "id" => $shortname."_widget_header_after", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + +/* -------------------------------------------------- + Before and after Main Menu widget block + -------------------------------------------------- */ + + array( "name" => "19. Before Main Menu widget block", + "desc" => "Before (above) the opening div#main-menu tag", + "id" => $shortname."_widget_main_menu_before", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "20. After Main Menu widget block", + "desc" => "After (below) the closing div#main-menu tag", + "id" => $shortname."_widget_main_menu_after", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + +/* -------------------------------------------------- + Before and after Sub Menu widget block + -------------------------------------------------- */ + + array( "name" => "21. Before Sub Menu widget block", + "desc" => "Before (above) the opening div#sub-menu tag", + "id" => $shortname."_widget_sub_menu_before", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "22. After Sub Menu widget block", + "desc" => "After (below) the closing div#sub-menu tag", + "id" => $shortname."_widget_sub_menu_after", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + +/* -------------------------------------------------- + Before and after Breadcrumbs widget block + -------------------------------------------------- */ + + array( "name" => "23. Before Breadcrumbs widget block", + "desc" => "Before (above) the opening div#breadcrumbs tag", + "id" => $shortname."_widget_breadcrumbs_before", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "24. After Breadcrumbs widget block", + "desc" => "After (below) the closing div#breadcrumbs tag", + "id" => $shortname."_widget_breadcrumbs_after", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + +/* -------------------------------------------------- + Before and after Content Top widget block + -------------------------------------------------- */ + + array( "name" => "25. Before Content Top widget block", + "desc" => "Before (above) the opening div#content-top tag", + "id" => $shortname."_widget_content_top_before", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "26. After Content Top widget block", + "desc" => "After (below) the closing div#content-top tag", + "id" => $shortname."_widget_content_top_after", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + +/* -------------------------------------------------- + Before and after Content Middle widget block + -------------------------------------------------- */ + + array( "name" => "27. Before Content Middle widget block", + "desc" => "Before (above) the opening div#content-middle tag", + "id" => $shortname."_widget_content_middle_before", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "28. After Content Middle widget block", + "desc" => "After (below) the closing div#content-middle tag", + "id" => $shortname."_widget_content_middle_after", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + +/* -------------------------------------------------- + Before and after Content Bottom widget block + -------------------------------------------------- */ + + array( "name" => "29. Before Content Bottom widget block", + "desc" => "Before (above) the opening div#content-bottom tag", + "id" => $shortname."_widget_content_bottom_before", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "30. After Content Bottom widget block", + "desc" => "After (below) the closing div#content-bottom tag", + "id" => $shortname."_widget_content_bottom_after", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + +/* -------------------------------------------------- + Before and after Primary Sidebar widget block + -------------------------------------------------- */ + + array( "name" => "31. Before Primary Sidebar widget block", + "desc" => "Before (above) the opening div#primary-sidebar tag", + "id" => $shortname."_widget_primary_sidebar_before", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "32. After Primary Sidebar widget block", + "desc" => "After (below) the closing div#primary-sidebar tag", + "id" => $shortname."_widget_primary_sidebar_after", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + +/* -------------------------------------------------- + Before and after Secondary Sidebar widget block + -------------------------------------------------- */ + + array( "name" => "33. Before Secondary Sidebar widget block", + "desc" => "Before (above) the opening div#secondary-sidebar tag", + "id" => $shortname."_widget_secondary_sidebar_before", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "34. After Secondary Sidebar widget block", + "desc" => "After (below) the closing div#secondary-sidebar tag", + "id" => $shortname."_widget_secondary_sidebar_after", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + +/* -------------------------------------------------- + Before and after 1st Utility widget block + -------------------------------------------------- */ + + array( "name" => "35. Before 1st Utility widget block", + "desc" => "Before (above) the opening div#utility-1 tag", + "id" => $shortname."_widget_utility_1_before", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "36. After 1st Utility widget block", + "desc" => "After (below) the closing div#utility-1 tag", + "id" => $shortname."_widget_utility_1_after", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + +/* -------------------------------------------------- + Before and after 2nd Utility widget block + -------------------------------------------------- */ + + array( "name" => "37. Before 2nd Utility widget block", + "desc" => "Before (above) the opening div#utility-2 tag", + "id" => $shortname."_widget_utility_2_before", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "38. After 2nd Utility widget block", + "desc" => "After (below) the closing div#utility-2 tag", + "id" => $shortname."_widget_utility_2_after", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + +/* -------------------------------------------------- + Before and after 3rd Utility widget block + -------------------------------------------------- */ + + array( "name" => "39. Before 3rd Utility widget block", + "desc" => "Before (above) the opening div#utility-3 tag", + "id" => $shortname."_widget_utility_3_before", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "40. After 3rd Utility widget block", + "desc" => "After (below) the closing div#utility-3 tag", + "id" => $shortname."_widget_utility_3_after", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + +/* -------------------------------------------------- + Before and after 4th Utility widget block + -------------------------------------------------- */ + + array( "name" => "41. Before 4th Utility widget block", + "desc" => "Before (above) the opening div#utility-4 tag", + "id" => $shortname."_widget_utility_4_before", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "42. After 4th Utility widget block", + "desc" => "After (below) the closing div#utility-4 tag", + "id" => $shortname."_widget_utility_4_after", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + +/* -------------------------------------------------- + Before and after Footer Nav widget block + -------------------------------------------------- */ + + array( "name" => "43. Before Footer Nav widget block", + "desc" => "Before (above) the opening div#footer-nav tag", + "id" => $shortname."_widget_footer_nav_before", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "44. After Footer Nav widget block", + "desc" => "After (below) the closing div#footer-nav tag", + "id" => $shortname."_widget_footer_nav_after", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + +/* -------------------------------------------------- + Before and after Footer widget block + -------------------------------------------------- */ + + array( "name" => "45. Before Footer widget block", + "desc" => "Before (above) the opening div#footer tag", + "id" => $shortname."_widget_footer_before", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "46. After Footer widget block", + "desc" => "After (below) the closing div#footer tag", + "id" => $shortname."_widget_footer_after", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + +/* -------------------------------------------------- + Before and after Front Page 1 widget block + -------------------------------------------------- */ + + array( "name" => "47. Before 1st Front Page widget block", + "desc" => "Before (above) the opening div#front-page-1 tag", + "id" => $shortname."_widget_front_page_1_before", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "48. After 1st Front Page widget block", + "desc" => "After (below) the closing div#front-page-1 tag", + "id" => $shortname."_widget_front_page_1_after", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + +/* -------------------------------------------------- + Before and after Front Page 2 widget block + -------------------------------------------------- */ + + array( "name" => "49. Before 2nd Front Page widget block", + "desc" => "Before (above) the opening div#front-page-2 tag", + "id" => $shortname."_widget_front_page_2_before", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")), + + array( "name" => "50. After 2nd Front Page widget block", + "desc" => "After (below) the closing div#front-page-2 tag", + "id" => $shortname."_widget_front_page_2_after", + "std" => "", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94")) + ); + +function vanilla_add_admin_blocks_page() { + + global $themename, $shortname, $blocks; + + if (isset($_GET['page'])) { + if ( $_GET['page'] == basename(__FILE__) ) { + if ( 'save' == $_REQUEST['action'] ) { + + foreach ($blocks as $value) { + if ( $value['type'] != 'heading') { + update_option( $value['id'], $_REQUEST[ $value['id'] ] ); } + } + foreach ($blocks as $value) { + if( isset( $_REQUEST[ $value['id'] ] ) ) { update_option( $value['id'], $_REQUEST[ $value['id'] ] ); } else { delete_option( $value['id'] ); } } + + header("Location: themes.php?page=blocks.php&saved=true"); + die; + + } else if( 'reset' == $_REQUEST['action'] ) { + + foreach ($blocks as $value) { + delete_option( $value['id'] ); } + + header("Location: themes.php?page=blocks.php&reset=true"); + die; + + } + } + } + + add_theme_page($themename." Blocks", "Vanilla Blocks", 'edit_themes', basename(__FILE__), 'vanilla_admin_blocks_page'); + +} + +function vanilla_admin_blocks_page() { + + global $themename, $shortname, $blocks; + + if ( $_REQUEST['saved'] ) echo '<div id="message" class="updated fade"><p><strong>'.$themename.' settings saved.</strong></p></div>'; + if ( $_REQUEST['reset'] ) echo '<div id="message" class="updated fade"><p><strong>'.$themename.' settings reset.</strong></p></div>'; + +?> +<div class="wrap"> +<h2><?php echo $themename; ?> Blocks</h2> + +<p>Vanilla gives you an amazing level of control of your theme's HTML code and content, without making you access the PHP template files.</p> + +<p>Each of the text-boxes below corresponds to an area of the page where you may wish to add extra code/markup.</p> + +<p>You may enter any client-side code here (i.e. HTML/JS/Flash/etc), but no PHP. If you wish to add PHP, you should use the custom/functions.php file in your theme folder, where a function has been included which corresponds to each of the text-boxes below.</p> + +<form method="post"> + +<table class="form-table"> + +<?php foreach ($blocks as $value) { + + switch ( $value['type'] ) { + case 'heading': + ?> + </table> + + <h3><br /><?php echo $value['name']; ?></h3> + <p><?php echo $value['desc']; ?></p> + + <table class="form-table"> + <?php + break; + case 'text': + ?> + <tr valign="top"> + <th scope="row"><?php echo $value['name']; ?>:</th> + <td> + <input name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>" type="<?php echo $value['type']; ?>" value="<?php if ( get_settings( $value['id'] ) != "") { echo get_settings( $value['id'] ); } else { echo $value['std']; } ?>" /> + <?php echo $value['desc']; ?> + </td> + </tr> + <?php + break; + + case 'select': + ?> + <tr valign="top"> + <th scope="row"><?php echo $value['name']; ?>:</th> + <td> + <select name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>"> + <?php foreach ($value['options'] as $option) { ?> + <option<?php if ( get_option( $value['id'] ) == $option[0]) { echo ' selected="selected"'; } elseif ($option[0] == $value['std'][0]) { echo ' selected="selected"'; } ?> value="<?php echo $option[0]; ?>"><?php echo $option[1]; ?></option> + <?php } ?> + </select> + </td> + </tr> + <?php + break; + + case 'textarea': + $ta_options = $value['options']; + ?> + <tr valign="top"> + <th scope="row"><?php echo $value['name']; ?>:</th> + <td> + <?php echo $value['desc']; ?><br /> + <textarea name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>" cols="<?php echo $ta_options['cols']; ?>" rows="<?php echo $ta_options['rows']; ?>"><?php + if( get_settings($value['id']) != "") { + echo stripslashes(get_settings($value['id'])); + }else{ + echo $value['std']; + }?></textarea> + </td> + </tr> + <?php + break; + + case "radio": + ?> + <tr valign="top"> + <th scope="row"><?php echo $value['name']; ?>:</th> + <td> + <?php foreach ($value['options'] as $key=>$option) { + $radio_setting = get_settings($value['id']); + if($radio_setting != ''){ + if ($key == get_settings($value['id']) ) { + $checked = "checked=\"checked\""; + } else { + $checked = ""; + } + }else{ + if($key == $value['std']){ + $checked = "checked=\"checked\""; + }else{ + $checked = ""; + } + }?> + <input type="radio" name="<?php echo $value['id']; ?>" value="<?php echo $key; ?>" <?php echo $checked; ?> /><?php echo $option; ?><br /> + <?php } ?> + </td> + </tr> + <?php + break; + + case "checkbox": + ?> + <tr valign="top"> + <th scope="row"><?php echo $value['name']; ?>:</th> + <td> + <?php + if(get_settings($value['id'])){ + $checked = "checked=\"checked\""; + }else{ + $checked = ""; + } + ?> + <input type="checkbox" name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>" value="true" <?php echo $checked; ?> /> + <?php ?> + <?php echo $value['desc']; ?> + </td> + </tr> + <?php + break; + + default: + + break; + } +} +?> + +</table> + +<p class="submit"> +<input name="save" type="submit" value="Save changes" /> +<input type="hidden" name="action" value="save" /> +</p> +</form> +<form method="post"> +<p class="submit"> +<input name="reset" type="submit" value="Reset" /> +<input type="hidden" name="action" value="reset" /> +</p> +</form> + +<p><?php _e('For more information about this theme, visit <a href="http://www.vanillatheme.com/">Vanilla Theme</a>. Brought to you by <a href="http://www.alistercameron.com/">Alister Cameron // Blogologist</a>.', 'vanilla'); ?></p> + +<?php +} + +add_action('admin_menu' , 'vanilla_add_admin_blocks_page'); +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_vanilla/core.php b/wp-content/themes/vanilla/_vanilla/core.php new file mode 100644 index 000000000..895359cd3 --- /dev/null +++ b/wp-content/themes/vanilla/_vanilla/core.php @@ -0,0 +1,139 @@ +<?php +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +function vanilla_get_option($name) { + $defaults = array( + 'vnl_tpl_set' => array('blog', 'Blog (default)') + , 'vnl_grid_width' => array('yui-d1', '750 pixels, centered') + , 'vnl_custom_width' => 1000 + , 'vnl_grid_template' => array('yui-t7', 'none') + , 'vnl_grid_nesting' => array('yui-g', 'none') + , 'vnl_utility_nesting' => array('yui-ga', 'none') + , 'vnl_insert_position' => 2 + , 'vnl_authorinfo' => false + , 'vnl_footertext' => '<span id="generator-link">You are enjoying the taste by <span id="designer-link"><a href="http://www.alistercameron.com/vanilla-theme-for-wordpress" title="Vanilla Theme" rel="designer">Vanilla flavored</a> <a href="http://WordPress.org/" title="WordPress" rel="generator">WordPress</a></span></span><span class="meta-sep">.</span>' + ); + $value = get_option($name); + if ($value == '' && isset($defaults[$name])) { + $value = $defaults[$name]; + $value = (is_array($value)) ? $value[0] : $value; + } + return $value; +} + +// Check whether a child theme template file exists, otherwise return the vanilla file. +function vanilla_get_template($path) { + $set = vanilla_get_option('vnl_tpl_set').'-set/'; + $child_template = STYLESHEETPATH.'/'.$set.$path; + $parent_template = CFCT_PATH.$set.$path; + return ( file_exists($child_template) ) ? $child_template : ( file_exists($parent_template) ) ? $parent_template : false; +} + +function vanilla_output_page($template) { + global $tpl; + + $template->set('vanilla', $tpl); + if (!VANILLA_DEBUG) $template->setPostFilter(new Minify_HTML()); + + try { echo $template->execute(); } + catch (Exception $e){ echo $e; } +} + +function vanilla_widget_block_wrapper($block){ + // called from within a dynamic PHPTAL macro (below) to stop it outputting a '1' to screen. + if (!dynamic_sidebar($block)) { + // do nothing; + } +} + +function vanilla_widget_template_markup($block=null) { + global $wp_registered_sidebars, $wp_registered_widgets; + + $tpl_source = ""; + + $block = sanitize_title($block); + foreach ( (array) $wp_registered_sidebars as $key => $value ) { + if ( sanitize_title($value['name']) == $block ) { + $block = $key; + break; + } + } + + $sidebars_widgets = wp_get_sidebars_widgets(); + + if ( empty($wp_registered_sidebars[$block]) || !array_key_exists($block, $sidebars_widgets) || !is_array($sidebars_widgets[$block]) || empty($sidebars_widgets[$block]) ) + return ""; + + $sidebar = $wp_registered_sidebars[$block]; + + foreach ( (array) $sidebars_widgets[$block] as $id ) { + $params = array_merge( + array( array_merge( $sidebar, array('widget_id' => $id, 'widget_name' => $wp_registered_widgets[$id]['name']) ) ), + (array) $wp_registered_widgets[$id]['params'] + ); + + $params = apply_filters( 'dynamic_sidebar_params', $params ); + $callback = $wp_registered_widgets[$id]['callback']; + $widget_name = str_replace("widget_", "", strtolower($callback)); + $active_template = vanilla_get_template('widgets/' . str_replace("_", "-", $widget_name) . ".html"); + + if (!$active_template) return ""; + + //echo $widget_name . " " . $widget_filename; + + if ( is_callable($callback) ) { + call_user_func_array($callback, $params); + + $tpl_source .= '<span metal:use-macro="'.$active_template.'/loader" />' . "\n" . + '<span tal:condition="php:VANILLA_DEBUG" class="widget-debug">WIDGET: '.$widget_name.'</span>' . "\n" . + '<span metal:define-slot="'.$widget_name.'" />' . "\n"; + } + } + return $tpl_source; +} + +function vanilla_widget_block($block=null){ + $block = sanitize_title_with_dashes(strtolower($block)); + + // Apply action + do_action('vanilla_widget_' . str_replace('-', '_', $block) . '_before'); + + if ( function_exists('dynamic_sidebar') && is_sidebar_active($block) ) { + + $tpl_source = '<metal:block define-macro="'.str_replace("-", "_", $block).'">' . "\n" . + "<!-- widget block: ".$block." -->\n" . + '<span tal:condition="php:VANILLA_DEBUG" class="widget-debug">'.$block.'</span>' . "\n"; + $tpl_source .= vanilla_widget_template_markup($block); + $tpl_source .= '${php:vanilla_widget_block_wrapper(\''.$block.'\')}' . "\n" . + '</metal:block><metal:block use-macro="'.str_replace("-", "_", $block).'" />'."\n"; + + //echo $tpl_source; + + echo "\t\t<div id=\"" . $block . "\" class=\"block\">\n"; + + // Load and fire the PHPTAL template! + $$block = new PHPTAL(); + $set = vanilla_get_option('vnl_tpl_set').'-set/'; + $$block->setSource($tpl_source, $set.$block); + vanilla_output_page($$block); + + echo "</div>\n"; + } + + // Apply action + do_action('vanilla_widget_' . str_replace('-', '_', $block) . '_after'); +} + +function vanilla_add_debug_css(){ + if (!VANILLA_DEBUG) return; +?> + <style type="text/css"> + /* Vanilla debugging CSS - set the constant in functions.php to 'false' to remove. */ + .debug, .grid-debug, .widget-debug, .doc-debug { display: block; text-align: left; border: 1px solid #090; background: #cfc; color: #060; padding: 0.2em 0.5em; filter: alpha(opacity=50);-moz-opacity: 0.50; opacity: 0.50; } + .grid-debug, .doc-debug { color: #900; background: #fcc; border-color: #900; } + .widget-debug { color: #009; background: #ccf; border-color: #009; } + </style> +<?php +} +add_action('wp_head', 'vanilla_add_debug_css'); +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_vanilla/grid.php b/wp-content/themes/vanilla/_vanilla/grid.php new file mode 100644 index 000000000..9fcb27115 --- /dev/null +++ b/wp-content/themes/vanilla/_vanilla/grid.php @@ -0,0 +1,279 @@ +<?php +// Theme options adapted from "A Theme Tip For WordPress Theme Authors" +// http://literalbarrage.org/blog/archives/2007/05/03/a-theme-tip-for-wordpress-theme-authors/ + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +$themename = "Vanilla"; +$shortname = "vnl"; + +// Create theme options + +$options = array ( + + array( "name" => "Template Set", + "id" => $shortname."_tpl_set", + "std" => array('blog', 'Blog (default)'), + "type" => "select", + "options" => array( + array('blog', 'Blog (default)'), + array('photoblog', 'Photoblog'), + array('corporate', 'Corporate'), + array('magazine', 'Magazine'))), + + array( "name" => "Page Width", + "id" => $shortname."_grid_width", + "std" => array('yui-d1', '750 pixels, centered'), + "type" => "select", + "options" => array( + array('yui-d1', '750 pixels, centered'), + array('yui-d2', '950 pixels, centered'), + array('yui-d3', '974 pixels, centered'), + array('yui-d0', '100%, 10 pixel margins'))), + + array( "name" => "Custom Width", + "desc" => "pixels or percentage", + "id" => $shortname."_custom_width", + "std" => "1000", + "type" => "text"), + + array( "name" => "Outer Column (fixed width)", + "id" => $shortname."_grid_template", + "std" => array('yui-t7', 'none'), + "type" => "select", + "options" => array( + array('yui-t7', 'none'), + array('yui-t1', '160 pixels, to the left'), + array('yui-t2', '180 pixels, to the left'), + array('yui-t3', '300 pixels, to the left'), + array('yui-t4', '180 pixels, to the right'), + array('yui-t5', '240 pixels, to the right'), + array('yui-t6', '300 pixels, to the right'))), + + array( "name" => "Inner Column (relative width)", + "id" => $shortname."_grid_nesting", + "std" => array('yui-g', 'none'), + "type" => "select", + "options" => array( + array('yui-g', 'none'), + array('yui-gc', 'wide (33%), to the right'), + array('yui-gd', 'wide (33%), to the left'), + array('yui-ge', 'narrow (25%), to the right'), + array('yui-gf', 'narrow (25%), to the left'))), + + array( "name" => "Utility Columns (relative widths)", + "id" => $shortname."_utility_nesting", + "std" => array('yui-ga', 'none'), + "type" => "select", + "options" => array( + array('yui-ga', 'none'), + array('yui-g', '2 cols, 50/50'), + array('yui-gf', '2 cols, 25/75'), + array('yui-ge', '2 cols 75/25'), + array('yui-gd', '2 cols, 33/67'), + array('yui-gc', '2 cols, 67/33'), + array('yui-gb', '3 cols, 33/33/33'), + array('yui-gg', '4 cols, 25/25/25/25'))), + + array( "name" => "Index Insert Position", + "desc" => "The widgetized Index Insert will follow after this post number.", + "id" => $shortname."_insert_position", + "std" => "2", + "type" => "text"), + + array( "name" => "Info on Author Page", + "desc" => "Display a <a href=\"http://microformats.org/wiki/hcard\" target=\"_blank\">microformatted vCard</a>�with the author's avatar, bio and email�on the author page.", + "id" => $shortname."_authorinfo", + "std" => "false", + "type" => "checkbox"), + + array( "name" => "Text in Footer", + "desc" => "Enter the HTML text that will appear in the bottom of your footer. Feel free to remove or change any links. <strong>Hint:</strong> <a href=\"http://www.w3schools.com/HTML/html_links.asp\" target=\"_blank\">how to write a link</a>.", + "id" => $shortname."_footertext", + "std" => "<span id=\"generator-link\">You are enjoying the taste by <span id=\"designer-link\"><a href=\"http://www.alistercameron.com/vanilla-theme-for-wordpress\" title=\"Vanilla Theme\" rel=\"designer\">Vanilla flavored</a> <a href=\"http://WordPress.org/\" title=\"WordPress\" rel=\"generator\">WordPress</a></span></span><span class=\"meta-sep\">.</span>", + "type" => "textarea", + "options" => array( "rows" => "5", + "cols" => "94") ) + + ); + +function vanilla_add_admin_grid_page() { + + global $themename, $shortname, $options; + + if (isset($_GET['page'])) { + if ( $_GET['page'] == basename(__FILE__) ) { + if ( 'save' == $_REQUEST['action'] ) { + + foreach ($options as $value) { + update_option( $value['id'], $_REQUEST[ $value['id'] ] ); } + + foreach ($options as $value) { + if( isset( $_REQUEST[ $value['id'] ] ) ) { update_option( $value['id'], $_REQUEST[ $value['id'] ] ); } else { delete_option( $value['id'] ); } } + + header("Location: themes.php?page=grid.php&saved=true"); + die; + + } else if( 'reset' == $_REQUEST['action'] ) { + + foreach ($options as $value) { + delete_option( $value['id'] ); } + + header("Location: themes.php?page=grid.php&reset=true"); + die; + + } + } + } + + add_theme_page($themename." Layout", "Vanilla Layout", 'edit_themes', basename(__FILE__), 'vanilla_admin_grid_page'); + +} + +function vanilla_admin_grid_page() { + + global $themename, $shortname, $options; + + if ( $_REQUEST['saved'] ) echo '<div id="message" class="updated fade"><p><strong>'.$themename.' settings saved.</strong></p></div>'; + if ( $_REQUEST['reset'] ) echo '<div id="message" class="updated fade"><p><strong>'.$themename.' settings reset.</strong></p></div>'; + +?> +<div class="wrap"> +<h2><?php echo $themename; ?> Grid (Layout) Options</h2> + +<form method="post"> + +<table class="form-table"> + +<?php foreach ($options as $value) { + + switch ( $value['type'] ) { + case 'text': + ?> + <tr valign="top"> + <th scope="row"><?php echo $value['name']; ?>:</th> + <td> + <input name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>" type="<?php echo $value['type']; ?>" value="<?php if ( get_settings( $value['id'] ) != "") { echo get_settings( $value['id'] ); } else { echo $value['std']; } ?>" /> + <?php echo $value['desc']; ?> + </td> + </tr> + <?php + break; + + case 'select': + ?> + <tr valign="top"> + <th scope="row"><?php echo $value['name']; ?>:</th> + <td> + <select name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>"> + <?php foreach ($value['options'] as $option) { ?> + <option<?php if ( get_option( $value['id'] ) == $option[0]) { echo ' selected="selected"'; } elseif ($option[0] == $value['std'][0]) { echo ' selected="selected"'; } ?> value="<?php echo $option[0]; ?>"><?php echo $option[1]; ?></option> + <?php } ?> + </select> + </td> + </tr> + <?php + break; + + case 'textarea': + $ta_options = $value['options']; + ?> + <tr valign="top"> + <th scope="row"><?php echo $value['name']; ?>:</th> + <td> + <?php echo $value['desc']; ?> + <textarea name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>" cols="<?php echo $ta_options['cols']; ?>" rows="<?php echo $ta_options['rows']; ?>"><?php + if( get_settings($value['id']) != "") { + echo stripslashes(get_settings($value['id'])); + }else{ + echo $value['std']; + }?></textarea> + </td> + </tr> + <?php + break; + + case "radio": + ?> + <tr valign="top"> + <th scope="row"><?php echo $value['name']; ?>:</th> + <td> + <?php foreach ($value['options'] as $key=>$option) { + $radio_setting = get_settings($value['id']); + if($radio_setting != ''){ + if ($key == get_settings($value['id']) ) { + $checked = "checked=\"checked\""; + } else { + $checked = ""; + } + }else{ + if($key == $value['std']){ + $checked = "checked=\"checked\""; + }else{ + $checked = ""; + } + }?> + <input type="radio" name="<?php echo $value['id']; ?>" value="<?php echo $key; ?>" <?php echo $checked; ?> /><?php echo $option; ?><br /> + <?php } ?> + </td> + </tr> + <?php + break; + + case "checkbox": + ?> + <tr valign="top"> + <th scope="row"><?php echo $value['name']; ?>:</th> + <td> + <?php + if(get_settings($value['id'])){ + $checked = "checked=\"checked\""; + }else{ + $checked = ""; + } + ?> + <input type="checkbox" name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>" value="true" <?php echo $checked; ?> /> + <?php ?> + <?php echo $value['desc']; ?> + </td> + </tr> + <?php + break; + + default: + + break; + } +} +?> + +</table> + +<p class="submit"> +<input name="save" type="submit" value="Save changes" /> +<input type="hidden" name="action" value="save" /> +</p> +</form> +<form method="post"> +<p class="submit"> +<input name="reset" type="submit" value="Reset" /> +<input type="hidden" name="action" value="reset" /> +</p> +</form> + +<script type="text/javascript"> +jQuery(document).ready(function($){ + $('input#vnl_custom_width').focus(); + + //alert("Need to add the slider etc here..."); + }); + +</script> + +<p><?php _e('For more information about this theme, visit <a href="http://www.vanillatheme.com/">Vanilla Theme</a>. Brought to you by <a href="http://www.alistercameron.com/">Alister Cameron // Blogologist</a>.', 'vanilla'); ?></p> + +<?php +} + +add_action('admin_menu' , 'vanilla_add_admin_grid_page'); +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_vanilla/hooks-filters.php b/wp-content/themes/vanilla/_vanilla/hooks-filters.php new file mode 100644 index 000000000..39fc599c6 --- /dev/null +++ b/wp-content/themes/vanilla/_vanilla/hooks-filters.php @@ -0,0 +1,178 @@ +<?php +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +/* ======================================== + Master List, Actions & Hooks + ======================================== */ + +$bits = array("before_doc", "before_page", "before_hd", "before_bd", "before_ft", "after_ft", "after_page", "after_doc", "before_utility_grid", "after_utility_grid", "widget_header_nav_before", "widget_header_nav_after", "widget_header_before", "widget_header_after", "widget_main_menu_before", "widget_main_menu_after", "widget_sub_menu_before", "widget_sub_menu_after", "widget_breadcrumbs_before", "widget_breadcrumbs_after", "widget_content_top_before", "widget_content_top_after", "widget_content_middle_before", "widget_content_middle_after", "widget_content_bottom_before", "widget_content_bottom_after", "widget_primary_sidebar_before", "widget_primary_sidebar_after", "widget_secondary_sidebar_before", "widget_secondary_sidebar_after", "widget_utility_1_before", "widget_utility_1_after", "widget_utility_2_before", "widget_utility_2_after", "widget_utility_3_before", "widget_utility_3_after", "widget_utility_4_before", "widget_utility_4_after", "widget_footer_nav_before", "widget_footer_nav_after", "widget_footer_before", "widget_footer_after", "widget_front_page_1_before", "widget_front_page_1_after", "widget_front_page_2_before", "widget_front_page_2_after"); + +foreach ($bits as $bit) { + $safebit = str_replace("'", '’', stripslashes(get_option('vnl_' . $bit))); + eval("function option_" . $bit . "() { echo('" . $safebit . "'); }"); + + // action + eval("add_action('vanilla_" . $bit . "', 'option_" . $bit . "');"); + + // hook + eval("function vanilla_" . $bit . "() { do_action('vanilla_" . $bit . "'); }"); +} + + + +// Carrington Sidebars Top +function ct_sidebars_top() { + $set = vanilla_get_option('vnl_tpl_set').'-set/'; + include_once(CFCT_PATH.$set.'carrington-sidebar-top.php'); +} +add_action('vanilla_widget_breadcrumbs_after', 'ct_sidebars_top'); + +// Accessibility +function vanilla_accessibility_link() { +?> + <p id="top"><a id="to-content" href="#content" title="<?php _e( 'Skip to content', 'sandbox' ) ?>"><?php _e( 'Skip to content', 'carrington' ); ?></a></p> +<?php +} +add_action('vanilla_before_hd' , 'vanilla_accessibility_link'); + +// Produces a clean list of pages in the header � thanks to Scott Wallick and Andy Skelton. +function sandbox_globalnav() { + $menu = '<div id="menu"><ul>'; + $menu .= str_replace( array( "\r", "\n", "\t" ), '', wp_list_pages('title_li=&sort_column=menu_order&echo=0') ); + $menu .= "</ul></div>\n"; + echo apply_filters( 'sandbox_menu', $menu ); // Filter to override default globalnav +} + +// Information in Post Header +function vanilla_postheader() { + global $id, $post, $authordata; + + // Create $posteditlink + $posteditlink .= '<a href="' . get_bloginfo('wpurl') . '/wp-admin/post.php?action=edit&post=' . $id; + $posteditlink .= '" title="' . __('Edit post', 'thematic') .'" class="edit-link">'; + $posteditlink .= __('Edit', 'thematic') . '</a>'; + + if (is_single() || is_page()) { + $posttitle = '<h1 class="entry-title">' . get_the_title() . "</h1>\n"; + } elseif (is_404()) { + $posttitle = '<h1 class="entry-title">' . __('Not Found', 'thematic') . "</h1>\n"; + } else { + $posttitle = '<h2 class="entry-title"><a href="'; + $posttitle .= get_permalink(); + $posttitle .= '" title="'; + $posttitle .= __('Permalink to ', 'thematic') . the_title_attribute('echo=0'); + $posttitle .= '" rel="bookmark">'; + $posttitle .= get_the_title(); + $posttitle .= "</a></h2>\n"; + } + + $postmeta = '<div class="entry-meta">'; + + // Display edit link + if (current_user_can('edit_posts')) { + $postmeta .= $posteditlink; + } + + $postmeta .= '<em>'. __('by', 'thematic') . '</em> '; + $postmeta .= '<span class="author vcard"><a class="url fn n" href="'; + $postmeta .= get_author_link(false, $authordata->ID, $authordata->user_nicename); + $postmeta .= '" title="' . __('View all posts by ', 'thematic') . get_the_author() . '">'; + $postmeta .= get_the_author(); + $postmeta .= "</a></span>\n"; + + // Display the post category/ies + if ( !is_category() ) { + $postmeta .= '<span class="cat-links"><em>' . __('in', 'thematic') . '</em> '; + $postmeta .= get_the_category_list(', ') . "</span>\n"; + } + + $postmeta .= '<em>'. __('on', 'thematic') . '</em> '; + $postmeta .= '<span class="entry-date"><abbr class="published" title="'; + $postmeta .= get_the_time('Y-m-d\TH:i:sO') . '">'; + $postmeta .= the_date('', '', '', false); + $postmeta .= '</abbr></span>'; + + $postmeta .= "</div><!-- .entry-meta -->\n"; + + if ($post->post_type == 'page' || is_404()) { + $postheader = $posttitle; + } else { + $postheader = $posttitle . $postmeta; + } + + echo apply_filters( 'vanilla_postheader', $postheader ); // Filter to override default post header +} + +// Information in Post Footer +function vanilla_postfooter() { + global $id, $post; + + // Display the tags + if (is_single()) { + $tagtext = __(' and tagged', 'thematic'); + $posttags = get_the_tag_list("<span class=\"tag-links\"> $tagtext ",', ','</span>'); + } elseif ( is_tag() && $tag_ur_it = sandbox_tag_ur_it(', ') ) { /* Returns tags other than the one queried */ + $posttags = '<span class="tag-links">' . __(' Also tagged ', 'thematic') . $tag_ur_it . '</span> <span class="meta-sep">|</span>'; + } else { + $tagtext = __('Tagged', 'thematic'); + $posttags = get_the_tag_list("<span class=\"tag-links\"> $tagtext ",', ','</span> <span class="meta-sep">|</span>'); + } + + // Display comments link and edit link + $postcomments = ' <span class="comments-link"><span class="bracket">{</span>'; + + if (comments_open()) { + $postcommentnumber = get_comments_number(); + if ($postcommentnumber != '1') { + $postcomments .= ' <a href="' . get_permalink() . '#comments" title="' . __('Comment on ', 'thematic') . the_title_attribute('echo=0') . '">'; + $postcomments .= '<span>' . get_comments_number() . '</span>' . __(' comments', 'thematic') . '</a>'; + } else { + $postcomments .= ' <a href="' . get_permalink() . '#comments" title="' . __('Comment on ', 'thematic') . the_title_attribute('echo=0') . '">'; + $postcomments .= '<span>' . get_comments_number() . '</span>' . __(' comment', 'thematic') . '</a>'; + } + } else { + $postcomments .= __('Comments closed', 'thematic'); + } + $postcomments .= ' <span class="bracket">}</span></span>'; + + // Display permalink, comments link, and RSS on single posts + $postconnect .= __('. Bookmark the ', 'thematic') . '<a href="' . get_permalink() . '" title="' . __('Permalink to ', 'thematic') . the_title_attribute('echo=0') . '">'; + $postconnect .= __('permalink', 'thematic') . '</a>.'; + if (('open' == $post-> comment_status) && ('open' == $post->ping_status)) { /* Comments are open */ + $postconnect .= ' <a class="comment-link" href="#respond" title ="' . __('Post a comment', 'thematic') . '">' . __('Post a comment', 'thematic') . '</a>'; + $postconnect .= __(' or leave a trackback: ', 'thematic'); + $postconnect .= '<a class="trackback-link" href="' . trackback_url(FALSE) . '" title ="' . __('Trackback URL for your post', 'thematic') . '" rel="trackback">' . __('Trackback URL', 'thematic') . '</a>.'; + } elseif (!('open' == $post-> comment_status) && ('open' == $post->ping_status)) { /* Only trackbacks are open */ + $postconnect .= __(' Comments are closed, but you can leave a trackback: ', 'thematic'); + $postconnect .= '<a class="trackback-link" href="' . trackback_url(FALSE) . '" title ="' . __('Trackback URL for your post', 'thematic') . '" rel="trackback">' . __('Trackback URL', 'thematic') . '</a>.'; + } elseif (('open' == $post-> comment_status) && !('open' == $post->ping_status)) { /* Only comments open */ + $postconnect .= __(' Trackbacks are closed, but you can ', 'thematic'); + $postconnect .= '<a class="comment-link" href="#respond" title ="' . __('Post a comment', 'thematic') . '">' . __('post a comment', 'thematic') . '</a>.'; + } elseif (!('open' == $post-> comment_status) && !('open' == $post->ping_status)) { /* Comments and trackbacks closed */ + $postconnect .= __(' Both comments and trackbacks are currently closed.', 'thematic'); + } + // Display edit link on single posts + if (current_user_can('edit_posts')) { + $postconnect .= ' ' . $posteditlink; + } + + // Add it all up + $postfooter = '<div class="entry-utility">'; + if ($post->post_type == 'page' && current_user_can('edit_posts')) { /* For logged-in "page" search results */ + $postfooter .= $posteditlink; + } elseif ($post->post_type == 'page') { /* For logged-out "page" search results */ + // nothing + } else { + if (is_single()) { + $postfooter .= $posttags . $postconnect; + } else { + $postfooter .= $posttags . $postcomments; + } + } + $postfooter .= "</div><!-- .entry-utility -->\n"; + + // Put it on the screen + echo apply_filters( 'vanilla_postfooter', $postfooter ); // Filter to override default post footer +} + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_vanilla/minify-html.php b/wp-content/themes/vanilla/_vanilla/minify-html.php new file mode 100644 index 000000000..2e54a7109 --- /dev/null +++ b/wp-content/themes/vanilla/_vanilla/minify-html.php @@ -0,0 +1,224 @@ +<?php +/** + * Class Minify_HTML + * @package Minify + */ + +/** + * Compress HTML + * + * This is a heavy regex-based removal of whitespace, unnecessary comments and + * tokens. IE conditional comments are preserved. There are also options to have + * STYLE and SCRIPT blocks compressed by callback functions. + * + * A test suite is available. + * + * @package Minify + * @author Stephen Clay <steve@mrclay.org> + */ +class Minify_HTML implements PHPTAL_Filter { + + /** + * Defines which class to call as part of callbacks, change this + * if you extend Minify_HTML + * @var string + */ + protected static $className = 'Minify_HTML'; + + /** + * "Minify" an HTML page + * + * @param string $html + * + * @param array $options + * + * 'cssMinifier' : (optional) callback function to process content of STYLE + * elements. + * + * 'jsMinifier' : (optional) callback function to process content of SCRIPT + * elements. Note: the type attribute is ignored. + * + * 'xhtml' : (optional boolean) should content be treated as XHTML1.0? If + * unset, minify will sniff for an XHTML doctype. + * + * @return string + */ + public function filter($html) { + return self::minify($html); + } + + public static function minify($html, $options = array()) { + + if (isset($options['cssMinifier'])) { + self::$_cssMinifier = $options['cssMinifier']; + } + if (isset($options['jsMinifier'])) { + self::$_jsMinifier = $options['jsMinifier']; + } + + $html = str_replace("\r\n", "\n", trim($html)); + + self::$_isXhtml = ( + isset($options['xhtml']) + ? (bool)$options['xhtml'] + : (false !== strpos($html, '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML')) + ); + + self::$_replacementHash = 'MINIFYHTML' . md5(time()); + self::$_placeholders = array(); + + // replace SCRIPTs (and minify) with placeholders + $html = preg_replace_callback( + '/\\s*(<script\\b[^>]*?>)([\\s\\S]*?)<\\/script>\\s*/i' + ,array(self::$className, '_removeScriptCB') + ,$html); + + // replace STYLEs (and minify) with placeholders + $html = preg_replace_callback( + '/\\s*(<style\\b[^>]*?>)([\\s\\S]*?)<\\/style>\\s*/i' + ,array(self::$className, '_removeStyleCB') + ,$html); + + // remove HTML comments (not containing IE conditional comments). + $html = preg_replace_callback( + '/<!--([\\s\\S]*?)-->/' + ,array(self::$className, '_commentCB') + ,$html); + + // replace PREs with placeholders + $html = preg_replace_callback('/\\s*(<pre\\b[^>]*?>[\\s\\S]*?<\\/pre>)\\s*/i' + ,array(self::$className, '_removePreCB') + , $html); + + // replace TEXTAREAs with placeholders + $html = preg_replace_callback( + '/\\s*(<textarea\\b[^>]*?>[\\s\\S]*?<\\/textarea>)\\s*/i' + ,array(self::$className, '_removeTaCB') + , $html); + + // trim each line. + // @todo take into account attribute values that span multiple lines. + $html = preg_replace('/^\\s+|\\s+$/m', '', $html); + + // remove ws around block/undisplayed elements + $html = preg_replace('/\\s+(<\\/?(?:area|base(?:font)?|blockquote|body' + .'|caption|center|cite|col(?:group)?|dd|dir|div|dl|dt|fieldset|form' + .'|frame(?:set)?|h[1-6]|head|hr|html|legend|li|link|map|menu|meta' + .'|ol|opt(?:group|ion)|p|param|t(?:able|body|head|d|h||r|foot|itle)' + .'|ul)\\b[^>]*>)/i', '$1', $html); + + // remove ws outside of all elements + $html = preg_replace_callback( + '/>([^<]+)</' + ,array(self::$className, '_outsideTagCB') + ,$html); + + // use newlines before 1st attribute in open tags (to limit line lengths) + $html = preg_replace('/(<[a-z\\-]+)\\s+([^>]+>)/i', "$1\n$2", $html); + + // fill placeholders + $html = str_replace( + array_keys(self::$_placeholders) + ,array_values(self::$_placeholders) + ,$html + ); + self::$_placeholders = array(); + + self::$_cssMinifier = self::$_jsMinifier = null; + return $html; + } + + protected static function _commentCB($m) + { + return (0 === strpos($m[1], '[') || false !== strpos($m[1], '<![')) + ? $m[0] + : ''; + } + + protected static function _reservePlace($content) + { + $placeholder = '%' . self::$_replacementHash . count(self::$_placeholders) . '%'; + self::$_placeholders[$placeholder] = $content; + return $placeholder; + } + + protected static $_isXhtml = false; + protected static $_replacementHash = null; + protected static $_placeholders = array(); + protected static $_cssMinifier = null; + protected static $_jsMinifier = null; + + protected static function _outsideTagCB($m) + { + return '>' . preg_replace('/^\\s+|\\s+$/', ' ', $m[1]) . '<'; + } + + protected static function _removePreCB($m) + { + return self::_reservePlace($m[1]); + } + + protected static function _removeTaCB($m) + { + return self::_reservePlace($m[1]); + } + + protected static function _removeStyleCB($m) + { + $openStyle = $m[1]; + $css = $m[2]; + // remove HTML comments + $css = preg_replace('/(?:^\\s*<!--|-->\\s*$)/', '', $css); + + // remove CDATA section markers + $css = self::_removeCdata($css); + + // minify + $minifier = self::$_cssMinifier + ? self::$_cssMinifier + : 'trim'; + $css = call_user_func($minifier, $css); + + return self::_reservePlace(self::_needsCdata($css) + ? "{$openStyle}/*<![CDATA[*/{$css}/*]]>*/</style>" + : "{$openStyle}{$css}</style>" + ); + } + + protected static function _removeScriptCB($m) + { + $openScript = $m[1]; + $js = $m[2]; + + // remove HTML comments (and ending "//" if present) + $js = preg_replace('/(?:^\\s*<!--\\s*|\\s*(?:\\/\\/)?\\s*-->\\s*$)/', '', $js); + + // remove CDATA section markers + $js = self::_removeCdata($js); + + // minify + $minifier = self::$_jsMinifier + ? self::$_jsMinifier + : 'trim'; + $js = call_user_func($minifier, $js); + + return self::_reservePlace(self::_needsCdata($js) + ? "{$openScript}/*<![CDATA[*/{$js}/*]]>*/</script>" + : "{$openScript}{$js}</script>" + ); + } + + + protected static function _removeCdata($str) + { + return (false !== strpos($str, '<![CDATA[')) + ? str_replace(array('<![CDATA[', ']]>'), '', $str) + : $str; + } + + protected static function _needsCdata($str) + { + return (self::$_isXhtml && preg_match('/(?:[<&]|\\-\\-|\\]\\]>)/', $str)); + } +} +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_vanilla/phptal-custom.php b/wp-content/themes/vanilla/_vanilla/phptal-custom.php new file mode 100644 index 000000000..e9042d43e --- /dev/null +++ b/wp-content/themes/vanilla/_vanilla/phptal-custom.php @@ -0,0 +1,61 @@ +<?php +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +// Using ugly filter to get a return, not echo. +$comments_number = ""; +function redir_comments_number($out){ + global $comments_number; + $comments_number = $out; + return ""; +} +add_filter('comments_number', 'redir_comments_number'); + +// no filter here so have to redo the function using return, not echo. +function vanilla_comments_popup_link( $zero = 'No Comments', $one = '1 Comment', $more = '% Comments', $css_class = '', $none = 'Comments Off' ) { + global $id, $wpcommentspopupfile, $wpcommentsjavascript, $post, $comments_number; + + $output = false; + + if ( is_single() || is_page() ) + return $output; + + $number = get_comments_number( $id ); + + if ( 0 == $number && 'closed' == $post->comment_status && 'closed' == $post->ping_status ) { + return '<span' . ((!empty($css_class)) ? ' class="' . $css_class . '"' : '') . '>' . $none . '</span>'; + } + + if ( post_password_required() ) { + return __('Enter your password to view comments'); + } + + $output .= '<a href="'; + if ( $wpcommentsjavascript ) { + if ( empty( $wpcommentspopupfile ) ) + $home = get_option('home'); + else + $home = get_option('siteurl'); + $output .= $home . '/' . $wpcommentspopupfile . '?comments_popup=' . $id; + $output .= '" onclick="wpopen(this.href); return false"'; + } else { // if comments_popup_script() is not in the template, display simple comment link + if ( 0 == $number ) + $output .= get_permalink() . '#respond'; + else + $output .= get_comments_link(); + $output .= '"'; + } + + if ( !empty( $css_class ) ) { + $output .= ' class="'.$css_class.'" '; + } + $title = attribute_escape( get_the_title() ); + + $output .= apply_filters( 'comments_popup_link_attributes', '' ); + + $output .= ' title="' . sprintf( __('Comment on %s'), $title ) . '">'; + comments_number( $zero, $one, $more, $number ); + $output .= $comments_number . '</a>'; + + return $output; +} +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/_vanilla/widgets.php b/wp-content/themes/vanilla/_vanilla/widgets.php new file mode 100644 index 000000000..ba32d84c0 --- /dev/null +++ b/wp-content/themes/vanilla/_vanilla/widgets.php @@ -0,0 +1,304 @@ +<?php +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +// Load widget PHP files from the widgets directory +function vanilla_load_widgets() { + $set = vanilla_get_option('vnl_tpl_set').'-set/'; + $files = cfct_files(CFCT_PATH.$set.'widgets'); + foreach ($files as $file) { + include(CFCT_PATH.$set.'widgets/'.$file); + } +} + +// Make widget registration really easy +function vanilla_register_widget($classname=null, $description=null){ + if(!isset($classname)) return false; + + $widget = str_replace("widget_", "", $classname); + $description = (!isset($description) || $description == "") ? $widget : $description; + + // clean up the description a tad + $description = ucwords(str_replace("_", " ", $description)); + + wp_register_sidebar_widget( $widget, $description, $classname, + array( + 'classname' => $classname, + 'description' => $description + ) + ); + wp_register_widget_control( $widget, $description, $classname.'_control' ); +} + +// Widget: Global_Nav +function widget_globalnav($args) { + extract($args); + $options = get_option('widget_globalnav'); + $title = empty($options['title']) ? __( 'Main Menu', 'sandbox' ) : $options['title']; + $params = empty($options['params']) ? __( 'Parameters', 'sandbox' ) : $options['params']; + + // Produces a list of pages in the header without whitespace -- er, I mean negative space. + echo '<div id="menu"><ul>'."\n"; + $menu = wp_list_pages('title_li=&sort_column=menu_order&echo=0&'.$params) . + '<li class="rss"><a href="' . get_bloginfo('rss2_url') . '">Subscribe</a></li>' . + '<li class="delicious"><a href="#" onclick="delicious_bookmark();" title="Click here to bookmark this page on del.icio.us...">Bookmark</a></li>' . + '<li class="technorati"><a href="http://technorati.com/faves?add=' . get_option('home') . '">Favorite</a></li>'; + echo str_replace(array("\r", "\n", "\t"), '', $menu); + echo "</ul></div>\n"; +} + +// Widget: Global_Nav Control +function widget_globalnav_control() { + $options = $newoptions = get_option('widget_globalnav'); + if ( $_POST['globalnav-submit'] ) { + $newoptions['title'] = strip_tags( stripslashes( $_POST['globalnav-title'] ) ); + $newoptions['params'] = strip_tags( stripslashes( $_POST['globalnav-params'] ) ); + } + if ( $options != $newoptions ) { + $options = $newoptions; + update_option( 'widget_globalnav', $options ); + } + $title = attribute_escape( $options['title'] ); + $params = attribute_escape( $options['params'] ); +?> + <p><label for="globalnav-title"><?php _e( 'Title:', 'sandbox' ) ?> <input class="widefat" id="globalnav-title" name="globalnav-title" type="text" value="<?php echo $title; ?>" /></label></p> + <p><label for="globalnav-params"><?php _e( 'Parameters:', 'sandbox' ) ?> <input class="widefat" id="globalnav-params" name="globalnav-params" type="text" value="<?php echo $params; ?>" /></label></p> + <input type="hidden" id="globalnav-submit" name="globalnav-submit" value="1" /> +<?php +} + +// Widget: Search; to match the Sandbox style and replace Widget plugin default +function widget_sandbox_search($args) { + extract($args); + $options = get_option('widget_sandbox_search'); + $title = empty($options['title']) ? __( 'Search', 'sandbox' ) : $options['title']; + $button = empty($options['button']) ? __( 'Find', 'sandbox' ) : $options['button']; +?> + <?php echo $before_widget ?> + <?php echo $before_title ?><label for="s"><?php echo $title ?></label><?php echo $after_title ?> + <form id="searchform" method="get" action="<?php bloginfo('home') ?>"> + <div> + <input id="s" class="text-input" name="s" type="text" value="<?php the_search_query() ?>" size="10" tabindex="1" accesskey="S" /> + <input id="searchsubmit" class="submit-button" name="searchsubmit" type="submit" value="<?php echo $button ?>" tabindex="2" /> + </div> + </form> + <?php echo $after_widget ?> +<?php +} + +// Widget: Search; element controls for customizing text within Widget plugin +function widget_sandbox_search_control() { + $options = $newoptions = get_option('widget_sandbox_search'); + if ( $_POST['search-submit'] ) { + $newoptions['title'] = strip_tags( stripslashes( $_POST['search-title'] ) ); + $newoptions['button'] = strip_tags( stripslashes( $_POST['search-button'] ) ); + } + if ( $options != $newoptions ) { + $options = $newoptions; + update_option( 'widget_sandbox_search', $options ); + } + $title = attribute_escape( $options['title'] ); + $button = attribute_escape( $options['button'] ); +?> + <p><label for="search-title"><?php _e( 'Title:', 'sandbox' ) ?> <input class="widefat" id="search-title" name="search-title" type="text" value="<?php echo $title; ?>" /></label></p> + <p><label for="search-button"><?php _e( 'Button Text:', 'sandbox' ) ?> <input class="widefat" id="search-button" name="search-button" type="text" value="<?php echo $button; ?>" /></label></p> + <input type="hidden" id="search-submit" name="search-submit" value="1" /> +<?php +} + +// Widget: Meta; to match the Sandbox style and replace Widget plugin default +function widget_sandbox_meta($args) { + extract($args); + if ( empty($title) ) + $title = __('Meta', 'sandbox'); +?> + <?php echo $before_widget; ?> + <?php echo $before_title . $title . $after_title; ?> + <ul> + <?php wp_register() ?> + <li><?php wp_loginout() ?></li> + <?php wp_meta() ?> + </ul> + <?php echo $after_widget; ?> +<?php +} + +// Widget: Navigation_top +function widget_navigation_top($args) { + if (is_single() || is_page()) return; +?> + <div id="nav-above" class="navigation"> + <?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } + elseif(function_exists('wp_page_numbers')) { wp_page_numbers(); } + else { ?> + <div class="nav-previous"><?php next_posts_link(__('<span class="meta-nav">«</span> Older posts', 'thematic')) ?></div> + <div class="nav-next"><?php previous_posts_link(__('Newer posts <span class="meta-nav">»</span>', 'thematic')) ?></div> + <?php } ?> + </div> +<?php +} + +// Widget: Navigation_top; element controls for customizing text within Widget plugin +function widget_navigation_top_control() { + $options = $newoptions = get_option('widget_navigation_top'); + if ( $_POST['navigation-top-submit'] ) { + $newoptions['title'] = strip_tags( stripslashes( $_POST['navigation-top-title'] ) ); + } + if ( $options != $newoptions ) { + $options = $newoptions; + update_option( 'widget_navigation_top', $options ); + } + $title = attribute_escape( $options['title'] ); +?> + <p><label for="navigation-top-title"><?php _e( 'Title:', 'sandbox' ) ?> <input class="widefat" id="navigation-top-title" name="navigation-top-title" type="text" value="<?php echo $title; ?>" /></label></p> + <input type="hidden" id="navigation-top-submit" name="navigation-top-submit" value="1" /> +<?php +} + +// Widget: Navigation_bottom +function widget_navigation_bottom($args) { + if (is_single() || is_page()) return; +?> + <div id="nav-below" class="navigation"> + <?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } + elseif(function_exists('wp_page_numbers')) { wp_page_numbers(); } + else { ?> + <div class="nav-previous"><?php next_posts_link(__('<span class="meta-nav">«</span> Older posts', 'thematic')) ?></div> + <div class="nav-next"><?php previous_posts_link(__('Newer posts <span class="meta-nav">»</span>', 'thematic')) ?></div> + <?php } ?> + </div> +<?php +} + +// Widget: Navigation_bottom; element controls for customizing text within Widget plugin +function widget_navigation_bottom_control() { + $options = $newoptions = get_option('widget_navigation_bottom'); + if ( $_POST['navigation-bottom-submit'] ) { + $newoptions['title'] = strip_tags( stripslashes( $_POST['navigation-bottom-title'] ) ); + } + if ( $options != $newoptions ) { + $options = $newoptions; + update_option( 'widget_navigation_bottom', $options ); + } + $title = attribute_escape( $options['title'] ); +?> + <p><label for="navigation-bottom-title"><?php _e( 'Title:', 'sandbox' ) ?> <input class="widefat" id="navigation-bottom-title" name="navigation-bottom-title" type="text" value="<?php echo $title; ?>" /></label></p> + <input type="hidden" id="navigation-bottom-submit" name="navigation-bottom-submit" value="1" /> +<?php +} + +// Widget: RSS links; to match the Sandbox style +function widget_sandbox_rsslinks($args) { + extract($args); + $options = get_option('widget_sandbox_rsslinks'); + $title = empty($options['title']) ? __('RSS Links', 'sandbox') : $options['title']; +?> + <?php echo $before_widget; ?> + <?php echo $before_title . $title . $after_title; ?> + <ul> + <li><a href="<?php bloginfo('rss2_url') ?>" title="<?php echo wp_specialchars(get_bloginfo('name'), 1) ?> <?php _e('Posts RSS feed', 'sandbox'); ?>" rel="alternate" type="application/rss+xml"><?php _e('All posts', 'sandbox') ?></a></li> + <li><a href="<?php bloginfo('comments_rss2_url') ?>" title="<?php echo wp_specialchars(bloginfo('name'), 1) ?> <?php _e('Comments RSS feed', 'sandbox'); ?>" rel="alternate" type="application/rss+xml"><?php _e('All comments', 'sandbox') ?></a></li> + </ul> + <?php echo $after_widget; ?> +<?php +} + +// Widget: RSS links; element controls for customizing text within Widget plugin +function widget_sandbox_rsslinks_control() { + $options = $newoptions = get_option('widget_sandbox_rsslinks'); + if ( $_POST["rsslinks-submit"] ) { + $newoptions['title'] = strip_tags(stripslashes($_POST["rsslinks-title"])); + } + if ( $options != $newoptions ) { + $options = $newoptions; + update_option('widget_sandbox_rsslinks', $options); + } + $title = htmlspecialchars($options['title'], ENT_QUOTES); +?> + <p><label for="rsslinks-title"><?php _e('Title:'); ?> <input style="width: 250px;" id="rsslinks-title" name="rsslinks-title" type="text" value="<?php echo $title; ?>" /></label></p> + <input type="hidden" id="rsslinks-submit" name="rsslinks-submit" value="1" /> +<?php +} + +// Widgets plugin: intializes the plugin after the widgets above have passed snuff +function vanilla_widgets_init() { + if ( !function_exists('register_sidebars') ) + return; + + $widget_blocks = array('Header Nav','Header','Main Menu','Sub Menu','Breadcrumbs','Content Top','Content Middle','Content Bottom','Primary Sidebar','Secondary Sidebar','Utility 1','Utility 2','Utility 3','Utility 4','Footer Nav','Footer','Front Page 1', 'Front Page 2'); + + foreach ($widget_blocks as $block) { + register_sidebar( array( + 'name' => $block, + 'id' => sanitize_title_with_dashes(strtolower($block)), + 'before_widget' => '<div id="%1$s" class="widget %2$s">'."\n", + 'after_widget' => "</div>\n", + 'before_title' => '<h3 class="widgettitle">'."\n", + 'after_title' => "</h3>\n" + )); + }; + + // Load widgets from the /widgets directory. + vanilla_load_widgets(); + + // Finished intializing Widgets plugin, now let's load the Sandbox default widgets; first, Sandbox search widget + $widget_ops = array( + 'classname' => 'widget_search', + 'description' => __( "A search form for your blog (Sandbox)", "sandbox" ) + ); + wp_register_sidebar_widget( 'search', __( 'Search', 'sandbox' ), 'widget_sandbox_search', $widget_ops ); + unregister_widget_control('search'); + wp_register_widget_control( 'search', __( 'Search', 'sandbox' ), 'widget_sandbox_search_control' ); + + // Sandbox Meta widget + $widget_ops = array( + 'classname' => 'widget_meta', + 'description' => __( "Log in/out and administration links (Sandbox)", "sandbox" ) + ); + wp_register_sidebar_widget( 'meta', __( 'Meta', 'sandbox' ), 'widget_sandbox_meta', $widget_ops ); + unregister_widget_control('meta'); + wp_register_widget_control( 'meta', __('Meta'), 'wp_widget_meta_control' ); + + // Navigation Top widget + $widget_ops = array( + 'classname' => 'widget_navigation_top', + 'description' => __( "Top Prev/Next paging links (Vanilla)", "sandbox" ) + ); + wp_register_sidebar_widget( 'navigation_top', __( 'Top Prev/Next', 'sandbox' ), 'widget_navigation_top', $widget_ops ); + wp_register_widget_control( 'navigation_top', __( 'Top Prev/Next', 'sandbox' ), 'widget_navigation_top_control' ); + + // Navigation Bottom widget + $widget_ops = array( + 'classname' => 'widget_navigation_bottom', + 'description' => __( "Bottom Prev/Next paging links (Vanilla)", "sandbox" ) + ); + wp_register_sidebar_widget( 'navigation_bottom', __( 'Bottom Prev/Next', 'sandbox' ), 'widget_navigation_bottom', $widget_ops ); + wp_register_widget_control( 'navigation_bottom', __( 'Bottom Prev/Next', 'sandbox' ), 'widget_navigation_bottom_control' ); + + //Sandbox RSS Links widget + $widget_ops = array( + 'classname' => 'widget_rss_links', + 'description' => __( "RSS links for both posts and comments <small>(Sandbox)</small>", "sandbox" ) + ); + wp_register_sidebar_widget( 'rss_links', __( 'RSS Links', 'sandbox' ), 'widget_sandbox_rsslinks', $widget_ops ); + wp_register_widget_control( 'rss_links', __( 'RSS Links', 'sandbox' ), 'widget_sandbox_rsslinks_control' ); + + //Global Nav widget + $widget_ops = array( + 'classname' => 'widget_globalnav', + 'description' => __( "Global Navigation Menu <small>(Vanilla)</small>", "sandbox" ) + ); + wp_register_sidebar_widget( 'globalnav', __( 'Global Navigation', 'sandbox' ), 'widget_globalnav', $widget_ops ); + wp_register_widget_control( 'globalnav', __( 'Global Navigation', 'sandbox' ), 'widget_globalnav_control' ); +} + + +// Runs our code at the end to check that everything needed has loaded +add_action( 'init', 'vanilla_widgets_init' ); + +// Adds filters so that things run smoothly +add_filter( 'archive_meta', 'wptexturize' ); +add_filter( 'archive_meta', 'convert_smilies' ); +add_filter( 'archive_meta', 'convert_chars' ); +add_filter( 'archive_meta', 'wpautop' ); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/archive.php b/wp-content/themes/vanilla/archive.php new file mode 100644 index 000000000..7ac452cea --- /dev/null +++ b/wp-content/themes/vanilla/archive.php @@ -0,0 +1,22 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +cfct_posts(); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/archives.php b/wp-content/themes/vanilla/archives.php new file mode 100644 index 000000000..b3268fa06 --- /dev/null +++ b/wp-content/themes/vanilla/archives.php @@ -0,0 +1,21 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/carrington-sidebar-top.php b/wp-content/themes/vanilla/blog-set/carrington-sidebar-top.php new file mode 100644 index 000000000..25994ad4b --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/carrington-sidebar-top.php @@ -0,0 +1,62 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +global $post; + +?> + +<div id="sidebar-top"> + <div id="carrington-subscribe" class="widget"> + <h2 class="widget-title"><?php _e('Subscribe', 'carrington'); ?></h2> + <a class="feed" title="RSS 2.0 feed for posts" rel="alternate" href="<?php bloginfo('rss2_url') ?>"><?php _e('Site <acronym title="Really Simple Syndication">RSS</acronym> feed', 'carrington'); ?></a> + </div><!--.widget--> +<?php +$about_text = get_option('cfct_about_text'); +remove_filter('the_content', 'st_add_widget'); +remove_filter('the_excerpt', 'st_add_widget'); +if (!empty($about_text)) { + $about_text = apply_filters('the_content', $about_text); +} +else { + $about_query = new WP_Query('pagename=about'); + $orig_post = $post; + while ($about_query->have_posts()) { + $about_query->the_post(); + $about_text = get_the_excerpt().sprintf(__('<a class="more" href="%s">more →</a>', 'carrington'), get_permalink()); + } +} +if (function_exists('st_add_widget')) { + add_filter('the_content', 'st_add_widget'); + add_filter('the_excerpt', 'st_add_widget'); +} +if (!empty($about_text)) { +?> + <div id="carrington-about" class="widget"> + <div class="about"> + <h2 class="title"><?php printf(__('About %s', 'carrington'), get_bloginfo('name')); ?></h2> +<?php + echo $about_text; +?> + </div> + </div><!--.widget--> +<?php +} +?> +</div><!--#sidebar--> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/comment/README.txt b/wp-content/themes/vanilla/blog-set/comment/README.txt new file mode 100644 index 000000000..2591ee4a7 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/comment/README.txt @@ -0,0 +1,27 @@ +## comment/ + +### Overview + +This directory holds templates for displaying a comment in it's entirety. These templates do not hold the comment loop, or the "Comments" title or the form to allow commenting; they just show a single comment. + +Typically these templates will be brought in to a template in _comments/_, but can also be used to display single comments as needed. + +A "default" template is required, and will be used when there are no other templates that match a given comment. This could be because no other templates have been created, or because the comment in question doesn't match the templates that are available. + + +### Supported Override Filenames + +- comment-default.php (or default.php) +- ping.php +- author.php +- user-{username}.php +- role-{role}.php + + +### File Descriptions + +- *comment-default.php* - Used when there are no other templates that match for a given comment. +- *ping.php* - Used if the comment is a pingback or a trackback. +- *author.php* - Used when the author of the post leaves a comment. +- *user-{username}.php* - Used when a user with that username leaves a comment. For example, a template with a file name of _user-jsmith.php_ would be used for a comment by user _jsmith_. Any WordPres username can take the place of {username} in the file name. +- *role-{role}.php* - Used when a comment is made by a user with a certain role. For example, a template with a file name of _role-subscriber.php_ would be used for a user with a role of "subscriber" (typical for a registered commentor who is not an author or an admin). Any WordPress role can take the place of {role} in the file name. diff --git a/wp-content/themes/vanilla/blog-set/comment/comment-default.html b/wp-content/themes/vanilla/blog-set/comment/comment-default.html new file mode 100644 index 000000000..41a69db1d --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/comment/comment-default.html @@ -0,0 +1,45 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<div metal:define-macro="loader" tal:omit-tag=""> + + <div metal:fill-slot="comment" id="comment-${comment/id}" class="${comment/class}"> + <span tal:condition="php: comment.approved == '0'"> + <div class="notification"><strong>${structure comment/message}</strong></div>${comment/approved} + </span> + + <div class="info"> + <address class="vcard author entry-title comment-author"> + <span class="photo" tal:condition="exists: comment/avatar">${structure comment/avatar}</span> + ${structure comment/author_link} + </address><!--.vcard--> + <div class="date comment-date"> + ${structure comment/date} + </div><!--.date--> + </div><!--.info--> + + <div class="entry-content comment-content"> + ${structure comment/text} + </div><!--.entry-content--> + <div class="comment-editlink"><a href="${structure comment/edit_link}" title="${comment/edit_attribute}">${comment/edit_message}</a></div> + </div><!--.comment--> + +</div> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/comment/comment-default.php b/wp-content/themes/vanilla/blog-set/comment/comment-default.php new file mode 100644 index 000000000..8c99a7c04 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/comment/comment-default.php @@ -0,0 +1,58 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +global $comment, $tpl; + +add_filter('get_comment_author_link', 'cfct_hcard_comment_author_link'); + +$author_link = sprintf(__('%s <span class="said">said</span>', 'carrington'), get_comment_author_link()); + +remove_filter('get_comment_author_link', 'cfct_hcard_comment_author_link'); + +$comment_date = sprintf( + __('<span class="on">on</span> <abbr class="published" title="%s"><a title="Permanent link to this comment" rel="bookmark" href="%s#comment-%s">%s</a></abbr>' + , 'carrington' + ) + , get_comment_date('Y-m-d\TH:i:sO') + , get_permalink() + , get_comment_ID() + , get_comment_date() +); + +$tpl["comment"] = array( + "tpl_file" => "comment-default.html" +); + +$tpl["comments_list"][] = array( + "id" => get_comment_ID(), + "class" => cfct_comment_class(false), + "approved" => ($comment->comment_approved) ? 1 : 0, + "message" => __('Your comment is awaiting moderation.', 'carrington'), + "avatar" => get_avatar($comment, 36), + "author_link" => $author_link, + "date" => $comment_date, + "author_url" => get_comment_author_url(), + "text" => get_comment_text(), + "edit_link" => get_edit_comment_link($comment->comment_ID), + "edit_attribute" => __('Edit comment'), + "edit_message" => __('Edit') +); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/comment/ping.html b/wp-content/themes/vanilla/blog-set/comment/ping.html new file mode 100644 index 000000000..f403a8de2 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/comment/ping.html @@ -0,0 +1,33 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<div metal:define-macro="loader" tal:omit-tag=""> + + <div metal:fill-slot="ping" id="comment-${ping/id}" class="${ping/class}"> + ${structure ping/author_link} + <span class="date"> + <span class="on">${ping/on}</span> <abbr class="published" title="${structure ping/date_attribute}">${structure ping/date}</abbr> + </span> + <blockquote class="entry-summary" cite="${structure ping/author_url}">${structure ping/text}</blockquote> + <div class="comment-editlink"><a href="${structure ping/edit_link}" title="${ping/edit_attribute}">${ping/edit_message}</a></div> + </div><!--.ping--> + +</div> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/comment/ping.php b/wp-content/themes/vanilla/blog-set/comment/ping.php new file mode 100644 index 000000000..7f070d361 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/comment/ping.php @@ -0,0 +1,45 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +add_filter('get_comment_author_link', 'cfct_hcard_ping_author_link'); + +$author_link = sprintf(__('<cite class="vcard author entry-title">%s <span class="linked-to-this-post">linked to this post</span></cite>', 'carrington'), get_comment_author_link()); + +remove_filter('get_comment_author_link', 'cfct_hcard_ping_author_link'); + +global $comment, $tpl; + +$tpl["ping"] = array( + "tpl_file" => "ping.html" +); + +$tpl["pings_list"][] = array( + "id" => get_comment_ID(), + "class" => cfct_comment_class(false), + "author_link" => $author_link, + "on" => __('on'), + "date_attribute" => get_comment_date('Y-m-d\TH:i:sO'), + "date" => get_comment_date(), + "author_url" => get_comment_author_url(), + "text" => get_comment_text(), + "edit_link" => get_edit_comment_link($comment->comment_ID), + "edit_attribute" => __('Edit comment'), + "edit_message" => __('Edit') +); \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/comments/README.txt b/wp-content/themes/vanilla/blog-set/comments/README.txt new file mode 100644 index 000000000..ec7f7d2b2 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/comments/README.txt @@ -0,0 +1,37 @@ +## comments/ + +### Overview + +This directory holds templates for displaying the comment loop and the comment form - what is typically called in by WordPress's `comment_template()` function. + +This level of abstraction us useful to be able to load in the comments and new comment form for a post/page via AJAX if desired. + +A "default" template is required, and will be used when there are no other templates that match a given comment. This could be because no other templates have been created, or because the context doesn't match the templates that are available. + + +### Supported Override Filenames + +- comments-default.php (or default.php) +- archive.php +- author.php +- author-{username}.php +- category.php +- cat-{slug}.php +- home.php +- page.php +- role-{rolename}.php +- search.php +- single.php +- tag.php +- tag-{slug}.php + + +### File Descriptions + +Standard context file naming will work for files in this directory. Here are some specific examples. + +- *default.php* - Used when there are no other templates that match for a given page/post. +- *author-{username}.php* - Used when the post/page is authored by a specific user. For example, a template with a file name of _author-jsmith.php_ would be used for a post/page by user _jsmith_. Any WordPres username can take the place of {username} in the file name. +- *home.php* - Used for the home page. +- *page.php* - Used for pages that do not match any other contextual templates. + diff --git a/wp-content/themes/vanilla/blog-set/comments/comments-default.html b/wp-content/themes/vanilla/blog-set/comments/comments-default.html new file mode 100644 index 000000000..d8fda38c2 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/comments/comments-default.html @@ -0,0 +1,49 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<div metal:define-macro="loader" tal:omit-tag=""> + +<div metal:fill-slot="comments" tal:omit-tag=""> + <span tal:define="file php:vanilla_get_template('comments/' . vanilla['comments_loop']['tpl_file'])" + metal:use-macro="${file}/loader" + tal:condition="exists: vanilla/comments_list" tal:comment="The comments_loop slot." /> + <span tal:define="file php:vanilla_get_template('comments/' . vanilla['pings_loop']['tpl_file'])" + metal:use-macro="${file}/loader" + tal:condition="exists: vanilla/pings_list" tal:comment="The pings_loop slot." /> + <span tal:define="file php:vanilla_get_template('forms/' . vanilla['comment_form']['tpl_file'])" + metal:use-macro="${file}/loader" tal:comment="The comment form slot." /> + + <h2 class="comments">${structure vanilla/comments/comments_title}</h2> + <p>${structure vanilla/comments/comments_description}</p> + + <span metal:define-slot="comments_loop" tal:condition="exists: vanilla/comments_list" /> + + <div tal:condition="exists: vanilla/pings_list"> + <h3 class="pings">${structure vanilla/comments/pings_title}</h3> + <span metal:define-slot="pings_loop" /> + </div> + + <span metal:define-slot="comment_form" /> +</div> + +</div> + + diff --git a/wp-content/themes/vanilla/blog-set/comments/comments-default.php b/wp-content/themes/vanilla/blog-set/comments/comments-default.php new file mode 100644 index 000000000..a716f30d5 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/comments/comments-default.php @@ -0,0 +1,58 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +global $post, $wp_query, $comments, $comment, $tpl; +if (empty($post->post_password) || $_COOKIE['wp-postpass_' . COOKIEHASH] == $post->post_password) { + $comments = $wp_query->comments; + $comment_count = count($comments); + $comment_count == 1 ? $comment_title = __('One Response', 'carrington') : $comment_title = sprintf(__('%d Responses', 'carrington'), $comment_count); +} + +$comments_desc = sprintf(__('Stay in touch with the conversation, subscribe to the <a class="feed" title="RSS feed for comments on this post" rel="alternate" href="%s"><acronym title="Really Simple Syndication">RSS</acronym> feed for comments on this post</a>.', 'carrington'), get_bloginfo('rss2_url')); + +$tpl["comments"] = array( + "tpl_file" => "comments-default.html", + "comments_title" => $comment_title, + "comments_description" => $comments_desc, + "pings_title" => __('Continuing the Discussion', 'carrington') +); + +if ($comments) { + $comment_count = 0; + $ping_count = 0; + foreach ($comments as $comment) { + if (get_comment_type() == 'comment') { + $comment_count++; + } + else { + $ping_count++; + } + } + if ($comment_count) { + cfct_template_file('comments', 'comments-loop'); + } + if ($ping_count) { + cfct_template_file('comments', 'pings-loop'); + } +} + +cfct_form('comment'); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/comments/comments-loop.html b/wp-content/themes/vanilla/blog-set/comments/comments-loop.html new file mode 100644 index 000000000..cc587e61f --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/comments/comments-loop.html @@ -0,0 +1,40 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<div metal:define-macro="loader" tal:omit-tag=""> + +<div metal:fill-slot="comments_loop" tal:omit-tag=""> + <ol class="comments-list hfeed"> + <li class="hentry ${vanilla/comment_list_class}" tal:repeat="comment vanilla/comments_list"> + <span tal:define="file php:vanilla_get_template('comment/' . vanilla['comment']['tpl_file'])" + metal:use-macro="${file}/loader" tal:comment="The single comment slot." /> + <span metal:define-slot="comment" /> + </li><!-- .hentry --> + </ol><!-- #comments-list --> +</div> + +</div> + + + + + + diff --git a/wp-content/themes/vanilla/blog-set/comments/comments-loop.php b/wp-content/themes/vanilla/blog-set/comments/comments-loop.php new file mode 100644 index 000000000..ef0c137ad --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/comments/comments-loop.php @@ -0,0 +1,36 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +global $comments, $comment, $tpl; + +$tpl["comments_loop"] = array( + "tpl_file" => "comments-loop.html" +); + +$tpl[] = array( + "comment_list_class" => cfct_comment_list_class(false) +); + +foreach ($comments as $comment) { + if (get_comment_type() == 'comment') { + cfct_comment(); + } +} +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/comments/pings-loop.html b/wp-content/themes/vanilla/blog-set/comments/pings-loop.html new file mode 100644 index 000000000..4c13c9b1e --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/comments/pings-loop.html @@ -0,0 +1,34 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<div metal:define-macro="loader" tal:omit-tag=""> + +<div metal:fill-slot="pings_loop" tal:omit-tag=""> + <ol class="pings-list hfeed"> + <li class="hentry ${vanilla/comment_list_class}" tal:repeat="ping vanilla/pings_list"> + <span tal:define="file php:vanilla_get_template('comment/' . vanilla['ping']['tpl_file'])" + metal:use-macro="${file}/loader" tal:comment="The single ping slot." /> + <span metal:define-slot="ping" /> + </li><!-- .hentry --> + </ol><!-- #pings-list --> +</div> + +</div> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/comments/pings-loop.php b/wp-content/themes/vanilla/blog-set/comments/pings-loop.php new file mode 100644 index 000000000..3f6a02412 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/comments/pings-loop.php @@ -0,0 +1,36 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +global $comments, $comment, $tpl; + +$tpl["pings_loop"] = array( + "tpl_file" => "pings-loop.html" +); + +$tpl[] = array( + "comment_list_class" => cfct_comment_list_class(false) +); + +foreach ($comments as $comment) { + if (get_comment_type() != 'comment') { + cfct_comment(); + } +} +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/content/README.txt b/wp-content/themes/vanilla/blog-set/content/README.txt new file mode 100644 index 000000000..5c8f2c588 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/content/README.txt @@ -0,0 +1,66 @@ +## content/ + +### Overview + +This directory holds the templates for displaying a post. Typically this will be the full post with title, meta information (date, categories, tags, author, etc.) and the full output of `the_content()`. + +Commonly these templates are included by templates in the _loop/_; but are also useful for bringing in an atomic post representation via AJAX or placing one within another template. + +A "default" template is required, and will be used when there are no other templates that match a given comment. This could be because no other templates have been created, or because the comment in question doesn't match the templates that are available. + +You can create templates to be used with posts/pages given various conditions. For example, you might want to give all posts in a certain category some specific styling rules. Or perhaps posts with a certain custom field or by a specific author. This is accomplished by creating templates with file names that match these conditions, then placing them in the _content/_ directory. All templates other than _default.php_ are optional. + +The order in which these conditions are checked defaults to the following: + +1. author +2. meta +3. category +4. role +5. tag +6. page types (author, category, tag, single, search, etc.) +7. default + +however this order can be overridden with a plugin using the `cfct_content_match_order` hook. + +Once a template match has been found, no other processing is done. + +If you want to apply styling/custom HTML to `the_excerpt()`, create/customize templates in the _excerpt/_ directory rather than adding conditional logic to these templates. + + +### Supported Override Filenames + +- content-default.php (or default.php) +- archive.php +- author.php +- author-{username}.php +- category.php +- cat-{slug}.php +- home.php +- meta-{key}-{value}.php +- meta-{key}.php +- page.php +- parent-{slug}.php +- role-{rolename}.php +- search.php +- single.php +- tag.php +- tag-{slug}.php + + +### File Descriptions + +- *content-default.php* - Used when there are no other templates that match for a given post/page. +- *author-{username}.php* - Used when a user with that username authors a post/page. For example, a template with a file name of _author-jsmith.php_ would be used for a poat/page by user _jsmith_. Any WordPres username can take the place of {username} in the file name. +- *meta-{key}-{value}.php* - Used when there is a custom field for the post/page matching the key and value listed in the file name. This is useful if you want to be able to flag posts as "featured" or similar, and give those posts some custom treatment. In this example, you could add a custom field of "featured" with a value of "yes" to a post/page and it would use a template of _meta-featured-yes.php_ if that template exists. +- *meta-{key}.php* - Used when there is a custom field for the post/page matching the key listed in the file name. This is useful if you want to be able to flag posts as "photo" or similar, and give those posts some custom treatment. In this example, you could add a custom field of "photo" with a value of the URL of the image to a post/page and it would use a template of _meta-photo.php_ if that template exists. The value does not matter in this match. +- *cat-{slug}.php* - Used when a post is in a given category. The category is matched by the "slug" - for example a post in category "General" (with a category slug of "general") could use a template of _cat-general.php_. +- *parent-{slug}.php* - Used when a page is a child page of a specific parent page. The page is matched by the "slug" - for example a page under a parent page with slug of "example" could use a template of _parent-example.php_. +- *role-{role}.php* - Used when a post/page is authored by a user with a particular role. The {role} is an all lowercase representation of the role string - for example, an author with an "Administrator" role might use a template of _role-administrator.php_. This is primarily useful if you have a set of authors that are given a Contributor role; or a Guest Columnist role or similar. Any WordPress role can take the place of {role} in the file name. +- *tag-{slug}.php* - Used when a post has a certain tag applied to it. The tag is matched by the "slug" - for example a post with tag "Reference" (with a tag slug of "reference") could use a template of _tag-reference.php_. +- *author.php* - Used when the content is being displayed on an "author" page (a page listing posts by author). +- *category.php* - Used when the content is being displayed on a "category" page (a page listing posts by category). +- *tag.php* - Used when the content is being displayed on an "tag" page (a page listing posts by tags). +- *page.php* - Used when the content is being displayed is a page (not a post). +- *single.php* - Used when the content is being displayed on an "single" page (a page showing only one post). +- *search.php* - Used when the content is being displayed are search results (a page listing posts matching a user search). +- *home.php* - Used when the page being displayed is the home page. diff --git a/wp-content/themes/vanilla/blog-set/content/cat-asides.php b/wp-content/themes/vanilla/blog-set/content/cat-asides.php new file mode 100644 index 000000000..b1c67b40b --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/content/cat-asides.php @@ -0,0 +1,67 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +global $previousday, $authordata; +$previousday = -1; + +if (is_home()) : + +// THIS IS THE MODIFIED LOOK FOR ASIDES ON "INDEX" PAGES +?> +<div id="post-content-<?php the_ID() ?>" class="hentry full <?php sandbox_post_class() ?>"> + <div class="wrapper"> + <div class="entry-content full-content"> + <?php the_content('<span class="more-link">'.__('Continued...', 'carrington').'</span>') ?> + <p> </p> + </div><!--/entry-content--> + <p class="comments-link"><?php comments_popup_link(__('No comments', 'carrington'), __('1 comment', 'carrington'), __('% comments', 'carrington')); ?></p> + </div> + <div class="clear"></div> + <div id="post-comments-<?php the_ID(); ?>-target"></div> + <?php edit_post_link(__('Edit This', 'carrington'), '<div class="entry-editlink">', '</div>'); ?> +</div><!-- .post --> + +<?php else : + +// THIS IS THE DEFAULT LOOK FOR ASIDES ON ALL OTHER PAGES +?> + +<div id="post-content-<?php the_ID() ?>" class="hentry full <?php sandbox_post_class() ?>"> + <h1 class="entry-title full-title"><a href="<?php the_permalink() ?>" title="Permanent link to <?php the_title_attribute() ?>" rel="bookmark" rev="post-<?php the_ID(); ?>"><?php the_title() ?></a></h1> + <div class="entry-content full-content"> + <?php the_content('<span class="more-link">'.__('Continued...', 'carrington').'</span>'); link_pages('<p class="pages-link">'.__('Pages: ', 'carrington'), "</p>\n", 'number'); ?> + </div><!--/entry-content--> + <p class="filed"> + <span class="categories"><?php printf(__('Posted in %s.', 'carrington'), get_the_category_list(', ')) ?></span> + <?php the_tags(__('<span class="tags">Tagged with ', 'carrington'), ', ', '.</span>'); ?> + </p><!--/filed--> + <div class="by-line"> + <address class="author vcard full-author"> + <?php printf(__('<span class="by">By</span> %s', 'carrington'), '<a class="url fn" href="'.get_author_link(false, get_the_author_ID(), $authordata->user_nicename).'" title="View all posts by ' . attribute_escape($authordata->display_name) . '">'.get_the_author().'</a>') ?> + </address> + <span class="date full-date"><abbr class="published" title="<?php the_time('Y-m-d\TH:i:sO'); ?>"><?php the_date(); ?></abbr></span> + </div><!--/by-line--> + <p class="comments-link"><?php comments_popup_link(__('No comments', 'carrington'), __('1 comment', 'carrington'), __('% comments', 'carrington')); ?></p> + <div class="clear"></div> + <div id="post-comments-<?php the_ID(); ?>-target"></div> + <?php edit_post_link(__('Edit This', 'carrington'), '<div class="entry-editlink">', '</div>'); ?> +</div><!-- .post --> + +<?php endif; ?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/content/content-default.html b/wp-content/themes/vanilla/blog-set/content/content-default.html new file mode 100644 index 000000000..779315b35 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/content/content-default.html @@ -0,0 +1,48 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<div metal:define-macro="loader" tal:omit-tag=""> + +<div metal:fill-slot="content" tal:omit-tag=""> + <div id="post-content-${entry/id}" class="hentry full ${entry/class}"> + <h1 class="entry-title full-title"><a href="${entry/permalink}" title="Permanent link to ${entry/title_attribute}" rel="bookmark" rev="post-${entry/id}">${entry/title}</a></h1> + <div class="entry-content full-content"> + ${structure entry/content} + <p class="pages-link" tal:condition="entry/pages_link">Pages: ${structure entry/pages_link}</p> + </div><!--/entry-content--> + <p class="filed"> + <span class="categories" tal:condition="entry/categories_list">Posted in ${structure entry/categories_list}</span> + <span class="tags" tal:condition="entry/tags_list">Tagged with ${structure entry/tags_list}</span> + </p><!--/filed--> + <div class="by-line" tal:condition="entry/author"> + <address class="author vcard full-author"> + <span class="by">By</span> <a class="url fn" href="${structure entry/author/link}" title="View all posts by ${entry/author/name_attribute}">${entry/author/name}</a> + </address> + <span class="date full-date"><abbr class="published" title="${entry/date_time}">${entry/date}</abbr></span> + </div><!--/by-line--> + <p class="comments-link" tal:condition="entry/comments_link">${structure entry/comments_link}</p> + <div class="clear"></div> + <div id="post-comments-${entry/id}-target"></div> + <div class="entry-editlink" tal:condition="entry/edit_link"><a href="${structure entry/edit_link}">${entry/edit_link_text}</a></div> + </div><!-- .post --> +</div> + +</div> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/content/content-default.php b/wp-content/themes/vanilla/blog-set/content/content-default.php new file mode 100644 index 000000000..d2c7ec8a8 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/content/content-default.php @@ -0,0 +1,57 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +global $previousday, $authordata, $tpl; +$previousday = -1; + +$tpl_tags_list = get_the_tag_list("", ",", ""); +$tpl_edit_link = get_edit_post_link(); +$tpl_pages_link = wp_link_pages('before=&after=&echo=0'); + +$content = get_the_content('<span class="more-link">'.__('Continued...', 'carrington').'</span>'); +$content = apply_filters('the_content', $content); +$content = str_replace(']]>', ']]>', $content); + +$tpl["content"] = array( + "tpl_file" => "content-default.html" +); + +$tpl["entries"][] = array( + "id" => get_the_ID(), + "class" => sandbox_post_class(false), + "permalink" => get_permalink(), + "title_attribute" => the_title_attribute('echo=0'), + "title" => the_title("", "", false), + "content" => $content, + "pages_link" => ($tpl_pages_link == '') ? false : $tpl_pages_link, + "categories_list" => get_the_category_list(', '), + "tags_list" => ($tpl_tags_list == '') ? false : $tpl_tags_list, + "author" => array( + "link" => get_author_link(false, get_the_author_ID(), $authordata->user_nicename), + "name_attribute" => attribute_escape($authordata->display_name), + "name" => get_the_author() + ), + "date_time" => get_the_time('Y-m-d\TH:i:sO'), + "date" => the_date("", "", "", false), + "comments_link" => vanilla_comments_popup_link(__('No comments', 'carrington'), __('1 comment', 'carrington'), __('% comments', 'carrington')), + "edit_link" => ($tpl_edit_link == '') ? false : $tpl_edit_link, + "edit_link_text" => __('Edit This', 'carrington') +); +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/css/README.txt b/wp-content/themes/vanilla/blog-set/css/README.txt new file mode 100644 index 000000000..ad9901c38 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/css/README.txt @@ -0,0 +1,8 @@ +## css/ + +### Overview + +This directory is used to organize your CSS files. You can reference these files using the built-in WordPress `bloginfo()` function like so: + + <link rel="stylesheet" type="text/css" + href="<?php bloginfo('template_directory'); ?>/css/base.css" /> diff --git a/wp-content/themes/vanilla/blog-set/css/fonts-context-min.css b/wp-content/themes/vanilla/blog-set/css/fonts-context-min.css new file mode 100644 index 000000000..049da881b --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/css/fonts-context-min.css @@ -0,0 +1,7 @@ +/* +Copyright (c) 2008, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 3.0.0pr2 +*/ +.yui-cssfonts body,.yui-cssfonts{font:13px/1.231 arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}.yui-cssfonts select,.yui-cssfonts input,.yui-cssfonts button,.yui-cssfonts textarea{font:99% arial,helvetica,clean,sans-serif;}.yui-cssfonts table{font-size:inherit;font:100%;}.yui-cssfonts pre,.yui-cssfonts code,.yui-cssfonts kbd,.yui-cssfonts samp,.yui-cssfonts tt{font-family:monospace;*font-size:108%;line-height:100%;} \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/css/fonts-min.css b/wp-content/themes/vanilla/blog-set/css/fonts-min.css new file mode 100644 index 000000000..dc2bed677 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/css/fonts-min.css @@ -0,0 +1,7 @@ +/* +Copyright (c) 2008, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 3.0.0pr2 +*/ +body{font:13px/1.231 arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}select,input,button,textarea{font:99% arial,helvetica,clean,sans-serif;}table{font-size:inherit;font:100%;}pre,code,kbd,samp,tt{font-family:monospace;*font-size:108%;line-height:100%;} \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/css/grids-context-min.css b/wp-content/themes/vanilla/blog-set/css/grids-context-min.css new file mode 100644 index 000000000..6b6503b77 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/css/grids-context-min.css @@ -0,0 +1,7 @@ +/* +Copyright (c) 2008, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 3.0.0pr2 +*/ +.yui-cssgrids body{text-align:center;margin-left:auto;margin-right:auto;}.yui-cssgrids .yui-d0,.yui-cssgrids .yui-d1,.yui-cssgrids .yui-d1f,.yui-cssgrids .yui-d2,.yui-cssgrids .yui-d2f,.yui-cssgrids .yui-d3,.yui-cssgrids .yui-d3f{margin:auto;text-align:left;width:57.69em;*width:56.25em;}.yui-cssgrids .yui-t1,.yui-cssgrids .yui-t2,.yui-cssgrids .yui-t3,.yui-cssgrids .yui-t4,.yui-cssgrids .yui-t5,.yui-cssgrids .yui-t6{margin:auto;text-align:left;width:100%;}.yui-cssgrids .yui-d0{margin:auto 10px;width:auto;}.yui-cssgrids .yui-d0f{width:100%;}.yui-cssgrids .yui-d2{width:73.076em;*width:71.25em;}.yui-cssgrids .yui-d2f{width:950px;}.yui-cssgrids .yui-d3{width:74.923em;*width:73.05em;}.yui-cssgrids .yui-d3f{width:974px;}.yui-cssgrids .yui-b{position:relative;}.yui-cssgrids .yui-b{_position:static;}.yui-cssgrids .yui-main .yui-b{position:static;}.yui-cssgrids .yui-main{width:100%;}.yui-cssgrids .yui-t1 .yui-main,.yui-cssgrids .yui-t2 .yui-main,.yui-cssgrids .yui-t3 .yui-main{float:right;margin-left:-25em;}.yui-cssgrids .yui-t4 .yui-main,.yui-cssgrids .yui-t5 .yui-main,.yui-cssgrids .yui-t6 .yui-main{float:left;margin-right:-25em;}.yui-cssgrids .yui-t1 .yui-b{float:left;width:12.30769em;*width:12.00em;}.yui-cssgrids .yui-t1 .yui-main .yui-b{margin-left:13.30769em;*margin-left:12.975em;}.yui-cssgrids .yui-t2 .yui-b{float:left;width:13.84615em;*width:13.50em;}.yui-cssgrids .yui-t2 .yui-main .yui-b{margin-left:14.84615em;*margin-left:14.475em;}.yui-cssgrids .yui-t3 .yui-b{float:left;width:23.0769em;*width:22.50em;}.yui-cssgrids .yui-t3 .yui-main .yui-b{margin-left:24.0769em;*margin-left:23.475em;}.yui-cssgrids .yui-t4 .yui-b{float:right;width:13.8456em;*width:13.50em;}.yui-cssgrids .yui-t4 .yui-main .yui-b{margin-right:14.8456em;*margin-right:14.475em;}.yui-cssgrids .yui-t5 .yui-b{float:right;width:18.4615em;*width:18.00em;}.yui-cssgrids .yui-t5 .yui-main .yui-b{margin-right:19.4615em;*margin-right:18.975em;}.yui-cssgrids .yui-t6 .yui-b{float:right;width:23.0769em;*width:22.50em;}.yui-cssgrids .yui-t6 .yui-main .yui-b{margin-right:24.0769em;*margin-right:23.475em;}.yui-cssgrids .yui-main .yui-b{float:none;width:auto;}.yui-cssgrids .yui-gb .yui-u,.yui-cssgrids .yui-g .yui-gb .yui-u,.yui-cssgrids .yui-gb .yui-g,.yui-cssgrids .yui-gb .yui-gb,.yui-cssgrids .yui-gb .yui-gc,.yui-cssgrids .yui-gb .yui-gd,.yui-cssgrids .yui-gb .yui-ge,.yui-cssgrids .yui-gb .yui-gf,.yui-cssgrids .yui-gc .yui-u,.yui-cssgrids .yui-gc .yui-g,.yui-cssgrids .yui-gd .yui-u{float:left;}.yui-cssgrids .yui-g .yui-u,.yui-cssgrids .yui-g .yui-g,.yui-cssgrids .yui-g .yui-gb,.yui-cssgrids .yui-g .yui-gc,.yui-cssgrids .yui-g .yui-gd,.yui-cssgrids .yui-g .yui-ge,.yui-cssgrids .yui-g .yui-gf,.yui-cssgrids .yui-gc .yui-u,.yui-cssgrids .yui-gd .yui-g,.yui-cssgrids .yui-g .yui-gc .yui-u,.yui-cssgrids .yui-ge .yui-u,.yui-cssgrids .yui-ge .yui-g,.yui-cssgrids .yui-gf .yui-g,.yui-cssgrids .yui-gf .yui-u{float:right;}.yui-cssgrids .yui-g div.first,.yui-cssgrids .yui-gb div.first,.yui-cssgrids .yui-gc div.first,.yui-cssgrids .yui-gd div.first,.yui-cssgrids .yui-ge div.first,.yui-cssgrids .yui-gf div.first,.yui-cssgrids .yui-g .yui-gc div.first,.yui-cssgrids .yui-g .yui-ge div.first,.yui-cssgrids .yui-gc div.first div.first{float:left;}.yui-cssgrids .yui-g .yui-u,.yui-cssgrids .yui-g .yui-g,.yui-cssgrids .yui-g .yui-gb,.yui-cssgrids .yui-g .yui-gc,.yui-cssgrids .yui-g .yui-gd,.yui-cssgrids .yui-g .yui-ge,.yui-cssgrids .yui-g .yui-gf{width:49.1%;}.yui-cssgrids .yui-gb .yui-u,.yui-cssgrids .yui-g .yui-gb .yui-u,.yui-cssgrids .yui-gb .yui-g,.yui-cssgrids .yui-gb .yui-gb,.yui-cssgrids .yui-gb .yui-gc,.yui-cssgrids .yui-gb .yui-gd,.yui-cssgrids .yui-gb .yui-ge,.yui-cssgrids .yui-gb .yui-gf,.yui-cssgrids .yui-gc .yui-u,.yui-cssgrids .yui-gc .yui-g,.yui-cssgrids .yui-gd .yui-u{width:32%;margin-left:2.0%;}.yui-cssgrids .yui-gb .yui-u{*width:31.8%;*margin-left:1.9%;}.yui-cssgrids .yui-gc div.first,.yui-cssgrids .yui-gd .yui-u{width:66%;_width:65.7%;}.yui-cssgrids .yui-gd div.first{width:32%;_width:31.5%;}.yui-cssgrids .yui-ge div.first,.yui-cssgrids .yui-gf .yui-u{width:74.2%;_width:74%;}.yui-cssgrids .yui-ge .yui-u,.yui-cssgrids .yui-gf div.first{width:24%;_width:23.8%;}.yui-cssgrids .yui-g .yui-gb div.first,.yui-cssgrids .yui-gb div.first,.yui-cssgrids .yui-gc div.first,.yui-cssgrids .yui-gd div.first{margin-left:0;}.yui-cssgrids .yui-g .yui-g .yui-u,.yui-cssgrids .yui-gb .yui-g .yui-u,.yui-cssgrids .yui-gc .yui-g .yui-u,.yui-cssgrids .yui-gd .yui-g .yui-u,.yui-cssgrids .yui-ge .yui-g .yui-u,.yui-cssgrids .yui-gf .yui-g .yui-u{width:49%;*width:48.1%;*margin-left:0;}.yui-cssgrids .yui-g .yui-gb div.first,.yui-cssgrids .yui-gb .yui-gb div.first{*margin-right:0;*width:32%;_width:31.7%;}.yui-cssgrids .yui-g .yui-gc div.first,.yui-cssgrids .yui-gd .yui-g{width:66%;}.yui-cssgrids .yui-gb .yui-g div.first{*margin-right:4%;_margin-right:1.3%;}.yui-cssgrids .yui-gb .yui-gc div.first,.yui-cssgrids .yui-gb .yui-gd div.first{*margin-right:0;}.yui-cssgrids .yui-gb .yui-gb .yui-u,.yui-cssgrids .yui-gb .yui-gc .yui-u{*margin-left:1.8%;_margin-left:4%;}.yui-cssgrids .yui-g .yui-gb .yui-u{_margin-left:1.0%;}.yui-cssgrids .yui-gb .yui-gd .yui-u{*width:66%;_width:61.2%;}.yui-cssgrids .yui-gb .yui-gd div.first{*width:31%;_width:29.5%;}.yui-cssgrids .yui-g .yui-gc .yui-u,.yui-cssgrids .yui-gb .yui-gc .yui-u{width:32%;_float:right;margin-right:0;_margin-left:0;}.yui-cssgrids .yui-gb .yui-gc div.first{width:66%;*float:left;*margin-left:0;}.yui-cssgrids .yui-gb .yui-ge .yui-u,.yui-cssgrids .yui-gb .yui-gf .yui-u{margin:0;}.yui-cssgrids .yui-gb .yui-gb .yui-u{_margin-left:.7%;}.yui-cssgrids .yui-gb .yui-g div.first,.yui-cssgrids .yui-gb .yui-gb div.first{*margin-left:0;}.yui-cssgrids .yui-gc .yui-g .yui-u,.yui-cssgrids .yui-gd .yui-g .yui-u{*width:48.1%;*margin-left:0;}.yui-cssgrids .yui-gb .yui-gd div.first{width:32%;}.yui-cssgrids .yui-g .yui-gd div.first{_width:29.9%;}.yui-cssgrids .yui-ge .yui-g{width:24%;}.yui-cssgrids .yui-gf .yui-g{width:74.2%;}.yui-cssgrids .yui-gb .yui-ge div.yui-u,.yui-cssgrids .yui-gb .yui-gf div.yui-u{float:right;}.yui-cssgrids .yui-gb .yui-ge div.first,.yui-cssgrids .yui-gb .yui-gf div.first{float:left;}.yui-cssgrids .yui-gb .yui-ge .yui-u,.yui-cssgrids .yui-gb .yui-gf div.first{*width:24%;_width:20%;}.yui-cssgrids .yui-gc .yui-gf .yui-u{width:74%;_width:73%;}.yui-cssgrids .yui-gc .yui-gf div.first{width:24%;}.yui-cssgrids .yui-gb .yui-ge div.first,.yui-cssgrids .yui-gb .yui-gf .yui-u{*width:73.5%;_width:65.5%;}.yui-cssgrids .yui-ge div.first .yui-gd .yui-u{width:65%;}.yui-cssgrids .yui-ge div.first .yui-gd div.first{width:32%;}.yui-cssgrids #bd:after,.yui-cssgrids .yui-g:after,.yui-cssgrids .yui-gb:after,.yui-cssgrids .yui-gc:after,.yui-cssgrids .yui-gd:after,.yui-cssgrids .yui-ge:after,.yui-cssgrids .yui-gf:after,.yui-cssgrids .yui-t1:after,.yui-cssgrids .yui-t2:after,.yui-cssgrids .yui-t3:after,.yui-cssgrids .yui-t4:after,.yui-cssgrids .yui-t5:after,.yui-cssgrids .yui-t6:after{content:".";display:block;height:0;clear:both;visibility:hidden;}.yui-cssgrids #bd,.yui-cssgrids .yui-g,.yui-cssgrids .yui-gb,.yui-cssgrids .yui-gc,.yui-cssgrids .yui-gd,.yui-cssgrids .yui-ge,.yui-cssgrids .yui-gf,.yui-cssgrids .yui-t1,.yui-cssgrids .yui-t2,.yui-cssgrids .yui-t3,.yui-cssgrids .yui-t4,.yui-cssgrids .yui-t5,.yui-cssgrids .yui-t6{zoom:1;} \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/css/grids-min.css b/wp-content/themes/vanilla/blog-set/css/grids-min.css new file mode 100644 index 000000000..027433c02 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/css/grids-min.css @@ -0,0 +1,7 @@ +/* +Copyright (c) 2008, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 3.0.0pr2 +*/ +body{text-align:center;margin-left:auto;margin-right:auto;}.yui-d0,.yui-d1,.yui-d1f,.yui-d2,.yui-d2f,.yui-d3,.yui-d3f{margin:auto;text-align:left;width:57.69em;*width:56.25em;}.yui-t1,.yui-t2,.yui-t3,.yui-t4,.yui-t5,.yui-t6{margin:auto;text-align:left;width:100%;}.yui-d0{margin:auto 10px;width:auto;}.yui-d0f{width:100%;}.yui-d2{width:73.076em;*width:71.25em;}.yui-d2f{width:950px;}.yui-d3{width:74.923em;*width:73.05em;}.yui-d3f{width:974px;}.yui-b{position:relative;}.yui-b{_position:static;}.yui-main .yui-b{position:static;}.yui-main{width:100%;}.yui-t1 .yui-main,.yui-t2 .yui-main,.yui-t3 .yui-main{float:right;margin-left:-25em;}.yui-t4 .yui-main,.yui-t5 .yui-main,.yui-t6 .yui-main{float:left;margin-right:-25em;}.yui-t1 .yui-b{float:left;width:12.30769em;*width:12.00em;}.yui-t1 .yui-main .yui-b{margin-left:13.30769em;*margin-left:12.975em;}.yui-t2 .yui-b{float:left;width:13.84615em;*width:13.50em;}.yui-t2 .yui-main .yui-b{margin-left:14.84615em;*margin-left:14.475em;}.yui-t3 .yui-b{float:left;width:23.0769em;*width:22.50em;}.yui-t3 .yui-main .yui-b{margin-left:24.0769em;*margin-left:23.475em;}.yui-t4 .yui-b{float:right;width:13.8456em;*width:13.50em;}.yui-t4 .yui-main .yui-b{margin-right:14.8456em;*margin-right:14.475em;}.yui-t5 .yui-b{float:right;width:18.4615em;*width:18.00em;}.yui-t5 .yui-main .yui-b{margin-right:19.4615em;*margin-right:18.975em;}.yui-t6 .yui-b{float:right;width:23.0769em;*width:22.50em;}.yui-t6 .yui-main .yui-b{margin-right:24.0769em;*margin-right:23.475em;}.yui-main .yui-b{float:none;width:auto;}.yui-gb .yui-u,.yui-g .yui-gb .yui-u,.yui-gb .yui-g,.yui-gb .yui-gb,.yui-gb .yui-gc,.yui-gb .yui-gd,.yui-gb .yui-ge,.yui-gb .yui-gf,.yui-gc .yui-u,.yui-gc .yui-g,.yui-gd .yui-u{float:left;}.yui-g .yui-u,.yui-g .yui-g,.yui-g .yui-gb,.yui-g .yui-gc,.yui-g .yui-gd,.yui-g .yui-ge,.yui-g .yui-gf,.yui-gc .yui-u,.yui-gd .yui-g,.yui-g .yui-gc .yui-u,.yui-ge .yui-u,.yui-ge .yui-g,.yui-gf .yui-g,.yui-gf .yui-u{float:right;}.yui-g div.first,.yui-gb div.first,.yui-gc div.first,.yui-gd div.first,.yui-ge div.first,.yui-gf div.first,.yui-g .yui-gc div.first,.yui-g .yui-ge div.first,.yui-gc div.first div.first{float:left;}.yui-g .yui-u,.yui-g .yui-g,.yui-g .yui-gb,.yui-g .yui-gc,.yui-g .yui-gd,.yui-g .yui-ge,.yui-g .yui-gf{width:49.1%;}.yui-gb .yui-u,.yui-g .yui-gb .yui-u,.yui-gb .yui-g,.yui-gb .yui-gb,.yui-gb .yui-gc,.yui-gb .yui-gd,.yui-gb .yui-ge,.yui-gb .yui-gf,.yui-gc .yui-u,.yui-gc .yui-g,.yui-gd .yui-u{width:32%;margin-left:2.0%;}.yui-gb .yui-u{*width:31.8%;*margin-left:1.9%;}.yui-gc div.first,.yui-gd .yui-u{width:66%;_width:65.7%;}.yui-gd div.first{width:32%;_width:31.5%;}.yui-ge div.first,.yui-gf .yui-u{width:74.2%;_width:74%;}.yui-ge .yui-u,.yui-gf div.first{width:24%;_width:23.8%;}.yui-g .yui-gb div.first,.yui-gb div.first,.yui-gc div.first,.yui-gd div.first{margin-left:0;}.yui-g .yui-g .yui-u,.yui-gb .yui-g .yui-u,.yui-gc .yui-g .yui-u,.yui-gd .yui-g .yui-u,.yui-ge .yui-g .yui-u,.yui-gf .yui-g .yui-u{width:49%;*width:48.1%;*margin-left:0;}.yui-g .yui-gb div.first,.yui-gb .yui-gb div.first{*margin-right:0;*width:32%;_width:31.7%;}.yui-g .yui-gc div.first,.yui-gd .yui-g{width:66%;}.yui-gb .yui-g div.first{*margin-right:4%;_margin-right:1.3%;}.yui-gb .yui-gc div.first,.yui-gb .yui-gd div.first{*margin-right:0;}.yui-gb .yui-gb .yui-u,.yui-gb .yui-gc .yui-u{*margin-left:1.8%;_margin-left:4%;}.yui-g .yui-gb .yui-u{_margin-left:1.0%;}.yui-gb .yui-gd .yui-u{*width:66%;_width:61.2%;}.yui-gb .yui-gd div.first{*width:31%;_width:29.5%;}.yui-g .yui-gc .yui-u,.yui-gb .yui-gc .yui-u{width:32%;_float:right;margin-right:0;_margin-left:0;}.yui-gb .yui-gc div.first{width:66%;*float:left;*margin-left:0;}.yui-gb .yui-ge .yui-u,.yui-gb .yui-gf .yui-u{margin:0;}.yui-gb .yui-gb .yui-u{_margin-left:.7%;}.yui-gb .yui-g div.first,.yui-gb .yui-gb div.first{*margin-left:0;}.yui-gc .yui-g .yui-u,.yui-gd .yui-g .yui-u{*width:48.1%;*margin-left:0;}.yui-gb .yui-gd div.first{width:32%;}.yui-g .yui-gd div.first{_width:29.9%;}.yui-ge .yui-g{width:24%;}.yui-gf .yui-g{width:74.2%;}.yui-gb .yui-ge div.yui-u,.yui-gb .yui-gf div.yui-u{float:right;}.yui-gb .yui-ge div.first,.yui-gb .yui-gf div.first{float:left;}.yui-gb .yui-ge .yui-u,.yui-gb .yui-gf div.first{*width:24%;_width:20%;}.yui-gb .yui-ge div.first,.yui-gb .yui-gf .yui-u{*width:73.5%;_width:65.5%;}.yui-ge div.first .yui-gd .yui-u{width:65%;}.yui-ge div.first .yui-gd div.first{width:32%;}#bd:after,.yui-g:after,.yui-gb:after,.yui-gc:after,.yui-gd:after,.yui-ge:after,.yui-gf:after,.yui-t1:after,.yui-t2:after,.yui-t3:after,.yui-t4:after,.yui-t5:after,.yui-t6:after{content:".";display:block;height:0;clear:both;visibility:hidden;}#bd,.yui-g,.yui-gb,.yui-gc,.yui-gd,.yui-ge,.yui-gf,.yui-t1,.yui-t2,.yui-t3,.yui-t4,.yui-t5,.yui-t6{zoom:1;} \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/css/ie.css b/wp-content/themes/vanilla/blog-set/css/ie.css new file mode 100644 index 000000000..faf7e89f7 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/css/ie.css @@ -0,0 +1,55 @@ +/* hasLayout fixes */ +#content, +#sidebar, +#navigation, +#navigation ul, +#navigation li, +#all-categories ul, +#all-categories li, +.full, +ol#comments-list li.hentry, +#comment-form, +#comment-form .section, +.comment, +h2#comments, +.widget, +.pagination, +#carrington-about .about {zoom:1;} + +/* Suckerfish dropdowns stick in IE7 without this bit */ +#navigation li:hover, +#all-categories li:hover { + position:static; +} + +/* Since we have to give layout to the .full div, the box model is different, messing with spacing. */ +.full{ + margin-bottom:0; +} + +/* Border dotted looks like junk in IE. */ +ol.archive, +.excerpt, +#content .search, +ol#comments-list li, +.pingback, +.trackback, +#carrington-archives ul, +#carrington-archives li { + border-style:solid; +} + +/* IE6 doesn't understand inherit */ +address.author { + font-style:normal; +} + +/* IE doesn't comprehend the short-notation override */ +#navigation ul, +#all-categories ul {list-style-image: none;} + +/* lo-fi png fix */ +#footer p#developer-link a, +#footer p#developer-link a:visited { + background-image: url(../images/by-crowd-favorite.gif); +} \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/css/image.css b/wp-content/themes/vanilla/blog-set/css/image.css new file mode 100644 index 000000000..0ef3e1e48 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/css/image.css @@ -0,0 +1,80 @@ +body { + background-color:#000; + color:#ccc; +} + +a, +a:visited { + color:#fff; + font-weight:bold; +} + +#header, +#footer {clear:both;} + +#header a, +#footer a { + background:#111; + display:block; + padding:10px; +} +#header a:hover, +#footer a:hover {background:#222;} + +#content { + float:left; + margin:20px 0; + width:50%; +} + +.figure-info { + background:#0f0f0f; + border-radius:5px; + -webkit-border-radius:5px; + -khtml-border-radius:5px; + -moz-border-radius:5px; + margin:20px 0 0; + padding:10px; +} +.figure-info .title { + margin:0; +} +.figure-info .caption { + color:#777; +} +.figure-info .caption p { + font-size: 1.16666667em; /* 14 */ + line-height: 1.28571429; + margin-bottom:1.28571429em; + margin-top:.25em; +} + +.entry-attachment { + text-align:center; +} + +.previous-attachment, +.next-attachment { + float:left; + padding:50px 0; + text-align:center; + width:25%; +} + +.previous-attachment img, +.next-attachment img{ + background:#222 url(../images/attachment-next.png) no-repeat right center; + padding:8px; + border-radius:5px; + -webkit-border-radius:5px; + -khtml-border-radius:5px; + -moz-border-radius:5px; +} +.previous-attachment img { + background-image:url(../images/attachment-previous.png); + background-position:left center; + padding-left:50px; +} +.next-attachment img { + padding-right:50px; +} \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/css/reset-context-min.css b/wp-content/themes/vanilla/blog-set/css/reset-context-min.css new file mode 100644 index 000000000..02346e7a1 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/css/reset-context-min.css @@ -0,0 +1,7 @@ +/* +Copyright (c) 2008, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 3.0.0pr2 +*/ +.yui-cssreset html{color:#000;background:#FFF;}.yui-cssreset body,.yui-cssreset div,.yui-cssreset dl,.yui-cssreset dt,.yui-cssreset dd,.yui-cssreset ul,.yui-cssreset ol,.yui-cssreset li,.yui-cssreset h1,.yui-cssreset h2,.yui-cssreset h3,.yui-cssreset h4,.yui-cssreset h5,.yui-cssreset h6,.yui-cssreset pre,.yui-cssreset code,.yui-cssreset form,.yui-cssreset fieldset,.yui-cssreset legend,.yui-cssreset input,.yui-cssreset textarea,.yui-cssreset p,.yui-cssreset blockquote,.yui-cssreset th,.yui-cssreset td{margin:0;padding:0;}.yui-cssreset table{border-collapse:collapse;border-spacing:0;}.yui-cssreset fieldset,.yui-cssreset img{border:0;}.yui-cssreset address,.yui-cssreset caption,.yui-cssreset cite,.yui-cssreset code,.yui-cssreset dfn,.yui-cssreset em,.yui-cssreset strong,.yui-cssreset th,.yui-cssreset var{font-style:normal;font-weight:normal;}.yui-cssreset li{list-style:none;}.yui-cssreset caption,.yui-cssreset th{text-align:left;}.yui-cssreset h1,.yui-cssreset h2,.yui-cssreset h3,.yui-cssreset h4,.yui-cssreset h5,.yui-cssreset h6{font-size:100%;font-weight:normal;}.yui-cssreset q:before,.yui-cssreset q:after{content:'';}.yui-cssreset abbr,.yui-cssreset acronym{border:0;font-variant:normal;}.yui-cssreset sup{vertical-align:text-top;}.yui-cssreset sub{vertical-align:text-bottom;}.yui-cssreset input,.yui-cssreset textarea,.yui-cssreset select{font-family:inherit;font-size:inherit;font-weight:inherit;}.yui-cssreset input,.yui-cssreset textarea,.yui-cssreset select{*font-size:100%;}.yui-cssreset legend{color:#000;} \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/css/reset-fonts-grids.css b/wp-content/themes/vanilla/blog-set/css/reset-fonts-grids.css new file mode 100644 index 000000000..066cfc199 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/css/reset-fonts-grids.css @@ -0,0 +1,8 @@ +/* +Copyright (c) 2008, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 2.5.2 +*/ +html{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym {border:0;font-variant:normal;}sup {vertical-align:text-top;}sub {vertical-align:text-bottom;}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;}input,textarea,select{*font-size:100%;}legend{color:#000;}body {font:13px/1.231 arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}table {font-size:inherit;font:100%;}pre,code,kbd,samp,tt{font-family:monospace;*font-size:108%;line-height:100%;} +body{text-align:center;}#ft{clear:both;}#doc,#doc2,#doc3,#doc4,.yui-t1,.yui-t2,.yui-t3,.yui-t4,.yui-t5,.yui-t6,.yui-t7{margin:auto;text-align:left;width:57.69em;*width:56.25em;min-width:750px;}#doc2{width:73.076em;*width:71.25em;}#doc3{margin:auto 10px;width:auto;}#doc4{width:74.923em;*width:73.05em;}.yui-b{position:relative;}.yui-b{_position:static;}#yui-main .yui-b{position:static;}#yui-main{width:100%;}.yui-t1 #yui-main,.yui-t2 #yui-main,.yui-t3 #yui-main{float:right;margin-left:-25em;}.yui-t4 #yui-main,.yui-t5 #yui-main,.yui-t6 #yui-main{float:left;margin-right:-25em;}.yui-t1 .yui-b{float:left;width:12.30769em;*width:12.00em;}.yui-t1 #yui-main .yui-b{margin-left:13.30769em;*margin-left:13.05em;}.yui-t2 .yui-b{float:left;width:13.8461em;*width:13.50em;}.yui-t2 #yui-main .yui-b{margin-left:14.8461em;*margin-left:14.55em;}.yui-t3 .yui-b{float:left;width:23.0769em;*width:22.50em;}.yui-t3 #yui-main .yui-b{margin-left:24.0769em;*margin-left:23.62em;}.yui-t4 .yui-b{float:right;width:13.8456em;*width:13.50em;}.yui-t4 #yui-main .yui-b{margin-right:14.8456em;*margin-right:14.55em;}.yui-t5 .yui-b{float:right;width:18.4615em;*width:18.00em;}.yui-t5 #yui-main .yui-b{margin-right:19.4615em;*margin-right:19.125em;}.yui-t6 .yui-b{float:right;width:23.0769em;*width:22.50em;}.yui-t6 #yui-main .yui-b{margin-right:24.0769em;*margin-right:23.62em;}.yui-t7 #yui-main .yui-b{display:block;margin:0 0 1em 0;}#yui-main .yui-b{float:none;width:auto;}.yui-gb .yui-u,.yui-g .yui-gb .yui-u,.yui-gb .yui-g,.yui-gb .yui-gb,.yui-gb .yui-gc,.yui-gb .yui-gd,.yui-gb .yui-ge,.yui-gb .yui-gf,.yui-gc .yui-u,.yui-gc .yui-g,.yui-gd .yui-u{float:left;}.yui-g .yui-u,.yui-g .yui-g,.yui-g .yui-gb,.yui-g .yui-gc,.yui-g .yui-gd,.yui-g .yui-ge,.yui-g .yui-gf,.yui-gc .yui-u,.yui-gd .yui-g,.yui-g .yui-gc .yui-u,.yui-ge .yui-u,.yui-ge .yui-g,.yui-gf .yui-g,.yui-gf .yui-u{float:right;}.yui-g div.first,.yui-gb div.first,.yui-gc div.first,.yui-gd div.first,.yui-ge div.first,.yui-gf div.first,.yui-g .yui-gc div.first,.yui-g .yui-ge div.first,.yui-gc div.first div.first{float:left;}.yui-g .yui-u,.yui-g .yui-g,.yui-g .yui-gb,.yui-g .yui-gc,.yui-g .yui-gd,.yui-g .yui-ge,.yui-g .yui-gf{width:49.1%;}.yui-gb .yui-u,.yui-g .yui-gb .yui-u,.yui-gb .yui-g,.yui-gb .yui-gb,.yui-gb .yui-gc,.yui-gb .yui-gd,.yui-gb .yui-ge,.yui-gb .yui-gf,.yui-gc .yui-u,.yui-gc .yui-g,.yui-gd .yui-u{width:32%;margin-left:1.99%;}.yui-gb .yui-u{*margin-left:1.9%;*width:31.9%;}.yui-gc div.first,.yui-gd .yui-u{width:66%;}.yui-gd div.first{width:32%;}.yui-ge div.first,.yui-gf .yui-u{width:74.2%;}.yui-ge .yui-u,.yui-gf div.first{width:24%;}.yui-g .yui-gb div.first,.yui-gb div.first,.yui-gc div.first,.yui-gd div.first{margin-left:0;}.yui-g .yui-g .yui-u,.yui-gb .yui-g .yui-u,.yui-gc .yui-g .yui-u,.yui-gd .yui-g .yui-u,.yui-ge .yui-g .yui-u,.yui-gf .yui-g .yui-u{width:49%;*width:48.1%;*margin-left:0;}.yui-g .yui-gb div.first,.yui-gb .yui-gb div.first{*margin-right:0;*width:32%;_width:31.7%;}.yui-g .yui-gc div.first,.yui-gd .yui-g{width:66%;}.yui-gb .yui-g div.first{*margin-right:4%;_margin-right:1.3%;}.yui-gb .yui-gc div.first,.yui-gb .yui-gd div.first{*margin-right:0;}.yui-gb .yui-gb .yui-u,.yui-gb .yui-gc .yui-u{*margin-left:1.8%;_margin-left:4%;}.yui-g .yui-gb .yui-u{_margin-left:1.0%;}.yui-gb .yui-gd .yui-u{*width:66%;_width:61.2%;}.yui-gb .yui-gd div.first{*width:31%;_width:29.5%;}.yui-g .yui-gc .yui-u,.yui-gb .yui-gc .yui-u{width:32%;_float:right;margin-right:0;_margin-left:0;}.yui-gb .yui-gc div.first{width:66%;*float:left;*margin-left:0;}.yui-gb .yui-ge .yui-u,.yui-gb .yui-gf .yui-u{margin:0;}.yui-gb .yui-gb .yui-u{_margin-left:.7%;}.yui-gb .yui-g div.first,.yui-gb .yui-gb div.first{*margin-left:0;}.yui-gc .yui-g .yui-u,.yui-gd .yui-g .yui-u{*width:48.1%;*margin-left:0;}s .yui-gb .yui-gd div.first{width:32%;}.yui-g .yui-gd div.first{_width:29.9%;}.yui-ge .yui-g{width:24%;}.yui-gf .yui-g{width:74.2%;}.yui-gb .yui-ge div.yui-u,.yui-gb .yui-gf div.yui-u{float:right;}.yui-gb .yui-ge div.first,.yui-gb .yui-gf div.first{float:left;}.yui-gb .yui-ge .yui-u,.yui-gb .yui-gf div.first{*width:24%;_width:20%;}.yui-gb .yui-ge div.first,.yui-gb .yui-gf .yui-u{*width:73.5%;_width:65.5%;}.yui-ge div.first .yui-gd .yui-u{width:65%;}.yui-ge div.first .yui-gd div.first{width:32%;}#bd:after,.yui-g:after,.yui-gb:after,.yui-gc:after,.yui-gd:after,.yui-ge:after,.yui-gf:after{content:".";display:block;height:0;clear:both;visibility:hidden;}#bd,.yui-g,.yui-gb,.yui-gc,.yui-gd,.yui-ge,.yui-gf{zoom:1;} \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/css/reset-min.css b/wp-content/themes/vanilla/blog-set/css/reset-min.css new file mode 100644 index 000000000..a7474d3af --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/css/reset-min.css @@ -0,0 +1,7 @@ +/* +Copyright (c) 2008, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 3.0.0pr2 +*/ +html{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup{vertical-align:text-top;}sub{vertical-align:text-bottom;}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;}input,textarea,select{*font-size:100%;}legend{color:#000;} \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/css/typography.css b/wp-content/themes/vanilla/blog-set/css/typography.css new file mode 100644 index 000000000..d06bc682b --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/css/typography.css @@ -0,0 +1,181 @@ +/* =====Typography=====*/ +body { + background: #fff; + color: #51555c; + font-family: helvetica, arial, sans-serif; /* Set in percentages so IE6 can still resize. The percentage notation also fixes a strange quirk where IE dramaticly scales text. */ + line-height: 1.5; +} +#page { + font-size: 93%; +} +code { + font-family: "Lucida Console", Monaco, monospace; +} +h1, +h2, +h3, +h4, +h5, +h6, +strong { + font-weight: bold; +} +em, +*[lang] { + font-style: italic; +} +strike, +del { + text-decoration: line-through; +} +acronym, +.caps { + text-transform: uppercase; +} +.small-caps { + font-variant: small-caps; +} +acronym, +.num, +.caps, +.small-caps { + letter-spacing: 0.1em; +} +/* Links */ +a, +a:visited { + color: #a00004; + text-decoration: none; +} +/* specify all three for accessibility */ +a:focus, +a:hover, +a:active { + text-decoration: underline; +} +h1 a, +h1 a:visited, +h2 a, +h2 a:visited, +h3 a, +h3 a:visited, +h4 a, +h4 a:visited, +h5 a, +h5 a:visited, +h6 a, +h6 a:visited { + color: #51555c; +} +h1 a:hover, +h2 a:hover, +h3 a:hover, +h4 a:hover, +h5 a:hover, +h6 a:hover { + color: #a00004; + text-decoration: none; +} +/* elements with title attribute */ +abbr[title], +acronym[title], +dfn[title], +span[title], +del[title] { + cursor: help; +} +/* typogrify: inset initial double quotes. */ +.dquo { + margin-left: -.45em; +} + /* fancy ampersands */ +.amp { + font-family: Baskerville, "Goudy Old Style", "Palatino", "Book Antiqua", serif; + font-size: 110%; + font-style: italic; +} +/* Font sizes and vertical measure */ +h1 { + font-size: 2em; /* 24 */ + line-height: 1; + margin: 1.125em 0 .25em; +} +h2, +big { + font-size: 1.5em; /* 18 */ + line-height: 1; +} +h2 { + margin: 0 0 .5em 0; +} +h3 { + font-size: 1.16666667em; /* 14 */ + line-height: 1.28571429; + margin: 0 0 .58333334em 0; +} +h4, +h5, +h6 { + margin: 0 0 .75em 0; +} +p { + margin: 0 0 1.5em 0; +} +blockquote { + border-left:.16666667em solid #e9eaea; + margin: 0 .75em .75em .75em; + padding-left:1em; +} +small, +acronym, +.caps { + font-size: .833333333333em; + line-height: 1.8em; +} +pre { + font-size: 1em; + line-height: 1.5; + margin-bottom: 1.5em; + overflow: auto; +} +textarea { + font-family: helvetica, arial, sans-serif; + font-size: 1em; + line-height: 1.5; + padding: 3px; +} +ul, +ol, +dl { + margin: 0 0 1.5em 2em; +} +li ul, +li ol { + margin-bottom: 0; +} +ul, li { + list-style-image: url(../images/arrow-bullet.gif); +} +ol li { list-style-image: none; } + +#content li, #content dd { + margin-bottom: .5em; +} +/* Tables */ +table { + border-left: .083333333em solid #eee; + border-top: .083333333em solid #eee; +} +td,th { + line-height: 1.33333333em; + padding: 0 .5em; +} +th { + background-color: #eee; + border-bottom: .083333333em solid #ddd; + border-right: .083333333em solid #ddd; +} +td { + border-bottom: .083333333em solid #eee; + border-right: .083333333em solid #eee; +} \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/error/404.php b/wp-content/themes/vanilla/blog-set/error/404.php new file mode 100644 index 000000000..75ac2c0d6 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/error/404.php @@ -0,0 +1,38 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +get_header(); + +?> +<div id="content"> +<p>Sorry, we're not sure what you're looking for here.</p> + +<?php + +cfct_form('search'); + +?> +</div><!--#content--> +<?php +get_sidebar(); + +get_footer(); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/error/README.txt b/wp-content/themes/vanilla/blog-set/error/README.txt new file mode 100644 index 000000000..8d5d4f4d8 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/error/README.txt @@ -0,0 +1,20 @@ +## error/ + +### Overview + +This directory holds templates for error conditions. WordPress supports the 404 error out of the box, but you may want to create additional error templates for other conditions (not authorized, etc.). + +You can load an error template by using the following code: + + cfct_error('not-authorized.php'); + + +### Supported Override Filenames + +- (none) + + +### File Descriptions + +- *404.php* - used for "File not Found" errors. +- *exit.php* - used to display a message when exiting on some error condition. diff --git a/wp-content/themes/vanilla/blog-set/error/exit.php b/wp-content/themes/vanilla/blog-set/error/exit.php new file mode 100644 index 000000000..e8c8d9a27 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/error/exit.php @@ -0,0 +1,24 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +?> +<html> +<body><?php echo htmlspecialchars($str); ?></body> +</html> diff --git a/wp-content/themes/vanilla/blog-set/excerpt/README.txt b/wp-content/themes/vanilla/blog-set/excerpt/README.txt new file mode 100644 index 000000000..47b08754f --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/excerpt/README.txt @@ -0,0 +1,64 @@ +## excerpt/ + +### Overview + +(This information is very similar to the _content/_) + +This directory holds the templates for displaying a the excerpt for a post. Typically this will include the title and some sub-set of meta information (date, categories, tags, author, etc.) and the full output of `the_content()`. + +Commonly these templates are included by templates in the _loop/_; but are also useful for bringing in an atomic post representation via AJAX or placing one within another template. + +A "default" template is required, and will be used when there are no other templates that match a given comment. This could be because no other templates have been created, or because the comment in question doesn't match the templates that are available. + +You can create templates to be used with posts/pages given various conditions. For example, you might want to give all posts in a certain category some specific styling rules. Or perhaps posts with a certain custom field or by a specific author. This is accomplished by creating templates with file names that match these conditions, then placing them in the _content/_ directory. All templates other than _default.php_ are optional. + +The order in which these conditions are checked defaults to the following: + +1. author +2. meta +3. category +4. role +5. tag +6. page types (author, category, tag, single, search, etc.) +7. default + +however this order can be overridden with a plugin using the `cfct_content_match_order` hook. + +Once a template match has been found, no other processing is done. + + +### Supported Override Filenames + +- excerpt-default.php (or default.php) +- archive.php +- author.php +- author-{username}.php +- category.php +- cat-{slug}.php +- home.php +- meta-{key}-{value}.php +- page.php +- role-{rolename}.php +- search.php +- single.php +- tag.php +- tag-{slug}.php + + +### File Descriptions + +(This information is the same as the _content/_) + +- *excerpt-default.php* - Used when there are no other templates that match for a given post/page. +- *author-{username}.php* - Used when a user with that username authors a post/page. For example, a template with a file name of _author-jsmith.php_ would be used for a poat/page by user _jsmith_. Any WordPres username can take the place of {username} in the file name. +- *meta-{key}-{value}.php* - Used when there is a custom field for the post/page matching the key and value listed in the file name. This is useful if you want to be able to flag posts as "featured" or similar, and give those posts some custom treatment. In this example, you could add a custom field of "featured" with a value of "yes" to a post/page and it would use a template of _meta-featured-yes.php_ if that template exists. +- *cat-{slug}.php* - Used when a post is in a given category. The category is matched by the "slug" - for example a post in category "General" (with a category slug of "general") could use a template of _cat-general.php_. +- *role-{role}.php* - Used when a post/page is authored by a user with a particular role. The {role} is an all lowercase representation of the role string - for example, an author with an "Administrator" role might use a template of _role-administrator.php_. This is primarily useful if you have a set of authors that are given a Contributor role; or a Guest Columnist role or similar. Any WordPress role can take the place of {role} in the file name. +- *tag-{slug}.php* - Used when a post has a certain tag applied to it. The tag is matched by the "slug" - for example a post with tag "Reference" (with a category slug of "reference") could use a template of _tag-reference.php_. +- *author.php* - Used when the content is being displayed on an "author" page (a page listing posts by author). +- *category.php* - Used when the content is being displayed on a "category" page (a page listing posts by category). +- *tag.php* - Used when the content is being displayed on an "tag" page (a page listing posts by tags). +- *page.php* - Used when the content is being displayed is a page (not a post). +- *single.php* - Used when the content is being displayed on an "single" page (a page showing only one post). +- *search.php* - Used when the content is being displayed are search results (a page listing posts matching a user search). +- *home.php* - Used when the page being displayed is the home page. diff --git a/wp-content/themes/vanilla/blog-set/excerpt/excerpt-default.html b/wp-content/themes/vanilla/blog-set/excerpt/excerpt-default.html new file mode 100644 index 000000000..327c1bd8d --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/excerpt/excerpt-default.html @@ -0,0 +1,30 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<div metal:define-macro="loader" tal:omit-tag=""> + + <div metal:fill-slot="excerpt" id="post-excerpt-${entry/id}" class="hentry excerpt ${entry/class}"> + <strong class="entry-title"><a href="${entry/permalink}" title="Permanent link to ${entry/title_attribute}" rel="bookmark" rev="post-${entry/id}">${entry/title}</a></strong> <span class="date"><abbr class="published" title="${entry/date_time}">${entry/date}</abbr></span> + <p class="categories" tal:condition="entry/categories_list">Posted in ${structure entry/categories_list}</p> + <span class="comments-link" tal:condition="entry/comments_link">${structure entry/comments_link}</span> + </div><!-- .excerpt --> + +</div> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/excerpt/excerpt-default.php b/wp-content/themes/vanilla/blog-set/excerpt/excerpt-default.php new file mode 100644 index 000000000..48343381d --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/excerpt/excerpt-default.php @@ -0,0 +1,38 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +global $tpl; + +$tpl["excerpt"] = array( + "tpl_file" => "excerpt-default.html" +); + +$tpl["entries"][] = array( + "id" => get_the_ID(), + "class" => sandbox_post_class(false), + "permalink" => get_permalink(), + "title_attribute" => the_title_attribute('echo=0'), + "title" => the_title("", "", false), + "categories_list" => get_the_category_list(', '), + "date_time" => get_the_time('Y-m-d\TH:i:sO'), + "date" => get_the_time('F j, Y'), + "comments_link" => vanilla_comments_popup_link(__('No comments', 'carrington'), __('1 comment', 'carrington'), __('% comments', 'carrington')) +); +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/excerpt/search.html b/wp-content/themes/vanilla/blog-set/excerpt/search.html new file mode 100644 index 000000000..e4e6c2a1b --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/excerpt/search.html @@ -0,0 +1,36 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<div metal:define-macro="loader" tal:omit-tag=""> + +<div metal:fill-slot="excerpt" id="post-search-${entry/id}" class="hentry search ${entry/class}"> + <h2 class="entry-title"><a href="${entry/permalink}" title="Permanent link to ${entry/title_attribute}" rel="bookmark">${entry/title}</a></h2> + <address class="author vcard"> + ${structure entry/author} + </address> + <span class="ndash">–</span> + <abbr class="published" title="${entry/date_attribute}">${entry/date}</abbr> + <div class="entry-content"> + ${structure entry/content} + </div><!--.entry-content--> +</div><!-- .post --> + +</div> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/excerpt/search.php b/wp-content/themes/vanilla/blog-set/excerpt/search.php new file mode 100644 index 000000000..4f6561e69 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/excerpt/search.php @@ -0,0 +1,40 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +global $tpl; + +$tpl["excerpt"] = array( + "tpl_file" => "search.html" +); + +$author = sprintf(__('<span class="by">By</span> %s', 'carrington'), '<a class="url fn" href="'.get_author_link(false, get_the_author_ID(), $authordata->user_nicename).'" title="View all posts by ' . attribute_escape($authordata->display_name) . '">'.get_the_author().'</a>'); + +$tpl["entries"][] = array( + "id" => get_the_ID(), + "class" => sandbox_post_class(false), + "permalink" => get_permalink(), + "author" => $author, + "title_attribute" => the_title_attribute('echo=0'), + "title" => the_title("", "", false), + "date_time" => get_the_time('Y-m-d\TH:i:sO'), + "date" => get_the_time('F j, Y'), + "content" => get_the_excerpt() +); +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/footer/README.txt b/wp-content/themes/vanilla/blog-set/footer/README.txt new file mode 100644 index 000000000..ed7998adb --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/footer/README.txt @@ -0,0 +1,36 @@ +## footer/ + +### Overview + +The standard _footer.php_ file (included using the WordPress `get_footer()` function) in Carrington is set up to call the `cfct_footer()` function, which will choose the appropriate footer file from this directory - based on the context of the given page. This can be useful if you want to have pages to have a custom footer, or perhaps a certain category to have a custom footer. + +A "default" template is required, and will be used when there are no other templates that match a given comment. This could be because no other templates have been created, or because the context doesn't match the templates that are available. + + +### Supported Override Filenames + +- footer-default.php (or default.php) +- archive.php +- author.php +- author-{username}.php +- category.php +- cat-{slug}.php +- home.php +- page.php +- role-{rolename}.php +- search.php +- single.php +- tag.php +- tag-{slug}.php + + +### File Descriptions + +Standard context file naming will work for files in this directory. Here are some specific examples. + +- *footer-default.php* - Used when there are no other templates that match for a given page/post. +- *author-{username}.php* - Used when the post/page is authored by a specific user. For example, a template with a file name of _author-jsmith.php_ would be used for a post/page by user _jsmith_. Any WordPres username can take the place of {username} in the file name. +- *cat-{slug}.php* - Used when a post is in a given category. The category is matched by the "slug" - for example a post in category "General" (with a category slug of "general") could use a template of _cat-general.php_. +- *home.php* - Used for the home page. +- *page.php* - Used for pages that do not match any other contextual templates. + diff --git a/wp-content/themes/vanilla/blog-set/footer/footer-default.html b/wp-content/themes/vanilla/blog-set/footer/footer-default.html new file mode 100644 index 000000000..5fef4cc01 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/footer/footer-default.html @@ -0,0 +1,33 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<div metal:define-macro="loader" tal:omit-tag=""> + +<div metal:fill-slot="ft" tal:omit-tag=""> + <div id="ft" class="yui-d0"> + <div class="wrapper"> + <span metal:define-slot="footer_nav" /> + <span metal:define-slot="footer" /> + </div><!--.wrapper--> + </div><!--#ft --> +</div> + +</div> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/footer/footer-default.php b/wp-content/themes/vanilla/blog-set/footer/footer-default.php new file mode 100644 index 000000000..756d22567 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/footer/footer-default.php @@ -0,0 +1,26 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +global $tpl; +$tpl["footer"] = array( + "tpl_file" => "footer-default.html" +); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/forms/README.txt b/wp-content/themes/vanilla/blog-set/forms/README.txt new file mode 100644 index 000000000..ee7b7cc18 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/forms/README.txt @@ -0,0 +1,22 @@ +## forms/ + +### Overview + +This directory holds forms that may be used in various places throughout the theme. + +These forms can be included in other theme files using the following code: + + <?php cfct_form('comment'); ?> + +Where `comment.php` is the name of the file in the _forms/_ directory that you want to include. + + +### Supported Override Filenames + +- (none) + + +### File Descriptions + +Included by default are the "post comment" form (_comment.php_) and the "search" form (_search.php_). Create as many forms as you like and store them here to keep them organized. + diff --git a/wp-content/themes/vanilla/blog-set/forms/comment.html b/wp-content/themes/vanilla/blog-set/forms/comment.html new file mode 100644 index 000000000..b479abea9 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/forms/comment.html @@ -0,0 +1,73 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<div metal:define-macro="loader" tal:omit-tag=""> + + <div metal:fill-slot="comment_form" tal:condition="vanilla/comment_form/open" tal:omit-tag=""> + <!-- slot: comment_form --> + <p tal:condition="vanilla/comment_form/must_login" id="you-must-be-logged-in-to-comment">${vanilla/comment_form/logged_in_message}</p> + + <span tal:condition="php: NOT vanilla.comment_form.registered" tal:comment="Display if registration is not required." tal:omit-tag=""> + <form action="${vanilla/wpurl}/wp-comments-post.php" method="post" id="comment-form"> + <div id="comment-form-comment" class="section"> + <label id="respond" for="comment">${vanilla/comment_form/comment_label}</label> + <div> + <textarea name="comment" id="comment" rows="8" cols="40" tabindex="1"></textarea> + <p id="some-html-is-ok"> + <abbr title="${vanilla/comment_form/allowed_html_attribute}">${vanilla/comment_form/allowed_html_message}</abbr> + </p> + </div> + </div> + + <p tal:condition="vanilla/comment_form/logged_in" class="logged-in section" tal:comment="Display if user is logged in."> + ${structure vanilla/comment_form/logged_in_as} + <a href="${vanilla/wpurl}/wp-login.php?action=logout" title="${vanilla/comment_form/log_out_attribute}">${vanilla/comment_form/log_out_message}</a> + </p> + + <span tal:condition="php: vanilla.comment_form.logged_in == '0'" tal:comment="Display if user is not logged in." tal:omit-tag=""> + <p id="comment-form-name" class="section"> + <label for="author">${vanilla/comment_form/author_label}</label> + <input type="text" name="author" id="author" value="${vanilla/comment_form/author_value}" size="22" tabindex="2" /> + <span tal:condition="vanilla/comment_form/required" class="note">${vanilla/comment_form/required_message}</span> + </p><!--/name--> + <p id="comment-form-email" class="section"> + <label for="email">${vanilla/comment_form/email_label}</label> + <input type="text" name="email" id="email" value="${vanilla/comment_form/email_value}" size="22" tabindex="3" /> + <span tal:condition="vanilla/comment_form/required" class="note">${vanilla/comment_form/required_email_message}</span> + <span tal:condition="php: NOT vanilla.comment_form.required" class="note">${vanilla/comment_form/email_message}</span> + </p><!--/email--> + <p id="comment-form-url" class="section"> + <label title="${vanilla/comment_form/url_attribute}" for="url">${vanilla/comment_form/url_label}</label> + <input type="text" name="url" id="url" value="${vanilla/comment_form/url_value}" size="22" tabindex="4" /> + </p><!--/url--> + </span> + + <p class="actions"> + <input name="submit" type="submit" id="submit" value="${vanilla/comment_form/submit_text}" tabindex="5" /> + <span id="comment-form-trackback">${structure vanilla/comment_form/trackback_message}</span> + <input type="hidden" name="comment_post_ID" value="${vanilla/comment_form/post_id}" /> + </p><!--/controls--> + </form> + </span> + <!-- /slot: comment_form --> + </div> + +</div> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/forms/comment.php b/wp-content/themes/vanilla/blog-set/forms/comment.php new file mode 100644 index 000000000..b6ffb6eb5 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/forms/comment.php @@ -0,0 +1,57 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +global $post, $user_ID, $user_identity, $comment_author, $comment_author_email, $comment_author_url, $tpl; + +$req = get_option('require_name_email'); + +do_action('comment_form', $post->ID); + +$tpl[] = array( + "wpurl" => get_bloginfo('wpurl') +); + +$tpl["comment_form"] = array( + "tpl_file" => "comment.html", + "open" => ($post->comment_status) ? 1 : 0, + "logged_in" => ($user_ID) ? 1 : 0, + "must_login" => (get_option('comment_registration') && !$user_ID) ? 1 : 0, + "logged_in_message" => sprintf(__('You must be <a href="%s">logged in</a> to post a comment.', 'carrington'), get_bloginfo('wpurl').'/wp-login.php?redirect_to='.get_permalink()), + "comment_label" => __('Post a comment', 'carrington'), + "allowed_html_attribute" => sprintf(__('You can use: %s', 'carrington'), allowed_tags()), + "allowed_html_message" => __('Some HTML is OK', 'carrington'), + "logged_in_as" => sprintf(__('Logged in as <a href="%s">%s</a>.', 'carrington'), get_bloginfo('wpurl').'/wp-admin/profile.php', $user_identity), + "log_out_attribute" => __('Log out of this account', 'carrington'), + "log_out_message" => __('Logout →', 'carrington'), + "author_label" => __('Name', 'carrington'), + "author_value" => $comment_author, + "required" => ($req) ? 1 : 0, + "required_message" => __('(required)', 'carrington'), + "email_label" => __('Email', 'carrington'), + "email_value" => $comment_author_email, + "required_email_message" => __('(required, but never shared)', 'carrington'), + "email_message" => __('(never shared)', 'carrington'), + "url_attribute" => __('Your website address', 'carrington'), + "url_label" => __('Web', 'carrington'), + "url_value" => $comment_author_url, + "submit_text" => __('Post comment', 'carrington'), + "trackback_message" => sprintf(__('or, reply to this post via <a rel="trackback" href="%s">trackback</a>.', 'carrington'), get_trackback_url()), + "post_id" => $post->ID +); \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/forms/search.php b/wp-content/themes/vanilla/blog-set/forms/search.php new file mode 100644 index 000000000..f715c2980 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/forms/search.php @@ -0,0 +1,30 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +global $tpl; + +$tpl["search"] = array( + "tpl_file" => "search-form.html", + "action" => get_bloginfo('home'), + "submit_text" => __('Search', 'carrington'), + "query" => wp_specialchars(stripslashes($_GET['s']), true) +); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/header/README.txt b/wp-content/themes/vanilla/blog-set/header/README.txt new file mode 100644 index 000000000..65bbea785 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/header/README.txt @@ -0,0 +1,36 @@ +## header/ + +### Overview + +The standard _header.php_ file in Carrington is set up to call the `cfct_header()` function, which will choose the appropriate header file from this directory - based on the context of the given page. This can be useful if you want to have pages to have a custom header, or perhaps a certain category to have a custom header. + +A "default" template is required, and will be used when there are no other templates that match a given context. This could be because no other templates have been created, or because the context doesn't match the templates that are available. + + +### Supported Override Filenames + +- header-default.php (or default.php) +- archive.php +- author.php +- author-{username}.php +- category.php +- cat-{slug}.php +- home.php +- page.php +- role-{rolename}.php +- search.php +- single.php +- tag.php +- tag-{slug}.php + + +### File Descriptions + +Standard context file naming will work for files in this directory. Here are some specific examples. + +- *header-default.php* - Used when there are no other templates that match for a given page/post. +- *author-{username}.php* - Used when the post/page is authored by a specific user. For example, a template with a file name of _author-jsmith.php_ would be used for a post/page by user _jsmith_. Any WordPress username can take the place of {username} in the file name. +- *cat-{slug}.php* - Used when a post is in a given category. The category is matched by the "slug" - for example a post in category "General" (with a category slug of "general") could use a template of _cat-general.php_. +- *home.php* - Used for the home page. +- *page.php* - Used for pages that do not match any other contextual templates. + diff --git a/wp-content/themes/vanilla/blog-set/header/header-default.html b/wp-content/themes/vanilla/blog-set/header/header-default.html new file mode 100644 index 000000000..e90553cb9 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/header/header-default.html @@ -0,0 +1,54 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<div metal:define-macro="loader" tal:omit-tag=""> + +<div metal:fill-slot="head" tal:omit-tag=""> + <title tal:content="php:hybrid_document_title()">Title</title> + <meta http-equiv="Content-Type" content="${vanilla/header/content_type}" /> + <link rel="stylesheet" type="text/css" media="screen" href="${vanilla/header/stylesheet_url}" /> + <link rel="stylesheet" type="text/css" media="screen, print, handheld" href="${vanilla/header/template_url}css/typography.css" /> + ${structure vanilla/header/ie_cond_stylesheet} + <span metal:define-slot="hybrid_head" /> + <span metal:define-slot="wp_head" /> +</div> + + +<div metal:fill-slot="hd" tal:omit-tag=""> + <div id="hd" class="yui-d0"> + <div class="wrapper"> + <span metal:define-slot="header_nav" /> + <span metal:define-slot="header" /> + <span metal:define-slot="main_menu" /> + </div><!-- .wrapper --> + </div><!-- #hd --> +</div> + + +<div metal:fill-slot="sub_header" tal:omit-tag=""> + <div id="sub-header" class="yui-d0"> + <div class="wrapper"> + <span metal:define-slot="sub_menu" /> + </div><!-- .wrapper --> + </div><!--#sub-header--> +</div> + +</div> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/header/header-default.php b/wp-content/themes/vanilla/blog-set/header/header-default.php new file mode 100644 index 000000000..63f43a20e --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/header/header-default.php @@ -0,0 +1,52 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +// Default YUI Grid settings +global $vnl_width, $vnl_nesting, $vnl_template, $vnl_utility, $tpl; +$vnl_width = get_option("vnl_grid_width"); +$vnl_nesting = get_option("vnl_grid_nesting"); +$vnl_template = get_option("vnl_grid_template"); +$vnl_utility = get_option("vnl_utility_nesting"); + +$language_attributes = ""; +function redir_language_attributes($out){ + global $language_attributes; + $language_attributes = $out; + return ""; +} +add_filter('language_attributes', 'redir_language_attributes'); +language_attributes(); + +$set = vanilla_get_option('vnl_tpl_set').'-set/'; + +$ie_cond_stylesheet = "<!--[if lt IE 8]>\n" . + '<link rel="stylesheet" href="'.get_bloginfo('template_url').'/'.$set.'ie.css" type="text/css" media="screen" charset="utf-8" />' . "\n" . + "<![endif]-->\n"; + +$tpl["header"] = array( + "tpl_file" => "header-default.html", + "language_attributes" => "", //$language_attributes, + "content_type" => get_bloginfo('html_type')."; charset=".get_bloginfo('charset'), + "stylesheet_url" => str_replace("style.css", "", get_bloginfo('stylesheet_url')).$set.'style.css', + "template_url" => get_bloginfo('template_url').'/'.$set, + "ie_cond_stylesheet" => $ie_cond_stylesheet +); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/hooks.html b/wp-content/themes/vanilla/blog-set/hooks.html new file mode 100644 index 000000000..9912982b6 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/hooks.html @@ -0,0 +1,172 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<metal:block define-macro="loader"> + <metal:block fill-slot="hybrid_head"> + <!-- hook: hybrid_head --> + ${php:hybrid_head()} + </metal:block> + + + <metal:block fill-slot="wp_head"> + <!-- hook: wp_head --> + ${php:wp_head()} + </metal:block> + + + <metal:block fill-slot="before_page"> + <!-- hook: before_page --> + ${php:vanilla_before_page()} + </metal:block> + + + <metal:block fill-slot="before_hd"> + <!-- hook: before_hd --> + ${php:vanilla_before_hd()} + </metal:block> + + + <metal:block fill-slot="before_bd"> + <!-- hook: before_bd --> + ${php:vanilla_before_bd()} + </metal:block> + + + <metal:block fill-slot="before_ft"> + <!-- hook: before_ft --> + ${php:vanilla_before_ft()} + </metal:block> + + + <metal:block fill-slot="after_ft"> + <!-- hook: after_ft --> + ${php:vanilla_after_ft()} + </metal:block> + + + <metal:block fill-slot="after_page"> + <!-- hook: after_page --> + ${php:vanilla_after_page()} + </metal:block> + + + <metal:block fill-slot="wp_footer"> + <!-- hook: wp_footer --> + ${php:wp_footer()} + </metal:block> + + + <metal:block fill-slot="header_nav"> + <!-- hook: header_nav --> + ${php:vanilla_widget_block('Header Nav')} + </metal:block> + + + <metal:block fill-slot="header"> + <!-- hook: header --> + ${php:vanilla_widget_block('Header')} + </metal:block> + + + <metal:block fill-slot="main_menu"> + <!-- hook: main_menu --> + ${php:vanilla_widget_block('Main Menu')} + </metal:block> + + + <metal:block fill-slot="sub_menu"> + <!-- hook: main_menu --> + ${php:vanilla_widget_block('Sub Menu')} + </metal:block> + + + <metal:block fill-slot="breadcrumbs"> + <!-- hook: breadcrumbs --> + ${php:vanilla_widget_block('Breadcrumbs')} + </metal:block> + + + <metal:block fill-slot="content_top"> + <!-- hook: content_top --> + ${php:vanilla_widget_block('Content Top')} + </metal:block> + + + <metal:block fill-slot="content_middle"> + <!-- hook: content_middle --> + ${php:vanilla_widget_block('Content Middle')} + </metal:block> + + + <metal:block fill-slot="content_bottom"> + <!-- hook: content_bottom --> + ${php:vanilla_widget_block('Content Bottom')} + </metal:block> + + + <metal:block fill-slot="primary_sidebar"> + <!-- hook: primary_sidebar --> + ${php:vanilla_widget_block('Primary Sidebar')} + </metal:block> + + + <metal:block fill-slot="secondary_sidebar"> + <!-- hook: secondary_sidebar --> + ${php:vanilla_widget_block('Secondary Sidebar')} + </metal:block> + + + <metal:block fill-slot="footer_nav"> + <!-- hook: footer_nav --> + ${php:vanilla_widget_block('Footer Nav')} + </metal:block> + + + <metal:block fill-slot="footer"> + <!-- hook: footer --> + ${php:vanilla_widget_block('Footer')} + </metal:block> + + + <metal:block fill-slot="utility_1"> + <!-- hook: utility_1 --> + ${php:vanilla_widget_block('Utility 1')} + </metal:block> + + + <metal:block fill-slot="utility_2"> + <!-- hook: utility_2 --> + ${php:vanilla_widget_block('Utility 2')} + </metal:block> + + + <metal:block fill-slot="utility_3"> + <!-- hook: utility_3 --> + ${php:vanilla_widget_block('Utility 3')} + </metal:block> + + + <metal:block fill-slot="utility_4"> + <!-- hook: utility_4 --> + ${php:vanilla_widget_block('Utility 4')} + </metal:block> + +</metal:block> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/loop/README.txt b/wp-content/themes/vanilla/blog-set/loop/README.txt new file mode 100644 index 000000000..364a50066 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/loop/README.txt @@ -0,0 +1,35 @@ +## loop/ + +### Overview + +This directory contains files that do "the loop". Generally the files in this directory will be included in a file from the _posts/_ or _pages/_ directory, and they will in turn include templates from the _content/_ or _excerpt/_ directories. + +For example, you might want posts on a search results page to display differently that posts on an archive page. Here is how that page would be built: + +1. A page is identified as a search page - Carrington looks for a _posts/search.php_ file and will fall back on a _posts/default.php_ file if none is found. +2. The _posts/search.php_ file will include the header, footer and sidebar - and will also include a call to `cfct_loop()` to include a loop. +3. Since we don't want to show the full posts in search results, the _posts/search.php_ explicitly asks for a file from the _excerpt/_ directory to display the posts in the search results. It will use _excerpt/search.php_ if that file exists, or fall back on _excerpt/default.php_ if the custom file does not exist. + + +### Supported Override Filenames + +- loop-default.php (or default.php) +- archive.php +- author.php +- author-{username}.php +- category.php +- cat-{slug}.php +- home.php +- page.php +- role-{rolename}.php +- search.php +- single.php +- tag.php +- tag-{slug}.php + + +### File Descriptions + +Standard context file naming will work for files in this directory. Here are some specific examples. + +Included is the "default" loop (_default.php_) and the "search" loop (_search.php_). Create as many loops as you like to create custom displays for various pages. diff --git a/wp-content/themes/vanilla/blog-set/loop/archive.html b/wp-content/themes/vanilla/blog-set/loop/archive.html new file mode 100644 index 000000000..d838798da --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/loop/archive.html @@ -0,0 +1,35 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<div metal:define-macro="loader" tal:omit-tag=""> + +<div metal:fill-slot="loop" tal:omit-tag=""> + <ol class="archive"> + <li tal:repeat="entry vanilla/entries"> + <span tal:define="file php:vanilla_get_template('excerpt/' . vanilla['excerpt']['tpl_file'])" + metal:use-macro="${file}/loader" tal:comment="The excerpt slot." /> + <span metal:define-slot="excerpt" /> + <div id="post-content-${entry/id}-target"></div> + </li> + </ol><!-- .archive --> +</div> + +</div> diff --git a/wp-content/themes/vanilla/blog-set/loop/archive.php b/wp-content/themes/vanilla/blog-set/loop/archive.php new file mode 100644 index 000000000..0c91700ad --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/loop/archive.php @@ -0,0 +1,34 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +global $tpl; + +$tpl["loop"] = array( + "tpl_file" => "archive.html" +); + +if (have_posts()) { + while (have_posts()) { + the_post(); + cfct_excerpt(); + } +} + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/loop/home.html b/wp-content/themes/vanilla/blog-set/loop/home.html new file mode 100644 index 000000000..ecafb0117 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/loop/home.html @@ -0,0 +1,48 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<div metal:define-macro="loader" tal:omit-tag=""> + +<div metal:fill-slot="loop" tal:omit-tag=""> + <!-- hook: loop --> + <span tal:repeat="entry vanilla/entries" tal:omit-tag=""> + <span tal:condition="php: repeat.entry.number == '1'" tal:omit-tag=""> + <span tal:define="file php:vanilla_get_template('content/' . vanilla['content']['tpl_file'])" + metal:use-macro="${file}/loader" tal:comment="The content slot." /> + <span metal:define-slot="content" /> + </span> + </span> + + <span metal:define-slot="content_middle" /> + + <ol class="archive"> + <span tal:repeat="entry vanilla/entries" tal:omit-tag=""> + <li tal:condition="php: repeat.entry.number GT '1'"> + <span tal:define="file php:vanilla_get_template('excerpt/' . vanilla['excerpt']['tpl_file'])" + metal:use-macro="${file}/loader" tal:comment="The excerpt slot." /> + <span metal:define-slot="excerpt" /> + <div id="post-content-${entry/id}-target"></div> + </li> + </span> + </ol><!-- .archive --> +</div> + +</div> diff --git a/wp-content/themes/vanilla/blog-set/loop/home.php b/wp-content/themes/vanilla/blog-set/loop/home.php new file mode 100644 index 000000000..ce2f313b3 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/loop/home.php @@ -0,0 +1,36 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +global $tpl; +$tpl["loop"] = array( + "tpl_file" => "home.html" +); + +if (have_posts()) { + + the_post(); + cfct_content(); + + while (have_posts()) { + the_post(); + cfct_excerpt(); + } +} +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/loop/loop-default.html b/wp-content/themes/vanilla/blog-set/loop/loop-default.html new file mode 100644 index 000000000..d838798da --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/loop/loop-default.html @@ -0,0 +1,35 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<div metal:define-macro="loader" tal:omit-tag=""> + +<div metal:fill-slot="loop" tal:omit-tag=""> + <ol class="archive"> + <li tal:repeat="entry vanilla/entries"> + <span tal:define="file php:vanilla_get_template('excerpt/' . vanilla['excerpt']['tpl_file'])" + metal:use-macro="${file}/loader" tal:comment="The excerpt slot." /> + <span metal:define-slot="excerpt" /> + <div id="post-content-${entry/id}-target"></div> + </li> + </ol><!-- .archive --> +</div> + +</div> diff --git a/wp-content/themes/vanilla/blog-set/loop/loop-default.php b/wp-content/themes/vanilla/blog-set/loop/loop-default.php new file mode 100644 index 000000000..1f7325dcb --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/loop/loop-default.php @@ -0,0 +1,39 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +// Alister - added to handle Thematic-naming-convention of options/variables +global $options, $tpl; +foreach ($options as $value) { + $$value['id'] = (get_settings( $value['id'] ) === FALSE) ? $value['std'] : get_settings( $value['id'] ); +} + +$tpl["loop"] = array( + "tpl_file" => "loop-default.html" +); + +if (have_posts()) { + + while (have_posts()) { + the_post(); + cfct_content(); + } +} + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/loop/search.html b/wp-content/themes/vanilla/blog-set/loop/search.html new file mode 100644 index 000000000..7b1405a01 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/loop/search.html @@ -0,0 +1,36 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<div metal:define-macro="loader" tal:omit-tag=""> + +<div metal:fill-slot="loop" tal:omit-tag=""> + <span tal:condition="vanilla/loop/have_posts" tal:omit-tag=""> + <span tal:repeat="entry vanilla/entries" tal:omit-tag=""> + <span tal:define="file php:vanilla_get_template('excerpt/' . vanilla['excerpt']['tpl_file'])" + metal:use-macro="${file}/loader" tal:comment="The excerpt slot." /> + <span metal:define-slot="excerpt" /> + </span> + </span> + + <span metal:define-slot="search_form" tal:condition="not: vanilla/loop/have_posts" /> +</div> + +</div> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/loop/search.php b/wp-content/themes/vanilla/blog-set/loop/search.php new file mode 100644 index 000000000..720c1d260 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/loop/search.php @@ -0,0 +1,46 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +global $tpl; + +$search_title = false; +$search_message = false; + +if (have_posts()) { + while (have_posts()) { + the_post(); + cfct_excerpt(); + } +} else { + + $search_title = __('Nothing Found', 'thematic'); + $search_message = __('Sorry, but nothing matched your search criteria. Please try again with some different keywords.', 'thematic'); + + cfct_form('search'); +} + +$tpl["loop"] = array( + "tpl_file" => "search.html", + "have_posts" => (have_posts()) ? 1 : 0, + "search_title" => $search_title, + "search_message" => $search_message +); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/misc/README.txt b/wp-content/themes/vanilla/blog-set/misc/README.txt new file mode 100644 index 000000000..cf1daf1d7 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/misc/README.txt @@ -0,0 +1,23 @@ +## misc/ + +### Overview + +This directory holds page fragments and snippets that you may want to use across multiple template files. + +These files can be included in other theme files using the following code: + + <?php cfct_misc('nav-posts'); ?> + +Where `nav-posts.php` is the name of the file in the _misc/_ directory that you want to include. + + +### Supported Override Filenames + +- (none) + + +### File Descriptions + +- *banner.php* - This is used by Carrington to display a message that is passed to it. +- *nav-posts.php* - This is standard paging for posts pages. + diff --git a/wp-content/themes/vanilla/blog-set/misc/banner.php b/wp-content/themes/vanilla/blog-set/misc/banner.php new file mode 100644 index 000000000..566c7b4f0 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/misc/banner.php @@ -0,0 +1,21 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +?> +<div class="cfct_banner"><?php echo $str; ?></div> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/misc/nav-posts.html b/wp-content/themes/vanilla/blog-set/misc/nav-posts.html new file mode 100644 index 000000000..da96c7930 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/misc/nav-posts.html @@ -0,0 +1,30 @@ +<tal:block replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</tal:block> + +<div metal:define-macro="loader" tal:omit-tag=""> + + <div class="pagination" metal:fill-slot="nav_posts"> + <!-- hook: nav_posts --> + <span class="previous">${structure vanilla/nav_posts/next_posts_link}</span> + <span class="next">${structure vanilla/nav_posts/previous_posts_link}</span> + </div> + +</div> diff --git a/wp-content/themes/vanilla/blog-set/misc/nav-posts.php b/wp-content/themes/vanilla/blog-set/misc/nav-posts.php new file mode 100644 index 000000000..380bed766 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/misc/nav-posts.php @@ -0,0 +1,24 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +global $tpl; +$tpl["nav_posts"] = array( + "next_posts_link" => get_next_posts_link(__('« Older posts', 'carrington')), + "previous_posts_link" => get_previous_posts_link(__('Newer posts »', 'carrington')) +); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/pages/README.txt b/wp-content/themes/vanilla/blog-set/pages/README.txt new file mode 100644 index 000000000..6bbf24f7c --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/pages/README.txt @@ -0,0 +1,41 @@ +## pages/ + +### Overview + +WP doesn't support page templates in nested folders like this one, so page organization isn't as clean as we'd like. + +Create a page in the theme root: + +File name: page-example.php + +**Note:** We recommend prefixing all of your page files with 'page-' so that they are easily sorted together in your theme directory. + +File contents: + + <?php + + /* + Template Name: Example Template + */ + + if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + if (CFCT_DEBUG) { cfct_banner(__FILE__); } + + cfct_page('example'); + + ?> + +This will then load 'example.php' from the _pages/_ directory, keeping all of your actual page code nicely organized in one spot. + +You can also add your page code to the page-example.php file you create in the theme root, but we're hoping to get support for pages in a sub-directory in a future version of WordPress so we are starting with what we consider to be a "proper" organization structure now. + + +### Supported Override Filenames + +- pages-default.php (or default.php) + + +### File Descriptions + +A "default" template is required. You can create other templates as desired. + diff --git a/wp-content/themes/vanilla/blog-set/pages/pages-default.html b/wp-content/themes/vanilla/blog-set/pages/pages-default.html new file mode 100644 index 000000000..3a3b697f8 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/pages/pages-default.html @@ -0,0 +1,93 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<div metal:define-macro="page" tal:omit-tag=""> + +<span tal:define="file php:vanilla_get_template('hooks.html')" + metal:use-macro="${file}/loader" tal:comment="All the 'hook' slots." /> +<span tal:define="file php:vanilla_get_template('header/' . vanilla['header']['tpl_file'])" + metal:use-macro="${file}/loader" tal:comment="All the header slots." /> +<span tal:define="file php:vanilla_get_template('vanilla-utility.html')" + metal:use-macro="${file}/loader" tal:comment="All the utility block slots." /> +<span tal:define="file php:vanilla_get_template('footer/' . vanilla['footer']['tpl_file'])" + metal:use-macro="${file}/loader" tal:comment="All the footer slots." /> + +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> <!-- have to put language back in here. --> +<head profile="http://gmpg.org/xfn/11"> + <span metal:define-slot="head" /> +</head> +<body class="${vanilla/page/body_class}"> + + <span metal:define-slot="before_page" /> + + <div id="page"> + + <span metal:define-slot="before_hd" /> + <span metal:define-slot="hd" /> + <span metal:define-slot="sub_header" /> + <span metal:define-slot="before_bd" /> + + <div id="bd" class="${vanilla/page/bd_class} hfeed"> + + <span metal:define-slot="breadcrumbs" /> + + <div tal:define="file php:vanilla_get_template('vanilla-grid.html')" + metal:use-macro="${file}/vanilla_grid" tal:omit-tag=""> + <div metal:fill-slot="content" tal:omit-tag=""> + <span metal:define-slot="content_top" /> + + <span tal:repeat="entry vanilla/entries" tal:omit-tag=""> + <span tal:condition="php: repeat.entry.number == '1'" tal:omit-tag=""> + <span tal:define="file php:vanilla_get_template('content/' . vanilla['content']['tpl_file'])" + metal:use-macro="${file}/loader" tal:comment="The content slot." /> + <span tal:define="file php:vanilla_get_template('comments/' . vanilla['comments']['tpl_file'])" + metal:use-macro="${file}/loader" tal:comment="The comments slot." /> + + <span metal:define-slot="content" /> + <div id="comments"> + <span metal:define-slot="comments" /> + </div><!--#comments--> + </span> + </span> + + <span metal:define-slot="content_bottom" /> + </div> + </div> + + </div><!-- #bd--> + + <span metal:define-slot="utility" /> + <span metal:define-slot="before_ft" /> + <span metal:define-slot="ft" /> + <span metal:define-slot="after_ft" /> + + </div><!--#page--> + + <span metal:define-slot="after_page" /> + <span metal:define-slot="wp_footer" /> + +</body> +</html> + +</div> + +<span metal:use-macro="page" comment="Don't remove this, or you get... nothing!" /> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/pages/pages-default.php b/wp-content/themes/vanilla/blog-set/pages/pages-default.php new file mode 100644 index 000000000..21db9239f --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/pages/pages-default.php @@ -0,0 +1,56 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +global $vnl_width, $vnl_nesting, $vnl_template, $vnl_utility, $tpl; +$vnl_width = (isset($vnl_width)) ? $vnl_width : vanilla_get_option("vnl_grid_width"); +$vnl_nesting = (isset($vnl_nesting)) ? $vnl_nesting : vanilla_get_option("vnl_grid_nesting"); +$vnl_template = (isset($vnl_template)) ? $vnl_template : vanilla_get_option("vnl_grid_template"); +$vnl_utility = (isset($vnl_utility)) ? $vnl_utility : vanilla_get_option("vnl_utility_nesting"); +// Page-specific overides +//$vnl_width = "yui-d3"; +//$vnl_nesting = "yui-gf"; +//$vnl_template = "yui-t2"; +//$vnl_utility = "yui-bg"; + +// create a new PHPTAL template object +$template = new PHPTAL(vanilla_get_template('pages/pages-default.html') ); +$template->cleanUpCache(); + +$tpl["page"] = array( + "width" => $vnl_width, + "nesting" => $vnl_nesting, + "template" => $vnl_template, + "utility" => $vnl_utility, + "body_class" => sandbox_body_class(false), + "bd_class" => $vnl_width." ".$vnl_template +); + +get_header(); + +cfct_loop(); + +cfct_comments(); + +get_footer(); + +// Execute the PHPTAL template +vanilla_output_page($template); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/posts/README.txt b/wp-content/themes/vanilla/blog-set/posts/README.txt new file mode 100644 index 000000000..66fe8dd7f --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/posts/README.txt @@ -0,0 +1,46 @@ +## posts/ + +### Overview + +The files in this directory are "top level" templates for pages in WordPress that show multiple posts at once. These files should call `the_header()`, `the_sidebar()`, `the_footer()` and `cfct_loop()` to include the other parts of the page. + +The file from this directory that will be used is chosen based on the current page context. + +You can explicitly decide which _loop/_ to use from these templates by passing it in as so: + + cfct_template_file('loop', 'example'); + +which would use _loop/example.php_ for the loop. + +A "default" template is required, and will be used when there are no other templates that match a given context. This could be because no other templates have been created, or because the context doesn't match the templates that are available. + + +### Supported Override Filenames + +- posts-default.php (or default.php) +- archive.php +- author.php +- author-{username}.php +- category.php +- cat-{slug}.php +- home.php +- page.php +- role-{rolename}.php +- search.php +- single.php +- tag.php +- tag-{slug}.php + + +### File Descriptions + +Standard context file naming will work for files in this directory. Here are some specific examples. + +- *posts-default.php* - Used when there are no other templates that match for a given context. +- *author-{username}.php* - Used to show posts authored by a specific user. For example, a template with a file name of _author-jsmith.php_ would be used posts by user _jsmith_. Any WordPress username can take the place of {username} in the file name. +- *cat-{slug}.php* - Used to show posts in a given category. The category is matched by the "slug" - for example posts in category "General" (with a category slug of "general") could use a template of _cat-general.php_. +- *tag-{slug}.php* - Used to show posts for a given tag. The tag is matched by the "slug" - for example a post tagged with "News" (with a tag slug of "news") could use a template of _tag-news.php_. +- *author.php* - Used for showing posts by an author. +- *category.php* - Used for showing posts by category. +- *search.php* - Used for showing search results. +- *tag.php* - Used for showing posts by tag. \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/posts/author.php b/wp-content/themes/vanilla/blog-set/posts/author.php new file mode 100644 index 000000000..5c0599b34 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/posts/author.php @@ -0,0 +1,67 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +global $authordata; + +get_header(); +?> +<div id="content"> +<?php + +if (have_posts()) { + while (have_posts()) { + the_post(); +?> + + <h1 class="page-title"><?php printf(__('Posts by: <a href="%s">%s</a>', 'carrington'), get_author_posts_url($authordata->ID), get_author_name($authordata->ID)); ?></h1> + +<?php + if (!empty($bio)) { +?> + + <div class="description author-bio"> + + <h2><?php printf(__('About %s', 'carrington'), get_author_name($authordata->ID)); ?></h2> + +<?php + echo apply_filters('the_content', get_the_author_description()); +?> + + </div> + +<?php + } + break; + } +} +rewind_posts(); + +cfct_loop(); +cfct_misc('nav-posts'); +?> + +</div><!--#content--> +<?php + +get_sidebar(); + +get_footer(); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/posts/category.html b/wp-content/themes/vanilla/blog-set/posts/category.html new file mode 100644 index 000000000..acebb229c --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/posts/category.html @@ -0,0 +1,88 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<div metal:define-macro="page" tal:omit-tag=""> + +<span tal:define="file php:vanilla_get_template('hooks.html')" + metal:use-macro="${file}/loader" tal:comment="All the 'hook' slots." /> +<span tal:define="file php:vanilla_get_template('header/' . vanilla['header']['tpl_file'])" + metal:use-macro="${file}/loader" tal:comment="All the header slots." /> +<span tal:define="file php:vanilla_get_template('loop/' . vanilla['loop']['tpl_file'])" + metal:use-macro="${file}/loader" tal:comment="All the loop slots." /> +<span tal:define="file php:vanilla_get_template('misc/nav-posts.html')" + metal:use-macro="${file}/loader" tal:comment="The nav_posts slot." /> +<span tal:define="file php:vanilla_get_template('vanilla-utility.html')" + metal:use-macro="${file}/loader" tal:comment="All the utility block slots." /> +<span tal:define="file php:vanilla_get_template('footer/' . vanilla['footer']['tpl_file'])" + metal:use-macro="${file}/loader" tal:comment="All the footer slots." /> + +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> <!-- have to put language back in here. --> +<head profile="http://gmpg.org/xfn/11"> + <span metal:define-slot="head" /> +</head> +<body class="${vanilla/page/body_class}"> + + <span metal:define-slot="before_page" /> + + <div id="page"> + + <span metal:define-slot="before_hd" /> + <span metal:define-slot="hd" /> + <span metal:define-slot="sub_header" /> + <span metal:define-slot="before_bd" /> + + <div id="bd" class="${vanilla/page/bd_class} hfeed"> + + <span metal:define-slot="breadcrumbs" /> + + <div tal:define="file php:vanilla_get_template('vanilla-grid.html')" + metal:use-macro="${file}/vanilla_grid" tal:omit-tag=""> + <div metal:fill-slot="content" tal:omit-tag=""> + <span metal:define-slot="content_top" /> + + <h1 class="page-title">${structure vanilla/page/cat_title}</h1> + <div class="description" tal:condition="vanilla/page/cat_description">${structure vanilla/page/cat_description}</div> + + <span metal:define-slot="loop" /> + <span metal:define-slot="nav_posts" /> + <span metal:define-slot="content_bottom" /> + </div> + </div> + + </div><!-- #bd--> + + <span metal:define-slot="utility" /> + <span metal:define-slot="before_ft" /> + <span metal:define-slot="ft" /> + <span metal:define-slot="after_ft" /> + + </div><!--#page--> + + <span metal:define-slot="after_page" /> + <span metal:define-slot="wp_footer" /> + +</body> +</html> + +</div> + +<span metal:use-macro="page" comment="Don't remove this, or you get... nothing!" /> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/posts/category.php b/wp-content/themes/vanilla/blog-set/posts/category.php new file mode 100644 index 000000000..330e03919 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/posts/category.php @@ -0,0 +1,60 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +global $vnl_width, $vnl_nesting, $vnl_template, $vnl_utility, $tpl; +$vnl_width = (isset($vnl_width)) ? $vnl_width : vanilla_get_option("vnl_grid_width"); +$vnl_nesting = (isset($vnl_nesting)) ? $vnl_nesting : vanilla_get_option("vnl_grid_nesting"); +$vnl_template = (isset($vnl_template)) ? $vnl_template : vanilla_get_option("vnl_grid_template"); +$vnl_utility = (isset($vnl_utility)) ? $vnl_utility : vanilla_get_option("vnl_utility_nesting"); +// Page-specific overides +//$vnl_width = "yui-d3"; +//$vnl_nesting = "yui-gd"; +//$vnl_template = "yui-t2"; +//$vnl_utility = "yui-bg"; + +// create a new PHPTAL template object +$template = new PHPTAL( vanilla_get_template('posts/category.html') ); +$template->cleanUpCache(); + +$cat_title = '<a href="'.get_category_link(intval(get_query_var('cat'))).'" title="">'.single_cat_title('', false).'</a>'; +$cat_description = category_description(); + +$tpl["page"] = array( + "width" => $vnl_width, + "nesting" => $vnl_nesting, + "template" => $vnl_template, + "utility" => $vnl_utility, + "body_class" => sandbox_body_class(false), + "bd_class" => "$vnl_width $vnl_template", + "cat_title" => $cat_title, + "cat_description" => ($cat_description) ? $cat_description : 0 +); + +get_header(); + +cfct_loop(); +cfct_misc('nav-posts'); + +get_footer(); + +// Execute the PHPTAL template +vanilla_output_page($template); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/posts/home.html b/wp-content/themes/vanilla/blog-set/posts/home.html new file mode 100644 index 000000000..3263f5e76 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/posts/home.html @@ -0,0 +1,84 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<div metal:define-macro="page" tal:omit-tag=""> + +<span tal:define="file php:vanilla_get_template('hooks.html')" + metal:use-macro="${file}/loader" tal:comment="All the 'hook' slots." /> +<span tal:define="file php:vanilla_get_template('header/' . vanilla['header']['tpl_file'])" + metal:use-macro="${file}/loader" tal:comment="All the header slots." /> +<span tal:define="file php:vanilla_get_template('loop/' . vanilla['loop']['tpl_file'])" + metal:use-macro="${file}/loader" tal:comment="All the loop slots." /> +<span tal:define="file php:vanilla_get_template('misc/nav-posts.html')" + metal:use-macro="${file}/loader" tal:comment="The nav_posts slot." /> +<span tal:define="file php:vanilla_get_template('vanilla-utility.html')" + metal:use-macro="${file}/loader" tal:comment="All the utility block slots." /> +<span tal:define="file php:vanilla_get_template('footer/' . vanilla['footer']['tpl_file'])" + metal:use-macro="${file}/loader" tal:comment="All the footer slots." /> + +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> <!-- have to put language back in here. --> +<head profile="http://gmpg.org/xfn/11"> + <span metal:define-slot="head" /> +</head> +<body class="${vanilla/page/body_class}"> + + <span metal:define-slot="before_page" /> + + <div id="page"> + + <span metal:define-slot="before_hd" /> + <span metal:define-slot="hd" /> + <span metal:define-slot="sub_header" /> + <span metal:define-slot="before_bd" /> + + <div id="bd" class="${vanilla/page/bd_class} hfeed"> + + <span metal:define-slot="breadcrumbs" /> + + <div tal:define="file php:vanilla_get_template('vanilla-grid.html')" + metal:use-macro="${file}/vanilla_grid" tal:omit-tag=""> + <div metal:fill-slot="content" tal:omit-tag=""> + <span metal:define-slot="content_top" /> + <span metal:define-slot="loop" /> + <span metal:define-slot="nav_posts" /> + <span metal:define-slot="content_bottom" /> + </div> + </div> + + </div><!-- #bd--> + + <span metal:define-slot="utility" /> + <span metal:define-slot="before_ft" /> + <span metal:define-slot="ft" /> + <span metal:define-slot="after_ft" /> + + </div><!--#page--> + + <span metal:define-slot="after_page" /> + <span metal:define-slot="wp_footer" /> + +</body> +</html> + +</div> + +<span metal:use-macro="page" comment="Don't remove this, or you get... nothing!" /> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/posts/home.php b/wp-content/themes/vanilla/blog-set/posts/home.php new file mode 100644 index 000000000..9079753c6 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/posts/home.php @@ -0,0 +1,55 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +global $vnl_width, $vnl_nesting, $vnl_template, $vnl_utility, $tpl; +$vnl_width = (isset($vnl_width)) ? $vnl_width : vanilla_get_option("vnl_grid_width"); +$vnl_nesting = (isset($vnl_nesting)) ? $vnl_nesting : vanilla_get_option("vnl_grid_nesting"); +$vnl_template = (isset($vnl_template)) ? $vnl_template : vanilla_get_option("vnl_grid_template"); +$vnl_utility = (isset($vnl_utility)) ? $vnl_utility : vanilla_get_option("vnl_utility_nesting"); +// Page-specific overides +//$vnl_width = "yui-d3"; +//$vnl_nesting = "yui-gd"; +//$vnl_template = "yui-t2"; +//$vnl_utility = "yui-bg"; + +// create a new PHPTAL template object +$template = new PHPTAL( vanilla_get_template('posts/home.html') ); +$template->cleanUpCache(); + +$tpl["page"] = array( + "width" => $vnl_width, + "nesting" => $vnl_nesting, + "template" => $vnl_template, + "utility" => $vnl_utility, + "body_class" => sandbox_body_class(false), + "bd_class" => $vnl_width." ".$vnl_template +); + +get_header(); + +cfct_loop(); +cfct_misc('nav-posts'); + +get_footer(); + +// Execute the PHPTAL template +vanilla_output_page($template); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/posts/posts-default.php b/wp-content/themes/vanilla/blog-set/posts/posts-default.php new file mode 100644 index 000000000..92f8ede34 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/posts/posts-default.php @@ -0,0 +1,54 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +get_header(); + +global $vnl_width, $vnl_nesting, $vnl_template, $vnl_utility; +// Page-specific overides +//$vnl_width = "yui-d3"; +//$vnl_nesting = "yui-gd"; +//$vnl_template = "yui-t2"; +//$vnl_utility = "yui-bg"; + +?> + <div id="bd" class="<?php echo($vnl_width." ".$vnl_template) ?> hfeed"> +<?php + +vanilla_widget_block("Breadcrumbs"); + +vanilla_yui_grid('Top'); +vanilla_widget_block('Content Top'); + +?> + +<div id="content"> +<?php + cfct_loop(); + cfct_misc('nav-posts'); +?> +</div><!--#content--> + +<?php + +vanilla_widget_block('Content Bottom'); +vanilla_yui_grid('Bottom'); +get_footer(); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/posts/search.html b/wp-content/themes/vanilla/blog-set/posts/search.html new file mode 100644 index 000000000..d71a2f336 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/posts/search.html @@ -0,0 +1,90 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<div metal:define-macro="page" tal:omit-tag=""> + +<span tal:define="file php:vanilla_get_template('hooks.html')" + metal:use-macro="${file}/loader" tal:comment="All the 'hook' slots." /> +<span tal:define="file php:vanilla_get_template('header/' . vanilla['header']['tpl_file'])" + metal:use-macro="${file}/loader" tal:comment="All the header slots." /> +<span tal:define="file php:vanilla_get_template('loop/' . vanilla['loop']['tpl_file'])" + metal:use-macro="${file}/loader" tal:comment="All the loop slots." /> +<span tal:define="file php:vanilla_get_template('misc/nav-posts.html')" + metal:use-macro="${file}/loader" tal:comment="The nav_posts slot." /> +<span tal:define="file php:vanilla_get_template('vanilla-utility.html')" + metal:use-macro="${file}/loader" tal:comment="All the utility block slots." /> +<span tal:define="file php:vanilla_get_template('footer/' . vanilla['footer']['tpl_file'])" + metal:use-macro="${file}/loader" tal:comment="All the footer slots." /> +<span tal:define="file php:vanilla_get_template('widgets/' . vanilla['search']['tpl_file'])" + metal:use-macro="${file}/loader" tal:comment="The search form slot." /> + +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> <!-- have to put language back in here. --> +<head profile="http://gmpg.org/xfn/11"> + <span metal:define-slot="head" /> +</head> +<body class="${vanilla/page/body_class}"> + + <span metal:define-slot="before_page" /> + + <div id="page"> + + <span metal:define-slot="before_hd" /> + <span metal:define-slot="hd" /> + <span metal:define-slot="sub_header" /> + <span metal:define-slot="before_bd" /> + + <div id="bd" class="${vanilla/page/bd_class} hfeed"> + + <span metal:define-slot="breadcrumbs" /> + + <div tal:define="file php:vanilla_get_template('vanilla-grid.html')" + metal:use-macro="${file}/vanilla_grid" tal:omit-tag=""> + <div metal:fill-slot="content" tal:omit-tag=""> + <span metal:define-slot="content_top" /> + + <h1 class="page-title">${structure vanilla/loop/search_title | vanilla/page/search_title}</h1> + <p tal:condition="vanilla/loop/search_message">${vanilla/loop/search_message}</p> + + <span metal:define-slot="loop" /> + <span metal:define-slot="nav_posts" /> + <span metal:define-slot="content_bottom" /> + </div> + </div> + + </div><!-- #bd--> + + <span metal:define-slot="utility" /> + <span metal:define-slot="before_ft" /> + <span metal:define-slot="ft" /> + <span metal:define-slot="after_ft" /> + + </div><!--#page--> + + <span metal:define-slot="after_page" /> + <span metal:define-slot="wp_footer" /> + +</body> +</html> + +</div> + +<span metal:use-macro="page" comment="Don't remove this, or you get... nothing!" /> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/posts/search.php b/wp-content/themes/vanilla/blog-set/posts/search.php new file mode 100644 index 000000000..046d934ef --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/posts/search.php @@ -0,0 +1,63 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +global $vnl_width, $vnl_nesting, $vnl_template, $vnl_utility, $tpl; +$vnl_width = (isset($vnl_width)) ? $vnl_width : vanilla_get_option("vnl_grid_width"); +$vnl_nesting = (isset($vnl_nesting)) ? $vnl_nesting : vanilla_get_option("vnl_grid_nesting"); +$vnl_template = (isset($vnl_template)) ? $vnl_template : vanilla_get_option("vnl_grid_template"); +$vnl_utility = (isset($vnl_utility)) ? $vnl_utility : vanilla_get_option("vnl_utility_nesting"); +// Page-specific overides +//$vnl_width = "yui-d3"; +//$vnl_nesting = "yui-gd"; +//$vnl_template = "yui-t2"; +//$vnl_utility = "yui-bg"; + +// create a new PHPTAL template object +$template = new PHPTAL(vanilla_get_template('posts/search.html') ); +$template->cleanUpCache(); + +$s = get_query_var('s'); + +$search_title = '<a href="'.get_bloginfo('url').'/?s='.attribute_escape($s).'" title="">'.htmlspecialchars($s).'</a>'; + +$tpl["page"] = array( + "base_path" => CFCT_PATH, + "width" => $vnl_width, + "nesting" => $vnl_nesting, + "template" => $vnl_template, + "utility" => $vnl_utility, + "body_class" => sandbox_body_class(false), + "bd_class" => $vnl_width." ".$vnl_template, + "search_title" => sprintf(__('Search Results for: %s', 'carrington'), $search_title) +); + +get_header(); + +cfct_form('search'); + +cfct_loop(); +cfct_misc('nav-posts'); + +get_footer(); + +// Execute the PHPTAL template +vanilla_output_page($template); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/posts/style.css b/wp-content/themes/vanilla/blog-set/posts/style.css new file mode 100644 index 000000000..ff59ecd4b --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/posts/style.css @@ -0,0 +1,72 @@ +/* + +Theme Name: Vanilla Theme +Theme URI: http://www.vanillatheme.com +Description: A base theme for themers who really mean business. +Version: 0.5 beta +Author: Alister Cameron, Australis Media +Author URI: http://www.alistercameron.com +Tags: widgets, customizable, 3-column, 2-column, 1-column, framework, semantic, white, red, gray, carrington, hybrid, sandbox, tarski + +// This file is part of the Vanilla Theme for WordPress +// http://www.vanillatheme.com +// +// Copyright (c) 2008 Australis Media Pty Ltd. All rights reserved. +// http://www.australismedia.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +*/ + +/* Reset browser defaults */ +@import url('http://yui.yahooapis.com/3.0.0pr1/build/cssreset/reset.css'); +@import url('http://yui.yahooapis.com/3.0.0pr1/build/cssfonts/fonts.css'); +@import url('http://yui.yahooapis.com/3.0.0pr1/build/cssgrids/grids.css'); + +/* including for compatibility */ + +.alignleft { + float:left; + margin-right:1em; + margin-bottom:1em; +} +.alignright { + float:right; + margin-left:1em; + margin-bottom:1em; +} +.aligncenter { + display: block; + margin-left: auto; + margin-right: auto; +} +.wp-caption { + border: 1px solid #ddd; + text-align: center; + background-color: #f3f3f3; + padding-top: 4px; + margin: 10px; + /* optional rounded corners for browsers that support it */ + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} +.wp-caption img { + margin: 0; + padding: 0; + border: 0 none; +} +.wp-caption p.wp-caption-text { + font-size: 11px; + line-height: 17px; + padding: 0 4px 5px; + margin: 0; +} \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/posts/tag.php b/wp-content/themes/vanilla/blog-set/posts/tag.php new file mode 100644 index 000000000..17f0a92a2 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/posts/tag.php @@ -0,0 +1,41 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +get_header(); + +$tag_title = '<a href="'.get_tag_link(intval(get_query_var('tag_id'))).'" title="">'.single_tag_title('', false).'</a>'; + + +?> + +<div id="content"> + <h1 class="page-title"><?php printf(__('Tag Archives: %s', 'carrington'), $tag_title); ?></h1> + +<?php + cfct_loop(); + cfct_misc('nav-posts'); +?> +</div><!--#content--> +<?php +get_sidebar(); + +get_footer(); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/single/README.txt b/wp-content/themes/vanilla/blog-set/single/README.txt new file mode 100644 index 000000000..d9e9d2dbb --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/single/README.txt @@ -0,0 +1,27 @@ +## single/ + +### Overview + +This directory holds top level templates for "single" post pages. These files should call `the_header()`, `the_sidebar()`, `the_footer()`, `cfct_loop()` and `cfct_comments()` to include the other parts of the page. + +A "default" template is required, and will be used when there are no other templates that match a given comment. This could be because no other templates have been created, or because the context doesn't match the templates that are available. + + +### Supported Override Filenames + +- single-default.php (or default.php) +- author-{username}.php +- cat-{slug}.php +- role-{rolename}.php +- tag-{slug}.php + + +### File Descriptions + +Standard context file naming will work for files in this directory. Here are some specific examples. + +- *default.php* - Used when there are no other templates that match for a given context. +- *author-{username}.php* - Used to show a post authored by a specific user. For example, a template with a file name of _author-jsmith.php_ would be used posts by user _jsmith_. Any WordPress username can take the place of {username} in the file name. +- *cat-{slug}.php* - Used to show a post in a given category. The category is matched by the "slug" - for example posts in category "General" (with a category slug of "general") could use a template of _cat-general.php_. +- *tag-{slug}.php* - Used when a post has a given tag. The tag is matched by the "slug" - for example a post tagged with "News" (with a tag slug of "news") could use a template of _tag-news.php_. + diff --git a/wp-content/themes/vanilla/blog-set/single/single-default.html b/wp-content/themes/vanilla/blog-set/single/single-default.html new file mode 100644 index 000000000..333ad0283 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/single/single-default.html @@ -0,0 +1,111 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<div metal:define-macro="page" tal:omit-tag=""> + +<span tal:define="file php:vanilla_get_template('hooks.html')" + metal:use-macro="${file}/loader" tal:comment="All the 'hook' slots." /> +<span tal:define="file php:vanilla_get_template('header/' . vanilla['header']['tpl_file'])" + metal:use-macro="${file}/loader" tal:comment="All the header slots." /> +<span tal:define="file php:vanilla_get_template('vanilla-utility.html')" + metal:use-macro="${file}/loader" tal:comment="All the utility block slots." /> +<span tal:define="file php:vanilla_get_template('footer/' . vanilla['footer']['tpl_file'])" + metal:use-macro="${file}/loader" tal:comment="All the footer slots." /> + +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> <!-- have to put language back in here. --> +<head profile="http://gmpg.org/xfn/11"> + <span metal:define-slot="head" /> + + <style type="text/css"> + /* Style overides for this specific page */ + #sidebar-top{ + width: 27.67em; *width: 26.9em; + margin-left: 0; + } + .sidebar-inner{ + background-position: right top; + margin-left: -1em; + width: 195px !important; + } + .sidebar-outer{ + background-position: left top; + margin-left: 0; + width: 170px !important; + } + </style> +</head> +<body class="${vanilla/page/body_class}"> + + <span metal:define-slot="before_page" /> + + <div id="page"> + + <span metal:define-slot="before_hd" /> + <span metal:define-slot="hd" /> + <span metal:define-slot="sub_header" /> + <span metal:define-slot="before_bd" /> + + <div id="bd" class="${vanilla/page/bd_class} hfeed"> + + <span metal:define-slot="breadcrumbs" /> + + <div tal:define="file php:vanilla_get_template('vanilla-grid.html')" + metal:use-macro="${file}/vanilla_grid" tal:omit-tag=""> + <div metal:fill-slot="content" tal:omit-tag=""> + <span metal:define-slot="content_top" /> + + <span tal:repeat="entry vanilla/entries" tal:omit-tag=""> + <span tal:condition="php: repeat.entry.number == '1'" tal:omit-tag=""> + <span tal:define="file php:vanilla_get_template('content/' . vanilla['content']['tpl_file'])" + metal:use-macro="${file}/loader" tal:comment="The content slot." /> + <span tal:define="file php:vanilla_get_template('comments/' . vanilla['comments']['tpl_file'])" + metal:use-macro="${file}/loader" tal:comment="The comments slot." /> + + <span metal:define-slot="content" /> + <div id="comments"> + <span metal:define-slot="comments" /> + </div><!--#comments--> + </span> + </span> + + <span metal:define-slot="content_bottom" /> + </div> + </div> + + </div><!-- #bd--> + + <span metal:define-slot="utility" /> + <span metal:define-slot="before_ft" /> + <span metal:define-slot="ft" /> + <span metal:define-slot="after_ft" /> + + </div><!--#page--> + + <span metal:define-slot="after_page" /> + <span metal:define-slot="wp_footer" /> + +</body> +</html> + +</div> + +<span metal:use-macro="page" comment="Don't remove this, or you get... nothing!" /> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/single/single-default.php b/wp-content/themes/vanilla/blog-set/single/single-default.php new file mode 100644 index 000000000..df7e194b3 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/single/single-default.php @@ -0,0 +1,57 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +global $vnl_width, $vnl_nesting, $vnl_template, $vnl_utility, $tpl; +$vnl_width = (isset($vnl_width)) ? $vnl_width : vanilla_get_option("vnl_grid_width"); +$vnl_nesting = (isset($vnl_nesting)) ? $vnl_nesting : vanilla_get_option("vnl_grid_nesting"); +$vnl_template = (isset($vnl_template)) ? $vnl_template : vanilla_get_option("vnl_grid_template"); +$vnl_utility = (isset($vnl_utility)) ? $vnl_utility : vanilla_get_option("vnl_utility_nesting"); +// Page-specific overides +//$vnl_width = "yui-d3"; +$vnl_nesting = "yui-gf"; +$vnl_template = "yui-t2"; +//$vnl_utility = "yui-bg"; + +// create a new PHPTAL template object +$template = new PHPTAL(vanilla_get_template('single/single-default.html') ); +$template->cleanUpCache(); + +$tpl["page"] = array( + "width" => $vnl_width, + "nesting" => $vnl_nesting, + "template" => $vnl_template, + "utility" => $vnl_utility, + "body_class" => sandbox_body_class(false), + "bd_class" => $vnl_width." ".$vnl_template +); + +get_header(); + +the_post(); +cfct_content(); + +comments_template(); + +get_footer(); + +// Execute the PHPTAL template +vanilla_output_page($template); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/vanilla-grid.html b/wp-content/themes/vanilla/blog-set/vanilla-grid.html new file mode 100644 index 000000000..13a00d148 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/vanilla-grid.html @@ -0,0 +1,162 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<metal:block define-macro="vanilla_grid"> + <!-- macro: vanilla_grid --> + <tal:block condition="php: vanilla['page']['template'] != 'yui-t7'"> + <tal:block condition="php: vanilla['page']['nesting'] == 'yui-g'"> + <metal:block use-macro="vanilla_grid_outer_single_col" /> + </tal:block> + <tal:block condition="php: vanilla['page']['nesting'] != 'yui-g'"> + <metal:block use-macro="vanilla_grid_outer_multi_col" /> + </tal:block> + </tal:block> + <tal:block condition="php: vanilla['page']['template'] == 'yui-t7'"> + <tal:block condition="php: vanilla['page']['nesting'] == 'yui-g'"> + <metal:block use-macro="vanilla_grid_inner_single_col" /> + </tal:block> + <tal:block condition="php: vanilla['page']['nesting'] != 'yui-g'"> + <metal:block use-macro="vanilla_grid_inner_multi_col" /> + </tal:block> + </tal:block> +</metal:block> + + + +<metal:block define-macro="vanilla_grid_sidebars_top"> + <!-- macro: vanilla_grid_sidebars_top --> + <tal:block condition="php: in_array(vanilla['page']['nesting'], array('yui-gd', 'yui-gf'))"> + <tal:block condition="php: in_array(vanilla['page']['template'], array('yui-t1', 'yui-t2', 'yui-t3'))"> + <div class="yui-u first sidebar sidebar-inner"> + <span metal:define-slot="secondary_sidebar" /> + </div><!-- .yui-u first --> + </tal:block> + <tal:block condition="php: NOT in_array(vanilla['page']['template'], array('yui-t1', 'yui-t2', 'yui-t3'))"> + <div class="yui-u first sidebar sidebar-outer"> + <span metal:define-slot="primary_sidebar" /> + </div><!-- .yui-u first --> + </tal:block> + <tal:block condition="php: vanilla['page']['template'] == 'yui-t7'"> + <div class="yui-u first sidebar sidebar-outer"> + <span metal:define-slot="secondary_sidebar" /> + </div><!-- .yui-u first --> + </tal:block> + </tal:block> +</metal:block> + + + +<metal:block define-macro="vanilla_grid_sidebars_middle"> + <!-- macro: vanilla_grid_sidebars_middle --> + <tal:block condition="php: in_array(vanilla['page']['nesting'], array('yui-gc', 'yui-ge'))"> + <div class="yui-u sidebar sidebar-inner"> + <tal:block condition="php: in_array(vanilla['page']['template'], array('yui-t1', 'yui-t2', 'yui-t3'))"> + <span metal:define-slot="secondary_sidebar" /> + </tal:block> + <tal:block condition="php: NOT in_array(vanilla['page']['template'], array('yui-t1', 'yui-t2', 'yui-t3'))"> + <span metal:define-slot="primary_sidebar" /> + </tal:block> + <tal:block condition="php: vanilla['page']['template'] == 'yui-t7'"> + <span metal:define-slot="secondary_sidebar" /> + </tal:block> + </div><!-- .yui-u --> + </tal:block> +</metal:block> + + + +<metal:block define-macro="vanilla_grid_sidebars_bottom"> + <!-- macro: vanilla_grid_sidebars_bottom --> + <tal:block condition="php: vanilla['page']['nesting'] == 'yui-g'"> + <div class="yui-b sidebar sidebar-outer"> + <span metal:define-slot="primary_sidebar" /> + <span metal:define-slot="secondary_sidebar" /> + </div><!-- .yui-b --> + </tal:block> + <tal:block condition="php: in_array(vanilla['page']['template'], array('yui-t1', 'yui-t2', 'yui-t3'))"> + <div class="yui-b sidebar sidebar-outer"> + <span metal:define-slot="primary_sidebar" /> + </div><!-- .yui-b --> + </tal:block> + <tal:block condition="php: NOT in_array(vanilla['page']['template'], array('yui-t1', 'yui-t2', 'yui-t3'))"> + <div class="yui-b sidebar sidebar-outer"> + <tal:block tal:condition="php: vanilla['page']['nesting'] != 'yui-g'"> + <span metal:define-slot="secondary_sidebar" /> + </tal:block> + </div><!-- .yui-b --> + </tal:block> +</metal:block> + + + +<metal:block define-macro="vanilla_grid_inner_single_col"> + <!-- macro: vanilla_grid_inner_single_col --> + <div id="content" class="yui-g"> + <span metal:define-slot="content" /> + <span metal:use-macro="vanilla_grid_sidebars_middle" /> + </div><!-- .yui-g --> +</metal:block> + + + +<metal:block define-macro="vanilla_grid_inner_multi_col"> + <!-- macro: vanilla_grid_inner_multi_col --> + <div class="${vanilla/page/nesting}"> + <span metal:use-macro="vanilla_grid_sidebars_top" /> + <div id="content" class="class" tal:attributes="class php: (in_array(vanilla['page']['nesting'], array('yui-gc', 'yui-ge'))) ? 'yui-u first' : 'yui-u'"> + <span metal:define-slot="content" /> + </div><!-- .yui-u first --> + <span metal:use-macro="vanilla_grid_sidebars_middle" /> + </div><!-- .yui-g --> +</metal:block> + + + +<metal:block define-macro="vanilla_grid_outer_single_col"> + <!-- macro: vanilla_grid_outer_single_col --> + <div class="yui-main"> + <div class="yui-b"> + <div id="content" class="yui-g"> + <span metal:define-slot="content" /> + <span metal:use-macro="vanilla_grid_sidebars_middle" /> + </div><!-- .yui-g --> + </div><!-- .yui-b --> + </div><!-- #yui-main --> + <span metal:use-macro="vanilla_grid_sidebars_bottom" /> +</metal:block> + + + +<metal:block define-macro="vanilla_grid_outer_multi_col"> + <!-- macro: vanilla_grid_outer_multi_col --> + <div class="yui-main"> + <div class="yui-b"> + <div class="${vanilla/page/nesting}"> + <span metal:use-macro="vanilla_grid_sidebars_top" /> + <div id="content" class="class" tal:attributes="class php: (in_array(vanilla['page']['nesting'], array('yui-gc', 'yui-ge'))) ? 'yui-u first' : 'yui-u'"> + <span metal:define-slot="content" /> + </div><!-- .yui-u --> + <span metal:use-macro="vanilla_grid_sidebars_middle" /> + </div><!-- .yui-g --> + </div><!-- .yui-b --> + </div><!-- #yui-main --> + <span metal:use-macro="vanilla_grid_sidebars_bottom" /> +</metal:block> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/vanilla-utility.html b/wp-content/themes/vanilla/blog-set/vanilla-utility.html new file mode 100644 index 000000000..5e4404ac5 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/vanilla-utility.html @@ -0,0 +1,68 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<metal:block define-macro="loader"> + + <metal:block define-macro="vanilla_utility_4_col"> + <div class="yui-g first"> + <div class="yui-u first"> + <span metal:define-slot="utility_1" /> + </div> + <div class="yui-u"> + <span metal:define-slot="utility_2" /> + </div> + </div> + <div class="yui-g"> + <div class="yui-u first"> + <span metal:define-slot="utility_3" /> + </div> + <div class="yui-u"> + <span metal:define-slot="utility_4" /> + </div> + </div> + </metal:block> + + + <metal:block fill-slot="utility"> + ${php: do_action('vanilla_before_utility_grid')} + <tal:block define="global utl_class php: str_replace('gg','g', vanilla['utility'])" /> + <tal:block condition="php: vanilla['utility'] != 'yui-ga'"> + <div id="utility" class="yui-d3 ${utl_class}"> + <tal:block use-macro="vanilla_utility_4_col" condition="php: vanilla['utility'] == 'yui-gg'" tal:comment="4 utility columns" /> + <tal:block condition="php: vanilla['utility'] != 'yui-gg'"> + <div class="yui-u first"> + <span metal:define-slot="utility_1" /> + </div> + <div class="yui-u"> + <span metal:define-slot="utility_2" /> + </div> + <tal:block condition="php: vanilla['utility'] == 'yui-gb'" tal:comment="3 utility columns"> + <div class="yui-u"> + <span metal:define-slot="utility_3" /> + </div> + </tal:block> + </tal:block> + </div><!-- #utility --> + </tal:block> + ${php: do_action('vanilla_after_utility_grid')} + </metal:block> + +</metal:block> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/widgets/all-categories.html b/wp-content/themes/vanilla/blog-set/widgets/all-categories.html new file mode 100644 index 000000000..068f179ce --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/widgets/all-categories.html @@ -0,0 +1,40 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<div metal:define-macro="loader" tal:omit-tag=""> + +<div metal:fill-slot="all_categories"> + <!-- slot: all-categories --> + <div id="all-categories"> + <span class="heading">Categories:</span> + <ul> + ${php: wp_list_categories('title_li=')} + </ul> + </div><!-- #all-categories --> + +</div> + +</div> + + + + + diff --git a/wp-content/themes/vanilla/blog-set/widgets/all-categories.php b/wp-content/themes/vanilla/blog-set/widgets/all-categories.php new file mode 100644 index 000000000..a7395541b --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/widgets/all-categories.php @@ -0,0 +1,13 @@ +<?php +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +function widget_all_categories() { + // Nothing here - the TAL template does everything. +} + +function widget_all_categories_control() {} + +//vanilla_register_widget(function name, description); +vanilla_register_widget('widget_all_categories', 'Categories Menu'); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/widgets/branding.html b/wp-content/themes/vanilla/blog-set/widgets/branding.html new file mode 100644 index 000000000..92bdfe5bd --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/widgets/branding.html @@ -0,0 +1,36 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<div metal:define-macro="loader" tal:omit-tag=""> + +<div metal:fill-slot="branding"> + <!-- slot: branding --> + <strong id="blog-title"><a href="${php: bloginfo('url')}/" title="Home" rel="home">${php: bloginfo('name')}</a></strong> + <p id="blog-description">${php: bloginfo('description')}</p> + +</div> + +</div> + + + + + diff --git a/wp-content/themes/vanilla/blog-set/widgets/branding.php b/wp-content/themes/vanilla/blog-set/widgets/branding.php new file mode 100644 index 000000000..be0f90b9c --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/widgets/branding.php @@ -0,0 +1,13 @@ +<?php +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +function widget_branding() { + // Nothing here - the TAL template does everything. +} + +function widget_branding_control() {} + +//vanilla_register_widget(function name, description); +vanilla_register_widget('widget_branding', 'Site-wide branding elements'); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/widgets/navigation.html b/wp-content/themes/vanilla/blog-set/widgets/navigation.html new file mode 100644 index 000000000..a31d9c6c6 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/widgets/navigation.html @@ -0,0 +1,55 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<div metal:define-macro="loader" tal:omit-tag=""> + +<div metal:fill-slot="navigation"> + <!-- slot: navigation --> + <div id="navigation"> + <ul> + ${php: wp_list_pages('title_li=')} + <li tal:condition="vanilla/widget/navigation/user_id" class="secondary"> + <a href="${php: site_url('wp-login.php?action=logout', 'login')}">${php: __('Log Out', 'carrington')}</a> + </li> + <li tal:condition="not: vanilla/widget/navigation/user_id" class="secondary"> + <a href="${php: site_url('wp-login.php', 'login')}">${php: __('Log In', 'carrington')}</a> + </li> + <li class="secondary"> + ${php: wp_register('','')} + </li> + <span tal:condition="exists: vanilla/entries" tal:repeat="entry vanilla/entries" tal:omit-tag=""> + <li class="secondary" tal:condition="php: repeat.entry.number == '1' && (is_single() || is_page())"> + <a href="${structure entry/edit_link}">${php: __('Edit Page')}</a> + </li> + </span> + </ul> + </div><!-- #navigation --> +</div> + +</div> + + + + + + + + diff --git a/wp-content/themes/vanilla/blog-set/widgets/navigation.php b/wp-content/themes/vanilla/blog-set/widgets/navigation.php new file mode 100644 index 000000000..5f8354231 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/widgets/navigation.php @@ -0,0 +1,17 @@ +<?php +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +function widget_navigation() { + global $tpl, $user_ID; + + $tpl["widget"]["navigation"] = array( + "user_id" => ($user_ID) ? 1 : 0 + ); +} + +function widget_navigation_control() {} + +//vanilla_register_widget(function name, description); +vanilla_register_widget('widget_navigation', 'Main menu/navigation'); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/widgets/search-form.html b/wp-content/themes/vanilla/blog-set/widgets/search-form.html new file mode 100644 index 000000000..46d60056e --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/widgets/search-form.html @@ -0,0 +1,34 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<div metal:define-macro="loader" tal:omit-tag=""> + +<div metal:fill-slot="search_form" tal:omit-tag=""> + <!-- slot: search_form --> + <form method="get" id="search" action="${vanilla/search/action | vanilla/widget/search_form/action}"> + <div> + <input type="text" id="search-input" name="s" value="${vanilla/search/query | vanilla/widget/search_form/query}" size="15" /> + <input type="submit" name="submit_button" value="${vanilla/search/submit_text | vanilla/widget/search_form/submit_text}" /> + </div> + </form> +</div> + +</div> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/widgets/search-form.php b/wp-content/themes/vanilla/blog-set/widgets/search-form.php new file mode 100644 index 000000000..19206a5cb --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/widgets/search-form.php @@ -0,0 +1,18 @@ +<?php +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +function widget_search_form() { + global $tpl; + $tpl["widget"]["search_form"] = array( + "action" => get_bloginfo('home'), + "submit_text" => __('Search', 'carrington'), + "query" => wp_specialchars(stripslashes($_GET['s']), true) + ); +} + +function widget_search_form_control() {} + +//vanilla_register_widget(function name, description); +vanilla_register_widget('widget_search_form', 'Search Form'); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/blog-set/widgets/site-credits.html b/wp-content/themes/vanilla/blog-set/widgets/site-credits.html new file mode 100644 index 000000000..c9b635477 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/widgets/site-credits.html @@ -0,0 +1,31 @@ +<div tal:replace=""> +<!-- + +Australis Media has made the contents of this file +available under a CC-GNU-GPL license: + + http://creativecommons.org/licenses/GPL/2.0/ + + A copy of the full license can be found as part of this + distribution in the file LICENSE.TXT + +You may use the Vanilla theme software in accordance +with the terms of that license. You agree that you are +solely responsible for your use of the Vanilla theme +software and you represent and warrant to Australis Media +that your use of the Vanilla theme software will comply +with the CC-GNU-GPL. + +--> +</div> + +<div metal:define-macro="loader" tal:omit-tag=""> + +<div metal:fill-slot="site_credits" tal:omit-tag=""> + <!-- slot: site_credits --> + <p id="generator-link">${structure vanilla/widget/site_credits/generator_link}</p> + <p id="developer-link" tal:condition="php: cfct_get_option('cfct_credit') == 'yes'">${structure vanilla/widget/site_credits/developer_link}</p> +</div> + +</div> + diff --git a/wp-content/themes/vanilla/blog-set/widgets/site-credits.php b/wp-content/themes/vanilla/blog-set/widgets/site-credits.php new file mode 100644 index 000000000..6c0af66e2 --- /dev/null +++ b/wp-content/themes/vanilla/blog-set/widgets/site-credits.php @@ -0,0 +1,17 @@ +<?php +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +function widget_site_credits() { + global $tpl; + $tpl["widget"]["site_credits"] = array( + "generator_link" => __('Proudly powered by <a href="http://wordpress.org/" title="WordPress" rel="generator">WordPress</a></span> and <span id="theme-link"><a href="http://carringtontheme.com" title="Carrington theme for WordPress">Carrington</a></span>.', 'carrington'), + "developer_link" => sprintf(__('<a href="http://crowdfavorite.com" title="Custom WordPress development, design and backup services." rel="developer designer">%s</a>', 'carrington'), 'Carrington Theme by Crowd Favorite') + ); +} + +function widget_site_credits_control() {} + +//vanilla_register_widget(function name, description); +vanilla_register_widget('widget_site_credits', 'Site Credits (footer)'); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/comments.php b/wp-content/themes/vanilla/comments.php new file mode 100644 index 000000000..e675e801b --- /dev/null +++ b/wp-content/themes/vanilla/comments.php @@ -0,0 +1,22 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +cfct_comments(); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/footer.php b/wp-content/themes/vanilla/footer.php new file mode 100644 index 000000000..91f4ea234 --- /dev/null +++ b/wp-content/themes/vanilla/footer.php @@ -0,0 +1,22 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +cfct_footer(); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/functions.php b/wp-content/themes/vanilla/functions.php new file mode 100644 index 000000000..016cdd1b9 --- /dev/null +++ b/wp-content/themes/vanilla/functions.php @@ -0,0 +1,193 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +// ini_set('display_errors', '1'); +// ini_set('error_reporting', E_ALL); + +load_theme_textdomain('carrington'); + +define('CFCT_DEBUG', false); +define('CFCT_PATH', trailingslashit(TEMPLATEPATH)); +define('CFCT_HOME_LIST_LENGTH', 5); +define('CFCT_HOME_LATEST_LENGTH', 250); + +define('VANILLA_DEBUG', false); + +$cfct_options = array( + 'cfct_home_column_1_cat' + , 'cfct_home_column_1_content' + , 'cfct_latest_limit_1' + , 'cfct_list_limit_1' + , 'cfct_home_column_2_cat' + , 'cfct_home_column_2_content' + , 'cfct_latest_limit_2' + , 'cfct_list_limit_2' + , 'cfct_home_column_3_cat' + , 'cfct_home_column_3_content' + , 'cfct_latest_limit_3' + , 'cfct_list_limit_3' + , 'cfct_about_text' + , 'cfct_ajax_load' + , 'cfct_credit' + , 'cfct_posts_per_archive_page' + , 'cfct_wp_footer' +); + +// master template variable used by PHPTAL +$tpl = array( + "base_path" => CFCT_PATH, + "child_path" => trailingslashit(STYLESHEETPATH) +); + +/* ======================================== + PHPTAL + ======================================== */ + +define('PHPTAL_PHP_CODE_DESTINATION', CFCT_PATH."cache/"); +require_once(CFCT_PATH.'PHPTAL.php'); + +/* ======================================== + Carrington + ======================================== */ + +include_once(CFCT_PATH.'_carrington/admin.php'); +include_once(CFCT_PATH.'_carrington/templates.php'); +include_once(CFCT_PATH.'_carrington/utility.php'); +include_once(CFCT_PATH.'_carrington/ajax-load.php'); +include_once(CFCT_PATH.'_carrington/sandbox.php'); + +/* ======================================== + Vanilla + ======================================== */ + +include_once(CFCT_PATH.'_vanilla/core.php'); +include_once(CFCT_PATH.'_vanilla/grid.php'); +include_once(CFCT_PATH.'_vanilla/blocks.php'); +include_once(CFCT_PATH.'_vanilla/widgets.php'); +include_once(CFCT_PATH.'_vanilla/hooks-filters.php'); +include_once(CFCT_PATH.'_vanilla/minify-html.php'); +include_once(CFCT_PATH.'_vanilla/phptal-custom.php'); + +/* ======================================== + Custom Widgets + ======================================== */ + +include_once(CFCT_PATH.'_custom-widgets/custom_widgets.php'); + +/* ======================================== + Hybrid + ======================================== */ + +define('HYBRID_IMAGES', CFCT_PATH.'images'); +define('HYBRID_CSS', CFCT_PATH.'css'); +define('HYBRID_JS', CFCT_PATH.'js'); +define('HYBRID_SWF', CFCT_PATH.'swf'); + +include_once(CFCT_PATH.'_hybrid/breadcrumbs.php'); +include_once(CFCT_PATH.'_hybrid/comments.php'); +include_once(CFCT_PATH.'_hybrid/deprecated.php'); +include_once(CFCT_PATH.'_hybrid/filters.php'); +include_once(CFCT_PATH.'_hybrid/functions.php'); +include_once(CFCT_PATH.'_hybrid/get-the-image.php'); +include_once(CFCT_PATH.'_hybrid/get-the-video.php'); +include_once(CFCT_PATH.'_hybrid/hooks.php'); +include_once(CFCT_PATH.'_hybrid/media.php'); +include_once(CFCT_PATH.'_hybrid/primary.php'); +include_once(CFCT_PATH.'_hybrid/secondary.php'); +include_once(CFCT_PATH.'_hybrid/template-functions.php'); +include_once(CFCT_PATH.'_hybrid/widgets.php'); + +if(is_admin()) : + include_once(CFCT_PATH.'_hybrid/admin/theme-settings.php'); + include_once(CFCT_PATH.'_hybrid/admin/meta-box.php'); +endif; + +$hybrid_settings = get_option('hybrid_theme_settings'); + +/* ======================================== + Tarski + ======================================== */ + +// Path constants +define('TARSKICLASSES', CFCT_PATH.'_tarski/classes'); +define('TARSKIHELPERS', CFCT_PATH.'_tarski/helpers'); +define('TARSKIDISPLAY', CFCT_PATH.'_tarski/display'); +define('TARSKICACHE', CFCT_PATH.'_tarski/cache'); +define('TARSKIVERSIONFILE', 'http://tarskitheme.com/version.atom'); + +// Core library files +//require_once(CFCT_PATH.'_tarski/core.php'); +//require_once(CFCT_PATH.'_tarski/classes/options.php'); +//require_once(CFCT_PATH.'_tarski/classes/asset.php'); + +// Admin library files +//if (is_admin()) { +// require_once(CFCT_PATH.'_tarski/classes/version.php'); +// require_once(CFCT_PATH.'_tarski/classes/page_select.php'); +// require_once(CFCT_PATH.'_tarski/helpers/admin_helper.php'); +//} + +// Various helper libraries +//require_once(CFCT_PATH.'_tarski/helpers/template_helper.php'); +//require_once(CFCT_PATH.'_tarski/helpers/content_helper.php'); +//require_once(CFCT_PATH.'_tarski/helpers/author_helper.php'); +//require_once(CFCT_PATH.'_tarski/helpers/tag_helper.php'); +//require_once(CFCT_PATH.'_tarski/helpers/widgets.php'); + +// API files +//require_once(CFCT_PATH.'_tarski/api/hooks.php'); +//require_once(CFCT_PATH.'_tarski/api/constants_helper.php'); +//include_once(CFCT_PATH.'_tarski/api/deprecated.php'); + +// Launch +//require_once(CFCT_PATH.'_tarski/launcher.php'); + +cfct_load_plugins(); + +function cfct_init() { + cfct_admin_request_handler(); + if (cfct_get_option('cfct_ajax_load') == 'yes') { + cfct_ajax_load(); + } +} +add_action('init', 'cfct_init'); + +/* ======================================== + Header JS Additions + ======================================== */ + +wp_enqueue_script('jquery'); +wp_enqueue_script('carrington', get_bloginfo('template_directory').'/js/carrington.js', 'jquery', '1.0'); + +/* ======================================== + Footer Additions + ======================================== */ + +function cfct_wp_footer() { + echo get_option('cfct_wp_footer'); + cfct_get_option('cfct_ajax_load') == 'no' ? $ajax_load = 'false' : $ajax_load = 'true'; + echo ' +<script type="text/javascript"> +var CFCT_URL = "'.get_bloginfo('url').'"; +var CFCT_AJAX_LOAD = '.$ajax_load.'; +</script> + '; +} +add_action('wp_footer', 'cfct_wp_footer'); +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/header.php b/wp-content/themes/vanilla/header.php new file mode 100644 index 000000000..8ccac4763 --- /dev/null +++ b/wp-content/themes/vanilla/header.php @@ -0,0 +1,22 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +cfct_header(); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/image.php b/wp-content/themes/vanilla/image.php new file mode 100644 index 000000000..cfd90205b --- /dev/null +++ b/wp-content/themes/vanilla/image.php @@ -0,0 +1,77 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } +if (CFCT_DEBUG) { cfct_banner(__FILE__); } + +?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes() ?>> +<head profile="http://gmpg.org/xfn/11"> + <title><?php wp_title( '-', true, 'right' ); echo wp_specialchars( get_bloginfo('name'), 1 ); ?></title> + <meta http-equiv="content-type" content="<?php bloginfo('html_type') ?>; charset=<?php bloginfo('charset') ?>" /> + + <link href="<?php bloginfo('url') ?>" rel="home" /> + + <link rel="alternate" type="application/rss+xml" href="<?php bloginfo('rss2_url') ?>" title="<?php printf( __( '%s latest posts', 'sandbox' ), wp_specialchars( get_bloginfo('name'), 1 ) ) ?>" /> + <link rel="alternate" type="application/rss+xml" href="<?php bloginfo('comments_rss2_url') ?>" title="<?php printf( __( '%s latest comments', 'sandbox' ), wp_specialchars( get_bloginfo('name'), 1 ) ) ?>" /> + <link rel="pingback" href="<?php bloginfo('pingback_url') ?>" /> + + <link rel="stylesheet" type="text/css" media="screen, print, handheld" href="<?php bloginfo('template_url') ?>/css/typography.css" /> + <link rel="stylesheet" type="text/css" media="screen" href="<?php bloginfo('template_directory') ?>/css/image.css" /> + + <?php wp_head(); ?> +</head> + +<body class="<?php sandbox_body_class() ?>"> + +<?php if (have_posts()) : while (have_posts()) : the_post(); ?> + +<div id="header"> + <a href="<?php echo get_permalink($post->post_parent); ?>" rev="attachment">← back to “<?php echo get_the_title($post->post_parent); ?>”</a> +</div> + +<div class="previous-attachment"><?php previous_image_link() ?></div> + +<div id="content" class="figure"> + <div class="entry-attachment"> + <a href="<?php echo wp_get_attachment_url($post->ID); ?>"><?php echo wp_get_attachment_image( $post->ID, 'full' ); ?></a> + </div> + <div class="figure-info"> + <div class="caption"> + <h1 class="title"><?php the_title(); ?></h1> + <?php if ( !empty($post->post_excerpt) ) the_excerpt(); // this is the "caption" ?> + </div> + <div class="description"> + <?php the_content() ?> + </div> + </div> +</div> + +<div class="next-attachment"><?php next_image_link() ?></div> + +<div id="footer"> + <a href="<?php echo get_permalink($post->post_parent); ?>" rev="attachment">← back to “<?php echo get_the_title($post->post_parent); ?>”</a> +</div> + +<?php endwhile; else: ?> + + <p>Sorry, no attachments matched your criteria.</p> + +<?php endif; ?> +</body> +</html> \ No newline at end of file diff --git a/wp-content/themes/vanilla/images/arrow-bullet.gif b/wp-content/themes/vanilla/images/arrow-bullet.gif new file mode 100644 index 0000000000000000000000000000000000000000..ea4db5731cb029c1434b6dfcb03355bc3cefa187 GIT binary patch literal 46 zcmZ?wbhEHbWM*JxXkcUr42^mB?w#UK7DfgJMg|=Q1_lO@3<DFZOP<6uRt9ST^-Ku) literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/attachment-next.png b/wp-content/themes/vanilla/images/attachment-next.png new file mode 100644 index 0000000000000000000000000000000000000000..154beb13a4404e09ace44e033c2d6a0a14f7fb98 GIT binary patch literal 49164 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 BJjeh5 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/attachment-previous.png b/wp-content/themes/vanilla/images/attachment-previous.png new file mode 100644 index 0000000000000000000000000000000000000000..59d5917aef4c09e0dd7c27d856d76de1177df515 GIT binary patch literal 49222 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 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/audio.png b/wp-content/themes/vanilla/images/audio.png new file mode 100755 index 0000000000000000000000000000000000000000..7ba54e4139b151dbf1b521a72e0301385aa7a2a1 GIT binary patch literal 637 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tGSkfJR9T^zbpD<_bdda}R zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfgvHlC&cyl@82IkeSGoa z#kzItA3l88-r0Wh=FNkLkL=#F_xy!R2^~pJ-S#>K26GoIoi<};(YCVVr%(3nn3Qxg zZ27Wf8z0PBbLzw8YtQd}czEu`fzMA?zxaA?=i0e@KR@|)|G>|8PyYY^|32@2FUYke zL4Lvi@dJjK80ohR42<QTE{-7;w{k9VPGVBzVZFe>DD*Av>dig>b=eC_-l(n>OP#l$ ziRt@(qgSDqrzBO@@t<!M+Ph>*$BEP+_J+018BrTmebpbh&InD~%^YOs+3%r~$^RtU zqf@NqZnJyo!QhlME7ncSm(FF*^=o`MlkM$VufXZ%3Uc<_?Vc<07iVk^x+611MCRqI zXLF9*wACp{E3`)KTX#J`d6RTg=I^;?oMn;I*5AA?+VHjZhHl5}T{@e$M;tx+-8e9x z;lee=aM_Hc2JZuApQITgd}R;wIZCyf9^B%aE3{_qMH`mJZ5%wy{{EcJ(!-z-l;C{M zGXB;va|ad9bFBgT&T{VVZ<%r(J=c{UX_roqzrxtCB*6OH^Rlm%3%+tNO#RMWb3adh zx(Cy%&CCiDrp&XmpPZDzUd1rg;dRIHM+{q-Rv&y(#k=L0R|0=bZis?u$FFsQ)eCku zFHx{+natvMqapL~3u6T#lM9C*aavrnSE!Bp{~+#!-TdRLYp48P&%n&^`<02Tg1y&s Q1_lNOPgg&ebxsLQ0H$;^MgRZ+ literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/author-comment.jpg b/wp-content/themes/vanilla/images/author-comment.jpg new file mode 100644 index 0000000000000000000000000000000000000000..63e9913872c32d6b1123cd35c80e73cd9131663a GIT binary patch literal 23642 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 Dq)P!a literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/avatar.gif b/wp-content/themes/vanilla/images/avatar.gif new file mode 100755 index 0000000000000000000000000000000000000000..e9fd2b394efa36359cd8b0c76cf4b6025b7898cc GIT binary patch literal 5794 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 F1^`DqL4g1O literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/background.jpg b/wp-content/themes/vanilla/images/background.jpg new file mode 100755 index 0000000000000000000000000000000000000000..48eb0565a0cc591a9374cbf40b3d569b255999d5 GIT binary patch literal 27450 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 MM@+A0$p60y02|rTUjP6A literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/blank.gif b/wp-content/themes/vanilla/images/blank.gif new file mode 100755 index 0000000000000000000000000000000000000000..e565824aafafe632011b281cba976baf8b3ba89a GIT binary patch literal 43 scmZ?wbhEHbWMp7uXkcLY4+e@qSs1w(7#VaJ7#J8pG7L;iK8y_302gHn2><{9 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/bullet.gif b/wp-content/themes/vanilla/images/bullet.gif new file mode 100755 index 0000000000000000000000000000000000000000..e8f306714ee59e05b99a03d17d08f4b298925538 GIT binary patch literal 52 zcmZ?wbhEHbWMSZ8XkcV8vvdFd|G(l-7DfgJMg|=Q1_lO@3<DE)Pe0p&n%fBzR<<!Q GSOWk<#0<{> literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/by-crowd-favorite.gif b/wp-content/themes/vanilla/images/by-crowd-favorite.gif new file mode 100644 index 0000000000000000000000000000000000000000..09097aa949e93f975c325d08517c3ebb5892635f GIT binary patch literal 2010 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 RyYH&L?|xwFB*4I64FEafWfK4Z literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/by-crowd-favorite.png b/wp-content/themes/vanilla/images/by-crowd-favorite.png new file mode 100644 index 0000000000000000000000000000000000000000..ba7d36d8a18ddc8e0c4b807c9abf0d2d23c46c9c GIT binary patch literal 2691 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 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/comment.gif b/wp-content/themes/vanilla/images/comment.gif new file mode 100644 index 0000000000000000000000000000000000000000..1a84c4e646404cb6b60b98df309f570e746e7ceb GIT binary patch literal 370 zcmZ?wbhEHb6ky<ExN6Gq_3PJ9pFZu_vE$8~H?Lm3+PrylTU*=DpFhjX%d4uYYHDhl zo10gxSg~&1x~{ISJ$v?S-MaPp^XG>S9hxv<!u|XApFVxMY}v9obLPyOH*e#{jSCkp z?C<ZNHEY)D)vFI2IIw8ZqMJ8wK6>=%?c28v4Gs16_3z)m-?VAdw{PG6{rk6k`SL%1 z{(S!Y`Pi{zKYsl9_3PK)zkh%K{{8*?_b*?*l$MtM|NsBpyLSwDf#OdVMg|5`1|5(p zke?XX`VUAQG?^vY?-sNyX!TMq##tp=Q#l1#9NXKfD)+~UtW_}J3DA-_bF^$_=!!;1 z!Qh=y8~5yc8gx;p#6Xw9sI^U9*PxzH(7@10n~_ml+o(fJm78BegPmdGlxdwNVgi2R zA`I%QblD9w6s0tMO@)MY%49sG<+k{0>X`8I>^r(&M`!b~qdM{&3a5|hC|&e*WUvMR D+t;p3 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/comments-divider.gif b/wp-content/themes/vanilla/images/comments-divider.gif new file mode 100644 index 0000000000000000000000000000000000000000..bd66ad2d2dce6d86ee3971cbcf2000c739985f6b GIT binary patch literal 6855 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 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/css.png b/wp-content/themes/vanilla/images/css.png new file mode 100755 index 0000000000000000000000000000000000000000..bbf7d57d0d0429574284d41a3bcdc662d9690881 GIT binary patch literal 595 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tGSkfJR9T^zbpD<_bdda}R zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfgvHlC&YE%zJ1@meS7!r zU21CTmoHyFe*F02#fyLc{ylp1==ZPRfB*h{^5n^#J9oZ+|NiF9n;$=Z{QUXz<jIp) zu3Y)>;lqOm4-Owb{OZ-KWy_YGJ9qBJjT;jtOxU$+*Oo0?o;`b3RaN!>|Nq0!*3JOA zwj{_e_&<KY5ECQ)mVtrM*VDx@q~cc2g`0fM3IYy+qK*P0H(#y$|9`q{fObT_(K3E@ z1C!h9yS7=}e!S`RaR)_3x3%m~r&a!8p2>cNOVDM#NFD3+h_ux&m_J-7Jp166m&Hdm zi>+cT4X3mwGBB-u{i^c<*MUMeE~hvixdW1hKOEX4c3wSg;=A{<7E|tvgqRge+ttGF zDg5bN&cv7>s`vUUa}1Z5;NumIcNmg$dUo<euB?A2(6~vb@I`?9qoWdyHu}!uT-Q5T zmZ)$@H!jQk^k;d)0aNY%hAC%L{gR@bgcO=PIpzp9@^yLCb#NFQ<5S9SD&%5%IcfI1 z21CEyePWvy<|_CbD6~xDRD8bN(~(!w#F%aVq6W_0HVlp|`;2c{@Z3>N4hSvny~xA$ zIM*m`cEUpuhg<I%9w)F>gnVWRbuH*UEU~}jAAikP$>dLLS<d>ouh`3`?p^Y2Jp(ht Z-_`bOBs4ypWnf@n@O1TaS?83{1OO<QBqRU; literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/default.png b/wp-content/themes/vanilla/images/default.png new file mode 100755 index 0000000000000000000000000000000000000000..72ea539317a1074daee29a5a4d4775949180846e GIT binary patch literal 548 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tGSkfJR9T^zbpD<_bdda}R zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfgw4-C&YE%zJ0%c{r>jt z+uy%`-@SYH<;$0U|Ngyr@#5phk3W9=`1$ka_wU~yJ$iKK&YdSup1gVUCN(wn<jIp) zu3UNW;K8d`ua+%acKGn&8#iuz`0(M}xpU8+J)1CL!j>&t{{R19RaLcX*RKEn|EpJ5 zO<-VPP%H`Z3;s_4Fw8%AL6L!hQOeWBF{I*F&V}34niY5)0+)tv?DAW%Xwlw3|HJ(l zE;?BH+q{{|aP<3&Qu+7p@lk?&+5Mb`-aDJ_*?;EO(0MUcz|V)lhP&y8J=ZT59=-i( zSA%u8oM>Da&c)gk)!5<CESan$C?xPh(y$<MV^o8&MnzKG49AnTx3_tED<qUunsMAv z&$)b+^^Uq67wbOJ62p@$EUn^#pLHh2G!*aC@iypv`L;NmY1OJndh6%)iW)QagsyA2 zBPG~4!(t)Fi(P#igB1^&rYS7Q-JQU<smE8i@tUMl0UINKkH9ll#?;8FOK~lqB`iL5 zm@R!EBkaL;q@_W6+9df0%3V#n_NlVD@?>S%ybN;a5!PW=x*W%FuYTsef+lg1nGe3| bA7Bt^w3~iqWoaG*0|SGntDnm{r-UW|<0K7b literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/divider-ornament-wide-dark.gif b/wp-content/themes/vanilla/images/divider-ornament-wide-dark.gif new file mode 100644 index 0000000000000000000000000000000000000000..9ac3e5cad8f1240e19ffe80b73732900c7c1051b GIT binary patch literal 1844 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 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/divider-ornament-wide.gif b/wp-content/themes/vanilla/images/divider-ornament-wide.gif new file mode 100644 index 0000000000000000000000000000000000000000..a1653d68b5e787b9192f3382ee326401ec613edc GIT binary patch literal 971 zcmZ?wbhEHbtY_k6c;?IS@87?_fB*jZ^XJp2PrrZvzJBA@uV24@{P^+Z%a^ZTzyAFB z^YiD=-@bkO{{8#8^A~U2y#4Xx$D6nA%$_~_*|X>8FI@Wn|Nr^(7w_GFaR0%>+js6h ze*EOci<i%zzj*lQ@!fm(@7%rj^y#x(x9`4u`Rd7&rw<-Jnl)?I!-tP<-?{hf`SZt5 zp1ykZ>e1sTFJHdAckjWYM~`pazH{@|?KyMi+`W7M`HL4%pFMl<;NkuI51%}JcIWQ> z8#iygc=6)pt5<X9&b@a1=98ySZ{NQA;^oUbckVrS@aX!Dn>TOXzH#H$ty^~<KY4Qh z{)6YwpWnUr;OVpH4<9~$_wF6TpahCPSr{1@d>M2=t^>sh1N;95-=^l4*0%PJ&aUpB z-oE|`6DLicGIiSY8I$?=X3m{Af5E~<i<c~2wtU6PRjb#mT{6da!@A8|wr<<LW9P2j zd-kp~Y!(xn?W?M~(N{>QS!Cb2^A|2&x_ss8wdpp#2gF)VA3fQ0`s~^3PoF(sqb2a_ zjexa)(uWVsO3XUnemF4yl4kz<pSeUwz#`evk&jzID`r9pBUd{|fWi!ejY>yVIWkgQ z7@Crq1muP92+Ta--Xy3VyvXNZgQ_<#Pr|8`4Nc2@#d!-Jy}8h^{5+eF)C_^D14kHz z+$VEcZrE~+ak&IvLV!W(DqhxbeT@sJN>?|Du^njon$WN&lG*6Os-un#Z`qmh|34Pu zaC+c!cef-*iok~Q_xz0Y&Kv?h5eK*rcl5G!Y}jG=_&8&N3!j6^0p`;)<QXoUsWfho zna?P~7|^ig<)sz=^Vb=)l(x!=ZtBfe;*r^y%D1C1``F{H@2|0HEs<L{>qo|g1=hvq zdUkGl^1N@cy;uUv$A^box&OaC9sWLcciGEJQ?<q089!%Uo@cvSCFjQaxZPQ<O<U_i zSN@o572CC?{?bB*Zz>P`t)5<S@Z~tR<bjX-mMcL_nk%ME@>J_J5%Q2t-7(Qkq%<SY zg|BtT1t-?276A_bmT*k4`@Y44-}cjy&*!Y)E=YddYf)u1+x&Dzv5&zmmYI(yxQJyw zndqSw$)RC+@<G@c!`V;FI1IePGM`S3NL!hzwc*63r_&SKG@s2#5ORJtGow$4gTWdA DtDx2C literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/divider-ornament.gif b/wp-content/themes/vanilla/images/divider-ornament.gif new file mode 100644 index 0000000000000000000000000000000000000000..54f9a957ccb38c346f549b33cbcdbb3a54c1e0cb GIT binary patch literal 778 zcmZ?wbhEHb{KLS>@Qi`s|NsBzFI>8C@$$Lz7cXAAGH1@5S+i#S{Q2|m-@kwU{Fyy_ z_PlxX9z1+>=kEPy&tH7{^!fIkdtbkPyLbP=lPAx<eEE9+{=-|h?>>3@?8VDh@85rT z{pRh*PoEw>di?wM?++h8UbuMa{)0!KKYzJ<@4=(TPu{(I|Lgbfg$ozXojZ5&;>F*; z|9JZB`LAEUUcGuffByWpZ{Pj-^Y`YhJ8#~+U9e!m-@pI9|M>Cs>(^Vi@4Wx;@yE}f zuV24;@bK~T7ccMJz4z_g_qXrfzkC1T>$h(oKYsfC=g*==i(bBZ{qxtaZ{NTF`0?}0 zmoK+(-+lP#$?ZFLpFe-`{rmU3_wK)V@$&cYKbJ0FefI46hYuegKYse@^XDHwe*F6N z`|*>fuU^0T_U+rtm#-M;2o!&^fNj$Ok)SwXVE^C1(A3=0+ScCD+11_C+t=U9%sgSr z)M?Xa%$zlQ&fKYtO_S#>Ub1xA@)b+enwgjw7jUsLEMQe{W?8v&*X})gdo&nUGqtcb zZ92-p&2V_fzH=*#88|L6=reFKI5EgFs4|2zXfv=sW^iXPVbEl7V~Ao9WH4nAVNhfU zW#DI!W{_hDW=LW9z|6qOpvQ28VF9B9AA=5q0AmB=0bvFo1`CD-Ob1vQgc%YT4VW5) z7-Sd>7#NrwSQ&&EIv5_XI50B^Fz7HQFgEZq94L60#kydI3IkVKZ3G*`bpZy01)o?Z zu&6W0nWY{oIT@tNAgkfYw1DZ7vO7bN3DXTn!2@C)4C$K;LOKK*_?wv+?|fia;IOa# z#-Ol}ou5H~!Ir@!ko^D`gUr*eme<>O8Kz{<SnFGTY-Y%mWeiaqn_7LuR$pL9DTzC~ sYiss}CNYg>)z_g7OPfOW-#feeyIuf;%TGDKJr*k$ADgVs#lm0>0QNO(zW@LL literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/doc.png b/wp-content/themes/vanilla/images/doc.png new file mode 100755 index 0000000000000000000000000000000000000000..11c135a1df9bb4c66f2472461b1d54dd774f7d98 GIT binary patch literal 1822 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 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/dropdown-divider.gif b/wp-content/themes/vanilla/images/dropdown-divider.gif new file mode 100644 index 0000000000000000000000000000000000000000..6c28dc507b7e1c4b7f7fbe39d20b8c3117c04d48 GIT binary patch literal 13213 zcmZ?wbhEHbJi)-ou$h73_3PKqpFe;6`0@Sw_ix|6ef|3NOP4O4J9qBXsZ$KtfZ~7d z2;Tq&m&B692;Tr3`-+0Z<m}WEg{0K<%sgAA_q+EiDP*SDDutW+8u%7Cr)Fe&R28KL zSNVk`S7j$#rYPClaoJQ@Rpb`rrj{fsROII56<bx<DkY}mC#72D6<dLX^_3LBN=mYA zl^j753Lrb3^NUgyO!N$OlMReb6im$YjLeNJ&CPTaf)h&=yb|*ijLa2`3=GT_jEt-d z4XsQJ6`(-Lj!Qv7!KNrB%__*n4QgjmN}8=wMoCG5mA-y?dAVM>v0i>ry1t>MrKP@s zk-m|UZc$2_ZgFK^Nn(X=Ua>O75STeGsl~}fnFS@8`FRQ;a}$&DOG|8(lt30iZB>9; zRFPN!w<xbz5A0FB<osOyio^naLp=k1xXB>HD-sK=oQqNuOY)0C^7C`-Al`S&EJ`iU zFUl@fa1J)M0qI0hgs{~Hu0Pc!u_V>b$iTot*T7QO$Rxzj+{(bn%FsLtNk2ppns(p( zl+3hBEZPmttc=W{+L07NwcF@}0s<*uz@ZNE6Ph@o082@RhgU&qQ4Tm-Qj+ykb5e6t z^Gb^K4fPCB!z?A)DlNY#H?hPnGdD3kRX;s5%|;&~h}V4(R|mPc*>TzEgA*Mn0m7UP zk4l;_pbn#n*>FQgErACGF^tjRA|{mJYDR+#9u&kdMuUr(P=c!&4K8?45W^S^E@DCn zu4Xj2;6XtQV>Gyk2_?9i(cppy1u=}#;36iJ;A%#L3mz22Fh+xmm{5YN84WIYP!Piy z4K89r39e=|xZpuS3}ZC7hzTXQn$h5b2L&;V(cmH`l;CPcg9{!M#4tvKi<nS?s~HV0 zcu)|-7!59BLJ6*BG`QeFK@4LwxQGcQxSG-6f(HdLjM3mCCY0c6MuQ6;6vQw_gNv9@ zf~y$~E_hH7!x#-NVnPY7W;D3qK|u^-G`NTfCAgZ=;DQGQF^tjRA|{mJYDR+#9u&kd zMuUr(P=c!&4K8?45W^S^E@DCnu4Xj2;6XtQ18;C~A$EGC=B3ywl`GlXG5-Je_s{QN zKYx7x_Vvr>Pai+LfA{vy>sK#dJb(7|$>T>4AKbrp_s;EGH*Z|OcJ<2TOBXMkKX>-b z=~E|996xsS$l*f=5A5H!chBx!J9li~wsp(qO&d3?U$=J6>QyUOEMK;C$>K!|7tEhG zch2ltGiOYnHg(G6NfRgZ_x1L4cXf8Ox3#u3H#IiY*VWckS5;P&mz9<j7Zn!d=jG;P zXJuxjr=_MOCnYAt$Hm4(M@2@2hlPd&2L%TB`}z8KdwF`eySchJJ2^Vo+u7PMSXo+_ zo0*yz8yOnt>*?xfYiVkztEs9eD=8|-%gM?}OG!$Ii;0Q|3keGF^YQX<b8&L8v$3); zGchtSDE?$&U}yNxpaa?|1KLo-z+x+K!jgHzk1WO=?-k4$l0E0KOjwsSTZ}>H_!h<+ pKi1x6zwm#b0+RuYRP)X!eP-Fa=B=5MS@kQzc~;Lfr%nb2YXHxJbc_H1 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/exe.png b/wp-content/themes/vanilla/images/exe.png new file mode 100755 index 0000000000000000000000000000000000000000..907756d609d44ef6a1cce8c0b422c5b6bc667042 GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tGSkfJR9T^zbpD<_bdda}R zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfk7z1C&cyt|NjjQ4F?V! zU|`tKz`*eT|Nk&!Nk0Y#2DXwQzu^BMz_5A$5|Es;r;B4q#jT_SRR#%-@B<z48w?DL z9x^Aeo~dBaWA*XT5pdbYBqpJ7ZeoQEXXt?j;T|oCP=_`qr_4zK*OC<(7?^k%9$jNS VTKe-iHv<C$gQu&X%Q~loCIF=sNLc^? literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/feed-icon.gif b/wp-content/themes/vanilla/images/feed-icon.gif new file mode 100755 index 0000000000000000000000000000000000000000..a8a86b62a68963bd6e292f5bc281d81bd3ea3d3e GIT binary patch literal 1322 zcmZ?wbhEHb6k`x$`2L^a>$0R@i`-t-8@-(x_i<j_%X+i_e}4Uab>r8@%sUC%Pdl96 zS4%%D)_PW;{<P8Zewxm|Z||O#=>7lt`bCG``!?ejRffN3n?9+ty&b3hW47J@fB(Kt zHoupu^=*>=t1kOLJBywa>A#wk^kt^=x2fh2vUDG1X})N)``E7gtl9Qmlg_h7+pmWf z{+MBLKS}B91jCQrrvHBb{QKegzxQ|lzI}KrM(y`p>rcI=&q@t`uLyiUJMsH;%dgX& ze@@Z=*lYQz+w@_R!;1?2U+<nhnpg09p4FF$X3tyge$BCb-){1}#rD@ctDmzhzfCdu zKGouNkNuzdmLEDy9&`tO>@j=WWc;er?tWL`kLi{_XIVXMuzA&D`(=XJ+kVHd6U-j9 zIJ|8#dfROLy3gU~EQ`l^df#VQ{FtcmcwXWE-``*NIJ}<`^?iHY?+eTRe|h=u?cJ{j z=lp$f{_m}wzvo&1eRlrGzK(Cp;+|Gne_UPl>-dycwFW<zhyMHW{!YBci+1bZ8`D0` z3477(`L0p>bC=GWTJ^7+Yp+MB|NHUvZG+ygjj6vkr9UdM`n4+f@5iTK_RsycDDYjo z_2V41SKYQRO4PqhF!{V9=ViIZpSMqcZ7co%>&xpVi=Stgz38<4v%mJsj;?2232&N> zA6A*a?)CpV!TfEf&AnuupQjf5IJNZm*@ge!KYW%W{iw$3V}s25tuwx_PW#kt_I5$h z_YL{KPfUJYr}uMB>YK&2U)L0TnPl;8vgxmt;V)|pf3DAbQf2e~+{O>hTA$iAe=G|4 z&~Ef|X~3@wEB}6Z|MUL2e=jcndwt_}l)|@J&cCj1d);mQd0yn}I)gVY#($n%_%*}m z|KC6V|NZ^_=*-<%rT^bQe3@we^Thm5i<5uNviLeL;7zm1#~#y9eWuSVjDAkh`O>ZT zzSZ#8G@UP<ns2KW{#{=F{pj4^>ytju^!?VO`n=imNxt^KA76gXbNc`D%lGXKKPDUg zm}dI_$ERO2^nY(kebZ|DpxEi-rp|xAzrR~M;s391-<L)G`}y^0d-#(=-G856{Fr6& zC`t4`7%2W^VPs(V&!EG=z`y{?6AT>x8UC{h9y;nMsG_FkGvm=gXJO;`EfzrzY8?(* z5lRLON!||PT>f!46gDNYbZ6zeI7oIpowJRJDUR{e<=3ueN}JtY1SBnKn=H#>S`~HB zEm+0QuFO$OldWf>iu06^zy}YGEtdJW>DO$<Ra3k9tbW+`o=WMSrzEN}cV?o)YWu3p zcRhwiEpL`<$W6H6#nv@zP3eB2Oxq6!ZwqMqY)Y^;I@rRHswt-9p!zmWwmNcg>aA%v zjtgpX?Ox)L_9kdf($iat0@Fedt<4YYD-a4uVPcJC_>ifwxj%#<&Ei%{teak|IHTwU zpUNU829~vF+YWAiz};uh`-tP_$^zzA_KBOt0{<5UYZfo$Tb1ymd*b7ZyaM;!^CAxA zospA_<bU(RP;2!fj$bVcorG0%Cpzj{>}lqxJLkj9$N1uhaF3<xgau8KpHm-nNgb{^ za9B5W&G8P^oj;hJIdp9bj*2Un81z|1u042K{`?PP4%uaACWq?iwiGprC4ETni2gSv z=`3es%2p@)H7Qe1F;~VE@JL)`5$LndTJVvHmE{3rkJ8^3gHFb;El$qrTvsNvu)aK? z<j#M$Lhw8T^OwLwia&Fd_}L`>D70|+ML2Sss|OVHGB}uA@Mx8BaOUA{I-}?!5YQ2D xRBUxk+nwsf2_G2PIX`rAi;A&2wlU49Sa88nW5I$ZuJ9Q4f`giMQ6d5i)&N}?&g=jH literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/footer-gradient.gif b/wp-content/themes/vanilla/images/footer-gradient.gif new file mode 100644 index 0000000000000000000000000000000000000000..a20829939f3b99f18137e417b210cbdfc6c10066 GIT binary patch literal 612 zcmZ?wbhEHbWMZgic*els9~@<6>*O04p`@ZNB`qf_rzoeOWMl7YXkuaK=<eX`X=-lc z;OwERZ|vgX=j|Wr8xU?_WM*h=u5W0nXJDeJtmfq#;^QBtqi3Y1uC1!BrJ$(d;T>db zX65D;;NtFU@8n@-VQXS;t*vX|<rm@?6zLZfVe8=P?CxW2=WJ=?C@m{*Y-**ct!HEJ zV&~|ltg4}<V<0E5<P#9CXJ~3<VyU5}tD>gq=IQV47iwW;@9rJw=^O0s6`-lD@95&C zuBoG@p`)y#F0ZI8EhFdY6RfRg=;0IO9~^06?O<kU=jiICprmSUW#{VQCnKle<m&D0 z<`WPS9T*zJFbII+PZqE%bU-91P8iq^HUu{Xv#_|hXlwiXv$7f)v9UQjOH2Fsh>9{Z zJ2@E`n43#UNlH38Iyjh_>FV0q85$}pySYh7@bZd?n3xC)3knJead4QL>gdSIDk*Vu zD=K<<`TAN}d3tJTG2Ug=)YQ{sXIEF(*XQI^P~hR=;<C5*_6`UL4Ajt&m*?a2^DB7p z;lV=pepzda0*j(09)fZ<IuQzvO74B^{CY7n44Ii&7!_D&7z8e25mI3YVw!Mh)6)gh S4U$jI@!Y)3cXlHKgEasNA8a20 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/grey-to-white-gradient.png b/wp-content/themes/vanilla/images/grey-to-white-gradient.png new file mode 100644 index 0000000000000000000000000000000000000000..b51819971172f24d53827e2cf8eaeaf625df9bae GIT binary patch literal 47223 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 Hl+XkKEx)b0 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/header-gradient.gif b/wp-content/themes/vanilla/images/header-gradient.gif new file mode 100644 index 0000000000000000000000000000000000000000..af8185028dcfb8bdd8633f265a15016fb8a38243 GIT binary patch literal 330 zcmZ?wbhEHbWMVL9xXQo~5E5-;@9OOC>+I&^=;EbkU}9io=IZJ1;^FJ+;pgrZ;N}(J z7Zl;->g^jCZee9_@8s?i5N>W|=iw7%Y-(j{VQXk&VPtBlZ)j@g=w@POZE52e7#d?^ z@8am{WngUX9~|ZFALbhvVP)&&=@aA=5N2j+Yie%e?H_9E;OgZU;^iCS7Zhpl<Y8^+ z?CBe<t8Z*!?cm_->FymE5FF(n9LazeDE?#t%j<whke?XX(jEBN9at`8C<LrMmSiZQ zH1V)t=M=An0$fXj)`qPY?=+ctCXMT8QlW*45J!uHfrN>a9Dk$2<gHNx0+N!Nnv9IH svU+;T%F@z?hWz|OLTYNFqU!2WQX(Sa;$mX*@@#Ap60EES296BY0KRTWjsO4v literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/header-texture.jpg b/wp-content/themes/vanilla/images/header-texture.jpg new file mode 100644 index 0000000000000000000000000000000000000000..67351dbf114883b43a926ed3982bb3ba0164f863 GIT binary patch literal 47802 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 LKV`G}|K9`vil%hu literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/html.png b/wp-content/themes/vanilla/images/html.png new file mode 100755 index 0000000000000000000000000000000000000000..8a4ebd194ecb706a7695333624a05fc5e4a207b5 GIT binary patch literal 600 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tGSkfJR9T^zbpD<_bdda}R zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfgvHlC&YE%zI~~wso%bR zd-v|$moHx)J$m%<<HsjYp1gSR;@`i2fB*iybLY;FA3xr_dGq_%@9*EgpFDYT!h{J| zu3TBRY}u||yFPsQ@ZiCNpFe-TdiCn?;lnp>+&Fjc+?Fj{s;a7<J$v^5|NreeN7O;C zEeY}q{*NCp#KcIyWnf?o@^o<wskoJM`Rz6r1(AkCNztiOlGq;pd;jUpp&MsE>aBfx zd@+A_(*CNg>o?1W$Cz`sE}8SY&M^4HXZrvb2Y1cM1;;kH7j!;wcdlpfmp!dBIs1vq ze1_$ZIhY)brDirt-P)!rbW@t)xQwNT>qZxb;)D;4d>cP*<i8eW{*|rKtkgiyw_w8D zRnkkQS7-?ogc*yj`_DMNsrN+XyT&^WhGsm6Q(yHSd#uM15_&YK{nwSiGaOS=r|t@f za!XTC_w3;)i4C6?&&o3GrUjE%>2%AJ7p|4Eg&1`lkm1;)=yJ+gVZm0rj$NF|mL5;$ zu5CGJkRkEGH_)~5!X&1H2cq73DojxJi*({V+pu99pG)?mgKPCaF+4i#<g#JX2Db$U z8EZuC7$3g%vU%9DuioJ^YvNOe1apay(8~vowg?m!@Y*|eADnA(IqL3#HBS~^tvQ(2 g)qdum`T+*v3-<5qH~Sr7U|?YIboFyt=akR{068}>X8-^I literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/js.png b/wp-content/themes/vanilla/images/js.png new file mode 100755 index 0000000000000000000000000000000000000000..fd311e7d07de07dfdb27a8b82253d66a21c030c9 GIT binary patch literal 585 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tGSkfJR9T^zbpD<_bdda}R zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfgw4-C&YE%zJ1@mef$0E z_q%uRzI^%e;>C-9|Neda_%Ss#_3z)mj~+ex{{8!tCr|F&x%1=4kDot(zIpTJ<jIp) zu3UNW;K8d`uMQtRylmOB8#iuz`0(M}xpNaHOnCO}*_JI^s;a7X?b`Jp3_1n%Z!s`1 zD3%2I1%n0f5DfDVUQlFUV6^viaSW-rm2=_bv}OeXhd}i<g^Y#=4bH#+$KPc2V0j$9 zbI0;k8!VE(?zXeO)b+#A*rOwGW#p_<`Fe+k440iM3_U#M97SHQQ{Bz@jypTeI3e+f z@B^Q00fr6Jl$bf9rX3YrsM27d%x<Ti#-8BDWfvg8eLZXIH9ohKEPHAj3l*<3Zd$gp z;eY3HCdT}!%OtMwy0Er)6oxqHIdIHerYW_>;QJj*M&HW<@d5Hrj?8G-lv5-4(^QGs z@}rabg52Ai{%9#|NPEcnVwc&h$v*ilMi(k43(T0<Am`;F>B6*X71xs89Ez47mYg@c z+i1MzeT3{u<_A+Ez0O*yGU{tIOng^bf3JvH&*i6|xtyOL<1s-6Co^fibBy2E0v$C& zA3pfTXArltR?y{;ZRk&KgRb3kUg{~B|GJ>I|G|W#&Y#}LH!w2XnBgGU^m_XW1_lNO MPgg&ebxsLQ04t3kx&QzG literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/mail-icon.gif b/wp-content/themes/vanilla/images/mail-icon.gif new file mode 100755 index 0000000000000000000000000000000000000000..ca7645edabd2d528e83ddc53b3e6aae80e675ae4 GIT binary patch literal 1222 zcmZ?wbhEHb6k`x$_|Cxa_wV07fByXb{rmIhFZ=iJ|N8aouV25ueEs_7&6^)Te*F9Q z|G~pYj~_pN^5n_KkDnerescKm;k)-A{QUXz)2C0LKY#x4;p5k@-~Rpk_xjD7@85qu zfAR9ik6*iX?fUcQ@3ZGGK79Q2@ZrO^Z{NLn^X}!#S8w0Fd;9MFsZ*!!+`04S?Yr&U zw}1WiZO@)P_Z~ca`s~^J4<EmL`FiHenTr=MzI^ri+_`ga-n@PD_U(rcA3lEk_zeWU zzkC1w-TQanzklDod-t(p$DTfW{`b${4I4JDUAJ!Y)~(-v{P_Ik%lmgA@bS~9>(_5Q zd-m+dkMDne|Jk>1-;)<Fu3x|T=kLF3*Khp#^Y_uiN8i5xICuWS!Gj0So;`Qr!lh52 zKmYst_t&pK_wPSBb>{59e}C`Zz5D9r%b!1g-Mx43{re9;fB!yo`0&-6H}~w>_vOo% zhmW3|JbCiMg^L$1Ufi~A+x`OwzJB|@d(YmRw{EXlv*y*SSI=I)Jay{a=`&~6u3dZY z!TrZipWeB9@BV{_pFe-yx^?TTH*bIb`hDii+0C1`yng%k-~a#b-o5|!?Z>z8-_KvZ z{Q1kbd-or_ef##y=P!5f-QTf$&%H;FK7IRk@7}#1KYu-b^7PQ5!;c<4dj9<7pTB?i z9ys*=!-pqNpS^nZ`o@i0n>KB_bLZZ*8#jOd{`2tB<BJ!sefsqI!llcv-@JYC^7XS9 zFE(%9eCqU>>o;!x`t|$W`w#c;-+%M&?Slso?mxKy{P~MpckX`r{AJ~;RadTDxq17} zmMvR8eEfLl&iyA(pYGhX>+#cPTeof7v2*9sXD`2h|MBC;&;S4bGYnav_>%?fb{!B2 z$`cG6{~4M&Wjq2D7&wg+I5bWaC^WFBb1(!g@bEp{WD)bV!NBps@`Q+IF*+9#T1BOq zMF0F^<!NXVWt6y;(VU>Lf#*OG({IrpN1iqVh7yT_0~h?}T86SJJ2WOR@f~yt(R!E= z*f-V6m|;g^lLCj~L7gX+3l5%_P|*+DbVne^x4BWEiSdI|$Hk^tIkyQ>rU#t*oY<Pa zMtC$jY+zxWvBXoT@hFq0T*`t1Lx-aZQd^ql8n~*RW@J>9itYNOaHxsh-XtTdR9m8* zp{QwV#(|~6GXl0|bx2M0@^7(S5H*Es+9C#ZyV5r~LWv6wvvIl0RJ;<>p3WyDt|zcV zskv2Boi8q8afFgXLrc6{oGljvgTn?1o*;!49~xQO1Vq(D9w;7Un84h(!oekBn+gLb zV`IofPEqzL4u|>Vc>)*=TxFb&Gen6zIPAc9#^9uYzk*Pkj>eUSlPnoN2ibHEIxJvu z=9p5*F4Or(u#->Xjlv0y!iY=mKH`CwS_JZTFdUUudGLr^E;iOgfPc*#Ar`Hm96=v_ ba|=#oj?Hrd8TF&$L>QQN)ffgiFjxZsd$^a+ literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/ndash.gif b/wp-content/themes/vanilla/images/ndash.gif new file mode 100644 index 0000000000000000000000000000000000000000..3707e8b14fd149fe18db4d14ca8ab5f64689e30a GIT binary patch literal 13151 zcmZ?wbhEHb<Yy3KSj50EbLPzd|NlRI`gGH#O>f@3VSoX}|J)J20SYdOC5aKf0XFs( z1&PVosU-?Ysp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbW>1 zsj#ZZEyztRNmQuF&B-gas<2f`Ovz75waP2D0txFYDS(xfWZNn^f+Q3`b~@)5r7D={ z8R{k*7@H`VnCTgr8(Es0=_mvzmMC~7<|!DND;OCVm@60=Ss5BynHVZSfs!4Uf`Wog zQA(Oskc%7C&Z3kwTcwPWk^(Dz{qpj1y>er{{GxPyLrY6beFGzXBO~3Slr-Jq%Dj@q z3f;V7Wr!g#b6ir3lZ!G7N;32F6hP)CCgqow*eWT3EP~pq0JW$hu>fvSUa=n7qk75t zx%w4}1^R}12KsQ5L55c(7FanKr6!i-7lq{K=h#8K@0MAVTAp8&U98|7Y-|J4iJ}N$ zs|{R#s!L)?s-2O6frYMtrLK`th>?+%iHVh=c@&a<h$1xYzWFJcX_Xk-jjfD~t&A<9 z+L07NwcF@}0s<*uz@ZNE6Ph@o082@RhgU&qQ4Tm-Qj+ykb5e6t^Gb^K4fPCB!z?A) zDlNY#H?hPnGdD3kRX;s5%|;&~h}V4(R|mPc*>TzEgA*Mn0m7UPk4l;_pbn#n*>FQg zErACGF^tjRA|{mJYDR+#9u&kdMuUr(P=c!&4K8?45W^S^E@DCnu4Xj2;6XtQV>Gyk z2_?9i(cppy1u=}#;36iJ;A%#L3mz22Fh+xmm{5YN84WIYP!Piy4K89r39e=|xZpuS z3}ZC7hzTXQn$h5b2L&;V(cmH`l;CPcg9{!M#4tvKi<nS?s~HV0cu)|-7!59BLJ6*B zG`QeFK@4LwxQGcQxSG-6f(HdLjM3mCCY0c6MuQ6;6vQw_gNv9@f~y$~E_hH7!x#-N zVnPY7W;D3qK|u^-G`NTfCAgZ=;DQGQF^tjRA|{mJYDR+#9u&kdMuUr(P=c!&4K8?4 z5W^S^E@DCnu4Xj2;6XtQ18;C~A$EGC=B3ywl`GlXG5-Je_s{QNKYx7x_Vvr>Pai+L zfA{vy>sK#dJb(7|$>T>4AKbrp_s;EGH*Z|OcJ<2TOBXMkKX>-b=~E|996xsS$l*f= z5A5H!chBx!J9li~wsp(qO&d3?U$=J6>QyUOEMK;C$>K!|7tEhGch2ltGiOYnHg(G6 zNfRgZ_x1L4cXf8Ox3#u3H#IiY*VWckS5;P&mz9<j7Zn!d=jG;PXJuxjr=_MOCnYAt z$Hm4(M@2@2hlPd&2L%TB`}z8KdwF`eySchJJ2^Vo+u7PMSXo+_o0*yz8yOnt>*?xf zYiVkztEs9eD=8|-%gM?}OG!$Ii;0Q|3keGF^YQX<b8&L8v$3);GchtSDE?$&U}yNx ppaa?+1KK#lz$`AY>&`!eQ=Y5$`n>Q}`0;=tS0-&<Mwc3cH2}-BSOEY4 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/pdf.png b/wp-content/themes/vanilla/images/pdf.png new file mode 100755 index 0000000000000000000000000000000000000000..90b7c8ec00cce9d6a32023fbc7549a63ee423e0c GIT binary patch literal 1711 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tGSkfJR9T^zbpD<_bdda}R zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGftew|C&cy7pFiKfe`jD| z`2YXEgoMPeU%vzd1b+Vf`R&`cuV26Z{{8#Mj~{<Oe!Otu!rQlRzkK=f_wU~iA3ps1 z^y&Qh^M5{k*v!E2J16J&`}dzdeR}!w<t7G(wG0eL85ll){`}A1|KGoVfBpQPnwx+8 z`0@Vz`+N56xyi@(<Hd`+cklk1J^N2=?B8|kUS(x9G&KDE@Zs;ieed-3|Ga&Bnt@^a z_U*4;z4~Zk^6&HK_wV07efspTo!!HS58oRZ{d948mX`MV_3KOqhR3F+FRZLyT3g={ z61sf(^6#3OKQS?L=gvKO^5o5%H^1B4r!p`c6c+y5*Z2F*onN<ZUE}23$iQ%(k+GbC z;h(<#4FQ2=jEox?82);D*D^5FF);j-moH>scwl5y&%jX4!0^+_>4~D^OEtCY8X89! z7%nn1|5~-`b4A4-0fArT<%bR(diLzuTR%TpS=oPnetQ@gPB1X++`03yj7$v!!@GCy z{?42C_4eJ#lP6zta}yR8zR1Gj>+Abv%9PH|&cEl*-7hHk`R47f7ccr582-F}|K`n` zM{;sc<>bCSfBwha{c=;&@9OH+3=Dt#{5Uu`rcIkx$-waQ<jIqajE@x*K5gB)c=6(& zt5*GXbNg}r{8R>pKeo0nl$6fM$vt@R;Fh-bT|GThQ&Vnk?h{f{=M@#_&6~H1f#HF; z_!}*)D;yjzt*nX}7_O+QUgP82$-v<6?|+<;v5JA=(W6IKu3YKq>3QVu|6EZqBqSt{ zfuV$f;hMYqC05oI3=Cf^Eq||Gea*?~VQlOo28JK6-+W%U@DKyT&z(E-85nXH7@k{N zK6&zF!h{Jo1O-25WvyjqzRu78&))uPZLNcY!=K#TH4F^bxw*gP=JNCN_x1H%Qc_ya z!g54R>}}tS{R|9$4j+z=j{fKCdzF{>wt&E|SFbj4a&BW_IDPu`d<KSxQc_pg*{{31 z|NHpyUtHY!_3O87+qRy8;l+y=XPKC0&z}8MN$D&j<KNoaxeN@K+1T{;^|$lz9Asel z)!qFzKmT8TeisA72}Z{AOib?z3;*%+|Ns9#^4P|O3=E76B|(0{|3@}p2>#Bl%D}*+ z>FMGaQgJKkhd+aX!i<~~3hdoXYHWI8d47?qcF~@x<^7cftlzrar(0WDY1}$~X71!I zMGx1oUf+9pzg>m;9=2r%7TW&t`*Ee>e5~3pZ((zBy~3cc>;Dww7R~%9wxUVmd`0$a zp5V*T(_30rrGNV1v%CD`=lK_=TOG~Ma~6rYx_y(8rFKb>#@k9Wf9-y=3oWvZ{h?;- zo*S%Z(*BS)bH;~%`uyh`<!$^+wwAi8+4^#t%=wow(aL!FPs<5S!R6s|`8En#G9H=j zGR^dDZT1ZP&u^!<2j=%iKYOF^z&f8#?ev<vdjF~q8GmfElKl8-cI9gMF1M82il=3+ z&vz8F9{zt!FZ1OF22IVtz`&Ia8?Ijx7kkfhSNyE{%6D(p1tplwe^{TBlak^R7;|UW zz6A?%wHNW{+a{$yf11k1vo3ksv{ODj|7SjE5a(%W{a*5cOPiDHlc_ZKCqqScQ*mWw zc6N64=RIbAetvb4oQ}qvoFc3|Jpu`gVJ8lr*FSx}e~|;jDu>V3Ezcf2dEgRy;4JU7 z3op`IRwlTF9yoW7H^^9Zh9F;nh{0wi#(>@#*;+pHWJ4L5#l^+7SI=J^HARY#)#1R= zr4NqZ`~P0RkCmrNe&@UQVw*dH3JL`euTuEox^9}j_UiYQXZ?8H!gyHO>{Js{W7fQR z^Jb~Jfyj@HlZFQvw5$Ktm9W}>JttwXfWd^dsA%hoPfQUqolH+WLmF5YXdK|0Ao68H g0^@W>CLV_4JGZLW&oP<9z`(%Z>FVdQ&MBb@0Oj7Q)c^nh literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/pingback.jpg b/wp-content/themes/vanilla/images/pingback.jpg new file mode 100755 index 0000000000000000000000000000000000000000..a9cf71e42b5b927a143cc70a5b9aeb0c982b667f GIT binary patch literal 1655 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 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/pre.png b/wp-content/themes/vanilla/images/pre.png new file mode 100755 index 0000000000000000000000000000000000000000..176002b5e54618091846e63c2098d8acc5fb02d3 GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0y~yVBiN~4rT@h1|E*o3I+xSmUKs7M+S!VC(K#9UNSH+ zNS3%plmzFem6RtIr7}3C<R_&nc;+Uirv{}arc@T5OtoQPV2}&&332`Z|Np0N-+%o2 z{rk_~_g}t!{qghT*Y9sXefjhE@4L@mXLA2)Wnf@X^K@|xskoJt(7@oP#wOxmY{$*A sp}0xYjV+BMA(=H;X3I8tg#!#8oD2){D%aUEFfcH9y85}Sb4q9e0CF})TmS$7 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/quotes.gif b/wp-content/themes/vanilla/images/quotes.gif new file mode 100755 index 0000000000000000000000000000000000000000..de9cc45cbab11b346ef5e0f38b622ee8a910a1be GIT binary patch literal 173 zcmZ?wbhEHb6k-r!*v!jdQ`~d<)`KPcPKLG3{`Bqp#^V<~Yo^pL+LYYCc>0z@Hy*#( zcj0E&>Rtc;|7QRL#h)yU3=F&sIv^g%3<j2{4W5w<7R6x`Zf|gW&gi^t>fLEREs30u z*fl06FuG(ZuHiP=82(nw=x$N(HN6T+uHI>_E}RAm>PF3<*|J!6m`h6t{OUXU;FCnd YvsLF`oA2=bvhHQ<XPZ2EcLoM)07LRg6#xJL literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/rss-button.gif b/wp-content/themes/vanilla/images/rss-button.gif new file mode 100644 index 0000000000000000000000000000000000000000..729fbcb29aeacb1dfdf015c46684ee60eaddae28 GIT binary patch literal 2208 zcmZ?wbhEHbY+{gN`2L^a+t$8c4=#M$Klj7jtar0B{yaE;C{FQe80VkY4=;vteOZ|I zveD_=ti&(tT8{a#eyKM4SfKd#(dBnJa=(_9e7<_<U8(lxLgjy}DlP`Gew~+jF@o=E zDEs$UkI#ki{hAc?Ay5AIjl<tsoxYc-ecnFt@5=J0$s%{+gr3E4?Dt`Rm?&~HiuZf~ z%WiM>3xUkvvc<n-ioT5F`jjsGHi_?b0?+#t{tsz_|GvEcy1MQ|m+zaMvp)6s{o2s{ zZB6};b&dbNzW;OWz>i6xUk)z%eQp20uOIHM>Uvve{e5l2-&gm4bh>_>5cK!;{cnp4 z{=B;P<K)^et7<<@js0`|;IFIuKQG9AlP&XkWzFeouU}_2d}_A;eeJ;adb5+Ij;G39 z-gkQc*fHV9(&Ep({yz^bc(i5a_a%k@UO)J`zUlkK;9pnw{XVnd^Qlc=`U5^si~IWQ z?%fsbpC4TLd1c?fZy!EY8U8Mm{kNg<WxDvY{mZXsYyR9Z@!O00|KC3Tv1i)H#U+2g zzW=kXes8$shbb`!6V;#YU3!1rgr5iJe|z!ZYpuz@Q>(5v_*|WmbA3k9=T^tRHxB;$ z_UTb1>y;pu?{A)-s&xPI==!aN^~X~+|Ns5-dqvre2<~eU+^-AOf1O@`Gn#LYH`|+@ z;J>$z?G6yw>BIFXS@im>(r?paKdf$iymS8Vt=-Sdjh<IoUYnNxyHe}#*AIWbeLm>V zbtjhpY<<Abqf39ky8r*_)xRxPUuMMrzJG3Cr1YyyskfPuKg%_a2J!3*5&4-f^XJw5 zkL9}WCxrezF#GSaqHl+nel1e@wz2(wg3zzMGtMQ-{pof;8_fB$!}<TO?_YX+Kh4X2 zJU!z?k=^%QQ%|O8Jq%~Q5+!gjSl~vE=JSKAE`_jtKeYJq<fLDp-ku2Lc)hCW)7A-J zp4|F9J85qK@6|}Yw>1{Wqs0H5Sn>Dds%sf)PqUTI)cW3t<oQu=`t$msThY9?qxs$+ zTK2jp=v`mv!!V{t;mrSv<zK{dJdR*_oGkVviuGAE``;qD@3|5`^Q3+k$owgky)r3t zhZp;QFi`x-!pOkzpFxL#fq?;(Cm1;XGyLb2(U`y_SjQo(6?0<4!o%$X%3gCk3KgZf zSd7zB7B8KDykEh&OU854l9Q7)f>-IRRGsA3l)bH@W|?ls+1ZZUW-dCudHMPI4$WM$ zURzdNT<qez=F<(HOQ+3hf3-%lot}Snb;Q#nw@+==zV0u+r%Tp*+nSr3GcI>+ZCyQo zxtS!p<csBs=k``_eDdI6*VYSn_c#1swnJdYhKGkcgtg<&+$fln@z<(QIb&UXd+iM4 z_rJGJU%%gJmUFV4&aN#lFRut*9d|a$dA~ce``5|O4$jzjd&k#>pPt^lzvIq<uS*pK z_w4xi_{3!G_;WGWFF7!+{=!@~Rd{~%&rRv?za2A{fBRrF|Nq4z`}X|&{NnQJ`15wP zopsUw5??>pota+v;={}1?Q5*#`G2!^oHr2W$av7mp|;{d6OY-B2SMcvF8Ukpjdbne zme{4xR3H9O(Wy;gmH}gjMB2u~ogO<38kICBy+~?PVo+2TP?*(`)T#dNLQ<Q@84edQ zeYVbrUDo?<INCR~T;#VDjbe2&(07q!Y7Y|>emXU9(<9bt`V|k)O9cFQaGpDLg5wG9 ze+~zq&PqvodU$4BlV;lV_%=(mX#okYY_n_JJlpJ3zx+I8{&$0;i~VJj%up7wBM&k( z=Gi`YvBYqVGTTzah^rYqwnrwo@bh;(>=#;aOyL;6eTi45(7!(d&9eVW{;yiOc+;=V zD_2eaCy*`V=`rhwr2UPHD_Cv+6tFS(wK1$&=b6xzsrGkH(F!(GhXp=z&R@hBSxif2 zv&XM1(az(2rDK@K>(#?`Oz4i(Lw~8*ACH;EI*;6L75yh+m?!lwA&`0Bvt_G~?7G9{ z^I>Pi59T&Ow*v<o?8A;^yYjOBNN{2Nr^3|EFQz`{*v{vxE}U0vS93UgQaycwZoI;R zKL<~Re{A}6QcJ_Ym^YlGFqBdL!-MnUCO?#qoV1fU*nHl3@gLT(ra5yypOd%A6+LhK zy5_3*j332c1pmb-n(#Meyxpv0@`LBgS>yS}MJJ86yxqp4P@&dyTk^xxp4++Mix}=1 zdHlbyT`J~vL9@Npi3k27xxb5#@b<iayN&Okh(N3Tj4f}svor|TRX%IoZCm-=$mg8J z;|cDDyB@ThHn4b6vpv_-zC)w(49}M9e%7TCyn&8yITBhM-WrD}v3@XPXgDlvcEg}m z_}>GAX8YX_0vv_^Su{3__}%Dhwomg(Y_>lvUSIR+o^=17Pupf+ta*FJyl@YLv5Gz` zpP$Fa7W;Rr-`jlHrhb86Q0NpJ51WSr)3Rp$YYGX>KbZQM<Ps!VTN)W=BurHkVPp&W zz%Fi(F;(e`6T|(@jG|m8SnGE%vekWP=j}2$$Q8Gt^~df6#=8p+G6gj@{b+U+T=AS= z?FS<pL%>6w|5*|TnbH=^UkPxvk0@wjOVMW7JE2|VIfL=)Gmc%;A9yn_(KyPh)7+iF zvsmJ|$1$T>AA2%<lqDiB@VozUwz~eH+xm^8yX^;8{*o>33>zl(+1yHIX8y2Pf!*_j zlhmgP9X?Bx*mpAi;Ar9dYv7=@L8zfBVv}6;gU71w4O4AnHpyL;IH2zCc`9hurztCZ zmTHAtdburFAfG7Vq5Uhd!!sdOZpR#U_59A$z8{vd>^#E2Smb#oN$T^A6F$p~rk^~M z_UIDh-xW-b79ZH7^bTpQZ)i7rc#&`46sOtT4^A^}(>#+q>+_r!KFh7HpFCH#>+{?T z4QjgACJ1_j1Pi_S(5`XsVD0(xDb92LvS`>xJ2ccueObWayTVEQ)P**yD+_xoQso~k zn&{}UTz+T40j{V67sZ}DSS-KR+1*j<QlC|Wq^$2sukcfsrtSK&)S!2zclZMa--;CO zFEyPGhb~N<`s2%T2i{cyo{Lytyf9IgS-`BJb?C}6tFJ2qd^waD3fbqfu`pNz03u+0 ASpWb4 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/rss.gif b/wp-content/themes/vanilla/images/rss.gif new file mode 100755 index 0000000000000000000000000000000000000000..82c242b7dcca6febeff76c98c36fb4563647f16b GIT binary patch literal 1044 zcmZ?wbhEHb6krfwXlDR{{~+-1|G(e=_oe<nkoo^a!~YYF|If7j|MmI*pCA9HO8lQD z@qfC+|3j7kkJS7>TKoT4{r}^Q|BpBS|NZTMFW>(@!T){2|NBM$PZ0UvC;ESa*#Ajl z|0jw6pCbN$g2ewx691=2{9hOLe`D1D4blI%r2OBO@qc&0|9vI@_f`BqQ2qa4_5VXP z{}0yvKV0|!P~-nchyOo4`Tx!J{~dz=mwNqQ=Kp_X;Q!S@|JQ{4UlaO&b=dzk5&zdm z{oj!Ie^cWB&B_0F75?8*^nX{;|DC1(_muwMUG{%>`TsrT|Myn>-(U0pK*Rr|9sf^F z{(pMv|H~`>-&p_u!GZrzPW*p)>HoL4|9^e`|L5obzrX*tiT`hv_`fXR|B}G}OGEyz zjr+eo_5bGV|66kYADi(1<kbHcmj1uI^8ekv|6g7E-zfHfp4b1me*YH-|6iH-e|`4< z4cY%U=KbGV`F~f_|6|ksU)}uw{iFY%p8u~B`(G#if0F(GDbD}r2mfD@_J38z|Kqd& zAD{RC<oy4q7XQC<=>MC$|9}7ZUncgy&E)??kN>lR|1XIDzc}^(`tpCT?)=Xa`(G^n ze@gKGdCC75Xa7Gm_kV`i{~WRZQ^WqxO#DAT>;Kse|6kty|MmU<WRd?}-v1{@|DPWJ ze`ebMrDgw@SO5R}=YPD&|3tC>jh_D}#r@yE@c*6D|DNCZA0_-hTJ(RR@&A^<|4VBB zFKhVs?9P8bp8r9D|AU492aEiBa_9g5|DeP%+_B<M7G?&9%?vsqkAm_91II^(bWRzM z4G#`TOX#J15KwYqX5*DwVrk)Ya+0`ufK7+OL53!#3YIX3L&q=48^mSY5SZ9}q(zd+ zROV%|rbC0JU(JID6InUM8s&pBUM8jVG%*C$U9k{e(&xaZ_23A{W#*0^27_%kGL=0Z zw22im)y$f7#APN!HQUQT6@epMvaSmv78<qqiaPZ0I124(ILfD}I*VsQ^D%!0|4B}q zZyq#wDrm->h;V%3!LZVE`8=lzA%#XMb4IPyMFCxxv>V0v1Oz`n<6G!HH)vzj(UVgh rY*=Cher{4bztC;ANw3h-tb~QyX)koTS~x{kMQrGjp5terz+epkr?KD# literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/rss.png b/wp-content/themes/vanilla/images/rss.png new file mode 100755 index 0000000000000000000000000000000000000000..6e7b676b345588a734dce002843a442520931170 GIT binary patch literal 3341 zcmeAS@N?(olHy`uVBq!ia0y~yVBiB`4mJh`26+$Niwq15oCO|{#S9GG!XV7ZFl&wk z0|S?Trn7TEKt_H^esM;Afr6*AvqC{pep+TuDg#5st+~PJA;B-jY`@?8;^f`YFvUAR zNR&e%$f>(QWTKjuBBy{?hvLGUqJakmU0qqEPb}zQ?(1vl5e?Mg>EgP<{zP$6U-ROQ zu2a7sRxi%Jw&(k^v;VeUw|l<k^W4qn*$;5=O!F`fG;QEn=_Dukp!xWbV-KI`IW%&q z6fg*IY)(-u{;SN$@T1PgMqB9s`#uK7ip$&_3<rE?A25(<|Ih!*X=V&#Lkr`9l8F}H z91S824pn_l%NQKo7#rr!Pzz>Qz`~GlIyvbvLx3(rf_nY4%M1;3f6T0AWQd-kD9X5C zB7=f(YKIF$hBd>Q^I=`C3=swlB5B@7EE#U-G8lM<r+F}J*v@d^oB;PG1`ZwugTRhf zO$L@~hJ+K!$`uSPGZ{qOK84$S)Ltj>T#JFBV&*2Bohp{DjnN#sh3w(sdU6`)JjJy| z%o3RrXF2E{s+=il)M�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 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/sample-ad.gif b/wp-content/themes/vanilla/images/sample-ad.gif new file mode 100755 index 0000000000000000000000000000000000000000..55281860fcab94efc270b7d99cc5a224ab75734c GIT binary patch literal 1196 zcmZ?wbhEHbtYxTWIKsf7o!is3e*e7}Z?k5s+j9C^>4Gf|HPcrexiEk4>4b?ZrfxeL z+O^26Wa6YPM|PaMnLBH}Rr!?4#oLZvzu&NYmu_C~>Z2FEo9AA7@XW1YR&eK{wl#bA zU%sQ5*2Vw>ia%MvOdSvjvXg=Jzk+&SO6I(bRqJwI?<>$bUy^&jV%__i_x}$pDDcpc z>OZlh=wy!7{0l2eyw*mozp<w5^xLZa4>nZz=*>R=VoTN8yxsRd?5OcuKVO5_J>`l3 zhaSHYUtL|JK0mLxvVdqEpM(r&3zJYPuV`%>r>Klbvw)1Kh>?JJ<y0l9Y6+pKl2X|M zOl^XkN|PjI_?np(sql+05D~9d<y|4eu~<fmY2u!S^i6Flf<lW07w|Ljsz{0R$?)D) zJFYIuAtO;ek7+@w<YrX?p$V#@CzK?_g|2-6xm`v_TJZe*8BHn%Ar<M_EzKn=8YWt4 zO!1xUbF7~3QavCi=_z9PPf1)+f|G+!;lD>##GytdJCRaHC(hMpRLX1BVkbXfKe$`) zj!RCrWMWWrnOk>ISLX7SmzM`D_L}Rpb=B3?5u3B_p4yr%#>OfjAuvhd0NXTGo}2~^ z*S8Vk3}z?pe)x90VW+gt9ESo12GPx|Nd^;6C!Ao}$?l_a!kd+$k(cGqzK-3Fn<gBV zW}0kau)wR4f!*lvf}F?>rk$mS!wUC2&}+O{<jtP=A)=9EyE>b~4Cw`W?X0XylQkAN zZ02|{@qJg^!doBP&S{FxxLdHmAxF8}T<1Z+9TsL5j%~#O_afiMoV@ll%Z$I0iJ5Iq zq)bMJ?MF^FE)fy7hMk`TH-EkvekgCB=J#o=6Q(jq{O9DDr|QIbVW~kw!!uV4rrg?z z8xEAZS$v<9Bz+^yDMR?qGzHGINRP-wy(8vLkvY8uGYXX^w6$cb&k$|kG??|{R)Kt9 zLNfQMho;jjlx^C?*qx;smHVaNL^PEOto-_z<J!s-3u{ceHbnPKQH*>%&DCb5LaADW z`l6}9Y?jOFb#xSBIHfPCE{PE<GLV?#H!q^8NT;trsw8L83$@89%NiP{sI?r^VDFoD zVL^`b49})wRW474=x3~44jE#z+*fi+znUtYr7V%5G2b=e*=>$euS^Cet|?-(Iyf)v za$I)&q^cSh`<cw9N~NxXTQy2P3+}9U^l87oy6W3<hj~@=mdX8RKgW0AUd)xQ2Rbuv z|C;qGS&?bO+ZAz3SHIi!X4~s`yFV;)l#C1Sa(EZ>wMukWL+`q$@ACTjB$n>BS{6{S zoBg?k!69yK83T6K7O_S7Cm0vZDZEs8+wD+*omTqV{jJNyt66ri%a<%SO$pnWS(B|2 z*K<kjO&gP$M|`^Rqz%#AQwnO-7GJaVnz>Rt?$?a`taT4JFYI}DZRw=^X<_M^<sYk$ zUD7wJd4HPM)bifx;>cXKYxm4}R&mAYPg^gYl6?C^qR#9GU*|15^l|AT#l8y(cMq#o zMcv7LGrQ?Qgp=4qhNIVhYS#$g7dtR1`Al~{XY}u#4O_ECAB68{cdB{MGU2%PFU=QA yrsw^7xnlXcU$53|fA{P4hU0p_-)y;__xtUR=j(pI+w=Y1@An7T=R0#SSOWlj;0|^G literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/sidebar-background.gif b/wp-content/themes/vanilla/images/sidebar-background.gif new file mode 100644 index 0000000000000000000000000000000000000000..b4d3848c658bd6c0dc73619ff97a28f4fac55faf GIT binary patch literal 1515 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 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/spinner.gif b/wp-content/themes/vanilla/images/spinner.gif new file mode 100644 index 0000000000000000000000000000000000000000..fae79de44023f3d1484f9e19dc4dbaa8e3adfe75 GIT binary patch literal 1849 zcmZ?wbhEHb6krfw_`<;O|Ns9pXU_co{rmaz=Rbb@xOwyDlP6EkoH=v%?%m6mFTZ{J z_T$Ho=g*&i_3G7`GiR<{yY}G00|run;(u;G*N|Xm#{gF&Jp*P&1_lPje^Smxsfi`2 zDGKG8B^e5dS&0=n`H3ldnR#jX42nNlIJp=Y7<53kfE>xdTCSkL#KfuibOn=(6UTAK z39CJ1Iv<=kv_@$2!Nd*B%Uqfc2|RO9h}$OO_%h<hgn%UuA9pB)HaBe!ROUSQ(5W%T zdj47N!-lJbcqCZ!&s!O(NR=@=uyCo==oqu`b93>sG{q}3aj-G)rm!@avalIXSK=-< z<>pRR#O9VVkXtexQZ4&j963%p3iNF1I`Z)VpP>F~$%KLo6^UNwL{$d`)}G@p3p`eG zaLg6hP_fsIsqs*0aHohsGh>BvD=RMx%OSn}cU#&bMbi2NS$vq{m6%z%3b>4&n!_7e z1X#E`VrzWZcw@{aRo7I_vY2ZgZI0C`6(FbF<Vm&cV{zedRpRL1)YZ~_z^F)PwfKU< zfFmO9ObrYo5?NagC48_DU}JwRbjU$~!y-w{Lr6zK>*6B=3EgG9A9CHoCEh);-0Kst z#MM}viAzAEiOETcmyJ8Ex4J{iDLh`kv!039Azr1ksm{Bo(cG~JyJNuNa?>Q$vadyv z!{ejUX)U3CY3>Vw{rV2g8#{FQ1cVw*8U$Ea53ei`FyZS7(*C|jSBQQ7i>(D~IZiB3 zxEP=@&5Wb@;exqRA42v2C~$IcYw57GXtFSCXzRx+<@mSiw`n<MPpqHZ#qB+%rz_U6 z&dh9q8P;&g0fkGZ1SnjTIF5gmJFO+uF3ruecOL_@?llVo4;G=OjSaSb)(d$qoDvLa zaeZ?^V6WIZ(RYQS0#YxQyxo{OkLOirzPC|)c+{u6Jz<?&471Y1SyCNJN<H-T%M<Kd zJJafvCv{FUn=)A$s{`sl4%n%aYT4JM#L@gw>WCIsn>9~C&}LPpmJP}VY)fV(EL1ok zrG7Yhrp6L6<|$qd4l;84#Sd;35|Pq3JebLBBG7RtVQ<)4sZJJVr$_t3SonEMYg?3( z+1XhW{WA4=*kjpwG&Os5**O?|QgiA#*|~EwYZ+MBd2>^vwXr&>667RLfmF-BLrNUJ zpUsYF9a^De?s|4wOQVCkhK7&Ym4d=7hp5)&oj-R8D)6+tS9Ms+BEVX{CQ4I5prs&( zS%a&;z46N0J`Rq;uccbTV(jceYRPN@oa_ng{F<5?JnYQu#r5%C6IeRz;$!&O)%o0W z%{h8hu)7AFp~0?U($eWx&^V&CPvei1X|#}`1mh-!rBRzMdnRTmvbj%Rm0BTDwdswQ zK}YI-vjc}5!fHZSv$A|N*|p6jcT=mX3g6k;uL~r2xHx0jS=||!D>ylMYZ)B0S!!5# zc$oOvZMC`B4JYezx+a=3<!EAe3pivn=R8?4Pu+2j_sU7@AKdEIS+wmhAIs!U*BFhQ z<~b|XtW6bq9|)KVxpW?pY%q8sx7oNUagBklP`BuWt-3ON7iAY7keI^KceuI0!$d@Y zHH=e0l{b@_otdAXs~|c^sfLrOhlzu4qB7S^CQg1c*378#<Z><C@dS2_j`tL;pWBWw zb+0g(&z(5S`g-?;4UCZ%jY$b6FY}hjaUWXYl*G`Kw7WuPAFIyBgI5G4_f1@|@wC{! zv%*g<YH$j%pV+%WR)K|^gH4soj+vd8gO!_y%Selbou8?TiH$!~i<?uQmDNgMrnU+* za~XEml!8(X*flxPt5hCxZSoQ*j9z@GkjHptLSXa{K2zbwA6AllT~j}>ct$8194K;h zv5??#E?Yg}qzLOBkASpH!F^9M83L!U^fx;OI21?=IJ5Dpx-jqtunDm62b!4iurhTq z@n$AxG6`__Wf_$7wrFC{Qt(*P<0;&?f=kDpiF=)w07H?+dKs??7Cap7&L5s=33j!& zIc?FIDb?5dN=?FstF^Ib%WX-ajEy|ub-Dt3CMI0e;pAzb_H~Jb&Ko;sCIL2UE?$cu oKN}rx=2ih4!w`OfST-iE8ObaYr>pZ8W~*>HfLvn@s))cC0M&yffdBvi literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/sub-header-border-bottom.gif b/wp-content/themes/vanilla/images/sub-header-border-bottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..cb5b83bd95594ed6364761ff50da0c82c273925e GIT binary patch literal 43 scmZ?wbhEHbWMp7sXkcLY|NsBF^A{C=vM_*v4u}BBFfcK>a4}c|00<NbaR2}S literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/subscribe.gif b/wp-content/themes/vanilla/images/subscribe.gif new file mode 100755 index 0000000000000000000000000000000000000000..06d93d3b24e03ed425d0e02dbe1fcf71d0a4f10e GIT binary patch literal 2181 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 Db%76V literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/swf.png b/wp-content/themes/vanilla/images/swf.png new file mode 100755 index 0000000000000000000000000000000000000000..1d12083afce29d99f1d660edfd8933767791df6b GIT binary patch literal 1835 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 V{%)<h9s>gdgQu&X%Q~loCIGzzN(le} literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/tar.png b/wp-content/themes/vanilla/images/tar.png new file mode 100755 index 0000000000000000000000000000000000000000..78ea2f0362aa4e7b575f53154135282fe9a523b6 GIT binary patch literal 1495 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tGSkfJR9T^zbpD<_bdda}R zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfk{5VC&cyt|NjgO3@=~4 z{PN|Cw6yfkpFgFfq<;PS_3G8DH*elNfBt;#+_~SsfB*60$G30ao<4p0`Sa(mU%!6* z_%Sy(_x=0#uV24bQBnEy>C?M+@8-;z^Ww#e-@ku9dGh4XpFj8S-`CdGmXwqX4-Y?l z`0%1di{8F{`|R1X4<A1K`}gnh<Hwbil@A^~xPAL}Qc{w&wKYFK|Mcn8uU@_S=+UE% z8#nIRvuD<<S<|LXyLt2G`Sa&nT3Rk$x^(&S<-L3No;!E$%9SgMii#{OEHh`$w6wHb zvSi8e<HwI2IkIKTmj3?!>({T}y?a+iMn+6bjFpwu(9rP0g$qqhO-q+9-M4RFety2U zxA)(_fA8G6Q(s^I@ZrOgCr?&aSD!w8dc}$rA3nUFF=K|fxcHPQQyxEl^8CdMJv}`u zE30|)<~@D#gq@vTNJwbQmd$V8zL`IN{;5-^3JVL*o;^EZ!i23`w_00Uc6N6D`u%(7 z&YiNdvg_Ba-@bi&Vq#)jTbr(~?wU1gPM<l$#KiRK)$4EHzpq}sIxsMhkB_gpxj82% zr>3SxL_{PzJ3Br;{>+&(j~+i_WMu5?>(kfQfA#9+=g*)1{`;GpoV;-1LK_>K8#iv; zyLa#C(W4<DAq52mpFVynDk^&Y=FRNcvtPb=5gi@<<NJ@xmo9a8cfWr9=FaWg-@biU zQ&ZcqW5>V$|8)&?A3uKd_1o7U-@h+jy!hC$V}Jkt*}QpkNlD4_<;%Oex+EkdZr!@o z+S>a6|Np4QB2xwihOH$*e!>5TAYfQ1!@PlkfvMKh#WAGfR>{TE;@bui4TV=%C3n1? zG1t=XQkzu94j%2xr+AXnz~C6a#nRVF+qc`+|0wzP{z<j!hwNo-Yp*~4_@istvZk1P zq37xMn)fewVN@SJWiD6R?y6^HiKiFMd$%)T<>MF&*{>z5zHVO@a{u{0ecs{*<qQe8 z3Y}HQ-phu+z9nUz<9&v43v=p{y=UM4-ebD;WZbIv3q)_c$b4XMWufrmtW)Xvte;Ni zX<smu66LA-J9~Pyw%xC{rBkPR`$aOiy;_mF#j2z#M0Vz#{pF7z97#BzB`gzUaK-t| z?oEFdUH`mfo8?TOb@z+Uu!J}SicC_u>h7){^0;z+e!_xpSKpbc6`W$^T6(6uVgBdR z!@{dycwFt#H*oYQS;W++cW&=f)s>f5Uz&F=;uMpMuE-=!%PQU-C)q`MUmn~Z=$}(4 zC-Nyk*ma_c`fI%h)^nz7uyRW!o-Y^X&{ufkYE=5|_S`<rSySeUcwT;}By6xofkW!q z>XUY<e-d4J6df;#9eBiZJoEf5Ee^Jt9hLEyT`FZ;Z~8O{^Bm4NwN65%@jv^~&mJdE z=^WUkqjLS)W04L0EI;O4m?P$}qhQX{70h)E8NX-fIJhL7V2a6;;WVszvU+{ZWIjvB zhJXj$Ya0|e=0wg|C$oRyXBjU6i-Rm?({H;zIrX+ViLdxQOPZKO8Doc@3=@ZA9;-y( zQ=R<<(|0&b4bcg0T*bjKDdg691D#~n_4bSnqR9)af}(hr<ft98J9a<%fT+PA_9>~i zP8V5kdGMp`j!_z?#!R*VC;5d_dZ!4!$oR)-^q0ZKC}`WR9a9UU5BM3#vR&ZF;QMl< uX!SZ950hJ;&z=sSccQuJ|Ci_nMh4|oMzVQ&E`AIQ3=E#GelF{r5}E*o3ScS# literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/text.png b/wp-content/themes/vanilla/images/text.png new file mode 100755 index 0000000000000000000000000000000000000000..1213e997137115755410c330f054171534f811a8 GIT binary patch literal 1862 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 A9smFU literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/trackback.jpg b/wp-content/themes/vanilla/images/trackback.jpg new file mode 100755 index 0000000000000000000000000000000000000000..a9cf71e42b5b927a143cc70a5b9aeb0c982b667f GIT binary patch literal 1655 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 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/video.png b/wp-content/themes/vanilla/images/video.png new file mode 100755 index 0000000000000000000000000000000000000000..0a489a28a0c272aeb8006c63fa40507fa3f8c795 GIT binary patch literal 660 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tGSkfJR9T^zbpD<_bdda}R zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfgvHlC&YEzwrxLu{ycX4 zct}Xdl`B{N{rh+S{{3gqo_+iFZNtWmZ{ED=?&<mT>67l1mu4&fWOOZCxpHM;NqO7s zH7X6~yebx$Hte6iaAm-z-=Xtv2TeR$y!=ek(f>==@0fM?#k{S@{{R2~zqtAo$h9Rw ze!(Cv9?TFEBmI_vfw9li#WAGfR?el@lU^wZusleVc;}<=-KG5ezW>p39$CDFxqlNy z=ifajR2OIX@454X@64A3*EGKQz|WAp<)UeObtjuey52*RSLF>EXSy3MdAt`+_iOZ; zD=Yq?bkQ=q4A$it4s$=W{j=Sc>+dJ~h^@xb>_^1zzDk*3K5m6=3|$A;zFv04|M7Pj z2ImvM%pU#?ICrwz>;9g_Yz{jddY&e{Q48KCxAJ-EitA^2HH5j#*S)csw5-xsZF(!4 z!p}y@TA#_^cQtgZxXZexcVmN5tHk1Y^PT@*oyFGu)V8S0U967pY1}f_mTP`zPP%08 ztGK%&<R=?PqU+iRl@euX_x3I7*9~YmbS(ABy0)J?qZ^``7it_d>9_H(j4E#wiC*w( z=Z0;647Y5My5LsL+!6NYm>gqIy}DG;{-W6duVOo-If70uXy&=0&()-&sk-$#k5CGS zW6OhI5*rw*vR}N`)}G{MrP;?;n0?~XT;4^~y;+wWS?ib@J%6EkYtZV&irab9TXsEV pS~y+)QoFc9fjrZf_y$IX>cdvSMqBIR85kHCJYD@<);T3K0RY#pLlyu4 literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/watermark-light.gif b/wp-content/themes/vanilla/images/watermark-light.gif new file mode 100644 index 0000000000000000000000000000000000000000..95b67a6e44f570d61cccd9000f7a77a028b96a64 GIT binary patch literal 31981 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%0D+I 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 VzqpxtBDxqHoa$D$wlFYQ0|0d-4RZhh literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/images/zip.png b/wp-content/themes/vanilla/images/zip.png new file mode 100755 index 0000000000000000000000000000000000000000..f7ebd9d67d387b5a93b6dd0ab7c1ce947fdb3a21 GIT binary patch literal 1484 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2tGSkfJR9T^zbpD<_bdda}R zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfk{5VC&cyt|NjgO3@=~4 zl$MtM`Sa(OFJGjjq<;PS_3G8DH*elNfByXY_wRG(&i(P@$G30azJC4s`Sa(ePoIAL z_%Sy(ch;;~uV24bQBisK?%n(M@8`^!^Xb#47cXA?{{8#OlP7=v{MoZ-kEEpJ{rmT| zwY3i)KD=nrqNJpxw{PD*d-m+ZhYyb*KmPac--8DaZr{FbZEelZ&p&<o^hb{#UA=mB z+O%os&Yin^_wMD(mv7#@xp(j0^XJdsxpSw!zCJuW{P^+XTefUjvSi83nKPT3nhXsM zPo6w!X=!==`gJievA=)+=I7@>eE5)+l~qPY#@pMwy1IJBiWU3z?YnT{!s*keuUxsJ zsHn)o!jhPnC?q8G<NFULCZ>%WH$Hy+=*W>HjEsy$MMc)umdVM<`uh4^U0u4mx>i<J z{r&yj-Q7EO?AW<;XLED&j2Sc7+1dH{_<nr<{`$?E&d$zz_wN1r{rmCbCkq!YtgNi8 zsi|4BX3gToi(kEZ{o%v=SFc`1M@OGNbLP?GM^B$TnKEU{uiw9J+_>@b#fyLc|Ns5> zck|}Wt5>f+d-iNWL4lf@nvIRk_U+rhefxgq%$e7(-`u)&>)ZG5$BrE<DJfaMZhdQO zYfDSZym|9ZojR4BoqhSzr3n)zeERrFLPFxs?b}<nY@R)Pc3)qgtgNiKxcKuIFLVub zLqbACL`3xT^ge(7w0!yUty{OwpFck*Cnqp4@aWN_Z{EK7`}a?LeEipMUkeKhmo8n} z*4Fm_|9=VLBaI9U3|mWr{DS`vLBOz3hIs=615=Twi(^Q|t&)qS#g7~$8b0REQk~tx z(by8B5Fpca{qFjAw&msJ?|1Irz56!%p4M$Dsn6#9nL79W9_!uQ|NP81{z)>L8FTq& z<fPZ7Suej>&0tJ@f7E@_t0|nPyX5n|W}9vOF4`QsZSh8*JK;-vYGs3%(r@MYi7-aH zT>l!8ALFTadqs%Z_ItPIX)*QiE>HiXn;rgpb@pZDlG{$k8w@HFE>CSd&+BED5X*FB zZ*AHGC5af7NBnj*&)4r1+!A)}s%(8W6HC#<IKxv1{<1BtE4e>E-nQBH?QGrx2ekrq z&i{A2rq<nWzBR4H>Tl*fG3E=2k<$d7PCe9b?)sOaVqg=q``@J+W{ax^y_1jUKKQo7 z`@3q^u1!~Ei+Kg6&e>70WB&J=Jq<BuHukL7nrO=C+3gk@)%%`J?n_S^M|eu%o#_>k z3`>=+sCYVMZ24rl^I&Diw9XE>&$ea_1(HsIPB*nzpDX7z^eDa5k(iXqmSE{9V4@W8 zHugAM@+Og^OonO)ChDBe4xgQ^A@=6}M&HXSU!{E`cpQRsPG@~u%i^L?(JSVv6H+Pm zz=Chl@?;g>HD41A)lHUj2INh8Qt`_}fZ^D!)m#F?5~hsX+mASP&HpQ~!s2<;9t8)D zj-_c1fg&g6&Ri+=+2taq&ao$fq5JmZWkpY)J-G4ukALG_)?IfQ82&sGc+juFkWkrY zp8HVqIK!>CitX3=WE6kP9oQt3&9;2sW6lH8N<{|(uX+@4pIEC_AXV~w8;5D*O3wX^ zp6^tAkL$2MmAF&bU{m10piyIb^uX<m?fR#fd;A0Bgew?7ot?wv_qXXElgHL5?z5U9 j6SW#9{r}?Mz{sG%sqgaZqVr(}1_lOCS3j3^P6<r_s5@0o literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/index.php b/wp-content/themes/vanilla/index.php new file mode 100644 index 000000000..7ac452cea --- /dev/null +++ b/wp-content/themes/vanilla/index.php @@ -0,0 +1,22 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +cfct_posts(); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/js/carrington.js b/wp-content/themes/vanilla/js/carrington.js new file mode 100644 index 000000000..7ae9c8947 --- /dev/null +++ b/wp-content/themes/vanilla/js/carrington.js @@ -0,0 +1,49 @@ +jQuery.noConflict(); + +cfct = {} + +cfct.loading = function() { + return '<div class="loading"><span>Loading...</span></div>'; +} + +cfct.ajax_post_content = function() { + jQuery('ol.archive .excerpt .entry-title a').unbind().click(function() { + var post_id = jQuery(this).attr('rev').replace('post-', ''); + jQuery('#post-excerpt-' + post_id).hide(); + jQuery('#post-content-' + post_id + '-target').html(cfct.loading()).load(CFCT_URL + '/index.php?cfct_action=post_content&id=' + post_id, cfct.ajax_post_comments); + return false; + }); +} + +cfct.ajax_post_comments = function() { + jQuery('p.comments-link a').unbind().click(function() { + var post_id = jQuery(this).attr('rev').replace('post-', ''); + jQuery(this).parent().hide(); + jQuery('#post-comments-' + post_id + '-target').html(cfct.loading()).load(CFCT_URL + '/index.php?cfct_action=post_comments&id=' + post_id); + return false; + }); +} + +jQuery(document).ready(function($) { + // suckerfish dropdown fixes for IE + $('#navigation li, #all-categories li').mouseover(function() { + $(this).addClass('hover'); + }); + $('#navigation li, #all-categories li').mouseout(function() { + $(this).removeClass('hover'); + }); + // :first-child fix for IE + $('#navigation li li:first-child, #all-categories li li:first-child').addClass('first'); + // :hover fix for full articles in IE + $('.full').mouseover(function() { + $(this).addClass('hover'); + }); + $('.full').mouseout(function() { + $(this).removeClass('hover'); + }); + if ((!$.browser.msie || $.browser.version.substr(0,1) != '6') && typeof CFCT_AJAX_LOAD != 'undefined' && CFCT_AJAX_LOAD) { + cfct.ajax_post_content(); + cfct.ajax_post_comments(); + } + $('#navigation li a, #all-categories li a').removeAttr('title'); +}); \ No newline at end of file diff --git a/wp-content/themes/vanilla/js/common.js b/wp-content/themes/vanilla/js/common.js new file mode 100755 index 000000000..9252046d8 --- /dev/null +++ b/wp-content/themes/vanilla/js/common.js @@ -0,0 +1 @@ +eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('b $j=c.d();$j(e).f(6(){$j(\'g.5\').h(6(){0=$j(1).0();0=0.i(/\\((.*)\\)/k," ");l($j(1).m(".7"))$j(1).8().9(\'<2 a="5 7"><3>&4;\'+0+\'&4;</3></2>\');n $j(1).8().9(\'<2 a="5 o"><3>&4;\'+0+\'&4;</3></2>\')})});',25,25,'text|this|blockquote|p|quot|pullquote|function|alignright|parent|before|class|var|jQuery|noConflict|document|ready|span|each|replace||gi|if|is|else|alignleft'.split('|'),0,{})) \ No newline at end of file diff --git a/wp-content/themes/vanilla/js/flash-embed.js b/wp-content/themes/vanilla/js/flash-embed.js new file mode 100755 index 000000000..c340392d5 --- /dev/null +++ b/wp-content/themes/vanilla/js/flash-embed.js @@ -0,0 +1,16 @@ +/** + * flashembed 0.31. Adobe Flash embedding script + * + * http://flowplayer.org/tools/flash-embed.html + * + * Copyright (c) 2008 Tero Piirainen (tipiirai@gmail.com) + * + * Released under the MIT License: + * http://www.opensource.org/licenses/mit-license.php + * + * >> Basically you can do anything you want but leave this header as is << + * + * version 0.01 - 03/11/2008 + * version 0.31 - Tue Jul 22 2008 06:30:32 GMT+0200 (GMT+02:00) + */ +eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('8 q(f,e,m){8 12(){4 b="";3(u m==\'8\'){m=m()}3(E.Q&&E.1k&&E.1k.1h){b=\'<1M 1F="1C/x-1s-18" \';3(l.w){G(l,{R:l.w})}F(4 a B l){3(l[a]!==z){b+=[a]+\'="\'+l[a]+\'"\\n\\t\'}}3(m){b+=\'1m=\\\'\'+1d(m)+\'\\\'\'}b+=\'/>\'}y{b=\'<D 2A="2x:2s-2q-2n-2k-2i" \';b+=\'U="\'+l.U+\'" N="\'+l.N+\'"\';3(!l.w&&M.28){l.w="26"+(""+25.23()).1n(5)}3(l.w){b+=\' w="\'+l.w+\'"\'}b+=\'>\';b+=\'\\n\\t<11 R="1W" Y="\'+l.H+\'" />\';l.w=l.H=l.U=l.N=z;F(4 k B l){3(l[k]!==z){b+=\'\\n\\t<11 R="\'+k+\'" Y="\'+l[k]+\'" />\'}}3(m){b+=\'\\n\\t<11 R="1m" Y=\\\'\'+1d(m)+\'\\\' />\'}b+="</D>";3(p){1Q(b)}}9 b}8 1f(d){4 c=1I(8(){4 a=M;4 b=a.Z(d);3(b){q(b,e,m);1E(c)}y 3(a&&a.2H&&a.Z&&a.2D){1E(c)}},13);9 1B}8 G(b,a){3(a){F(O B a){3(a.16(O)){b[O]=a[O]}}}}4 l={H:\'#\',U:\'1x%\',N:\'1x%\',A:z,V:z,1b:z,1a:1t,2o:\'#2m\',2l:1B,2j:\'1q\',2h:\'2g\',1F:\'1C/x-1s-18\',1p:\'2d://2c.2b.2a/29/27\'};3(u e==\'15\'){e={H:e}}G(l,e);4 h=q.K();4 g=l.A;4 o=l.1b;4 p=l.1a;3(u f==\'15\'){4 n=M.Z(f);3(n){f=n}y{9 1f(f)}}3(!f){9}3(!g||q.14(g)){l.V=l.A=l.1b=l.1a=z;f.I=12();9 f.21}y 3(l.V){4 j=l.V.1Z(l,q.K(),m);3(j){f.I=j}}y 3(g&&o&&q.14([6,1Y])){G(l,{H:o});m={1X:1V.1j,1U:\'1T\',1S:M.1R};f.I=12()}y{3(f.I.v(/\\s/g,\'\')!==\'\'){}y{f.I="<1i>X A "+g+" 1P 1O 1g 1N</1i>"+"<1l>"+(h[0]>0?"1L A 1g "+h:"1K 1J 20 18 1H 22")+"</1l>"+"<p>1G 24 A 2J <a 1j=\'"+l.1p+"\'>2I</a></p>"}}8 1d(a){4 b="";F(4 c B a){3(a[c]){b+=[c]+\'=\'+W(a[c])+\'&\'}}9 b.1n(0,b.1h-1)}8 W(b){2C(1D(b)){T\'15\':9\'"\'+b.v(L 2B(\'(["\\\\\\\\])\',\'g\'),\'\\\\$1\')+\'"\';T\'1A\':9\'[\'+1z(b,8(a){9 W(a)}).1o(\',\')+\']\';T\'8\':9\'"8()"\';T\'D\':4 c=[];F(4 d B b){3(b.16(d)){c.1y(\'"\'+d+\'":\'+W(b[d]))}}9\'{\'+c.1o(\',\')+\'}\'}9 2y(b).v(/\\s/g," ").v(/\\\'/g,"\\"")}8 1D(a){3(a===z||a===19){9 1t}4 b=u a;9(b==\'D\'&&a.1y)?\'1A\':b}3(17.1w){17.1w("2w",8(){2v=8(){};2t=8(){}})}8 1z(c,a){4 b=[];F(4 i B c){3(c.16(i)){b[i]=a(c[i])}}9 b}9 f}3(u 1v==\'8\'){(8($){$.2r.G({q:8(b,a){9 1u.2p(8(){q(1u,b,a)})}})})(1v)}q=q||{};q.K=8(){4 d=[0,0];3(E.Q&&u E.Q["1r X"]=="D"){4 f=E.Q["1r X"].2u;3(u f!="19"){f=f.v(/^.*\\s+(\\S+\\s+\\S+$)/,"$1");4 c=J(f.v(/^(.*)\\..*$/,"$1"),10);4 a=/r/.2z(f)?J(f.v(/^.*r(.*)$/,"$1"),10):0;d=[c,a]}}y 3(17.P){1e{4 b=L P("C.C.7")}1c(e){1e{b=L P("C.C.6");d=[6,0];b.2E="1q"}1c(2F){3(d[0]==6){9}}1e{b=L P("C.C")}1c(2G){}}3(u b=="D"){f=b.2f("$A");3(u f!="19"){f=f.v(/^\\S+\\s+(.*)$/,"$1").2e(",");d=[J(f[0],10),J(f[2],10)]}}}9 d};q.14=8(c){4 a=q.K();4 b=(a[0]>c[0])||(a[0]==c[0]&&a[1]>=c[1]);9 b};',62,170,'|||if|var||||function|return|||||||||||||||||flashembed||||typeof|replace|id||else|null|version|in|ShockwaveFlash|object|navigator|for|extend|src|innerHTML|parseInt|getVersion|new|document|height|key|ActiveXObject|plugins|name||case|width|onFail|asString|Flash|value|getElementById||param|getHTML||isSupported|string|hasOwnProperty|window|flash|undefined|debug|expressInstall|catch|concatVars|try|init|is|length|h2|href|mimeTypes|h3|flashvars|substring|join|pluginspage|always|Shockwave|shockwave|false|this|jQuery|attachEvent|100|push|map|array|true|application|typeOf|clearInterval|type|Download|plugin|setInterval|have|You|Your|embed|required|greater|or|alert|title|MMdoctitle|PlugIn|MMplayerType|location|movie|MMredirectURL|65|call|no|firstChild|installed|random|latest|Math|_|getflashplayer|all|go|com|adobe|www|http|split|GetVariable|high|quality|444553540000|allowscriptaccess|96B8|allowfullscreen|ffffff|11cf|bgcolor|each|AE6D|fn|D27CDB6E|__flash_savedUnloadHandler|description|__flash_unloadHandler|onbeforeunload|clsid|String|test|classid|RegExp|switch|body|AllowScriptAccess|ee|eee|getElementsByTagName|here|from'.split('|'),0,{})) \ No newline at end of file diff --git a/wp-content/themes/vanilla/js/iepngfix.htc b/wp-content/themes/vanilla/js/iepngfix.htc new file mode 100755 index 000000000..f294365a1 --- /dev/null +++ b/wp-content/themes/vanilla/js/iepngfix.htc @@ -0,0 +1,103 @@ +<public:component> +<public:attach event="onpropertychange" onevent="iePNGFix(0)" /> + +<script type="text/javascript"> + +// IE5.5+ PNG Alpha Fix v1.0 +// (c) 2004-2008 Angus Turnbull http://www.twinhelix.com + +// This is licensed under the GNU LGPL, version 2.1 or later. +// For details, see: http://creativecommons.org/licenses/LGPL/2.1/ + + +// This must be a path to a blank image, relative to the HTML document(s). +// In production use I suggest '/images/blank.gif' or similar. That's all! +if (typeof blankImg == 'undefined') var blankImg = 'images/blank.gif'; + + + +function filt(s, b) +{ + var f = 'DXImageTransform.Microsoft.AlphaImageLoader'; + var sM = (currentStyle.backgroundRepeat == 'no-repeat') ? 'crop' : 'scale'; + s = (s || '').replace(/\(/g, '%28').replace(/\)/g, '%29'); + + if (s && !(/IMG|INPUT/.test(nodeName) && !b) && + currentStyle.width == 'auto' && currentStyle.height == 'auto') + { + style.width = offsetWidth + 'px'; + style.height = clientHeight + 'px'; + if (currentStyle.display == 'inline') style.display = 'inline-block'; + } + + if (filters[f]) + { + filters[f].enabled = s ? true : false; + if (s) with (filters[f]) { src = s } + } + else if (s) style.filter = 'progid:'+f+'(src="'+s+'",sizingMethod="' + sM + '")'; +} + +function iePNGFix(init) +{ + if (!/MSIE (5\.5|6)/.test(navigator.userAgent) || typeof filters == 'unknown') return; + var evt = init ? { propertyName: 'src,background' } : event; + var isSrc = /src/.test(evt.propertyName); + var isBg = /background/.test(evt.propertyName); + var isClass = !init && + ((this.className != this._png_class) && (this.className || this._png_class)); + if (!(isSrc || isBg || isClass)) return; + this._png_class = this.className; + var blank = blankImg.match(/([^\/]+)$/)[1]; + + // Required for Whatever:hover support - erase any set BG if className changes. + if (isClass && ((style.backgroundImage.indexOf('url(') == -1) || + (style.backgroundImage.indexOf(blank) > -1))) + { + setTimeout(function() { this.style.backgroundImage = '' }, 0); + return; + } + + if (isSrc && this.src && /IMG|INPUT/.test(nodeName)) + { + if ((/\.png/i).test(src)) + { + filt(src, 1); + src = blankImg; + } + else if (src.indexOf(blank) == -1) filt(); + } + + var bgSrc = currentStyle.backgroundImage || style.backgroundImage; + if ((bgSrc + this.src).indexOf(blank) == -1) + { + var bgPNG = bgSrc.match(/^url[("']+(.*\.png[^\)"']*)[\)"']+[^\)]*$/i); + + if (bgPNG) + { + style.backgroundImage = 'url("' + blankImg + '")'; + filt(bgPNG[1], 0); + // Unclickable elements inside PNG backgrounds. + var tags = ['a', 'input', 'select', 'textarea', 'iframe', 'object'], + t = tags.length, tFix = []; + while (t--) + { + var elms = all.tags(tags[t]), e = elms.length; + while (e--) tFix.push(elms[e]); + } + var t = tFix.length; + if (t && (/relative|absolute/i).test(currentStyle.position)) + alert('IEPNGFix: Children of positioned element are unclickable:\n\n<' + + nodeName + (id && ' id=' + id) + '>'); + while (t--) + if (!(/relative|absolute/i).test(tFix[t].currentStyle.position)) + tFix[t].style.position = 'relative'; + } + else filt(); + } +} + +iePNGFix(1); + +</script> +</public:component> diff --git a/wp-content/themes/vanilla/js/images/blank.gif b/wp-content/themes/vanilla/js/images/blank.gif new file mode 100755 index 0000000000000000000000000000000000000000..75b945d2553848b8b6f41fe5e24599c0687b8472 GIT binary patch literal 49 zcmZ?wbhEHbWMp7unE0RJ|Ns9C3=9Vj9AIEzQ2fcl$iTqFpu@nxzyOkGU}6ekWUvMR DQN9XW literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/js/jquery/effects.blind.js b/wp-content/themes/vanilla/js/jquery/effects.blind.js new file mode 100755 index 000000000..932387c78 --- /dev/null +++ b/wp-content/themes/vanilla/js/jquery/effects.blind.js @@ -0,0 +1,2 @@ +eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(3(A){A.2.z=3(B){y d.x(3(){1 D=A(d),C=["w","v","u"];1 H=A.2.t(D,B.6.s||"5");1 G=B.6.r||"8";A.2.q(D,C);D.7();1 J=A.2.p(D).a({o:"n"});1 E=(G=="8")?"c":"b";1 I=(G=="8")?J.c():J.b();4(H=="7"){J.a(E,0)}1 F={};F[E]=H=="7"?I:0;J.m(F,B.l,B.6.k,3(){4(H=="5"){D.5()}A.2.j(D,C);A.2.i(D);4(B.9){B.9.h(D[0],g)}D.f()})})}})(e)',46,46,'|var|effects|function|if|hide|options|show|vertical|callback|css|width|height|this|jQuery|dequeue|arguments|apply|removeWrapper|restore|easing|duration|animate|hidden|overflow|createWrapper|save|direction|mode|setMode|left|top|position|queue|return|blind||||||||||'.split('|'),0,{})) + diff --git a/wp-content/themes/vanilla/js/jquery/effects.bounce.js b/wp-content/themes/vanilla/js/jquery/effects.bounce.js new file mode 100755 index 000000000..e2b7d3048 --- /dev/null +++ b/wp-content/themes/vanilla/js/jquery/effects.bounce.js @@ -0,0 +1,2 @@ +eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(a(A){A.8.16=a(B){15 e.m(a(){4 E=A(e),K=["14","i","j"];4 J=A.8.13(E,B.6.12||"11");4 M=B.6.10||"k";4 C=B.6.u||Z;4 D=B.6.Y||5;4 G=B.X||W;7(/h|d/.V(J)){K.U("g")}A.8.T(E,K);E.h();A.8.S(E);4 F=(M=="k"||M=="R")?"i":"j";4 O=(M=="k"||M=="j")?"9":"Q";4 C=B.6.u||(F=="i"?E.P({t:s})/3:E.z({t:s})/3);7(J=="h"){E.r("g",0).r(F,O=="9"?-C:C)}7(J=="d"){C=C/(D*2)}7(J!="d"){D--}7(J=="h"){4 H={g:1};H[F]=(O=="9"?"+=":"-=")+C;E.c(H,G/2,B.6.b);C=C/2;D--}y(4 I=0;I<D;I++){4 N={},L={};N[F]=(O=="9"?"-=":"+=")+C;L[F]=(O=="9"?"+=":"-=")+C;E.c(N,G/2,B.6.b).c(L,G/2,B.6.b);C=(J=="d")?C*2:C/2}7(J=="d"){4 H={g:0};H[F]=(O=="9"?"-=":"+=")+C;E.c(H,G/2,B.6.b,a(){E.d();A.8.q(E,K);A.8.p(E);7(B.f){B.f.o(e,n)}})}x{4 N={},L={};N[F]=(O=="9"?"-=":"+=")+C;L[F]=(O=="9"?"+=":"-=")+C;E.c(N,G/2,B.6.b).c(L,G/2,B.6.b,a(){A.8.q(E,K);A.8.p(E);7(B.f){B.f.o(e,n)}})}E.m("w",a(){E.l()});E.l()})}})(v)',62,69,'||||var||options|if|effects|pos|function|easing|animate|hide|this|callback|opacity|show|top|left|up|dequeue|queue|arguments|apply|removeWrapper|restore|css|true|margin|distance|jQuery|fx|else|for|outerWidth||||||||||||||||outerHeight|neg|down|createWrapper|save|push|test|250|duration|times|20|direction|effect|mode|setMode|position|return|bounce'.split('|'),0,{})) + diff --git a/wp-content/themes/vanilla/js/jquery/effects.clip.js b/wp-content/themes/vanilla/js/jquery/effects.clip.js new file mode 100755 index 000000000..3e068744e --- /dev/null +++ b/wp-content/themes/vanilla/js/jquery/effects.clip.js @@ -0,0 +1,2 @@ +eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(4(A){A.3.Q=4(B){P l.i(4(){1 F=A(l),J=["6","k","j","e","d"];1 I=A.3.O(F,B.a.N||"9");1 K=B.a.M||"7";A.3.L(F,J);F.5();1 C=A.3.z(F).c({y:"x"});1 E=F[0].w=="v"?C:F;1 G={b:(K=="7")?"e":"d",6:(K=="7")?"k":"j"};1 D=(K=="7")?E.e():E.d();8(I=="5"){E.c(G.b,0);E.c(G.6,D/2)}1 H={};H[G.b]=I=="5"?D:0;H[G.6]=I=="5"?0:D/2;E.u(H,{i:t,h:B.h,g:B.a.g,s:4(){8(I=="9"){F.9()}A.3.r(F,J);A.3.q(F);8(B.f){B.f.p(F[0],o)}F.n()}})})}})(m)',53,53,'|var||effects|function|show|position|vertical|if|hide|options|size|css|width|height|callback|easing|duration|queue|left|top|this|jQuery|dequeue|arguments|apply|removeWrapper|restore|complete|false|animate|IMG|tagName|hidden|overflow|createWrapper||||||||||||save|direction|mode|setMode|return|clip'.split('|'),0,{})) + diff --git a/wp-content/themes/vanilla/js/jquery/effects.core.js b/wp-content/themes/vanilla/js/jquery/effects.core.js new file mode 100755 index 000000000..328813e8f --- /dev/null +++ b/wp-content/themes/vanilla/js/jquery/effects.core.js @@ -0,0 +1,2 @@ +eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(b(C){C.r=C.r||{};C.14(C.r,{52:b(F,G){1T(d E=0;E<G.1m;E++){8(G[E]!==U){C.2D(F[0],"2C.2B."+G[E],F[0].Q[G[E]])}}},51:b(F,G){1T(d E=0;E<G.1m;E++){8(G[E]!==U){F.k(G[E],C.2D(F[0],"2C.2B."+G[E]))}}},4Z:b(E,F){8(F=="t"){F=E.4Y(":4X")?"1c":"1r"}6 F},4W:b(F,G){d H,E;2A(F[0]){12"1e":H=0;S;12"4V":H=0.5;S;12"2q":H=1;S;2z:H=F[0]/G.2x}2A(F[1]){12"1f":E=0;S;12"4U":E=0.5;S;12"2p":E=1;S;2z:E=F[1]/G.2y}6{x:E,y:H}},4T:b(F){8(F.1v().W("1V")=="1U"){6 F}d E={2y:F.4S({1X:2w}),2x:F.4R({1X:2w}),"2v":F.k("2v")};F.4Q(\'<2u 1V="1U" Q="4P-4O:2c%;4N:1i;4M:4L;1X:0;4K:0"></2u>\');d I=F.1v();8(F.k("R")=="1R"){I.k({R:"1W"});F.k({R:"1W"})}m{d H=F.k("1e");8(1S(j(H))){H="2t"}d G=F.k("1f");8(1S(j(G))){G="2t"}I.k({R:F.k("R"),1e:H,1f:G,4J:F.k("z-4I")}).1c();F.k({R:"1W",1e:0,1f:0})}I.k(E);6 I},4H:b(E){8(E.1v().W("1V")=="1U"){6 E.1v().4G(E)}6 E},4F:b(F,G,E,H){H=H||{};C.1n(G,b(J,I){1u=F.2g(I);8(1u[0]>0){H[I]=1u[0]*E+1u[1]}});6 H},19:b(G,H,J,I){d E=(1d J=="b"?J:(I?I:U));d F=(1d J=="1P"?J:U);6 e.1n(b(){d O={};d M=C(e);d N=M.W("Q")||"";8(1d N=="1P"){N=N["1O"]}8(G.t){M.4E(G.t)?G.p=G.t:G.q=G.t}d K=C.14({},(1t.1s?1t.1s.2s(e,U):e.2r));8(G.q){M.1b(G.q)}8(G.p){M.1a(G.p)}d L=C.14({},(1t.1s?1t.1s.2s(e,U):e.2r));8(G.q){M.1a(G.q)}8(G.p){M.1b(G.p)}1T(d P 4D L){8(1d L[P]!="b"&&L[P]&&P.1H("4C")==-1&&P.1H("1m")==-1&&L[P]!=K[P]&&(P.1Q(/1G/i)||(!P.1Q(/1G/i)&&!1S(j(L[P],10))))&&(K.R!="1R"||(K.R=="1R"&&!P.1Q(/1f|1e|2q|2p/)))){O[P]=L[P]}}M.4B(O,H,F,b(){8(1d C(e).W("Q")=="1P"){C(e).W("Q")["1O"]="";C(e).W("Q")["1O"]=N}m{C(e).W("Q",N)}8(G.q){C(e).1b(G.q)}8(G.p){C(e).1a(G.p)}8(E){E.l(e,g)}})})}});C.V.14({2o:C.V.1c,2n:C.V.1r,2m:C.V.t,2l:C.V.1b,2k:C.V.1a,2i:C.V.2j,1q:b(E,G,F,H){6 C.r[E]?C.r[E].4A(e,{4z:E,4y:G||{},1p:F,1o:H}):U},1c:b(){8(!g[0]||(g[0].17==1N||/(1M|1L|1K)/.1J(g[0]))){6 e.2o.l(e,g)}m{d E=g[1]||{};E["1I"]="1c";6 e.1q.l(e,[g[0],E,g[2]||E.1p,g[3]||E.1o])}},1r:b(){8(!g[0]||(g[0].17==1N||/(1M|1L|1K)/.1J(g[0]))){6 e.2n.l(e,g)}m{d E=g[1]||{};E["1I"]="1r";6 e.1q.l(e,[g[0],E,g[2]||E.1p,g[3]||E.1o])}},t:b(){8(!g[0]||(g[0].17==1N||/(1M|1L|1K)/.1J(g[0]))||(g[0].17==4x)){6 e.2m.l(e,g)}m{d E=g[1]||{};E["1I"]="t";6 e.1q.l(e,[g[0],E,g[2]||E.1p,g[3]||E.1o])}},1b:b(F,E,H,G){6 E?C.r.19.l(e,[{q:F},E,H,G]):e.2l(F)},1a:b(F,E,H,G){6 E?C.r.19.l(e,[{p:F},E,H,G]):e.2k(F)},2j:b(F,E,H,G){6 E?C.r.19.l(e,[{t:F},E,H,G]):e.2i(F)},2h:b(E,G,F,I,H){6 C.r.19.l(e,[{q:G,p:E},F,I,H])},4w:b(){6 e.2h.l(e,g)},2g:b(E){d F=e.k(E),G=[];C.1n(["4v","4u","%","4t"],b(H,I){8(F.1H(I)>0){G=[1l(F),I]}});6 G}});h.1n(["2e","4s","4r","4q","4p","1G","4o"],b(F,E){h.4n.4m[E]=b(G){8(G.4l==0){G.T=D(G.2f,E);G.18=B(G.18)}G.2f.Q[E]="1C("+[c.1F(c.1E(j((G.1D*(G.18[0]-G.T[0]))+G.T[0]),f),0),c.1F(c.1E(j((G.1D*(G.18[1]-G.T[1]))+G.T[1]),f),0),c.1F(c.1E(j((G.1D*(G.18[2]-G.T[2]))+G.T[2]),f),0)].4k(",")+")"}});b B(F){d E;8(F&&F.17==4j&&F.1m==3){6 F}8(E=/1C\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)/.15(F)){6[j(E[1]),j(E[2]),j(E[3])]}8(E=/1C\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*\\)/.15(F)){6[1l(E[1])*2.1B,1l(E[2])*2.1B,1l(E[3])*2.1B]}8(E=/#([a-11-Z-9]{2})([a-11-Z-9]{2})([a-11-Z-9]{2})/.15(F)){6[j(E[1],16),j(E[2],16),j(E[3],16)]}8(E=/#([a-11-Z-9])([a-11-Z-9])([a-11-Z-9])/.15(F)){6[j(E[1]+E[1],16),j(E[2]+E[2],16),j(E[3]+E[3],16)]}8(E=/4i\\(0, 0, 0, 0\\)/.15(F)){6 A["1i"]}6 A[h.4h(F).4g()]}b D(G,E){d F;4f{F=h.4e(G,E);8(F!=""&&F!="1i"||h.4d(G,"4c")){S}E="2e"}4b(G=G.4a);6 B(F)}d A={49:[0,f,f],48:[2a,f,f],46:[2d,2d,45],44:[0,0,0],43:[0,0,f],41:[24,42,42],40:[0,f,f],3Z:[0,0,Y],3Y:[0,Y,Y],3X:[1A,1A,1A],3W:[0,2c,0],3V:[3U,3T,2b],3S:[Y,0,Y],3R:[3Q,2b,47],3P:[f,29,0],3O:[3N,50,3M],3L:[Y,0,0],3K:[3J,3I,3H],3G:[3F,0,1k],3E:[f,0,f],3D:[f,3C,0],3B:[0,o,0],3A:[v,0,3z],3y:[2a,28,29],3x:[3w,3v,28],3u:[26,f,f],3t:[27,3s,27],3r:[1k,1k,1k],3q:[f,3p,3o],3n:[f,f,26],3m:[0,f,0],3l:[f,0,f],3k:[o,0,0],3j:[0,0,o],3i:[o,o,0],3h:[f,24,0],3g:[f,1j,3f],3e:[o,0,o],3d:[o,0,o],3c:[f,0,0],3b:[1j,1j,1j],3a:[f,f,f],39:[f,f,0],1i:[f,f,f]};h.u["38"]=h.u["23"];h.14(h.u,{22:"21",23:b(F,G,E,I,H){6 h.u[h.u.22](F,G,E,I,H)},37:b(F,G,E,I,H){6 I*(G/=H)*G+E},21:b(F,G,E,I,H){6-I*(G/=H)*(G-2)+E},36:b(F,G,E,I,H){8((G/=H/2)<1){6 I/2*G*G+E}6-I/2*((--G)*(G-2)-1)+E},35:b(F,G,E,I,H){6 I*(G/=H)*G*G+E},34:b(F,G,E,I,H){6 I*((G=G/H-1)*G*G+1)+E},33:b(F,G,E,I,H){8((G/=H/2)<1){6 I/2*G*G*G+E}6 I/2*((G-=2)*G*G+2)+E},32:b(F,G,E,I,H){6 I*(G/=H)*G*G*G+E},31:b(F,G,E,I,H){6-I*((G=G/H-1)*G*G*G-1)+E},30:b(F,G,E,I,H){8((G/=H/2)<1){6 I/2*G*G*G*G+E}6-I/2*((G-=2)*G*G*G-2)+E},2Z:b(F,G,E,I,H){6 I*(G/=H)*G*G*G*G+E},2Y:b(F,G,E,I,H){6 I*((G=G/H-1)*G*G*G*G+1)+E},2X:b(F,G,E,I,H){8((G/=H/2)<1){6 I/2*G*G*G*G*G+E}6 I/2*((G-=2)*G*G*G*G+2)+E},2W:b(F,G,E,I,H){6-I*c.20(G/H*(c.n/2))+I+E},2V:b(F,G,E,I,H){6 I*c.13(G/H*(c.n/2))+E},2U:b(F,G,E,I,H){6-I/2*(c.20(c.n*G/H)-1)+E},2T:b(F,G,E,I,H){6(G==0)?E:I*c.w(2,10*(G/H-1))+E},2S:b(F,G,E,I,H){6(G==H)?E+I:I*(-c.w(2,-10*G/H)+1)+E},2R:b(F,G,E,I,H){8(G==0){6 E}8(G==H){6 E+I}8((G/=H/2)<1){6 I/2*c.w(2,10*(G-1))+E}6 I/2*(-c.w(2,-10*--G)+2)+E},2Q:b(F,G,E,I,H){6-I*(c.1h(1-(G/=H)*G)-1)+E},2P:b(F,G,E,I,H){6 I*c.1h(1-(G=G/H-1)*G)+E},2O:b(F,G,E,I,H){8((G/=H/2)<1){6-I/2*(c.1h(1-G*G)-1)+E}6 I/2*(c.1h(1-(G-=2)*G)+1)+E},2N:b(F,H,E,L,K){d I=1.X;d J=0;d G=L;8(H==0){6 E}8((H/=K)==1){6 E+L}8(!J){J=K*0.3}8(G<c.1z(L)){G=L;d I=J/4}m{d I=J/(2*c.n)*c.1y(L/G)}6-(G*c.w(2,10*(H-=1))*c.13((H*K-I)*(2*c.n)/J))+E},2M:b(F,H,E,L,K){d I=1.X;d J=0;d G=L;8(H==0){6 E}8((H/=K)==1){6 E+L}8(!J){J=K*0.3}8(G<c.1z(L)){G=L;d I=J/4}m{d I=J/(2*c.n)*c.1y(L/G)}6 G*c.w(2,-10*H)*c.13((H*K-I)*(2*c.n)/J)+L+E},2L:b(F,H,E,L,K){d I=1.X;d J=0;d G=L;8(H==0){6 E}8((H/=K/2)==2){6 E+L}8(!J){J=K*(0.3*1.5)}8(G<c.1z(L)){G=L;d I=J/4}m{d I=J/(2*c.n)*c.1y(L/G)}8(H<1){6-0.5*(G*c.w(2,10*(H-=1))*c.13((H*K-I)*(2*c.n)/J))+E}6 G*c.w(2,-10*(H-=1))*c.13((H*K-I)*(2*c.n)/J)*0.5+L+E},2K:b(F,G,E,J,I,H){8(H==1x){H=1.X}6 J*(G/=I)*G*((H+1)*G-H)+E},2J:b(F,G,E,J,I,H){8(H==1x){H=1.X}6 J*((G=G/I-1)*G*((H+1)*G+H)+1)+E},2I:b(F,G,E,J,I,H){8(H==1x){H=1.X}8((G/=I/2)<1){6 J/2*(G*G*(((H*=(1.1Z))+1)*G-H))+E}6 J/2*((G-=2)*G*(((H*=(1.1Z))+1)*G+H)+2)+E},1Y:b(F,G,E,I,H){6 I-h.u.1w(F,H-G,0,I,H)+E},1w:b(F,G,E,I,H){8((G/=H)<(1/2.v)){6 I*(7.1g*G*G)+E}m{8(G<(2/2.v)){6 I*(7.1g*(G-=(1.5/2.v))*G+0.v)+E}m{8(G<(2.5/2.v)){6 I*(7.1g*(G-=(2.25/2.v))*G+0.2H)+E}m{6 I*(7.1g*(G-=(2.2G/2.v))*G+0.2F)+E}}}},2E:b(F,G,E,I,H){8(G<H/2){6 h.u.1Y(F,G*2,0,I,H)*0.5+E}6 h.u.1w(F,G*2-H,0,I,H)*0.5+I*0.5+E}})})(h)',62,313,'||||||return||if|||function|Math|var|this|255|arguments|jQuery||parseInt|css|apply|else|PI|128|remove|add|effects||toggle|easing|75|pow||||||||||||||||||||style|position|break|start|null|fn|attr|70158|139|F0||fA|case|sin|extend|exec||constructor|end|animateClass|removeClass|addClass|show|typeof|top|left|5625|sqrt|transparent|192|211|parseFloat|length|each|callback|duration|effect|hide|defaultView|document|unit|parent|easeOutBounce|undefined|asin|abs|169|55|rgb|pos|min|max|color|indexOf|mode|test|fast|normal|slow|Number|cssText|object|match|static|isNaN|for|fxWrapper|id|relative|margin|easeInBounce|525|cos|easeOutQuad|def|swing|165||224|144|230|140|240|107|100|245|backgroundColor|elem|cssUnit|morph|_toggleClass|toggleClass|_removeClass|_addClass|__toggle|_hide|_show|right|bottom|currentStyle|getComputedStyle|auto|div|float|true|height|width|default|switch|storage|ec|data|easeInOutBounce|984375|625|9375|easeInOutBack|easeOutBack|easeInBack|easeInOutElastic|easeOutElastic|easeInElastic|easeInOutCirc|easeOutCirc|easeInCirc|easeInOutExpo|easeOutExpo|easeInExpo|easeInOutSine|easeOutSine|easeInSine|easeInOutQuint|easeOutQuint|easeInQuint|easeInOutQuart|easeOutQuart|easeInQuart|easeInOutCubic|easeOutCubic|easeInCubic|easeInOutQuad|easeInQuad|jswing|yellow|white|silver|red|violet|purple|203|pink|orange|olive|navy|maroon|magenta|lime|lightyellow|193|182|lightpink|lightgrey|238|lightgreen|lightcyan|216|173|lightblue|khaki|130|indigo|green|215|gold|fuchsia|148|darkviolet|122|150|233|darksalmon|darkred|204|153|darkorchid|darkorange|85|darkolivegreen|darkmagenta|183|189|darkkhaki|darkgreen|darkgrey|darkcyan|darkblue|cyan|brown||blue|black|220|beige||azure|aqua|parentNode|while|body|nodeName|curCSS|do|toLowerCase|trim|rgba|Array|join|state|step|fx|outlineColor|borderTopColor|borderRightColor|borderLeftColor|borderBottomColor|pt|px|em|switchClass|Function|options|method|call|animate|Moz|in|hasClass|setTransition|replaceWith|removeWrapper|index|zIndex|padding|none|border|background|size|font|wrap|outerHeight|outerWidth|createWrapper|center|middle|getBaseline|hidden|is|setMode||restore|save'.split('|'),0,{})) + diff --git a/wp-content/themes/vanilla/js/jquery/effects.drop.js b/wp-content/themes/vanilla/js/jquery/effects.drop.js new file mode 100755 index 000000000..f3b16d2ca --- /dev/null +++ b/wp-content/themes/vanilla/js/jquery/effects.drop.js @@ -0,0 +1,2 @@ +eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(5(A){A.4.S=5(B){R a.i(5(){3 E=A(a),D=["Q","e","9","d"];3 I=A.4.P(E,B.6.O||"c");3 H=B.6.N||"9";A.4.M(E,D);E.8();A.4.L(E);3 F=(H=="m"||H=="K")?"e":"9";3 C=(H=="m"||H=="9")?"7":"z";3 J=B.6.y||(F=="e"?E.x({l:k})/2:E.w({l:k})/2);b(I=="8"){E.j("d",0).j(F,C=="7"?-J:J)}3 G={d:I=="8"?1:0};G[F]=(I=="8"?(C=="7"?"+=":"-="):(C=="7"?"-=":"+="))+J;E.v(G,{i:u,h:B.h,g:B.6.g,t:5(){b(I=="c"){E.c()}A.4.s(E,D);A.4.r(E);b(B.f){B.f.q(a,p)}E.o()}})})}})(n)',55,55,'|||var|effects|function|options|pos|show|left|this|if|hide|opacity|top|callback|easing|duration|queue|css|true|margin|up|jQuery|dequeue|arguments|apply|removeWrapper|restore|complete|false|animate|outerWidth|outerHeight|distance|neg|||||||||||down|createWrapper|save|direction|mode|setMode|position|return|drop'.split('|'),0,{})) + diff --git a/wp-content/themes/vanilla/js/jquery/effects.explode.js b/wp-content/themes/vanilla/js/jquery/effects.explode.js new file mode 100755 index 000000000..af5ce36e6 --- /dev/null +++ b/wp-content/themes/vanilla/js/jquery/effects.explode.js @@ -0,0 +1,2 @@ +eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(e(A){A.i.h=e(B){16 j.15(e(){8 I=B.4.g?7.x(7.w(B.4.g)):3;8 E=B.4.g?7.x(7.w(B.4.g)):3;B.4.5=B.4.5=="14"?(A(j).13(":c")?"n":"6"):B.4.5;8 H=A(j).6().9("d","p");8 J=H.12();J.a-=v(H.9("11"))||0;J.b-=v(H.9("10"))||0;8 G=H.Z(u);8 C=H.Y(u);t(8 F=0;F<I;F++){t(8 D=0;D<E;D++){H.X().W("V").U("<s></s>").9({r:"q",d:"c",b:-D*(G/E),a:-F*(C/I)}).T().S("i-h").9({r:"q",R:"p",Q:G/E,P:C/I,b:J.b+D*(G/E)+(B.4.5=="6"?(D-7.f(E/2))*(G/E):0),a:J.a+F*(C/I)+(B.4.5=="6"?(F-7.f(I/2))*(C/I):0),o:B.4.5=="6"?0:1}).O({b:J.b+D*(G/E)+(B.4.5=="6"?0:(D-7.f(E/2))*(G/E)),a:J.a+F*(C/I)+(B.4.5=="6"?0:(F-7.f(I/2))*(C/I)),o:B.4.5=="6"?1:0},B.l||k)}}N(e(){B.4.5=="6"?H.9({d:"c"}):H.9({d:"c"}).n();M(B.m){B.m.L(H[0])}H.K();A(".i-h").z()},B.l||k)})}})(y)',62,69,'||||options|mode|show|Math|var|css|top|left|visible|visibility|function|floor|pieces|explode|effects|this|500|duration|callback|hide|opacity|hidden|absolute|position|div|for|true|parseInt|sqrt|round|jQuery|remove|||||||||||dequeue|apply|if|setTimeout|animate|height|width|overflow|addClass|parent|wrap|body|appendTo|clone|outerHeight|outerWidth|marginLeft|marginTop|offset|is|toggle|queue|return'.split('|'),0,{})) + diff --git a/wp-content/themes/vanilla/js/jquery/effects.fold.js b/wp-content/themes/vanilla/js/jquery/effects.fold.js new file mode 100755 index 000000000..18c16ddc6 --- /dev/null +++ b/wp-content/themes/vanilla/js/jquery/effects.fold.js @@ -0,0 +1,2 @@ +eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(c(A){A.4.U=c(B){T i.S(c(){3 E=A(i),J=["R","Q","P"];3 G=A.4.O(E,B.7.z||"b");3 N=B.7.y||x;3 M=!(!B.7.w);A.4.v(E,J);E.8();3 D=A.4.u(E).h({t:"s"});3 H=((G=="8")!=M);3 F=H?["5","6"]:["6","5"];3 C=H?[D.5(),D.6()]:[D.6(),D.5()];3 I=/([0-9]+)%/.r(N);a(I){N=q(I[1])/p*C[G=="b"?0:1]}a(G=="8"){D.h(M?{6:0,5:N}:{6:N,5:0})}3 L={},K={};L[F[0]]=G=="8"?C[0]:N;K[F[1]]=G=="8"?C[1]:0;D.g(L,B.f/2,B.7.e).g(K,B.f/2,B.7.e,c(){a(G=="b"){E.b()}A.4.o(E,J);A.4.n(E);a(B.d){B.d.m(E[0],l)}E.k()})})}})(j)',57,57,'|||var|effects|width|height|options|show||if|hide|function|callback|easing|duration|animate|css|this|jQuery|dequeue|arguments|apply|removeWrapper|restore|100|parseInt|exec|hidden|overflow|createWrapper|save|horizFirst|15|size|mode|||||||||||||||setMode|left|top|position|queue|return|fold'.split('|'),0,{})) + diff --git a/wp-content/themes/vanilla/js/jquery/effects.highlight.js b/wp-content/themes/vanilla/js/jquery/effects.highlight.js new file mode 100755 index 000000000..74aff02fe --- /dev/null +++ b/wp-content/themes/vanilla/js/jquery/effects.highlight.js @@ -0,0 +1,2 @@ +eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(5(A){A.4.J=5(B){I 2.e(5(){1 E=A(2),D=["g","6","f"];1 H=A.4.z(E,B.9.y||"7");1 C=B.9.x||"#w";1 G=E.h("6");A.4.v(E,D);E.7();E.h({g:"u",6:C});1 F={6:G};3(H=="8"){F["f"]=0}E.t(F,{e:s,d:B.d,c:B.9.c,r:5(){3(H=="8"){E.8()}A.4.q(E,D);3(H=="7"&&a.p.o){2.n.m("l")}3(B.b){B.b.k(2,j)}E.i()}})})}})(a)',46,46,'|var|this|if|effects|function|backgroundColor|show|hide|options|jQuery|callback|easing|duration|queue|opacity|backgroundImage|css|dequeue|arguments|apply|filter|removeAttribute|style|msie|browser|restore|complete|false|animate|none|save|ffff99|color|mode|setMode|||||||||return|highlight'.split('|'),0,{})) + diff --git a/wp-content/themes/vanilla/js/jquery/effects.pulsate.js b/wp-content/themes/vanilla/js/jquery/effects.pulsate.js new file mode 100755 index 000000000..74ba2671c --- /dev/null +++ b/wp-content/themes/vanilla/js/jquery/effects.pulsate.js @@ -0,0 +1,2 @@ +eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(7(A){A.n.z=7(B){y d.j(7(){f 3=A(d);f h=A.n.x(3,B.4.w||"m");f c=B.4.v||5;b(h=="g"){c--}b(3.u(":t")){3.s("6",0);3.m();3.a({6:1},B.9/2,B.4.8);c=c-2}r(f C=0;C<c;C++){3.a({6:0},B.9/2,B.4.8).a({6:1},B.9/2,B.4.8)}b(h=="g"){3.a({6:0},B.9/2,B.4.8,7(){3.g();b(B.e){B.e.l(d,k)}})}q{3.a({6:0},B.9/2,B.4.8).a({6:1},B.9/2,B.4.8,7(){b(B.e){B.e.l(d,k)}})}3.j("p",7(){3.i()});3.i()})}})(o)',39,39,'|||D|options||opacity|function|easing|duration|animate|if|E|this|callback|var|hide|F|dequeue|queue|arguments|apply|show|effects|jQuery|fx|else|for|css|hidden|is|times|mode|setMode|return|pulsate|||'.split('|'),0,{})) + diff --git a/wp-content/themes/vanilla/js/jquery/effects.scale.js b/wp-content/themes/vanilla/js/jquery/effects.scale.js new file mode 100755 index 000000000..e33b50caf --- /dev/null +++ b/wp-content/themes/vanilla/js/jquery/effects.scale.js @@ -0,0 +1,2 @@ +eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(b(A){A.7.1y=b(B){U d.o(b(){5 F=A(d);5 C=A.13(s,{},B.9);5 H=A.7.T(F,B.9.k||"f");5 G=V(B.9.t)||1x;C.12=s;5 E={6:F.6(),4:F.4()};5 D=G/l;F.2=(H=="f")?E:{6:E.6*D,4:E.4*D};C.2=F.2;C.t=(H=="f")?G:l;C.k=H;F.j("S",C,B.h,B.m);F.u()})};A.7.S=b(B){U d.o(b(){5 G=A(d);5 D=A.13(s,{},B.9);5 J=A.7.T(G,B.9.k||"j");5 H=V(B.9.t)||(V(B.9.t)==0?0:(J=="f"?0:l));5 I=B.9.1w||"i";5 C=B.9.R;a(J!="j"){D.R=C||["1v","1u"];D.n=s}5 F={6:G.6(),4:G.4()};G.2=B.9.2||(J=="z"?{6:0,4:0}:F);5 E={y:I!="1t"?(H/l):1,x:I!="1s"?(H/l):1};G.3={6:F.6*E.y,4:F.4*E.x};a(B.9.12){a(J=="z"){G.2.g=0;G.3.g=1}a(J=="f"){G.2.g=1;G.3.g=0}}D.2=G.2;D.3=G.3;D.k=J;G.j("11",D,B.h,B.m);G.u()})};A.7.11=b(B){U d.o(b(){5 C=A(d),N=["10","r","q","4","6","p","g"];5 M=["10","r","q","p","g"];5 J=["4","6","p"];5 P=["1r"];5 K=["1q","1p","1o","1n"];5 F=["1m","1l","1k","1j"];5 G=A.7.T(C,B.9.k||"j");5 I=B.9.n||W;5 E=B.9.S||"i";5 O=B.9.R;5 D={6:C.6(),4:C.4()};C.2=B.9.2||D;C.3=B.9.3||D;a(O){5 H=A.7.1i(O,D);C.2.r=(D.6-C.2.6)*H.y;C.2.q=(D.4-C.2.4)*H.x;C.3.r=(D.6-C.3.6)*H.y;C.3.q=(D.4-C.3.4)*H.x}5 L={2:{y:C.2.6/D.6,x:C.2.4/D.4},3:{y:C.3.6/D.6,x:C.3.4/D.4}};a(E=="1h"||E=="i"){a(L.2.y!=L.3.y){N=N.e(K);C.2=A.7.c(C,K,L.2.y,C.2);C.3=A.7.c(C,K,L.3.y,C.3)}a(L.2.x!=L.3.x){N=N.e(F);C.2=A.7.c(C,F,L.2.x,C.2);C.3=A.7.c(C,F,L.3.x,C.3)}}a(E=="Z"||E=="i"){a(L.2.y!=L.3.y){N=N.e(P);C.2=A.7.c(C,P,L.2.y,C.2);C.3=A.7.c(C,P,L.3.y,C.3)}}A.7.Y(C,I?N:M);C.z();A.7.1g(C);C.w("p","1f").w(C.2);a(E=="Z"||E=="i"){K=K.e(["1e","1d"]).e(P);F=F.e(["1c","1b"]);J=N.e(K).e(F);C.1a("*[4]").19(b(){8=A(d);a(I){A.7.Y(8,J)}5 Q={6:8.6(),4:8.4()};8.2={6:Q.6*L.2.y,4:Q.4*L.2.x};8.3={6:Q.6*L.3.y,4:Q.4*L.3.x};a(L.2.y!=L.3.y){8.2=A.7.c(8,K,L.2.y,8.2);8.3=A.7.c(8,K,L.3.y,8.3)}a(L.2.x!=L.3.x){8.2=A.7.c(8,F,L.2.x,8.2);8.3=A.7.c(8,F,L.3.x,8.3)}8.w(8.2);8.X(8.3,B.h,B.9.v,b(){a(I){A.7.n(8,J)}})})}C.X(C.3,{o:W,h:B.h,v:B.9.v,18:b(){a(G=="f"){C.f()}A.7.n(C,I?N:M);A.7.17(C);a(B.m){B.m.16(d,15)}C.u()}})})}})(14)',62,97,'||from|to|width|var|height|effects|child|options|if|function|setTransition|this|concat|hide|opacity|duration|both|effect|mode|100|callback|restore|queue|overflow|left|top|true|percent|dequeue|easing|css|||show||||||||||||||||||origin|scale|setMode|return|parseInt|false|animate|save|content|position|size|fade|extend|jQuery|arguments|apply|removeWrapper|complete|each|find|marginRight|marginLeft|marginBottom|marginTop|hidden|createWrapper|box|getBaseline|paddingRight|paddingLeft|borderRightWidth|borderLeftWidth|paddingBottom|paddingTop|borderBottomWidth|borderTopWidth|fontSize|vertical|horizontal|center|middle|direction|150|puff'.split('|'),0,{})) + diff --git a/wp-content/themes/vanilla/js/jquery/effects.shake.js b/wp-content/themes/vanilla/js/jquery/effects.shake.js new file mode 100755 index 000000000..bd2a2dfb4 --- /dev/null +++ b/wp-content/themes/vanilla/js/jquery/effects.shake.js @@ -0,0 +1,2 @@ +eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(6(A){A.5.U=6(B){T b.d(6(){4 E=A(b),K=["S","g","a"];4 J=A.5.R(E,B.0.Q||"P");4 M=B.0.z||"a";4 C=B.0.y||x;4 D=B.0.w||3;4 G=B.h||B.0.h||v;A.5.u(E,K);E.t();A.5.s(E);4 F=(M=="f"||M=="r")?"g":"a";4 O=(M=="f"||M=="a")?"9":"q";4 H={},N={},L={};H[F]=(O=="9"?"-=":"+=")+C;N[F]=(O=="9"?"+=":"-=")+C*2;L[F]=(O=="9"?"-=":"+=")+C*2;E.8(H,G,B.0.7);p(4 I=1;I<D;I++){E.8(N,G,B.0.7).8(L,G,B.0.7)}E.8(N,G,B.0.7).8(H,G/2,B.0.7,6(){A.5.o(E,K);A.5.n(E);m(B.e){B.e.l(b,k)}});E.d("j",6(){E.c()});E.c()})}})(i)',57,57,'options||||var|effects|function|easing|animate|pos|left|this|dequeue|queue|callback|up|top|duration|jQuery|fx|arguments|apply|if|removeWrapper|restore|for|neg|down|createWrapper|show|save|140|times|20|distance|direction||||||||||||||||effect|mode|setMode|position|return|shake'.split('|'),0,{})) + diff --git a/wp-content/themes/vanilla/js/jquery/effects.slide.js b/wp-content/themes/vanilla/js/jquery/effects.slide.js new file mode 100755 index 000000000..3fc293f61 --- /dev/null +++ b/wp-content/themes/vanilla/js/jquery/effects.slide.js @@ -0,0 +1,2 @@ +eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(2(A){A.1.Q=2(B){P 7.e(2(){0 E=A(7),D=["O","9","6"];0 I=A.1.N(E,B.3.M||"5");0 H=B.3.L||"6";A.1.K(E,D);E.5();A.1.z(E).f({y:"x"});0 F=(H=="i"||H=="w")?"9":"6";0 C=(H=="i"||H=="6")?"4":"v";0 J=B.3.u||(F=="9"?E.t({h:g}):E.s({h:g}));8(I=="5"){E.f(F,C=="4"?-J:J)}0 G={};G[F]=(I=="5"?(C=="4"?"+=":"-="):(C=="4"?"-=":"+="))+J;E.r(G,{e:q,d:B.d,c:B.3.c,p:2(){8(I=="b"){E.b()}A.1.o(E,D);A.1.n(E);8(B.a){B.a.m(7,l)}E.k()}})})}})(j)',53,53,'var|effects|function|options|pos|show|left|this|if|top|callback|hide|easing|duration|queue|css|true|margin|up|jQuery|dequeue|arguments|apply|removeWrapper|restore|complete|false|animate|outerWidth|outerHeight|distance|neg|down|hidden|overflow|createWrapper|||||||||||save|direction|mode|setMode|position|return|slide'.split('|'),0,{})) + diff --git a/wp-content/themes/vanilla/js/jquery/effects.transfer.js b/wp-content/themes/vanilla/js/jquery/effects.transfer.js new file mode 100755 index 000000000..91cf7dd93 --- /dev/null +++ b/wp-content/themes/vanilla/js/jquery/effects.transfer.js @@ -0,0 +1,2 @@ +eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(5(A){A.9.o=5(B){R p.Q(5(){4 E=A(p);4 G=A.9.P(E,B.3.O||"N");4 F=A(B.3.M);4 C=E.l();4 D=A(\'<n L="K-9-o"></n>\').J(I.H);b(B.3.8){D.m(B.3.8)}D.m(B.3.8);D.1({7:C.7,6:C.6,k:E.j()-2(D.1("i"))-2(D.1("h")),g:E.f()-2(D.1("e"))-2(D.1("d")),z:"y"});C=F.l();c={7:C.7,6:C.6,k:F.j()-2(D.1("i"))-2(D.1("h")),g:F.f()-2(D.1("e"))-2(D.1("d"))};D.x(c,B.w,B.3.v,5(){D.u();b(B.a){B.a.t(E[0],s)}E.r()})})}})(q)',54,54,'|css|parseInt|options|var|function|left|top|className|effects|callback|if|animation|borderRightWidth|borderLeftWidth|outerWidth|width|borderBottomWidth|borderTopWidth|outerHeight|height|offset|addClass|div|transfer|this|jQuery|dequeue|arguments|apply|remove|easing|duration|animate|absolute|position||||||||body|document|appendTo|ui|class|to|effect|mode|setMode|queue|return'.split('|'),0,{})) + diff --git a/wp-content/themes/vanilla/js/jquery/jquery.ui.all.js b/wp-content/themes/vanilla/js/jquery/jquery.ui.all.js new file mode 100755 index 000000000..bd2c36bd2 --- /dev/null +++ b/wp-content/themes/vanilla/js/jquery/jquery.ui.all.js @@ -0,0 +1,2 @@ +eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(c(C){C.l={2z:{1T:c(E,F,H){b G=C.l[E].53;1R(b D in H){G.6i[D]=G.6i[D]||[];G.6i[D].4K([F,H[D]])}},23:c(D,F,E){b H=D.6i[F];if(!H){k}1R(b G=0;G<H.1m;G++){if(D.h[H[G][0]]){H[G][1].1t(D.r,E)}}}},9T:{},q:c(D){if(C.l.9T[D]){k C.l.9T[D]}b E=C(\'<1w 2u="l-lK">\').1n(D).q({17:"1W",p:"-gl",o:"-gl",4q:"6O"}).2K("1K");C.l.9T[D]=!!((!(/46|5q/).1B(E.q("2s"))||(/^[1-9]/).1B(E.q("t"))||(/^[1-9]/).1B(E.q("u"))||!(/5n/).1B(E.q("cz"))||!(/7i|ft\\(0, 0, 0, 0\\)/).1B(E.q("7Z"))));ca{C("1K").5i(0).cU(E.5i(0))}c8(F){}k C.l.9T[D]},7G:c(D){C(D).2L("5T","gi").q("gk","5n")},lJ:c(D){C(D).2L("5T","lI").q("gk","")},9N:c(G,E){b D=/p/.1B(E||"p")?"2f":"2e",F=Z;if(G[D]>0){k 1e}G[D]=1;F=G[D]>0?1e:Z;G[D]=0;k F}};b B=C.fn.1Z;C.fn.1Z=c(){C("*",8).1T(8).2m("1Z");k B.1t(8,1A)};c A(E,F,G){b D=C[E][F].9U||[];D=(2D D=="56"?D.7D(/,?\\s+/):D);k(C.7t(G,D)!=-1)}C.4b=c(E,D){b F=E.7D(".")[0];E=E.7D(".")[1];C.fn[E]=c(J){b H=(2D J=="56"),I=8a.53.dR.23(1A,1);if(H&&A(F,E,J)){b G=C.1i(8[0],E);k(G?G[J].1t(G,I):2p)}k 8.1x(c(){b K=C.1i(8,E);if(H&&K&&C.8N(K[J])){K[J].1t(K,I)}1g{if(!H){C.1i(8,E,1M C[F][E](8,J))}}})};C[F][E]=c(I,H){b G=8;8.7p=E;8.gj=F+"-"+E;8.h=C.1Q({},C.4b.4I,C[F][E].4I,H);8.r=C(I).2V("5a."+E,c(L,J,K){k G.5a(J,K)}).2V("9x."+E,c(K,J){k G.9x(J)}).2V("1Z",c(){k G.3t()});8.5l()};C[F][E].53=C.1Q({},C.4b.53,D)};C.4b.53={5l:c(){},3t:c(){8.r.49(8.7p)},9x:c(D){k 8.h[D]},5a:c(D,E){8.h[D]=E;if(D=="1I"){8.r[E?"1n":"1J"](8.gj+"-1I")}},87:c(){8.5a("1I",Z)},6N:c(){8.5a("1I",1e)}};C.4b.4I={1I:Z};C.l.4s={8d:c(){b D=8;8.r.2V("7A."+8.7p,c(E){k D.br(E)});if(C.22.3v){8.gh=8.r.2L("5T");8.r.2L("5T","gi")}8.lH=Z},8e:c(){8.r.3o("."+8.7p);(C.22.3v&&8.r.2L("5T",8.gh))},br:c(F){(8.6H&&8.9S(F));8.bf=F;b E=8,G=(F.lG==1),D=(2D 8.h.6j=="56"?C(F.1h).58().1T(F.1h).3u(8.h.6j).1m:Z);if(!G||D||!8.93(F)){k 1e}8.be=!8.h.80;if(!8.be){8.lF=7s(c(){E.be=1e},8.h.80)}if(8.df(F)&&8.de(F)){8.6H=(8.6h(F)!==Z);if(!8.6H){F.aD();k 1e}}8.dh=c(H){k E.gg(H)};8.dg=c(H){k E.9S(H)};C(1d).2V("gf."+8.7p,8.dh).2V("bx."+8.7p,8.dg);k Z},gg:c(D){if(C.22.3v&&!D.5P){k 8.9S(D)}if(8.6H){8.5o(D);k Z}if(8.df(D)&&8.de(D)){8.6H=(8.6h(8.bf,D)!==Z);(8.6H?8.5o(D):8.9S(D))}k!8.6H},9S:c(D){C(1d).3o("gf."+8.7p,8.dh).3o("bx."+8.7p,8.dg);if(8.6H){8.6H=Z;8.6g(D)}k Z},df:c(D){k(1f.2d(1f.3T(8.bf.3b-D.3b),1f.3T(8.bf.3c-D.3c))>=8.h.4L)},de:c(D){k 8.be},6h:c(D){},5o:c(D){},6g:c(D){},93:c(D){k 1e}};C.l.4s.4I={6j:19,4L:1,80:0}})(1v);(c(A){A.4b("l.24",A.1Q({},A.l.4s,{5l:c(){b B=8.h;if(B.1c=="db"&&!(/(2b|1W|4X)/).1B(8.r.q("17"))){8.r.q("17","2b")}8.r.1n("l-24");(B.1I&&8.r.1n("l-24-1I"));8.8d()},6h:c(F){b H=8.h;if(8.1c||H.1I||A(F.1h).is(".l-1k-1G")){k Z}b C=!8.h.1G||!A(8.h.1G,8.r).1m?1e:Z;A(8.h.1G,8.r).4J("*").7W().1x(c(){if(8==F.1h){C=1e}});if(!C){k Z}if(A.l.2H){A.l.2H.4T=8}8.1c=A.8N(H.1c)?A(H.1c.1t(8.r[0],[F])):(H.1c=="6B"?8.r.6B():8.r);if(!8.1c.58("1K").1m){8.1c.2K((H.2K=="1o"?8.r[0].3R:H.2K))}if(8.1c[0]!=8.r[0]&&!(/(4X|1W)/).1B(8.1c.q("17"))){8.1c.q("17","1W")}8.30={o:(1b(8.r.q("7X"),10)||0),p:(1b(8.r.q("7Y"),10)||0)};8.4H=8.1c.q("17");8.v=8.r.v();8.v={p:8.v.p-8.30.p,o:8.v.o-8.30.o};8.v.1F={o:F.3b-8.v.o,p:F.3c-8.v.p};8.2l=8.1c.2l();b B=8.2l.v();if(8.2l[0]==1d.1K&&A.22.lE){B={p:0,o:0}}8.v.1o={p:B.p+(1b(8.2l.q("64"),10)||0),o:B.o+(1b(8.2l.q("63"),10)||0)};b E=8.r.17();8.v.2b=8.4H=="2b"?{p:E.p-(1b(8.1c.q("p"),10)||0)+8.2l[0].2f,o:E.o-(1b(8.1c.q("o"),10)||0)+8.2l[0].2e}:{p:0,o:0};8.2O=8.8M(F);8.1Y={u:8.1c.2Y(),t:8.1c.2M()};if(H.3O){if(H.3O.o!=2p){8.v.1F.o=H.3O.o+8.30.o}if(H.3O.3e!=2p){8.v.1F.o=8.1Y.u-H.3O.3e+8.30.o}if(H.3O.p!=2p){8.v.1F.p=H.3O.p+8.30.p}if(H.3O.3h!=2p){8.v.1F.p=8.1Y.t-H.3O.3h+8.30.p}}if(H.1s){if(H.1s=="1o"){H.1s=8.1c[0].3R}if(H.1s=="1d"||H.1s=="3a"){8.1s=[0-8.v.2b.o-8.v.1o.o,0-8.v.2b.p-8.v.1o.p,A(H.1s=="1d"?1d:3a).u()-8.v.2b.o-8.v.1o.o-8.1Y.u-8.30.o-(1b(8.r.q("7f"),10)||0),(A(H.1s=="1d"?1d:3a).t()||1d.1K.3R.6W)-8.v.2b.p-8.v.1o.p-8.1Y.t-8.30.p-(1b(8.r.q("7g"),10)||0)]}if(!(/^(1d|3a|1o)$/).1B(H.1s)){b D=A(H.1s)[0];b G=A(H.1s).v();8.1s=[G.o+(1b(A(D).q("63"),10)||0)-8.v.2b.o-8.v.1o.o,G.p+(1b(A(D).q("64"),10)||0)-8.v.2b.p-8.v.1o.p,G.o+1f.2d(D.94,D.4N)-(1b(A(D).q("63"),10)||0)-8.v.2b.o-8.v.1o.o-8.1Y.u-8.30.o-(1b(8.r.q("7f"),10)||0),G.p+1f.2d(D.6W,D.4O)-(1b(A(D).q("64"),10)||0)-8.v.2b.p-8.v.1o.p-8.1Y.t-8.30.p-(1b(8.r.q("7g"),10)||0)]}}8.2a("2j",F);8.1Y={u:8.1c.2Y(),t:8.1c.2M()};if(A.l.2H&&!H.aY){A.l.2H.b0(8,F)}8.1c.1n("l-24-9F");8.5o(F);k 1e},4G:c(C,D){if(!D){D=8.17}b B=C=="1W"?1:-1;k{p:(D.p+8.v.2b.p*B+8.v.1o.p*B-(8.4H=="4X"||(8.4H=="1W"&&8.2l[0]==1d.1K)?0:8.2l[0].2f)*B+(8.4H=="4X"?A(1d).2f():0)*B+8.30.p*B),o:(D.o+8.v.2b.o*B+8.v.1o.o*B-(8.4H=="4X"||(8.4H=="1W"&&8.2l[0]==1d.1K)?0:8.2l[0].2e)*B+(8.4H=="4X"?A(1d).2e():0)*B+8.30.o*B)}},8M:c(E){b F=8.h;b B={p:(E.3c-8.v.1F.p-8.v.2b.p-8.v.1o.p+(8.4H=="4X"||(8.4H=="1W"&&8.2l[0]==1d.1K)?0:8.2l[0].2f)-(8.4H=="4X"?A(1d).2f():0)),o:(E.3b-8.v.1F.o-8.v.2b.o-8.v.1o.o+(8.4H=="4X"||(8.4H=="1W"&&8.2l[0]==1d.1K)?0:8.2l[0].2e)-(8.4H=="4X"?A(1d).2e():0))};if(!8.2O){k B}if(8.1s){if(B.o<8.1s[0]){B.o=8.1s[0]}if(B.p<8.1s[1]){B.p=8.1s[1]}if(B.o>8.1s[2]){B.o=8.1s[2]}if(B.p>8.1s[3]){B.p=8.1s[3]}}if(F.2J){b D=8.2O.p+1f.3E((B.p-8.2O.p)/F.2J[1])*F.2J[1];B.p=8.1s?(!(D<8.1s[1]||D>8.1s[3])?D:(!(D<8.1s[1])?D-F.2J[1]:D+F.2J[1])):D;b C=8.2O.o+1f.3E((B.o-8.2O.o)/F.2J[0])*F.2J[0];B.o=8.1s?(!(C<8.1s[0]||C>8.1s[2])?C:(!(C<8.1s[0])?C-F.2J[0]:C+F.2J[0])):C}k B},5o:c(B){8.17=8.8M(B);8.3n=8.4G("1W");8.17=8.2a("3F",B)||8.17;if(!8.h.2B||8.h.2B!="y"){8.1c[0].2Q.o=8.17.o+"2U"}if(!8.h.2B||8.h.2B!="x"){8.1c[0].2Q.p=8.17.p+"2U"}if(A.l.2H){A.l.2H.3F(8,B)}k Z},6g:c(C){b D=Z;if(A.l.2H&&!8.h.aY){b D=A.l.2H.5C(8,C)}if((8.h.68=="lD"&&!D)||(8.h.68=="lC"&&D)||8.h.68===1e){b B=8;A(8.1c).1E(8.2O,1b(8.h.68,10)||8b,c(){B.2a("2y",C);B.4j()})}1g{8.2a("2y",C);8.4j()}k Z},4j:c(){8.1c.1J("l-24-9F");if(8.h.1c!="db"&&!8.8L){8.1c.1Z()}8.1c=19;8.8L=Z},6i:{},dc:c(B){k{1c:8.1c,17:8.17,9M:8.3n,h:8.h}},2a:c(C,B){A.l.2z.23(8,C,[B,8.dc()]);if(C=="3F"){8.3n=8.4G("1W")}k 8.r.2m(C=="3F"?C:"3F"+C,[B,8.dc()],8.h[C])},3t:c(){if(!8.r.1i("24")){k}8.r.49("24").3o(".24").1J("l-24");8.8e()}}));A.1Q(A.l.24,{4I:{2K:"1o",2B:Z,6j:":1p",80:0,4L:1,1c:"db"}});A.l.2z.1T("24","2s",{2j:c(D,C){b B=A("1K");if(B.q("2s")){C.h.8K=B.q("2s")}B.q("2s",C.h.2s)},2y:c(C,B){if(B.h.8K){A("1K").q("2s",B.h.8K)}}});A.l.2z.1T("24","2C",{2j:c(D,C){b B=A(C.1c);if(B.q("2C")){C.h.8J=B.q("2C")}B.q("2C",C.h.2C)},2y:c(C,B){if(B.h.8J){A(B.1c).q("2C",B.h.8J)}}});A.l.2z.1T("24","1O",{2j:c(D,C){b B=A(C.1c);if(B.q("1O")){C.h.8I=B.q("1O")}B.q("1O",C.h.1O)},2y:c(C,B){if(B.h.8I){A(B.1c).q("1O",B.h.8I)}}});A.l.2z.1T("24","bd",{2j:c(C,B){A(B.h.bd===1e?"9d":B.h.bd).1x(c(){A(\'<1w 2u="l-24-bd" 2Q="aX: #lB;"></1w>\').q({u:8.4N+"2U",t:8.4O+"2U",17:"1W",1O:"0.lA",2C:95}).q(A(8).v()).2K("1K")})},2y:c(C,B){A("1w.lz").1x(c(){8.3R.cU(8)})}});A.l.2z.1T("24","5D",{2j:c(D,C){b E=C.h;b B=A(8).1i("24");E.3J=E.3J||20;E.3I=E.3I||20;B.3m=c(F){do{if(/46|5D/.1B(F.q("2X"))||(/46|5D/).1B(F.q("2X-y"))){k F}F=F.1o()}5y(F[0].3R);k A(1d)}(8);B.3l=c(F){do{if(/46|5D/.1B(F.q("2X"))||(/46|5D/).1B(F.q("2X-x"))){k F}F=F.1o()}5y(F[0].3R);k A(1d)}(8);if(B.3m[0]!=1d&&B.3m[0].6C!="7j"){B.8H=B.3m.v()}if(B.3l[0]!=1d&&B.3l[0].6C!="7j"){B.8G=B.3l.v()}},3F:c(D,C){b E=C.h;b B=A(8).1i("24");if(B.3m[0]!=1d&&B.3m[0].6C!="7j"){if((B.8H.p+B.3m[0].4O)-D.3c<E.3J){B.3m[0].2f=B.3m[0].2f+E.3I}if(D.3c-B.8H.p<E.3J){B.3m[0].2f=B.3m[0].2f-E.3I}}1g{if(D.3c-A(1d).2f()<E.3J){A(1d).2f(A(1d).2f()-E.3I)}if(A(3a).t()-(D.3c-A(1d).2f())<E.3J){A(1d).2f(A(1d).2f()+E.3I)}}if(B.3l[0]!=1d&&B.3l[0].6C!="7j"){if((B.8G.o+B.3l[0].4N)-D.3b<E.3J){B.3l[0].2e=B.3l[0].2e+E.3I}if(D.3b-B.8G.o<E.3J){B.3l[0].2e=B.3l[0].2e-E.3I}}1g{if(D.3b-A(1d).2e()<E.3J){A(1d).2e(A(1d).2e()-E.3I)}if(A(3a).u()-(D.3b-A(1d).2e())<E.3J){A(1d).2e(A(1d).2e()+E.3I)}}}});A.l.2z.1T("24","da",{2j:c(D,C){b B=A(8).1i("24");B.83=[];A(C.h.da===1e?".l-24":C.h.da).1x(c(){b F=A(8);b E=F.v();if(8!=B.r[0]){B.83.4K({2I:8,u:F.2Y(),t:F.2M(),p:E.p,o:E.o})}})},3F:c(J,N){b I=A(8).1i("24");b L=N.h.ly||20;b D=N.9M.o,C=D+I.1Y.u,P=N.9M.p,O=P+I.1Y.t;1R(b H=I.83.1m-1;H>=0;H--){b E=I.83[H].o,B=E+I.83[H].u,R=I.83[H].p,M=R+I.83[H].t;if(!((E-L<D&&D<B+L&&R-L<P&&P<M+L)||(E-L<D&&D<B+L&&R-L<O&&O<M+L)||(E-L<C&&C<B+L&&R-L<P&&P<M+L)||(E-L<C&&C<B+L&&R-L<O&&O<M+L))){7l}if(N.h.ge!="lx"){b K=1f.3T(R-O)<=20;b Q=1f.3T(M-P)<=20;b G=1f.3T(E-C)<=20;b F=1f.3T(B-D)<=20;if(K){N.17.p=I.4G("2b",{p:R-I.1Y.t,o:0}).p}if(Q){N.17.p=I.4G("2b",{p:M,o:0}).p}if(G){N.17.o=I.4G("2b",{p:0,o:E-I.1Y.u}).o}if(F){N.17.o=I.4G("2b",{p:0,o:B}).o}}if(N.h.ge!="lw"){b K=1f.3T(R-P)<=20;b Q=1f.3T(M-O)<=20;b G=1f.3T(E-D)<=20;b F=1f.3T(B-C)<=20;if(K){N.17.p=I.4G("2b",{p:R,o:0}).p}if(Q){N.17.p=I.4G("2b",{p:M-I.1Y.t,o:0}).p}if(G){N.17.o=I.4G("2b",{p:0,o:E}).o}if(F){N.17.o=I.4G("2b",{p:0,o:B-I.1Y.u}).o}}}}});A.l.2z.1T("24","gd",{2j:c(D,C){b B=A(8).1i("24");B.bc=[];A(C.h.gd).1x(c(){if(A.1i(8,"2P")){b E=A.1i(8,"2P");B.bc.4K({1V:E,gc:E.h.68});E.b1();E.2a("5Z",D,B)}})},2y:c(D,C){b B=A(8).1i("24");A.1x(B.bc,c(){if(8.1V.8T){8.1V.8T=0;B.8L=1e;8.1V.8L=Z;if(8.gc){8.1V.h.68=1e}8.1V.6g(D);8.1V.r.2m("lv",[D,A.1Q(8.1V.l(),{fU:B.r})],8.1V.h["fM"]);8.1V.h.1c=8.1V.h.d9}1g{8.1V.2a("81",D,B)}})},3F:c(F,E){b D=A(8).1i("24"),B=8;b C=c(K){b H=K.o,J=H+K.u,I=K.p,G=I+K.t;k(H<(8.3n.o+8.v.1F.o)&&(8.3n.o+8.v.1F.o)<J&&I<(8.3n.p+8.v.1F.p)&&(8.3n.p+8.v.1F.p)<G)};A.1x(D.bc,c(G){if(C.23(D,8.1V.4Z)){if(!8.1V.8T){8.1V.8T=1;8.1V.1S=A(B).6B().2K(8.1V.r).1i("2P-2I",1e);8.1V.h.d9=8.1V.h.1c;8.1V.h.1c=c(){k E.1c[0]};F.1h=8.1V.1S[0];8.1V.93(F,1e);8.1V.6h(F,1e,1e);8.1V.v.1F.p=D.v.1F.p;8.1V.v.1F.o=D.v.1F.o;8.1V.v.1o.o-=D.v.1o.o-8.1V.v.1o.o;8.1V.v.1o.p-=D.v.1o.p-8.1V.v.1o.p;D.2a("lu",F)}if(8.1V.1S){8.1V.5o(F)}}1g{if(8.1V.8T){8.1V.8T=0;8.1V.8L=1e;8.1V.h.68=Z;8.1V.6g(F,1e);8.1V.h.1c=8.1V.h.d9;8.1V.1S.1Z();if(8.1V.2Z){8.1V.2Z.1Z()}D.2a("lt",F)}}})}});A.l.2z.1T("24","6X",{2j:c(D,B){b C=A.ls(A(B.h.6X.lr)).5I(c(F,E){k(1b(A(F).q("2C"),10)||B.h.6X.2q)-(1b(A(E).q("2C"),10)||B.h.6X.2q)});A(C).1x(c(E){8.2Q.2C=B.h.6X.2q+E});8[0].2Q.2C=B.h.6X.2q+C.1m}})})(1v);(c(A){A.4b("l.52",{5l:c(){8.r.1n("l-52");8.5G=0;8.7o=1;b C=8.h,B=C.6a;C=A.1Q(C,{6a:C.6a&&C.6a.3S==fD?C.6a:c(D){k A(D).is(B)}});8.bb={u:8.r[0].4N,t:8.r[0].4O};A.l.2H.8S.4K(8)},6i:{},l:c(B){k{24:(B.1S||B.r),1c:B.1c,17:B.17,9M:B.3n,h:8.h,r:8.r}},3t:c(){b B=A.l.2H.8S;1R(b C=0;C<B.1m;C++){if(B[C]==8){B.bm(C,1)}}8.r.1J("l-52 l-52-1I").49("52").3o(".52")},3r:c(C){b B=A.l.2H.4T;if(!B||(B.1S||B.r)[0]==8.r[0]){k}if(8.h.6a.23(8.r,(B.1S||B.r))){A.l.2z.23(8,"3r",[C,8.l(B)]);8.r.2m("lq",[C,8.l(B)],8.h.3r)}},7k:c(C){b B=A.l.2H.4T;if(!B||(B.1S||B.r)[0]==8.r[0]){k}if(8.h.6a.23(8.r,(B.1S||B.r))){A.l.2z.23(8,"7k",[C,8.l(B)]);8.r.2m("lp",[C,8.l(B)],8.h.7k)}},5C:c(D,C){b B=C||A.l.2H.4T;if(!B||(B.1S||B.r)[0]==8.r[0]){k Z}b E=Z;8.r.4J(".l-52").6L(".l-24-9F").1x(c(){b F=A.1i(8,"52");if(F.h.gb&&A.l.8R(B,A.1Q(F,{v:F.r.v()}),F.h.5g)){E=1e;k Z}});if(E){k Z}if(8.h.6a.23(8.r,(B.1S||B.r))){A.l.2z.23(8,"5C",[D,8.l(B)]);8.r.2m("5C",[D,8.l(B)],8.h.5C);k 1e}k Z},5Z:c(C){b B=A.l.2H.4T;A.l.2z.23(8,"5Z",[C,8.l(B)]);if(B){8.r.2m("lo",[C,8.l(B)],8.h.5Z)}},81:c(C){b B=A.l.2H.4T;A.l.2z.23(8,"81",[C,8.l(B)]);if(B){8.r.2m("ln",[C,8.l(B)],8.h.81)}}});A.1Q(A.l.52,{4I:{1I:Z,5g:"8R"}});A.l.8R=c(L,F,J){if(!F.v){k Z}b D=(L.3n||L.17.1W).o,C=D+L.1Y.u,I=(L.3n||L.17.1W).p,H=I+L.1Y.t;b E=F.v.o,B=E+F.bb.u,K=F.v.p,G=K+F.bb.t;5r(J){1u"fZ":k(E<D&&C<B&&K<I&&H<G);1D;1u"8R":k(E<D+(L.1Y.u/2)&&C-(L.1Y.u/2)<B&&K<I+(L.1Y.t/2)&&H-(L.1Y.t/2)<G);1D;1u"cO":k(E<((L.3n||L.17.1W).o+(L.7x||L.v.1F).o)&&((L.3n||L.17.1W).o+(L.7x||L.v.1F).o)<B&&K<((L.3n||L.17.1W).p+(L.7x||L.v.1F).p)&&((L.3n||L.17.1W).p+(L.7x||L.v.1F).p)<G);1D;1u"cP":k((I>=K&&I<=G)||(H>=K&&H<=G)||(I<K&&H>G))&&((D>=E&&D<=B)||(C>=E&&C<=B)||(D<E&&C>B));1D;5q:k Z;1D}};A.l.2H={4T:19,8S:[],b0:c(D,F){b B=A.l.2H.8S;b E=F?F.5H:19;1R(b C=0;C<B.1m;C++){if(B[C].h.1I||(D&&!B[C].h.6a.23(B[C].r,(D.1S||D.r)))){7l}B[C].57=B[C].r.q("4q")!="5n";if(!B[C].57){7l}B[C].v=B[C].r.v();B[C].bb={u:B[C].r[0].4N,t:B[C].r[0].4O};if(E=="lm"||E=="ll"){B[C].5Z.23(B[C],F)}}},5C:c(B,C){b D=Z;A.1x(A.l.2H.8S,c(){if(!8.h){k}if(!8.h.1I&&8.57&&A.l.8R(B,8,8.h.5g)){D=8.5C.23(8,C)}if(!8.h.1I&&8.57&&8.h.6a.23(8.r,(B.1S||B.r))){8.7o=1;8.5G=0;8.81.23(8,C)}});k D},3F:c(B,C){if(B.h.9H){A.l.2H.b0(B,C)}A.1x(A.l.2H.8S,c(){if(8.h.1I||8.ga||!8.57){k}b E=A.l.8R(B,8,8.h.5g);b G=!E&&8.5G==1?"7o":(E&&8.5G==0?"5G":19);if(!G){k}b F;if(8.h.gb){b D=8.r.58(".l-52:eq(0)");if(D.1m){F=A.1i(D[0],"52");F.ga=(G=="5G"?1:0)}}if(F&&G=="5G"){F["5G"]=0;F["7o"]=1;F.7k.23(F,C)}8[G]=1;8[G=="7o"?"5G":"7o"]=0;8[G=="5G"?"3r":"7k"].23(8,C);if(F&&G=="7o"){F["7o"]=0;F["5G"]=1;F.3r.23(F,C)}})}};A.l.2z.1T("52","ba",{5Z:c(C,B){A(8).1n(B.h.ba)},81:c(C,B){A(8).1J(B.h.ba)},5C:c(C,B){A(8).1J(B.h.ba)}});A.l.2z.1T("52","b9",{3r:c(C,B){A(8).1n(B.h.b9)},7k:c(C,B){A(8).1J(B.h.b9)},5C:c(C,B){A(8).1J(B.h.b9)}})})(1v);(c(A){A.4b("l.1k",A.1Q({},A.l.4s,{5l:c(){b M=8,N=8.h;b Q=8.r.q("17");8.d1=8.r;8.r.1n("l-1k").q({17:/6w/.1B(Q)?"2b":Q});A.1Q(N,{9O:!!(N.5F),1c:N.1c||N.51||N.1E?N.1c||"lk":19,6G:N.6G===1e?"l-1k-9R-1G":N.6G});b H="b3 g8 #lj";N.g6={"l-1k":{4q:"6O"},"l-1k-1G":{17:"1W",aX:"#g9",fc:"0.b3"},"l-1k-n":{2s:"n-2i",t:"5j",o:"31",3e:"31",d5:H},"l-1k-s":{2s:"s-2i",t:"5j",o:"31",3e:"31",d8:H},"l-1k-e":{2s:"e-2i",u:"5j",p:"31",3h:"31",d7:H},"l-1k-w":{2s:"w-2i",u:"5j",p:"31",3h:"31",d6:H},"l-1k-3X":{2s:"3X-2i",u:"5j",t:"5j",d7:H,d8:H},"l-1k-3W":{2s:"3W-2i",u:"5j",t:"5j",d8:H,d6:H},"l-1k-4d":{2s:"4d-2i",u:"5j",t:"5j",d7:H,d5:H},"l-1k-3V":{2s:"3V-2i",u:"5j",t:"5j",d6:H,d5:H}};N.d4={"l-1k-1G":{aX:"#g9",a8:"b3 g8 #lh",t:"g7",u:"g7"},"l-1k-n":{2s:"n-2i",p:"31",o:"45%"},"l-1k-s":{2s:"s-2i",3h:"31",o:"45%"},"l-1k-e":{2s:"e-2i",3e:"31",p:"45%"},"l-1k-w":{2s:"w-2i",o:"31",p:"45%"},"l-1k-3X":{2s:"3X-2i",3e:"31",3h:"31"},"l-1k-3W":{2s:"3W-2i",o:"31",3h:"31"},"l-1k-3V":{2s:"3V-2i",o:"31",p:"31"},"l-1k-4d":{2s:"4d-2i",3e:"31",p:"31"}};N.d3=8.r[0].4l;if(N.d3.3i(/lg|b4|1p|4o|5P|86/i)){b B=8.r;if(/2b/.1B(B.q("17"))&&A.22.7v){B.q({17:"2b",p:"46",o:"46"})}B.8c(A(\'<1w 2u="l-d0" 2Q="2X: 3H;"></1w>\').q({17:B.q("17"),u:B.2Y(),t:B.2M(),p:B.q("p"),o:B.q("o")}));b J=8.r;8.r=8.r.1o();8.r.1i("1k",8);8.r.q({7X:J.q("7X"),7Y:J.q("7Y"),7f:J.q("7f"),7g:J.q("7g")});J.q({7X:0,7Y:0,7f:0,7g:0});if(A.22.9Z&&N.aD){J.q("2i","5n")}N.6F=J.q({17:"6w",f4:1,4q:"6O"});8.r.q({3U:J.q("3U")});8.9Q()}if(!N.3d){N.3d=!A(".l-1k-1G",8.r).1m?"e,s,3X":{n:".l-1k-n",e:".l-1k-e",s:".l-1k-s",w:".l-1k-w",3X:".l-1k-3X",3W:".l-1k-3W",4d:".l-1k-4d",3V:".l-1k-3V"}}if(N.3d.3S==aC){N.2C=N.2C||95;if(N.3d=="lf"){N.3d="n,e,s,w,3X,3W,4d,3V"}b O=N.3d.7D(",");N.3d={};b G={1G:"17: 1W; 4q: 5n; 2X:3H;",n:"p: 7n; u:2T%;",e:"3e: 7n; t:2T%;",s:"3h: 7n; u:2T%;",w:"o: 7n; t:2T%;",3X:"3h: 7n; 3e: 31;",3W:"3h: 7n; o: 31;",4d:"p: 7n; 3e: 31;",3V:"p: 7n; o: 31;"};1R(b R=0;R<O.1m;R++){b S=A.fs(O[R]),L=N.g6,F="l-1k-"+S,C=!A.l.q(F)&&!N.6G,P=A.l.q("l-1k-9R-1G"),T=A.1Q(L[F],L["l-1k-1G"]),D=A.1Q(N.d4[F],!P?N.d4["l-1k-1G"]:{});b K=/3W|3X|4d|3V/.1B(S)?{2C:++N.2C}:{};b I=(C?G[S]:""),E=A([\'<1w 2u="l-1k-1G \',F,\'" 2Q="\',I,G.1G,\'"></1w>\'].7r("")).q(K);N.3d[S]=".l-1k-"+S;8.r.5s(E.q(C?T:{}).q(N.6G?D:{}).1n(N.6G?"l-1k-9R-1G":"").1n(N.6G))}if(N.6G){8.r.1n("l-1k-9R").q(!A.l.q("l-1k-9R")?{}:{})}}8.g5=c(Y){Y=Y||8.r;1R(b V in N.3d){if(N.3d[V].3S==aC){N.3d[V]=A(N.3d[V],8.r).1y()}if(N.7i){N.3d[V].q({1O:0})}if(8.r.is(".l-d0")&&N.d3.3i(/b4|1p|4o|5P/i)){b W=A(N.3d[V],8.r),X=0;X=/3W|4d|3V|3X|n|s/.1B(V)?W.2M():W.2Y();b U=["bv",/4d|3V|n/.1B(V)?"le":/3X|3W|s/.1B(V)?"ld":/^e$/.1B(V)?"lc":"lb"].7r("");if(!N.7i){Y.q(U,X)}8.9Q()}if(!A(N.3d[V]).1m){7l}}};8.g5(8.r);N.8Q=A(".l-1k-1G",M.r);if(N.7G){N.8Q.1x(c(U,V){A.l.7G(V)})}N.8Q.la(c(){if(!N.b8){if(8.8g){b U=8.8g.3i(/l-1k-(3X|3W|4d|3V|n|e|s|w)/i)}M.2B=N.2B=U&&U[1]?U[1]:"3X"}});if(N.g0){N.8Q.1C();A(M.r).1n("l-1k-d2").ae(c(){A(8).1J("l-1k-d2");N.8Q.1y()},c(){if(!N.b8){A(8).1n("l-1k-d2");N.8Q.1C()}})}8.8d()},6i:{},l:c(){k{d1:8.d1,r:8.r,1c:8.1c,17:8.17,1r:8.1r,h:8.h,5h:8.5h,2O:8.2O}},2a:c(C,B){A.l.2z.23(8,C,[B,8.l()]);if(C!="2i"){8.r.2m(["2i",C].7r(""),[B,8.l()],8.h[C])}},3t:c(){b D=8.r,C=D.l9(".l-1k").5i(0);8.8e();b B=c(E){A(E).1J("l-1k l-1k-1I").49("1k").3o(".1k").4J(".l-1k-1G").1Z()};B(D);if(D.is(".l-d0")&&C){D.1o().5s(A(C).q({17:D.q("17"),u:D.2Y(),t:D.2M(),p:D.q("p"),o:D.q("o")})).4R().1Z();B(C)}},6h:c(K){if(8.h.1I){k Z}b J=Z;1R(b H in 8.h.3d){if(A(8.h.3d[H])[0]==K.1h){J=1e}}if(!J){k Z}b C=8.h,B=8.r.17(),D=8.r,I=c(O){k 1b(O,10)||0},G=A.22.3v&&A.22.6V<7;C.b8=1e;C.cZ={p:A(1d).2f(),o:A(1d).2e()};if(D.is(".l-24")||(/1W/).1B(D.q("17"))){b M=A.22.3v&&!C.1s&&(/1W/).1B(D.q("17"))&&!(/2b/).1B(D.1o().q("17"));b L=M?C.cZ.p:0,F=M?C.cZ.o:0;D.q({17:"1W",p:(B.p+L),o:(B.o+F)})}if(A.22.7v&&/2b/.1B(D.q("17"))){D.q({17:"2b",p:"46",o:"46"})}8.g1();b N=I(8.1c.q("o")),E=I(8.1c.q("p"));if(C.1s){N+=A(C.1s).2e()||0;E+=A(C.1s).2f()||0}8.v=8.1c.v();8.17={o:N,p:E};8.1r=C.1c||G?{u:D.2Y(),t:D.2M()}:{u:D.u(),t:D.t()};8.5h=C.1c||G?{u:D.2Y(),t:D.2M()}:{u:D.u(),t:D.t()};8.2O={o:N,p:E};8.7m={u:D.2Y()-D.u(),t:D.2M()-D.t()};8.g4={o:K.3b,p:K.3c};C.5F=(2D C.5F=="8l")?C.5F:((8.5h.t/8.5h.u)||1);if(C.cX){A("1K").q("2s",8.2B+"-2i")}8.2a("2j",K);k 1e},5o:c(I){b D=8.1c,C=8.h,J={},M=8,F=8.g4,K=8.2B;b N=(I.3b-F.o)||0,L=(I.3c-F.p)||0;b E=8.69[K];if(!E){k Z}b H=E.1t(8,[I,N,L]),G=A.22.3v&&A.22.6V<7,B=8.7m;if(C.9O||I.b5){H=8.g3(H,I)}H=8.g2(H,I);8.2a("2i",I);D.q({p:8.17.p+"2U",o:8.17.o+"2U",u:8.1r.u+"2U",t:8.1r.t+"2U"});if(!C.1c&&C.6F){8.9Q()}8.cV(H);8.r.2m("2i",[I,8.l()],8.h["2i"]);k Z},6g:c(I){8.h.b8=Z;b E=8.h,H=c(M){k 1b(M,10)||0},K=8;if(E.1c){b D=E.6F,B=D&&(/b4/i).1B(D.5i(0).4l),C=B&&A.l.9N(D.5i(0),"o")?0:K.7m.t,G=B?0:K.7m.u;b L={u:(K.1r.u-G),t:(K.1r.t-C)},F=(1b(K.r.q("o"),10)+(K.17.o-K.2O.o))||19,J=(1b(K.r.q("p"),10)+(K.17.p-K.2O.p))||19;if(!E.1E){8.r.q(A.1Q(L,{p:J,o:F}))}if(E.1c&&!E.1E){8.9Q()}}if(E.cX){A("1K").q("2s","46")}8.2a("2y",I);if(E.1c){8.1c.1Z()}k Z},cV:c(B){b C=8.h;8.v=8.1c.v();if(B.o){8.17.o=B.o}if(B.p){8.17.p=B.p}if(B.t){8.1r.t=B.t}if(B.u){8.1r.u=B.u}},g3:c(D,E){b F=8.h,G=8.17,C=8.1r,B=8.2B;if(D.t){D.u=(C.t/F.5F)}1g{if(D.u){D.t=(C.u*F.5F)}}if(B=="3W"){D.o=G.o+(C.u-D.u);D.p=19}if(B=="3V"){D.p=G.p+(C.t-D.t);D.o=G.o+(C.u-D.u)}k D},g2:c(H,I){b F=8.1c,E=8.h,N=E.9O||I.b5,M=8.2B,P=H.u&&E.6Z&&E.6Z<H.u,J=H.t&&E.6Y&&E.6Y<H.t,D=H.u&&E.5N&&E.5N>H.u,O=H.t&&E.5O&&E.5O>H.t;if(D){H.u=E.5N}if(O){H.t=E.5O}if(P){H.u=E.6Z}if(J){H.t=E.6Y}b C=8.2O.o+8.5h.u,L=8.17.p+8.1r.t;b G=/3W|3V|w/.1B(M),B=/3V|4d|n/.1B(M);if(D&&G){H.o=C-E.5N}if(P&&G){H.o=C-E.6Z}if(O&&B){H.p=L-E.5O}if(J&&B){H.p=L-E.6Y}b K=!H.u&&!H.t;if(K&&!H.o&&H.p){H.p=19}1g{if(K&&!H.p&&H.o){H.o=19}}k H},9Q:c(){b F=8.h;if(!F.6F){k}b D=F.6F,C=8.1c||8.r;if(!F.8P){b B=[D.q("64"),D.q("aK"),D.q("aL"),D.q("63")],E=[D.q("fb"),D.q("f8"),D.q("fa"),D.q("f9")];F.8P=A.6d(B,c(G,I){b H=1b(G,10)||0,J=1b(E[I],10)||0;k H+J})}D.q({t:(C.t()-F.8P[0]-F.8P[2])+"2U",u:(C.u()-F.8P[1]-F.8P[3])+"2U"})},g1:c(){b C=8.r,F=8.h;8.cY=C.v();if(F.1c){8.1c=8.1c||A(\'<1w 2Q="2X:3H;"></1w>\');b B=A.22.3v&&A.22.6V<7,D=(B?1:0),E=(B?2:-1);8.1c.1n(F.1c).q({u:C.2Y()+E,t:C.2M()+E,17:"1W",o:8.cY.o-D+"2U",p:8.cY.p-D+"2U",2C:++F.2C});8.1c.2K("1K");if(F.7G){A.l.7G(8.1c.5i(0))}}1g{8.1c=C}},69:{e:c(D,C,B){k{u:8.5h.u+C}},w:c(F,C,B){b G=8.h,D=8.5h,E=8.2O;k{o:E.o+C,u:D.u-C}},n:c(F,C,B){b G=8.h,D=8.5h,E=8.2O;k{p:E.p+B,t:D.t-B}},s:c(D,C,B){k{t:8.5h.t+B}},3X:c(D,C,B){k A.1Q(8.69.s.1t(8,1A),8.69.e.1t(8,[D,C,B]))},3W:c(D,C,B){k A.1Q(8.69.s.1t(8,1A),8.69.w.1t(8,[D,C,B]))},4d:c(D,C,B){k A.1Q(8.69.n.1t(8,1A),8.69.e.1t(8,[D,C,B]))},3V:c(D,C,B){k A.1Q(8.69.n.1t(8,1A),8.69.w.1t(8,[D,C,B]))}}}));A.1Q(A.l.1k,{4I:{6j:":1p",4L:1,80:0,aD:1e,7i:Z,5N:10,5O:10,5F:Z,7G:1e,cX:1e,g0:Z,6G:Z}});A.l.2z.1T("1k","1s",{2j:c(I,K){b E=K.h,M=A(8).1i("1k"),G=M.r;b C=E.1s,F=(C l8 A)?C.5i(0):(/1o/.1B(C))?G.1o().5i(0):C;if(!F){k}M.cW=A(F);if(/1d/.1B(C)||C==1d){M.9P={o:0,p:0};M.b6={o:0,p:0};M.8O={r:A(1d),o:0,p:0,u:A(1d).u(),t:A(1d).t()||1d.1K.3R.6W}}1g{M.9P=A(F).v();M.b6=A(F).17();M.b7={t:A(F).9v(),u:A(F).aB()};b J=M.9P,B=M.b7.t,H=M.b7.u,D=(A.l.9N(F,"o")?F.94:H),L=(A.l.9N(F)?F.6W:B);M.8O={r:F,o:J.o,p:J.p,u:D,t:L}}},2i:c(H,K){b E=K.h,N=A(8).1i("1k"),C=N.b7,J=N.9P,G=N.1r,I=N.17,L=E.9O||H.b5,B={p:0,o:0},D=N.cW;if(D[0]!=1d&&/6w/.1B(D.q("17"))){B=N.b6}if(I.o<(E.1c?J.o:B.o)){N.1r.u=N.1r.u+(E.1c?(N.17.o-J.o):(N.17.o-B.o));if(L){N.1r.t=N.1r.u*E.5F}N.17.o=E.1c?J.o:B.o}if(I.p<(E.1c?J.p:0)){N.1r.t=N.1r.t+(E.1c?(N.17.p-J.p):N.17.p);if(L){N.1r.u=N.1r.t/E.5F}N.17.p=E.1c?J.p:0}b F=(E.1c?N.v.o-J.o:(N.17.o-B.o))+N.7m.u,M=(E.1c?N.v.p-J.p:N.17.p)+N.7m.t;if(F+N.1r.u>=N.8O.u){N.1r.u=N.8O.u-F;if(L){N.1r.t=N.1r.u*E.5F}}if(M+N.1r.t>=N.8O.t){N.1r.t=N.8O.t-M;if(L){N.1r.u=N.1r.t/E.5F}}},2y:c(G,J){b C=J.h,L=A(8).1i("1k"),H=L.17,I=L.9P,B=L.b6,D=L.cW;b E=A(L.1c),M=E.v(),K=E.aB(),F=E.9v();if(C.1c&&!C.1E&&/2b/.1B(D.q("17"))){A(8).q({o:(M.o-I.o),p:(M.p-I.p),u:K,t:F})}if(C.1c&&!C.1E&&/6w/.1B(D.q("17"))){A(8).q({o:B.o+(M.o-I.o),p:B.p+(M.p-I.p),u:K,t:F})}}});A.l.2z.1T("1k","2J",{2i:c(H,J){b D=J.h,L=A(8).1i("1k"),G=L.1r,E=L.5h,F=L.2O,K=L.2B,I=D.9O||H.b5;D.2J=2D D.2J=="8l"?[D.2J,D.2J]:D.2J;b C=1f.3E((G.u-E.u)/(D.2J[0]||1))*(D.2J[0]||1),B=1f.3E((G.t-E.t)/(D.2J[1]||1))*(D.2J[1]||1);if(/^(3X|s|e)$/.1B(K)){L.1r.u=E.u+C;L.1r.t=E.t+B}1g{if(/^(4d)$/.1B(K)){L.1r.u=E.u+C;L.1r.t=E.t+B;L.17.p=F.p-B}1g{if(/^(3W)$/.1B(K)){L.1r.u=E.u+C;L.1r.t=E.t+B;L.17.o=F.o-C}1g{L.1r.u=E.u+C;L.1r.t=E.t+B;L.17.p=F.p-B;L.17.o=F.o-C}}}}});A.l.2z.1T("1k","1E",{2y:c(I,K){b F=K.h,L=A(8).1i("1k");b E=F.6F,B=E&&(/b4/i).1B(E.5i(0).4l),C=B&&A.l.9N(E.5i(0),"o")?0:L.7m.t,H=B?0:L.7m.u;b D={u:(L.1r.u-H),t:(L.1r.t-C)},G=(1b(L.r.q("o"),10)+(L.17.o-L.2O.o))||19,J=(1b(L.r.q("p"),10)+(L.17.p-L.2O.p))||19;L.r.1E(A.1Q(D,J&&G?{p:J,o:G}:{}),{1z:F.l7||"aU",1N:F.l6||"9B",ct:c(){b M={u:1b(L.r.q("u"),10),t:1b(L.r.q("t"),10),p:1b(L.r.q("p"),10),o:1b(L.r.q("o"),10)};if(E){E.q({u:M.u,t:M.t})}L.cV(M);L.2a("1E",I)}})}});A.l.2z.1T("1k","51",{2j:c(E,D){b F=D.h,B=A(8).1i("1k"),G=F.6F,C=B.1r;if(!G){B.51=B.r.6B()}1g{B.51=G.6B()}B.51.q({1O:0.25,4q:"6O",17:"2b",t:C.t,u:C.u,3U:0,o:0,p:0}).1n("l-1k-51").1n(2D F.51=="56"?F.51:"");B.51.2K(B.1c)},2i:c(D,C){b E=C.h,B=A(8).1i("1k"),F=E.6F;if(B.51){B.51.q({17:"2b",t:B.1r.t,u:B.1r.u})}},2y:c(D,C){b E=C.h,B=A(8).1i("1k"),F=E.6F;if(B.51&&B.1c){B.1c.5i(0).cU(B.51.5i(0))}}});A.l.2z.1T("1k","5E",{2j:c(E,C){b F=C.h,B=A(8).1i("1k"),D=c(G){A(G).1x(c(){A(8).1i("1k-cT",{u:1b(A(8).u(),10),t:1b(A(8).t(),10),o:1b(A(8).q("o"),10),p:1b(A(8).q("p"),10)})})};if(2D(F.5E)=="6k"){if(F.5E.1m){F.5E=F.5E[0];D(F.5E)}1g{A.1x(F.5E,c(G,H){D(G)})}}1g{D(F.5E)}},2i:c(F,E){b G=E.h,C=A(8).1i("1k"),D=C.5h,I=C.2O;b H={t:(C.1r.t-D.t)||0,u:(C.1r.u-D.u)||0,p:(C.17.p-I.p)||0,o:(C.17.o-I.o)||0},B=c(J,K){A(J).1x(c(){b N=A(8).1i("1k-cT"),M={},L=K&&K.1m?K:["u","t","p","o"];A.1x(L||["u","t","p","o"],c(O,Q){b P=(N[Q]||0)+(H[Q]||0);if(P&&P>=0){M[Q]=P||19}});A(8).q(M)})};if(2D(G.5E)=="6k"){A.1x(G.5E,c(J,K){B(J,K)})}1g{B(G.5E)}},2y:c(C,B){A(8).49("1k-cT-2j")}})})(1v);(c(A){A.4b("l.3s",A.1Q({},A.l.4s,{5l:c(){b B=8;8.r.1n("l-3s");8.cQ=Z;b C;8.9L=c(){C=A(B.h.3u,B.r[0]);C.1x(c(){b D=A(8);b E=D.v();A.1i(8,"3s-2I",{r:8,$r:D,o:E.o,p:E.p,3e:E.o+D.u(),3h:E.p+D.t(),82:Z,1L:D.4a("l-1L"),4n:D.4a("l-4n"),3B:D.4a("l-3B")})})};8.9L();8.b2=C.1n("l-l5");8.8d();8.1c=A(1d.l4("1w")).q({a8:"b3 l3 fq"})},5e:c(){if(8.h.1I){8.87()}1g{8.6N()}},3t:c(){8.r.1J("l-3s l-3s-1I").49("3s").3o(".3s");8.8e()},6h:c(E){b C=8;8.cS=[E.3b,E.3c];if(8.h.1I){k}b D=8.h;8.b2=A(D.3u,8.r[0]);8.r.2m("l2",[E,{"3s":8.r[0],"h":D}],D.2j);A("1K").5s(8.1c);8.1c.q({"z-3D":2T,"17":"1W","o":E.di,"p":E.l1,"u":0,"t":0});if(D.fX){8.9L()}8.b2.3u(".l-1L").1x(c(){b F=A.1i(8,"3s-2I");F.82=1e;if(!E.4m){F.$r.1J("l-1L");F.1L=Z;F.$r.1n("l-3B");F.3B=1e;C.r.2m("cR",[E,{3s:C.r[0],3B:F.r,h:D}],D.3B)}});b B=Z;A(E.1h).58().7W().1x(c(){if(A.1i(8,"3s-2I")){B=1e}});k 8.h.l0?!B:1e},5o:c(I){b C=8;8.cQ=1e;if(8.h.1I){k}b E=8.h;b D=8.cS[0],H=8.cS[1],B=I.3b,G=I.3c;if(D>B){b F=B;B=D;D=F}if(H>G){b F=G;G=H;H=F}8.1c.q({o:D,p:H,u:B-D,t:G-H});8.b2.1x(c(){b J=A.1i(8,"3s-2I");if(!J||J.r==C.r[0]){k}b K=Z;if(E.5g=="cP"){K=(!(J.o>B||J.3e<D||J.p>G||J.3h<H))}1g{if(E.5g=="fZ"){K=(J.o>D&&J.3e<B&&J.p>H&&J.3h<G)}}if(K){if(J.1L){J.$r.1J("l-1L");J.1L=Z}if(J.3B){J.$r.1J("l-3B");J.3B=Z}if(!J.4n){J.$r.1n("l-4n");J.4n=1e;C.r.2m("kZ",[I,{3s:C.r[0],4n:J.r,h:E}],E.4n)}}1g{if(J.4n){if(I.4m&&J.82){J.$r.1J("l-4n");J.4n=Z;J.$r.1n("l-1L");J.1L=1e}1g{J.$r.1J("l-4n");J.4n=Z;if(J.82){J.$r.1n("l-3B");J.3B=1e}C.r.2m("cR",[I,{3s:C.r[0],3B:J.r,h:E}],E.3B)}}if(J.1L){if(!I.4m&&!J.82){J.$r.1J("l-1L");J.1L=Z;J.$r.1n("l-3B");J.3B=1e;C.r.2m("cR",[I,{3s:C.r[0],3B:J.r,h:E}],E.3B)}}}});k Z},6g:c(D){b B=8;8.cQ=Z;b C=8.h;A(".l-3B",8.r[0]).1x(c(){b E=A.1i(8,"3s-2I");E.$r.1J("l-3B");E.3B=Z;E.82=Z;B.r.2m("kY",[D,{3s:B.r[0],fY:E.r,h:C}],C.fY)});A(".l-4n",8.r[0]).1x(c(){b E=A.1i(8,"3s-2I");E.$r.1J("l-4n").1n("l-1L");E.4n=Z;E.1L=1e;E.82=1e;B.r.2m("kX",[D,{3s:B.r[0],1L:E.r,h:C}],C.1L)});8.r.2m("kW",[D,{3s:B.r[0],h:8.h}],8.h.2y);8.1c.1Z();k Z}}));A.1Q(A.l.3s,{4I:{4L:1,80:0,6j:":1p",2K:"1K",fX:1e,3u:"*",5g:"cP"}})})(1v);(c(B){c A(E,D){b C=B.22.9Z&&B.22.6V<kV;if(E.fW&&!C){k E.fW(D)}if(E.fV){k!!(E.fV(D)&16)}5y(D=D.3R){if(D==E){k 1e}}k Z}B.4b("l.2P",B.1Q({},B.l.4s,{5l:c(){b C=8.h;8.4Z={};8.r.1n("l-2P");8.9L();8.6E=8.2c.1m?(/o|3e/).1B(8.2c[0].2I.q("cI")):Z;if(!(/(2b|1W|4X)/).1B(8.r.q("17"))){8.r.q("17","2b")}8.v=8.r.v();8.8d()},6i:{},l:c(C){k{1c:(C||8)["1c"],2Z:(C||8)["2Z"]||B([]),17:(C||8)["17"],9M:(C||8)["3n"],h:8.h,r:8.r,2I:(C||8)["1S"],fU:C?C.r:19}},2a:c(F,E,C,D){B.l.2z.23(8,F,[E,8.l(C)]);if(!D){8.r.2m(F=="5I"?F:"5I"+F,[E,8.l(C)],8.h[F])}},fL:c(E){b C=(B.8N(8.h.2c)?8.h.2c.23(8.r):B(8.h.2c,8.r)).6L(".l-2P-1c");b D=[];E=E||{};C.1x(c(){b F=(B(8).2L(E.kU||"id")||"").3i(E.fT||(/(.+)[-=8Y](.+)/));if(F){D.4K((E.5Y||F[1])+"[]="+(E.5Y&&E.fT?F[1]:F[2]))}});k D.7r("&")},fK:c(C){b D=(B.8N(8.h.2c)?8.h.2c.23(8.r):B(8.h.2c,8.r)).6L(".l-2P-1c");b E=[];D.1x(c(){E.4K(B(8).2L(C||"id"))});k E},fQ:c(J){b E=8.3n.o,D=E+8.1Y.u,I=8.3n.p,H=I+8.1Y.t;b F=J.o,C=F+J.u,K=J.p,G=K+J.t;if(8.h.5g=="cO"||8.h.kT||(8.h.5g=="cJ"&&8.1Y[8.6E?"u":"t"]>J[8.6E?"u":"t"])){k(I+8.v.1F.p>K&&I+8.v.1F.p<G&&E+8.v.1F.o>F&&E+8.v.1F.o<C)}1g{k(F<E+(8.1Y.u/2)&&D-(8.1Y.u/2)<C&&K<I+(8.1Y.t/2)&&H-(8.1Y.t/2)<G)}},fP:c(J){b E=8.3n.o,D=E+8.1Y.u,I=8.3n.p,H=I+8.1Y.t;b F=J.o,C=F+J.u,K=J.p,G=K+J.t;if(8.h.5g=="cO"||(8.h.5g=="cJ"&&8.1Y[8.6E?"u":"t"]>J[8.6E?"u":"t"])){if(!(I+8.v.1F.p>K&&I+8.v.1F.p<G&&E+8.v.1F.o>F&&E+8.v.1F.o<C)){k Z}if(8.6E){if(E+8.v.1F.o>F&&E+8.v.1F.o<F+J.u/2){k 2}if(E+8.v.1F.o>F+J.u/2&&E+8.v.1F.o<C){k 1}}1g{if(I+8.v.1F.p>K&&I+8.v.1F.p<K+J.t/2){k 2}if(I+8.v.1F.p>K+J.t/2&&I+8.v.1F.p<G){k 1}}}1g{if(!(F<E+(8.1Y.u/2)&&D-(8.1Y.u/2)<C&&K<I+(8.1Y.t/2)&&H-(8.1Y.t/2)<G)){k Z}if(8.6E){if(D>F&&E<F){k 2}if(E<C&&D>C){k 1}}1g{if(H>K&&I<K){k 1}if(I<G&&H>G){k 2}}}k Z},9L:c(){8.b1();8.9H()},b1:c(){8.2c=[];8.2g=[8];b D=8.2c;b C=8;b F=[[B.8N(8.h.2c)?8.h.2c.23(8.r,19,{h:8.h,2I:8.1S}):B(8.h.2c,8.r),8]];if(8.h.cN){1R(b G=8.h.cN.1m-1;G>=0;G--){b I=B(8.h.cN[G]);1R(b E=I.1m-1;E>=0;E--){b H=B.1i(I[E],"2P");if(H&&!H.h.1I){F.4K([B.8N(H.h.2c)?H.h.2c.23(H.r):B(H.h.2c,H.r),H]);8.2g.4K(H)}}}}1R(b G=F.1m-1;G>=0;G--){F[G][0].1x(c(){B.1i(8,"2P-2I",F[G][1]);D.4K({2I:B(8),1V:F[G][1],u:0,t:0,o:0,p:0})})}},9H:c(D){if(8.2l){b C=8.2l.v();8.v.1o={p:C.p+8.9J.p,o:C.o+8.9J.o}}1R(b F=8.2c.1m-1;F>=0;F--){if(8.2c[F].1V!=8.9K&&8.9K&&8.2c[F].2I[0]!=8.1S[0]){7l}b E=8.h.fS?B(8.h.fS,8.2c[F].2I):8.2c[F].2I;if(!D){8.2c[F].u=E[0].4N;8.2c[F].t=E[0].4O}b G=E.v();8.2c[F].o=G.o;8.2c[F].p=G.p}if(8.h.cM&&8.h.cM.fR){8.h.cM.fR.23(8)}1g{1R(b F=8.2g.1m-1;F>=0;F--){b G=8.2g[F].r.v();8.2g[F].4Z.o=G.o;8.2g[F].4Z.p=G.p;8.2g[F].4Z.u=8.2g[F].r.2Y();8.2g[F].4Z.t=8.2g[F].r.2M()}}},3t:c(){8.r.1J("l-2P l-2P-1I").49("2P").3o(".2P");8.8e();1R(b C=8.2c.1m-1;C>=0;C--){8.2c[C].2I.49("2P-2I")}},cL:c(E){b C=E||8,F=C.h;if(F.2Z.3S==aC){b D=F.2Z;F.2Z={r:c(){k B("<1w></1w>").1n(D)[0]},9G:c(G,H){H.q(G.v()).q({u:G.2Y(),t:G.2M()})}}}C.2Z=B(F.2Z.r.23(C.r,C.1S)).2K("1K").q({17:"1W"});F.2Z.9G.23(C.r,C.1S,C.2Z)},fO:c(F){1R(b D=8.2g.1m-1;D>=0;D--){if(8.fQ(8.2g[D].4Z)){if(!8.2g[D].4Z.3r){if(8.9K!=8.2g[D]){b I=kS;b H=19;b E=8.3n[8.2g[D].6E?"o":"p"];1R(b C=8.2c.1m-1;C>=0;C--){if(!A(8.2g[D].r[0],8.2c[C].2I[0])){7l}b G=8.2c[C][8.2g[D].6E?"o":"p"];if(1f.3T(G-E)<I){I=1f.3T(G-E);H=8.2c[C]}}if(!H&&!8.h.fJ){7l}if(8.2Z){8.2Z.1Z()}if(8.2g[D].h.2Z){8.2g[D].cL(8)}1g{8.2Z=19}8.9K=8.2g[D];H?8.aZ(F,H,19,1e):8.aZ(F,19,8.2g[D].r,1e);8.2a("6Q",F);8.2g[D].2a("6Q",F,8)}8.2g[D].2a("3r",F,8);8.2g[D].4Z.3r=1}}1g{if(8.2g[D].4Z.3r){8.2g[D].2a("7k",F,8);8.2g[D].4Z.3r=0}}}},93:c(G,F){if(8.h.1I||8.h.5H=="6w"){k Z}8.b1();b E=19,D=8,C=B(G.1h).58().1x(c(){if(B.1i(8,"2P-2I")==D){E=B(8);k Z}});if(B.1i(G.1h,"2P-2I")==D){E=B(G.1h)}if(!E){k Z}if(8.h.1G&&!F){b H=Z;B(8.h.1G,E).4J("*").7W().1x(c(){if(8==G.1h){H=1e}});if(!H){k Z}}8.1S=E;k 1e},6h:c(H,F,C){b J=8.h;8.9K=8;8.9H();8.1c=2D J.1c=="c"?B(J.1c.1t(8.r[0],[H,8.1S])):8.1S.6B();if(!8.1c.58("1K").1m){B(J.2K!="1o"?J.2K:8.1S[0].3R)[0].fN(8.1c[0])}8.1c.q({17:"1W",4j:"5p"}).1n("l-2P-1c");8.30={o:(1b(8.1S.q("7X"),10)||0),p:(1b(8.1S.q("7Y"),10)||0)};8.v=8.1S.v();8.v={p:8.v.p-8.30.p,o:8.v.o-8.30.o};8.v.1F={o:H.3b-8.v.o,p:H.3c-8.v.p};8.2l=8.1c.2l();b D=8.2l.v();8.9J={p:(1b(8.2l.q("64"),10)||0),o:(1b(8.2l.q("63"),10)||0)};8.v.1o={p:D.p+8.9J.p,o:D.o+8.9J.o};8.2O=8.8M(H);8.cK={5V:8.1S.5V()[0],1o:8.1S.1o()[0]};8.1Y={u:8.1c.2Y(),t:8.1c.2M()};if(J.2Z){8.cL()}8.2a("2j",H);8.1Y={u:8.1c.2Y(),t:8.1c.2M()};if(J.3O){if(J.3O.o!=2p){8.v.1F.o=J.3O.o}if(J.3O.3e!=2p){8.v.1F.o=8.1Y.u-J.3O.3e}if(J.3O.p!=2p){8.v.1F.p=J.3O.p}if(J.3O.3h!=2p){8.v.1F.p=8.1Y.t-J.3O.3h}}if(J.1s){if(J.1s=="1o"){J.1s=8.1c[0].3R}if(J.1s=="1d"||J.1s=="3a"){8.1s=[0-8.v.1o.o,0-8.v.1o.p,B(J.1s=="1d"?1d:3a).u()-8.v.1o.o-8.1Y.u-8.30.o-(1b(8.r.q("7f"),10)||0),(B(J.1s=="1d"?1d:3a).t()||1d.1K.3R.6W)-8.v.1o.p-8.1Y.t-8.30.p-(1b(8.r.q("7g"),10)||0)]}if(!(/^(1d|3a|1o)$/).1B(J.1s)){b G=B(J.1s)[0];b I=B(J.1s).v();8.1s=[I.o+(1b(B(G).q("63"),10)||0)-8.v.1o.o,I.p+(1b(B(G).q("64"),10)||0)-8.v.1o.p,I.o+1f.2d(G.94,G.4N)-(1b(B(G).q("63"),10)||0)-8.v.1o.o-8.1Y.u-8.30.o-(1b(8.1S.q("7f"),10)||0),I.p+1f.2d(G.6W,G.4O)-(1b(B(G).q("64"),10)||0)-8.v.1o.p-8.1Y.t-8.30.p-(1b(8.1S.q("7g"),10)||0)]}}if(8.h.2Z!="6B"){8.1S.q("8B","3H")}if(!C){1R(b E=8.2g.1m-1;E>=0;E--){8.2g[E].2a("5Z",H,8)}}if(B.l.2H){B.l.2H.4T=8}if(B.l.2H&&!J.aY){B.l.2H.b0(8,H)}8.9F=1e;8.5o(H);k 1e},4G:c(D,E){if(!E){E=8.17}b C=D=="1W"?1:-1;k{p:(E.p+8.v.1o.p*C-(8.2l[0]==1d.1K?0:8.2l[0].2f)*C+8.30.p*C),o:(E.o+8.v.1o.o*C-(8.2l[0]==1d.1K?0:8.2l[0].2e)*C+8.30.o*C)}},8M:c(F){b G=8.h;b C={p:(F.3c-8.v.1F.p-8.v.1o.p+(8.2l[0]==1d.1K?0:8.2l[0].2f)),o:(F.3b-8.v.1F.o-8.v.1o.o+(8.2l[0]==1d.1K?0:8.2l[0].2e))};if(!8.2O){k C}if(8.1s){if(C.o<8.1s[0]){C.o=8.1s[0]}if(C.p<8.1s[1]){C.p=8.1s[1]}if(C.o>8.1s[2]){C.o=8.1s[2]}if(C.p>8.1s[3]){C.p=8.1s[3]}}if(G.2J){b E=8.2O.p+1f.3E((C.p-8.2O.p)/G.2J[1])*G.2J[1];C.p=8.1s?(!(E<8.1s[1]||E>8.1s[3])?E:(!(E<8.1s[1])?E-G.2J[1]:E+G.2J[1])):E;b D=8.2O.o+1f.3E((C.o-8.2O.o)/G.2J[0])*G.2J[0];C.o=8.1s?(!(D<8.1s[0]||D>8.1s[2])?D:(!(D<8.1s[0])?D-G.2J[0]:D+G.2J[0])):D}k C},5o:c(D){8.17=8.8M(D);8.3n=8.4G("1W");B.l.2z.23(8,"5I",[D,8.l()]);8.3n=8.4G("1W");8.1c[0].2Q.o=8.17.o+"2U";8.1c[0].2Q.p=8.17.p+"2U";1R(b C=8.2c.1m-1;C>=0;C--){b E=8.fP(8.2c[C]);if(!E){7l}if(8.2c[C].2I[0]!=8.1S[0]&&8.1S[E==1?"4g":"5V"]()[0]!=8.2c[C].2I[0]&&!A(8.1S[0],8.2c[C].2I[0])&&(8.h.5H=="kR-kQ"?!A(8.r[0],8.2c[C].2I[0]):1e)){8.6A=E==1?"61":"66";8.aZ(D,8.2c[C]);8.2a("6Q",D);1D}}8.fO(D);if(B.l.2H){B.l.2H.3F(8,D)}8.r.2m("5I",[D,8.l()],8.h["5I"]);k Z},aZ:c(H,G,D,F){D?D[0].fN(8.1S[0]):G.2I[0].3R.a0(8.1S[0],(8.6A=="61"?G.2I[0]:G.2I[0].eG));8.9I=8.9I?++8.9I:1;b E=8,C=8.9I;3a.7s(c(){if(C==E.9I){E.9H(!F)}},0);if(8.h.2Z){8.h.2Z.9G.23(8.r,8.1S,8.2Z)}},6g:c(E,D){if(B.l.2H&&!8.h.aY){B.l.2H.5C(8,E)}if(8.h.68){b C=8;b F=C.1S.v();if(C.2Z){C.2Z.1E({1O:"1C"},(1b(8.h.68,10)||8b)-50)}B(8.1c).1E({o:F.o-8.v.1o.o-C.30.o+(8.2l[0]==1d.1K?0:8.2l[0].2e),p:F.p-8.v.1o.p-C.30.p+(8.2l[0]==1d.1K?0:8.2l[0].2f)},1b(8.h.68,10)||8b,c(){C.4j(E)})}1g{8.4j(E,D)}k Z},4j:c(E,D){if(8.cK.5V!=8.1S.5V().6L(".l-2P-1c")[0]||8.cK.1o!=8.1S.1o()[0]){8.2a("9G",E,19,D)}if(!A(8.r[0],8.1S[0])){8.2a("1Z",E,19,D);1R(b C=8.2g.1m-1;C>=0;C--){if(A(8.2g[C].r[0],8.1S[0])){8.2g[C].2a("9G",E,8,D);8.2g[C].2a("fM",E,8,D)}}}1R(b C=8.2g.1m-1;C>=0;C--){8.2g[C].2a("81",E,8,D);if(8.2g[C].4Z.3r){8.2g[C].2a("7k",E,8);8.2g[C].4Z.3r=0}}8.9F=Z;if(8.8L){8.2a("2y",E,19,D);k Z}B(8.1S).q("8B","");if(8.2Z){8.2Z.1Z()}8.1c.1Z();8.1c=19;8.2a("2y",E,19,D);k 1e}}));B.1Q(B.l.2P,{9U:"fL fK",4I:{1c:"6B",5g:"cJ",4L:1,80:0,5D:1e,3J:20,3I:20,6j:":1p",2c:"> *",2C:95,fJ:1e,2K:"1o"}});B.l.2z.1T("2P","2s",{2j:c(E,D){b C=B("1K");if(C.q("2s")){D.h.8K=C.q("2s")}C.q("2s",D.h.2s)},2y:c(D,C){if(C.h.8K){B("1K").q("2s",C.h.8K)}}});B.l.2z.1T("2P","2C",{2j:c(E,D){b C=D.1c;if(C.q("2C")){D.h.8J=C.q("2C")}C.q("2C",D.h.2C)},2y:c(D,C){if(C.h.8J){B(C.1c).q("2C",C.h.8J)}}});B.l.2z.1T("2P","1O",{2j:c(E,D){b C=D.1c;if(C.q("1O")){D.h.8I=C.q("1O")}C.q("1O",D.h.1O)},2y:c(D,C){if(C.h.8I){B(C.1c).q("1O",C.h.8I)}}});B.l.2z.1T("2P","5D",{2j:c(E,D){b F=D.h;b C=B(8).1i("2P");C.3m=c(G){do{if(/46|5D/.1B(G.q("2X"))||(/46|5D/).1B(G.q("2X-y"))){k G}G=G.1o()}5y(G[0].3R);k B(1d)}(C.1S);C.3l=c(G){do{if(/46|5D/.1B(G.q("2X"))||(/46|5D/).1B(G.q("2X-x"))){k G}G=G.1o()}5y(G[0].3R);k B(1d)}(C.1S);if(C.3m[0]!=1d&&C.3m[0].6C!="7j"){C.8H=C.3m.v()}if(C.3l[0]!=1d&&C.3l[0].6C!="7j"){C.8G=C.3l.v()}},5I:c(E,D){b F=D.h;b C=B(8).1i("2P");if(C.3m[0]!=1d&&C.3m[0].6C!="7j"){if((C.8H.p+C.3m[0].4O)-E.3c<F.3J){C.3m[0].2f=C.3m[0].2f+F.3I}if(E.3c-C.8H.p<F.3J){C.3m[0].2f=C.3m[0].2f-F.3I}}1g{if(E.3c-B(1d).2f()<F.3J){B(1d).2f(B(1d).2f()-F.3I)}if(B(3a).t()-(E.3c-B(1d).2f())<F.3J){B(1d).2f(B(1d).2f()+F.3I)}}if(C.3l[0]!=1d&&C.3l[0].6C!="7j"){if((C.8G.o+C.3l[0].4N)-E.3b<F.3J){C.3l[0].2e=C.3l[0].2e+F.3I}if(E.3b-C.8G.o<F.3J){C.3l[0].2e=C.3l[0].2e-F.3I}}1g{if(E.3b-B(1d).2e()<F.3J){B(1d).2e(B(1d).2e()-F.3I)}if(B(3a).u()-(E.3b-B(1d).2e())<F.3J){B(1d).2e(B(1d).2e()+F.3I)}}}});B.l.2z.1T("2P","2B",{5I:c(E,D){b C=B(8).1i("2P");if(D.h.2B=="y"){C.17.o=C.2O.o}if(D.h.2B=="x"){C.17.p=C.2O.p}}})})(1v);(c(C){C.1j=C.1j||{};C.1Q(C.1j,{5A:c(F,G){1R(b E=0;E<G.1m;E++){if(G[E]!==19){C.1i(F[0],"ec.fI."+G[E],F[0].2Q[G[E]])}}},4F:c(F,G){1R(b E=0;E<G.1m;E++){if(G[E]!==19){F.q(G[E],C.1i(F[0],"ec.fI."+G[E]))}}},4E:c(E,F){if(F=="5e"){F=E.is(":3H")?"1y":"1C"}k F},f7:c(F,G){b H,E;5r(F[0]){1u"p":H=0;1D;1u"98":H=0.5;1D;1u"3h":H=1;1D;5q:H=F[0]/G.t}5r(F[1]){1u"o":E=0;1D;1u"7E":E=0.5;1D;1u"3e":E=1;1D;5q:E=F[1]/G.u}k{x:E,y:H}},6z:c(F){if(F.1o().2L("id")=="cH"){k F}b E={u:F.2Y({3U:1e}),t:F.2M({3U:1e}),"cI":F.q("cI")};F.8c(\'<1w id="cH" 2Q="kP-1r:2T%;aX:7i;a8:5n;3U:0;bv:0"></1w>\');b I=F.1o();if(F.q("17")=="6w"){I.q({17:"2b"});F.q({17:"2b"})}1g{b H=F.q("p");if(5L(1b(H))){H="46"}b G=F.q("o");if(5L(1b(G))){G="46"}I.q({17:F.q("17"),p:H,o:G,2C:F.q("z-3D")}).1y();F.q({17:"2b",p:0,o:0})}I.q(E);k I},65:c(E){if(E.1o().2L("id")=="cH"){k E.1o().kO(E)}k E},5B:c(F,G,E,H){H=H||{};C.1x(G,c(J,I){aW=F.fv(I);if(aW[0]>0){H[I]=aW[0]*E+aW[1]}});k H},9E:c(G,H,J,I){b E=(2D J=="c"?J:(I?I:19));b F=(2D J=="6k"?J:19);k 8.1x(c(){b O={};b M=C(8);b N=M.2L("2Q")||"";if(2D N=="6k"){N=N["cG"]}if(G.5e){M.4a(G.5e)?G.1Z=G.5e:G.1T=G.5e}b K=C.1Q({},(1d.aV?1d.aV.fH(8,19):8.fG));if(G.1T){M.1n(G.1T)}if(G.1Z){M.1J(G.1Z)}b L=C.1Q({},(1d.aV?1d.aV.fH(8,19):8.fG));if(G.1T){M.1J(G.1T)}if(G.1Z){M.1n(G.1Z)}1R(b P in L){if(2D L[P]!="c"&&L[P]&&P.88("kN")==-1&&P.88("1m")==-1&&L[P]!=K[P]&&(P.3i(/aO/i)||(!P.3i(/aO/i)&&!5L(1b(L[P],10))))&&(K.17!="6w"||(K.17=="6w"&&!P.3i(/o|p|3h|3e/)))){O[P]=L[P]}}M.1E(O,H,F,c(){if(2D C(8).2L("2Q")=="6k"){C(8).2L("2Q")["cG"]="";C(8).2L("2Q")["cG"]=N}1g{C(8).2L("2Q",N)}if(G.1T){C(8).1n(G.1T)}if(G.1Z){C(8).1J(G.1Z)}if(E){E.1t(8,1A)}})})}});C.fn.1Q({fF:C.fn.1y,fE:C.fn.1C,fC:C.fn.5e,fB:C.fn.1n,fz:C.fn.1J,fy:C.fn.aJ,5f:c(E,G,F,H){k C.1j[E]?C.1j[E].23(8,{kM:E,h:G||{},1z:F,2o:H}):19},1y:c(){if(!1A[0]||(1A[0].3S==7w||/(aU|8X|cF)/.1B(1A[0]))){k 8.fF.1t(8,1A)}1g{b E=1A[1]||{};E["2G"]="1y";k 8.5f.1t(8,[1A[0],E,1A[2]||E.1z,1A[3]||E.2o])}},1C:c(){if(!1A[0]||(1A[0].3S==7w||/(aU|8X|cF)/.1B(1A[0]))){k 8.fE.1t(8,1A)}1g{b E=1A[1]||{};E["2G"]="1C";k 8.5f.1t(8,[1A[0],E,1A[2]||E.1z,1A[3]||E.2o])}},5e:c(){if(!1A[0]||(1A[0].3S==7w||/(aU|8X|cF)/.1B(1A[0]))||(1A[0].3S==fD)){k 8.fC.1t(8,1A)}1g{b E=1A[1]||{};E["2G"]="5e";k 8.5f.1t(8,[1A[0],E,1A[2]||E.1z,1A[3]||E.2o])}},1n:c(F,E,H,G){k E?C.1j.9E.1t(8,[{1T:F},E,H,G]):8.fB(F)},1J:c(F,E,H,G){k E?C.1j.9E.1t(8,[{1Z:F},E,H,G]):8.fz(F)},aJ:c(F,E,H,G){k E?C.1j.9E.1t(8,[{5e:F},E,H,G]):8.fy(F)},fw:c(E,G,F,I,H){k C.1j.9E.1t(8,[{1T:G,1Z:E},F,I,H])},kL:c(){k 8.fw.1t(8,1A)},fv:c(E){b F=8.q(E),G=[];C.1x(["em","2U","%","kK"],c(H,I){if(F.88(I)>0){G=[aT(F),I]}});k G}});1v.1x(["7Z","kJ","kI","kH","kG","aO","kF"],c(F,E){1v.fx.ct[E]=c(G){if(G.kE==0){G.2j=D(G.fu,E);G.4R=B(G.4R)}G.fu.2Q[E]="cE("+[1f.2d(1f.2q(1b((G.2w*(G.4R[0]-G.2j[0]))+G.2j[0]),2t),0),1f.2d(1f.2q(1b((G.2w*(G.4R[1]-G.2j[1]))+G.2j[1]),2t),0),1f.2d(1f.2q(1b((G.2w*(G.4R[2]-G.2j[2]))+G.2j[2]),2t),0)].7r(",")+")"}});c B(F){b E;if(F&&F.3S==8a&&F.1m==3){k F}if(E=/cE\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)/.78(F)){k[1b(E[1]),1b(E[2]),1b(E[3])]}if(E=/cE\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*\\)/.78(F)){k[aT(E[1])*2.55,aT(E[2])*2.55,aT(E[3])*2.55]}if(E=/#([a-fA-8F-9]{2})([a-fA-8F-9]{2})([a-fA-8F-9]{2})/.78(F)){k[1b(E[1],16),1b(E[2],16),1b(E[3],16)]}if(E=/#([a-fA-8F-9])([a-fA-8F-9])([a-fA-8F-9])/.78(F)){k[1b(E[1]+E[1],16),1b(E[2]+E[2],16),1b(E[3]+E[3],16)]}if(E=/ft\\(0, 0, 0, 0\\)/.78(F)){k A["7i"]}k A[1v.fs(F).8w()]}c D(G,E){b F;do{F=1v.kD(G,E);if(F!=""&&F!="7i"||1v.4l(G,"1K")){1D}E="7Z"}5y(G=G.3R);k B(F)}b A={kC:[0,2t,2t],kB:[fo,2t,2t],kA:[fr,fr,kz],fq:[0,0,0],ky:[0,0,2t],kx:[fj,42,42],kw:[0,2t,2t],kv:[0,0,8E],ku:[0,8E,8E],kt:[cD,cD,cD],ks:[0,2T,0],kr:[kq,kp,fp],ko:[8E,0,8E],kn:[85,fp,47],km:[2t,cv,0],kl:[kk,50,kj],ki:[8E,0,0],kh:[kg,aa,kf],ke:[kd,0,aS],kc:[2t,0,2t],kb:[2t,ka,0],k9:[0,6D,0],k8:[75,0,k7],k6:[fo,fm,cv],k5:[k4,k3,fm],k2:[fk,2t,2t],k1:[fl,k0,fl],jZ:[aS,aS,aS],jY:[2t,jX,jW],jV:[2t,2t,fk],jU:[0,2t,0],jT:[2t,0,2t],jS:[6D,0,0],jR:[0,0,6D],jQ:[6D,6D,0],jP:[2t,fj,0],jO:[2t,aR,jN],jM:[6D,0,6D],jL:[6D,0,6D],jK:[2t,0,0],jJ:[aR,aR,aR],jI:[2t,2t,2t],jH:[2t,2t,0],7i:[2t,2t,2t]};1v.1N["jG"]=1v.1N["9B"];1v.1Q(1v.1N,{fi:"fh",9B:c(F,G,E,I,H){k 1v.1N[1v.1N.fi](F,G,E,I,H)},jF:c(F,G,E,I,H){k I*(G/=H)*G+E},fh:c(F,G,E,I,H){k-I*(G/=H)*(G-2)+E},jE:c(F,G,E,I,H){if((G/=H/2)<1){k I/2*G*G+E}k-I/2*((--G)*(G-2)-1)+E},jD:c(F,G,E,I,H){k I*(G/=H)*G*G+E},jC:c(F,G,E,I,H){k I*((G=G/H-1)*G*G+1)+E},jB:c(F,G,E,I,H){if((G/=H/2)<1){k I/2*G*G*G+E}k I/2*((G-=2)*G*G+2)+E},jA:c(F,G,E,I,H){k I*(G/=H)*G*G*G+E},jz:c(F,G,E,I,H){k-I*((G=G/H-1)*G*G*G-1)+E},jy:c(F,G,E,I,H){if((G/=H/2)<1){k I/2*G*G*G*G+E}k-I/2*((G-=2)*G*G*G-2)+E},jx:c(F,G,E,I,H){k I*(G/=H)*G*G*G*G+E},jw:c(F,G,E,I,H){k I*((G=G/H-1)*G*G*G*G+1)+E},jv:c(F,G,E,I,H){if((G/=H/2)<1){k I/2*G*G*G*G*G+E}k I/2*((G-=2)*G*G*G*G+2)+E},ju:c(F,G,E,I,H){k-I*1f.fg(G/H*(1f.67/2))+I+E},jt:c(F,G,E,I,H){k I*1f.9D(G/H*(1f.67/2))+E},js:c(F,G,E,I,H){k-I/2*(1f.fg(1f.67*G/H)-1)+E},jr:c(F,G,E,I,H){k(G==0)?E:I*1f.7h(2,10*(G/H-1))+E},jq:c(F,G,E,I,H){k(G==H)?E+I:I*(-1f.7h(2,-10*G/H)+1)+E},jp:c(F,G,E,I,H){if(G==0){k E}if(G==H){k E+I}if((G/=H/2)<1){k I/2*1f.7h(2,10*(G-1))+E}k I/2*(-1f.7h(2,-10*--G)+2)+E},jo:c(F,G,E,I,H){k-I*(1f.8C(1-(G/=H)*G)-1)+E},jn:c(F,G,E,I,H){k I*1f.8C(1-(G=G/H-1)*G)+E},jm:c(F,G,E,I,H){if((G/=H/2)<1){k-I/2*(1f.8C(1-G*G)-1)+E}k I/2*(1f.8C(1-(G-=2)*G)+1)+E},jl:c(F,H,E,L,K){b I=1.8D;b J=0;b G=L;if(H==0){k E}if((H/=K)==1){k E+L}if(!J){J=K*0.3}if(G<1f.3T(L)){G=L;b I=J/4}1g{b I=J/(2*1f.67)*1f.cC(L/G)}k-(G*1f.7h(2,10*(H-=1))*1f.9D((H*K-I)*(2*1f.67)/J))+E},jk:c(F,H,E,L,K){b I=1.8D;b J=0;b G=L;if(H==0){k E}if((H/=K)==1){k E+L}if(!J){J=K*0.3}if(G<1f.3T(L)){G=L;b I=J/4}1g{b I=J/(2*1f.67)*1f.cC(L/G)}k G*1f.7h(2,-10*H)*1f.9D((H*K-I)*(2*1f.67)/J)+L+E},jj:c(F,H,E,L,K){b I=1.8D;b J=0;b G=L;if(H==0){k E}if((H/=K/2)==2){k E+L}if(!J){J=K*(0.3*1.5)}if(G<1f.3T(L)){G=L;b I=J/4}1g{b I=J/(2*1f.67)*1f.cC(L/G)}if(H<1){k-0.5*(G*1f.7h(2,10*(H-=1))*1f.9D((H*K-I)*(2*1f.67)/J))+E}k G*1f.7h(2,-10*(H-=1))*1f.9D((H*K-I)*(2*1f.67)/J)*0.5+L+E},ji:c(F,G,E,J,I,H){if(H==2p){H=1.8D}k J*(G/=I)*G*((H+1)*G-H)+E},jh:c(F,G,E,J,I,H){if(H==2p){H=1.8D}k J*((G=G/I-1)*G*((H+1)*G+H)+1)+E},jg:c(F,G,E,J,I,H){if(H==2p){H=1.8D}if((G/=I/2)<1){k J/2*(G*G*(((H*=(1.ff))+1)*G-H))+E}k J/2*((G-=2)*G*(((H*=(1.ff))+1)*G+H)+2)+E},fe:c(F,G,E,I,H){k I-1v.1N.cB(F,H-G,0,I,H)+E},cB:c(F,G,E,I,H){if((G/=H)<(1/2.75)){k I*(7.aQ*G*G)+E}1g{if(G<(2/2.75)){k I*(7.aQ*(G-=(1.5/2.75))*G+0.75)+E}1g{if(G<(2.5/2.75)){k I*(7.aQ*(G-=(2.25/2.75))*G+0.jf)+E}1g{k I*(7.aQ*(G-=(2.je/2.75))*G+0.jd)+E}}}},jc:c(F,G,E,I,H){if(G<H/2){k 1v.1N.fe(F,G*2,0,I,H)*0.5+E}k 1v.1N.cB(F,G*2-H,0,I,H)*0.5+I*0.5+E}})})(1v);(c(A){A.1j.jb=c(B){k 8.3k(c(){b D=A(8),C=["17","p","o"];b H=A.1j.4E(D,B.h.2G||"1C");b G=B.h.6A||"3K";A.1j.5A(D,C);D.1y();b J=A.1j.6z(D).q({2X:"3H"});b E=(G=="3K")?"t":"u";b I=(G=="3K")?J.t():J.u();if(H=="1y"){J.q(E,0)}b F={};F[E]=H=="1y"?I:0;J.1E(F,B.1z,B.h.1N,c(){if(H=="1C"){D.1C()}A.1j.4F(D,C);A.1j.65(D);if(B.2o){B.2o.1t(D[0],1A)}D.48()})})}})(1v);(c(A){A.1j.ja=c(B){k 8.3k(c(){b E=A(8),K=["17","p","o"];b J=A.1j.4E(E,B.h.2G||"5f");b M=B.h.6A||"66";b C=B.h.4L||20;b D=B.h.cw||5;b G=B.1z||j9;if(/1y|1C/.1B(J)){K.4K("1O")}A.1j.5A(E,K);E.1y();A.1j.6z(E);b F=(M=="66"||M=="61")?"p":"o";b O=(M=="66"||M=="o")?"2w":"aM";b C=B.h.4L||(F=="p"?E.2M({3U:1e})/3:E.2Y({3U:1e})/3);if(J=="1y"){E.q("1O",0).q(F,O=="2w"?-C:C)}if(J=="1C"){C=C/(D*2)}if(J!="1C"){D--}if(J=="1y"){b H={1O:1};H[F]=(O=="2w"?"+=":"-=")+C;E.1E(H,G/2,B.h.1N);C=C/2;D--}1R(b I=0;I<D;I++){b N={},L={};N[F]=(O=="2w"?"-=":"+=")+C;L[F]=(O=="2w"?"+=":"-=")+C;E.1E(N,G/2,B.h.1N).1E(L,G/2,B.h.1N);C=(J=="1C")?C*2:C/2}if(J=="1C"){b H={1O:0};H[F]=(O=="2w"?"-=":"+=")+C;E.1E(H,G/2,B.h.1N,c(){E.1C();A.1j.4F(E,K);A.1j.65(E);if(B.2o){B.2o.1t(8,1A)}})}1g{b N={},L={};N[F]=(O=="2w"?"-=":"+=")+C;L[F]=(O=="2w"?"+=":"-=")+C;E.1E(N,G/2,B.h.1N).1E(L,G/2,B.h.1N,c(){A.1j.4F(E,K);A.1j.65(E);if(B.2o){B.2o.1t(8,1A)}})}E.3k("fx",c(){E.48()});E.48()})}})(1v);(c(A){A.1j.j8=c(B){k 8.3k(c(){b F=A(8),J=["17","p","o","t","u"];b I=A.1j.4E(F,B.h.2G||"1C");b K=B.h.6A||"3K";A.1j.5A(F,J);F.1y();b C=A.1j.6z(F).q({2X:"3H"});b E=F[0].6C=="j7"?C:F;b G={1r:(K=="3K")?"t":"u",17:(K=="3K")?"p":"o"};b D=(K=="3K")?E.t():E.u();if(I=="1y"){E.q(G.1r,0);E.q(G.17,D/2)}b H={};H[G.1r]=I=="1y"?D:0;H[G.17]=I=="1y"?0:D/2;E.1E(H,{3k:Z,1z:B.1z,1N:B.h.1N,62:c(){if(I=="1C"){F.1C()}A.1j.4F(F,J);A.1j.65(F);if(B.2o){B.2o.1t(F[0],1A)}F.48()}})})}})(1v);(c(A){A.1j.5C=c(B){k 8.3k(c(){b E=A(8),D=["17","p","o","1O"];b I=A.1j.4E(E,B.h.2G||"1C");b H=B.h.6A||"o";A.1j.5A(E,D);E.1y();A.1j.6z(E);b F=(H=="66"||H=="61")?"p":"o";b C=(H=="66"||H=="o")?"2w":"aM";b J=B.h.4L||(F=="p"?E.2M({3U:1e})/2:E.2Y({3U:1e})/2);if(I=="1y"){E.q("1O",0).q(F,C=="2w"?-J:J)}b G={1O:I=="1y"?1:0};G[F]=(I=="1y"?(C=="2w"?"+=":"-="):(C=="2w"?"-=":"+="))+J;E.1E(G,{3k:Z,1z:B.1z,1N:B.h.1N,62:c(){if(I=="1C"){E.1C()}A.1j.4F(E,D);A.1j.65(E);if(B.2o){B.2o.1t(8,1A)}E.48()}})})}})(1v);(c(A){A.1j.cA=c(B){k 8.3k(c(){b I=B.h.aP?1f.3E(1f.8C(B.h.aP)):3;b E=B.h.aP?1f.3E(1f.8C(B.h.aP)):3;B.h.2G=B.h.2G=="5e"?(A(8).is(":57")?"1C":"1y"):B.h.2G;b H=A(8).1y().q("8B","3H");b J=H.v();J.p-=1b(H.q("7Y"))||0;J.o-=1b(H.q("7X"))||0;b G=H.2Y(1e);b C=H.2M(1e);1R(b F=0;F<I;F++){1R(b D=0;D<E;D++){H.6B().2K("1K").8c("<1w></1w>").q({17:"1W",8B:"57",o:-D*(G/E),p:-F*(C/I)}).1o().1n("1j-cA").q({17:"1W",2X:"3H",u:G/E,t:C/I,o:J.o+D*(G/E)+(B.h.2G=="1y"?(D-1f.9q(E/2))*(G/E):0),p:J.p+F*(C/I)+(B.h.2G=="1y"?(F-1f.9q(I/2))*(C/I):0),1O:B.h.2G=="1y"?0:1}).1E({o:J.o+D*(G/E)+(B.h.2G=="1y"?0:(D-1f.9q(E/2))*(G/E)),p:J.p+F*(C/I)+(B.h.2G=="1y"?0:(F-1f.9q(I/2))*(C/I)),1O:B.h.2G=="1y"?1:0},B.1z||8b)}}7s(c(){B.h.2G=="1y"?H.q({8B:"57"}):H.q({8B:"57"}).1C();if(B.2o){B.2o.1t(H[0])}H.48();A(".1j-cA").1Z()},B.1z||8b)})}})(1v);(c(A){A.1j.j6=c(B){k 8.3k(c(){b E=A(8),J=["17","p","o"];b G=A.1j.4E(E,B.h.2G||"1C");b N=B.h.1r||15;b M=!(!B.h.j5);A.1j.5A(E,J);E.1y();b D=A.1j.6z(E).q({2X:"3H"});b H=((G=="1y")!=M);b F=H?["u","t"]:["t","u"];b C=H?[D.u(),D.t()]:[D.t(),D.u()];b I=/([0-9]+)%/.78(N);if(I){N=1b(I[1])/2T*C[G=="1C"?0:1]}if(G=="1y"){D.q(M?{t:0,u:N}:{t:N,u:0})}b L={},K={};L[F[0]]=G=="1y"?C[0]:N;K[F[1]]=G=="1y"?C[1]:0;D.1E(L,B.1z/2,B.h.1N).1E(K,B.1z/2,B.h.1N,c(){if(G=="1C"){E.1C()}A.1j.4F(E,J);A.1j.65(E);if(B.2o){B.2o.1t(E[0],1A)}E.48()})})}})(1v);(c(A){A.1j.j4=c(B){k 8.3k(c(){b E=A(8),D=["cz","7Z","1O"];b H=A.1j.4E(E,B.h.2G||"1y");b C=B.h.aO||"#j3";b G=E.q("7Z");A.1j.5A(E,D);E.1y();E.q({cz:"5n",7Z:C});b F={7Z:G};if(H=="1C"){F["1O"]=0}E.1E(F,{3k:Z,1z:B.1z,1N:B.h.1N,62:c(){if(H=="1C"){E.1C()}A.1j.4F(E,D);if(H=="1y"&&1v.22.3v){8.2Q.j2("3u")}if(B.2o){B.2o.1t(8,1A)}E.48()}})})}})(1v);(c(A){A.1j.j1=c(B){k 8.3k(c(){b D=A(8);b F=A.1j.4E(D,B.h.2G||"1y");b E=B.h.cw||5;if(F=="1C"){E--}if(D.is(":3H")){D.q("1O",0);D.1y();D.1E({1O:1},B.1z/2,B.h.1N);E=E-2}1R(b C=0;C<E;C++){D.1E({1O:0},B.1z/2,B.h.1N).1E({1O:1},B.1z/2,B.h.1N)}if(F=="1C"){D.1E({1O:0},B.1z/2,B.h.1N,c(){D.1C();if(B.2o){B.2o.1t(8,1A)}})}1g{D.1E({1O:0},B.1z/2,B.h.1N).1E({1O:1},B.1z/2,B.h.1N,c(){if(B.2o){B.2o.1t(8,1A)}})}D.3k("fx",c(){D.48()});D.48()})}})(1v);(c(A){A.1j.j0=c(B){k 8.3k(c(){b F=A(8);b C=A.1Q(1e,{},B.h);b H=A.1j.4E(F,B.h.2G||"1C");b G=1b(B.h.aN)||aa;C.fd=1e;b E={t:F.t(),u:F.u()};b D=G/2T;F.1U=(H=="1C")?E:{t:E.t*D,u:E.u*D};C.1U=F.1U;C.aN=(H=="1C")?G:2T;C.2G=H;F.5f("cy",C,B.1z,B.2o);F.48()})};A.1j.cy=c(B){k 8.3k(c(){b G=A(8);b D=A.1Q(1e,{},B.h);b J=A.1j.4E(G,B.h.2G||"5f");b H=1b(B.h.aN)||(1b(B.h.aN)==0?0:(J=="1C"?0:2T));b I=B.h.6A||"5p";b C=B.h.cx;if(J!="5f"){D.cx=C||["98","7E"];D.4F=1e}b F={t:G.t(),u:G.u()};G.1U=B.h.1U||(J=="1y"?{t:0,u:0}:F);b E={y:I!="a5"?(H/2T):1,x:I!="3K"?(H/2T):1};G.29={t:F.t*E.y,u:F.u*E.x};if(B.h.fd){if(J=="1y"){G.1U.1O=0;G.29.1O=1}if(J=="1C"){G.1U.1O=1;G.29.1O=0}}D.1U=G.1U;D.29=G.29;D.2G=J;G.5f("1r",D,B.1z,B.2o);G.48()})};A.1j.1r=c(B){k 8.3k(c(){b C=A(8),N=["17","p","o","u","t","2X","1O"];b M=["17","p","o","2X","1O"];b J=["u","t","2X"];b P=["fc"];b K=["64","aL","fb","fa"];b F=["63","aK","f9","f8"];b G=A.1j.4E(C,B.h.2G||"5f");b I=B.h.4F||Z;b E=B.h.cy||"5p";b O=B.h.cx;b D={t:C.t(),u:C.u()};C.1U=B.h.1U||D;C.29=B.h.29||D;if(O){b H=A.1j.f7(O,D);C.1U.p=(D.t-C.1U.t)*H.y;C.1U.o=(D.u-C.1U.u)*H.x;C.29.p=(D.t-C.29.t)*H.y;C.29.o=(D.u-C.29.u)*H.x}b L={1U:{y:C.1U.t/D.t,x:C.1U.u/D.u},29:{y:C.29.t/D.t,x:C.29.u/D.u}};if(E=="iZ"||E=="5p"){if(L.1U.y!=L.29.y){N=N.5k(K);C.1U=A.1j.5B(C,K,L.1U.y,C.1U);C.29=A.1j.5B(C,K,L.29.y,C.29)}if(L.1U.x!=L.29.x){N=N.5k(F);C.1U=A.1j.5B(C,F,L.1U.x,C.1U);C.29=A.1j.5B(C,F,L.29.x,C.29)}}if(E=="7F"||E=="5p"){if(L.1U.y!=L.29.y){N=N.5k(P);C.1U=A.1j.5B(C,P,L.1U.y,C.1U);C.29=A.1j.5B(C,P,L.29.y,C.29)}}A.1j.5A(C,I?N:M);C.1y();A.1j.6z(C);C.q("2X","3H").q(C.1U);if(E=="7F"||E=="5p"){K=K.5k(["7Y","7g"]).5k(P);F=F.5k(["7X","7f"]);J=N.5k(K).5k(F);C.4J("*[u]").1x(c(){2W=A(8);if(I){A.1j.5A(2W,J)}b Q={t:2W.t(),u:2W.u()};2W.1U={t:Q.t*L.1U.y,u:Q.u*L.1U.x};2W.29={t:Q.t*L.29.y,u:Q.u*L.29.x};if(L.1U.y!=L.29.y){2W.1U=A.1j.5B(2W,K,L.1U.y,2W.1U);2W.29=A.1j.5B(2W,K,L.29.y,2W.29)}if(L.1U.x!=L.29.x){2W.1U=A.1j.5B(2W,F,L.1U.x,2W.1U);2W.29=A.1j.5B(2W,F,L.29.x,2W.29)}2W.q(2W.1U);2W.1E(2W.29,B.1z,B.h.1N,c(){if(I){A.1j.4F(2W,J)}})})}C.1E(C.29,{3k:Z,1z:B.1z,1N:B.h.1N,62:c(){if(G=="1C"){C.1C()}A.1j.4F(C,I?N:M);A.1j.65(C);if(B.2o){B.2o.1t(8,1A)}C.48()}})})}})(1v);(c(A){A.1j.iY=c(B){k 8.3k(c(){b E=A(8),K=["17","p","o"];b J=A.1j.4E(E,B.h.2G||"5f");b M=B.h.6A||"o";b C=B.h.4L||20;b D=B.h.cw||3;b G=B.1z||B.h.1z||cv;A.1j.5A(E,K);E.1y();A.1j.6z(E);b F=(M=="66"||M=="61")?"p":"o";b O=(M=="66"||M=="o")?"2w":"aM";b H={},N={},L={};H[F]=(O=="2w"?"-=":"+=")+C;N[F]=(O=="2w"?"+=":"-=")+C*2;L[F]=(O=="2w"?"-=":"+=")+C*2;E.1E(H,G,B.h.1N);1R(b I=1;I<D;I++){E.1E(N,G,B.h.1N).1E(L,G,B.h.1N)}E.1E(N,G,B.h.1N).1E(H,G/2,B.h.1N,c(){A.1j.4F(E,K);A.1j.65(E);if(B.2o){B.2o.1t(8,1A)}});E.3k("fx",c(){E.48()});E.48()})}})(1v);(c(A){A.1j.6e=c(B){k 8.3k(c(){b E=A(8),D=["17","p","o"];b I=A.1j.4E(E,B.h.2G||"1y");b H=B.h.6A||"o";A.1j.5A(E,D);E.1y();A.1j.6z(E).q({2X:"3H"});b F=(H=="66"||H=="61")?"p":"o";b C=(H=="66"||H=="o")?"2w":"aM";b J=B.h.4L||(F=="p"?E.2M({3U:1e}):E.2Y({3U:1e}));if(I=="1y"){E.q(F,C=="2w"?-J:J)}b G={};G[F]=(I=="1y"?(C=="2w"?"+=":"-="):(C=="2w"?"-=":"+="))+J;E.1E(G,{3k:Z,1z:B.1z,1N:B.h.1N,62:c(){if(I=="1C"){E.1C()}A.1j.4F(E,D);A.1j.65(E);if(B.2o){B.2o.1t(8,1A)}E.48()}})})}})(1v);(c(A){A.1j.f6=c(B){k 8.3k(c(){b E=A(8);b G=A.1j.4E(E,B.h.2G||"5f");b F=A(B.h.29);b C=E.v();b D=A(\'<1w 2u="l-1j-f6"></1w>\').2K(1d.1K);if(B.h.8g){D.1n(B.h.8g)}D.1n(B.h.8g);D.q({p:C.p,o:C.o,t:E.2M()-1b(D.q("64"))-1b(D.q("aL")),u:E.2Y()-1b(D.q("63"))-1b(D.q("aK")),17:"1W"});C=F.v();f5={p:C.p,o:C.o,t:F.2M()-1b(D.q("64"))-1b(D.q("aL")),u:F.2Y()-1b(D.q("63"))-1b(D.q("aK"))};D.1E(f5,B.1z,B.h.1N,c(){D.1Z();if(B.2o){B.2o.1t(E[0],1A)}E.48()})})}})(1v);(c(E){E.4b("l.3N",{5l:c(){b G=8.h;if(G.iX){b J=8.r.4J("a").3u(G.eX);if(J.1m){if(J.3u(G.7J).1m){G.3L=J}1g{G.3L=J.1o().1o().5V();J.1n("4T")}}}G.4D=8.r.4J(G.7J);G.3L=C(G.4D,G.3L);if(E.22.3v){8.r.4J("a").q("f4","1")}if(!8.r.4a("l-3N")){8.r.1n("l-3N");E("<4p 2u=\'l-3N-o\'/>").a0(G.4D);E("<4p 2u=\'l-3N-3e\'/>").2K(G.4D);G.4D.1n("l-3N-7J").2L("iW","0")}b I;if(G.f3){I=8.r.1o().t();G.4D.1x(c(){I-=E(8).2M()});b H=0;G.4D.4g().1x(c(){H=1f.2d(H,E(8).9v()-E(8).t())}).t(I-H)}1g{if(G.7e){I=0;G.4D.4g().1x(c(){I=1f.2d(I,E(8).2M())}).t(I)}}G.4D.6L(G.3L||"").4g().1C();G.3L.1o().7W().1n(G.3p);if(G.3C){8.r.2V((G.3C)+".3N",F)}},5Z:c(G){F.23(8.r[0],{1h:C(8.h.4D,G)[0]})},3t:c(){8.h.4D.4g().q("4q","");if(8.h.f3||8.h.7e){8.h.4D.4g().q("t","")}E.49(8.r[0],"3N");8.r.1J("l-3N").3o(".3N")}});c B(H,G){k c(){k H.1t(G,1A)}}c D(I){if(!E.1i(8,"3N")){k}b G=E.1i(8,"3N");b H=G.h;H.8A=I?0:--H.8A;if(H.8A){k}if(H.iV){H.6y.1T(H.7V).q({t:"",2X:""})}E(8).2m("f2",[E.3C.dm({5H:"f2",1h:G.r[0]}),H.1i],H.6Q)}c A(G,K,L,J,M){b I=E.1i(8,"3N").h;I.6y=G;I.7V=K;I.1i=L;b H=B(D,8);I.8A=K.1r()===0?G.1r():K.1r();if(I.aI){if(!I.9C&&J){E.l.3N.cu[I.aI]({6y:1v([]),7V:K,62:H,61:M,7e:I.7e})}1g{E.l.3N.cu[I.aI]({6y:G,7V:K,62:H,61:M,7e:I.7e})}}1g{if(!I.9C&&J){G.5e()}1g{K.1C();G.1y()}H(1e)}}c F(L){b J=E.1i(8,"3N").h;if(J.1I){k Z}if(!L.1h&&!J.9C){J.3L.1o().7W().aJ(J.3p);b I=J.3L.4g(),M={h:J,f1:1v([]),f0:J.3L,eZ:1v([]),eY:I},G=(J.3L=E([]));A.23(8,G,I,M);k Z}b K=E(L.1h);K=E(K.58(J.7J)[0]||K);b H=K[0]==J.3L[0];if(J.8A||(J.9C&&H)){k Z}if(!K.is(J.7J)){k}J.3L.1o().7W().aJ(J.3p);if(!H){K.1o().7W().1n(J.3p)}b G=K.4g(),I=J.3L.4g(),M={h:J,f1:K,f0:J.3L,eZ:G,eY:I},N=J.4D.3D(J.3L[0])>J.4D.3D(K[0]);J.3L=H?E([]):K;A.23(8,G,I,M,H,N);k Z}c C(H,G){k G!=2p?2D G=="8l"?H.3u(":eq("+G+")"):H.6L(H.6L(G)):G===Z?E([]):H.3u(":eq(0)")}E.1Q(E.l.3N,{4I:{3p:"1L",9C:1e,aI:"6e",3C:"1F",7J:"a",7e:1e,8A:0,eX:c(){k 8.3P.8w()==a2.3P.8w()}},cu:{6e:c(G,I){G=E.1Q({1N:"9B",1z:dG},G,I);if(!G.7V.1r()){G.6y.1E({t:"1y"},G);k}b H=G.7V.t(),J=G.6y.t(),K=J/H;G.6y.q({t:0,2X:"3H"}).1y();G.7V.3u(":3H").1x(G.62).4R().3u(":57").1E({t:"1C"},{ct:c(L){b M=(H-L)*K;if(E.22.3v||E.22.7v){M=1f.eh(M)}G.6y.t(M)},1z:G.1z,1N:G.1N,62:c(){if(!G.7e){G.6y.q("t","46")}G.62()}})},iU:c(G){8.6e(G,{1N:G.61?"iT":"9B",1z:G.61?95:dH})},iS:c(G){8.6e(G,{1N:"iR",1z:iQ})}}});E.fn.5Z=c(G){k 8.3N("5Z",G)}})(1v);(c($){b 3A="18";c 99(){8.eS=Z;8.9t=19;8.6x=[];8.7P=Z;8.7b=Z;8.cg="l-18-1w";8.cq="l-18-5s";8.6v="l-18-6M";8.ch="l-18-1X";8.bZ="l-18-8q";8.bT="l-18-5T";8.ak="l-18-4T-2n";8.cs=[];8.cs[""]={ev:"iP",ew:"iO 9z 4T 1a",et:"eW",eu:"eW iN 6Q",74:"&#iM;iL",es:"9A 9z iK 2k",73:"iJ&#iI;",er:"9A 9z 4g 2k",7N:"iH",ep:"9A 9z 4T 2k",41:["iG","iF","iE","iD","eV","iC","iB","iA","iz","iy","ix","iw"],5t:["iv","iu","it","ir","eV","iq","ip","io","im","il","ik","ij"],e7:"9A a eU 2k",e1:"9A a eU 26",en:"ii",ih:"ig ie 9z 26",4i:["ic","ib","ia","i9","i8","i7","i6"],4w:["i5","i4","i3","i2","i1","i0","hZ"],an:["hY","hX","hW","hV","hU","hT","hS"],ao:"hR 9j as dw 72 2n",7L:"eT 9j, M d",7H:"au/dd/7O",4z:0,ea:"eT a 1a",4S:Z};8.4B={7U:"3q",5d:"1y",cj:{},77:19,9y:"",7d:"...",8y:"",eQ:Z,9e:1e,c1:Z,9l:Z,8r:Z,bY:Z,e8:1e,e4:1e,e3:"-10:+10",9i:1e,8n:Z,71:Z,9h:Z,am:8.9k,4Q:"+10",44:Z,eo:8.7L,2F:19,2R:19,1z:"8X",9g:19,9w:19,7a:19,e0:19,9u:19,dZ:1,6s:1,4U:Z,9n:" - ",9r:"",8u:""};$.1Q(8.4B,8.cs[""]);8.2v=$(\'<1w id="\'+8.cg+\'" 2Q="4q: 5n;"></1w>\')}$.1Q(99.53,{7c:"hQ",c7:c(){if(8.eS){hP.c7.1t("",1A)}},hO:c(1P){9a(8.4B,1P||{});k 8},dQ:c(1h,1P){b 8z=19;1R(aH in 8.4B){b aG=1h.hN("1a:"+aH);if(aG){8z=8z||{};ca{8z[aH]=hM(aG)}c8(hL){8z[aH]=aG}}}b 4l=1h.4l.8w();b 4f=(4l=="1w"||4l=="4p");if(!1h.id){1h.id="dp"+1M 21().5u()}b f=8.cr($(1h),4f);f.1P=$.1Q({},1P||{},8z||{});if(4l=="1p"){8.eR(1h,f)}1g{if(4f){8.eN(1h,f)}}},cr:c(1h,4f){k{id:1h[0].id,1p:1h,4v:0,4u:0,4P:0,2r:0,2A:0,4f:4f,2v:(!4f?8.2v:$(\'<1w 2u="l-18-4f"></1w>\'))}},eR:c(1h,f){b 1p=$(1h);if(1p.4a(8.7c)){k}b 9y=8.1l(f,"9y");b 4S=8.1l(f,"4S");if(9y){1p[4S?"eO":"bu"](\'<4p 2u="\'+8.cq+\'">\'+9y+"</4p>")}b 7U=8.1l(f,"7U");if(7U=="3q"||7U=="5p"){1p.3q(8.8x)}if(7U=="5P"||7U=="5p"){b 7d=8.1l(f,"7d");b 8y=8.1l(f,"8y");b 6M=$(8.1l(f,"eQ")?$("<86/>").1n(8.6v).2L({bQ:8y,eP:7d,59:7d}):$(\'<5P 5H="5P"></5P>\').1n(8.6v).2x(8y==""?7d:$("<86/>").2L({bQ:8y,eP:7d,59:7d})));1p[4S?"eO":"bu"](6M);6M.1F(c(){if($.18.7P&&$.18.8v==1h){$.18.76()}1g{$.18.8x(1h)}k Z})}1p.1n(8.7c).6f(8.aF).bw(8.cp).2V("5a.18",c(3C,5Y,1H){f.1P[5Y]=1H}).2V("9x.18",c(3C,5Y){k 8.1l(f,5Y)});$.1i(1h,3A,f)},eN:c(1h,f){b 1p=$(1h);if(1p.4a(8.7c)){k}1p.1n(8.7c).5s(f.2v).2V("5a.18",c(3C,5Y,1H){f.1P[5Y]=1H}).2V("9x.18",c(3C,5Y){k 8.1l(f,5Y)});$.1i(1h,3A,f);8.c3(f,8.c6(f));8.5W(f)},hK:c(f){b 3M=8.8j(f);f.2v.u(3M[1]*$(".l-18",f.2v[0]).u())},hJ:c(1p,eL,7a,1P,2w){b f=8.eM;if(!f){b id="dp"+1M 21().5u();8.5X=$(\'<1p 5H="96" id="\'+id+\'" 1r="1" 2Q="17: 1W; p: -eF;"/>\');8.5X.6f(8.aF);$("1K").5s(8.5X);f=8.eM=8.cr(8.5X,Z);f.1P={};$.1i(8.5X[0],3A,f)}9a(f.1P,1P||{});8.5X.8s(eL);8.4Y=(2w?(2w.1m?2w:[2w.3b,2w.3c]):19);if(!8.4Y){b aA=3a.aB||1d.4c.cm||1d.1K.cm;b az=3a.9v||1d.4c.cl||1d.1K.cl;b 7T=1d.4c.2e||1d.1K.2e;b 7S=1d.4c.2f||1d.1K.2f;8.4Y=[(aA/2)-2T+7T,(az/2)-aa+7S]}8.5X.q("o",8.4Y[0]+"2U").q("p",8.4Y[1]+"2U");f.1P.7a=7a;8.7b=1e;8.2v.1n(8.ch);8.8x(8.5X[0]);if($.9s){$.9s(8.2v)}$.1i(8.5X[0],3A,f);k 8},hI:c(1h){b 4l=1h.4l.8w();b $1h=$(1h);$.49(1h,3A);if(4l=="1p"){$1h.7u("."+8.cq).1Z().4R().7u("."+8.6v).1Z().4R().1J(8.7c).3o("3q",8.8x).3o("6f",8.aF).3o("bw",8.cp)}1g{if(4l=="1w"||4l=="4p"){$1h.1J(8.7c).bz()}}},hH:c(1h){1h.1I=Z;$(1h).7u("5P."+8.6v).1x(c(){8.1I=Z}).4R().7u("86."+8.6v).q({1O:"1.0",2s:""});8.6x=$.6d(8.6x,c(1H){k(1H==1h?19:1H)})},hG:c(1h){1h.1I=1e;$(1h).7u("5P."+8.6v).1x(c(){8.1I=1e}).4R().7u("86."+8.6v).q({1O:"0.5",2s:"5q"});8.6x=$.6d(8.6x,c(1H){k(1H==1h?19:1H)});8.6x[8.6x.1m]=1h},eJ:c(1h){if(!1h){k Z}1R(b i=0;i<8.6x.1m;i++){if(8.6x[i]==1h){k 1e}}k Z},hF:c(1h,3Y,1H){b 1P=3Y||{};if(2D 3Y=="56"){1P={};1P[3Y]=1H}if(f=$.1i(1h,3A)){9a(f.1P,1P);8.5W(f)}},hE:c(1h,1a,5v){b f=$.1i(1h,3A);if(f){8.c3(f,1a,5v);8.5W(f)}},hD:c(1h){b f=$.1i(1h,3A);if(f){8.cb(f)}k(f?8.ap(f):19)},aF:c(e){b f=$.1i(e.1h,3A);b aE=1e;if($.18.7P){5r(e.6U){1u 9:$.18.76(19,"");1D;1u 13:$.18.bS(e.1h,f.4u,f.4P,$("4y.l-18-8o-7K-3r",f.2v)[0]);k Z;1D;1u 27:$.18.76(19,$.18.1l(f,"1z"));1D;1u 33:$.18.5x(e.1h,(e.4m?-1:-$.18.1l(f,"6s")),(e.4m?"Y":"M"));1D;1u 34:$.18.5x(e.1h,(e.4m?+1:+$.18.1l(f,"6s")),(e.4m?"Y":"M"));1D;1u 35:if(e.4m){$.18.c0(e.1h)}1D;1u 36:if(e.4m){$.18.bX(e.1h)}1D;1u 37:if(e.4m){$.18.5x(e.1h,-1,"D")}1D;1u 38:if(e.4m){$.18.5x(e.1h,-7,"D")}1D;1u 39:if(e.4m){$.18.5x(e.1h,+1,"D")}1D;1u 40:if(e.4m){$.18.5x(e.1h,+7,"D")}1D;5q:aE=Z}}1g{if(e.6U==36&&e.4m){$.18.8x(8)}1g{aE=Z}}if(aE){e.aD();e.dO()}},cp:c(e){b f=$.1i(e.1h,3A);b 6t=$.18.eA($.18.1l(f,"7H"));b co=aC.hC(e.eK==2p?e.6U:e.eK);k e.4m||(co<" "||!6t||6t.88(co)>-1)},8x:c(1p){1p=1p.1h||1p;if(1p.4l.8w()!="1p"){1p=$("1p",1p.3R)[0]}if($.18.eJ(1p)||$.18.8v==1p){k}b f=$.1i(1p,3A);b 9w=$.18.1l(f,"9w");9a(f.1P,(9w?9w.1t(1p,[1p,f]):{}));$.18.76(19,"");$.18.8v=1p;$.18.cb(f);if($.18.7b){1p.1H=""}if(!$.18.4Y){$.18.4Y=$.18.ck(1p);$.18.4Y[1]+=1p.4O}b 4k=Z;$(1p).58().1x(c(){4k|=$(8).q("17")=="4X";k!4k});if(4k&&$.22.7v){$.18.4Y[0]-=1d.4c.2e;$.18.4Y[1]-=1d.4c.2f}b v={o:$.18.4Y[0],p:$.18.4Y[1]};$.18.4Y=19;f.43=19;f.2v.q({17:"1W",4q:"6O",p:"-hB"});$.18.5W(f);f.2v.u($.18.8j(f)[1]*$(".l-18",f.2v[0])[0].4N);v=$.18.eH(f,v,4k);f.2v.q({17:($.18.7b&&$.9s?"6w":(4k?"4X":"1W")),4q:"5n",o:v.o+"2U",p:v.p+"2U"});if(!f.4f){b 5d=$.18.1l(f,"5d")||"1y";b 1z=$.18.1l(f,"1z");b 7Q=c(){$.18.7P=1e;if($.22.3v&&1b($.22.6V)<7){$("9d.l-18-bP").q({u:f.2v.u()+4,t:f.2v.t()+4})}};if($.1j&&$.1j[5d]){f.2v.1y(5d,$.18.1l(f,"cj"),1z,7Q)}1g{f.2v[5d](1z,7Q)}if(1z==""){7Q()}if(f.1p[0].5H!="3H"){f.1p[0].3q()}$.18.9t=f}},5W:c(f){b cn={u:f.2v.u()+4,t:f.2v.t()+4};f.2v.bz().5s(8.ex(f)).4J("9d.l-18-bP").q({u:cn.u,t:cn.t});b 3M=8.8j(f);f.2v[(3M[0]!=1||3M[1]!=1?"1T":"1Z")+"eI"]("l-18-hA");f.2v[(8.1l(f,"4S")?"1T":"1Z")+"eI"]("l-18-hz");if(f.1p&&f.1p[0].5H!="3H"){$(f.1p[0]).3q()}},eH:c(f,v,4k){b 2w=f.1p?8.ck(f.1p[0]):19;b aA=3a.aB||1d.4c.cm;b az=3a.9v||1d.4c.cl;b 7T=1d.4c.2e||1d.1K.2e;b 7S=1d.4c.2f||1d.1K.2f;if(8.1l(f,"4S")||(v.o+f.2v.u()-7T)>aA){v.o=1f.2d((4k?0:7T),2w[0]+(f.1p?f.1p.u():0)-(4k?7T:0)-f.2v.u()-(4k&&$.22.7v?1d.4c.2e:0))}1g{v.o-=(4k?7T:0)}if((v.p+f.2v.t()-7S)>az){v.p=1f.2d((4k?0:7S),2w[1]-(4k?7S:0)-(8.7b?0:f.2v.t())-(4k&&$.22.7v?1d.4c.2f:0))}1g{v.p-=(4k?7S:0)}k v},ck:c(7R){5y(7R&&(7R.5H=="3H"||7R.hy!=1)){7R=7R.eG}b 17=$(7R).v();k[17.o,17.p]},76:c(1p,1z){b f=8.9t;if(!f){k}b 4U=8.1l(f,"4U");if(4U&&8.6u){8.ax("#"+f.id,8.7I(f,f.3Z,f.4t,f.4h))}8.6u=Z;if(8.7P){1z=(1z!=19?1z:8.1l(f,"1z"));b 5d=8.1l(f,"5d");b 7Q=c(){$.18.ci(f)};if(1z!=""&&$.1j&&$.1j[5d]){f.2v.1C(5d,$.18.1l(f,"cj"),1z,7Q)}1g{f.2v[(1z==""?"1C":(5d=="hx"?"hw":(5d=="hv"?"hu":"1C")))](1z,7Q)}if(1z==""){8.ci(f)}b 9u=8.1l(f,"9u");if(9u){9u.1t((f.1p?f.1p[0]:19),[8.ap(f),f])}8.7P=Z;8.8v=19;f.1P.8q=19;if(8.7b){8.5X.q({17:"1W",o:"0",p:"-eF"});if($.9s){$.ht();$("1K").5s(8.2v)}}8.7b=Z}8.9t=19},ci:c(f){f.2v.1J(8.ch).3o(".l-18");$("."+8.bZ,f.2v).1Z()},dP:c(3C){if(!$.18.9t){k}b $1h=$(3C.1h);if(($1h.58("#"+$.18.cg).1m==0)&&!$1h.4a($.18.7c)&&!$1h.4a($.18.6v)&&$.18.7P&&!($.18.7b&&$.9s)){$.18.76(19,"")}},5x:c(id,v,5R){b 1h=$(id);b f=$.1i(1h[0],3A);8.ah(f,v,5R);8.5W(f)},bX:c(id){b 1h=$(id);b f=$.1i(1h[0],3A);if(8.1l(f,"bY")&&f.3Z){f.4v=f.3Z;f.2r=f.4u=f.4t;f.2A=f.4P=f.4h}1g{b 1a=1M 21();f.4v=1a.3f();f.2r=f.4u=1a.3x();f.2A=f.4P=1a.2N()}8.5x(1h);8.ag(f)},bN:c(id,4o,5R){b 1h=$(id);b f=$.1i(1h[0],3A);f.ay=Z;f[5R=="M"?"2r":"2A"]=4o.h[4o.hs].1H-0;8.5x(1h);8.ag(f)},bM:c(id){b 1h=$(id);b f=$.1i(1h[0],3A);if(f.1p&&f.ay&&!$.22.3v){f.1p[0].3q()}f.ay=!f.ay},ek:c(id,2n){b 1h=$(id);b f=$.1i(1h[0],3A);f.1P.4z=2n;8.5W(f)},bS:c(id,2k,26,4y){if($(4y).4a(8.bT)){k}b 1h=$(id);b f=$.1i(1h[0],3A);b 4U=8.1l(f,"4U");if(4U){8.6u=!8.6u;if(8.6u){$(".l-18 4y").1J(8.ak);$(4y).1n(8.ak)}}f.4v=f.3Z=$("a",4y).2x();f.4u=f.4t=2k;f.4P=f.4h=26;if(8.6u){f.5w=f.5U=f.3y=19}1g{if(4U){f.5w=f.3Z;f.5U=f.4t;f.3y=f.4h}}8.ax(id,8.7I(f,f.3Z,f.4t,f.4h));if(8.6u){f.43=1M 21(f.4h,f.4t,f.3Z);8.5W(f)}1g{if(4U){f.4v=f.3Z=f.43.3f();f.4u=f.4t=f.43.3x();f.4P=f.4h=f.43.2N();f.43=19;if(f.4f){8.5W(f)}}}},c0:c(id){b 1h=$(id);b f=$.1i(1h[0],3A);if(8.1l(f,"c1")){k}8.6u=Z;f.5w=f.5U=f.3y=f.43=19;8.ax(1h,"")},ax:c(id,5c){b 1h=$(id);b f=$.1i(1h[0],3A);5c=(5c!=19?5c:8.7I(f));if(8.1l(f,"4U")&&5c){5c=(f.43?8.7I(f,f.43):5c)+8.1l(f,"9n")+5c}if(f.1p){f.1p.8s(5c)}8.eE(f);b 7a=8.1l(f,"7a");if(7a){7a.1t((f.1p?f.1p[0]:19),[5c,f])}1g{if(f.1p){f.1p.6M("6Q")}}if(f.4f){8.5W(f)}1g{if(!8.6u){8.76(19,8.1l(f,"1z"));8.8v=f.1p[0];if(2D(f.1p[0])!="6k"){f.1p[0].3q()}8.8v=19}}},eE:c(f){b 9r=8.1l(f,"9r");if(9r){b 8u=8.1l(f,"8u");b 1a=8.ap(f);5c=(dT(1a)?(!1a[0]&&!1a[1]?"":8.6l(8u,1a[0],8.5Q(f))+8.1l(f,"9n")+8.6l(8u,1a[1]||1a[0],8.5Q(f))):8.6l(8u,1a,8.5Q(f)));$(9r).1x(c(){$(8).8s(5c)})}},hr:c(1a){b 2n=1a.8k();k[(2n>0&&2n<6),""]},9k:c(1a){b 4C=1M 21(1a.2N(),1a.3x(),1a.3f(),(1a.hq()/-60));b 8t=1M 21(4C.2N(),1-1,4);b 4z=8t.8k()||7;8t.af(8t.3f()+1-4z);if(4z<4&&4C<8t){4C.af(4C.3f()-3);k $.18.9k(4C)}1g{if(4C>1M 21(4C.2N(),12-1,28)){4z=1M 21(4C.2N()+1,1-1,4).8k()||7;if(4z>4&&(4C.8k()||7)<4z-3){4C.af(4C.3f()+3);k $.18.9k(4C)}}}k 1f.9q(((4C-8t)/hp)/7)+1},7L:c(1a,f){k $.18.6l($.18.1l(f,"7L"),1a,$.18.5Q(f))},c9:c(3j,1H,1P){if(3j==19||1H==19){89"eC 1A"}1H=(2D 1H=="6k"?1H.dS():1H+"");if(1H==""){k 19}b 4Q=(1P?1P.4Q:19)||8.4B.4Q;b 4w=(1P?1P.4w:19)||8.4B.4w;b 4i=(1P?1P.4i:19)||8.4B.4i;b 5t=(1P?1P.5t:19)||8.4B.5t;b 41=(1P?1P.41:19)||8.4B.41;b 26=-1;b 2k=-1;b 2n=-1;b 4V=Z;b 4W=c(3i){b 4A=(2S+1<3j.1m&&3j.3z(2S+1)==3i);if(4A){2S++}k 4A};b 9o=c(3i){4W(3i);b cf=(3i=="@"?14:(3i=="y"?4:2));b 1r=cf;b aw=0;5y(1r>0&&5b<1H.1m&&1H.3z(5b)>="0"&&1H.3z(5b)<="9"){aw=aw*10+(1H.3z(5b++)-0);1r--}if(1r==cf){89"ho 8l at 17 "+5b}k aw};b ce=c(3i,aq,ar){b 9p=(4W(3i)?ar:aq);b 1r=0;1R(b j=0;j<9p.1m;j++){1r=1f.2d(1r,9p[j].1m)}b 3Y="";b eD=5b;5y(1r>0&&5b<1H.1m){3Y+=1H.3z(5b++);1R(b i=0;i<9p.1m;i++){if(3Y==9p[i]){k i+1}}1r--}89"hn 3Y at 17 "+eD};b av=c(){if(1H.3z(5b)!=3j.3z(2S)){89"hm 4V at 17 "+5b}5b++};b 5b=0;1R(b 2S=0;2S<3j.1m;2S++){if(4V){if(3j.3z(2S)=="\'"&&!4W("\'")){4V=Z}1g{av()}}1g{5r(3j.3z(2S)){1u"d":2n=9o("d");1D;1u"D":ce("D",4w,4i);1D;1u"m":2k=9o("m");1D;1u"M":2k=ce("M",5t,41);1D;1u"y":26=9o("y");1D;1u"@":b 1a=1M 21(9o("@"));26=1a.2N();2k=1a.3x()+1;2n=1a.3f();1D;1u"\'":if(4W("\'")){av()}1g{4V=1e}1D;5q:av()}}}if(26<2T){26+=1M 21().2N()-1M 21().2N()%2T+(26<=4Q?0:-2T)}b 1a=1M 21(26,2k-1,2n);if(1a.2N()!=26||1a.3x()+1!=2k||1a.3f()!=2n){89"eC 1a"}k 1a},hl:"7O-au-dd",hk:"D, dd M 7O",hj:"7O-au-dd",hi:"D, d M y",hh:"9j, dd-M-y",hg:"D, d M y",hf:"D, d M 7O",he:"D, d M 7O",hd:"D, d M y",hc:"@",hb:"7O-au-dd",6l:c(3j,1a,1P){if(!1a){k""}b 4w=(1P?1P.4w:19)||8.4B.4w;b 4i=(1P?1P.4i:19)||8.4B.4i;b 5t=(1P?1P.5t:19)||8.4B.5t;b 41=(1P?1P.41:19)||8.4B.41;b 4W=c(3i){b 4A=(2S+1<3j.1m&&3j.3z(2S+1)==3i);if(4A){2S++}k 4A};b cd=c(3i,1H){k(4W(3i)&&1H<10?"0":"")+1H};b cc=c(3i,1H,aq,ar){k(4W(3i)?ar[1H]:aq[1H])};b 5z="";b 4V=Z;if(1a){1R(b 2S=0;2S<3j.1m;2S++){if(4V){if(3j.3z(2S)=="\'"&&!4W("\'")){4V=Z}1g{5z+=3j.3z(2S)}}1g{5r(3j.3z(2S)){1u"d":5z+=cd("d",1a.3f());1D;1u"D":5z+=cc("D",1a.8k(),4w,4i);1D;1u"m":5z+=cd("m",1a.3x()+1);1D;1u"M":5z+=cc("M",1a.3x(),5t,41);1D;1u"y":5z+=(4W("y")?1a.2N():(1a.eB()%2T<10?"0":"")+1a.eB()%2T);1D;1u"@":5z+=1a.5u();1D;1u"\'":if(4W("\'")){5z+="\'"}1g{4V=1e}1D;5q:5z+=3j.3z(2S)}}}}k 5z},eA:c(3j){b 6t="";b 4V=Z;1R(b 2S=0;2S<3j.1m;2S++){if(4V){if(3j.3z(2S)=="\'"&&!4W("\'")){4V=Z}1g{6t+=3j.3z(2S)}}1g{5r(3j.3z(2S)){1u"d":1u"m":1u"y":1u"@":6t+="ha";1D;1u"D":1u"M":k 19;1u"\'":if(4W("\'")){6t+="\'"}1g{4V=1e}1D;5q:6t+=3j.3z(2S)}}}k 6t},1l:c(f,3Y){k f.1P[3Y]!==2p?f.1P[3Y]:8.4B[3Y]},cb:c(f){b 7H=8.1l(f,"7H");b 79=f.1p?f.1p.8s().7D(8.1l(f,"9n")):19;f.5w=f.5U=f.3y=19;b 1a=77=8.c6(f);if(79.1m>0){b 1P=8.5Q(f);if(79.1m>1){1a=8.c9(7H,79[1],1P)||77;f.5w=1a.3f();f.5U=1a.3x();f.3y=1a.2N()}ca{1a=8.c9(7H,79[0],1P)||77}c8(e){8.c7(e);1a=77}}f.4v=1a.3f();f.2r=f.4u=1a.3x();f.2A=f.4P=1a.2N();f.3Z=(79[0]?1a.3f():0);f.4t=(79[0]?1a.3x():0);f.4h=(79[0]?1a.2N():0);8.ah(f)},c6:c(f){b 1a=8.9c(8.1l(f,"77"),1M 21());b 2F=8.6m(f,"2q",1e);b 2R=8.6m(f,"2d");1a=(2F&&1a<2F?2F:1a);1a=(2R&&1a>2R?2R:1a);k 1a},9c:c(1a,77){b ey=c(v){b 1a=1M 21();1a.ef(1a.ee()+v);k 1a};b ez=c(v,c5){b 1a=1M 21();b 26=1a.2N();b 2k=1a.3x();b 2n=1a.3f();b c4=/([+-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g;b 4A=c4.78(v);5y(4A){5r(4A[2]||"d"){1u"d":1u"D":2n+=(4A[1]-0);1D;1u"w":1u"W":2n+=(4A[1]*7);1D;1u"m":1u"M":2k+=(4A[1]-0);2n=1f.2q(2n,c5(26,2k));1D;1u"y":1u"Y":26+=(4A[1]-0);2n=1f.2q(2n,c5(26,2k));1D}4A=c4.78(v)}k 1M 21(26,2k,2n)};k(1a==19?77:(2D 1a=="56"?ez(1a,8.9b):(2D 1a=="8l"?ey(1a):1a)))},c3:c(f,1a,5v){b 4j=!(1a);1a=8.9c(1a,1M 21());f.4v=f.3Z=1a.3f();f.2r=f.4u=f.4t=1a.3x();f.2A=f.4P=f.4h=1a.2N();if(8.1l(f,"4U")){if(5v){5v=8.9c(5v,19);f.5w=5v.3f();f.5U=5v.3x();f.3y=5v.2N()}1g{f.5w=f.3Z;f.5U=f.4t;f.3y=f.4h}}8.ah(f);if(f.1p){f.1p.8s(4j?"":8.7I(f)+(!8.1l(f,"4U")?"":8.1l(f,"9n")+8.7I(f,f.5w,f.5U,f.3y)))}},ap:c(f){b c2=(!f.4h||(f.1p&&f.1p.8s()=="")?19:1M 21(f.4h,f.4t,f.3Z));if(8.1l(f,"4U")){k[f.43||c2,(!f.3y?19:1M 21(f.3y,f.5U,f.5w))]}1g{k c2}},ex:c(f){b 6q=1M 21();6q=1M 21(6q.2N(),6q.3x(),6q.3f());b 44=8.1l(f,"44");b 4S=8.1l(f,"4S");b 4j=(8.1l(f,"c1")?"":\'<1w 2u="l-18-4j"><a 6o="1v.18.c0(\\\'#\'+f.id+"\');\\""+(44?8.6n(f,8.1l(f,"ew")||"x;"):"")+">"+8.1l(f,"ev")+"</a></1w>");b bR=\'<1w 2u="l-18-h9">\'+(4S?"":4j)+\'<1w 2u="l-18-5M"><a 6o="1v.18.76();"\'+(44?8.6n(f,8.1l(f,"eu")||"x;"):"")+">"+8.1l(f,"et")+"</a></1w>"+(4S?4j:"")+"</1w>";b 8q=8.1l(f,"8q");b 9e=8.1l(f,"9e");b 9l=8.1l(f,"9l");b 8r=8.1l(f,"8r");b 3M=8.8j(f);b 6s=8.1l(f,"6s");b ei=(3M[0]!=1||3M[1]!=1);b al=(!f.3Z?1M 21(h8,9,9):1M 21(f.4h,f.4t,f.3Z));b 2F=8.6m(f,"2q",1e);b 2R=8.6m(f,"2d");b 2r=f.2r;b 2A=f.2A;if(2R){b 9m=1M 21(2R.2N(),2R.3x()-3M[1]+1,2R.3f());9m=(2F&&9m<2F?2F:9m);5y(1M 21(2A,2r,1)>9m){2r--;if(2r<0){2r=11;2A--}}}b 74=8.1l(f,"74");74=(!8r?74:8.6l(74,1M 21(2A,2r-6s,1),8.5Q(f)));b 5V=\'<1w 2u="l-18-5V">\'+(8.bI(f,-1,2A,2r)?"<a 6o=\\"1v.18.5x(\'#"+f.id+"\', -"+6s+", \'M\');\\""+(44?8.6n(f,8.1l(f,"es")||"x;"):"")+">"+74+"</a>":(9l?"":"<6J>"+74+"</6J>"))+"</1w>";b 73=8.1l(f,"73");73=(!8r?73:8.6l(73,1M 21(2A,2r+6s,1),8.5Q(f)));b 4g=\'<1w 2u="l-18-4g">\'+(8.bI(f,+1,2A,2r)?"<a 6o=\\"1v.18.5x(\'#"+f.id+"\', +"+6s+", \'M\');\\""+(44?8.6n(f,8.1l(f,"er")||"x;"):"")+">"+73+"</a>":(9l?"":"<6J>"+73+"</6J>"))+"</1w>";b 7N=8.1l(f,"7N");7N=(!8r?7N:8.6l(7N,6q,8.5Q(f)));b 2x=(8q?\'<1w 2u="\'+8.bZ+\'">\'+8q+"</1w>":"")+(9e&&!f.4f?bR:"")+\'<1w 2u="l-18-h7">\'+(4S?4g:5V)+(8.bH(f,(8.1l(f,"bY")&&f.3Z?al:6q))?\'<1w 2u="l-18-4T"><a 6o="1v.18.bX(\\\'#\'+f.id+"\');\\""+(44?8.6n(f,8.1l(f,"ep")||"x;"):"")+">"+7N+"</a></1w>":"")+(4S?5V:4g)+"</1w>";b 4z=8.1l(f,"4z");b 9i=8.1l(f,"9i");b 4i=8.1l(f,"4i");b 4w=8.1l(f,"4w");b an=8.1l(f,"an");b 41=8.1l(f,"41");b 9g=8.1l(f,"9g");b 8n=8.1l(f,"8n");b 71=8.1l(f,"71");b 9h=8.1l(f,"9h");b am=8.1l(f,"am")||8.9k;b 5S=(44?8.1l(f,"ao")||"x;":"");b 7L=8.1l(f,"eo")||8.7L;b 5v=f.5w?1M 21(f.3y,f.5U,f.5w):al;1R(b 7M=0;7M<3M[0];7M++){1R(b 8p=0;8p<3M[1];8p++){b 8m=1M 21(2A,2r,f.4v);2x+=\'<1w 2u="l-18-h6-2k\'+(8p==0?" l-18-1M-7M":"")+\'">\'+8.e9(f,2r,2A,2F,2R,8m,7M>0||8p>0,44,41)+\'<eb 2u="l-18" h5="0" h4="0"><ej><aj 2u="l-18-59-7M">\'+(9h?"<4y>"+8.1l(f,"en")+"</4y>":"");1R(b 6r=0;6r<7;6r++){b 2n=(6r+4z)%7;b ao=(5S.88("9j")>-1?5S.5J(/9j/,4i[2n]):5S.5J(/D/,4w[2n]));2x+="<4y"+((6r+4z+6)%7>=5?\' 2u="l-18-72-4R-7K"\':"")+">"+(!9i?"<4p":"<a 6o=\\"1v.18.ek(\'#"+f.id+"\', "+2n+\');"\')+(44?8.6n(f,ao):"")+\' 59="\'+4i[2n]+\'">\'+an[2n]+(9i?"</a>":"</4p>")+"</4y>"}2x+="</aj></ej><ed>";b bV=8.9b(2A,2r);if(2A==f.4P&&2r==f.4u){f.4v=1f.2q(f.4v,bV)}b bW=(8.dW(2A,2r)-4z+7)%7;b 4e=1M 21(2A,2r,1-bW);b eg=(ei?6:1f.eh((bW+bV)/7));1R(b bU=0;bU<eg;bU++){2x+=\'<aj 2u="l-18-8o-7M">\'+(9h?\'<4y 2u="l-18-72-8p">\'+am(4e)+"</4y>":"");1R(b 6r=0;6r<7;6r++){b 9f=(9g?9g.1t((f.1p?f.1p[0]:19),[4e]):[1e,""]);b 6p=(4e.3x()!=2r);b 5T=6p||!9f[0]||(2F&&4e<2F)||(2R&&4e>2R);2x+=\'<4y 2u="l-18-8o-7K\'+((6r+4z+6)%7>=5?" l-18-72-4R-7K":"")+(6p?" l-18-6p":"")+(4e.5u()==8m.5u()&&2r==f.4u?" l-18-8o-7K-3r":"")+(5T?" "+8.bT:"")+(6p&&!71?"":" "+9f[1]+(4e.5u()>=al.5u()&&4e.5u()<=5v.5u()?" "+8.ak:"")+(4e.5u()==6q.5u()?" l-18-6q":""))+\'"\'+((!6p||71)&&9f[2]?\' 59="\'+9f[2]+\'"\':"")+(5T?(8n?" bL=\\"1v(8).1o().1n(\'l-18-72-3r\');\\" bK=\\"1v(8).1o().1J(\'l-18-72-3r\');\\"":""):" bL=\\"1v(8).1n(\'l-18-8o-7K-3r\')"+(8n?".1o().1n(\'l-18-72-3r\')":"")+";"+(!44||(6p&&!71)?"":"1v(\'#l-18-5S-"+f.id+"\').2x(\'"+(7L.1t((f.1p?f.1p[0]:19),[4e,f])||"x;")+"\');")+"\\" bK=\\"1v(8).1J(\'l-18-8o-7K-3r\')"+(8n?".1o().1J(\'l-18-72-3r\')":"")+";"+(!44||(6p&&!71)?"":"1v(\'#l-18-5S-"+f.id+"\').2x(\'x;\');")+\'" 6o="1v.18.bS(\\\'#\'+f.id+"\',"+2r+","+2A+\', 8);"\')+">"+(6p?(71?4e.3f():"x;"):(5T?4e.3f():"<a>"+4e.3f()+"</a>"))+"</4y>";4e.ef(4e.ee()+1)}2x+="</aj>"}2r++;if(2r>11){2r=0;2A++}2x+="</ed></eb></1w>"}}2x+=(44?\'<1w 2Q="4j: 5p;"></1w><1w id="l-18-5S-\'+f.id+\'" 2u="l-18-5S">\'+(8.1l(f,"ea")||"x;")+"</1w>":"")+(!9e&&!f.4f?bR:"")+\'<1w 2Q="4j: 5p;"></1w>\'+($.22.3v&&1b($.22.6V)<7&&!f.4f?\'<9d bQ="dD:Z;" 2u="l-18-bP"></9d>\':"");k 2x},e9:c(f,2r,2A,2F,2R,8m,bO,44,41){2F=(f.43&&2F&&8m<2F?8m:2F);b 2x=\'<1w 2u="l-18-7J">\';if(bO||!8.1l(f,"e8")){2x+=41[2r]+"x;"}1g{b e6=(2F&&2F.2N()==2A);b e5=(2R&&2R.2N()==2A);2x+=\'<4o 2u="l-18-1M-2k" e2="1v.18.bN(\\\'#\'+f.id+"\', 8, \'M\');\\" 6o=\\"1v.18.bM(\'#"+f.id+"\');\\""+(44?8.6n(f,8.1l(f,"e7")||"x;"):"")+">";1R(b 2k=0;2k<12;2k++){if((!e6||2k>=2F.3x())&&(!e5||2k<=2R.3x())){2x+=\'<ai 1H="\'+2k+\'"\'+(2k==2r?\' 1L="1L"\':"")+">"+41[2k]+"</ai>"}}2x+="</4o>"}if(bO||!8.1l(f,"e4")){2x+=2A}1g{b 70=8.1l(f,"e3").7D(":");b 26=0;b 3y=0;if(70.1m!=2){26=2A-10;3y=2A+10}1g{if(70[0].3z(0)=="+"||70[0].3z(0)=="-"){26=3y=1M 21().2N();26+=1b(70[0],10);3y+=1b(70[1],10)}1g{26=1b(70[0],10);3y=1b(70[1],10)}}26=(2F?1f.2d(26,2F.2N()):26);3y=(2R?1f.2q(3y,2R.2N()):3y);2x+=\'<4o 2u="l-18-1M-26" e2="1v.18.bN(\\\'#\'+f.id+"\', 8, \'Y\');\\" 6o=\\"1v.18.bM(\'#"+f.id+"\');\\""+(44?8.6n(f,8.1l(f,"e1")||"x;"):"")+">";1R(;26<=3y;26++){2x+=\'<ai 1H="\'+26+\'"\'+(26==2A?\' 1L="1L"\':"")+">"+26+"</ai>"}2x+="</4o>"}2x+="</1w>";k 2x},6n:c(f,96){k" bL=\\"1v(\'#l-18-5S-"+f.id+"\').2x(\'"+96+"\');\\" bK=\\"1v(\'#l-18-5S-"+f.id+"\').2x(\'x;\');\\""},ah:c(f,v,5R){b 26=f.2A+(5R=="Y"?v:0);b 2k=f.2r+(5R=="M"?v:0);b 2n=1f.2q(f.4v,8.9b(26,2k))+(5R=="D"?v:0);b 1a=1M 21(26,2k,2n);b 2F=8.6m(f,"2q",1e);b 2R=8.6m(f,"2d");1a=(2F&&1a<2F?2F:1a);1a=(2R&&1a>2R?2R:1a);f.4v=1a.3f();f.2r=f.4u=1a.3x();f.2A=f.4P=1a.2N();if(5R=="M"||5R=="Y"){8.ag(f)}},ag:c(f){b bJ=8.1l(f,"e0");if(bJ){bJ.1t((f.1p?f.1p[0]:19),[1M 21(f.4P,f.4u,1),f])}},8j:c(f){b 3M=8.1l(f,"dZ");k(3M==19?[1,1]:(2D 3M=="8l"?[1,3M]:3M))},6m:c(f,dY,dX){b 1a=8.9c(8.1l(f,dY+"21"),19);if(1a){1a.h3(0);1a.h2(0);1a.h1(0);1a.h0(0)}k(!dX||!f.43?1a:(!1a||f.43>1a?f.43:1a))},9b:c(26,2k){k 32-1M 21(26,2k,32).3f()},dW:c(26,2k){k 1M 21(26,2k,1).8k()},bI:c(f,v,dV,dU){b 3M=8.8j(f);b 1a=1M 21(dV,dU+(v<0?v:3M[1]),1);if(v<0){1a.af(8.9b(1a.2N(),1a.3x()))}k 8.bH(f,1a)},bH:c(f,1a){b 8i=(!f.43?19:1M 21(f.4P,f.4u,f.4v));8i=(8i&&f.43<8i?f.43:8i);b 2F=8i||8.6m(f,"2q");b 2R=8.6m(f,"2d");k((!2F||1a>=2F)&&(!2R||1a<=2R))},5Q:c(f){b 4Q=8.1l(f,"4Q");4Q=(2D 4Q!="56"?4Q:1M 21().2N()%2T+1b(4Q,10));k{4Q:4Q,4w:8.1l(f,"4w"),4i:8.1l(f,"4i"),5t:8.1l(f,"5t"),41:8.1l(f,"41")}},7I:c(f,2n,2k,26){if(!2n){f.3Z=f.4v;f.4t=f.4u;f.4h=f.4P}b 1a=(2n?(2D 2n=="6k"?2n:1M 21(26,2k,2n)):1M 21(f.4h,f.4t,f.3Z));k 8.6l(8.1l(f,"7H"),1a,8.5Q(f))}});c 9a(1h,8h){$.1Q(1h,8h);1R(b 3Y in 8h){if(8h[3Y]==19||8h[3Y]==2p){1h[3Y]=8h[3Y]}}k 1h}c dT(a){k(a&&(($.22.9Z&&2D a=="6k"&&a.1m)||(a.3S&&a.3S.dS().3i(/\\8a\\(\\)/))))}$.fn.18=c(h){b bG=8a.53.dR.23(1A,1);if(2D h=="56"&&(h=="gZ"||h=="3f")){k $.18["8Y"+h+"99"].1t($.18,[8[0]].5k(bG))}k 8.1x(c(){2D h=="56"?$.18["8Y"+h+"99"].1t($.18,[8].5k(bG)):$.18.dQ(8,h)})};$.18=1M 99();$(1d).gY(c(){$(1d.1K).5s($.18.2v).7A($.18.dP)})})(1v);(c(B){b A={bF:"2j.24",3F:"3F.24",bE:"2y.24",6Y:"6Y.1k",5O:"5O.1k",6Z:"6Z.1k",5N:"5N.1k",bD:"2j.1k",2i:"3F.1k",bC:"2y.1k"};B.4b("l.1X",{5l:c(){b J=8,K=8.h,D=2D K.1k=="56"?K.1k:"n,e,s,w,3X,3W,4d,3V",E=8.r.1n("l-1X-7F").8c("<1w/>").8c("<1w/>"),G=(8.dN=E.1o().1n("l-1X-gX").q({17:"2b",u:"2T%",t:"2T%"})),H=K.59||E.2L("59")||"",C=(8.97=B(\'<1w 2u="l-1X-8f"/>\')).5s(\'<4p 2u="l-1X-59">\'+H+"</4p>").5s(\'<a 3P="#" 2u="l-1X-8f-5M"><4p>X</4p></a>\').gW(G),I=(8.3G=G.1o()).2K(1d.1K).1C().1n("l-1X").1n(K.gV).1n(E.2L("8g")).1J("l-1X-7F").q({17:"1W",u:K.u,t:K.t,2X:"3H",2C:K.2C}).2L("gU",-1).q("dC",0).6f(c(L){if(K.dI){b M=27;(L.6U&&L.6U==M&&J.5M())}}).7A(c(){J.ad()}),F=(8.dK=B("<1w/>")).1n("l-1X-gT").q({17:"1W",3h:0}).2K(I);8.dM=B(".l-1X-8f-5M",C).ae(c(){B(8).1n("l-1X-8f-5M-ae")},c(){B(8).1J("l-1X-8f-5M-ae")}).7A(c(L){L.dO()}).1F(c(){J.5M();k Z});8.97.4J("*").1T(8.97).1x(c(){B.l.7G(8)});if(B.fn.24){I.24({6j:".l-1X-7F",1c:K.gS,1G:".l-1X-8f",2j:c(M,L){J.ad();(K.bF&&K.bF.1t(J.r[0],1A))},3F:c(M,L){(K.3F&&K.3F.1t(J.r[0],1A))},2y:c(M,L){(K.bE&&K.bE.1t(J.r[0],1A));B.l.1X.2E.2i()}});(K.24||I.24("6N"))}if(B.fn.1k){I.1k({6j:".l-1X-7F",1c:K.gR,6Z:K.6Z,6Y:K.6Y,5N:K.5N,5O:K.5O,2j:c(){(K.bD&&K.bD.1t(J.r[0],1A))},2i:c(M,L){(K.ab&&J.1r.1t(J));(K.2i&&K.2i.1t(J.r[0],1A))},3d:D,2y:c(M,L){(K.ab&&J.1r.1t(J));(K.bC&&K.bC.1t(J.r[0],1A));B.l.1X.2E.2i()}});(K.1k||I.1k("6N"))}8.bA(K.by);8.ac=Z;(K.7C&&B.fn.7C&&I.7C());(K.dJ&&8.bB())},5a:c(C,D){(A[C]&&8.3G.1i(A[C],D));5r(C){1u"by":8.bA(D);1D;1u"24":8.3G.24(D?"87":"6N");1D;1u"t":8.3G.t(D);1D;1u"17":8.17(D);1D;1u"1k":(2D D=="56"&&8.3G.1i("3d.1k",D));8.3G.1k(D?"87":"6N");1D;1u"59":B(".l-1X-59",8.97).96(D);1D;1u"u":8.3G.u(D);1D}B.4b.53.5a.1t(8,1A)},17:c(H){b D=B(3a),E=B(1d),F=E.2f(),C=E.2e(),G=F;if(B.7t(H,["7E","p","3e","3h","o"])>=0){H=[H=="3e"||H=="o"?H:"7E",H=="p"||H=="3h"?H:"98"]}if(H.3S!=8a){H=["7E","98"]}if(H[0].3S==7w){C+=H[0]}1g{5r(H[0]){1u"o":C+=0;1D;1u"3e":C+=D.u()-8.3G.u();1D;5q:1u"7E":C+=(D.u()-8.3G.u())/2}}if(H[1].3S==7w){F+=H[1]}1g{5r(H[1]){1u"p":F+=0;1D;1u"3h":F+=D.t()-8.3G.t();1D;5q:1u"98":F+=(D.t()-8.3G.t())/2}}F=1f.2d(F,G);8.3G.q({p:F,o:C})},1r:c(){b D=8.dN,G=8.97,E=8.r,F=1b(E.q("3U-p"),10)+1b(E.q("3U-3h"),10),C=1b(E.q("3U-o"),10)+1b(E.q("3U-3e"),10);E.t(D.t()-G.2M()-F);E.u(D.u()-C)},bB:c(){if(8.ac){k}8.2E=8.h.a9?1M B.l.1X.2E(8):19;(8.3G.4g().1m>0)&&8.3G.2K("1K");8.17(8.h.17);8.3G.1y(8.h.1y);8.h.ab&&8.1r();8.ad(1e);b C=19;b D={h:8.h};8.dM.3q();8.r.2m("gQ",[C,D],8.h.bB);8.ac=1e},ad:c(E){if((8.h.a9&&!E)||(!8.h.6X&&!8.h.a9)){k 8.r.2m("dL",[19,{h:8.h}],8.h.3q)}b D=8.h.2C,C=8.h;B(".l-1X:57").1x(c(){D=1f.2d(D,1b(B(8).q("z-3D"),10)||C.2C)});(8.2E&&8.2E.$el.q("z-3D",++D));8.3G.q("z-3D",++D);8.r.2m("dL",[19,{h:8.h}],8.h.3q)},5M:c(){(8.2E&&8.2E.3t());8.3G.1C(8.h.1C);b D=19;b C={h:8.h};8.r.2m("gP",[D,C],8.h.5M);B.l.1X.2E.2i();8.ac=Z},3t:c(){(8.2E&&8.2E.3t());8.3G.1C();8.r.3o(".1X").49("1X").1J("l-1X-7F").1C().2K("1K");8.3G.1Z()},bA:c(F){b E=8,C=Z,D=8.dK;D.bz().1C();B.1x(F,c(){k!(C=1e)});if(C){D.1y();B.1x(F,c(G,H){B("<5P/>").96(G).1F(c(){H.1t(E.r[0],1A)}).2K(D)})}}});B.1Q(B.l.1X,{4I:{dJ:1e,ab:1e,7C:Z,by:{},dI:1e,24:1e,t:dH,5O:2T,5N:aa,a9:Z,2E:{},17:"7E",1k:1e,6X:1e,u:dG,2C:95},2E:c(C){8.$el=B.l.1X.2E.dF(C)}});B.1Q(B.l.1X.2E,{7B:[],dE:B.6d("3q,7A,bx,6f,bw,1F".7D(","),c(C){k C+".1X-2E"}).7r(" "),dF:c(D){if(8.7B.1m===0){7s(c(){B("a, :1p").2V(B.l.1X.2E.dE,c(){b F=Z;b H=B(8).58(".l-1X");if(H.1m){b E=B(".l-1X-2E");if(E.1m){b G=1b(E.q("z-3D"),10);E.1x(c(){G=1f.2d(G,1b(B(8).q("z-3D"),10))});F=1b(H.q("z-3D"),10)>G}1g{F=1e}}k F})},1);B(1d).2V("6f.1X-2E",c(E){b F=27;(E.6U&&E.6U==F&&D.5M())});B(3a).2V("2i.1X-2E",B.l.1X.2E.2i)}b C=B("<1w/>").2K(1d.1K).1n("l-1X-2E").q(B.1Q({gO:0,3U:0,bv:0,17:"1W",p:0,o:0,u:8.u(),t:8.t()},D.h.2E));(D.h.7C&&B.fn.7C&&C.7C());8.7B.4K(C);k C},3t:c(C){8.7B.bm(B.7t(8.7B,C),1);if(8.7B.1m===0){B("a, :1p").1T([1d,3a]).3o(".1X-2E")}C.1Z()},t:c(){if(B.22.3v&&B.22.6V<7){b D=1f.2d(1d.4c.6W,1d.1K.6W);b C=1f.2d(1d.4c.4O,1d.1K.4O);if(D<C){k B(3a).t()+"2U"}1g{k D+"2U"}}1g{k B(1d).t()+"2U"}},u:c(){if(B.22.3v&&B.22.6V<7){b C=1f.2d(1d.4c.94,1d.1K.94);b D=1f.2d(1d.4c.4N,1d.1K.4N);if(C<D){k B(3a).u()+"2U"}1g{k C+"2U"}}1g{k B(1d).u()+"2U"}},2i:c(){b C=B([]);B.1x(B.l.1X.2E.7B,c(){C=C.1T(8)});C.q({u:0,t:0}).q({u:B.l.1X.2E.u(),t:B.l.1X.2E.t()})}});B.1Q(B.l.1X.2E.53,{3t:c(){B.l.1X.2E.3t(8.$el)}})})(1v);(c(A){A.fn.bt=A.fn.bt||c(B){k 8.1x(c(){A(8).58(B).eq(0).bu(8).1Z()})};A.4b("l.4r",{6i:{},l:c(B){k{h:8.h,1G:8.2h,1H:8.h.2B!="5p"||!8.h.2B?1f.3E(8.1H(19,8.h.2B=="3K"?"y":"x")):{x:1f.3E(8.1H(19,"x")),y:1f.3E(8.1H(19,"y"))},a7:8.dz()}},2a:c(C,B){A.l.2z.23(8,C,[B,8.l()]);8.r.2m(C=="6e"?C:"6e"+C,[B,8.l()],8.h[C])},3t:c(){8.r.1J("l-4r l-4r-1I").49("4r").3o(".4r");if(8.1G&&8.1G.1m){8.1G.bt("a");8.1G.1x(c(){A(8).1i("4s").8e()})}8.bs&&8.bs.1Z()},5a:c(B,C){A.4b.53.5a.1t(8,1A);if(/2q|2d|7z/.1B(B)){8.bp()}if(B=="a7"){C?8.1G.1m==2&&8.bo():8.dA()}},5l:c(){b B=8;8.r.1n("l-4r");8.bp();8.1G=A(8.h.1G,8.r);if(!8.1G.1m){B.1G=B.bs=A(B.h.3d||[0]).6d(c(){b D=A("<1w/>").1n("l-4r-1G").2K(B.r);if(8.id){D.2L("id",8.id)}k D[0]})}b C=c(D){8.r=A(D);8.r.1i("4s",8);8.h=B.h;8.r.2V("7A",c(){if(B.2h){8.6P(B.2h)}B.3q(8,1)});8.8d()};A.1Q(C.53,A.l.4s,{6h:c(D){k B.2j.23(B,D,8.r[0])},6g:c(D){k B.2y.23(B,D,8.r[0])},5o:c(D){k B.3F.23(B,D,8.r[0])},93:c(){k 1e},6M:c(D){8.br(D)}});A(8.1G).1x(c(){1M C(8)}).8c(\'<a 3P="dD:gN(0)" 2Q="dC:5n;a8:5n;"></a>\').1o().2V("3q",c(D){B.3q(8.bq)}).2V("6P",c(D){B.6P(8.bq)}).2V("6f",c(D){if(!B.h.gM){B.6f(D.6U,8.bq)}});8.r.2V("7A.4r",c(D){B.1F.1t(B,[D]);B.2h.1i("4s").6M(D);B.a6=B.a6+1});A.1x(8.h.3d||[],c(D,E){B.91(E.2j,D,1e)});if(!5L(8.h.dB)){8.91(8.h.dB,0,1e)}8.6R=A(8.1G[0]);if(8.1G.1m==2&&8.h.a7){8.bo()}},bp:c(){b B=8.r[0],C=8.h;8.6S={u:8.r.2Y(),t:8.r.2M()};A.1Q(C,{2B:C.2B||(B.4N<B.4O?"3K":"a5"),2d:!5L(1b(C.2d,10))?{x:1b(C.2d,10),y:1b(C.2d,10)}:({x:C.2d&&C.2d.x||2T,y:C.2d&&C.2d.y||2T}),2q:!5L(1b(C.2q,10))?{x:1b(C.2q,10),y:1b(C.2q,10)}:({x:C.2q&&C.2q.x||0,y:C.2q&&C.2q.y||0})});C.6T={x:C.2d.x-C.2q.x,y:C.2d.y-C.2q.y};C.3w={x:C.3w&&C.3w.x||1b(C.3w,10)||(C.7z?C.6T.x/(C.7z.x||1b(C.7z,10)||C.6T.x):0),y:C.3w&&C.3w.y||1b(C.3w,10)||(C.7z?C.6T.y/(C.7z.y||1b(C.7z,10)||C.6T.y):0)}},6f:c(C,B){if(/(37|38|39|40)/.1B(C)){8.91({x:/(37|39)/.1B(C)?(C==37?"-":"+")+"="+8.92("x"):0,y:/(38|40)/.1B(C)?(C==38?"-":"+")+"="+8.92("y"):0},B)}},3q:c(B,C){8.2h=A(B).1n("l-4r-1G-3L");if(C){8.2h.1o()[0].3q()}},6P:c(B){A(B).1J("l-4r-1G-3L");if(8.2h&&8.2h[0]==B){8.6R=8.2h;8.2h=19}},1F:c(C){b D=[C.3b,C.3c];b B=Z;8.1G.1x(c(){if(8==C.1h){B=1e}});if(B||8.h.1I||!(8.2h||8.6R)){k}if(!8.2h&&8.6R){8.3q(8.6R,1e)}8.v=8.r.v();8.91({y:8.5K(C.3c-8.v.p-8.2h[0].4O/2,"y"),x:8.5K(C.3b-8.v.o-8.2h[0].4N/2,"x")},19,!8.h.4L)},bo:c(){if(8.5m){k}8.5m=A("<1w></1w>").1n("l-4r-a7").q({17:"1W"}).2K(8.r);8.a4()},dA:c(){8.5m.1Z();8.5m=19},a4:c(){b C=8.h.2B=="3K"?"p":"o";b B=8.h.2B=="3K"?"t":"u";8.5m.q(C,(1b(A(8.1G[0]).q(C),10)||0)+8.7y(0,8.h.2B=="3K"?"y":"x")/2);8.5m.q(B,(1b(A(8.1G[1]).q(C),10)||0)-(1b(A(8.1G[0]).q(C),10)||0))},dz:c(){k 8.5m?8.5K(1b(8.5m.q(8.h.2B=="3K"?"t":"u"),10),8.h.2B=="3K"?"y":"x"):19},dy:c(){k 8.1G.3D(8.2h[0])},1H:c(D,B){if(8.1G.1m==1){8.2h=8.1G}if(!B){B=8.h.2B=="3K"?"y":"x"}b C=A(D!=2p&&D!==19?8.1G[D]||D:8.2h);if(C.1i("4s").a3){k 1b(C.1i("4s").a3[B],10)}1g{k 1b(((1b(C.q(B=="x"?"o":"p"),10)/(8.6S[B=="x"?"u":"t"]-8.7y(D,B)))*8.h.6T[B])+8.h.2q[B],10)}},5K:c(C,B){k 8.h.2q[B]+(C/(8.6S[B=="x"?"u":"t"]-8.7y(19,B)))*8.h.6T[B]},4M:c(C,B){k((C-8.h.2q[B])/8.h.6T[B])*(8.6S[B=="x"?"u":"t"]-8.7y(19,B))},8Z:c(D,B){if(8.5m){if(8.2h[0]==8.1G[0]&&D>=8.4M(8.1H(1),B)){D=8.4M(8.1H(1,B)-8.92(B),B)}if(8.2h[0]==8.1G[1]&&D<=8.4M(8.1H(0),B)){D=8.4M(8.1H(0,B)+8.92(B),B)}}if(8.h.3d){b C=8.h.3d[8.dy()];if(D<8.4M(C.2q,B)){D=8.4M(C.2q,B)}1g{if(D>8.4M(C.2d,B)){D=8.4M(C.2d,B)}}}k D},90:c(C,B){if(C>=8.6S[B=="x"?"u":"t"]-8.7y(19,B)){C=8.6S[B=="x"?"u":"t"]-8.7y(19,B)}if(C<=0){C=0}k C},7y:c(C,B){k A(C!=2p&&C!==19?8.1G[C]:8.2h)[0]["v"+(B=="x"?"gL":"gK")]},92:c(B){k 8.h.3w[B]||1},2j:c(C,B){b D=8.h;if(D.1I){k Z}8.6S={u:8.r.2Y(),t:8.r.2M()};if(!8.2h){8.3q(8.6R,1e)}8.v=8.r.v();8.bn=8.2h.v();8.7x={p:C.3c-8.bn.p,o:C.3b-8.bn.o};8.a6=8.1H();8.2a("2j",C);8.3F(C,B);k 1e},2y:c(B){8.2a("2y",B);if(8.a6!=8.1H()){8.2a("6Q",B)}8.3q(8.2h,1e);k Z},3F:c(E,D){b F=8.h;b B={p:E.3c-8.v.p-8.7x.p,o:E.3b-8.v.o-8.7x.o};if(!8.2h){8.3q(8.6R,1e)}B.o=8.90(B.o,"x");B.p=8.90(B.p,"y");if(F.3w.x){b C=8.5K(B.o,"x");C=1f.3E(C/F.3w.x)*F.3w.x;B.o=8.4M(C,"x")}if(F.3w.y){b C=8.5K(B.p,"y");C=1f.3E(C/F.3w.y)*F.3w.y;B.p=8.4M(C,"y")}B.o=8.8Z(B.o,"x");B.p=8.8Z(B.p,"y");if(F.2B!="3K"){8.2h.q({o:B.o})}if(F.2B!="a5"){8.2h.q({p:B.p})}8.2h.1i("4s").a3={x:1f.3E(8.5K(B.o,"x"))||0,y:1f.3E(8.5K(B.p,"y"))||0};if(8.5m){8.a4()}8.2a("6e",E);k Z},91:c(F,E,G){b H=8.h;8.6S={u:8.r.2Y(),t:8.r.2M()};if(E==2p&&!8.2h&&8.1G.1m!=1){k Z}if(E==2p&&!8.2h){E=0}if(E!=2p){8.2h=8.6R=A(8.1G[E]||E)}if(F.x!==2p&&F.y!==2p){b B=F.x,I=F.y}1g{b B=F,I=F}if(B!==2p&&B.3S!=7w){b D=/^\\-\\=/.1B(B),C=/^\\+\\=/.1B(B);if(D||C){B=8.1H(19,"x")+1b(B.5J(D?"=":"+=",""),10)}1g{B=5L(1b(B,10))?2p:1b(B,10)}}if(I!==2p&&I.3S!=7w){b D=/^\\-\\=/.1B(I),C=/^\\+\\=/.1B(I);if(D||C){I=8.1H(19,"y")+1b(I.5J(D?"=":"+=",""),10)}1g{I=5L(1b(I,10))?2p:1b(I,10)}}if(H.2B!="3K"&&B!==2p){if(H.3w.x){B=1f.3E(B/H.3w.x)*H.3w.x}B=8.4M(B,"x");B=8.90(B,"x");B=8.8Z(B,"x");H.1E?8.2h.2y().1E({o:B},(1f.3T(1b(8.2h.q("o"))-B))*(!5L(1b(H.1E))?H.1E:5)):8.2h.q({o:B})}if(H.2B!="a5"&&I!==2p){if(H.3w.y){I=1f.3E(I/H.3w.y)*H.3w.y}I=8.4M(I,"y");I=8.90(I,"y");I=8.8Z(I,"y");H.1E?8.2h.2y().1E({p:I},(1f.3T(1b(8.2h.q("p"))-I))*(!5L(1b(H.1E))?H.1E:5)):8.2h.q({p:I})}if(8.5m){8.a4()}8.2h.1i("4s").a3={x:1f.3E(8.5K(B,"x"))||0,y:1f.3E(8.5K(I,"y"))||0};if(!G){8.2a("2j",19);8.2a("2y",19);8.2a("6Q",19);8.2a("6e",19)}}});A.l.4r.9U="1H";A.l.4r.4I={1G:".l-4r-1G",4L:1,1E:Z}})(1v);(c(A){A.4b("l.1q",{5l:c(){8.h.3C+=".1q";8.8W(1e)},5a:c(B,C){if((/^1L/).1B(B)){8.4o(C)}1g{8.h[B]=C;8.8W()}},1m:c(){k 8.$1q.1m},bl:c(B){k B.59&&B.59.5J(/\\s/g,"8Y").5J(/[^A-gJ-gI-9\\-8Y:\\.]/g,"")||8.h.dl+A.1i(B)},l:c(C,B){k{h:8.h,gH:C,dj:B,3D:8.$1q.3D(C)}},8W:c(O){8.$3Q=A("li:gG(a[3P])",8.r);8.$1q=8.$3Q.6d(c(){k A("a",8)[0]});8.$3g=A([]);b P=8,D=8.h;8.$1q.1x(c(R,Q){if(Q.6c&&Q.6c.5J("#","")){P.$3g=P.$3g.1T(Q.6c)}1g{if(A(Q).2L("3P")!="#"){A.1i(Q,"3P.1q",Q.3P);A.1i(Q,"54.1q",Q.3P);b T=P.bl(Q);Q.3P="#"+T;b S=A("#"+T);if(!S.1m){S=A(D.bj).2L("id",T).1n(D.8V).gF(P.$3g[R-1]||P.r);S.1i("3t.1q",1e)}P.$3g=P.$3g.1T(S)}1g{D.1I.4K(R+1)}}});if(O){8.r.1n(D.bi);8.$3g.1x(c(){b Q=A(8);Q.1n(D.8V)});if(D.1L===2p){if(a2.6c){8.$1q.1x(c(S,Q){if(Q.6c==a2.6c){D.1L=S;if(A.22.3v||A.22.7v){b R=A(a2.6c),T=R.2L("id");R.2L("id","");7s(c(){R.2L("id",T)},8b)}gE(0,0);k Z}})}1g{if(D.84){b J=1b(A.84("l-1q"+A.1i(P.r)),10);if(J&&P.$1q[J]){D.1L=J}}1g{if(P.$3Q.3u("."+D.3p).1m){D.1L=P.$3Q.3D(P.$3Q.3u("."+D.3p)[0])}}}}D.1L=D.1L===19||D.1L!==2p?D.1L:0;D.1I=A.gD(D.1I.5k(A.6d(8.$3Q.3u("."+D.7q),c(R,Q){k P.$3Q.3D(R)}))).5I();if(A.7t(D.1L,D.1I)!=-1){D.1I.bm(A.7t(D.1L,D.1I),1)}8.$3g.1n(D.6I);8.$3Q.1J(D.3p);if(D.1L!==19){8.$3g.eq(D.1L).1y().1J(D.6I);8.$3Q.eq(D.1L).1n(D.3p);b K=c(){A(P.r).2m("a1",[P.6b("a1"),P.l(P.$1q[D.1L],P.$3g[D.1L])],D.1y)};if(A.1i(8.$1q[D.1L],"54.1q")){8.54(D.1L,K)}1g{K()}}A(3a).2V("gC",c(){P.$1q.3o(".1q");P.$3Q=P.$1q=P.$3g=19})}1R(b G=0,N;N=8.$3Q[G];G++){A(N)[A.7t(G,D.1I)!=-1&&!A(N).4a(D.3p)?"1n":"1J"](D.7q)}if(D.6K===Z){8.$1q.49("6K.1q")}b C,I,B={"2q-u":0,1z:1},E="8X";if(D.fx&&D.fx.3S==8a){C=D.fx[0]||B,I=D.fx[1]||B}1g{C=I=D.fx||B}b H={4q:"",2X:"",t:""};if(!A.22.3v){H.1O=""}c M(R,Q,S){Q.1E(C,C.1z||E,c(){Q.1n(D.6I).q(H);if(A.22.3v&&C.1O){Q[0].2Q.3u=""}if(S){L(R,S,Q)}})}c L(R,S,Q){if(I===B){S.q("4q","6O")}S.1E(I,I.1z||E,c(){S.1J(D.6I).q(H);if(A.22.3v&&I.1O){S[0].2Q.3u=""}A(P.r).2m("a1",[P.6b("a1"),P.l(R,S[0])],D.1y)})}c F(R,T,Q,S){T.1n(D.3p).7u().1J(D.3p);M(R,Q,S)}8.$1q.3o(".1q").2V(D.3C,c(){b T=A(8).58("li:eq(0)"),Q=P.$3g.3u(":57"),S=A(8.6c);if((T.4a(D.3p)&&!D.9V)||T.4a(D.7q)||A(8).4a(D.8U)||A(P.r).2m("dx",[P.6b("dx"),P.l(8,S[0])],D.4o)===Z){8.6P();k Z}P.h.1L=P.$1q.3D(8);if(D.9V){if(T.4a(D.3p)){P.h.1L=19;T.1J(D.3p);P.$3g.2y();M(8,Q);8.6P();k Z}1g{if(!Q.1m){P.$3g.2y();b R=8;P.54(P.$1q.3D(8),c(){T.1n(D.3p).1n(D.bh);L(R,S)});8.6P();k Z}}}if(D.84){A.84("l-1q"+A.1i(P.r),P.h.1L,D.84)}P.$3g.2y();if(S.1m){b R=8;P.54(P.$1q.3D(8),Q.1m?c(){F(R,T,Q,S)}:c(){T.1n(D.3p);L(R,S)})}1g{89"1v gB gA: gz gy gx."}if(A.22.3v){8.6P()}k Z});if(!(/^1F/).1B(D.3C)){8.$1q.2V("1F.1q",c(){k Z})}},1T:c(E,D,C){if(C==2p){C=8.$1q.1m}b G=8.h;b I=A(G.dk.5J(/#\\{3P\\}/g,E).5J(/#\\{6J\\}/g,D));I.1i("3t.1q",1e);b H=E.88("#")==0?E.5J("#",""):8.bl(A("a:dw-2W",I)[0]);b F=A("#"+H);if(!F.1m){F=A(G.bj).2L("id",H).1n(G.6I).1i("3t.1q",1e)}F.1n(G.8V);if(C>=8.$3Q.1m){I.2K(8.r);F.2K(8.r[0].3R)}1g{I.a0(8.$3Q[C]);F.a0(8.$3g[C])}G.1I=A.6d(G.1I,c(K,J){k K>=C?++K:K});8.8W();if(8.$1q.1m==1){I.1n(G.3p);F.1J(G.6I);b B=A.1i(8.$1q[0],"54.1q");if(B){8.54(C,B)}}8.r.2m("dv",[8.6b("dv"),8.l(8.$1q[C],8.$3g[C])],G.1T)},1Z:c(B){b D=8.h,E=8.$3Q.eq(B).1Z(),C=8.$3g.eq(B).1Z();if(E.4a(D.3p)&&8.$1q.1m>1){8.4o(B+(B+1<8.$1q.1m?1:-1))}D.1I=A.6d(A.dt(D.1I,c(G,F){k G!=B}),c(G,F){k G>=B?--G:G});8.8W();8.r.2m("du",[8.6b("du"),8.l(E.4J("a")[0],C[0])],D.1Z)},87:c(B){b C=8.h;if(A.7t(B,C.1I)==-1){k}b D=8.$3Q.eq(B).1J(C.7q);if(A.22.9Z){D.q("4q","4f-6O");7s(c(){D.q("4q","6O")},0)}C.1I=A.dt(C.1I,c(F,E){k F!=B});8.r.2m("ds",[8.6b("ds"),8.l(8.$1q[B],8.$3g[B])],C.87)},6N:c(C){b B=8,D=8.h;if(C!=D.1L){8.$3Q.eq(C).1n(D.7q);D.1I.4K(C);D.1I.5I();8.r.2m("dr",[8.6b("dr"),8.l(8.$1q[C],8.$3g[C])],D.6N)}},4o:c(B){if(2D B=="56"){B=8.$1q.3D(8.$1q.3u("[3P$="+B+"]")[0])}8.$1q.eq(B).6M(8.h.3C)},54:c(G,K){b L=8,D=8.h,E=8.$1q.eq(G),J=E[0],H=K==2p||K===Z,B=E.1i("54.1q");K=K||c(){};if(!B||!H&&A.1i(J,"6K.1q")){K();k}b M=c(N){b O=A(N),P=O.4J("*:gw");k P.1m&&P.is(":6L(86)")&&P||O};b C=c(){L.$1q.3u("."+D.8U).1J(D.8U).1x(c(){if(D.9X){M(8).1o().2x(M(8).1i("6J.1q"))}});L.9Y=19};if(D.9X){b I=M(J).2x();M(J).gv("<em></em>").4J("em").1i("6J.1q",I).2x(D.9X)}b F=A.1Q({},D.9W,{dn:B,bk:c(O,N){A(J.6c).2x(O);C();if(D.6K){A.1i(J,"6K.1q",1e)}A(L.r).2m("dq",[L.6b("dq"),L.l(L.$1q[G],L.$3g[G])],D.54);D.9W.bk&&D.9W.bk(O,N);K()}});if(8.9Y){8.9Y.gu();C()}E.1n(D.8U);7s(c(){L.9Y=A.gt(F)},0)},dn:c(C,B){8.$1q.eq(C).49("6K.1q").1i("54.1q",B)},3t:c(){b B=8.h;8.r.3o(".1q").1J(B.bi).49("1q");8.$1q.1x(c(){b C=A.1i(8,"3P.1q");if(C){8.3P=C}b D=A(8).3o(".1q");A.1x(["3P","54","6K"],c(E,F){D.49(F+".1q")})});8.$3Q.1T(8.$3g).1x(c(){if(A.1i(8,"3t.1q")){A(8).1Z()}1g{A(8).1J([B.3p,B.bh,B.7q,B.8V,B.6I].7r(" "))}})},6b:c(B){k A.3C.dm({5H:B,1h:8.r[0]})}});A.l.1q.4I={9V:Z,3C:"1F",1I:[],84:19,9X:"gs&#gr;",6K:Z,dl:"l-1q-",9W:{},fx:19,dk:\'<li><a 3P="#{3P}"><4p>#{6J}</4p></a></li>\',bj:"<1w></1w>",bi:"l-1q-gq",3p:"l-1q-1L",bh:"l-1q-9V",7q:"l-1q-1I",8V:"l-1q-dj",6I:"l-1q-1C",8U:"l-1q-gp"};A.l.1q.9U="1m";A.1Q(A.l.1q.53,{bg:19,go:c(C,F){F=F||Z;b B=8,E=8.h.1L;c G(){B.bg=gn(c(){E=++E<B.$1q.1m?E:0;B.4o(E)},C)}c D(H){if(!H||H.di){gm(B.bg)}}if(C){G();if(!F){8.$1q.2V(8.h.3C,D)}1g{8.$1q.2V(8.h.3C,c(){D();E=B.h.1L;G()})}}1g{D();8.$1q.3o(8.h.3C,D)}}})})(1v)',62,1349,'||||||||this|||var|function|||inst||options|||return|ui|||left|top|css|element||height|width|offset||||||||||||||||||||||||||||||false||||||||position|datepicker|null|date|parseInt|helper|document|true|Math|else|target|data|effects|resizable|_get|length|addClass|parent|input|tabs|size|containment|apply|case|jQuery|div|each|show|duration|arguments|test|hide|break|animate|click|handle|value|disabled|removeClass|body|selected|new|easing|opacity|settings|extend|for|currentItem|add|from|instance|absolute|dialog|helperProportions|remove||Date|browser|call|draggable||year|||to|propagate|relative|items|max|scrollLeft|scrollTop|containers|currentHandle|resize|start|month|offsetParent|triggerHandler|day|callback|undefined|min|drawMonth|cursor|255|class|dpDiv|pos|html|stop|plugin|drawYear|axis|zIndex|typeof|overlay|minDate|mode|ddmanager|item|grid|appendTo|attr|outerHeight|getFullYear|originalPosition|sortable|style|maxDate|iFormat|100|px|bind|child|overflow|outerWidth|placeholder|margins|0px|||||||||window|pageX|pageY|handles|right|getDate|panels|bottom|match|format|queue|overflowX|overflowY|positionAbs|unbind|selectedClass|focus|over|selectable|destroy|filter|msie|stepping|getMonth|endYear|charAt|PROP_NAME|unselecting|event|index|round|drag|uiDialog|hidden|scrollSpeed|scrollSensitivity|vertical|active|numMonths|accordion|cursorAt|href|lis|parentNode|constructor|abs|margin|nw|sw|se|name|currentDay||monthNames||rangeStart|showStatus||auto||dequeue|removeData|hasClass|widget|documentElement|ne|printDate|inline|next|currentYear|dayNames|clear|isFixed|nodeName|ctrlKey|selecting|select|span|display|slider|mouse|currentMonth|selectedMonth|selectedDay|dayNamesShort|xa0|td|firstDay|matches|_defaults|checkDate|headers|setMode|restore|convertPositionTo|cssPosition|defaults|find|push|distance|translateValue|offsetWidth|offsetHeight|selectedYear|shortYearCutoff|end|isRTL|current|rangeSelect|literal|lookAhead|fixed|_pos|containerCache||ghost|droppable|prototype|load||string|visible|parents|title|setData|iValue|dateStr|showAnim|toggle|effect|tolerance|originalSize|get|4px|concat|init|rangeElement|none|mouseDrag|both|default|switch|append|monthNamesShort|getTime|endDate|endDay|_adjustDate|while|output|save|setTransition|drop|scroll|alsoResize|aspectRatio|isover|type|sort|replace|convertValue|isNaN|close|minWidth|minHeight|button|_getFormatConfig|period|status|unselectable|endMonth|prev|_updateDatepicker|_dialogInput|key|activate||down|complete|borderLeftWidth|borderTopWidth|removeWrapper|up|PI|revert|_change|accept|fakeEvent|hash|map|slide|keydown|mouseStop|mouseStart|plugins|cancel|object|formatDate|_getMinMaxDate|_addStatus|onclick|otherMonth|today|dow|stepMonths|chars|_stayOpen|_triggerClass|static|_disabledInputs|toShow|createWrapper|direction|clone|tagName|128|floating|proportionallyResize|knobHandles|_mouseStarted|hideClass|label|cache|not|trigger|disable|block|blur|change|previousHandle|actualSize|realMax|keyCode|version|scrollHeight|stack|maxHeight|maxWidth|years|showOtherMonths|week|nextText|prevText||_hideDatepicker|defaultDate|exec|dates|onSelect|_inDialog|markerClassName|buttonText|autoHeight|marginRight|marginBottom|pow|transparent|HTML|out|continue|sizeDiff|0pt|isout|widgetName|disabledClass|join|setTimeout|inArray|siblings|opera|Number|clickOffset|handleSize|steps|mousedown|instances|bgiframe|split|center|content|disableSelection|dateFormat|_formatDate|header|cell|dateStatus|row|currentText|yy|_datepickerShowing|postProcess|obj|scrollY|scrollX|showOn|toHide|andSelf|marginLeft|marginTop|backgroundColor|delay|deactivate|startselected|snapElements|cookie||img|enable|indexOf|throw|Array|500|wrap|mouseInit|mouseDestroy|titlebar|className|props|newMinDate|_getNumberOfMonths|getDay|number|selectedDate|highlightWeek|days|col|prompt|navigationAsDateFormat|val|firstMon|altFormat|_lastInput|toLowerCase|_showDatepicker|buttonImage|inlineSettings|running|visibility|sqrt|70158|139|F0|overflowXOffset|overflowYOffset|_opacity|_zIndex|_cursor|cancelHelperRemoval|generatePosition|isFunction|parentData|borderDif|_handles|intersect|droppables|isOver|loadingClass|panelClass|tabify|normal|_|translateRange|translateLimits|moveTo|oneStep|mouseCapture|scrollWidth|1000|text|uiDialogTitlebar|middle|Datepicker|extendRemove|_getDaysInMonth|_determineDate|iframe|closeAtTop|daySettings|beforeShowDay|showWeeks|changeFirstDay|DD|iso8601Week|hideIfNoPrevNext|maxDraw|rangeSeparator|getNumber|names|floor|altField|blockUI|_curInst|onClose|innerHeight|beforeShow|getData|appendText|the|Show|swing|alwaysOpen|sin|animateClass|dragging|update|refreshPositions|counter|offsetParentBorders|currentContainer|refresh|absolutePosition|hasScroll|_aspectRatio|containerOffset|_proportionallyResize|knob|mouseUp|cssCache|getter|unselect|ajaxOptions|spinner|xhr|safari|insertBefore|tabsshow|location|sliderValue|updateRange|horizontal|firstValue|range|border|modal|150|autoResize|isOpen|moveToTop|hover|setDate|_notifyChange|_adjustInstDate|option|tr|_currentClass|currentDate|calculateWeek|dayNamesMin|dayStatus|_getDate|shortNames|longNames|||mm|checkLiteral|num|_selectDate|_selectingMonthYear|browserHeight|browserWidth|innerWidth|String|preventDefault|handled|_doKeyDown|attrValue|attrName|animated|toggleClass|borderRightWidth|borderBottomWidth|neg|percent|color|pieces|5625|192|211|parseFloat|slow|defaultView|unit|background|dropBehaviour|rearrange|prepareOffsets|refreshItems|selectees|1px|textarea|shiftKey|containerPosition|containerSize|resizing|hoverClass|activeClass|proportions|sortables|iframeFix|_mouseDelayMet|_mouseDownEvent|rotation|unselectClass|navClass|panelTemplate|success|tabId|splice|handleOffset|createRange|initBoundaries|firstChild|mouseDown|generated|unwrap|after|padding|keypress|mouseup|buttons|empty|createButtons|open|resizeStop|resizeStart|dragStop|dragStart|otherArgs|_isInRange|_canAdjustMonth|onChange|onmouseout|onmouseover|_clickMonthYear|_selectMonthYear|secondary|cover|src|controls|_selectDay|_unselectableClass|dRow|daysInMonth|leadDays|_gotoToday|gotoCurrent|_promptClass|_clearDate|mandatory|startDate|_setDate|pattern|getDaysInMonth|_getDefaultDate|log|catch|parseDate|try|_setDateFromField|formatName|formatNumber|getName|origSize|_mainDivId|_dialogClass|_tidyDialog|showOptions|_findPos|clientHeight|clientWidth|dims|chr|_doKeyPress|_appendClass|_newInst|regional|step|animations|140|times|origin|scale|backgroundImage|explode|easeOutBounce|asin|169|rgb|fast|cssText|fxWrapper|float|guess|domPosition|createPlaceholder|custom|connectWith|pointer|touch|dragged|selectableunselecting|opos|alsoresize|removeChild|_updateCache|containerElement|preserveCursor|elementOffset|documentScroll|wrapper|originalElement|autohide|_nodeName|knobTheme|borderTop|borderLeft|borderRight|borderBottom|_helper|snap|original|uiHash||mouseDelayMet|mouseDistanceMet|_mouseUpDelegate|_mouseMoveDelegate|clientX|panel|tabTemplate|idPrefix|fix|url|||tabsload|tabsdisable|tabsenable|grep|tabsremove|tabsadd|first|tabsselect|handleIndex|getRange|removeRange|startValue|outline|javascript|events|create|300|200|closeOnEscape|autoOpen|uiDialogButtonPane|dialogfocus|uiDialogTitlebarClose|uiDialogContainer|stopPropagation|_checkExternalClick|_attachDatepicker|slice|toString|isArray|curMonth|curYear|_getFirstDayOfMonth|checkRange|minMax|numberOfMonths|onChangeMonthYear|yearStatus|onchange|yearRange|changeYear|inMaxYear|inMinYear|monthStatus|changeMonth|_generateMonthYearHeader|initStatus|table||tbody|getUTCDate|setUTCDate|numRows|ceil|isMultiMonth|thead|_changeFirstDay|||weekHeader|statusForDate|currentStatus||nextStatus|prevStatus|closeText|closeStatus|clearText|clearStatus|_generateDatepicker|offsetNumeric|offsetString|_possibleChars|getYear|Invalid|iInit|_updateAlternate|100px|nextSibling|_checkOffset|Class|_isDisabledDatepicker|charCode|dateText|_dialogInst|_inlineDatepicker|before|alt|buttonImageOnly|_connectDatepicker|debug|Select|different|May|Close|navigationFilter|oldContent|newContent|oldHeader|newHeader|accordionchange|fillSpace|zoom|animation|transfer|getBaseline|paddingRight|paddingLeft|paddingBottom|paddingTop|fontSize|fade|easeInBounce|525|cos|easeOutQuad|def|165|224|144|230||240|107|black|245|trim|rgba|elem|cssUnit|morph||_toggleClass|_removeClass||_addClass|__toggle|Function|_hide|_show|currentStyle|getComputedStyle|storage|dropOnEmpty|toArray|serialize|receive|appendChild|contactContainers|intersectsWithEdge|intersectsWith|refreshContainers|toleranceElement|expression|sender|compareDocumentPosition|contains|autoRefresh|unselected|fit|autoHide|_renderProxy|_respectSize|_updateRatio|originalMousePosition|_renderAxis|defaultTheme|8px|solid|F2F2F2|greedyChild|greedy|shouldRevert|connectToSortable|snapMode|mousemove|mouseMove|_mouseUnselectable|on|widgetBaseClass|MozUserSelect|5000px|clearInterval|setInterval|rotate|loading|nav|8230|Loading|ajax|abort|wrapInner|last|identifier|fragment|Mismatching|Tabs|UI|unload|unique|scrollTo|insertAfter|has|tab|z0|Za|Height|Width|noKeyboard|void|borderWidth|dialogclose|dialogopen|resizeHelper|dragHelper|buttonpane|tabIndex|dialogClass|prependTo|container|ready|isDisabled|setMilliseconds|setSeconds|setMinutes|setHours|cellspacing|cellpadding|one|links|9999|control|0123456789|W3C|TIMESTAMP|RSS|RFC_2822|RFC_1123|RFC_1036|RFC_850|RFC_822|ISO_8601|COOKIE|ATOM|Unexpected|Unknown|Missing|86400000|getTimezoneOffset|noWeekends|selectedIndex|unblockUI|fadeOut|fadeIn|slideUp|slideDown|nodeType|rtl|multi|1000px|fromCharCode|_getDateDatepicker|_setDateDatepicker|_changeDatepicker|_disableDatepicker|_enableDatepicker|_destroyDatepicker|_dialogDatepicker|_inlineShow|err|eval|getAttribute|setDefaults|console|hasDatepicker|Set|Sa|Fr|Th|We|Tu|Mo|Su|Sat|Fri|Thu|Wed|Tue|Mon|Sun|Saturday|Friday|Thursday|Wednesday|Tuesday|Monday|Sunday||of||Week|weekStatus|Wk|Dec|Nov|Oct|Sep||Aug|Jul|Jun|Apr||Mar|Feb|Jan|December|November|October|September|August|July|June|April|March|February|January|Today|x3e|Next|previous|Prev|x3c|without|Erase|Clear|700|easeinout|easeslide|bounceout|bounceslide|clearStyle|tabindex|navigation|shake|box|puff|pulsate|removeAttribute|ffff99|highlight|horizFirst|fold|IMG|clip|250|bounce|blind|easeInOutBounce|984375|625|9375|easeInOutBack|easeOutBack|easeInBack|easeInOutElastic|easeOutElastic|easeInElastic|easeInOutCirc|easeOutCirc|easeInCirc|easeInOutExpo|easeOutExpo|easeInExpo|easeInOutSine|easeOutSine|easeInSine|easeInOutQuint|easeOutQuint|easeInQuint|easeInOutQuart|easeOutQuart|easeInQuart|easeInOutCubic|easeOutCubic|easeInCubic|easeInOutQuad|easeInQuad|jswing|yellow|white|silver|red|violet|purple|203|pink|orange|olive|navy|maroon|magenta|lime|lightyellow|193|182|lightpink|lightgrey|238|lightgreen|lightcyan|216|173|lightblue|khaki|130|indigo|green|215|gold|fuchsia|148|darkviolet|122|233|darksalmon|darkred|204|153|darkorchid|darkorange|darkolivegreen|darkmagenta|183|189|darkkhaki|darkgreen|darkgrey|darkcyan|darkblue|cyan|brown|blue|220|beige|azure|aqua|curCSS|state|outlineColor|borderTopColor|borderRightColor|borderLeftColor|borderBottomColor|pt|switchClass|method|Moz|replaceWith|font|dynamic|semi|10000|forcePointerForContainers|attribute|522|selectablestop|selectableselected|selectableunselected|selectableselecting|keyboard|clientY|selectablestart|dotted|createElement|selectee|animateEasing|animateDuration|instanceof|children|mouseover|Left|Right|Bottom|Top|all|canvas|808080||DEDEDE|proxy|sortactivate|dragstart|dropdeactivate|dropactivate|dropout|dropover|group|makeArray|fromSortable|toSortable|sortreceive|outer|inner|snapTolerance|DragDropIframeFix|001|fff|valid|invalid|mozilla|_mouseDelayTimer|which|started|off|enableSelection|gen'.split('|'),0,{})) + diff --git a/wp-content/themes/vanilla/js/jquery/ui.accordion.js b/wp-content/themes/vanilla/js/jquery/ui.accordion.js new file mode 100755 index 000000000..9ba92dd01 --- /dev/null +++ b/wp-content/themes/vanilla/js/jquery/ui.accordion.js @@ -0,0 +1,2 @@ +eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(4(E){E.2i("e.5",{2h:4(){7 G=2.c;3(G.2g){7 J=2.d.13("a").l(G.1c);3(J.1q){3(J.l(G.n).1q){G.6=J}w{G.6=J.j().j().2f();J.v("2e")}}}G.8=2.d.13(G.n);G.6=C(G.8,G.6);3(E.W.15){2.d.13("a").k("2d","1")}3(!2.d.2c("e-5")){2.d.v("e-5");E("<1p 1o=\'e-5-2b\'/>").2a(G.8);E("<1p 1o=\'e-5-29\'/>").28(G.8);G.8.v("e-5-n").27("26","0")}7 I;3(G.1l){I=2.d.j().b();G.8.O(4(){I-=E(2).1m()});7 H=0;G.8.h().O(4(){H=V.1n(H,E(2).25()-E(2).b())}).b(I-H)}w{3(G.g){I=0;G.8.h().O(4(){I=V.1n(I,E(2).1m())}).b(I)}}G.8.11(G.6||"").h().X();G.6.j().S().v(G.t);3(G.Q){2.d.24((G.Q)+".5",F)}},U:4(G){F.12(2.d[0],{T:C(2.c.8,G)[0]})},23:4(){2.c.8.h().k("22","");3(2.c.1l||2.c.g){2.c.8.h().k("b","")}E.21(2.d[0],"5");2.d.20("e-5").1Z(".5")}});4 B(H,G){9 4(){9 H.1Y(G,1X)}}4 D(I){3(!E.o(2,"5")){9}7 G=E.o(2,"5");7 H=G.c;H.m=I?0:--H.m;3(H.m){9}3(H.1W){H.f.1V(H.i).k({b:"",18:""})}E(2).1U("1k",[E.Q.1T({1S:"1k",T:G.d[0]}),H.o],H.1R)}4 A(G,K,L,J,M){7 I=E.o(2,"5").c;I.f=G;I.i=K;I.o=L;7 H=B(D,2);I.m=K.P()===0?G.P():K.P();3(I.R){3(!I.s&&J){E.e.5.Z[I.R]({f:x([]),i:K,r:H,z:M,g:I.g})}w{E.e.5.Z[I.R]({f:G,i:K,r:H,z:M,g:I.g})}}w{3(!I.s&&J){G.1Q()}w{K.X();G.Y()}H(10)}}4 F(L){7 J=E.o(2,"5").c;3(J.1P){9 u}3(!L.T&&!J.s){J.6.j().S().1j(J.t);7 I=J.6.h(),M={c:J,1i:x([]),1h:J.6,1g:x([]),1f:I},G=(J.6=E([]));A.12(2,G,I,M);9 u}7 K=E(L.T);K=E(K.1O(J.n)[0]||K);7 H=K[0]==J.6[0];3(J.m||(J.s&&H)){9 u}3(!K.1N(J.n)){9}J.6.j().S().1j(J.t);3(!H){K.j().S().v(J.t)}7 G=K.h(),I=J.6.h(),M={c:J,1i:K,1h:J.6,1g:G,1f:I},N=J.8.1e(J.6[0])>J.8.1e(K[0]);J.6=H?E([]):K;A.12(2,G,I,M,H,N);9 u}4 C(H,G){9 G!=1M?1L G=="1K"?H.l(":1d("+G+")"):H.11(H.11(G)):G===u?E([]):H.l(":1d(0)")}E.19(E.e.5,{1J:{t:"1I",s:10,R:"y",Q:"1H",n:"a",g:10,m:0,1c:4(){9 2.1b.1a()==1G.1b.1a()}},Z:{y:4(G,I){G=E.19({q:"14",p:1F},G,I);3(!G.i.P()){G.f.16({b:"Y"},G);9}7 H=G.i.b(),J=G.f.b(),K=J/H;G.f.k({b:0,18:"17"}).Y();G.i.l(":17").O(G.r).1E().l(":1D").16({b:"X"},{1C:4(L){7 M=(H-L)*K;3(E.W.15||E.W.1B){M=V.1A(M)}G.f.b(M)},p:G.p,q:G.q,r:4(){3(!G.g){G.f.k("b","1z")}G.r()}})},1y:4(G){2.y(G,{q:G.z?"1x":"14",p:G.z?1w:1v})},1u:4(G){2.y(G,{q:"1t",p:1s})}}});E.1r.U=4(G){9 2.5("U",G)}})(x)',62,143,'||this|if|function|accordion|active|var|headers|return||height|options|element|ui|toShow|autoHeight|next|toHide|parent|css|filter|running|header|data|duration|easing|complete|alwaysOpen|selectedClass|false|addClass|else|jQuery|slide|down|||||||||||||||each|size|event|animated|andSelf|target|activate|Math|browser|hide|show|animations|true|not|call|find|swing|msie|animate|hidden|overflow|extend|toLowerCase|href|navigationFilter|eq|index|oldContent|newContent|oldHeader|newHeader|toggleClass|accordionchange|fillSpace|outerHeight|max|class|span|length|fn|700|easeinout|easeslide|200|1000|bounceout|bounceslide|auto|ceil|opera|step|visible|end|300|location|click|selected|defaults|number|typeof|undefined|is|parents|disabled|toggle|change|type|fix|triggerHandler|add|clearStyle|arguments|apply|unbind|removeClass|removeData|display|destroy|bind|innerHeight|tabindex|attr|appendTo|right|insertBefore|left|hasClass|zoom|current|prev|navigation|init|widget'.split('|'),0,{})) + diff --git a/wp-content/themes/vanilla/js/jquery/ui.datepicker.js b/wp-content/themes/vanilla/js/jquery/ui.datepicker.js new file mode 100755 index 000000000..ee4e8eefe --- /dev/null +++ b/wp-content/themes/vanilla/js/jquery/ui.datepicker.js @@ -0,0 +1,2 @@ +eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(n($){c 19="f";n 3A(){b.7i=F;b.44=r;b.2s=[];b.2W=F;b.2G=F;b.5w="t-f-I";b.5O="t-f-3a";b.2p="t-f-41";b.5x="t-f-9D";b.5g="t-f-3l";b.5a="t-f-3H";b.4o="t-f-4u-G";b.5Q=[];b.5Q[""]={6C:"9C",6D:"9B 4a 4u h",6A:"7m",6B:"7m 9A 6P",2A:"	z;9y",6z:"4b 4a 9x C",2z:"9w	v;",6y:"4b 4a 3P C",2U:"9u",6x:"4b 4a 4u C",1g:["9t","9s","9r","9q","7l","9p","9o","9n","9m","9l","9k","9j"],1P:["9i","9h","9g","9f","7l","9e","9d","9c","9b","9a","99","98"],6g:"4b a 7k C",69:"4b a 7k A",6v:"97",96:"95 94 4a A",1o:["93","92","91","90","8Z","8Y","8X"],1t:["8W","8V","8U","8T","8S","8R","8Q"],4r:["8P","8O","8N","8M","8L","8K","8J"],4s:"8I 3N 8H 8G 2y G",2S:"7j 3N, M d",2L:"4z/3o/2V",1x:0,6k:"7j a h",1D:F};b.1z={31:"2E",1K:"5H",5A:{},2C:r,49:"",2K:"...",3y:"",7g:F,3G:1i,5i:F,3Q:F,3m:F,5f:F,6h:1i,6d:1i,6c:"-10:+10",3M:1i,3g:F,2w:F,3L:F,4q:b.3O,1C:"+10",1j:F,6w:b.2S,O:r,S:r,1c:"8F",3K:r,48:r,2F:r,68:r,46:r,67:1,2m:1,1E:F,3T:" - ",3Z:"",3q:""};$.4d(b.1z,b.5Q[""]);b.J=$(\'<I x="\'+b.5w+\'" 4l="5I: 6Y;"></I>\')}$.4d(3A.5V,{2H:"8E",5o:n(){k(b.7i){8D.5o.2b("",4T)}},8C:n(u){3D(b.1z,u||{});q b},5S:n(o,u){c 3z=r;1m(4R 61 b.1z){c 4Q=o.8B("h:"+4R);k(4Q){3z=3z||{};6J{3z[4R]=8A(4Q)}6I(8z){3z[4R]=4Q}}}c 1Y=o.1Y.5J();c 1v=(1Y=="I"||1Y=="3k");k(!o.x){o.x="78"+v z().1R()}c 8=b.5P($(o),1v);8.u=$.4d({},u||{},3z||{});k(1Y=="p"){b.7h(o,8)}N{k(1v){b.7b(o,8)}}},5P:n(o,1v){q{x:o[0].x,p:o,1s:0,1r:0,1B:0,H:0,K:0,1v:1v,J:(!1v?b.J:$(\'<I V="t-f-1v"></I>\'))}},7h:n(o,8){c p=$(o);k(p.42(b.2H)){q}c 49=b.l(8,"49");c 1D=b.l(8,"1D");k(49){p[1D?"7d":"7c"](\'<3k V="\'+b.5O+\'">\'+49+"</3k>")}c 31=b.l(8,"31");k(31=="2E"||31=="4k"){p.2E(b.3v)}k(31=="3x"||31=="4k"){c 2K=b.l(8,"2K");c 3y=b.l(8,"3y");c 41=$(b.l(8,"7g")?$("<4N/>").2j(b.2p).7f({56:3y,7e:2K,3J:2K}):$(\'<3x 47="3x"></3x>\').2j(b.2p).R(3y==""?2K:$("<4N/>").7f({56:3y,7e:2K,3J:2K})));p[1D?"7d":"7c"](41);41.8y(n(){k($.f.2W&&$.f.3r==o){$.f.2B()}N{$.f.3v(o)}q F})}p.2j(b.2H).5N(b.4M).75(b.5M).4P("7a.f",n(3s,2J,E){8.u[2J]=E}).4P("79.f",n(3s,2J){q b.l(8,2J)});$.1d(o,19,8)},7b:n(o,8){c p=$(o);k(p.42(b.2H)){q}p.2j(b.2H).3a(8.J).4P("7a.f",n(3s,2J,E){8.u[2J]=E}).4P("79.f",n(3s,2J){q b.l(8,2J)});$.1d(o,19,8);b.5k(8,b.5n(8));b.24(8)},8x:n(8){c 1b=b.3d(8);8.J.1M(1b[1]*$(".t-f",8.J[0]).1M())},8w:n(p,76,2F,u,2r){c 8=b.77;k(!8){c x="78"+v z().1R();b.26=$(\'<p 47="50" x="\'+x+\'" 23="1" 4l="1W: 4F; 1X: -6R;"/>\');b.26.5N(b.4M);$("29").3a(b.26);8=b.77=b.5P(b.26,F);8.u={};$.1d(b.26[0],19,8)}3D(8.u,u||{});b.26.3n(76);b.1H=(2r?(2r.1a?2r:[2r.8v,2r.8u]):r);k(!b.1H){c 4I=4J.6T||15.1L.5F||15.29.5F;c 4H=4J.6S||15.1L.5E||15.29.5E;c 30=15.1L.3u||15.29.3u;c 2Z=15.1L.3t||15.29.3t;b.1H=[(4I/2)-2O+30,(4H/2)-8t+2Z]}b.26.25("2q",b.1H[0]+"4K").25("1X",b.1H[1]+"4K");8.u.2F=2F;b.2G=1i;b.J.2j(b.5x);b.3v(b.26[0]);k($.43){$.43(b.J)}$.1d(b.26[0],19,8);q b},8s:n(o){c 1Y=o.1Y.5J();c $o=$(o);$.8r(o,19);k(1Y=="p"){$o.3w("."+b.5O).45().3i().3w("."+b.2p).45().3i().2Q(b.2H).4E("2E",b.3v).4E("5N",b.4M).4E("75",b.5M)}N{k(1Y=="I"||1Y=="3k"){$o.2Q(b.2H).6X()}}},8q:n(o){o.4O=F;$(o).3w("3x."+b.2p).3C(n(){b.4O=F}).3i().3w("4N."+b.2p).25({74:"1.0",73:""});b.2s=$.72(b.2s,n(E){q(E==o?r:E)})},8p:n(o){o.4O=1i;$(o).3w("3x."+b.2p).3C(n(){b.4O=1i}).3i().3w("4N."+b.2p).25({74:"0.5",73:"3V"});b.2s=$.72(b.2s,n(E){q(E==o?r:E)});b.2s[b.2s.1a]=o},70:n(o){k(!o){q F}1m(c i=0;i<b.2s.1a;i++){k(b.2s[i]==o){q 1i}}q F},8o:n(o,1e,E){c u=1e||{};k(1O 1e=="3B"){u={};u[1e]=E}k(8=$.1d(o,19)){3D(8.u,u);b.24(8)}},8n:n(o,h,1S){c 8=$.1d(o,19);k(8){b.5k(8,h,1S);b.24(8)}},8m:n(o){c 8=$.1d(o,19);k(8){b.5q(8)}q(8?b.4w(8):r)},4M:n(e){c 8=$.1d(e.o,19);c 4L=1i;k($.f.2W){3U(e.5L){B 9:$.f.2B(r,"");L;B 13:$.f.59(e.o,8.1r,8.1B,$("1w.t-f-3h-2R-2x",8.J)[0]);q F;L;B 27:$.f.2B(r,$.f.l(8,"1c"));L;B 33:$.f.1U(e.o,(e.1N?-1:-$.f.l(8,"2m")),(e.1N?"Y":"M"));L;B 34:$.f.1U(e.o,(e.1N?+1:+$.f.l(8,"2m")),(e.1N?"Y":"M"));L;B 35:k(e.1N){$.f.5h(e.o)}L;B 36:k(e.1N){$.f.5e(e.o)}L;B 37:k(e.1N){$.f.1U(e.o,-1,"D")}L;B 38:k(e.1N){$.f.1U(e.o,-7,"D")}L;B 39:k(e.1N){$.f.1U(e.o,+1,"D")}L;B 40:k(e.1N){$.f.1U(e.o,+7,"D")}L;3V:4L=F}}N{k(e.5L==36&&e.1N){$.f.3v(b)}N{4L=F}}k(4L){e.8l();e.8k()}},5M:n(e){c 8=$.1d(e.o,19);c 2n=$.f.6K($.f.l(8,"2L"));c 5K=8j.8i(e.71==4U?e.5L:e.71);q e.1N||(5K<" "||!2n||2n.6u(5K)>-1)},3v:n(p){p=p.o||p;k(p.1Y.5J()!="p"){p=$("p",p.8h)[0]}k($.f.70(p)||$.f.3r==p){q}c 8=$.1d(p,19);c 48=$.f.l(8,"48");3D(8.u,(48?48.2b(p,[p,8]):{}));$.f.2B(r,"");$.f.3r=p;$.f.5q(8);k($.f.2G){p.E=""}k(!$.f.1H){$.f.1H=$.f.5C(p);$.f.1H[1]+=p.8g}c 1p=F;$(p).6Q().3C(n(){1p|=$(b).25("1W")=="6Z";q!1p});k(1p&&$.2c.5D){$.f.1H[0]-=15.1L.3u;$.f.1H[1]-=15.1L.3t}c P={2q:$.f.1H[0],1X:$.f.1H[1]};$.f.1H=r;8.1h=r;8.J.25({1W:"4F",5I:"8f",1X:"-8e"});$.f.24(8);8.J.1M($.f.3d(8)[1]*$(".t-f",8.J[0])[0].8d);P=$.f.6U(8,P,1p);8.J.25({1W:($.f.2G&&$.43?"8c":(1p?"6Z":"4F")),5I:"6Y",2q:P.2q+"4K",1X:P.1X+"4K"});k(!8.1v){c 1K=$.f.l(8,"1K")||"5H";c 1c=$.f.l(8,"1c");c 2X=n(){$.f.2W=1i;k($.2c.57&&2N($.2c.6j)<7){$("4j.t-f-55").25({1M:8.J.1M()+4,2I:8.J.2I()+4})}};k($.4G&&$.4G[1K]){8.J.5H(1K,$.f.l(8,"5A"),1c,2X)}N{8.J[1K](1c,2X)}k(1c==""){2X()}k(8.p[0].47!="5B"){8.p[0].2E()}$.f.44=8}},24:n(8){c 5G={1M:8.J.1M()+4,2I:8.J.2I()+4};8.J.6X().3a(b.6E(8)).8b("4j.t-f-55").25({1M:5G.1M,2I:5G.2I});c 1b=b.3d(8);8.J[(1b[0]!=1||1b[1]!=1?"6W":"45")+"6V"]("t-f-8a");8.J[(b.l(8,"1D")?"6W":"45")+"6V"]("t-f-89");k(8.p&&8.p[0].47!="5B"){$(8.p[0]).2E()}},6U:n(8,P,1p){c 2r=8.p?b.5C(8.p[0]):r;c 4I=4J.6T||15.1L.5F;c 4H=4J.6S||15.1L.5E;c 30=15.1L.3u||15.29.3u;c 2Z=15.1L.3t||15.29.3t;k(b.l(8,"1D")||(P.2q+8.J.1M()-30)>4I){P.2q=1Q.2t((1p?0:30),2r[0]+(8.p?8.p.1M():0)-(1p?30:0)-8.J.1M()-(1p&&$.2c.5D?15.1L.3u:0))}N{P.2q-=(1p?30:0)}k((P.1X+8.J.2I()-2Z)>4H){P.1X=1Q.2t((1p?0:2Z),2r[1]-(1p?2Z:0)-(b.2G?0:8.J.2I())-(1p&&$.2c.5D?15.1L.3t:0))}N{P.1X-=(1p?2Z:0)}q P},5C:n(2Y){3S(2Y&&(2Y.47=="5B"||2Y.88!=1)){2Y=2Y.87}c 1W=$(2Y).P();q[1W.2q,1W.1X]},2B:n(p,1c){c 8=b.44;k(!8){q}c 1E=b.l(8,"1E");k(1E&&b.2o){b.4C("#"+8.x,b.2M(8,8.1f,8.1q,8.1n))}b.2o=F;k(b.2W){1c=(1c!=r?1c:b.l(8,"1c"));c 1K=b.l(8,"1K");c 2X=n(){$.f.5y(8)};k(1c!=""&&$.4G&&$.4G[1K]){8.J.5z(1K,$.f.l(8,"5A"),1c,2X)}N{8.J[(1c==""?"5z":(1K=="86"?"85":(1K=="84"?"83":"5z")))](1c,2X)}k(1c==""){b.5y(8)}c 46=b.l(8,"46");k(46){46.2b((8.p?8.p[0]:r),[b.4w(8),8])}b.2W=F;b.3r=r;8.u.3l=r;k(b.2G){b.26.25({1W:"4F",2q:"0",1X:"-6R"});k($.43){$.82();$("29").3a(b.J)}}b.2G=F}b.44=r},5y:n(8){8.J.2Q(b.5x).4E(".t-f");$("."+b.5g,8.J).45()},5R:n(3s){k(!$.f.44){q}c $o=$(3s.o);k(($o.6Q("#"+$.f.5w).1a==0)&&!$o.42($.f.2H)&&!$o.42($.f.2p)&&$.f.2W&&!($.f.2G&&$.43)){$.f.2B(r,"")}},1U:n(x,P,20){c o=$(x);c 8=$.1d(o[0],19);b.4g(8,P,20);b.24(8)},5e:n(x){c o=$(x);c 8=$.1d(o[0],19);k(b.l(8,"5f")&&8.1f){8.1s=8.1f;8.H=8.1r=8.1q;8.K=8.1B=8.1n}N{c h=v z();8.1s=h.U();8.H=8.1r=h.16();8.K=8.1B=h.Q()}b.1U(o);b.4f(8)},53:n(x,2P,20){c o=$(x);c 8=$.1d(o[0],19);8.4D=F;8[20=="M"?"H":"K"]=2P.2a[2P.81].E-0;b.1U(o);b.4f(8)},52:n(x){c o=$(x);c 8=$.1d(o[0],19);k(8.p&&8.4D&&!$.2c.57){8.p[0].2E()}8.4D=!8.4D},6s:n(x,G){c o=$(x);c 8=$.1d(o[0],19);8.u.1x=G;b.24(8)},59:n(x,C,A,1w){k($(1w).42(b.5a)){q}c o=$(x);c 8=$.1d(o[0],19);c 1E=b.l(8,"1E");k(1E){b.2o=!b.2o;k(b.2o){$(".t-f 1w").2Q(b.4o);$(1w).2j(b.4o)}}8.1s=8.1f=$("a",1w).R();8.1r=8.1q=C;8.1B=8.1n=A;k(b.2o){8.1T=8.22=8.17=r}N{k(1E){8.1T=8.1f;8.22=8.1q;8.17=8.1n}}b.4C(x,b.2M(8,8.1f,8.1q,8.1n));k(b.2o){8.1h=v z(8.1n,8.1q,8.1f);b.24(8)}N{k(1E){8.1s=8.1f=8.1h.U();8.1r=8.1q=8.1h.16();8.1B=8.1n=8.1h.Q();8.1h=r;k(8.1v){b.24(8)}}}},5h:n(x){c o=$(x);c 8=$.1d(o[0],19);k(b.l(8,"5i")){q}b.2o=F;8.1T=8.22=8.17=8.1h=r;b.4C(o,"")},4C:n(x,1J){c o=$(x);c 8=$.1d(o[0],19);1J=(1J!=r?1J:b.2M(8));k(b.l(8,"1E")&&1J){1J=(8.1h?b.2M(8,8.1h):1J)+b.l(8,"3T")+1J}k(8.p){8.p.3n(1J)}b.6O(8);c 2F=b.l(8,"2F");k(2F){2F.2b((8.p?8.p[0]:r),[1J,8])}N{k(8.p){8.p.41("6P")}}k(8.1v){b.24(8)}N{k(!b.2o){b.2B(r,b.l(8,"1c"));b.3r=8.p[0];k(1O(8.p[0])!="4c"){8.p[0].2E()}b.3r=r}}},6O:n(8){c 3Z=b.l(8,"3Z");k(3Z){c 3q=b.l(8,"3q");c h=b.4w(8);1J=(5Z(h)?(!h[0]&&!h[1]?"":b.2d(3q,h[0],b.1Z(8))+b.l(8,"3T")+b.2d(3q,h[1]||h[0],b.1Z(8))):b.2d(3q,h,b.1Z(8)));$(3Z).3C(n(){$(b).3n(1J)})}},80:n(h){c G=h.3e();q[(G>0&&G<6),""]},3O:n(h){c 1A=v z(h.Q(),h.16(),h.U(),(h.7Z()/-60));c 3p=v z(1A.Q(),1-1,4);c 1x=3p.3e()||7;3p.4e(3p.U()+1-1x);k(1x<4&&1A<3p){1A.4e(1A.U()-3);q $.f.3O(1A)}N{k(1A>v z(1A.Q(),12-1,28)){1x=v z(1A.Q()+1,1-1,4).3e()||7;k(1x>4&&(1A.3e()||7)<1x-3){1A.4e(1A.U()+3);q $.f.3O(1A)}}}q 1Q.7Y(((1A-3p)/7X)/7)+1},2S:n(h,8){q $.f.2d($.f.l(8,"2S"),h,$.f.1Z(8))},5p:n(X,E,u){k(X==r||E==r){3W"6M 4T"}E=(1O E=="4c"?E.5X():E+"");k(E==""){q r}c 1C=(u?u.1C:r)||b.1z.1C;c 1t=(u?u.1t:r)||b.1z.1t;c 1o=(u?u.1o:r)||b.1z.1o;c 1P=(u?u.1P:r)||b.1z.1P;c 1g=(u?u.1g:r)||b.1z.1g;c A=-1;c C=-1;c G=-1;c 1F=F;c 1G=n(1l){c 1y=(T+1<X.1a&&X.18(T+1)==1l);k(1y){T++}q 1y};c 3X=n(1l){1G(1l);c 5v=(1l=="@"?14:(1l=="y"?4:2));c 23=5v;c 4B=0;3S(23>0&&1I<E.1a&&E.18(1I)>="0"&&E.18(1I)<="9"){4B=4B*10+(E.18(1I++)-0);23--}k(23==5v){3W"7W 4X 5u 1W "+1I}q 4B};c 5t=n(1l,4x,4y){c 3Y=(1G(1l)?4y:4x);c 23=0;1m(c j=0;j<3Y.1a;j++){23=1Q.2t(23,3Y[j].1a)}c 1e="";c 6N=1I;3S(23>0&&1I<E.1a){1e+=E.18(1I++);1m(c i=0;i<3Y.1a;i++){k(1e==3Y[i]){q i+1}}23--}3W"7V 1e 5u 1W "+6N};c 4A=n(){k(E.18(1I)!=X.18(T)){3W"7U 1F 5u 1W "+1I}1I++};c 1I=0;1m(c T=0;T<X.1a;T++){k(1F){k(X.18(T)=="\'"&&!1G("\'")){1F=F}N{4A()}}N{3U(X.18(T)){B"d":G=3X("d");L;B"D":5t("D",1t,1o);L;B"m":C=3X("m");L;B"M":C=5t("M",1P,1g);L;B"y":A=3X("y");L;B"@":c h=v z(3X("@"));A=h.Q();C=h.16()+1;G=h.U();L;B"\'":k(1G("\'")){4A()}N{1F=1i}L;3V:4A()}}}k(A<2O){A+=v z().Q()-v z().Q()%2O+(A<=1C?0:-2O)}c h=v z(A,C-1,G);k(h.Q()!=A||h.16()+1!=C||h.U()!=G){3W"6M h"}q h},7T:"2V-4z-3o",7S:"D, 3o M 2V",7R:"2V-4z-3o",7Q:"D, d M y",7P:"3N, 3o-M-y",7O:"D, d M y",7N:"D, d M 2V",7M:"D, d M 2V",7L:"D, d M y",7K:"@",7J:"2V-4z-3o",2d:n(X,h,u){k(!h){q""}c 1t=(u?u.1t:r)||b.1z.1t;c 1o=(u?u.1o:r)||b.1z.1o;c 1P=(u?u.1P:r)||b.1z.1P;c 1g=(u?u.1g:r)||b.1z.1g;c 1G=n(1l){c 1y=(T+1<X.1a&&X.18(T+1)==1l);k(1y){T++}q 1y};c 5s=n(1l,E){q(1G(1l)&&E<10?"0":"")+E};c 5r=n(1l,E,4x,4y){q(1G(1l)?4y[E]:4x[E])};c 1V="";c 1F=F;k(h){1m(c T=0;T<X.1a;T++){k(1F){k(X.18(T)=="\'"&&!1G("\'")){1F=F}N{1V+=X.18(T)}}N{3U(X.18(T)){B"d":1V+=5s("d",h.U());L;B"D":1V+=5r("D",h.3e(),1t,1o);L;B"m":1V+=5s("m",h.16()+1);L;B"M":1V+=5r("M",h.16(),1P,1g);L;B"y":1V+=(1G("y")?h.Q():(h.6L()%2O<10?"0":"")+h.6L()%2O);L;B"@":1V+=h.1R();L;B"\'":k(1G("\'")){1V+="\'"}N{1F=1i}L;3V:1V+=X.18(T)}}}}q 1V},6K:n(X){c 2n="";c 1F=F;1m(c T=0;T<X.1a;T++){k(1F){k(X.18(T)=="\'"&&!1G("\'")){1F=F}N{2n+=X.18(T)}}N{3U(X.18(T)){B"d":B"m":B"y":B"@":2n+="7I";L;B"D":B"M":q r;B"\'":k(1G("\'")){2n+="\'"}N{1F=1i}L;3V:2n+=X.18(T)}}}q 2n},l:n(8,1e){q 8.u[1e]!==4U?8.u[1e]:b.1z[1e]},5q:n(8){c 2L=b.l(8,"2L");c 2D=8.p?8.p.3n().6b(b.l(8,"3T")):r;8.1T=8.22=8.17=r;c h=2C=b.5n(8);k(2D.1a>0){c u=b.1Z(8);k(2D.1a>1){h=b.5p(2L,2D[1],u)||2C;8.1T=h.U();8.22=h.16();8.17=h.Q()}6J{h=b.5p(2L,2D[0],u)||2C}6I(e){b.5o(e);h=2C}}8.1s=h.U();8.H=8.1r=h.16();8.K=8.1B=h.Q();8.1f=(2D[0]?h.U():0);8.1q=(2D[0]?h.16():0);8.1n=(2D[0]?h.Q():0);b.4g(8)},5n:n(8){c h=b.3F(b.l(8,"2C"),v z());c O=b.2e(8,"2f",1i);c S=b.2e(8,"2t");h=(O&&h<O?O:h);h=(S&&h>S?S:h);q h},3F:n(h,2C){c 6F=n(P){c h=v z();h.6o(h.6n()+P);q h};c 6G=n(P,5m){c h=v z();c A=h.Q();c C=h.16();c G=h.U();c 5l=/([+-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g;c 1y=5l.6H(P);3S(1y){3U(1y[2]||"d"){B"d":B"D":G+=(1y[1]-0);L;B"w":B"W":G+=(1y[1]*7);L;B"m":B"M":C+=(1y[1]-0);G=1Q.2f(G,5m(A,C));L;B"y":B"Y":A+=(1y[1]-0);G=1Q.2f(G,5m(A,C));L}1y=5l.6H(P)}q v z(A,C,G)};q(h==r?2C:(1O h=="3B"?6G(h,b.3E):(1O h=="4X"?6F(h):h)))},5k:n(8,h,1S){c 2v=!(h);h=b.3F(h,v z());8.1s=8.1f=h.U();8.H=8.1r=8.1q=h.16();8.K=8.1B=8.1n=h.Q();k(b.l(8,"1E")){k(1S){1S=b.3F(1S,r);8.1T=1S.U();8.22=1S.16();8.17=1S.Q()}N{8.1T=8.1f;8.22=8.1q;8.17=8.1n}}b.4g(8);k(8.p){8.p.3n(2v?"":b.2M(8)+(!b.l(8,"1E")?"":b.l(8,"3T")+b.2M(8,8.1T,8.22,8.17)))}},4w:n(8){c 5j=(!8.1n||(8.p&&8.p.3n()=="")?r:v z(8.1n,8.1q,8.1f));k(b.l(8,"1E")){q[8.1h||5j,(!8.17?r:v z(8.17,8.22,8.1T))]}N{q 5j}},6E:n(8){c 2k=v z();2k=v z(2k.Q(),2k.16(),2k.U());c 1j=b.l(8,"1j");c 1D=b.l(8,"1D");c 2v=(b.l(8,"5i")?"":\'<I V="t-f-2v"><a 2h="Z.f.5h(\\\'#\'+8.x+"\');\\""+(1j?b.2g(8,b.l(8,"6D")||"u;"):"")+">"+b.l(8,"6C")+"</a></I>");c 58=\'<I V="t-f-7H">\'+(1D?"":2v)+\'<I V="t-f-7G"><a 2h="Z.f.2B();"\'+(1j?b.2g(8,b.l(8,"6B")||"u;"):"")+">"+b.l(8,"6A")+"</a></I>"+(1D?2v:"")+"</I>";c 3l=b.l(8,"3l");c 3G=b.l(8,"3G");c 3Q=b.l(8,"3Q");c 3m=b.l(8,"3m");c 1b=b.3d(8);c 2m=b.l(8,"2m");c 6q=(1b[0]!=1||1b[1]!=1);c 4p=(!8.1f?v z(7F,9,9):v z(8.1n,8.1q,8.1f));c O=b.2e(8,"2f",1i);c S=b.2e(8,"2t");c H=8.H;c K=8.K;k(S){c 3R=v z(S.Q(),S.16()-1b[1]+1,S.U());3R=(O&&3R<O?O:3R);3S(v z(K,H,1)>3R){H--;k(H<0){H=11;K--}}}c 2A=b.l(8,"2A");2A=(!3m?2A:b.2d(2A,v z(K,H-2m,1),b.1Z(8)));c 4t=\'<I V="t-f-4t">\'+(b.4W(8,-1,K,H)?"<a 2h=\\"Z.f.1U(\'#"+8.x+"\', -"+2m+", \'M\');\\""+(1j?b.2g(8,b.l(8,"6z")||"u;"):"")+">"+2A+"</a>":(3Q?"":"<4v>"+2A+"</4v>"))+"</I>";c 2z=b.l(8,"2z");2z=(!3m?2z:b.2d(2z,v z(K,H+2m,1),b.1Z(8)));c 3P=\'<I V="t-f-3P">\'+(b.4W(8,+1,K,H)?"<a 2h=\\"Z.f.1U(\'#"+8.x+"\', +"+2m+", \'M\');\\""+(1j?b.2g(8,b.l(8,"6y")||"u;"):"")+">"+2z+"</a>":(3Q?"":"<4v>"+2z+"</4v>"))+"</I>";c 2U=b.l(8,"2U");2U=(!3m?2U:b.2d(2U,2k,b.1Z(8)));c R=(3l?\'<I V="\'+b.5g+\'">\'+3l+"</I>":"")+(3G&&!8.1v?58:"")+\'<I V="t-f-7E">\'+(1D?3P:4t)+(b.4V(8,(b.l(8,"5f")&&8.1f?4p:2k))?\'<I V="t-f-4u"><a 2h="Z.f.5e(\\\'#\'+8.x+"\');\\""+(1j?b.2g(8,b.l(8,"6x")||"u;"):"")+">"+2U+"</a></I>":"")+(1D?4t:3P)+"</I>";c 1x=b.l(8,"1x");c 3M=b.l(8,"3M");c 1o=b.l(8,"1o");c 1t=b.l(8,"1t");c 4r=b.l(8,"4r");c 1g=b.l(8,"1g");c 3K=b.l(8,"3K");c 3g=b.l(8,"3g");c 2w=b.l(8,"2w");c 3L=b.l(8,"3L");c 4q=b.l(8,"4q")||b.3O;c 21=(1j?b.l(8,"4s")||"u;":"");c 2S=b.l(8,"6w")||b.2S;c 1S=8.1T?v z(8.17,8.22,8.1T):4p;1m(c 2T=0;2T<1b[0];2T++){1m(c 3j=0;3j<1b[1];3j++){c 3f=v z(K,H,8.1s);R+=\'<I V="t-f-7D-C\'+(3j==0?" t-f-v-2T":"")+\'">\'+b.6i(8,H,K,O,S,3f,2T>0||3j>0,1j,1g)+\'<6l V="t-f" 7C="0" 7B="0"><6r><4m V="t-f-3J-2T">\'+(3L?"<1w>"+b.l(8,"6v")+"</1w>":"");1m(c 2l=0;2l<7;2l++){c G=(2l+1x)%7;c 4s=(21.6u("3N")>-1?21.6t(/3N/,1o[G]):21.6t(/D/,1t[G]));R+="<1w"+((2l+1x+6)%7>=5?\' V="t-f-2y-3i-2R"\':"")+">"+(!3M?"<3k":"<a 2h=\\"Z.f.6s(\'#"+8.x+"\', "+G+\');"\')+(1j?b.2g(8,4s):"")+\' 3J="\'+1o[G]+\'">\'+4r[G]+(3M?"</a>":"</3k>")+"</1w>"}R+="</4m></6r><6m>";c 5c=b.3E(K,H);k(K==8.1B&&H==8.1r){8.1s=1Q.2f(8.1s,5c)}c 5d=(b.64(K,H)-1x+7)%7;c 1k=v z(K,H,1-5d);c 6p=(6q?6:1Q.7A((5d+5c)/7));1m(c 5b=0;5b<6p;5b++){R+=\'<4m V="t-f-3h-2T">\'+(3L?\'<1w V="t-f-2y-3j">\'+4q(1k)+"</1w>":"");1m(c 2l=0;2l<7;2l++){c 3I=(3K?3K.2b((8.p?8.p[0]:r),[1k]):[1i,""]);c 2i=(1k.16()!=H);c 3H=2i||!3I[0]||(O&&1k<O)||(S&&1k>S);R+=\'<1w V="t-f-3h-2R\'+((2l+1x+6)%7>=5?" t-f-2y-3i-2R":"")+(2i?" t-f-2i":"")+(1k.1R()==3f.1R()&&H==8.1r?" t-f-3h-2R-2x":"")+(3H?" "+b.5a:"")+(2i&&!2w?"":" "+3I[1]+(1k.1R()>=4p.1R()&&1k.1R()<=1S.1R()?" "+b.4o:"")+(1k.1R()==2k.1R()?" t-f-2k":""))+\'"\'+((!2i||2w)&&3I[2]?\' 3J="\'+3I[2]+\'"\':"")+(3H?(3g?" 51=\\"Z(b).4n().2j(\'t-f-2y-2x\');\\" 4Z=\\"Z(b).4n().2Q(\'t-f-2y-2x\');\\"":""):" 51=\\"Z(b).2j(\'t-f-3h-2R-2x\')"+(3g?".4n().2j(\'t-f-2y-2x\')":"")+";"+(!1j||(2i&&!2w)?"":"Z(\'#t-f-21-"+8.x+"\').R(\'"+(2S.2b((8.p?8.p[0]:r),[1k,8])||"u;")+"\');")+"\\" 4Z=\\"Z(b).2Q(\'t-f-3h-2R-2x\')"+(3g?".4n().2Q(\'t-f-2y-2x\')":"")+";"+(!1j||(2i&&!2w)?"":"Z(\'#t-f-21-"+8.x+"\').R(\'u;\');")+\'" 2h="Z.f.59(\\\'#\'+8.x+"\',"+H+","+K+\', b);"\')+">"+(2i?(2w?1k.U():"u;"):(3H?1k.U():"<a>"+1k.U()+"</a>"))+"</1w>";1k.6o(1k.6n()+1)}R+="</4m>"}H++;k(H>11){H=0;K++}R+="</6m></6l></I>"}}R+=(1j?\'<I 4l="2v: 4k;"></I><I x="t-f-21-\'+8.x+\'" V="t-f-21">\'+(b.l(8,"6k")||"u;")+"</I>":"")+(!3G&&!8.1v?58:"")+\'<I 4l="2v: 4k;"></I>\'+($.2c.57&&2N($.2c.6j)<7&&!8.1v?\'<4j 56="7z:F;" V="t-f-55"></4j>\':"");q R},6i:n(8,H,K,O,S,3f,54,1j,1g){O=(8.1h&&O&&3f<O?3f:O);c R=\'<I V="t-f-7y">\';k(54||!b.l(8,"6h")){R+=1g[H]+"u;"}N{c 6f=(O&&O.Q()==K);c 6e=(S&&S.Q()==K);R+=\'<2P V="t-f-v-C" 6a="Z.f.53(\\\'#\'+8.x+"\', b, \'M\');\\" 2h=\\"Z.f.52(\'#"+8.x+"\');\\""+(1j?b.2g(8,b.l(8,"6g")||"u;"):"")+">";1m(c C=0;C<12;C++){k((!6f||C>=O.16())&&(!6e||C<=S.16())){R+=\'<4h E="\'+C+\'"\'+(C==H?\' 4i="4i"\':"")+">"+1g[C]+"</4h>"}}R+="</2P>"}k(54||!b.l(8,"6d")){R+=K}N{c 2u=b.l(8,"6c").6b(":");c A=0;c 17=0;k(2u.1a!=2){A=K-10;17=K+10}N{k(2u[0].18(0)=="+"||2u[0].18(0)=="-"){A=17=v z().Q();A+=2N(2u[0],10);17+=2N(2u[1],10)}N{A=2N(2u[0],10);17=2N(2u[1],10)}}A=(O?1Q.2t(A,O.Q()):A);17=(S?1Q.2f(17,S.Q()):17);R+=\'<2P V="t-f-v-A" 6a="Z.f.53(\\\'#\'+8.x+"\', b, \'Y\');\\" 2h=\\"Z.f.52(\'#"+8.x+"\');\\""+(1j?b.2g(8,b.l(8,"69")||"u;"):"")+">";1m(;A<=17;A++){R+=\'<4h E="\'+A+\'"\'+(A==K?\' 4i="4i"\':"")+">"+A+"</4h>"}R+="</2P>"}R+="</I>";q R},2g:n(8,50){q" 51=\\"Z(\'#t-f-21-"+8.x+"\').R(\'"+50+"\');\\" 4Z=\\"Z(\'#t-f-21-"+8.x+"\').R(\'u;\');\\""},4g:n(8,P,20){c A=8.K+(20=="Y"?P:0);c C=8.H+(20=="M"?P:0);c G=1Q.2f(8.1s,b.3E(A,C))+(20=="D"?P:0);c h=v z(A,C,G);c O=b.2e(8,"2f",1i);c S=b.2e(8,"2t");h=(O&&h<O?O:h);h=(S&&h>S?S:h);8.1s=h.U();8.H=8.1r=h.16();8.K=8.1B=h.Q();k(20=="M"||20=="Y"){b.4f(8)}},4f:n(8){c 4Y=b.l(8,"68");k(4Y){4Y.2b((8.p?8.p[0]:r),[v z(8.1B,8.1r,1),8])}},3d:n(8){c 1b=b.l(8,"67");q(1b==r?[1,1]:(1O 1b=="4X"?[1,1b]:1b))},2e:n(8,66,65){c h=b.3F(b.l(8,66+"z"),r);k(h){h.7x(0);h.7w(0);h.7v(0);h.7u(0)}q(!65||!8.1h?h:(!h||8.1h>h?8.1h:h))},3E:n(A,C){q 32-v z(A,C,32).U()},64:n(A,C){q v z(A,C,1).3e()},4W:n(8,P,63,62){c 1b=b.3d(8);c h=v z(63,62+(P<0?P:1b[1]),1);k(P<0){h.4e(b.3E(h.Q(),h.16()))}q b.4V(8,h)},4V:n(8,h){c 3c=(!8.1h?r:v z(8.1B,8.1r,8.1s));3c=(3c&&8.1h<3c?8.1h:3c);c O=3c||b.2e(8,"2f");c S=b.2e(8,"2t");q((!O||h>=O)&&(!S||h<=S))},1Z:n(8){c 1C=b.l(8,"1C");1C=(1O 1C!="3B"?1C:v z().Q()%2O+2N(1C,10));q{1C:1C,1t:b.l(8,"1t"),1o:b.l(8,"1o"),1P:b.l(8,"1P"),1g:b.l(8,"1g")}},2M:n(8,G,C,A){k(!G){8.1f=8.1s;8.1q=8.1r;8.1n=8.1B}c h=(G?(1O G=="4c"?G:v z(A,C,G)):v z(8.1n,8.1q,8.1f));q b.2d(b.l(8,"2L"),h,b.1Z(8))}});n 3D(o,3b){$.4d(o,3b);1m(c 1e 61 3b){k(3b[1e]==r||3b[1e]==4U){o[1e]=3b[1e]}}q o}n 5Z(a){q(a&&(($.2c.7t&&1O a=="4c"&&a.1a)||(a.5Y&&a.5Y.5X().1l(/\\5W\\(\\)/))))}$.7s.f=n(2a){c 4S=5W.5V.7r.7q(4T,1);k(1O 2a=="3B"&&(2a=="7p"||2a=="U")){q $.f["5U"+2a+"3A"].2b($.f,[b[0]].5T(4S))}q b.3C(n(){1O 2a=="3B"?$.f["5U"+2a+"3A"].2b($.f,[b].5T(4S)):$.f.5S(b,2a)})};$.f=v 3A();$(15).7o(n(){$(15.29).3a($.f.J).7n($.f.5R)})})(Z)',62,598,'||||||||inst|||this|var|||datepicker||date|||if|_get||function|target|input|return|null||ui|settings|new||id||Date|year|case|month||value|false|day|drawMonth|div|dpDiv|drawYear|break||else|minDate|offset|getFullYear|html|maxDate|iFormat|getDate|class||format||jQuery||||||document|getMonth|endYear|charAt|PROP_NAME|length|numMonths|duration|data|name|currentDay|monthNames|rangeStart|true|showStatus|printDate|match|for|currentYear|dayNames|isFixed|currentMonth|selectedMonth|selectedDay|dayNamesShort|xa0|inline|td|firstDay|matches|_defaults|checkDate|selectedYear|shortYearCutoff|isRTL|rangeSelect|literal|lookAhead|_pos|iValue|dateStr|showAnim|documentElement|width|ctrlKey|typeof|monthNamesShort|Math|getTime|endDate|endDay|_adjustDate|output|position|top|nodeName|_getFormatConfig|period|status|endMonth|size|_updateDatepicker|css|_dialogInput|||body|options|apply|browser|formatDate|_getMinMaxDate|min|_addStatus|onclick|otherMonth|addClass|today|dow|stepMonths|chars|_stayOpen|_triggerClass|left|pos|_disabledInputs|max|years|clear|showOtherMonths|over|week|nextText|prevText|_hideDatepicker|defaultDate|dates|focus|onSelect|_inDialog|markerClassName|height|key|buttonText|dateFormat|_formatDate|parseInt|100|select|removeClass|cell|dateStatus|row|currentText|yy|_datepickerShowing|postProcess|obj|scrollY|scrollX|showOn|||||||||append|props|newMinDate|_getNumberOfMonths|getDay|selectedDate|highlightWeek|days|end|col|span|prompt|navigationAsDateFormat|val|dd|firstMon|altFormat|_lastInput|event|scrollTop|scrollLeft|_showDatepicker|siblings|button|buttonImage|inlineSettings|Datepicker|string|each|extendRemove|_getDaysInMonth|_determineDate|closeAtTop|unselectable|daySettings|title|beforeShowDay|showWeeks|changeFirstDay|DD|iso8601Week|next|hideIfNoPrevNext|maxDraw|while|rangeSeparator|switch|default|throw|getNumber|names|altField||trigger|hasClass|blockUI|_curInst|remove|onClose|type|beforeShow|appendText|the|Show|object|extend|setDate|_notifyChange|_adjustInstDate|option|selected|iframe|both|style|tr|parent|_currentClass|currentDate|calculateWeek|dayNamesMin|dayStatus|prev|current|label|_getDate|shortNames|longNames|mm|checkLiteral|num|_selectDate|_selectingMonthYear|unbind|absolute|effects|browserHeight|browserWidth|window|px|handled|_doKeyDown|img|disabled|bind|attrValue|attrName|otherArgs|arguments|undefined|_isInRange|_canAdjustMonth|number|onChange|onmouseout|text|onmouseover|_clickMonthYear|_selectMonthYear|secondary|cover|src|msie|controls|_selectDay|_unselectableClass|dRow|daysInMonth|leadDays|_gotoToday|gotoCurrent|_promptClass|_clearDate|mandatory|startDate|_setDate|pattern|getDaysInMonth|_getDefaultDate|log|parseDate|_setDateFromField|formatName|formatNumber|getName|at|origSize|_mainDivId|_dialogClass|_tidyDialog|hide|showOptions|hidden|_findPos|opera|clientHeight|clientWidth|dims|show|display|toLowerCase|chr|keyCode|_doKeyPress|keydown|_appendClass|_newInst|regional|_checkExternalClick|_attachDatepicker|concat|_|prototype|Array|toString|constructor|isArray||in|curMonth|curYear|_getFirstDayOfMonth|checkRange|minMax|numberOfMonths|onChangeMonthYear|yearStatus|onchange|split|yearRange|changeYear|inMaxYear|inMinYear|monthStatus|changeMonth|_generateMonthYearHeader|version|initStatus|table|tbody|getUTCDate|setUTCDate|numRows|isMultiMonth|thead|_changeFirstDay|replace|indexOf|weekHeader|statusForDate|currentStatus|nextStatus|prevStatus|closeText|closeStatus|clearText|clearStatus|_generateDatepicker|offsetNumeric|offsetString|exec|catch|try|_possibleChars|getYear|Invalid|iInit|_updateAlternate|change|parents|100px|innerHeight|innerWidth|_checkOffset|Class|add|empty|none|fixed|_isDisabledDatepicker|charCode|map|cursor|opacity|keypress|dateText|_dialogInst|dp|getData|setData|_inlineDatepicker|after|before|alt|attr|buttonImageOnly|_connectDatepicker|debug|Select|different|May|Close|mousedown|ready|isDisabled|call|slice|fn|safari|setMilliseconds|setSeconds|setMinutes|setHours|header|javascript|ceil|cellspacing|cellpadding|one|links|9999|close|control|0123456789|W3C|TIMESTAMP|RSS|RFC_2822|RFC_1123|RFC_1036|RFC_850|RFC_822|ISO_8601|COOKIE|ATOM|Unexpected|Unknown|Missing|86400000|floor|getTimezoneOffset|noWeekends|selectedIndex|unblockUI|fadeOut|fadeIn|slideUp|slideDown|nextSibling|nodeType|rtl|multi|find|static|offsetWidth|1000px|block|offsetHeight|parentNode|fromCharCode|String|stopPropagation|preventDefault|_getDateDatepicker|_setDateDatepicker|_changeDatepicker|_disableDatepicker|_enableDatepicker|removeData|_destroyDatepicker|150|pageY|pageX|_dialogDatepicker|_inlineShow|click|err|eval|getAttribute|setDefaults|console|hasDatepicker|normal|first|as|Set|Sa|Fr|Th|We|Tu|Mo|Su|Sat|Fri|Thu|Wed|Tue|Mon|Sun|Saturday|Friday|Thursday|Wednesday|Tuesday|Monday|Sunday|of|Week|weekStatus|Wk|Dec|Nov|Oct|Sep|Aug|Jul|Jun|Apr|Mar|Feb|Jan|December|November|October|September|August|July|June|April|March|February|January|Today|x3e|Next|previous|Prev|x3c|without|Erase|Clear|dialog'.split('|'),0,{})) + diff --git a/wp-content/themes/vanilla/js/jquery/ui.droppable.js b/wp-content/themes/vanilla/js/jquery/ui.droppable.js new file mode 100755 index 000000000..8be10d8bb --- /dev/null +++ b/wp-content/themes/vanilla/js/jquery/ui.droppable.js @@ -0,0 +1,2 @@ +eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(8(A){A.1P("4.c",{1O:8(){3.5.Z("4-c");3.e=0;3.k=1;9 C=3.6,B=C.g;C=A.13(C,{g:C.g&&C.g.1N==1M?C.g:8(D){a A(D).1L(B)}});3.V={u:3.5[0].1a,t:3.5[0].19};A.4.d.s.1K(3)},1J:{},4:8(B){a{1e:(B.h||B.5),1f:B.1f,l:B.l,1I:B.n,6:3.6,5:3.5}},1H:8(){9 B=A.4.d.s;1c(9 C=0;C<B.10;C++){7(B[C]==3){B.1G(C,1)}}3.5.M("4-c 4-c-r").1F("c").1E(".c")},p:8(C){9 B=A.4.d.v;7(!B||(B.h||B.5)[0]==3.5[0]){a}7(3.6.g.b(3.5,(B.h||B.5))){A.4.m.b(3,"p",[C,3.4(B)]);3.5.R("1D",[C,3.4(B)],3.6.p)}},o:8(C){9 B=A.4.d.v;7(!B||(B.h||B.5)[0]==3.5[0]){a}7(3.6.g.b(3.5,(B.h||B.5))){A.4.m.b(3,"o",[C,3.4(B)]);3.5.R("1C",[C,3.4(B)],3.6.o)}},j:8(D,C){9 B=C||A.4.d.v;7(!B||(B.h||B.5)[0]==3.5[0]){a i}9 E=i;3.5.1B(".4-c").1A(".4-1e-1z").12(8(){9 F=A.16(3,"c");7(F.6.17&&A.4.q(B,A.13(F,{f:F.5.f()}),F.6.U)){E=1d;a i}});7(E){a i}7(3.6.g.b(3.5,(B.h||B.5))){A.4.m.b(3,"j",[D,3.4(B)]);3.5.R("j",[D,3.4(B)],3.6.j);a 1d}a i},O:8(C){9 B=A.4.d.v;A.4.m.b(3,"O",[C,3.4(B)]);7(B){3.5.R("1y",[C,3.4(B)],3.6.O)}},N:8(C){9 B=A.4.d.v;A.4.m.b(3,"N",[C,3.4(B)]);7(B){3.5.R("1x",[C,3.4(B)],3.6.N)}}});A.13(A.4.c,{1w:{r:i,U:"q"}});A.4.q=8(L,F,J){7(!F.f){a i}9 D=(L.n||L.l.x).y,C=D+L.z.u,I=(L.n||L.l.x).w,H=I+L.z.t;9 E=F.f.y,B=E+F.V.u,K=F.f.w,G=K+F.V.t;1v(J){W"1u":a(E<D&&C<B&&K<I&&H<G);Q;W"q":a(E<D+(L.z.u/2)&&C-(L.z.u/2)<B&&K<I+(L.z.t/2)&&H-(L.z.t/2)<G);Q;W"1t":a(E<((L.n||L.l.x).y+(L.Y||L.f.X).y)&&((L.n||L.l.x).y+(L.Y||L.f.X).y)<B&&K<((L.n||L.l.x).w+(L.Y||L.f.X).w)&&((L.n||L.l.x).w+(L.Y||L.f.X).w)<G);Q;W"1s":a((I>=K&&I<=G)||(H>=K&&H<=G)||(I<K&&H>G))&&((D>=E&&D<=B)||(C>=E&&C<=B)||(D<E&&C>B));Q;1r:a i;Q}};A.4.d={v:11,s:[],18:8(D,F){9 B=A.4.d.s;9 E=F?F.1q:11;1c(9 C=0;C<B.10;C++){7(B[C].6.r||(D&&!B[C].6.g.b(B[C].5,(D.h||D.5)))){1b}B[C].P=B[C].5.1p("1o")!="1n";7(!B[C].P){1b}B[C].f=B[C].5.f();B[C].V={u:B[C].5[0].1a,t:B[C].5[0].19};7(E=="1m"||E=="1l"){B[C].O.b(B[C],F)}}},j:8(B,C){9 D=i;A.12(A.4.d.s,8(){7(!3.6){a}7(!3.6.r&&3.P&&A.4.q(B,3,3.6.U)){D=3.j.b(3,C)}7(!3.6.r&&3.P&&3.6.g.b(3.5,(B.h||B.5))){3.k=1;3.e=0;3.N.b(3,C)}});a D},1k:8(B,C){7(B.6.1j){A.4.d.18(B,C)}A.12(A.4.d.s,8(){7(3.6.r||3.15||!3.P){a}9 E=A.4.q(B,3,3.6.U);9 G=!E&&3.e==1?"k":(E&&3.e==0?"e":11);7(!G){a}9 F;7(3.6.17){9 D=3.5.1i(".4-c:1h(0)");7(D.10){F=A.16(D[0],"c");F.15=(G=="e"?1:0)}}7(F&&G=="e"){F["e"]=0;F["k"]=1;F.o.b(F,C)}3[G]=1;3[G=="k"?"e":"k"]=0;3[G=="e"?"p":"o"].b(3,C);7(F&&G=="k"){F["k"]=0;F["e"]=1;F.p.b(F,C)}})}};A.4.m.14("c","T",{O:8(C,B){A(3).Z(B.6.T)},N:8(C,B){A(3).M(B.6.T)},j:8(C,B){A(3).M(B.6.T)}});A.4.m.14("c","S",{p:8(C,B){A(3).Z(B.6.S)},o:8(C,B){A(3).M(B.6.S)},j:8(C,B){A(3).M(B.6.S)}})})(1g)',62,114,'|||this|ui|element|options|if|function|var|return|call|droppable|ddmanager|isover|offset|accept|currentItem|false|drop|isout|position|plugin|positionAbs|out|over|intersect|disabled|droppables|height|width|current|top|absolute|left|helperProportions|||||||||||||removeClass|deactivate|activate|visible|break|triggerHandler|hoverClass|activeClass|tolerance|proportions|case|click|clickOffset|addClass|length|null|each|extend|add|greedyChild|data|greedy|prepareOffsets|offsetHeight|offsetWidth|continue|for|true|draggable|helper|jQuery|eq|parents|refreshPositions|drag|sortactivate|dragstart|none|display|css|type|default|touch|pointer|fit|switch|defaults|dropdeactivate|dropactivate|dragging|not|find|dropout|dropover|unbind|removeData|splice|destroy|absolutePosition|plugins|push|is|Function|constructor|init|widget'.split('|'),0,{})) + diff --git a/wp-content/themes/vanilla/js/jquery/ui.selectable.js b/wp-content/themes/vanilla/js/jquery/ui.selectable.js new file mode 100755 index 000000000..5ae888d71 --- /dev/null +++ b/wp-content/themes/vanilla/js/jquery/ui.selectable.js @@ -0,0 +1,2 @@ +eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(d(A){A.1M("4.5",A.V({},A.4.1L,{1K:d(){8 B=2;2.3.h("4-5");2.v=b;8 C;2.Q=d(){C=A(B.9.q,B.3[0]);C.o(d(){8 D=A(2);8 E=D.1J();A.n(2,"5-m",{3:2,$3:D,k:E.k,j:E.j,L:E.k+D.N(),y:E.j+D.M(),i:b,a:D.R("4-a"),c:D.R("4-c"),6:D.R("4-6")})})};2.Q();2.s=C.h("4-1I");2.1H();2.p=A(1G.1F("1E")).O({1D:"1C 1B 1A"})},1z:d(){7(2.9.t){2.1y()}r{2.1x()}},1w:d(){2.3.f("4-5 4-5-t").1v("5").1u(".5");2.1t()},1s:d(E){8 C=2;2.P=[E.Y,E.X];7(2.9.t){l}8 D=2.9;2.s=A(D.q,2.3[0]);2.3.g("1r",[E,{"5":2.3[0],"9":D}],D.1q);A("U").1p(2.p);2.p.O({"z-1o":1n,"1m":"1l","k":E.1k,"j":E.1j,"N":0,"M":0});7(D.T){2.Q()}2.s.q(".4-a").o(d(){8 F=A.n(2,"5-m");F.i=e;7(!E.x){F.$3.f("4-a");F.a=b;F.$3.h("4-6");F.6=e;C.3.g("w",[E,{5:C.3[0],6:F.3,9:D}],D.6)}});8 B=b;A(E.1i).1h().1g().o(d(){7(A.n(2,"5-m")){B=e}});l 2.9.1f?!B:e},1e:d(I){8 C=2;2.v=e;7(2.9.t){l}8 E=2.9;8 D=2.P[0],H=2.P[1],B=I.Y,G=I.X;7(D>B){8 F=B;B=D;D=F}7(H>G){8 F=G;G=H;H=F}2.p.O({k:D,j:H,N:B-D,M:G-H});2.s.o(d(){8 J=A.n(2,"5-m");7(!J||J.3==C.3[0]){l}8 K=b;7(E.u=="S"){K=(!(J.k>B||J.L<D||J.j>G||J.y<H))}r{7(E.u=="1d"){K=(J.k>D&&J.L<B&&J.j>H&&J.y<G)}}7(K){7(J.a){J.$3.f("4-a");J.a=b}7(J.6){J.$3.f("4-6");J.6=b}7(!J.c){J.$3.h("4-c");J.c=e;C.3.g("1c",[I,{5:C.3[0],c:J.3,9:E}],E.c)}}r{7(J.c){7(I.x&&J.i){J.$3.f("4-c");J.c=b;J.$3.h("4-a");J.a=e}r{J.$3.f("4-c");J.c=b;7(J.i){J.$3.h("4-6");J.6=e}C.3.g("w",[I,{5:C.3[0],6:J.3,9:E}],E.6)}}7(J.a){7(!I.x&&!J.i){J.$3.f("4-a");J.a=b;J.$3.h("4-6");J.6=e;C.3.g("w",[I,{5:C.3[0],6:J.3,9:E}],E.6)}}}});l b},1b:d(D){8 B=2;2.v=b;8 C=2.9;A(".4-6",2.3[0]).o(d(){8 E=A.n(2,"5-m");E.$3.f("4-6");E.6=b;E.i=b;B.3.g("1a",[D,{5:B.3[0],W:E.3,9:C}],C.W)});A(".4-c",2.3[0]).o(d(){8 E=A.n(2,"5-m");E.$3.f("4-c").h("4-a");E.c=b;E.a=e;E.i=e;B.3.g("19",[D,{5:B.3[0],a:E.3,9:C}],C.a)});2.3.g("18",[D,{5:B.3[0],9:2.9}],2.9.17);2.p.16();l b}}));A.V(A.4.5,{15:{14:1,13:0,12:":11",10:"U",T:e,q:"*",u:"S"}})})(Z)',62,111,'||this|element|ui|selectable|unselecting|if|var|options|selected|false|selecting|function|true|removeClass|triggerHandler|addClass|startselected|top|left|return|item|data|each|helper|filter|else|selectees|disabled|tolerance|dragged|selectableunselecting|ctrlKey|bottom|||||||||||||right|height|width|css|opos|refresh|hasClass|touch|autoRefresh|body|extend|unselected|pageY|pageX|jQuery|appendTo|input|cancel|delay|distance|defaults|remove|stop|selectablestop|selectableselected|selectableunselected|mouseStop|selectableselecting|fit|mouseDrag|keyboard|andSelf|parents|target|clientY|clientX|absolute|position|100|index|append|start|selectablestart|mouseStart|mouseDestroy|unbind|removeData|destroy|disable|enable|toggle|black|dotted|1px|border|div|createElement|document|mouseInit|selectee|offset|init|mouse|widget'.split('|'),0,{})) + diff --git a/wp-content/themes/vanilla/js/jquery/ui.slider.js b/wp-content/themes/vanilla/js/jquery/ui.slider.js new file mode 100755 index 000000000..432daa369 --- /dev/null +++ b/wp-content/themes/vanilla/js/jquery/ui.slider.js @@ -0,0 +1,2 @@ +eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(6(A){A.25.1C=A.25.1C||6(B){c 3.18(6(){A(3).2J(B).2I(0).2H(3).1s()})};A.24("j.m",{2G:{},j:6(B){c{8:3.8,9:3.7,n:3.8.l!="2F"||!3.8.l?p.t(3.n(i,3.8.l=="w"?"y":"x")):{x:p.t(3.n(i,"x")),y:p.t(3.n(i,"y"))},1h:3.1K()}},M:6(C,B){A.j.2E.1k(3,C,[B,3.j()]);3.d.2D(C=="1a"?C:"1a"+C,[B,3.j()],3.8[C])},2C:6(){3.d.1R("j-m j-m-1r").2B("m").2A(".m");4(3.9&&3.9.11){3.9.1C("a");3.9.18(6(){A(3).U("P").2z()})}3.1B&&3.1B.1s()},23:6(B,C){A.24.22.23.1Z(3,2y);4(/k|s|X/.Q(B)){3.1y()}4(B=="1h"){C?3.9.11==2&&3.1u():3.1L()}},2x:6(){h B=3;3.d.1i("j-m");3.1y();3.9=A(3.8.9,3.d);4(!3.9.11){B.9=B.1B=A(B.8.1g||[0]).2w(6(){h D=A("<1t/>").1i("j-m-9").1M(B.d);4(3.1A){D.2v("1A",3.1A)}c D[0]})}h C=6(D){3.d=A(D);3.d.U("P",3);3.8=B.8;3.d.19("20",6(){4(B.7){3.1j(B.7)}B.O(3,1)});3.2u()};A.1W(C.22,A.j.P,{2t:6(D){c B.12.1k(B,D,3.d[0])},2s:6(D){c B.Z.1k(B,D,3.d[0])},2r:6(D){c B.1p.1k(B,D,3.d[0])},2q:6(){c N},1Y:6(D){3.2p(D)}});A(3.9).18(6(){2o C(3)}).2n(\'<a 2m="2l:2k(0)" 2j="2i:21;2h:21;"></a>\').1S().19("O",6(D){B.O(3.1z)}).19("1j",6(D){B.1j(3.1z)}).19("1x",6(D){4(!B.8.2g){B.1x(D.2f,3.1z)}});3.d.19("20.m",6(D){B.1P.1Z(B,[D]);B.7.U("P").1Y(D);B.1f=B.1f+1});A.18(3.8.1g||[],6(D,E){B.16(E.12,D,N)});4(!V(3.8.1X)){3.16(3.8.1X,0,N)}3.R=A(3.9[0]);4(3.9.11==2&&3.8.1h){3.1u()}},1y:6(){h B=3.d[0],C=3.8;3.S={J:3.d.1n(),z:3.d.1m()};A.1W(C,{l:C.l||(B.1N<B.1O?"w":"1l"),s:!V(b(C.s,10))?{x:b(C.s,10),y:b(C.s,10)}:({x:C.s&&C.s.x||1V,y:C.s&&C.s.y||1V}),k:!V(b(C.k,10))?{x:b(C.k,10),y:b(C.k,10)}:({x:C.k&&C.k.x||0,y:C.k&&C.k.y||0})});C.T={x:C.s.x-C.k.x,y:C.s.y-C.k.y};C.f={x:C.f&&C.f.x||b(C.f,10)||(C.X?C.T.x/(C.X.x||b(C.X,10)||C.T.x):0),y:C.f&&C.f.y||b(C.f,10)||(C.X?C.T.y/(C.X.y||b(C.X,10)||C.T.y):0)}},1x:6(C,B){4(/(1w|1v|1U|1T)/.Q(C)){3.16({x:/(1w|1U)/.Q(C)?(C==1w?"-":"+")+"="+3.17("x"):0,y:/(1v|1T)/.Q(C)?(C==1v?"-":"+")+"="+3.17("y"):0},B)}},O:6(B,C){3.7=A(B).1i("j-m-9-1Q");4(C){3.7.1S()[0].O()}},1j:6(B){A(B).1R("j-m-9-1Q");4(3.7&&3.7[0]==B){3.R=3.7;3.7=i}},1P:6(C){h D=[C.1d,C.1e];h B=Y;3.9.18(6(){4(3==C.2e){B=N}});4(B||3.8.1r||!(3.7||3.R)){c}4(!3.7&&3.R){3.O(3.R,N)}3.K=3.d.K();3.16({y:3.v(C.1e-3.K.e-3.7[0].1O/2,"y"),x:3.v(C.1d-3.K.g-3.7[0].1N/2,"x")},i,!3.8.1D)},1u:6(){4(3.u){c}3.u=A("<1t></1t>").1i("j-m-1h").o({2d:"2c"}).1M(3.d);3.1c()},1L:6(){3.u.1s();3.u=i},1c:6(){h C=3.8.l=="w"?"e":"g";h B=3.8.l=="w"?"z":"J";3.u.o(C,(b(A(3.9[0]).o(C),10)||0)+3.W(0,3.8.l=="w"?"y":"x")/2);3.u.o(B,(b(A(3.9[1]).o(C),10)||0)-(b(A(3.9[0]).o(C),10)||0))},1K:6(){c 3.u?3.v(b(3.u.o(3.8.l=="w"?"z":"J"),10),3.8.l=="w"?"y":"x"):i},1J:6(){c 3.9.2b(3.7[0])},n:6(D,B){4(3.9.11==1){3.7=3.9}4(!B){B=3.8.l=="w"?"y":"x"}h C=A(D!=r&&D!==i?3.9[D]||D:3.7);4(C.U("P").1b){c b(C.U("P").1b[B],10)}15{c b(((b(C.o(B=="x"?"g":"e"),10)/(3.S[B=="x"?"J":"z"]-3.W(D,B)))*3.8.T[B])+3.8.k[B],10)}},v:6(C,B){c 3.8.k[B]+(C/(3.S[B=="x"?"J":"z"]-3.W(i,B)))*3.8.T[B]},q:6(C,B){c((C-3.8.k[B])/3.8.T[B])*(3.S[B=="x"?"J":"z"]-3.W(i,B))},13:6(D,B){4(3.u){4(3.7[0]==3.9[0]&&D>=3.q(3.n(1),B)){D=3.q(3.n(1,B)-3.17(B),B)}4(3.7[0]==3.9[1]&&D<=3.q(3.n(0),B)){D=3.q(3.n(0,B)+3.17(B),B)}}4(3.8.1g){h C=3.8.1g[3.1J()];4(D<3.q(C.k,B)){D=3.q(C.k,B)}15{4(D>3.q(C.s,B)){D=3.q(C.s,B)}}}c D},14:6(C,B){4(C>=3.S[B=="x"?"J":"z"]-3.W(i,B)){C=3.S[B=="x"?"J":"z"]-3.W(i,B)}4(C<=0){C=0}c C},W:6(C,B){c A(C!=r&&C!==i?3.9[C]:3.7)[0]["K"+(B=="x"?"2a":"29")]},17:6(B){c 3.8.f[B]||1},12:6(C,B){h D=3.8;4(D.1r){c Y}3.S={J:3.d.1n(),z:3.d.1m()};4(!3.7){3.O(3.R,N)}3.K=3.d.K();3.1q=3.7.K();3.1o={e:C.1e-3.1q.e,g:C.1d-3.1q.g};3.1f=3.n();3.M("12",C);3.1p(C,B);c N},Z:6(B){3.M("Z",B);4(3.1f!=3.n()){3.M("1E",B)}3.O(3.7,N);c Y},1p:6(E,D){h F=3.8;h B={e:E.1e-3.K.e-3.1o.e,g:E.1d-3.K.g-3.1o.g};4(!3.7){3.O(3.R,N)}B.g=3.14(B.g,"x");B.e=3.14(B.e,"y");4(F.f.x){h C=3.v(B.g,"x");C=p.t(C/F.f.x)*F.f.x;B.g=3.q(C,"x")}4(F.f.y){h C=3.v(B.e,"y");C=p.t(C/F.f.y)*F.f.y;B.e=3.q(C,"y")}B.g=3.13(B.g,"x");B.e=3.13(B.e,"y");4(F.l!="w"){3.7.o({g:B.g})}4(F.l!="1l"){3.7.o({e:B.e})}3.7.U("P").1b={x:p.t(3.v(B.g,"x"))||0,y:p.t(3.v(B.e,"y"))||0};4(3.u){3.1c()}3.M("1a",E);c Y},16:6(F,E,G){h H=3.8;3.S={J:3.d.1n(),z:3.d.1m()};4(E==r&&!3.7&&3.9.11!=1){c Y}4(E==r&&!3.7){E=0}4(E!=r){3.7=3.R=A(3.9[E]||E)}4(F.x!==r&&F.y!==r){h B=F.x,I=F.y}15{h B=F,I=F}4(B!==r&&B.1I!=1H){h D=/^\\-\\=/.Q(B),C=/^\\+\\=/.Q(B);4(D||C){B=3.n(i,"x")+b(B.1G(D?"=":"+=",""),10)}15{B=V(b(B,10))?r:b(B,10)}}4(I!==r&&I.1I!=1H){h D=/^\\-\\=/.Q(I),C=/^\\+\\=/.Q(I);4(D||C){I=3.n(i,"y")+b(I.1G(D?"=":"+=",""),10)}15{I=V(b(I,10))?r:b(I,10)}}4(H.l!="w"&&B!==r){4(H.f.x){B=p.t(B/H.f.x)*H.f.x}B=3.q(B,"x");B=3.14(B,"x");B=3.13(B,"x");H.L?3.7.Z().L({g:B},(p.1F(b(3.7.o("g"))-B))*(!V(b(H.L))?H.L:5)):3.7.o({g:B})}4(H.l!="1l"&&I!==r){4(H.f.y){I=p.t(I/H.f.y)*H.f.y}I=3.q(I,"y");I=3.14(I,"y");I=3.13(I,"y");H.L?3.7.Z().L({e:I},(p.1F(b(3.7.o("e"))-I))*(!V(b(H.L))?H.L:5)):3.7.o({e:I})}4(3.u){3.1c()}3.7.U("P").1b={x:p.t(3.v(B,"x"))||0,y:p.t(3.v(I,"y"))||0};4(!G){3.M("12",i);3.M("Z",i);3.M("1E",i);3.M("1a",i)}}});A.j.m.28="n";A.j.m.27={9:".j-m-9",1D:1,L:Y}})(26)',62,170,'|||this|if||function|currentHandle|options|handle||parseInt|return|element|top|stepping|left|var|null|ui|min|axis|slider|value|css|Math|translateValue|undefined|max|round|rangeElement|convertValue|vertical|||height||||||||||width|offset|animate|propagate|true|focus|mouse|test|previousHandle|actualSize|realMax|data|isNaN|handleSize|steps|false|stop||length|start|translateRange|translateLimits|else|moveTo|oneStep|each|bind|slide|sliderValue|updateRange|pageX|pageY|firstValue|handles|range|addClass|blur|call|horizontal|outerHeight|outerWidth|clickOffset|drag|handleOffset|disabled|remove|div|createRange|38|37|keydown|initBoundaries|firstChild|id|generated|unwrap|distance|change|abs|replace|Number|constructor|handleIndex|getRange|removeRange|appendTo|offsetWidth|offsetHeight|click|active|removeClass|parent|40|39|100|extend|startValue|trigger|apply|mousedown|none|prototype|setData|widget|fn|jQuery|defaults|getter|Height|Width|index|absolute|position|target|keyCode|noKeyboard|border|outline|style|void|javascript|href|wrap|new|mouseDown|mouseCapture|mouseDrag|mouseStop|mouseStart|mouseInit|attr|map|init|arguments|mouseDestroy|unbind|removeData|destroy|triggerHandler|plugin|both|plugins|after|eq|parents'.split('|'),0,{})) + diff --git a/wp-content/themes/vanilla/js/mootools/mootools.htc b/wp-content/themes/vanilla/js/mootools/mootools.htc new file mode 100755 index 000000000..6147a58f1 --- /dev/null +++ b/wp-content/themes/vanilla/js/mootools/mootools.htc @@ -0,0 +1,341 @@ +//MooTools, <http://mootools.net>, My Object Oriented (JavaScript) Tools. Copyright (c) 2006-2008 Valerio Proietti, <http://mad4milk.net>, MIT Style License. + +var MooTools={version:"1.2.0",build:""};var Native=function(J){J=J||{};var F=J.afterImplement||function(){};var G=J.generics;G=(G!==false);var H=J.legacy; +var E=J.initialize;var B=J.protect;var A=J.name;var C=E||H;C.constructor=Native;C.$family={name:"native"};if(H&&E){C.prototype=H.prototype;}C.prototype.constructor=C; +if(A){var D=A.toLowerCase();C.prototype.$family={name:D};Native.typize(C,D);}var I=function(M,K,N,L){if(!B||L||!M.prototype[K]){M.prototype[K]=N;}if(G){Native.genericize(M,K,B); +}F.call(M,K,N);return M;};C.implement=function(L,K,N){if(typeof L=="string"){return I(this,L,K,N);}for(var M in L){I(this,M,L[M],K);}return this;};C.alias=function(M,K,N){if(typeof M=="string"){M=this.prototype[M]; +if(M){I(this,K,M,N);}}else{for(var L in M){this.alias(L,M[L],K);}}return this;};return C;};Native.implement=function(D,C){for(var B=0,A=D.length;B<A;B++){D[B].implement(C); +}};Native.genericize=function(B,C,A){if((!A||!B[C])&&typeof B.prototype[C]=="function"){B[C]=function(){var D=Array.prototype.slice.call(arguments);return B.prototype[C].apply(D.shift(),D); +};}};Native.typize=function(A,B){if(!A.type){A.type=function(C){return($type(C)===B);};}};Native.alias=function(E,B,A,F){for(var D=0,C=E.length;D<C;D++){E[D].alias(B,A,F); +}};(function(B){for(var A in B){Native.typize(B[A],A);}})({"boolean":Boolean,"native":Native,object:Object});(function(B){for(var A in B){new Native({name:A,initialize:B[A],protect:true}); +}})({String:String,Function:Function,Number:Number,Array:Array,RegExp:RegExp,Date:Date});(function(B,A){for(var C=A.length;C--;C){Native.genericize(B,A[C],true); +}return arguments.callee;})(Array,["pop","push","reverse","shift","sort","splice","unshift","concat","join","slice","toString","valueOf","indexOf","lastIndexOf"])(String,["charAt","charCodeAt","concat","indexOf","lastIndexOf","match","replace","search","slice","split","substr","substring","toLowerCase","toUpperCase","valueOf"]); +function $chk(A){return !!(A||A===0);}function $clear(A){clearTimeout(A);clearInterval(A);return null;}function $defined(A){return(A!=undefined);}function $empty(){}function $arguments(A){return function(){return arguments[A]; +};}function $lambda(A){return(typeof A=="function")?A:function(){return A;};}function $extend(C,A){for(var B in (A||{})){C[B]=A[B];}return C;}function $unlink(C){var B; +switch($type(C)){case"object":B={};for(var E in C){B[E]=$unlink(C[E]);}break;case"hash":B=$unlink(C.getClean());break;case"array":B=[];for(var D=0,A=C.length; +D<A;D++){B[D]=$unlink(C[D]);}break;default:return C;}return B;}function $merge(){var E={};for(var D=0,A=arguments.length;D<A;D++){var B=arguments[D];if($type(B)!="object"){continue; +}for(var C in B){var G=B[C],F=E[C];E[C]=(F&&$type(G)=="object"&&$type(F)=="object")?$merge(F,G):$unlink(G);}}return E;}function $pick(){for(var B=0,A=arguments.length; +B<A;B++){if(arguments[B]!=undefined){return arguments[B];}}return null;}function $random(B,A){return Math.floor(Math.random()*(A-B+1)+B);}function $splat(B){var A=$type(B); +return(A)?((A!="array"&&A!="arguments")?[B]:B):[];}var $time=Date.now||function(){return new Date().getTime();};function $try(){for(var B=0,A=arguments.length; +B<A;B++){try{return arguments[B]();}catch(C){}}return null;}function $type(A){if(A==undefined){return false;}if(A.$family){return(A.$family.name=="number"&&!isFinite(A))?false:A.$family.name; +}if(A.nodeName){switch(A.nodeType){case 1:return"element";case 3:return(/\S/).test(A.nodeValue)?"textnode":"whitespace";}}else{if(typeof A.length=="number"){if(A.callee){return"arguments"; +}else{if(A.item){return"collection";}}}}return typeof A;}var Hash=new Native({name:"Hash",initialize:function(A){if($type(A)=="hash"){A=$unlink(A.getClean()); +}for(var B in A){this[B]=A[B];}return this;}});Hash.implement({getLength:function(){var B=0;for(var A in this){if(this.hasOwnProperty(A)){B++;}}return B; +},forEach:function(B,C){for(var A in this){if(this.hasOwnProperty(A)){B.call(C,this[A],A,this);}}},getClean:function(){var B={};for(var A in this){if(this.hasOwnProperty(A)){B[A]=this[A]; +}}return B;}});Hash.alias("forEach","each");function $H(A){return new Hash(A);}Array.implement({forEach:function(C,D){for(var B=0,A=this.length;B<A;B++){C.call(D,this[B],B,this); +}}});Array.alias("forEach","each");function $A(C){if(C.item){var D=[];for(var B=0,A=C.length;B<A;B++){D[B]=C[B];}return D;}return Array.prototype.slice.call(C); +}function $each(C,B,D){var A=$type(C);((A=="arguments"||A=="collection"||A=="array")?Array:Hash).each(C,B,D);}var Browser=new Hash({Engine:{name:"unknown",version:""},Platform:{name:(navigator.platform.match(/mac|win|linux/i)||["other"])[0].toLowerCase()},Features:{xpath:!!(document.evaluate),air:!!(window.runtime)},Plugins:{}}); +if(window.opera){Browser.Engine={name:"presto",version:(document.getElementsByClassName)?950:925};}else{if(window.ActiveXObject){Browser.Engine={name:"trident",version:(window.XMLHttpRequest)?5:4}; +}else{if(!navigator.taintEnabled){Browser.Engine={name:"webkit",version:(Browser.Features.xpath)?420:419};}else{if(document.getBoxObjectFor!=null){Browser.Engine={name:"gecko",version:(document.getElementsByClassName)?19:18}; +}}}}Browser.Engine[Browser.Engine.name]=Browser.Engine[Browser.Engine.name+Browser.Engine.version]=true;if(window.orientation!=undefined){Browser.Platform.name="ipod"; +}Browser.Platform[Browser.Platform.name]=true;Browser.Request=function(){return $try(function(){return new XMLHttpRequest();},function(){return new ActiveXObject("MSXML2.XMLHTTP"); +});};Browser.Features.xhr=!!(Browser.Request());Browser.Plugins.Flash=(function(){var A=($try(function(){return navigator.plugins["Shockwave Flash"].description; +},function(){return new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version");})||"0 r0").match(/\d+/g);return{version:parseInt(A[0]||0+"."+A[1]||0),build:parseInt(A[2]||0)}; +})();function $exec(B){if(!B){return B;}if(window.execScript){window.execScript(B);}else{var A=document.createElement("script");A.setAttribute("type","text/javascript"); +A.text=B;document.head.appendChild(A);document.head.removeChild(A);}return B;}Native.UID=1;var $uid=(Browser.Engine.trident)?function(A){return(A.uid||(A.uid=[Native.UID++]))[0]; +}:function(A){return A.uid||(A.uid=Native.UID++);};var Window=new Native({name:"Window",legacy:(Browser.Engine.trident)?null:window.Window,initialize:function(A){$uid(A); +if(!A.Element){A.Element=$empty;if(Browser.Engine.webkit){A.document.createElement("iframe");}A.Element.prototype=(Browser.Engine.webkit)?window["[[DOMElement.prototype]]"]:{}; +}return $extend(A,Window.Prototype);},afterImplement:function(B,A){window[B]=Window.Prototype[B]=A;}});Window.Prototype={$family:{name:"window"}};new Window(window); +var Document=new Native({name:"Document",legacy:(Browser.Engine.trident)?null:window.Document,initialize:function(A){$uid(A);A.head=A.getElementsByTagName("head")[0]; +A.html=A.getElementsByTagName("html")[0];A.window=A.defaultView||A.parentWindow;if(Browser.Engine.trident4){$try(function(){A.execCommand("BackgroundImageCache",false,true); +});}return $extend(A,Document.Prototype);},afterImplement:function(B,A){document[B]=Document.Prototype[B]=A;}});Document.Prototype={$family:{name:"document"}}; +new Document(document);Array.implement({every:function(C,D){for(var B=0,A=this.length;B<A;B++){if(!C.call(D,this[B],B,this)){return false;}}return true; +},filter:function(D,E){var C=[];for(var B=0,A=this.length;B<A;B++){if(D.call(E,this[B],B,this)){C.push(this[B]);}}return C;},clean:function(){return this.filter($defined); +},indexOf:function(C,D){var A=this.length;for(var B=(D<0)?Math.max(0,A+D):D||0;B<A;B++){if(this[B]===C){return B;}}return -1;},map:function(D,E){var C=[]; +for(var B=0,A=this.length;B<A;B++){C[B]=D.call(E,this[B],B,this);}return C;},some:function(C,D){for(var B=0,A=this.length;B<A;B++){if(C.call(D,this[B],B,this)){return true; +}}return false;},associate:function(C){var D={},B=Math.min(this.length,C.length);for(var A=0;A<B;A++){D[C[A]]=this[A];}return D;},link:function(C){var A={}; +for(var E=0,B=this.length;E<B;E++){for(var D in C){if(C[D](this[E])){A[D]=this[E];delete C[D];break;}}}return A;},contains:function(A,B){return this.indexOf(A,B)!=-1; +},extend:function(C){for(var B=0,A=C.length;B<A;B++){this.push(C[B]);}return this;},getLast:function(){return(this.length)?this[this.length-1]:null;},getRandom:function(){return(this.length)?this[$random(0,this.length-1)]:null; +},include:function(A){if(!this.contains(A)){this.push(A);}return this;},combine:function(C){for(var B=0,A=C.length;B<A;B++){this.include(C[B]);}return this; +},erase:function(B){for(var A=this.length;A--;A){if(this[A]===B){this.splice(A,1);}}return this;},empty:function(){this.length=0;return this;},flatten:function(){var D=[]; +for(var B=0,A=this.length;B<A;B++){var C=$type(this[B]);if(!C){continue;}D=D.concat((C=="array"||C=="collection"||C=="arguments")?Array.flatten(this[B]):this[B]); +}return D;},hexToRgb:function(B){if(this.length!=3){return null;}var A=this.map(function(C){if(C.length==1){C+=C;}return C.toInt(16);});return(B)?A:"rgb("+A+")"; +},rgbToHex:function(D){if(this.length<3){return null;}if(this.length==4&&this[3]==0&&!D){return"transparent";}var B=[];for(var A=0;A<3;A++){var C=(this[A]-0).toString(16); +B.push((C.length==1)?"0"+C:C);}return(D)?B:"#"+B.join("");}});Function.implement({extend:function(A){for(var B in A){this[B]=A[B];}return this;},create:function(B){var A=this; +B=B||{};return function(D){var C=B.arguments;C=(C!=undefined)?$splat(C):Array.slice(arguments,(B.event)?1:0);if(B.event){C=[D||window.event].extend(C); +}var E=function(){return A.apply(B.bind||null,C);};if(B.delay){return setTimeout(E,B.delay);}if(B.periodical){return setInterval(E,B.periodical);}if(B.attempt){return $try(E); +}return E();};},pass:function(A,B){return this.create({arguments:A,bind:B});},attempt:function(A,B){return this.create({arguments:A,bind:B,attempt:true})(); +},bind:function(B,A){return this.create({bind:B,arguments:A});},bindWithEvent:function(B,A){return this.create({bind:B,event:true,arguments:A});},delay:function(B,C,A){return this.create({delay:B,bind:C,arguments:A})(); +},periodical:function(A,C,B){return this.create({periodical:A,bind:C,arguments:B})();},run:function(A,B){return this.apply(B,$splat(A));}});Number.implement({limit:function(B,A){return Math.min(A,Math.max(B,this)); +},round:function(A){A=Math.pow(10,A||0);return Math.round(this*A)/A;},times:function(B,C){for(var A=0;A<this;A++){B.call(C,A,this);}},toFloat:function(){return parseFloat(this); +},toInt:function(A){return parseInt(this,A||10);}});Number.alias("times","each");(function(B){var A={};B.each(function(C){if(!Number[C]){A[C]=function(){return Math[C].apply(null,[this].concat($A(arguments))); +};}});Number.implement(A);})(["abs","acos","asin","atan","atan2","ceil","cos","exp","floor","log","max","min","pow","sin","sqrt","tan"]);String.implement({test:function(A,B){return((typeof A=="string")?new RegExp(A,B):A).test(this); +},contains:function(A,B){return(B)?(B+this+B).indexOf(B+A+B)>-1:this.indexOf(A)>-1;},trim:function(){return this.replace(/^\s+|\s+$/g,"");},clean:function(){return this.replace(/\s+/g," ").trim(); +},camelCase:function(){return this.replace(/-\D/g,function(A){return A.charAt(1).toUpperCase();});},hyphenate:function(){return this.replace(/[A-Z]/g,function(A){return("-"+A.charAt(0).toLowerCase()); +});},capitalize:function(){return this.replace(/\b[a-z]/g,function(A){return A.toUpperCase();});},escapeRegExp:function(){return this.replace(/([-.*+?^${}()|[\]\/\\])/g,"\\$1"); +},toInt:function(A){return parseInt(this,A||10);},toFloat:function(){return parseFloat(this);},hexToRgb:function(B){var A=this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/); +return(A)?A.slice(1).hexToRgb(B):null;},rgbToHex:function(B){var A=this.match(/\d{1,3}/g);return(A)?A.rgbToHex(B):null;},stripScripts:function(B){var A=""; +var C=this.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi,function(){A+=arguments[1]+"\n";return"";});if(B===true){$exec(A);}else{if($type(B)=="function"){B(A,C); +}}return C;},substitute:function(A,B){return this.replace(B||(/\\?\{([^}]+)\}/g),function(D,C){if(D.charAt(0)=="\\"){return D.slice(1);}return(A[C]!=undefined)?A[C]:""; +});}});Hash.implement({has:Object.prototype.hasOwnProperty,keyOf:function(B){for(var A in this){if(this.hasOwnProperty(A)&&this[A]===B){return A;}}return null; +},hasValue:function(A){return(Hash.keyOf(this,A)!==null);},extend:function(A){Hash.each(A,function(C,B){Hash.set(this,B,C);},this);return this;},combine:function(A){Hash.each(A,function(C,B){Hash.include(this,B,C); +},this);return this;},erase:function(A){if(this.hasOwnProperty(A)){delete this[A];}return this;},get:function(A){return(this.hasOwnProperty(A))?this[A]:null; +},set:function(A,B){if(!this[A]||this.hasOwnProperty(A)){this[A]=B;}return this;},empty:function(){Hash.each(this,function(B,A){delete this[A];},this); +return this;},include:function(B,C){var A=this[B];if(A==undefined){this[B]=C;}return this;},map:function(B,C){var A=new Hash;Hash.each(this,function(E,D){A.set(D,B.call(C,E,D,this)); +},this);return A;},filter:function(B,C){var A=new Hash;Hash.each(this,function(E,D){if(B.call(C,E,D,this)){A.set(D,E);}},this);return A;},every:function(B,C){for(var A in this){if(this.hasOwnProperty(A)&&!B.call(C,this[A],A)){return false; +}}return true;},some:function(B,C){for(var A in this){if(this.hasOwnProperty(A)&&B.call(C,this[A],A)){return true;}}return false;},getKeys:function(){var A=[]; +Hash.each(this,function(C,B){A.push(B);});return A;},getValues:function(){var A=[];Hash.each(this,function(B){A.push(B);});return A;},toQueryString:function(A){var B=[]; +Hash.each(this,function(F,E){if(A){E=A+"["+E+"]";}var D;switch($type(F)){case"object":D=Hash.toQueryString(F,E);break;case"array":var C={};F.each(function(H,G){C[G]=H; +});D=Hash.toQueryString(C,E);break;default:D=E+"="+encodeURIComponent(F);}if(F!=undefined){B.push(D);}});return B.join("&");}});Hash.alias({keyOf:"indexOf",hasValue:"contains"}); +var Event=new Native({name:"Event",initialize:function(A,F){F=F||window;var K=F.document;A=A||F.event;if(A.$extended){return A;}this.$extended=true;var J=A.type; +var G=A.target||A.srcElement;while(G&&G.nodeType==3){G=G.parentNode;}if(J.test(/key/)){var B=A.which||A.keyCode;var M=Event.Keys.keyOf(B);if(J=="keydown"){var D=B-111; +if(D>0&&D<13){M="f"+D;}}M=M||String.fromCharCode(B).toLowerCase();}else{if(J.match(/(click|mouse|menu)/i)){K=(!K.compatMode||K.compatMode=="CSS1Compat")?K.html:K.body; +var I={x:A.pageX||A.clientX+K.scrollLeft,y:A.pageY||A.clientY+K.scrollTop};var C={x:(A.pageX)?A.pageX-F.pageXOffset:A.clientX,y:(A.pageY)?A.pageY-F.pageYOffset:A.clientY}; +if(J.match(/DOMMouseScroll|mousewheel/)){var H=(A.wheelDelta)?A.wheelDelta/120:-(A.detail||0)/3;}var E=(A.which==3)||(A.button==2);var L=null;if(J.match(/over|out/)){switch(J){case"mouseover":L=A.relatedTarget||A.fromElement; +break;case"mouseout":L=A.relatedTarget||A.toElement;}if(!(function(){while(L&&L.nodeType==3){L=L.parentNode;}return true;}).create({attempt:Browser.Engine.gecko})()){L=false; +}}}}return $extend(this,{event:A,type:J,page:I,client:C,rightClick:E,wheel:H,relatedTarget:L,target:G,code:B,key:M,shift:A.shiftKey,control:A.ctrlKey,alt:A.altKey,meta:A.metaKey}); +}});Event.Keys=new Hash({enter:13,up:38,down:40,left:37,right:39,esc:27,space:32,backspace:8,tab:9,"delete":46});Event.implement({stop:function(){return this.stopPropagation().preventDefault(); +},stopPropagation:function(){if(this.event.stopPropagation){this.event.stopPropagation();}else{this.event.cancelBubble=true;}return this;},preventDefault:function(){if(this.event.preventDefault){this.event.preventDefault(); +}else{this.event.returnValue=false;}return this;}});var Class=new Native({name:"Class",initialize:function(B){B=B||{};var A=function(E){for(var D in this){this[D]=$unlink(this[D]); +}for(var F in Class.Mutators){if(!this[F]){continue;}Class.Mutators[F](this,this[F]);delete this[F];}this.constructor=A;if(E===$empty){return this;}var C=(this.initialize)?this.initialize.apply(this,arguments):this; +if(this.options&&this.options.initialize){this.options.initialize.call(this);}return C;};$extend(A,this);A.constructor=Class;A.prototype=B;return A;}}); +Class.implement({implement:function(){Class.Mutators.Implements(this.prototype,Array.slice(arguments));return this;}});Class.Mutators={Implements:function(A,B){$splat(B).each(function(C){$extend(A,($type(C)=="class")?new C($empty):C); +});},Extends:function(self,klass){var instance=new klass($empty);delete instance.parent;delete instance.parentOf;for(var key in instance){var current=self[key],previous=instance[key]; +if(current==undefined){self[key]=previous;continue;}var ctype=$type(current),ptype=$type(previous);if(ctype!=ptype){continue;}switch(ctype){case"function":if(!arguments.callee.caller){self[key]=eval("("+String(current).replace(/\bthis\.parent\(\s*(\))?/g,function(full,close){return"arguments.callee._parent_.call(this"+(close||", "); +})+")");}self[key]._parent_=previous;break;case"object":self[key]=$merge(previous,current);}}self.parent=function(){return arguments.callee.caller._parent_.apply(this,arguments); +};self.parentOf=function(descendant){return descendant._parent_.apply(this,Array.slice(arguments,1));};}};var Chain=new Class({chain:function(){this.$chain=(this.$chain||[]).extend(arguments); +return this;},callChain:function(){return(this.$chain&&this.$chain.length)?this.$chain.shift().apply(this,arguments):false;},clearChain:function(){if(this.$chain){this.$chain.empty(); +}return this;}});var Events=new Class({addEvent:function(C,B,A){C=Events.removeOn(C);if(B!=$empty){this.$events=this.$events||{};this.$events[C]=this.$events[C]||[]; +this.$events[C].include(B);if(A){B.internal=true;}}return this;},addEvents:function(A){for(var B in A){this.addEvent(B,A[B]);}return this;},fireEvent:function(C,B,A){C=Events.removeOn(C); +if(!this.$events||!this.$events[C]){return this;}this.$events[C].each(function(D){D.create({bind:this,delay:A,"arguments":B})();},this);return this;},removeEvent:function(B,A){B=Events.removeOn(B); +if(!this.$events||!this.$events[B]){return this;}if(!A.internal){this.$events[B].erase(A);}return this;},removeEvents:function(C){for(var D in this.$events){if(C&&C!=D){continue; +}var B=this.$events[D];for(var A=B.length;A--;A){this.removeEvent(D,B[A]);}}return this;}});Events.removeOn=function(A){return A.replace(/^on([A-Z])/,function(B,C){return C.toLowerCase(); +});};var Options=new Class({setOptions:function(){this.options=$merge.run([this.options].extend(arguments));if(!this.addEvent){return this;}for(var A in this.options){if($type(this.options[A])!="function"||!(/^on[A-Z]/).test(A)){continue; +}this.addEvent(A,this.options[A]);delete this.options[A];}return this;}});Document.implement({newElement:function(A,B){if(Browser.Engine.trident&&B){["name","type","checked"].each(function(C){if(!B[C]){return ; +}A+=" "+C+'="'+B[C]+'"';if(C!="checked"){delete B[C];}});A="<"+A+">";}return $.element(this.createElement(A)).set(B);},newTextNode:function(A){return this.createTextNode(A); +},getDocument:function(){return this;},getWindow:function(){return this.defaultView||this.parentWindow;},purge:function(){var C=this.getElementsByTagName("*"); +for(var B=0,A=C.length;B<A;B++){Browser.freeMem(C[B]);}}});var Element=new Native({name:"Element",legacy:window.Element,initialize:function(A,B){var C=Element.Constructors.get(A); +if(C){return C(B);}if(typeof A=="string"){return document.newElement(A,B);}return $(A).set(B);},afterImplement:function(A,B){if(!Array[A]){Elements.implement(A,Elements.multi(A)); +}Element.Prototype[A]=B;}});Element.Prototype={$family:{name:"element"}};Element.Constructors=new Hash;var IFrame=new Native({name:"IFrame",generics:false,initialize:function(){var E=Array.link(arguments,{properties:Object.type,iframe:$defined}); +var C=E.properties||{};var B=$(E.iframe)||false;var D=C.onload||$empty;delete C.onload;C.id=C.name=$pick(C.id,C.name,B.id,B.name,"IFrame_"+$time());B=new Element(B||"iframe",C); +var A=function(){var F=$try(function(){return B.contentWindow.location.host;});if(F&&F==window.location.host){var H=new Window(B.contentWindow);var G=new Document(B.contentWindow.document); +$extend(H.Element.prototype,Element.Prototype);}D.call(B.contentWindow,B.contentWindow.document);};(!window.frames[C.id])?B.addListener("load",A):A();return B; +}});var Elements=new Native({initialize:function(F,B){B=$extend({ddup:true,cash:true},B);F=F||[];if(B.ddup||B.cash){var G={},E=[];for(var C=0,A=F.length; +C<A;C++){var D=$.element(F[C],!B.cash);if(B.ddup){if(G[D.uid]){continue;}G[D.uid]=true;}E.push(D);}F=E;}return(B.cash)?$extend(F,this):F;}});Elements.implement({filter:function(A,B){if(!A){return this; +}return new Elements(Array.filter(this,(typeof A=="string")?function(C){return C.match(A);}:A,B));}});Elements.multi=function(A){return function(){var B=[]; +var F=true;for(var D=0,C=this.length;D<C;D++){var E=this[D][A].apply(this[D],arguments);B.push(E);if(F){F=($type(E)=="element");}}return(F)?new Elements(B):B; +};};Window.implement({$:function(B,C){if(B&&B.$family&&B.uid){return B;}var A=$type(B);return($[A])?$[A](B,C,this.document):null;},$$:function(A){if(arguments.length==1&&typeof A=="string"){return this.document.getElements(A); +}var F=[];var C=Array.flatten(arguments);for(var D=0,B=C.length;D<B;D++){var E=C[D];switch($type(E)){case"element":E=[E];break;case"string":E=this.document.getElements(E,true); +break;default:E=false;}if(E){F.extend(E);}}return new Elements(F);},getDocument:function(){return this.document;},getWindow:function(){return this;}}); +$.string=function(C,B,A){C=A.getElementById(C);return(C)?$.element(C,B):null;};$.element=function(A,D){$uid(A);if(!D&&!A.$family&&!(/^object|embed$/i).test(A.tagName)){var B=Element.Prototype; +for(var C in B){A[C]=B[C];}}return A;};$.object=function(B,C,A){if(B.toElement){return $.element(B.toElement(A),C);}return null;};$.textnode=$.whitespace=$.window=$.document=$arguments(0); +Native.implement([Element,Document],{getElement:function(A,B){return $(this.getElements(A,true)[0]||null,B);},getElements:function(A,D){A=A.split(","); +var C=[];var B=(A.length>1);A.each(function(E){var F=this.getElementsByTagName(E.trim());(B)?C.extend(F):C=F;},this);return new Elements(C,{ddup:B,cash:!D}); +}});Element.Storage={get:function(A){return(this[A]||(this[A]={}));}};Element.Inserters=new Hash({before:function(B,A){if(A.parentNode){A.parentNode.insertBefore(B,A); +}},after:function(B,A){if(!A.parentNode){return ;}var C=A.nextSibling;(C)?A.parentNode.insertBefore(B,C):A.parentNode.appendChild(B);},bottom:function(B,A){A.appendChild(B); +},top:function(B,A){var C=A.firstChild;(C)?A.insertBefore(B,C):A.appendChild(B);}});Element.Inserters.inside=Element.Inserters.bottom;Element.Inserters.each(function(C,B){var A=B.capitalize(); +Element.implement("inject"+A,function(D){C(this,$(D,true));return this;});Element.implement("grab"+A,function(D){C($(D,true),this);return this;});});Element.implement({getDocument:function(){return this.ownerDocument; +},getWindow:function(){return this.ownerDocument.getWindow();},getElementById:function(D,C){var B=this.ownerDocument.getElementById(D);if(!B){return null; +}for(var A=B.parentNode;A!=this;A=A.parentNode){if(!A){return null;}}return $.element(B,C);},set:function(D,B){switch($type(D)){case"object":for(var C in D){this.set(C,D[C]); +}break;case"string":var A=Element.Properties.get(D);(A&&A.set)?A.set.apply(this,Array.slice(arguments,1)):this.setProperty(D,B);}return this;},get:function(B){var A=Element.Properties.get(B); +return(A&&A.get)?A.get.apply(this,Array.slice(arguments,1)):this.getProperty(B);},erase:function(B){var A=Element.Properties.get(B);(A&&A.erase)?A.erase.apply(this,Array.slice(arguments,1)):this.removeProperty(B); +return this;},match:function(A){return(!A||Element.get(this,"tag")==A);},inject:function(B,A){Element.Inserters.get(A||"bottom")(this,$(B,true));return this; +},wraps:function(B,A){B=$(B,true);return this.replaces(B).grab(B,A);},grab:function(B,A){Element.Inserters.get(A||"bottom")($(B,true),this);return this; +},appendText:function(B,A){return this.grab(this.getDocument().newTextNode(B),A);},adopt:function(){Array.flatten(arguments).each(function(A){A=$(A,true); +if(A){this.appendChild(A);}},this);return this;},dispose:function(){return(this.parentNode)?this.parentNode.removeChild(this):this;},clone:function(D,C){switch($type(this)){case"element":var H={}; +for(var G=0,E=this.attributes.length;G<E;G++){var B=this.attributes[G],L=B.nodeName.toLowerCase();if(Browser.Engine.trident&&(/input/i).test(this.tagName)&&(/width|height/).test(L)){continue; +}var K=(L=="style"&&this.style)?this.style.cssText:B.nodeValue;if(!$chk(K)||L=="uid"||(L=="id"&&!C)){continue;}if(K!="inherit"&&["string","number"].contains($type(K))){H[L]=K; +}}var J=new Element(this.nodeName.toLowerCase(),H);if(D!==false){for(var I=0,F=this.childNodes.length;I<F;I++){var A=Element.clone(this.childNodes[I],true,C); +if(A){J.grab(A);}}}return J;case"textnode":return document.newTextNode(this.nodeValue);}return null;},replaces:function(A){A=$(A,true);A.parentNode.replaceChild(this,A); +return this;},hasClass:function(A){return this.className.contains(A," ");},addClass:function(A){if(!this.hasClass(A)){this.className=(this.className+" "+A).clean(); +}return this;},removeClass:function(A){this.className=this.className.replace(new RegExp("(^|\\s)"+A+"(?:\\s|$)"),"$1").clean();return this;},toggleClass:function(A){return this.hasClass(A)?this.removeClass(A):this.addClass(A); +},getComputedStyle:function(B){if(this.currentStyle){return this.currentStyle[B.camelCase()];}var A=this.getWindow().getComputedStyle(this,null);return(A)?A.getPropertyValue([B.hyphenate()]):null; +},empty:function(){$A(this.childNodes).each(function(A){Browser.freeMem(A);Element.empty(A);Element.dispose(A);},this);return this;},destroy:function(){Browser.freeMem(this.empty().dispose()); +return null;},getSelected:function(){return new Elements($A(this.options).filter(function(A){return A.selected;}));},toQueryString:function(){var A=[]; +this.getElements("input, select, textarea").each(function(B){if(!B.name||B.disabled){return ;}var C=(B.tagName.toLowerCase()=="select")?Element.getSelected(B).map(function(D){return D.value; +}):((B.type=="radio"||B.type=="checkbox")&&!B.checked)?null:B.value;$splat(C).each(function(D){if(D){A.push(B.name+"="+encodeURIComponent(D));}});});return A.join("&"); +},getProperty:function(C){var B=Element.Attributes,A=B.Props[C];var D=(A)?this[A]:this.getAttribute(C,2);return(B.Bools[C])?!!D:(A)?D:D||null;},getProperties:function(){var A=$A(arguments); +return A.map(function(B){return this.getProperty(B);},this).associate(A);},setProperty:function(D,E){var C=Element.Attributes,B=C.Props[D],A=$defined(E); +if(B&&C.Bools[D]){E=(E||!A)?true:false;}else{if(!A){return this.removeProperty(D);}}(B)?this[B]=E:this.setAttribute(D,E);return this;},setProperties:function(A){for(var B in A){this.setProperty(B,A[B]); +}return this;},removeProperty:function(D){var C=Element.Attributes,B=C.Props[D],A=(B&&C.Bools[D]);(B)?this[B]=(A)?false:"":this.removeAttribute(D);return this; +},removeProperties:function(){Array.each(arguments,this.removeProperty,this);return this;}});(function(){var A=function(D,B,I,C,F,H){var E=D[I||B];var G=[]; +while(E){if(E.nodeType==1&&(!C||Element.match(E,C))){G.push(E);if(!F){break;}}E=E[B];}return(F)?new Elements(G,{ddup:false,cash:!H}):$(G[0],H);};Element.implement({getPrevious:function(B,C){return A(this,"previousSibling",null,B,false,C); +},getAllPrevious:function(B,C){return A(this,"previousSibling",null,B,true,C);},getNext:function(B,C){return A(this,"nextSibling",null,B,false,C);},getAllNext:function(B,C){return A(this,"nextSibling",null,B,true,C); +},getFirst:function(B,C){return A(this,"nextSibling","firstChild",B,false,C);},getLast:function(B,C){return A(this,"previousSibling","lastChild",B,false,C); +},getParent:function(B,C){return A(this,"parentNode",null,B,false,C);},getParents:function(B,C){return A(this,"parentNode",null,B,true,C);},getChildren:function(B,C){return A(this,"nextSibling","firstChild",B,true,C); +},hasChild:function(B){B=$(B,true);return(!!B&&$A(this.getElementsByTagName(B.tagName)).contains(B));}});})();Element.Properties=new Hash;Element.Properties.style={set:function(A){this.style.cssText=A; +},get:function(){return this.style.cssText;},erase:function(){this.style.cssText="";}};Element.Properties.tag={get:function(){return this.tagName.toLowerCase(); +}};Element.Properties.href={get:function(){return(!this.href)?null:this.href.replace(new RegExp("^"+document.location.protocol+"//"+document.location.host),""); +}};Element.Properties.html={set:function(){return this.innerHTML=Array.flatten(arguments).join("");}};Native.implement([Element,Window,Document],{addListener:function(B,A){if(this.addEventListener){this.addEventListener(B,A,false); +}else{this.attachEvent("on"+B,A);}return this;},removeListener:function(B,A){if(this.removeEventListener){this.removeEventListener(B,A,false);}else{this.detachEvent("on"+B,A); +}return this;},retrieve:function(B,A){var D=Element.Storage.get(this.uid);var C=D[B];if($defined(A)&&!$defined(C)){C=D[B]=A;}return $pick(C);},store:function(B,A){var C=Element.Storage.get(this.uid); +C[B]=A;return this;},eliminate:function(A){var B=Element.Storage.get(this.uid);delete B[A];return this;}});Element.Attributes=new Hash({Props:{html:"innerHTML","class":"className","for":"htmlFor",text:(Browser.Engine.trident)?"innerText":"textContent"},Bools:["compact","nowrap","ismap","declare","noshade","checked","disabled","readonly","multiple","selected","noresize","defer"],Camels:["value","accessKey","cellPadding","cellSpacing","colSpan","frameBorder","maxLength","readOnly","rowSpan","tabIndex","useMap"]}); +Browser.freeMem=function(A){if(!A){return ;}if(Browser.Engine.trident&&(/object/i).test(A.tagName)){for(var B in A){if(typeof A[B]=="function"){A[B]=$empty; +}}Element.dispose(A);}if(A.uid&&A.removeEvents){A.removeEvents();}};(function(B){var C=B.Bools,A=B.Camels;B.Bools=C=C.associate(C);Hash.extend(Hash.combine(B.Props,C),A.associate(A.map(function(D){return D.toLowerCase(); +})));B.erase("Camels");})(Element.Attributes);window.addListener("unload",function(){window.removeListener("unload",arguments.callee);document.purge(); +if(Browser.Engine.trident){CollectGarbage();}});Element.Properties.events={set:function(A){this.addEvents(A);}};Native.implement([Element,Window,Document],{addEvent:function(E,G){var H=this.retrieve("events",{}); +H[E]=H[E]||{keys:[],values:[]};if(H[E].keys.contains(G)){return this;}H[E].keys.push(G);var F=E,A=Element.Events.get(E),C=G,I=this;if(A){if(A.onAdd){A.onAdd.call(this,G); +}if(A.condition){C=function(J){if(A.condition.call(this,J)){return G.call(this,J);}return false;};}F=A.base||F;}var D=function(){return G.call(I);};var B=Element.NativeEvents[F]||0; +if(B){if(B==2){D=function(J){J=new Event(J,I.getWindow());if(C.call(I,J)===false){J.stop();}};}this.addListener(F,D);}H[E].values.push(D);return this;},removeEvent:function(D,C){var B=this.retrieve("events"); +if(!B||!B[D]){return this;}var G=B[D].keys.indexOf(C);if(G==-1){return this;}var A=B[D].keys.splice(G,1)[0];var F=B[D].values.splice(G,1)[0];var E=Element.Events.get(D); +if(E){if(E.onRemove){E.onRemove.call(this,C);}D=E.base||D;}return(Element.NativeEvents[D])?this.removeListener(D,F):this;},addEvents:function(A){for(var B in A){this.addEvent(B,A[B]); +}return this;},removeEvents:function(B){var A=this.retrieve("events");if(!A){return this;}if(!B){for(var C in A){this.removeEvents(C);}A=null;}else{if(A[B]){while(A[B].keys[0]){this.removeEvent(B,A[B].keys[0]); +}A[B]=null;}}return this;},fireEvent:function(D,B,A){var C=this.retrieve("events");if(!C||!C[D]){return this;}C[D].keys.each(function(E){E.create({bind:this,delay:A,"arguments":B})(); +},this);return this;},cloneEvents:function(D,A){D=$(D);var C=D.retrieve("events");if(!C){return this;}if(!A){for(var B in C){this.cloneEvents(D,B);}}else{if(C[A]){C[A].keys.each(function(E){this.addEvent(A,E); +},this);}}return this;}});Element.NativeEvents={click:2,dblclick:2,mouseup:2,mousedown:2,contextmenu:2,mousewheel:2,DOMMouseScroll:2,mouseover:2,mouseout:2,mousemove:2,selectstart:2,selectend:2,keydown:2,keypress:2,keyup:2,focus:2,blur:2,change:2,reset:2,select:2,submit:2,load:1,unload:1,beforeunload:2,resize:1,move:1,DOMContentLoaded:1,readystatechange:1,error:1,abort:1,scroll:1}; +(function(){var A=function(B){var C=B.relatedTarget;if(C==undefined){return true;}if(C===false){return false;}return($type(this)!="document"&&C!=this&&C.prefix!="xul"&&!this.hasChild(C)); +};Element.Events=new Hash({mouseenter:{base:"mouseover",condition:A},mouseleave:{base:"mouseout",condition:A},mousewheel:{base:(Browser.Engine.gecko)?"DOMMouseScroll":"mousewheel"}}); +})();Element.Properties.styles={set:function(A){this.setStyles(A);}};Element.Properties.opacity={set:function(A,B){if(!B){if(A==0){if(this.style.visibility!="hidden"){this.style.visibility="hidden"; +}}else{if(this.style.visibility!="visible"){this.style.visibility="visible";}}}if(!this.currentStyle||!this.currentStyle.hasLayout){this.style.zoom=1;}if(Browser.Engine.trident){this.style.filter=(A==1)?"":"alpha(opacity="+A*100+")"; +}this.style.opacity=A;this.store("opacity",A);},get:function(){return this.retrieve("opacity",1);}};Element.implement({setOpacity:function(A){return this.set("opacity",A,true); +},getOpacity:function(){return this.get("opacity");},setStyle:function(B,A){switch(B){case"opacity":return this.set("opacity",parseFloat(A));case"float":B=(Browser.Engine.trident)?"styleFloat":"cssFloat"; +}B=B.camelCase();if($type(A)!="string"){var C=(Element.Styles.get(B)||"@").split(" ");A=$splat(A).map(function(E,D){if(!C[D]){return"";}return($type(E)=="number")?C[D].replace("@",Math.round(E)):E; +}).join(" ");}else{if(A==String(Number(A))){A=Math.round(A);}}this.style[B]=A;return this;},getStyle:function(G){switch(G){case"opacity":return this.get("opacity"); +case"float":G=(Browser.Engine.trident)?"styleFloat":"cssFloat";}G=G.camelCase();var A=this.style[G];if(!$chk(A)){A=[];for(var F in Element.ShortStyles){if(G!=F){continue; +}for(var E in Element.ShortStyles[F]){A.push(this.getStyle(E));}return A.join(" ");}A=this.getComputedStyle(G);}if(A){A=String(A);var C=A.match(/rgba?\([\d\s,]+\)/); +if(C){A=A.replace(C[0],C[0].rgbToHex());}}if(Browser.Engine.presto||(Browser.Engine.trident&&!$chk(parseInt(A)))){if(G.test(/^(height|width)$/)){var B=(G=="width")?["left","right"]:["top","bottom"],D=0; +B.each(function(H){D+=this.getStyle("border-"+H+"-width").toInt()+this.getStyle("padding-"+H).toInt();},this);return this["offset"+G.capitalize()]-D+"px"; +}if(Browser.Engine.presto&&String(A).test("px")){return A;}if(G.test(/(border(.+)Width|margin|padding)/)){return"0px";}}return A;},setStyles:function(B){for(var A in B){this.setStyle(A,B[A]); +}return this;},getStyles:function(){var A={};Array.each(arguments,function(B){A[B]=this.getStyle(B);},this);return A;}});Element.Styles=new Hash({left:"@px",top:"@px",bottom:"@px",right:"@px",width:"@px",height:"@px",maxWidth:"@px",maxHeight:"@px",minWidth:"@px",minHeight:"@px",backgroundColor:"rgb(@, @, @)",backgroundPosition:"@px @px",color:"rgb(@, @, @)",fontSize:"@px",letterSpacing:"@px",lineHeight:"@px",clip:"rect(@px @px @px @px)",margin:"@px @px @px @px",padding:"@px @px @px @px",border:"@px @ rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @)",borderWidth:"@px @px @px @px",borderStyle:"@ @ @ @",borderColor:"rgb(@, @, @) rgb(@, @, @) rgb(@, @, @) rgb(@, @, @)",zIndex:"@",zoom:"@",fontWeight:"@",textIndent:"@px",opacity:"@"}); +Element.ShortStyles={margin:{},padding:{},border:{},borderWidth:{},borderStyle:{},borderColor:{}};["Top","Right","Bottom","Left"].each(function(G){var F=Element.ShortStyles; +var B=Element.Styles;["margin","padding"].each(function(H){var I=H+G;F[H][I]=B[I]="@px";});var E="border"+G;F.border[E]=B[E]="@px @ rgb(@, @, @)";var D=E+"Width",A=E+"Style",C=E+"Color"; +F[E]={};F.borderWidth[D]=F[E][D]=B[D]="@px";F.borderStyle[A]=F[E][A]=B[A]="@";F.borderColor[C]=F[E][C]=B[C]="rgb(@, @, @)";});(function(){Element.implement({scrollTo:function(H,I){if(B(this)){this.getWindow().scrollTo(H,I); +}else{this.scrollLeft=H;this.scrollTop=I;}return this;},getSize:function(){if(B(this)){return this.getWindow().getSize();}return{x:this.offsetWidth,y:this.offsetHeight}; +},getScrollSize:function(){if(B(this)){return this.getWindow().getScrollSize();}return{x:this.scrollWidth,y:this.scrollHeight};},getScroll:function(){if(B(this)){return this.getWindow().getScroll(); +}return{x:this.scrollLeft,y:this.scrollTop};},getScrolls:function(){var I=this,H={x:0,y:0};while(I&&!B(I)){H.x+=I.scrollLeft;H.y+=I.scrollTop;I=I.parentNode; +}return H;},getOffsetParent:function(){var H=this;if(B(H)){return null;}if(!Browser.Engine.trident){return H.offsetParent;}while((H=H.parentNode)&&!B(H)){if(D(H,"position")!="static"){return H; +}}return null;},getOffsets:function(){var I=this,H={x:0,y:0};if(B(this)){return H;}while(I&&!B(I)){H.x+=I.offsetLeft;H.y+=I.offsetTop;if(Browser.Engine.gecko){if(!F(I)){H.x+=C(I); +H.y+=G(I);}var J=I.parentNode;if(J&&D(J,"overflow")!="visible"){H.x+=C(J);H.y+=G(J);}}else{if(I!=this&&(Browser.Engine.trident||Browser.Engine.webkit)){H.x+=C(I); +H.y+=G(I);}}I=I.offsetParent;if(Browser.Engine.trident){while(I&&!I.currentStyle.hasLayout){I=I.offsetParent;}}}if(Browser.Engine.gecko&&!F(this)){H.x-=C(this); +H.y-=G(this);}return H;},getPosition:function(K){if(B(this)){return{x:0,y:0};}var L=this.getOffsets(),I=this.getScrolls();var H={x:L.x-I.x,y:L.y-I.y};var J=(K&&(K=$(K)))?K.getPosition():{x:0,y:0}; +return{x:H.x-J.x,y:H.y-J.y};},getCoordinates:function(J){if(B(this)){return this.getWindow().getCoordinates();}var H=this.getPosition(J),I=this.getSize(); +var K={left:H.x,top:H.y,width:I.x,height:I.y};K.right=K.left+K.width;K.bottom=K.top+K.height;return K;},computePosition:function(H){return{left:H.x-E(this,"margin-left"),top:H.y-E(this,"margin-top")}; +},position:function(H){return this.setStyles(this.computePosition(H));}});Native.implement([Document,Window],{getSize:function(){var I=this.getWindow(); +if(Browser.Engine.presto||Browser.Engine.webkit){return{x:I.innerWidth,y:I.innerHeight};}var H=A(this);return{x:H.clientWidth,y:H.clientHeight};},getScroll:function(){var I=this.getWindow(); +var H=A(this);return{x:I.pageXOffset||H.scrollLeft,y:I.pageYOffset||H.scrollTop};},getScrollSize:function(){var I=A(this);var H=this.getSize();return{x:Math.max(I.scrollWidth,H.x),y:Math.max(I.scrollHeight,H.y)}; +},getPosition:function(){return{x:0,y:0};},getCoordinates:function(){var H=this.getSize();return{top:0,left:0,bottom:H.y,right:H.x,height:H.y,width:H.x}; +}});var D=Element.getComputedStyle;function E(H,I){return D(H,I).toInt()||0;}function F(H){return D(H,"-moz-box-sizing")=="border-box";}function G(H){return E(H,"border-top-width"); +}function C(H){return E(H,"border-left-width");}function B(H){return(/^(?:body|html)$/i).test(H.tagName);}function A(H){var I=H.getDocument();return(!I.compatMode||I.compatMode=="CSS1Compat")?I.html:I.body; +}})();Native.implement([Window,Document,Element],{getHeight:function(){return this.getSize().y;},getWidth:function(){return this.getSize().x;},getScrollTop:function(){return this.getScroll().y; +},getScrollLeft:function(){return this.getScroll().x;},getScrollHeight:function(){return this.getScrollSize().y;},getScrollWidth:function(){return this.getScrollSize().x; +},getTop:function(){return this.getPosition().y;},getLeft:function(){return this.getPosition().x;}});Native.implement([Document,Element],{getElements:function(H,G){H=H.split(","); +var C,E={};for(var D=0,B=H.length;D<B;D++){var A=H[D],F=Selectors.Utils.search(this,A,E);if(D!=0&&F.item){F=$A(F);}C=(D==0)?F:(C.item)?$A(C).concat(F):C.concat(F); +}return new Elements(C,{ddup:(H.length>1),cash:!G});}});Element.implement({match:function(B){if(!B){return true;}var D=Selectors.Utils.parseTagAndID(B); +var A=D[0],E=D[1];if(!Selectors.Filters.byID(this,E)||!Selectors.Filters.byTag(this,A)){return false;}var C=Selectors.Utils.parseSelector(B);return(C)?Selectors.Utils.filter(this,C,{}):true; +}});var Selectors={Cache:{nth:{},parsed:{}}};Selectors.RegExps={id:(/#([\w-]+)/),tag:(/^(\w+|\*)/),quick:(/^(\w+|\*)$/),splitter:(/\s*([+>~\s])\s*([a-zA-Z#.*:\[])/g),combined:(/\.([\w-]+)|\[(\w+)(?:([!*^$~|]?=)["']?(.*?)["']?)?\]|:([\w-]+)(?:\(["']?(.*?)?["']?\)|$)/g)}; +Selectors.Utils={chk:function(B,C){if(!C){return true;}var A=$uid(B);if(!C[A]){return C[A]=true;}return false;},parseNthArgument:function(F){if(Selectors.Cache.nth[F]){return Selectors.Cache.nth[F]; +}var C=F.match(/^([+-]?\d*)?([a-z]+)?([+-]?\d*)?$/);if(!C){return false;}var E=parseInt(C[1]);var B=(E||E===0)?E:1;var D=C[2]||false;var A=parseInt(C[3])||0; +if(B!=0){A--;while(A<1){A+=B;}while(A>=B){A-=B;}}else{B=A;D="index";}switch(D){case"n":C={a:B,b:A,special:"n"};break;case"odd":C={a:2,b:0,special:"n"}; +break;case"even":C={a:2,b:1,special:"n"};break;case"first":C={a:0,special:"index"};break;case"last":C={special:"last-child"};break;case"only":C={special:"only-child"}; +break;default:C={a:(B-1),special:"index"};}return Selectors.Cache.nth[F]=C;},parseSelector:function(E){if(Selectors.Cache.parsed[E]){return Selectors.Cache.parsed[E]; +}var D,H={classes:[],pseudos:[],attributes:[]};while((D=Selectors.RegExps.combined.exec(E))){var I=D[1],G=D[2],F=D[3],B=D[4],C=D[5],J=D[6];if(I){H.classes.push(I); +}else{if(C){var A=Selectors.Pseudo.get(C);if(A){H.pseudos.push({parser:A,argument:J});}else{H.attributes.push({name:C,operator:"=",value:J});}}else{if(G){H.attributes.push({name:G,operator:F,value:B}); +}}}}if(!H.classes.length){delete H.classes;}if(!H.attributes.length){delete H.attributes;}if(!H.pseudos.length){delete H.pseudos;}if(!H.classes&&!H.attributes&&!H.pseudos){H=null; +}return Selectors.Cache.parsed[E]=H;},parseTagAndID:function(B){var A=B.match(Selectors.RegExps.tag);var C=B.match(Selectors.RegExps.id);return[(A)?A[1]:"*",(C)?C[1]:false]; +},filter:function(F,C,E){var D;if(C.classes){for(D=C.classes.length;D--;D){var G=C.classes[D];if(!Selectors.Filters.byClass(F,G)){return false;}}}if(C.attributes){for(D=C.attributes.length; +D--;D){var B=C.attributes[D];if(!Selectors.Filters.byAttribute(F,B.name,B.operator,B.value)){return false;}}}if(C.pseudos){for(D=C.pseudos.length;D--;D){var A=C.pseudos[D]; +if(!Selectors.Filters.byPseudo(F,A.parser,A.argument,E)){return false;}}}return true;},getByTagAndID:function(B,A,D){if(D){var C=(B.getElementById)?B.getElementById(D,true):Element.getElementById(B,D,true); +return(C&&Selectors.Filters.byTag(C,A))?[C]:[];}else{return B.getElementsByTagName(A);}},search:function(J,I,O){var B=[];var C=I.trim().replace(Selectors.RegExps.splitter,function(Z,Y,X){B.push(Y); +return":)"+X;}).split(":)");var K,F,E,V;for(var U=0,Q=C.length;U<Q;U++){var T=C[U];if(U==0&&Selectors.RegExps.quick.test(T)){K=J.getElementsByTagName(T); +continue;}var A=B[U-1];var L=Selectors.Utils.parseTagAndID(T);var W=L[0],M=L[1];if(U==0){K=Selectors.Utils.getByTagAndID(J,W,M);}else{var D={},H=[];for(var S=0,R=K.length; +S<R;S++){H=Selectors.Getters[A](H,K[S],W,M,D);}K=H;}var G=Selectors.Utils.parseSelector(T);if(G){E=[];for(var P=0,N=K.length;P<N;P++){V=K[P];if(Selectors.Utils.filter(V,G,O)){E.push(V); +}}K=E;}}return K;}};Selectors.Getters={" ":function(H,G,I,A,E){var D=Selectors.Utils.getByTagAndID(G,I,A);for(var C=0,B=D.length;C<B;C++){var F=D[C];if(Selectors.Utils.chk(F,E)){H.push(F); +}}return H;},">":function(H,G,I,A,F){var C=Selectors.Utils.getByTagAndID(G,I,A);for(var E=0,D=C.length;E<D;E++){var B=C[E];if(B.parentNode==G&&Selectors.Utils.chk(B,F)){H.push(B); +}}return H;},"+":function(C,B,A,E,D){while((B=B.nextSibling)){if(B.nodeType==1){if(Selectors.Utils.chk(B,D)&&Selectors.Filters.byTag(B,A)&&Selectors.Filters.byID(B,E)){C.push(B); +}break;}}return C;},"~":function(C,B,A,E,D){while((B=B.nextSibling)){if(B.nodeType==1){if(!Selectors.Utils.chk(B,D)){break;}if(Selectors.Filters.byTag(B,A)&&Selectors.Filters.byID(B,E)){C.push(B); +}}}return C;}};Selectors.Filters={byTag:function(B,A){return(A=="*"||(B.tagName&&B.tagName.toLowerCase()==A));},byID:function(A,B){return(!B||(A.id&&A.id==B)); +},byClass:function(B,A){return(B.className&&B.className.contains(A," "));},byPseudo:function(A,D,C,B){return D.call(A,C,B);},byAttribute:function(C,D,B,E){var A=Element.prototype.getProperty.call(C,D); +if(!A){return false;}if(!B||E==undefined){return true;}switch(B){case"=":return(A==E);case"*=":return(A.contains(E));case"^=":return(A.substr(0,E.length)==E); +case"$=":return(A.substr(A.length-E.length)==E);case"!=":return(A!=E);case"~=":return A.contains(E," ");case"|=":return A.contains(E,"-");}return false; +}};Selectors.Pseudo=new Hash({empty:function(){return !(this.innerText||this.textContent||"").length;},not:function(A){return !Element.match(this,A);},contains:function(A){return(this.innerText||this.textContent||"").contains(A); +},"first-child":function(){return Selectors.Pseudo.index.call(this,0);},"last-child":function(){var A=this;while((A=A.nextSibling)){if(A.nodeType==1){return false; +}}return true;},"only-child":function(){var B=this;while((B=B.previousSibling)){if(B.nodeType==1){return false;}}var A=this;while((A=A.nextSibling)){if(A.nodeType==1){return false; +}}return true;},"nth-child":function(G,E){G=(G==undefined)?"n":G;var C=Selectors.Utils.parseNthArgument(G);if(C.special!="n"){return Selectors.Pseudo[C.special].call(this,C.a,E); +}var F=0;E.positions=E.positions||{};var D=$uid(this);if(!E.positions[D]){var B=this;while((B=B.previousSibling)){if(B.nodeType!=1){continue;}F++;var A=E.positions[$uid(B)]; +if(A!=undefined){F=A+F;break;}}E.positions[D]=F;}return(E.positions[D]%C.a==C.b);},index:function(A){var B=this,C=0;while((B=B.previousSibling)){if(B.nodeType==1&&++C>A){return false; +}}return(C==A);},even:function(B,A){return Selectors.Pseudo["nth-child"].call(this,"2n+1",A);},odd:function(B,A){return Selectors.Pseudo["nth-child"].call(this,"2n",A); +}});Element.Events.domready={onAdd:function(A){if(Browser.loaded){A.call(this);}}};(function(){var B=function(){if(Browser.loaded){return ;}Browser.loaded=true; +window.fireEvent("domready");document.fireEvent("domready");};switch(Browser.Engine.name){case"webkit":(function(){(["loaded","complete"].contains(document.readyState))?B():arguments.callee.delay(50); +})();break;case"trident":var A=document.createElement("div");(function(){($try(function(){A.doScroll("left");return $(A).inject(document.body).set("html","temp").dispose(); +}))?B():arguments.callee.delay(50);})();break;default:window.addEvent("load",B);document.addEvent("DOMContentLoaded",B);}})();var JSON=new Hash({encode:function(B){switch($type(B)){case"string":return'"'+B.replace(/[\x00-\x1f\\"]/g,JSON.$replaceChars)+'"'; +case"array":return"["+String(B.map(JSON.encode).filter($defined))+"]";case"object":case"hash":var A=[];Hash.each(B,function(E,D){var C=JSON.encode(E);if(C){A.push(JSON.encode(D)+":"+C); +}});return"{"+A+"}";case"number":case"boolean":return String(B);case false:return"null";}return null;},$specialChars:{"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},$replaceChars:function(A){return JSON.$specialChars[A]||"\\u00"+Math.floor(A.charCodeAt()/16).toString(16)+(A.charCodeAt()%16).toString(16); +},decode:function(string,secure){if($type(string)!="string"||!string.length){return null;}if(secure&&!(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(string.replace(/\\./g,"@").replace(/"[^"\\\n\r]*"/g,""))){return null; +}return eval("("+string+")");}});Native.implement([Hash,Array,String,Number],{toJSON:function(){return JSON.encode(this);}});var Cookie=new Class({Implements:Options,options:{path:false,domain:false,duration:false,secure:false,document:document},initialize:function(B,A){this.key=B; +this.setOptions(A);},write:function(B){B=encodeURIComponent(B);if(this.options.domain){B+="; domain="+this.options.domain;}if(this.options.path){B+="; path="+this.options.path; +}if(this.options.duration){var A=new Date();A.setTime(A.getTime()+this.options.duration*24*60*60*1000);B+="; expires="+A.toGMTString();}if(this.options.secure){B+="; secure"; +}this.options.document.cookie=this.key+"="+B;return this;},read:function(){var A=this.options.document.cookie.match("(?:^|;)\\s*"+this.key.escapeRegExp()+"=([^;]*)"); +return(A)?decodeURIComponent(A[1]):null;},dispose:function(){new Cookie(this.key,$merge(this.options,{duration:-1})).write("");return this;}});Cookie.write=function(B,C,A){return new Cookie(B,A).write(C); +};Cookie.read=function(A){return new Cookie(A).read();};Cookie.dispose=function(B,A){return new Cookie(B,A).dispose();};var Swiff=new Class({Implements:[Options],options:{id:null,height:1,width:1,container:null,properties:{},params:{quality:"high",allowScriptAccess:"always",wMode:"transparent",swLiveConnect:true},callBacks:{},vars:{}},toElement:function(){return this.object; +},initialize:function(L,M){this.instance="Swiff_"+$time();this.setOptions(M);M=this.options;var B=this.id=M.id||this.instance;var A=$(M.container);Swiff.CallBacks[this.instance]={}; +var E=M.params,G=M.vars,F=M.callBacks;var H=$extend({height:M.height,width:M.width},M.properties);var K=this;for(var D in F){Swiff.CallBacks[this.instance][D]=(function(N){return function(){return N.apply(K.object,arguments); +};})(F[D]);G[D]="Swiff.CallBacks."+this.instance+"."+D;}E.flashVars=Hash.toQueryString(G);if(Browser.Engine.trident){H.classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"; +E.movie=L;}else{H.type="application/x-shockwave-flash";H.data=L;}var J='<object id="'+B+'"';for(var I in H){J+=" "+I+'="'+H[I]+'"';}J+=">";for(var C in E){if(E[C]){J+='<param name="'+C+'" value="'+E[C]+'" />'; +}}J+="</object>";this.object=((A)?A.empty():new Element("div")).set("html",J).firstChild;},replaces:function(A){A=$(A,true);A.parentNode.replaceChild(this.toElement(),A); +return this;},inject:function(A){$(A,true).appendChild(this.toElement());return this;},remote:function(){return Swiff.remote.apply(Swiff,[this.toElement()].extend(arguments)); +}});Swiff.CallBacks={};Swiff.remote=function(obj,fn){var rs=obj.CallFunction('<invoke name="'+fn+'" returntype="javascript">'+__flash__argumentsToXML(arguments,2)+"</invoke>"); +return eval(rs);};var Fx=new Class({Implements:[Chain,Events,Options],options:{fps:50,unit:false,duration:500,link:"ignore",transition:function(A){return -(Math.cos(Math.PI*A)-1)/2; +}},initialize:function(A){this.subject=this.subject||this;this.setOptions(A);this.options.duration=Fx.Durations[this.options.duration]||this.options.duration.toInt(); +var B=this.options.wait;if(B===false){this.options.link="cancel";}},step:function(){var A=$time();if(A<this.time+this.options.duration){var B=this.options.transition((A-this.time)/this.options.duration); +this.set(this.compute(this.from,this.to,B));}else{this.set(this.compute(this.from,this.to,1));this.complete();}},set:function(A){return A;},compute:function(C,B,A){return Fx.compute(C,B,A); +},check:function(A){if(!this.timer){return true;}switch(this.options.link){case"cancel":this.cancel();return true;case"chain":this.chain(A.bind(this,Array.slice(arguments,1))); +return false;}return false;},start:function(B,A){if(!this.check(arguments.callee,B,A)){return this;}this.from=B;this.to=A;this.time=0;this.startTimer(); +this.onStart();return this;},complete:function(){if(this.stopTimer()){this.onComplete();}return this;},cancel:function(){if(this.stopTimer()){this.onCancel(); +}return this;},onStart:function(){this.fireEvent("start",this.subject);},onComplete:function(){this.fireEvent("complete",this.subject);if(!this.callChain()){this.fireEvent("chainComplete",this.subject); +}},onCancel:function(){this.fireEvent("cancel",this.subject).clearChain();},pause:function(){this.stopTimer();return this;},resume:function(){this.startTimer(); +return this;},stopTimer:function(){if(!this.timer){return false;}this.time=$time()-this.time;this.timer=$clear(this.timer);return true;},startTimer:function(){if(this.timer){return false; +}this.time=$time()-this.time;this.timer=this.step.periodical(Math.round(1000/this.options.fps),this);return true;}});Fx.compute=function(C,B,A){return(B-C)*A+C; +};Fx.Durations={"short":250,normal:500,"long":1000};Fx.CSS=new Class({Extends:Fx,prepare:function(D,E,B){B=$splat(B);var C=B[1];if(!$chk(C)){B[1]=B[0]; +B[0]=D.getStyle(E);}var A=B.map(this.parse);return{from:A[0],to:A[1]};},parse:function(A){A=$lambda(A)();A=(typeof A=="string")?A.split(" "):$splat(A); +return A.map(function(C){C=String(C);var B=false;Fx.CSS.Parsers.each(function(F,E){if(B){return ;}var D=F.parse(C);if($chk(D)){B={value:D,parser:F};}}); +B=B||{value:C,parser:Fx.CSS.Parsers.String};return B;});},compute:function(D,C,B){var A=[];(Math.min(D.length,C.length)).times(function(E){A.push({value:D[E].parser.compute(D[E].value,C[E].value,B),parser:D[E].parser}); +});A.$family={name:"fx:css:value"};return A;},serve:function(C,B){if($type(C)!="fx:css:value"){C=this.parse(C);}var A=[];C.each(function(D){A=A.concat(D.parser.serve(D.value,B)); +});return A;},render:function(A,D,C,B){A.setStyle(D,this.serve(C,B));},search:function(A){if(Fx.CSS.Cache[A]){return Fx.CSS.Cache[A];}var B={};Array.each(document.styleSheets,function(E,D){var C=E.href; +if(C&&C.contains("://")&&!C.contains(document.domain)){return ;}var F=E.rules||E.cssRules;Array.each(F,function(I,G){if(!I.style){return ;}var H=(I.selectorText)?I.selectorText.replace(/^\w+/,function(J){return J.toLowerCase(); +}):null;if(!H||!H.test("^"+A+"$")){return ;}Element.Styles.each(function(K,J){if(!I.style[J]||Element.ShortStyles[J]){return ;}K=String(I.style[J]);B[J]=(K.test(/^rgb/))?K.rgbToHex():K; +});});});return Fx.CSS.Cache[A]=B;}});Fx.CSS.Cache={};Fx.CSS.Parsers=new Hash({Color:{parse:function(A){if(A.match(/^#[0-9a-f]{3,6}$/i)){return A.hexToRgb(true); +}return((A=A.match(/(\d+),\s*(\d+),\s*(\d+)/)))?[A[1],A[2],A[3]]:false;},compute:function(C,B,A){return C.map(function(E,D){return Math.round(Fx.compute(C[D],B[D],A)); +});},serve:function(A){return A.map(Number);}},Number:{parse:parseFloat,compute:Fx.compute,serve:function(B,A){return(A)?B+A:B;}},String:{parse:$lambda(false),compute:$arguments(1),serve:$arguments(0)}}); +Fx.Tween=new Class({Extends:Fx.CSS,initialize:function(B,A){this.element=this.subject=$(B);this.parent(A);},set:function(B,A){if(arguments.length==1){A=B; +B=this.property||this.options.property;}this.render(this.element,B,A,this.options.unit);return this;},start:function(C,E,D){if(!this.check(arguments.callee,C,E,D)){return this; +}var B=Array.flatten(arguments);this.property=this.options.property||B.shift();var A=this.prepare(this.element,this.property,B);return this.parent(A.from,A.to); +}});Element.Properties.tween={set:function(A){var B=this.retrieve("tween");if(B){B.cancel();}return this.eliminate("tween").store("tween:options",$extend({link:"cancel"},A)); +},get:function(A){if(A||!this.retrieve("tween")){if(A||!this.retrieve("tween:options")){this.set("tween",A);}this.store("tween",new Fx.Tween(this,this.retrieve("tween:options"))); +}return this.retrieve("tween");}};Element.implement({tween:function(A,C,B){this.get("tween").start(arguments);return this;},fade:function(C){var E=this.get("tween"),D="opacity",A; +C=$pick(C,"toggle");switch(C){case"in":E.start(D,1);break;case"out":E.start(D,0);break;case"show":E.set(D,1);break;case"hide":E.set(D,0);break;case"toggle":var B=this.retrieve("fade:flag",this.get("opacity")==1); +E.start(D,(B)?0:1);this.store("fade:flag",!B);A=true;break;default:E.start(D,arguments);}if(!A){this.eliminate("fade:flag");}return this;},highlight:function(C,A){if(!A){A=this.retrieve("highlight:original",this.getStyle("background-color")); +A=(A=="transparent")?"#fff":A;}var B=this.get("tween");B.start("background-color",C||"#ffff88",A).chain(function(){this.setStyle("background-color",this.retrieve("highlight:original")); +B.callChain();}.bind(this));return this;}});Fx.Morph=new Class({Extends:Fx.CSS,initialize:function(B,A){this.element=this.subject=$(B);this.parent(A);},set:function(A){if(typeof A=="string"){A=this.search(A); +}for(var B in A){this.render(this.element,B,A[B],this.options.unit);}return this;},compute:function(E,D,C){var A={};for(var B in E){A[B]=this.parent(E[B],D[B],C); +}return A;},start:function(B){if(!this.check(arguments.callee,B)){return this;}if(typeof B=="string"){B=this.search(B);}var E={},D={};for(var C in B){var A=this.prepare(this.element,C,B[C]); +E[C]=A.from;D[C]=A.to;}return this.parent(E,D);}});Element.Properties.morph={set:function(A){var B=this.retrieve("morph");if(B){B.cancel();}return this.eliminate("morph").store("morph:options",$extend({link:"cancel"},A)); +},get:function(A){if(A||!this.retrieve("morph")){if(A||!this.retrieve("morph:options")){this.set("morph",A);}this.store("morph",new Fx.Morph(this,this.retrieve("morph:options"))); +}return this.retrieve("morph");}};Element.implement({morph:function(A){this.get("morph").start(A);return this;}});(function(){var A=Fx.prototype.initialize; +Fx.prototype.initialize=function(B){A.call(this,B);var C=this.options.transition;if(typeof C=="string"&&(C=C.split(":"))){var D=Fx.Transitions;D=D[C[0]]||D[C[0].capitalize()]; +if(C[1]){D=D["ease"+C[1].capitalize()+(C[2]?C[2].capitalize():"")];}this.options.transition=D;}};})();Fx.Transition=function(B,A){A=$splat(A);return $extend(B,{easeIn:function(C){return B(C,A); +},easeOut:function(C){return 1-B(1-C,A);},easeInOut:function(C){return(C<=0.5)?B(2*C,A)/2:(2-B(2*(1-C),A))/2;}});};Fx.Transitions=new Hash({linear:$arguments(0)}); +Fx.Transitions.extend=function(A){for(var B in A){Fx.Transitions[B]=new Fx.Transition(A[B]);}};Fx.Transitions.extend({Pow:function(B,A){return Math.pow(B,A[0]||6); +},Expo:function(A){return Math.pow(2,8*(A-1));},Circ:function(A){return 1-Math.sin(Math.acos(A));},Sine:function(A){return 1-Math.sin((1-A)*Math.PI/2); +},Back:function(B,A){A=A[0]||1.618;return Math.pow(B,2)*((A+1)*B-A);},Bounce:function(D){var C;for(var B=0,A=1;1;B+=A,A/=2){if(D>=(7-4*B)/11){C=-Math.pow((11-6*B-11*D)/4,2)+A*A; +break;}}return C;},Elastic:function(B,A){return Math.pow(2,10*--B)*Math.cos(20*B*Math.PI*(A[0]||1)/3);}});["Quad","Cubic","Quart","Quint"].each(function(B,A){Fx.Transitions[B]=new Fx.Transition(function(C){return Math.pow(C,[A+2]); +});});var Request=new Class({Implements:[Chain,Events,Options],options:{url:"",data:"",headers:{"X-Requested-With":"XMLHttpRequest",Accept:"text/javascript, text/html, application/xml, text/xml, */*"},async:true,format:false,method:"post",link:"ignore",isSuccess:null,emulation:true,urlEncoded:true,encoding:"utf-8",evalScripts:false,evalResponse:false},initialize:function(A){this.xhr=new Browser.Request(); +this.setOptions(A);this.options.isSuccess=this.options.isSuccess||this.isSuccess;this.headers=new Hash(this.options.headers);},onStateChange:function(){if(this.xhr.readyState!=4||!this.running){return ; +}this.running=false;this.status=0;$try(function(){this.status=this.xhr.status;}.bind(this));if(this.options.isSuccess.call(this,this.status)){this.response={text:this.xhr.responseText,xml:this.xhr.responseXML}; +this.success(this.response.text,this.response.xml);}else{this.response={text:null,xml:null};this.failure();}this.xhr.onreadystatechange=$empty;},isSuccess:function(){return((this.status>=200)&&(this.status<300)); +},processScripts:function(A){if(this.options.evalResponse||(/(ecma|java)script/).test(this.getHeader("Content-type"))){return $exec(A);}return A.stripScripts(this.options.evalScripts); +},success:function(B,A){this.onSuccess(this.processScripts(B),A);},onSuccess:function(){this.fireEvent("complete",arguments).fireEvent("success",arguments).callChain(); +},failure:function(){this.onFailure();},onFailure:function(){this.fireEvent("complete").fireEvent("failure",this.xhr);},setHeader:function(A,B){this.headers.set(A,B); +return this;},getHeader:function(A){return $try(function(){return this.xhr.getResponseHeader(A);}.bind(this));},check:function(A){if(!this.running){return true; +}switch(this.options.link){case"cancel":this.cancel();return true;case"chain":this.chain(A.bind(this,Array.slice(arguments,1)));return false;}return false; +},send:function(I){if(!this.check(arguments.callee,I)){return this;}this.running=true;var G=$type(I);if(G=="string"||G=="element"){I={data:I};}var D=this.options; +I=$extend({data:D.data,url:D.url,method:D.method},I);var E=I.data,B=I.url,A=I.method;switch($type(E)){case"element":E=$(E).toQueryString();break;case"object":case"hash":E=Hash.toQueryString(E); +}if(this.options.format){var H="format="+this.options.format;E=(E)?H+"&"+E:H;}if(this.options.emulation&&["put","delete"].contains(A)){var F="_method="+A; +E=(E)?F+"&"+E:F;A="post";}if(this.options.urlEncoded&&A=="post"){var C=(this.options.encoding)?"; charset="+this.options.encoding:"";this.headers.set("Content-type","application/x-www-form-urlencoded"+C); +}if(E&&A=="get"){B=B+(B.contains("?")?"&":"?")+E;E=null;}this.xhr.open(A.toUpperCase(),B,this.options.async);this.xhr.onreadystatechange=this.onStateChange.bind(this); +this.headers.each(function(K,J){if(!$try(function(){this.xhr.setRequestHeader(J,K);return true;}.bind(this))){this.fireEvent("exception",[J,K]);}},this); +this.fireEvent("request");this.xhr.send(E);if(!this.options.async){this.onStateChange();}return this;},cancel:function(){if(!this.running){return this; +}this.running=false;this.xhr.abort();this.xhr.onreadystatechange=$empty;this.xhr=new Browser.Request();this.fireEvent("cancel");return this;}});(function(){var A={}; +["get","post","put","delete","GET","POST","PUT","DELETE"].each(function(B){A[B]=function(){var C=Array.link(arguments,{url:String.type,data:$defined}); +return this.send($extend(C,{method:B.toLowerCase()}));};});Request.implement(A);})();Element.Properties.send={set:function(A){var B=this.retrieve("send"); +if(B){B.cancel();}return this.eliminate("send").store("send:options",$extend({data:this,link:"cancel",method:this.get("method")||"post",url:this.get("action")},A)); +},get:function(A){if(A||!this.retrieve("send")){if(A||!this.retrieve("send:options")){this.set("send",A);}this.store("send",new Request(this.retrieve("send:options"))); +}return this.retrieve("send");}};Element.implement({send:function(A){var B=this.get("send");B.send({data:this,url:A||B.options.url});return this;}});Request.HTML=new Class({Extends:Request,options:{update:false,evalScripts:true,filter:false},processHTML:function(C){var B=C.match(/<body[^>]*>([\s\S]*?)<\/body>/i); +C=(B)?B[1]:C;var A=new Element("div");return $try(function(){var D="<root>"+C+"</root>",G;if(Browser.Engine.trident){G=new ActiveXObject("Microsoft.XMLDOM"); +G.async=false;G.loadXML(D);}else{G=new DOMParser().parseFromString(D,"text/xml");}D=G.getElementsByTagName("root")[0];for(var F=0,E=D.childNodes.length; +F<E;F++){var H=Element.clone(D.childNodes[F],true,true);if(H){A.grab(H);}}return A;})||A.set("html",C);},success:function(D){var C=this.options,B=this.response; +B.html=D.stripScripts(function(E){B.javascript=E;});var A=this.processHTML(B.html);B.tree=A.childNodes;B.elements=A.getElements("*");if(C.filter){B.tree=B.elements.filter(C.filter); +}if(C.update){$(C.update).empty().adopt(B.tree);}if(C.evalScripts){$exec(B.javascript);}this.onSuccess(B.tree,B.elements,B.html,B.javascript);}});Element.Properties.load={set:function(A){var B=this.retrieve("load"); +if(B){send.cancel();}return this.eliminate("load").store("load:options",$extend({data:this,link:"cancel",update:this,method:"get"},A));},get:function(A){if(A||!this.retrieve("load")){if(A||!this.retrieve("load:options")){this.set("load",A); +}this.store("load",new Request.HTML(this.retrieve("load:options")));}return this.retrieve("load");}};Element.implement({load:function(){this.get("load").send(Array.link(arguments,{data:Object.type,url:String.type})); +return this;}});Request.JSON=new Class({Extends:Request,options:{secure:true},initialize:function(A){this.parent(A);this.headers.extend({Accept:"application/json","X-Request":"JSON"}); +},success:function(A){this.response.json=JSON.decode(A,this.options.secure);this.onSuccess(this.response.json,A);}}); \ No newline at end of file diff --git a/wp-content/themes/vanilla/js/pullquotes.js b/wp-content/themes/vanilla/js/pullquotes.js new file mode 100755 index 000000000..9252046d8 --- /dev/null +++ b/wp-content/themes/vanilla/js/pullquotes.js @@ -0,0 +1 @@ +eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('b $j=c.d();$j(e).f(6(){$j(\'g.5\').h(6(){0=$j(1).0();0=0.i(/\\((.*)\\)/k," ");l($j(1).m(".7"))$j(1).8().9(\'<2 a="5 7"><3>&4;\'+0+\'&4;</3></2>\');n $j(1).8().9(\'<2 a="5 o"><3>&4;\'+0+\'&4;</3></2>\')})});',25,25,'text|this|blockquote|p|quot|pullquote|function|alignright|parent|before|class|var|jQuery|noConflict|document|ready|span|each|replace||gi|if|is|else|alignleft'.split('|'),0,{})) \ No newline at end of file diff --git a/wp-content/themes/vanilla/links.php b/wp-content/themes/vanilla/links.php new file mode 100644 index 000000000..c68f2c4a4 --- /dev/null +++ b/wp-content/themes/vanilla/links.php @@ -0,0 +1,20 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/page.php b/wp-content/themes/vanilla/page.php new file mode 100644 index 000000000..56426ad93 --- /dev/null +++ b/wp-content/themes/vanilla/page.php @@ -0,0 +1,22 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +cfct_page(); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/plugins/README.txt b/wp-content/themes/vanilla/plugins/README.txt new file mode 100644 index 000000000..55f324566 --- /dev/null +++ b/wp-content/themes/vanilla/plugins/README.txt @@ -0,0 +1,19 @@ +## plugins/ + +### Overview + +Carrington supports plugins in the same conceptual manner as WordPress. Carrington includes several hooks and filters so you can customize/override Carrington's default behavior. + +Any .php files placed in this directory will be auto-loaded and processed by Carrington. + +This is the recommended way to interact with the hooks and filters provided by Carrington. + + +### Supported Override Filenames + +- (none) + + +### File Descriptions + +No files are included here by default, add files to deliver custom functionality as needed. \ No newline at end of file diff --git a/wp-content/themes/vanilla/search.php b/wp-content/themes/vanilla/search.php new file mode 100644 index 000000000..7ac452cea --- /dev/null +++ b/wp-content/themes/vanilla/search.php @@ -0,0 +1,22 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +cfct_posts(); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/single.php b/wp-content/themes/vanilla/single.php new file mode 100644 index 000000000..90317acb2 --- /dev/null +++ b/wp-content/themes/vanilla/single.php @@ -0,0 +1,22 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +cfct_single(); + +?> \ No newline at end of file diff --git a/wp-content/themes/vanilla/style.css b/wp-content/themes/vanilla/style.css new file mode 100644 index 000000000..50596f89a --- /dev/null +++ b/wp-content/themes/vanilla/style.css @@ -0,0 +1,59 @@ +/* + +Theme Name: Vanilla Theme +Theme URI: http://vanillatheme.com/ +Description: The great, the only... Vanilla theme! +Version: 1.0 +Author: Alister Cameron, Australis Media Pty Ltd +Author URI: http://www.australismedia.com +Tags: widgets, customizable, 3-column, framework, semantic, white, red, gray, carrington +Template: vanilla +*/ + +/* Reset browser defaults */ +@import url('http://yui.yahooapis.com/3.0.0pr1/build/cssreset/reset.css'); +@import url('http://yui.yahooapis.com/3.0.0pr1/build/cssfonts/fonts.css'); +@import url('http://yui.yahooapis.com/3.0.0pr1/build/cssgrids/grids.css'); + +@import url(css/carrington-blog.css); + +/* including for compatibility */ + +.alignleft { + float:left; + margin-right:1em; + margin-bottom:1em; +} +.alignright { + float:right; + margin-left:1em; + margin-bottom:1em; +} +.aligncenter { + display: block; + margin-left: auto; + margin-right: auto; +} +.wp-caption { + border: 1px solid #ddd; + text-align: center; + background-color: #f3f3f3; + padding-top: 4px; + margin: 10px; + /* optional rounded corners for browsers that support it */ + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} +.wp-caption img { + margin: 0; + padding: 0; + border: 0 none; +} +.wp-caption p.wp-caption-text { + font-size: 11px; + line-height: 17px; + padding: 0 4px 5px; + margin: 0; +} \ No newline at end of file diff --git a/wp-content/themes/vanilla/swf/FlowPlayerDark.swf b/wp-content/themes/vanilla/swf/FlowPlayerDark.swf new file mode 100755 index 0000000000000000000000000000000000000000..9a43c6b08aa400e0b688fcd820c7ba3251666728 GIT binary patch literal 120893 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 azI&wk;NSJ!J8yI6{`-6IKfmFk;9dY4m!5C{ literal 0 HcmV?d00001 diff --git a/wp-content/themes/vanilla/swf/single.php b/wp-content/themes/vanilla/swf/single.php new file mode 100644 index 000000000..90317acb2 --- /dev/null +++ b/wp-content/themes/vanilla/swf/single.php @@ -0,0 +1,22 @@ +<?php + +// This file is part of the Carrington Theme for WordPress +// http://carringtontheme.com +// +// Copyright (c) 2008 Crowd Favorite, Ltd. All rights reserved. +// http://crowdfavorite.com +// +// Released under the GPL license +// http://www.opensource.org/licenses/gpl-license.php +// +// ********************************************************************** +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// ********************************************************************** + +if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) { die(); } + +cfct_single(); + +?> \ No newline at end of file -- GitLab