function parse($html = null, $blockName = 'document', $blockParams = null) { $blockParams = (array) $blockParams; $blockParams += array('fields' => $this->_getVar('fields'), 'domId' => Sl::uniqid()); if (!is_array($blockParams['fields'])) { return; } $form = $this->_getHelper('SlForm'); $fields = array(); $form->create('CmsContactForm'); foreach ($blockParams['fields'] as $f => $o) { $fields[] = array('inputName' => $f, 'inputOptions' => $o, 'inputHtml' => $form->input($f, $o)); } if ($fields) { $this->blocks['loop']->params[0] = $fields; $this->vars['domId'] = $blockParams['domId']; $this->vars['actionUrl'] = Sl::url(); return parent::parse($html, $blockName); } }
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; }
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); }
public static function parseLayout($vars = array(), $options = array()) { $options += array('headAndFooter' => true, 'generatedIn' => Configure::read()); $_this = self::getInstance(); $vars += Sl::getInstance()->view->viewVars; $vars += array('lang' => SlConfigure::read('I18n.lang')); if ($options['headAndFooter']) { $vars['head'] = Sl::uniqid(); $vars['footer'] = Sl::uniqid(); } $_this->layout->blocks = array('body' => self::$body); if ($options['generatedIn']) { $_this->layout->blocks['generatedIn'] = new GeneratedInParser(); } $_this->layout->vars = $vars; $stack = PhemeParser::$parseCallStack; PhemeParser::$parseCallStack = array(self::$_core); $skin = $_this->layout->parse($_this->layoutSkin); PhemeParser::$parseCallStack = $stack; if ($options['headAndFooter']) { $skin = r(array($vars['head'], $vars['footer']), array(Sl::getInstance()->view->element('head', $vars), Sl::getInstance()->view->element('footer')), $skin); } $_this->layout->blocks['body'] = null; $_this->layout->vars = array(); return $skin; }
/** * Uploads the files * * @param $model Object * @param $data Array Optional Containing data to be saved * @return array * @author Vinicius Mendes */ function _uploadFile(&$model, $data = null) { if (!isset($data) || !is_array($data)) { $data =& $model->data; } foreach ($this->__fields[$model->alias] as $fieldName => $options) { // Patched by sandu@lungu.info on 08/28/2010: Added support for random filenames $data[$model->alias]['_uniqid'] = Sl::uniqid(); // end of patch // Take care of removal flagged field // However, this seems to be kind of code duplicating, see line ~711 if (!empty($data[$model->alias][$fieldName]['remove'])) { $this->_markForDeletion($model, $fieldName, $data, $options['default']); $data = $this->_nullifyDataFields($model, $fieldName, $data, $options); $result = array('return' => true, 'data' => $data); continue; } // If no file was selected we do not need to proceed if (empty($data[$model->alias][$fieldName]['name'])) { unset($data[$model->alias][$fieldName]); $result = array('return' => true, 'data' => $data); continue; } $pos = strrpos($data[$model->alias][$fieldName]['type'], '/'); $sub = substr($data[$model->alias][$fieldName]['type'], $pos + 1); list(, $ext) = $this->_splitFilenameAndExt($data[$model->alias][$fieldName]['name']); // Put in a subfolder if the user wishes it if (isset($options['folderAsField']) && !empty($options['folderAsField']) && is_string($options['folderAsField'])) { $options['dir'] = $options['dir'] . DS . $data[$model->alias][$options['folderAsField']]; $this->__fields[$model->alias][$fieldName]['dir'] = $options['dir']; } // Check whether or not the behavior is in useTable mode if ($options['useTable'] == false) { $this->_includeDefaultReplacement($options['default']); $this->_fixName($model, $fieldName, false); $saveAs = $options['dir'] . DS . $data[$model->alias][$options['uploadName']] . '.' . $sub; // Attempt to move uploaded file $copyResults = $this->_copyFileFromTemp($data[$model->alias][$fieldName]['tmp_name'], $saveAs); if ($copyResults !== true) { $result = array('return' => false, 'reason' => 'validation', 'extra' => array('field' => $fieldName, 'error' => $copyResults)); continue; } // If the file is an image, try to make the thumbnails if (count($options['thumbsizes']) > 0 && count($options['allowedExt']) > 0 && in_array($data[$model->alias][$fieldName]['type'], $this->_imageTypes)) { $this->_createThumbnails($model, $data, $fieldName, $saveAs, $ext, $options); } $data = $this->_unsetDataFields($model->alias, $fieldName, $model->data, $options); $result = array('return' => true, 'data' => $data); continue; } else { // if the file is marked to be deleted, use the default or set the field to null if (!empty($data[$model->alias][$fieldName]['remove'])) { if ($options['default']) { $data[$model->alias][$fieldName] = $options['default']; } else { $data[$model->alias][$fieldName] = null; } //if the record is already saved in the database, set the existing file to be removed after the save is sucessfull if (!empty($data[$model->alias][$model->primaryKey])) { $this->_setFileToRemove($model, $fieldName); } } // If no file has been upload, then unset the field to avoid overwriting existant file if (!isset($data[$model->alias][$fieldName]) || !is_array($data[$model->alias][$fieldName]) || empty($data[$model->alias][$fieldName]['name'])) { if (!empty($data[$model->alias][$model->primaryKey]) || !$options['default']) { unset($data[$model->alias][$fieldName]); } else { $data[$model->alias][$fieldName] = $options['default']; } } //if the record is already saved in the database, set the existing file to be removed after the save is sucessfull if (!empty($data[$model->alias][$model->primaryKey])) { $this->_setFileToRemove($model, $fieldName); } // save in encrypted folder if specified if ($options['encryptedFolder']) { // setup UUID as a unique folder name $options['dir'] .= DS . String::uuid(); } // Fix the filename, removing bad characters and avoiding from overwriting existing ones if ($options['default'] == true) { $this->_includeDefaultReplacement($options['default']); } $this->_fixName($model, $fieldName); // Also save the original image as uploadName if that option is not empty if (isset($options['uploadName']) && !empty($options['uploadName'])) { $saveAs = $options['dir'] . DS . $data[$model->alias][$options['uploadName']] . '.' . $ext; } else { $saveAs = $options['dir'] . DS . $data[$model->alias][$fieldName]['name']; } // Attempt to move uploaded file $copyResults = $this->_copyFileFromTemp($data[$model->alias][$fieldName]['tmp_name'], $saveAs); if ($copyResults !== true) { $result = array('return' => false, 'reason' => 'validation', 'extra' => array('field' => $fieldName, 'error' => $copyResults)); continue; } // If the file is an image, try to make the thumbnails if (count($options['thumbsizes']) > 0 && count($options['allowedExt']) > 0 && in_array($data[$model->alias][$fieldName]['type'], $this->_imageTypes)) { $this->_createThumbnails($model, $data, $fieldName, $saveAs, $ext, $options); } // Update model data $data[$model->alias][$options['fields']['dir']] = $options['dir']; $data[$model->alias][$options['fields']['mimetype']] = $data[$model->alias][$fieldName]['type']; $data[$model->alias][$options['fields']['filesize']] = $data[$model->alias][$fieldName]['size']; if (isset($options['uploadName']) && !empty($options['uploadName'])) { $data[$model->alias][$fieldName] = $data[$model->alias][$options['uploadName']] . '.' . $ext; } else { $data[$model->alias][$fieldName] = $data[$model->alias][$fieldName]['name']; } $result = array('return' => true, 'data' => $data); continue; } } if (isset($result)) { return $result; } else { return true; } }