/ / concrete5 ccm_activateTabBar () non défini lorsqu'il n'est pas connecté - javascript, php, jquery, concrete5

concrete5 ccm_activateTabBar () non défini s'il n'est pas connecté - javascript, php, jquery, concrete5

J'ai une question spécifique, j'ai créé un composant avec des onglets dans concrete5 v8 avec ce tutoriel:

Création de panneaux à onglets en béton5

Cela a très bien fonctionné, tant que je suis connecté à concrete5, dès que je ne suis pas connecté, je reçois l'erreur suivante dans la console, et je ne peux donc pas cliquer sur les différents onglets:

Erreur de référence non capturée: ccm_activateTabBar n'est pas défini à HTMLDocument. (entsorgung-von-abfaellen: 84) à j (jquery.js: 2) sur Object.fireWith [comme resolWith] (jquery.js: 2) sur Function.ready (jquery.js: 2) à HTMLDocument.J (jquery.js: 2)

L'erreur fait référence à cette partie de la ligne 84:

<script type="text/javascript">$(function() { ccm_activateTabBar($("#ccm-tabs-1077221103"));});</script>

qui suit directement après l'élément ul et semble avoir été généré par concrete5.

Je n'ai pas pu trouver quoi que ce soit lié, je suppose que cela a quelque chose à voir avec les actifs manquants qui ne sont chargés que lorsque vous êtes connecté en tant qu'administrateur.

Je ne charge actuellement que les éléments suivants lorsque je ne suis pas connecté:

$u = new User();
if(!$u->isLoggedIn()) {
$this->requireAsset("javascript", "jquery");
$this->requireAsset("jquery/ui");
}

Peut-être que quelqu'un a déjà travaillé avec les onglets Concrete5 et peut m'aider avec cette erreur.

Réponses:

0 pour la réponse № 1

Ass suggéré par Michele Locati, vous devriez probablement utiliser des composants jquery / ui ou bootstrap pour construire votre composant tab.

Mais si vous vous trouvez dans la même situation que moi, une solution très simple consiste à copier les tabs.js de

béton / js / build / core / app / tabs.js

dans votre dossier de thème et incluez-le si l'utilisateur n'est pas connecté.

Par exemple, comme ceci:

<?php
$u = new User();
if(!$u->isLoggedIn()) : ?>
<script src="<?php echo $view->getThemePath(); ?>/js/c5_tabs/tabs.js"></script>
<?php endif; ?>

Le tabs.js fait partie de app.js qui est assez grand, donc je n'ai utilisé que tabs.js, qui ne contient que la fonction nécessaire qui me manquait.

Crédits pour cette information à MrKDilkington du forum Concrete5: