Пример #1
0
 /**
  * Compile LESS to CSS for a specific theme or all themes
  * @param  string  $theme  the specific theme
  */
 public static function compileAll($theme = null)
 {
     $params = CANVAS::getTplParams();
     JFactory::getApplication()->setUserState('current_template_params', $params);
     // get files need to compile
     $files = array();
     $lesspath = CANVAS_TEMPLATE_REL . '/less/';
     $csspath = CANVASPath::getLocalPath('css/', true);
     $fullpath = JPath::clean(JPATH_ROOT . '/' . $lesspath);
     // canvas core plugin files
     $canvasfiles = array('frontend-edit', 'legacy-grid', 'legacy-navigation', 'megamenu', 'off-canvas');
     // all less file in less folders
     $lessFiles = JFolder::files($fullpath, '.less', true, true, array('rtl', 'themes', '.svn', 'CVS', '.DS_Store', '__MACOSX'));
     $lessContent = '';
     $relLessFiles = array();
     foreach ($lessFiles as $file) {
         $lessContent .= JFile::read($file) . "\n";
         $relLessFiles[] = ltrim(str_replace($fullpath, '', $file), '/\\');
     }
     $lessFiles = $relLessFiles;
     // get files imported in this list
     if (preg_match_all('#^\\s*@import\\s+"([^"]*)"#im', $lessContent, $matches)) {
         foreach ($lessFiles as $f) {
             if (!in_array($f, $matches[1])) {
                 $files[] = substr($f, 0, -5);
             }
         }
         //build canvasfiles
         foreach ($canvasfiles as $key => $file) {
             if (in_array($file, $files)) {
                 unset($canvasfiles[$key]);
             }
         }
     }
     // build default
     if (!$theme || $theme == 'default') {
         self::buildVars('', 'ltr');
         // compile all less files in template "less" folder
         foreach ($files as $file) {
             self::compileCss($lesspath . $file . '.less', $csspath . $file . '.css');
         }
         // if the template not overwrite the canvas core, we will compile those missing files
         if (!empty($canvasfiles)) {
             foreach ($canvasfiles as $file) {
                 self::compileCss(CANVAS_REL . '/less/' . $file . '.less', $csspath . $file . '.css');
             }
         }
     }
     // build themes
     if (!$theme) {
         // get themes
         $themes = JFolder::folders(JPATH_ROOT . '/' . $lesspath . '/themes');
     } else {
         $themes = $theme != 'default' ? (array) $theme : array();
     }
     if (is_array($themes)) {
         foreach ($themes as $t) {
             self::buildVars($t, 'ltr');
             // compile
             foreach ($files as $file) {
                 self::compileCss($lesspath . $file . '.less', $csspath . 'themes/' . $t . '/' . $file . '.css');
             }
             if (!empty($canvasfiles)) {
                 foreach ($canvasfiles as $file) {
                     self::compileCss(CANVAS_REL . '/less/' . $file . '.less', $csspath . 'themes/' . $t . '/' . $file . '.css');
                 }
             }
         }
     }
     // compile rtl css
     if ($params && $params->get('build_rtl', 0)) {
         // compile default
         if (!$theme || $theme == 'default') {
             self::buildVars('', 'rtl');
             // compile
             foreach ($files as $file) {
                 self::compileCss($lesspath . $file . '.less', $csspath . 'rtl/' . $file . '.css');
             }
             if (!empty($canvasfiles)) {
                 foreach ($canvasfiles as $file) {
                     self::compileCss(CANVAS_REL . '/less/' . $file . '.less', $csspath . 'rtl/' . $file . '.css');
                 }
             }
         }
         if (is_array($themes)) {
             // rtl for themes
             foreach ($themes as $t) {
                 self::buildVars($t, 'rtl');
                 // compile
                 foreach ($files as $file) {
                     self::compileCss($lesspath . $file . '.less', $csspath . 'rtl/' . $t . '/' . $file . '.css');
                 }
                 if (!empty($canvasfiles)) {
                     foreach ($canvasfiles as $file) {
                         self::compileCss(CANVAS_REL . '/less/' . $file . '.less', $csspath . 'rtl/' . $t . '/' . $file . '.css');
                     }
                 }
             }
         }
     }
 }
Пример #2
0
 public static function purge()
 {
     // Initialize some variables
     $input = JFactory::getApplication()->input;
     $layout = $input->getCmd('layout');
     $template = $input->getCmd('template');
     if (!$layout) {
         return self::error(JText::_('CANVAS_LAYOUT_UNKNOW_ACTION'));
     }
     // delete custom layout
     $layoutfile = CANVASPath::getLocalPath('tpls/' . $layout . '.php');
     $initfile = CANVASPath::getLocalPath('etc/layout/' . $layout . '.ini');
     // delete default layout
     $defaultlayoutfile = CANVAS_TEMPLATE_PATH . '/tpls/' . $layout . '.php';
     $defaultinitfile = CANVAS_TEMPLATE_PATH . '/etc/layout/' . $layout . '.ini';
     if (!@JFile::delete($layoutfile) || !@JFile::delete($defaultlayoutfile) || !@JFile::delete($initfile) || !@JFile::delete($defaultinitfile)) {
         return self::error(JText::_('CANVAS_LAYOUT_DELETE_FAIL'));
     } else {
         return self::response(array('successful' => JText::_('CANVAS_LAYOUT_DELETE_SUCCESSFULLY'), 'layout' => $layout, 'type' => 'delete'));
     }
 }