Ejemplo n.º 1
0
 /**
  * @param \Render\APIs\APIv1\CSSAPI $api
  * @param \Render\Unit $unit
  * @param \Render\ModuleInfo $moduleInfo
  * @return string
  */
 protected function htmlHeadUnit($api, $unit, $moduleInfo)
 {
     $parentUnit = $api->getParentUnit($unit);
     // enable animation only if this extension unit is a direct child of default unit
     if (!$api->getModuleInfo($parentUnit)->isExtension()) {
         $selector = '#' . $parentUnit->getId();
         return "<script>window.rz_style_animation_scroll.push('" . $selector . "');</script>";
     } else {
         if ($api->isEditMode()) {
             $i18n = new Translator($api, $moduleInfo);
             $msg = $i18n->translate('error.insideExtensionModule');
             return '<script>alert("' . addslashes($msg) . '");</script>';
         }
     }
 }
Ejemplo n.º 2
0
 /**
  * Compile CSS using absurd.js (wrapped in dyncss.js)
  * @param array $moduleCssData
  * @param $jsonTree
  * @param $formValues
  * @param \Render\APIs\APIv1\CSSAPI $api
  * @return string
  */
 public function compile($moduleCssData, $jsonTree, $formValues, $api)
 {
     $vm = $this->getVM();
     // data
     $vm->jsonTree = $jsonTree;
     $vm->resolutions = $api->getResolutions();
     $vm->isEditMode = $api->isEditMode();
     // functions
     $compiledCss = '';
     $vm->callback = function ($result) use(&$compiledCss) {
         $compiledCss = $result;
     };
     $vm->getFormValues = function ($unitId) use(&$formValues) {
         if (isset($formValues[$unitId])) {
             return $formValues[$unitId];
         }
         return array();
     };
     $vm->getColorById = function ($colorId) use(&$api) {
         $color = $api->getColorById($colorId);
         return $color;
     };
     $vm->getImageUrl = function ($mediaId, $width, $quality) use(&$api) {
         if (!$mediaId || $mediaId === 'null') {
             return null;
         }
         try {
             $mediaItem = $api->getMediaItem($mediaId);
         } catch (\Exception $e) {
             // media item not found
             return null;
         }
         try {
             $img = $mediaItem->getImage();
             if ($width > 0) {
                 $img->resizeScale($width);
             }
             if (is_numeric($quality) && !is_nan($quality)) {
                 $img->setQuality($quality);
             }
             return $img->getUrl();
         } catch (\Exception $e) {
             // use just the url (svg for example)
             return $mediaItem->getUrl();
         }
     };
     $vm->getMediaUrl = function ($mediaId, $download = false) use(&$api) {
         if (!$mediaId || $mediaId === 'null') {
             return null;
         }
         try {
             $mediaItem = $api->getMediaItem($mediaId);
             if ($download) {
                 return $mediaItem->getDownloadUrl();
             } else {
                 return $mediaItem->getUrl();
             }
         } catch (\Exception $e) {
             return null;
         }
     };
     // run module code (only once per file)
     foreach ($moduleCssData as $data) {
         $path = $data['path'];
         if (!isset($this->loadedPlugins[$path])) {
             $this->loadedPlugins[$path] = true;
             $vm->executeString(file_get_contents($path), $path, \V8Js::FLAG_FORCE_ARRAY);
         }
     }
     // run dyncss compiler
     $dynCssBackendJsPath = $this->basePath . 'dyncssBackend.js';
     $vm->executeString(file_get_contents($dynCssBackendJsPath), $dynCssBackendJsPath, \V8Js::FLAG_FORCE_ARRAY);
     return $compiledCss;
 }