function parse($html = null, $blockName = 'document', $blockParams = null)
 {
     // set defaults
     $blockParams = (array) $blockParams;
     $blockParams += array('options' => array('fx' => 'backout'), 'menuClass' => 'lavaLampNoImage', 'domId' => Sl::uniqid(), 'recursive' => 0);
     $this->vars['domId'] = $id = $blockParams['domId'];
     // load & configure lavalamp
     $options = $blockParams['options'] ? json_encode($blockParams['options']) : '';
     SlConfigure::write('Asset.css.lavalamp', 'lavalamp/lavalamp_test');
     SlConfigure::write('Asset.js.footer.lavalamp', 'lavalamp/jquery.lavalamp.min');
     SlConfigure::write("Asset.js.ready.{$id}", "\$('#{$id}').lavaLamp({$options});");
     // custom fx easing effects
     if (!in_array($blockParams['options']['fx'], array('swing', 'linear'))) {
         SlConfigure::write('Asset.js.footer.easing', 'lavalamp/jquery.easing.min');
     }
     unset($blockParams['options']);
     // construct DOM
     self::$parseCallStack[] = $this;
     $html = Pheme::init('Menu')->parse($html, $blockName, $blockParams);
     array_pop(self::$parseCallStack);
     return $html;
 }
Esempio n. 2
0
 function parse($html = null, $blockName = 'document', $blockParams = null)
 {
     // set defaults
     $blockParams = (array) $blockParams;
     $blockParams += array('type' => 'default', 'supersubs' => array('extraWidth' => 1.5), 'options' => array(), 'menuClass' => 'sf-menu', 'domId' => Sl::uniqid());
     $id = $blockParams['domId'];
     $blockParams['menuClass'] .= " {$id}";
     // load & configure supersubs
     if ($blockParams['supersubs']) {
         $ssOptions = json_encode($blockParams['supersubs']);
         $ssKey = "supersubs_{$id}";
         SlConfigure::write("Asset.js.footer.supersubs", 'superfish/js/supersubs');
         SlConfigure::write("Asset.js.ready.{$ssKey}", "\$('ul.{$id}').supersubs({$ssOptions});");
     }
     // load & configure superfish
     $sfOptions = $blockParams['options'] ? json_encode($blockParams['options']) : '';
     $sfKey = "superfish_{$id}";
     SlConfigure::write("Asset.css.superfish", 'superfish/css/superfish');
     SlConfigure::write("Asset.js.footer.superfish", 'superfish/js/superfish');
     SlConfigure::write("Asset.js.ready.{$sfKey}", "\$('ul.{$id}').superfish({$sfOptions});");
     // alternative styles
     switch ($blockParams['type']) {
         case 'vertical':
             $blockParams['menuClass'] .= " sf-vertical";
             SlConfigure::write("Asset.css.superfishVertical", 'superfish/js/superfish-vertical');
             break;
         case 'navbar':
             $blockParams['menuClass'] .= " sf-navbar";
             SlConfigure::write("Asset.css.superfishNavbar", 'superfish/js/superfish-navbar');
             break;
     }
     unset($blockParams['type']);
     unset($blockParams['supersubs']);
     unset($blockParams['options']);
     // construct DOM
     return Pheme::init('Menu')->parse($html, $blockName, $blockParams);
 }
Esempio n. 3
0
 function parse($html = null, $blockName = 'document', $blockParams = null)
 {
     $blockParams = (array) $blockParams;
     $blockParams += array('id' => false, 'skin' => null);
     if ($blockName === 'NodeIndex') {
         $skin = empty(SL::getInstance()->view->params['named']['skin']) ? Inflector::camelize($blockParams['skin']) : Inflector::camelize(SL::getInstance()->view->params['named']['skin']);
         $skin = $skin && Pheme::init("NodeIndex{$skin}") ? "NodeIndex{$skin}" : "NodeIndexDefault";
     } else {
         $skin = $blockName;
     }
     $this->vars['ajaxId'] = SL::uniqid();
     if ($blockParams['id'] === false) {
         $nodes = $this->_getVar('nodes');
     } else {
         if ($blockParams['id'] === 0) {
             $blockParams['id'] = null;
         }
         $nodes = SlNode::find('all', array('conditions' => array('CmsNode.parent_id' => $blockParams['id'], 'CmsNode.visible' => true), 'order' => array('CmsNode.lft' => 'asc'), 'auth' => 'index'));
     }
     if ($nodes) {
         foreach ($nodes as &$node) {
             $node['href'] = h(SlNode::url($node));
         }
         $this->blocks["loop"]->params[0] =& $nodes;
         if ($skin != $blockName) {
             PhemeParser::$parseCallStack[] = Pheme::get($skin);
         }
         PhemeParser::$parseCallStack[] = Pheme::get('NodeView');
         $html = parent::parse($html, $skin);
         array_pop(PhemeParser::$parseCallStack);
         if ($skin != $blockName) {
             array_pop(PhemeParser::$parseCallStack);
         }
         return $html;
     }
 }
