Exemple #1
0
 /**
  * Define o conversor de caminhos relativos utilizado pelo sistema para modificar os caminhos relativos definidos
  * nos arquivos CSS não-minificados.
  *  
  * @access public
  * @param \Numenor\Html\ConversorCaminho $conversor Instância do conversor.
  * @return \Numenor\Html\ControleCss Instância do próprio objeto para encadeamento.
  */
 public function setConversorCaminho(ConversorCaminho $conversor) : self
 {
     // Configura o destino dos arquivos conversor de caminhos relativos para o diretório de output
     // A origem deve ser configurada individualmente para cada arquivo processado
     $conversor->setDestino($this->diretorioOutput);
     $this->conversorCaminho = $conversor;
     return $this;
 }
Exemple #2
0
 /**
  * Processa a lista de arquivos CSS incluídos, alterando-os conforme necessário (minificação, concatenação,
  * etc.) e gerando os snippets de inclusão dos mesmos.
  *
  * @access protected
  */
 protected function minificar()
 {
     // Reseta a lista de arquivos a serem incluídos
     $this->listaArquivosIncluir = [];
     // Adiciona os scripts remotos
     $listaRemoto = $this->gerarListaRemoto($this->listaCss);
     if (count($listaRemoto) > 0) {
         $this->listaArquivosIncluir = $listaRemoto;
     }
     if ($this->comportamentoPadrao === self::COMPORTAMENTO_PADRAO_DEV) {
         // Se está configurado para ter o comportamento padrão de ambiente de desenvolvimento, todos os arquivos
         // não-remotos são processados sem concatenação ou compactação
         $listaConcatCompact = [];
         $listaConcat = [];
         $listaCompact = [];
         $listaNormal = $this->arrayWrapper->mesclar($this->gerarListaNormal($this->listaCss), $this->gerarListaConcatCompact($this->listaCss));
         $listaNormal = $this->arrayWrapper->mesclar($listaNormal, $this->gerarListaConcat($this->listaCss));
         $listaNormal = $this->arrayWrapper->mesclar($listaNormal, $this->gerarListaCompact($this->listaCss));
     } else {
         // Caso contrário, processa normalmente os assets de acordo com seus tipos
         $listaConcatCompact = $this->gerarListaConcatCompact($this->listaCss);
         $listaConcat = $this->gerarListaConcat($this->listaCss);
         $listaCompact = $this->gerarListaCompact($this->listaCss);
         $listaNormal = $this->gerarListaNormal($this->listaCss);
     }
     // Adiciona os arquivos que devem ser minificados e concatenados em um só arquivo
     if (count($listaConcatCompact) > 0) {
         $nomeConcatCompact = $this->gerarNome($listaConcatCompact);
         $minificadorConcatCompact = clone $this->minificadorCss;
         $outputConcatCompact = $this->diretorioOutput . $nomeConcatCompact . '.css';
         if ($this->comportamentoPadrao === self::COMPORTAMENTO_PADRAO_HOMOLOG) {
             file_exists($outputConcatCompact) ? unlink($outputConcatCompact) : null;
         }
         if (!file_exists($outputConcatCompact)) {
             foreach ($listaConcatCompact as $css) {
                 $minificadorConcatCompact->add($css);
             }
             $minificadorConcatCompact->minify($outputConcatCompact);
         }
         $this->listaArquivosIncluir[] = '<link rel="stylesheet" href="' . $this->urlBase . $nomeConcatCompact . '.css">' . \PHP_EOL;
     }
     unset($minificadorConcatCompact);
     // Adiciona os arquivos que devem ser concatenados em um só arquivo, sem minificação
     if (count($listaConcat) > 0) {
         $nomeConcat = $this->gerarNome($listaConcat);
         $outputConcat = $this->diretorioOutput . $nomeConcat . '.css';
         if ($this->comportamentoPadrao === self::COMPORTAMENTO_PADRAO_HOMOLOG) {
             file_exists($outputConcat) ? unlink($outputConcat) : null;
         }
         if (!file_exists($outputConcat)) {
             foreach ($listaConcat as $css) {
                 // Define a origem dos caminhos relativos
                 $this->conversorCaminho->setOrigem(dirname($css));
                 file_put_contents($outputConcat, $this->corrigirCaminhoExterno(file_get_contents($css)) . \PHP_EOL, \FILE_APPEND);
             }
         }
         $this->listaArquivosIncluir[] = '<link rel="stylesheet" href="' . $this->urlBase . $nomeConcat . '.css">' . \PHP_EOL;
     }
     // Adiciona os arquivos que devem ser minificados, sem concatenação
     if (count($listaCompact) > 0) {
         foreach ($listaCompact as $css) {
             $minificadorCompact = clone $this->minificadorCss;
             $nomeCompact = $this->gerarNome([$css]);
             $outputCompact = $this->diretorioOutput . $nomeCompact . '.css';
             if ($this->comportamentoPadrao === self::COMPORTAMENTO_PADRAO_HOMOLOG) {
                 file_exists($outputCompact) ? unlink($outputCompact) : null;
             }
             if (!file_exists($outputCompact)) {
                 $minificadorCompact->add($css);
                 $minificadorCompact->minify($outputCompact);
             }
             $this->listaArquivosIncluir[] = '<link rel="stylesheet" href="' . $this->urlBase . $nomeCompact . '.css">' . \PHP_EOL;
             unset($minificadorCompact);
         }
     }
     // Adiciona os arquivos que devem ser processados sem minificação ou concatenação.
     if (count($listaNormal) > 0) {
         foreach ($listaNormal as $css) {
             if ($css instanceof CssRemoto) {
                 $this->listaArquivosIncluir[] = $css->gerarSnippetInclusao();
             } else {
                 $nomeNormal = $this->gerarNome([$css]);
                 $outputNormal = $this->diretorioOutput . $nomeNormal . '.css';
                 // Define a origem dos caminhos relativos
                 $this->conversorCaminho->setOrigem(dirname($css));
                 if ($this->comportamentoPadrao === self::COMPORTAMENTO_PADRAO_DEV || $this->comportamentoPadrao === self::COMPORTAMENTO_PADRAO_HOMOLOG) {
                     file_exists($outputNormal) ? unlink($outputNormal) : null;
                 }
                 if (!file_exists($outputNormal)) {
                     file_put_contents($outputNormal, $this->corrigirCaminhoExterno(file_get_contents($css)) . \PHP_EOL, \FILE_APPEND);
                 }
                 $this->listaArquivosIncluir[] = '<link rel="stylesheet" href="' . $this->urlBase . $nomeNormal . '.css">' . \PHP_EOL;
             }
         }
     }
 }