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);
 }
Exemple #4
0
 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;
 }
Exemple #5
0
 /**
  * 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;
     }
 }