Your IP : 216.73.216.76


Current Path : /var/www/html/libraries/noboss/src/Form/Field/
Upload File :
Current File : /var/www/html/libraries/noboss/src/Form/Field/NbRequestJsCssField.php

<?php
/**
 * @package			No Boss Extensions
 * @subpackage  	No Boss Library
 * @author			No Boss Technology <contact@nobosstechnology.com>
 * @copyright		Copyright (C) 2026 No Boss Technology. All rights reserved.
 * @license			GNU Lesser General Public License version 3 or later; see <https://www.gnu.org/licenses/lgpl-3.0.en.html>
 */

namespace Noboss\Library\Form\Field;

use Joomla\CMS\Form\FormField;
use Joomla\CMS\Factory;
use Joomla\CMS\Uri\Uri;
use Noboss\Library\Util\NbJsConstantsUtil;

// phpcs:disable PSR1.Files.SideEffects
\defined('_JEXEC') or die;
// phpcs:enable PSR1.Files.SideEffects

class NbRequestJsCssField extends FormField {

    protected function getInput(){
      $app = Factory::getApplication();
      $wa = $app->getDocument()->getWebAssetManager();

      // Caminho do arquivo CSS ou JS desde o diretório raiz do projeto
      $file     = $this->getAttribute('file');
      // Tipo do arquivo que pode ser 'css', 'js' ou 'jquery'
      $fileType   = $this->getAttribute('filetype');
      // Informa se deve ser concatenada a url do site na requisicao ('internal' ou 'external')
      $prefixUrlSite  = $this->getAttribute('prefixurlsite', 'internal');
      // Obtem a versao principal do Joomla que deve ser carregada (se aplica somente qnd nao deve usar em todas versoes)
      $majorVersionJoomlaAccept   = $this->getAttribute('majorVersionJoomlaAccept');

      // Versao principal do Joomla (ex: '3', '4')
      $majorVersionJoomla = substr(JVERSION, 0, 1);

      // Definido que arquivo soh deve ser carregado em uma das versoes (3 ou 4) e essa versao eh diferente da atual
      if(!empty($majorVersionJoomlaAccept) && ($majorVersionJoomlaAccept != $majorVersionJoomla)){
        return;
      }

      if($fileType == 'jquery'){
        $wa->useScript('jquery');

        // Garante que o jquery antigo carregado indevidamente pelo plugin 'System - Web357 Framework' nao seja carregado na pagina
        unset(Factory::getApplication()->getDocument()->_scripts['https://code.jquery.com/jquery-3.6.0.min.js']);

        return;
      }

      // Parametros file não informado
      if (!isset($file) || $file==''){
        return false;
      }

      // Concatenar url do site na requisicao
      if ($prefixUrlSite == 'internal'){
        // Requisicao eh de JS
        if($fileType=='js'){
            // Adiciona constantes padroes do JS
            NbJsConstantsUtil::addConstantsDefault();
        }

        $file = Uri::root() . $file;

        $input = Factory::getApplication()->input;

        // Obtem a versao da extensao
        $extensionsVersion = $input->get('nbExtensionVersion');

        // Adiciona a versao da extensao no final da url para controle de cache
        if(!empty($extensionsVersion)){
            $file .= "?v={$extensionsVersion}";
        }
      }

      // Requiseção CSS
      if ($fileType=='css'){
        $wa->registerAndUseStyle('nobossrequestjscss', $file);
      }
      // Requisição JS
      else if ($fileType=='js'){
        $wa->registerAndUseScript('nobossrequestjscss', $file);
      }
      // Parametro fileType não definido ou definido incorretamente
      else{
        return false;
      }
    }
}