Пример #1
0
 /**
  * @see sfTask
  */
 protected function execute($arguments = array(), $options = array())
 {
     // Inits sfLESS instance for compilation help
     $less = new sfLESS(new sfLESSConfig(false, isset($options['compress']) && $options['compress']));
     // Remove old CSS files if --clean option specified
     if (isset($options['clean']) && $options['clean']) {
         foreach ($less->findCssFiles() as $cssFile) {
             if (!isset($arguments['file']) || false !== strpos($cssFile, $arguments['file'] . '.css')) {
                 unlink($cssFile);
                 $this->logSection('removed', str_replace(sfLESS::getConfig()->getCssPaths(), '', $cssFile));
             }
         }
     }
     // Outputs debug info
     if (isset($options['debug']) && $options['debug']) {
         foreach (sfLESS::getConfig()->getDebugInfo() as $key => $value) {
             $this->logSection('debug', sprintf("%s:\t%s", $key, $value), null, 'INFO');
         }
     }
     // Compiles LESS files
     foreach ($less->findLessFiles() as $lessFile) {
         if (!isset($arguments['file']) || false !== strpos($lessFile, $arguments['file'] . '.less')) {
             if ($less->compile($lessFile)) {
                 if (isset($options['debug']) && $options['debug']) {
                     $this->logSection('compiled', sprintf("%s => %s", sfLESSUtils::getProjectRelativePath($lessFile), sfLESSUtils::getProjectRelativePath($less->getCssPathOfLess($lessFile))), null, 'COMMAND');
                 } else {
                     $this->logSection('compiled', str_replace(sfLESS::getConfig()->getLessPaths(), '', $lessFile), null, 'COMMAND');
                 }
             }
         }
     }
 }
    /**
     * Returns configuration information for LESS compiler
     *
     * @return  string
     */
    protected function getConfigurationContent()
    {
        $debugInfo = '<dl id="less_debug" style="display: none;">';
        $this->config = sfLESS::getConfig();
        foreach ($this->config->getDebugInfo() as $name => $value) {
            $debugInfo .= sprintf('<dt style="float:left; width: 100px"><strong>%s:</strong></dt>
      <dd>%s</dd>', $name, $value);
        }
        $debugInfo .= '</dl>';
        return sprintf(<<<EOF
      <h2>configuration %s</h2>
      %s<br/>
EOF
, $this->getToggler('less_debug', 'Toggle debug info'), $debugInfo);
    }
Пример #3
0
 /**
  * Listens to the less_js.compile event.
  * Update the response by fixing less stylesheet path and adding the less js engine when required
  *
  * @param   sfEvent       $event    An sfEvent instance
  */
 public static function findAndFixContentLinks(sfEvent $event)
 {
     $response = $event->getSubject();
     $hasLess = false;
     foreach ($response->getStylesheets() as $file => $options) {
         if ('.less' === substr($file, -5) && (!isset($options['type']) || 'text/less' !== $options['type'])) {
             $response->removeStylesheet($file);
             if (sfLESS::getConfig()->isClientSideCompilation()) {
                 $response->addStylesheet('/less/' . $file, '', array_merge($options, array('type' => 'text/less')));
                 $hasLess = true;
             } else {
                 $response->addStylesheet('/css/' . substr($file, 0, -5) . '.css', '', $options);
             }
         }
     }
     if ($hasLess) {
         if (sfConfig::get('symfony.asset.javascripts_included', false)) {
             throw new LogicException("The stylesheets must be included before the javascript in your layout");
         } else {
             $response->addJavascript(sfLESS::getConfig()->getLessJsPath());
         }
     }
 }