Esempio n. 4
0
{loop}
    {if("var":"link")}
        {MenuLink}{$text}{/MenuLink}
    {else}
        {$text}
    {/if}
    {!sep:loop} |
{/loop}
<?php 
Pheme::init('Menu');
Pheme::registerOutputBuffer('SimpleMenu', 'Menu', true);
Esempio n. 5
0
 function parse($html = null, $blockName = 'document', $blockParams = null)
 {
     if ($blockName == 'NodeTeaser' || $blockName == 'NodeBody') {
         $skin = $this->_getVar('CmsNode.model');
         if ($skin) {
             $plugin = $this->_getVar('CmsNode.plugin');
         }
         if (!empty($plugin)) {
             $skin = Pheme::init("{$plugin}.{$blockName}{$skin}") ? "{$blockName}{$skin}" : "{$blockName}Default";
         } else {
             $skin = $skin && Pheme::init("{$blockName}{$skin}") ? "{$blockName}{$skin}" : "{$blockName}Default";
         }
     } else {
         $skin = $blockName;
     }
     if ($skin != $blockName) {
         PhemeParser::$parseCallStack[] = Pheme::get($skin);
         $result = parent::parse($html, $skin);
         array_pop(PhemeParser::$parseCallStack);
         return $result;
     } else {
         return parent::parse($html, $skin);
     }
 }
<?php

/**
 * Contact form node body
 */
Pheme::init('Cms.NodeView');
?>
<div class="sl-node-body">
	{if("var":"CmsNode.body")}
		{var}CmsNode.markdown_body{/var}
	{else}
        {ContactForm/}
	{/if}
</div>
<?php 
Pheme::registerOutputBuffer('NodeBodyCmsContactForm', new NodeBodyParser(), 'NodeView');
// ================================ ContactForm ===================================
?>
<div class="sl-contact-form">
    <form method="post" action="{$actionUrl}" id="{$domId}">
        {loop}
            {$inputHtml}
        {/loop}
        <button>{t}Send{/t}</button>
    </form>
</div>
<?php 
class ContactFormParser extends PhemeParser
{
    function __construct($rules = array(), $options = array())
    {
Esempio n. 7
0
 function parse($html)
 {
     $items = explode(',', parent::parse($html));
     foreach ($items as $item) {
         Pheme::init(trim($item));
     }
 }
Esempio n. 8
0
/**
 * Image ('link' => true, 'id' => null, 'index' => null, 'filter' => 'thumb', 'var' => 'Image',
 *  'width' => null, 'height' => null, 'method' => 'fitCrop', 'gravity' => 'center', 'rel' => 'prettyPhoto')
 *      $href, $align, $title, $src
 *
 * ImageGallery ('link' => true, 'filter' => 'thumb',
 *  'width' => null, 'height' => null, 'method' => null)
 *      loop -> GalleryImage
 *
 * The method param could be 'fitCrop', 'fitInside', 'fitOutside' or any other method of ImageMedium
 *
 * -----------------------------------------------------------------------------
 * The image is a prettyPhoto-friendly div with an IMaGe that may be aligned as desired
 */
Pheme::init('JqueryColorbox');
?>
{JqueryColorbox/}
<div class='sl-image {if("var":"align")}sl-align-{$align}{/if}'>
    {if("var":"href")}
        <a rel="{$rel}" href="{$href}" title="{$title}">
            <img src="{webroot}{$src}{/webroot}" alt="{$title}" />
        </a>
    {else}
        <img src="{$src}" alt="{$title}" />
    {/if}
</div>
<?php 
/**
 * Show an image (from current node or any from DB)
 */
Esempio n. 9
0
<?php

/**
 * Columns
 */
Pheme::init('Blocks', 'SiteElements');
?>
{Column("id":"Left","width":"33.3")/}
{Column("id":"Content","width":"33.4")/}
{Column("id":"Right","width":"33.3")/}
<div class="sl-clear">&nbsp;</div>
<?php 
class ColumnsParser extends PhemeParser
{
    /**
     * Array of blocks, containing: ..., array($parsedHtml, $blockParams), ...
     *
     * @var array
     */
    public $columns = array();
    function parse($html = null, $blockName = 'document', $blockParams = null)
    {
        $blockParams = (array) $blockParams;
        $blockParams += array('showEmpty' => false, 'unit' => '%');
        $html = parent::parse($html, $blockName);
        // span across empty columns
        $lastCol = null;
        $extraWidth = $extraColspan = 0;
        foreach ($this->columns as &$col) {
            $colHtml = trim($col[0]);
            if (empty($colHtml) && !$blockParams['showEmpty']) {