Added CSS theme seletor (dark/light)
This commit is contained in:
2025-08-20 01:12:59 -05:00
parent 0fa0593d14
commit 886262cdc1
108 changed files with 2245 additions and 1192 deletions

View File

@@ -1,5 +1,6 @@
<?php
/**
* @package Joomla.Site
* @subpackage Templates.Moko-Cassiopeia
@@ -86,3 +87,4 @@ $wa->getAsset('style', 'fontawesome')->setAttribute('rel', 'lazy-stylesheet');
<jdoc:include type="component" />
</body>
</html>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla.Site
* @subpackage Templates.moko-cassiopeia
@@ -20,4 +21,4 @@
echo $js_code;
}
?>
Custom code included here
Custom code included here

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla.Site
* @subpackage Templates.moko-cassiopeia
@@ -228,3 +229,4 @@ $wa->getAsset('style', 'fontawesome')->setAttribute('rel', 'lazy-stylesheet');
<jdoc:include type="modules" name="debug" style="none" />
</body>
</html>

View File

@@ -1,5 +1,6 @@
<?php
/**
* @package Joomla.Site
* @subpackage com_contact
@@ -158,8 +159,6 @@ $htag = $tparams->get('show_page_heading') ? 'h2' : 'h1';
</div>
<div class="col-md-6">
<?php if ($tparams->get('show_email_form') && ($this->item->email_to || $this->item->user_id)) : ?>
<?php echo '<h3>' . Text::_('COM_CONTACT_EMAIL_FORM') . '</h3>'; ?>
<?php echo $this->loadTemplate('form'); ?>
<?php endif; ?>
</div>
@@ -175,4 +174,4 @@ $htag = $tparams->get('show_page_heading') ? 'h2' : 'h1';
</div>
<?php endif; ?>
<?php echo $this->item->event->afterDisplayContent; ?>
</div>
</div>

View File

@@ -0,0 +1,177 @@
<?php
/**
* @package Joomla.Site
* @subpackage com_contact
*
* @copyright (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\Helper\ContentHelper;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Layout\FileLayout;
use Joomla\CMS\Layout\LayoutHelper;
use Joomla\CMS\Plugin\PluginHelper;
use Joomla\CMS\Router\Route;
use Joomla\Component\Contact\Site\Helper\RouteHelper;
$tparams = $this->item->params;
$canDo = ContentHelper::getActions('com_contact', 'category', $this->item->catid);
$canEdit = $canDo->get('core.edit') || ($canDo->get('core.edit.own') && $this->item->created_by === Factory::getUser()->id);
$htag = $tparams->get('show_page_heading') ? 'h2' : 'h1';
?>
<div class="com-contact contact" itemscope itemtype="https://schema.org/Person">
<?php if ($canEdit) : ?>
<div class="icons">
<div class="text-end">
<div>
<?php echo HTMLHelper::_('contacticon.edit', $this->item, $tparams); ?>
</div>
</div>
</div>
<?php endif; ?>
<?php if ($tparams->get('show_page_heading')) : ?>
<h1>
<?php echo $this->escape($tparams->get('page_heading')); ?>
</h1>
<?php endif; ?>
<?php if ($this->item->name && $tparams->get('show_name')) : ?>
<div class="page-header">
<<?php echo $htag; ?>>
<?php if ($this->item->published == 0) : ?>
<span class="badge bg-warning text-light"><?php echo Text::_('JUNPUBLISHED'); ?></span>
<?php endif; ?>
<span class="contact-name" itemprop="name"><?php echo $this->item->name; ?></span>
</<?php echo $htag; ?>>
</div>
<?php endif; ?>
<div class="row gy-4 mb-4">
<div class="col-md-6">
<?php $show_contact_category = $tparams->get('show_contact_category'); ?>
<?php if ($show_contact_category === 'show_no_link') : ?>
<h3>
<span class="contact-category"><?php echo $this->item->category_title; ?></span>
</h3>
<?php elseif ($show_contact_category === 'show_with_link') : ?>
<?php $contactLink = RouteHelper::getCategoryRoute($this->item->catid, $this->item->language); ?>
<h3>
<span class="contact-category"><a href="<?php echo $contactLink; ?>">
<?php echo $this->escape($this->item->category_title); ?></a>
</span>
</h3>
<?php endif; ?>
<?php echo $this->item->event->afterDisplayTitle; ?>
<?php if ($tparams->get('show_contact_list') && count($this->contacts) > 1) : ?>
<form action="#" method="get" name="selectForm" id="selectForm">
<label for="select_contact"><?php echo Text::_('COM_CONTACT_SELECT_CONTACT'); ?></label>
<?php echo HTMLHelper::_(
'select.genericlist',
$this->contacts,
'select_contact',
'class="form-select" onchange="document.location.href = this.value"',
'link',
'name',
$this->item->link
);
?>
</form>
<?php endif; ?>
<?php if ($tparams->get('show_tags', 1) && !empty($this->item->tags->itemTags)) : ?>
<div class="com-contact__tags">
<?php $this->item->tagLayout = new FileLayout('joomla.content.tags'); ?>
<?php echo $this->item->tagLayout->render($this->item->tags->itemTags); ?>
</div>
<?php endif; ?>
<?php echo $this->item->event->beforeDisplayContent; ?>
<?php if ($this->params->get('show_info', 1)) : ?>
<div class="com-contact__container">
<?php echo '<h3>' . Text::_('COM_CONTACT_DETAILS') . '</h3>'; ?>
<?php if ($this->item->image && $tparams->get('show_image')) : ?>
<div class="com-contact__thumbnail thumbnail">
<?php echo LayoutHelper::render(
'joomla.html.image',
[
'src' => $this->item->image,
'alt' => $this->item->name,
'itemprop' => 'image',
]
); ?>
</div>
<?php endif; ?>
<?php if ($this->item->con_position && $tparams->get('show_position')) : ?>
<dl class="com-contact__position contact-position dl-horizontal">
<dt><?php echo Text::_('COM_CONTACT_POSITION'); ?>:</dt>
<dd itemprop="jobTitle">
<?php echo $this->item->con_position; ?>
</dd>
</dl>
<?php endif; ?>
<div class="com-contact__info">
<?php echo $this->loadTemplate('address'); ?>
<?php if ($tparams->get('allow_vcard')) : ?>
<?php echo Text::_('COM_CONTACT_DOWNLOAD_INFORMATION_AS'); ?>
<a href="<?php echo Route::_('index.php?option=com_contact&view=contact&catid=' . $this->item->catslug . '&id=' . $this->item->slug . '&format=vcf'); ?>">
<?php echo Text::_('COM_CONTACT_VCARD'); ?></a>
<?php endif; ?>
</div>
</div>
<?php endif; ?>
<?php if ($tparams->get('show_links')) : ?>
<?php echo $this->loadTemplate('links'); ?>
<?php endif; ?>
<?php if ($tparams->get('show_articles') && $this->item->user_id && $this->item->articles) : ?>
<?php echo '<h3>' . Text::_('JGLOBAL_ARTICLES') . '</h3>'; ?>
<?php echo $this->loadTemplate('articles'); ?>
<?php endif; ?>
<?php if ($tparams->get('show_profile') && $this->item->user_id && PluginHelper::isEnabled('user', 'profile')) : ?>
<?php echo '<h3>' . Text::_('COM_CONTACT_PROFILE') . '</h3>'; ?>
<?php echo $this->loadTemplate('profile'); ?>
<?php endif; ?>
<?php if ($tparams->get('show_user_custom_fields') && $this->contactUser) : ?>
<?php echo $this->loadTemplate('user_custom_fields'); ?>
<?php endif; ?>
</div>
<div class="col-md-6">
<?php if ($tparams->get('show_email_form') && ($this->item->email_to || $this->item->user_id)) : ?>
<?php echo $this->loadTemplate('form'); ?>
<?php endif; ?>
</div>
</div>
<?php if ($this->item->misc && $tparams->get('show_misc')) : ?>
<?php echo '<h3>' . Text::_('COM_CONTACT_OTHER_INFORMATION') . '</h3>'; ?>
<div class="com-contact__miscinfo contact-miscinfo">
<div class="contact-misc">
<?php echo $this->item->misc; ?>
</div>
</div>
<?php endif; ?>
<?php echo $this->item->event->afterDisplayContent; ?>
</div>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla.Site
* @subpackage Templates.moko-cassiopeia
@@ -154,3 +155,4 @@ $isExpired = !is_null($this->item->publish_down) && $this->item->publish
<?php // Content is generated by content plugin event "onContentAfterDisplay" ?>
<?php echo $this->item->event->afterDisplayContent; ?>
</div>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla.Site
* @subpackage Templates.moko-cassiopeia
@@ -156,3 +157,4 @@ $isExpired = !is_null($this->item->publish_down) && $this->item->publish
<?php // Content is generated by content plugin event "onContentAfterDisplay" ?>
<?php echo $this->item->event->afterDisplayContent; ?>
</div>

View File

@@ -1,5 +1,6 @@
<?php
/**
* @package Joomla.Site
* @subpackage com_content
@@ -29,3 +30,4 @@ $wa->usePreset('com_categories.shared-categories-accordion');
echo $this->loadTemplate('items');
?>
</div>

View File

@@ -1,5 +1,6 @@
<?php
/**
* @package Joomla.Site
* @subpackage com_content
@@ -73,3 +74,4 @@ if ($this->maxLevelcat != 0 && count($this->items[$this->parent->id]) > 0) :
<?php endforeach; ?>
</div>
<?php endif; ?>

View File

@@ -1,5 +1,6 @@
<?php
/**
* @package Joomla.Site
* @subpackage com_content
@@ -139,3 +140,4 @@ $htag = $this->params->get('show_page_heading') ? 'h2' : 'h1';
</div>
<?php endif; ?>
</div>

View File

@@ -1,5 +1,6 @@
<?php
/**
* @package Joomla.Site
* @subpackage com_content
@@ -82,3 +83,4 @@ if ($this->maxLevel != 0 && count($this->children[$this->category->id]) > 0) : ?
<?php endforeach; ?>
<?php endif;

View File

@@ -1,5 +1,6 @@
<?php
/**
* @package Joomla.Site
* @subpackage com_content
@@ -98,3 +99,4 @@ $isUnpublished = ($this->item->state == ContentComponent::CONDITION_UNPUBLISHED
</div>
</section>

View File

@@ -1,5 +1,6 @@
<?php
/**
* @package Joomla.Site
* @subpackage com_content
@@ -23,3 +24,4 @@ use Joomla\Component\Content\Site\Helper\RouteHelper;
</li>
<?php endforeach; ?>
</ol>

View File

@@ -1,5 +1,6 @@
<?php
/**
* @package Joomla.Site
* @subpackage com_content
@@ -21,3 +22,4 @@ echo LayoutHelper::render('joomla.content.category_default', $this);
?>
</div>

View File

@@ -1,5 +1,6 @@
<?php
/**
* @package Joomla.Site
* @subpackage com_content
@@ -345,3 +346,4 @@ $currentDate = Factory::getDate()->format('Y-m-d H:i:s');
<input type="hidden" name="task" value="">
</div>
</form>

View File

@@ -1,5 +1,6 @@
<?php
/**
* @package Joomla.Site
* @subpackage com_content
@@ -81,3 +82,4 @@ $groups = $user->getAuthorisedViewLevels();
<?php endif; ?>
<?php endforeach; ?>
<?php endif; ?>

View File

@@ -1,5 +1,6 @@
<?php
/**
* @package Joomla.Site
* @subpackage com_content
@@ -71,3 +72,4 @@ defined('_JEXEC') or die;
<?php endif; ?>
</div>

View File

@@ -1,5 +1,6 @@
<?php
/**
* @package Joomla.Site
* @subpackage com_content
@@ -117,3 +118,4 @@ $isUnpublished = $this->item->state == ContentComponent::CONDITION_UNPUBLISH
<?php // Content is generated by content plugin event "onContentAfterDisplay" ?>
<?php echo $this->item->event->afterDisplayContent; ?>

View File

@@ -1,5 +1,6 @@
<?php
/**
* @package Joomla.Site
* @subpackage com_content
@@ -22,3 +23,4 @@ use Joomla\Component\Content\Site\Helper\RouteHelper;
</li>
<?php endforeach; ?>
</ol>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package AkeebaEngage
* @copyright Copyright (c)2020-2025 Nicholas K. Dionysopoulos / Akeeba Ltd
@@ -74,4 +75,4 @@ $cParams = ComponentHelper::getParams('com_engage');
</p>
</div>
<?php endif; ?>
</section>
</section>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package AkeebaEngage
* @copyright Copyright (c)2020-2025 Nicholas K. Dionysopoulos / Akeeba Ltd
@@ -86,4 +87,4 @@ HTMLHelper::_('behavior.formvalidator');
<?= $this->loadPosition('engage-after-reply'); ?>
</div>
</form>
</form>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package AkeebaEngage
* @copyright Copyright (c)2020-2025 Nicholas K. Dionysopoulos / Akeeba Ltd
@@ -282,3 +283,4 @@ $bsCommentStateClass = ($comment->enabled == 1) ? 'secondary' : (($comment->ena
</li>
<?php endif; ?>
<?php endfor; ?>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package AkeebaEngage
* @copyright Copyright (c)2020-2025 Nicholas K. Dionysopoulos / Akeeba Ltd
@@ -41,4 +42,4 @@ if (empty($moduleContent) && empty($positionContent))
<?= $moduleContent ?>
<?= $positionContent ?>
</footer>
</footer>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -191,3 +192,4 @@ for ($i = 0 , $n = count($items) ; $i < $n ; $i++)
</div>
<?php
}

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -31,3 +32,4 @@ $message = "alert(Joomla.JText._('JLIB_HTML_PLEASE_MAKE_A_SELECTION_FROM_THE_LIS
<span class="icon-checkbox-partial" aria-hidden="true"></span>
<?php echo $title; ?>
</button>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -20,3 +21,4 @@ defined('_JEXEC') or die;
<span class="icon-checkbox-partial" aria-hidden="true"></span>
<?php echo $title; ?>
</button>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -52,3 +53,4 @@ for ($i = 0 , $n = count($items) ; $i < $n ; $i++)
</div>
<?php
}

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -111,9 +112,9 @@ foreach ($items as $item)
if ($item->thumb)
{
?>
<a href="<?php echo $url; ?>" title="<?php echo $item->title; ?>">
<a href="<?php echo $url; ?>" title="<?php echo $item->title; ?>">
<img src="<?php echo $imgSrc; ?>" class="osm-thumb-left <?php echo $imgClass; ?>" />
</a>
</a>
<?php
}
@@ -215,4 +216,4 @@ foreach ($items as $item)
}
}
?>
</div>
</div>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -227,3 +228,4 @@ for ($i = 0 , $n = count($items) ; $i < $n ; $i++)
</div>
<?php
}

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -23,3 +24,4 @@ foreach ($rowMembers as $rowMember)
}
echo implode("\r\n", $names);

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -32,3 +33,4 @@ defined('_JEXEC') or die;
document.payment_form.submit();
</script>
</form>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -41,4 +42,4 @@ foreach ($form->getFieldset('basic') as $field)
</td>
</tr>
<?php
}
}

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -125,3 +126,4 @@ $symbol = $item->currency_symbol ?: $item->currency;
}
?>
</table>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -66,3 +67,4 @@ else
}

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -233,4 +234,4 @@ if ($i % $numberColumns != 0)
.osm-pricing-table-circle .osm-plan:hover .osm-plan-price {
background-color: <?php echo $recommendedPlanBackgroundColor; ?>!important;
}
</style>
</style>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -229,3 +230,4 @@ if ($i % $numberColumns != 0)
{
echo '</div>' ;
}

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -257,3 +258,4 @@ if ($i % $numberColumns != 0)
{
echo '</div>' ;
}

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -125,3 +126,4 @@ use Joomla\CMS\Language\Text;
<div class="form-actions">
<input type="submit" class="<?php echo $this->bootstrapHelper->getClassMapping('btn btn-primary'); ?>" value="<?php echo Text::_('OSM_PROCESS_RENEW'); ?>"/>
</div>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -27,3 +28,4 @@ if (isset($introText))
<?php echo $msg; ?>
</div>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -172,3 +173,4 @@ $hiddenPhoneClass = $bootstrapHelper->getClassMapping('hidden-phone');
?>
</table>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -101,4 +102,4 @@ $i = 1;
}
?>
</tbody>
</table>
</table>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -44,3 +45,4 @@ use Joomla\CMS\Language\Text;
}
?>
</ul>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -137,3 +138,4 @@ OSMembershipHelperHtml::addJSStrings($keys);
<input type="hidden" id="recurring" name="recurring" value="<?php echo (int) $this->item->recurring_subscription;?>" />
</form>
</div>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -169,3 +170,4 @@ if ($this->item->id && !$this->item->recurring_subscription)
<textarea name="conversion_tracking_code" class="form-control input-large" rows="10"><?php echo $this->item->conversion_tracking_code;?></textarea>
</div>
</div>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -162,3 +163,4 @@ if ((int)$this->item->expired_date)
<?php echo $editor->display('description', $this->item->description, '100%', '250', '75', '10') ; ?>
</div>
</div>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -41,3 +42,4 @@ $controlsClass = $bootstrapHelper->getClassMapping('controls');
<?php echo $this->lists['number_members_field']; ?>
</div>
</div>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -42,3 +43,4 @@ $controlsClass = $bootstrapHelper->getClassMapping('controls');
<?php echo $editor->display('card_layout', $this->item->card_layout, '100%', '550', '75', '8') ;?>
</div>
</div>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -190,4 +191,4 @@ $controlsClass = $bootstrapHelper->getClassMapping('controls');
<div class="<?php echo $controlsClass; ?>">
<?php echo $editor->display('invoice_layout', $this->item->invoice_layout, '100%', '250', '75', '8'); ?>
</div>
</div>
</div>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -52,4 +53,4 @@ $controlsClass = $bootstrapHelper->getClassMapping('controls');
<textarea rows="5" cols="30" class="input-xxlarge form-control"
name="meta_description"><?php echo $this->item->meta_description; ?></textarea>
</div>
</div>
</div>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -77,3 +78,4 @@ $controlsClass = $bootstrapHelper->getClassMapping('controls');
}
?>
</fieldset>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -71,3 +72,4 @@ $controlsClass = $bootstrapHelper->getClassMapping('controls');
<?php echo $editor->display('third_reminder_email_body', $this->item->third_reminder_email_body, '100%', '250', '75', '8'); ?>
</div>
</div>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -58,3 +59,4 @@ $controlsClass = $bootstrapHelper->getClassMapping('controls');
}
?>
</fieldset>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -30,3 +31,4 @@ foreach ($form->getFieldset() as $field)
{
echo $field->input;
}

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -30,3 +31,4 @@ foreach ($form->getFieldset() as $field)
{
echo $field->input;
}

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -219,3 +220,4 @@ foreach ($this->languages as $language)
}
echo HTMLHelper::_('bootstrap.endTabSet');

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -37,3 +38,4 @@ foreach ($form->getFieldset() as $field)
{
echo $field->input;
}

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -234,4 +235,4 @@ $config = OSMembershipHelper::getConfig();
<input type="hidden" name="filter_order_Dir" value="<?php echo $this->state->filter_order_Dir; ?>" />
<?php echo HTMLHelper::_('form.token'); ?>
</form>
</div>
</div>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -35,3 +36,4 @@ $pullLeftClass = $this->bootstrapHelper->getClassMapping('pull-left');
echo $this->pagination->getLimitBox();
?>
</div>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -34,3 +35,4 @@ $pullLeftClass = $this->bootstrapHelper->getClassMapping('pull-left');
echo $this->pagination->getLimitBox();
?>
</div>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -172,4 +173,4 @@ else
</ul>
</div>
</div>
</div>
</div>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -41,3 +42,4 @@ use Joomla\CMS\Router\Route;
}
?>
</div>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -80,4 +81,4 @@ use Joomla\CMS\Language\Text;
<?php
}
?>
</div>
</div>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -79,4 +80,4 @@ use Joomla\CMS\Language\Text;
<?php
}
?>
</div>
</div>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -71,4 +72,4 @@ $categoryId = $this->category ? $this->category->id : 0;
echo OSMembershipHelperHtml::loadCommonLayout('common/tmpl/pricingtable_plans.php', ['items' => $this->items, 'input' => $this->input, 'config' => $this->config, 'Itemid' => $this->Itemid, 'categoryId' => $this->categoryId, 'bootstrapHelper' => $this->bootstrapHelper, 'params' => $this->params]);
}
?>
</div>
</div>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -71,4 +72,4 @@ $categoryId = $this->category ? $this->category->id : 0;
echo OSMembershipHelperHtml::loadCommonLayout('common/tmpl/pricingtable_circle_plans.php', ['items' => $this->items, 'input' => $this->input, 'config' => $this->config, 'Itemid' => $this->Itemid, 'categoryId' => $this->categoryId, 'bootstrapHelper' => $this->bootstrapHelper, 'params' => $this->params]);
}
?>
</div>
</div>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla
* @subpackage Membership Pro
@@ -71,4 +72,4 @@ $categoryId = $this->category ? $this->category->id : 0;
echo OSMembershipHelperHtml::loadCommonLayout('common/tmpl/pricingtable_flat_plans.php', ['items' => $this->items, 'input' => $this->input, 'config' => $this->config, 'Itemid' => $this->Itemid, 'categoryId' => $this->categoryId, 'bootstrapHelper' => $this->bootstrapHelper, 'params' => $this->params]);
}
?>
</div>
</div>

View File

@@ -1,5 +1,6 @@
<?php
/**
* @package Joomla.Site
* @subpackage Templates.Moko-Cassiopeia
@@ -57,3 +58,4 @@ $header = '<' . $headerTag . ' ' . ArrayHelper::toString($headerAttribs) . '>' .
<?php echo $module->content; ?>
</div>
</<?php echo $moduleTag; ?>>

View File

@@ -1,5 +1,6 @@
<?php
/**
* @package Joomla.Site
* @subpackage Layout
@@ -84,3 +85,4 @@ $header = '<' . $headerTag . ' ' . ArrayHelper::toString($headerAttribs) . '>' .
<?php endif; ?>
<?php echo $module->content; ?>
</<?php echo $moduleTag; ?>>

View File

@@ -1,5 +1,6 @@
<?php
/**
* @package Joomla.Site
* @subpackage Templates.Moko-Cassiopeia
@@ -51,3 +52,4 @@ $header = '<' . $headerTag . ' ' . ArrayHelper::toString($headerAttribs) . '>' .
<?php endif; ?>
<?php echo $module->content; ?>
</<?php echo $moduleTag; ?>>

View File

@@ -1,5 +1,6 @@
<?php
/**
* @package Joomla.Site
* @subpackage mod_custom
@@ -30,3 +31,4 @@ if ($params->get('backgroundimage')) {
<?php echo $module->content; ?>
</div>
</div>

View File

@@ -1,5 +1,6 @@
<?php
/**
* @package Joomla.Site
* @subpackage mod_custom
@@ -30,3 +31,4 @@ if ($params->get('backgroundimage')) {
<?php echo $module->content; ?>
</div>
</div>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Tabaoca.Component.Gabble.Site
* @subpackage mod_gabble
@@ -33,7 +34,7 @@ if ( !$currentuser->get("id")){
</div>
</div>
</div>';
return;
}
@@ -41,7 +42,7 @@ if ( !$currentuser->get("id")){
$input = $app->input;
if ($input->get('option') == 'com_gabble') {
echo '<div class="content">
<div id="mod_gabble">
<div id="mod_lists_gabble">
@@ -50,9 +51,9 @@ if ($input->get('option') == 'com_gabble') {
</div>
</div>
</div>';
return;
}
$document->addScript('media/com_gabble/js/gabble_com.js');
@@ -60,16 +61,16 @@ $document->addScript('media/com_gabble/js/gabble_com.js');
?>
<div class="content">
<div id="mod_gabble">
<div id="list_windows" class="list-windows"></div>
<div id="main_windows" class="main-windows"></div>
<div id="lists_gabble">
<div id="select_list" class="row">
<div class="col-md-4 notifications" title="<?php echo Text::_('COM_GABBLE_CHATS'); ?>">
<button id="list_chats" class="button_list" title="Chats" onclick="select_list(1);"><i class="icon-comments-2"></i></button>
<div id="n_notifications" class="n-notifications" title="Users" hidden=""></div>
@@ -80,9 +81,9 @@ $document->addScript('media/com_gabble/js/gabble_com.js');
<div class="col-md-4" title="<?php echo Text::_('COM_GABBLE_GABBLE_CHAT'); ?>">
<button id="btn_gabble" class="button_list" onclick="window.location.href = &quot;<?php echo Uri::root().'index.php?option=com_gabble&view=gabble'; ?>&quot;;"><i class="icon-expand-2"></i></button>
</div>
</div>
<div id="options_list" hidden="">
<select id="users_list" name="users_list" onchange="select_list(2);">
<option value="0"><?php echo Text::_('COM_GABBLE_USERS_ON'); ?></option>
@@ -139,9 +140,9 @@ $document->addScript('media/com_gabble/js/gabble_com.js');
<div id="openai_btn" title="OpenAi GPT" onclick="open_user(0); event.stopPropagation();">
<img src="<?php echo Uri::root() . "media/com_gabble/images/logo_openai.png"; ?>" alt="OpenAI GPT">
</div>
</div>
</div>
<input type="hidden" id="gabble_type" value="mod">
@@ -151,8 +152,9 @@ $document->addScript('media/com_gabble/js/gabble_com.js');
<input type="hidden" id="openai_gpt" value="<?php echo $config->get('openai_gpt'); ?>">
<input type="hidden" id="openai_gpt_name" value="<?php echo $config->get('openai_gpt_name'); ?>">
</div>
<p style="text-align:right;" ><?php echo Text::_('COM_GABBLE_POWERED');?> <a href="https://tabaoca.org">Tabaoca</a></p>

View File

@@ -1,5 +1,6 @@
<?php
/**
* @package Joomla.Site
* @subpackage mod_menu
@@ -24,3 +25,4 @@ HTMLHelper::_('bootstrap.collapse');
<?php require __DIR__ . '/dropdown-metismenu.php'; ?>
</div>
</nav>

View File

@@ -1,5 +1,6 @@
<?php
/**
* @package Joomla.Site
* @subpackage mod_menu
@@ -106,3 +107,4 @@ $start = (int) $params->get('startLevel', 1);
endswitch;
}
?></ul>

View File

@@ -1,5 +1,6 @@
<?php
/**
* @package Joomla.Site
* @subpackage mod_menu
@@ -75,3 +76,4 @@ echo HTMLHelper::link(OutputFilter::ampReplace(htmlspecialchars($item->flink, EN
if ($showAll && $item->deeper) {
echo '<button class="mm-collapsed mm-toggler mm-toggler-link" aria-haspopup="true" aria-expanded="false" aria-label="' . $item->title . '"></button>';
}

View File

@@ -1,5 +1,6 @@
<?php
/**
* @package Joomla.Site
* @subpackage mod_menu
@@ -57,3 +58,4 @@ if ($showAll && $item->deeper) {
} else {
echo '<span ' . ArrayHelper::toString($attributes) . '>' . $linktype . '</span>';
}

View File

@@ -1,5 +1,6 @@
<?php
/**
* @package Joomla.Site
* @subpackage mod_menu
@@ -57,3 +58,4 @@ if ($showAll && $item->deeper) {
} else {
echo '<span ' . ArrayHelper::toString($attributes) . '>' . $linktype . '</span>';
}

View File

@@ -1,5 +1,6 @@
<?php
/**
* @package Joomla.Site
* @subpackage mod_menu
@@ -72,3 +73,4 @@ echo HTMLHelper::link(OutputFilter::ampReplace(htmlspecialchars($item->flink, EN
if ($showAll && $item->deeper) {
echo '<button class="mm-collapsed mm-toggler mm-toggler-link" aria-haspopup="true" aria-expanded="false" aria-label="' . $item->title . '"></button>';
}

View File

@@ -1,5 +1,6 @@
<?php
defined('_JEXEC') or die('Restricted access');
\Joomla\CMS\HTML\HTMLHelper::_('bootstrap.dropdown');
@@ -95,4 +96,4 @@ $view = vRequest::getCmd('view');
<noscript>
<?php echo vmText::_('MOD_VIRTUEMART_CART_AJAX_CART_PLZ_JAVASCRIPT') ?>
</noscript>
</div>
</div>

View File

@@ -1,5 +1,6 @@
<?php
/**
* @package Joomla.Site
* @subpackage Templates.vmbasic
@@ -103,4 +104,4 @@ $view = vRequest::getCmd('view');
<noscript>
<?php echo vmText::_('MOD_VIRTUEMART_CART_AJAX_CART_PLZ_JAVASCRIPT') ?>
</noscript>
</div>
</div>

View File

@@ -1,5 +1,6 @@
<?php
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Router\Route;
@@ -40,4 +41,4 @@ $sublevel = $params->get('level', 0);
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>
</ul>

View File

@@ -1,5 +1,6 @@
<?php
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Factory;
@@ -63,4 +64,4 @@ $btnIcon = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill=
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>
</ul>

View File

@@ -1,5 +1,6 @@
<?php
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Factory;
@@ -63,4 +64,4 @@ $btnIcon = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill=
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>
</ul>

View File

@@ -1,5 +1,6 @@
<?php
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Router\Route;
@@ -24,4 +25,4 @@ $bscol = $module->position == 'sidebar-left' || $module->position == 'sidebar-ri
</div>
</li>
<?php endforeach; ?>
</ul>
</ul>

View File

@@ -1,5 +1,6 @@
<?php
defined('_JEXEC') or die('Restricted access');
vmJsApi::cssSite();
@@ -34,4 +35,4 @@ $j = 'jQuery(document).ready(function($) {
})';
vmJsApi::addJScript('sendFormChange',$j);
echo vmJsApi::writeJS();
echo vmJsApi::writeJS();

View File

@@ -1,5 +1,6 @@
<?php
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Router\Route;
@@ -63,4 +64,4 @@ $bscol = round(12 / $manufacturers_per_row);
<?php echo $footerText ?>
</div>
<?php endif; ?>
</div>
</div>

View File

@@ -1,5 +1,6 @@
<?php
defined ('_JEXEC') or die('Restricted access');
use Joomla\CMS\Router\Route;
@@ -163,4 +164,4 @@ $bscol = ' col-xl-' . floor (12 / $products_per_row);
<?php echo $footerText ?>
</div>
<?php endif; ?>
</div>
</div>

View File

@@ -1,5 +1,6 @@
<?php
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Router\Route;
@@ -52,4 +53,4 @@ vmJsApi::cssSite();
echo '<input type="hidden" name="Itemid" value="'.$set_Itemid.'" />';
}
?>
</form>
</form>

View File

@@ -1 +1,4 @@
<!DOCTYPE html><title></title>
<!DOCTYPE html>
<!-- MOKO-COPYRIGHT: © 2025-08-10 Jonathan Miller || Moko Consulting — https://mokoconsulting.tech -->
<title></title>

View File

@@ -1,14 +1,11 @@
<?php
/**
* @package Joomla.Site
* @subpackage Templates.moko-cassiopeia
* @subpackage Templates.Moko-Cassiopeia
*
* @copyright © 2025 Moko Consulting — All Rights Reserved
* @copyright (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*
* Website: https://mokoconsulting.tech
* Email: hello@mokoconsulting.tech
* Phone: +1 (931) 279-6313
*/
defined('_JEXEC') or die;
@@ -23,29 +20,20 @@ use Joomla\CMS\Uri\Uri;
$app = Factory::getApplication();
$input = $app->getInput();
$wa = $this->getWebAssetManager();
$params_developmentmode = $this->params->get('developmentmode', false);
$params_ColorName = $this->params->get('colorName', 'colors_standard');
if ($params_developmentmode) {
$params_googletagmanager = true;
$params_googletagmanagerid = "GTM-WX6W2ZVB
";
$params_googleanalytics = true;
$params_googleanalyticsid = "G-NJ6Z5NWZST";
} else {
$params_googletagmanager = $this->params->get('googletagmanager', false);
$params_googletagmanagerid = $this->params->get('googletagmanagerid', null);
$params_googleanalytics = $this->params->get('googleanalytics', false);
$params_googleanalyticsid = $this->params->get('googleanalyticsid', null);
}
$params_googletagmanager = $this->params->get('googletagmanager', false);
$params_googletagmanagerid = $this->params->get('googletagmanagerid', null);
$params_googleanalytics = $this->params->get('googleanalytics', false);
$params_googleanalyticsid = $this->params->get('googleanalyticsid', null);
$params_custom_head_start = $this->params->get('custom_head_start', null);
$params_custom_head_end = $this->params->get('custom_head_end', null);
$params_leftIcon = htmlspecialchars(
$this->params->get('drawerLeftIcon', 'fa-solid fa-chevron-left'),
ENT_COMPAT, 'UTF-8'
$this->params->get('drawerLeftIcon', 'fa-solid fa-chevron-left'),
ENT_COMPAT, 'UTF-8'
);
$params_rightIcon = htmlspecialchars(
$this->params->get('drawerRightIcon', 'fa-solid fa-chevron-right'),
ENT_COMPAT, 'UTF-8'
$this->params->get('drawerRightIcon', 'fa-solid fa-chevron-right'),
ENT_COMPAT, 'UTF-8'
);
// Add Bootstrap 5 Support
@@ -86,41 +74,41 @@ $params_FontScheme = $this->params->get('useFontScheme', false);
$fontStyles = '';
if ($params_FontScheme) {
if (stripos($params_FontScheme, 'https://') === 0) {
$this->getPreloadManager()->preconnect('https://fonts.googleapis.com/', ['crossorigin' => 'anonymous']);
$this->getPreloadManager()->preconnect('https://fonts.gstatic.com/', ['crossorigin' => 'anonymous']);
$this->getPreloadManager()->preload($params_FontScheme, ['as' => 'style', 'crossorigin' => 'anonymous']);
$wa->registerAndUseStyle('fontscheme.current', $params_FontScheme, [], ['media' => 'print', 'rel' => 'lazy-stylesheet', 'onload' => 'this.media=\'all\'', 'crossorigin' => 'anonymous']);
if (stripos($params_FontScheme, 'https://') === 0) {
$this->getPreloadManager()->preconnect('https://fonts.googleapis.com/', ['crossorigin' => 'anonymous']);
$this->getPreloadManager()->preconnect('https://fonts.gstatic.com/', ['crossorigin' => 'anonymous']);
$this->getPreloadManager()->preload($params_FontScheme, ['as' => 'style', 'crossorigin' => 'anonymous']);
$wa->registerAndUseStyle('fontscheme.current', $params_FontScheme, [], ['media' => 'print', 'rel' => 'lazy-stylesheet', 'onload' => 'this.media=\'all\'', 'crossorigin' => 'anonymous']);
if (preg_match_all('/family=([^?:]*):/i', $params_FontScheme, $matches) > 0) {
$fontStyles = '--font-family-body: "' . str_replace('+', ' ', $matches[1][0]) . '", sans-serif;\n';
$fontStyles .= '--font-family-headings: "' . str_replace('+', ' ', isset($matches[1][1]) ? $matches[1][1] : $matches[1][0]) . '", sans-serif;\n';
$fontStyles .= '--font-weight-normal: 400;\n';
$fontStyles .= '--font-weight-headings: 700;';
}
} else {
$wa->registerAndUseStyle('fontscheme.current', $params_FontScheme, ['version' => 'auto'], ['media' => 'print', 'rel' => 'lazy-stylesheet', 'onload' => 'this.media=\'all\'']);
$this->getPreloadManager()->preload($wa->getAsset('style', 'fontscheme.current')->getUri() . '?' . $this->getMediaVersion(), ['as' => 'style']);
}
if (preg_match_all('/family=([^?:]*):/i', $params_FontScheme, $matches) > 0) {
$fontStyles = '--font-family-body: "' . str_replace('+', ' ', $matches[1][0]) . '", sans-serif;\n';
$fontStyles .= '--font-family-headings: "' . str_replace('+', ' ', isset($matches[1][1]) ? $matches[1][1] : $matches[1][0]) . '", sans-serif;\n';
$fontStyles .= '--font-weight-normal: 400;\n';
$fontStyles .= '--font-weight-headings: 700;';
}
} else {
$wa->registerAndUseStyle('fontscheme.current', $params_FontScheme, ['version' => 'auto'], ['media' => 'print', 'rel' => 'lazy-stylesheet', 'onload' => 'this.media=\'all\'']);
$this->getPreloadManager()->preload($wa->getAsset('style', 'fontscheme.current')->getUri() . '?' . $this->getMediaVersion(), ['as' => 'style']);
}
}
// Enable assets
$wa->usePreset('template.MOKO-CASSIOPEIA.' . ($this->direction === 'rtl' ? 'rtl' : 'ltr'))
->useStyle('template.active.language')
->useStyle('template.user')
->useScript('template.user')
->addInlineStyle(":root {\n --hue: 214;\n --template-bg-light: #f0f4fb;\n --template-text-dark: #495057;\n --template-text-light: #ffffff;\n --template-link-color: #2a69b8;\n --template-special-color: #001B4C;\n $fontStyles\n }");
->useStyle('template.active.language')
->useStyle('template.user')
->useScript('template.user')
->addInlineStyle(":root {\n --hue: 214;\n --template-bg-light: #f0f4fb;\n --template-text-dark: #495057;\n --template-text-light: #ffffff;\n --template-link-color: #2a69b8;\n --template-special-color: #001B4C;\n $fontStyles\n }");
// Override 'template.active' asset for correct dependency
$wa->registerStyle('template.active', '', [], [], ['template.MOKO-CASSIOPEIA.' . ($this->direction === 'rtl' ? 'rtl' : 'ltr')]);
// Logo file or site title
if ($this->params->get('logoFile')) {
$logo = HTMLHelper::_('image', Uri::root(false) . htmlspecialchars($this->params->get('logoFile'), ENT_QUOTES), $sitename, ['loading' => 'eager', 'decoding' => 'async'], false, 0);
$logo = HTMLHelper::_('image', Uri::root(false) . htmlspecialchars($this->params->get('logoFile'), ENT_QUOTES), $sitename, ['loading' => 'eager', 'decoding' => 'async'], false, 0);
} elseif ($this->params->get('siteTitle')) {
$logo = '<span title="' . $sitename . '">' . htmlspecialchars($this->params->get('siteTitle'), ENT_COMPAT, 'UTF-8') . '</span>';
$logo = '<span title="' . $sitename . '">' . htmlspecialchars($this->params->get('siteTitle'), ENT_COMPAT, 'UTF-8') . '</span>';
} else {
$logo = HTMLHelper::_('image', 'full_logo.png', $sitename, ['class' => 'logo d-inline-block', 'loading' => 'eager', 'decoding' => 'async'], true, 0);
$logo = HTMLHelper::_('image', 'full_logo.png', $sitename, ['class' => 'logo d-inline-block', 'loading' => 'eager', 'decoding' => 'async'], true, 0);
}
$hasClass = '';
@@ -139,10 +127,10 @@ $this->setMetaData('viewport', 'width=device-width, initial-scale=1');
$stickyHeader = $this->params->get('stickyHeader') ? 'position-sticky sticky-top' : '';
if ($this->params->get('fA6KitCode')) {
$fa6Kit = "https://kit.fontawesome.com/" . $this->params->get('fA6KitCode') . ".js";
JHtml::_('script', $fa6Kit, ['crossorigin' => 'anonymous']);
$fa6Kit = "https://kit.fontawesome.com/" . $this->params->get('fA6KitCode') . ".js";
JHtml::_('script', $fa6Kit, ['crossorigin' => 'anonymous']);
} else {
$wa->getAsset('style', 'fontawesome')->setAttribute('rel', 'lazy-stylesheet');
$wa->getAsset('style', 'fontawesome')->setAttribute('rel', 'lazy-stylesheet');
}
// Add Bootstrap TOC CSS
$this->addStyleSheet($templatePath . '/css/vendor/afeld/bootstrap-toc.min.css');
@@ -154,245 +142,257 @@ $this->addScript($templatePath . '/js/vendor/afeld/bootstrap-toc.min.js');
<!DOCTYPE html>
<html lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>">
<head>
<?php if (trim($params_custom_head_start)) : ?><?php echo $params_custom_head_start; ?><?php endif; ?>
<jdoc:include type="head" />
<script>
<?php if (trim($params_custom_head_start)) : ?><?php echo $params_custom_head_start; ?><?php endif; ?>
<jdoc:include type="head" />
<script>
window.addEventListener('DOMContentLoaded', function () {
var ua = navigator.userAgent || navigator.vendor || window.opera;
var isFacebookBrowser = ua.indexOf('FBAN') > -1 || ua.indexOf('FBAV') > -1;
var ua = navigator.userAgent || navigator.vendor || window.opera;
var isFacebookBrowser = ua.indexOf('FBAN') > -1 || ua.indexOf('FBAV') > -1;
if (isFacebookBrowser) {
var warning = document.createElement('div');
warning.textContent = '⚠️ KNOWN ISSUE: Images do not load in Facebook Web browser. Please open in external browser for full experience.';
warning.style.position = 'fixed';
warning.style.top = '0';
warning.style.left = '0';
warning.style.right = '0';
warning.style.zIndex = '10000';
warning.style.backgroundColor = '#007bff'; // Blue background
warning.style.color = '#fff';
warning.style.padding = '15px';
warning.style.textAlign = 'center';
warning.style.fontWeight = 'bold';
warning.style.fontSize = '16px';
warning.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)';
if (isFacebookBrowser) {
var warning = document.createElement('div');
warning.textContent = '⚠️ KNOWN ISSUE: Images do not load in Facebook Web browser. Please open in external browser for full experience.';
warning.style.position = 'fixed';
warning.style.top = '0';
warning.style.left = '0';
warning.style.right = '0';
warning.style.zIndex = '10000';
warning.style.backgroundColor = '#007bff'; // Blue background
warning.style.color = '#fff';
warning.style.padding = '15px';
warning.style.textAlign = 'center';
warning.style.fontWeight = 'bold';
warning.style.fontSize = '16px';
warning.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)';
document.body.appendChild(warning);
}
document.body.appendChild(warning);
}
});
</script>
<?php if (trim($params_custom_head_end)) : ?><?php echo $params_custom_head_end; ?><?php endif; ?>
<script>
(function () {
try {
var stored = localStorage.getItem('theme');
var prefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
var theme = stored ? stored : (prefersDark ? 'dark' : 'light');
document.documentElement.setAttribute('data-bs-theme', theme);
} catch (e) {}
})();
</script>
<link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css' rel='stylesheet' crossorigin='anonymous'>
<?php if (trim($params_custom_head_end)) : ?><?php echo $params_custom_head_end; ?><?php endif; ?>
</head>
<body data-bs-spy="scroll" data-bs-target="#toc" class="site <?php echo $option . ' ' . $wrapper . ' view-' . $view . ($layout ? ' layout-' . $layout : ' no-layout') . ($task ? ' task-' . $task : ' no-task') . ($itemid ? ' itemid-' . $itemid : '') . ($pageclass ? ' ' . $pageclass : '') . $hasClass . ($this->direction == 'rtl' ? ' rtl' : ''); ?>">
<?php
if (!empty($params_googletagmanager) && !empty($params_googletagmanagerid)) :
$gtmID = htmlspecialchars($params_googletagmanagerid, ENT_QUOTES, 'UTF-8');
$gtmID = htmlspecialchars($params_googletagmanagerid, ENT_QUOTES, 'UTF-8');
?>
<!-- Google Tag Manager -->
<script>
(function(w,d,s,l,i){
w[l]=w[l]||[];
w[l].push({'gtm.start': new Date().getTime(), event:'gtm.js'});
var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),
dl=l!='dataLayer'?'&l='+l:'';
j.async=true;
j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;
f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','<?php echo $gtmID; ?>');
</script>
<!-- End Google Tag Manager -->
<!-- Google Tag Manager -->
<script>
(function(w,d,s,l,i){
w[l]=w[l]||[];
w[l].push({'gtm.start': new Date().getTime(), event:'gtm.js'});
var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),
dl=l!='dataLayer'?'&l='+l:'';
j.async=true;
j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;
f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','<?php echo $gtmID; ?>');
</script>
<!-- End Google Tag Manager -->
<!-- Google Tag Manager (noscript) -->
<noscript>
<iframe src="https://www.googletagmanager.com/ns.html?id=<?php echo $gtmID; ?>"
height="0" width="0" style="display:none;visibility:hidden"></iframe>
</noscript>
<!-- End Google Tag Manager (noscript) -->
<!-- Google Tag Manager (noscript) -->
<noscript>
<iframe src="https://www.googletagmanager.com/ns.html?id=<?php echo $gtmID; ?>"
height="0" width="0" style="display:none;visibility:hidden"></iframe>
</noscript>
<!-- End Google Tag Manager (noscript) -->
<?php
endif;
if (!empty($params_googleanalytics) && !empty($params_googleanalyticsid)) :
$gaId = htmlspecialchars($params_googleanalyticsid, ENT_QUOTES, 'UTF-8');
$gaId = htmlspecialchars($params_googleanalyticsid, ENT_QUOTES, 'UTF-8');
?>
<!-- Google Analytics (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=<?php echo $gaId; ?>"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
<!-- Google Analytics (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=<?php echo $gaId; ?>"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('js', new Date());
// Optional: Consent Mode defaults (adjust to your needs or remove)
gtag('consent', 'default', {
'ad_storage': 'denied',
'analytics_storage': 'granted',
'ad_user_data': 'denied',
'ad_personalization': 'denied'
});
// Optional: Consent Mode defaults (adjust to your needs or remove)
gtag('consent', 'default', {
'ad_storage': 'denied',
'analytics_storage': 'granted',
'ad_user_data': 'denied',
'ad_personalization': 'denied'
});
// GA4 vs UA fallback
(function(id){
if (/^G-/.test(id)) {
// GA4
gtag('config', id, {
'anonymize_ip': true
});
} else if (/^UA-/.test(id)) {
// Legacy Universal Analytics (sunset by Google, kept for backward compat)
gtag('config', id, {
'anonymize_ip': true
});
console.warn('Using a UA- ID. Universal Analytics is sunset; consider migrating to GA4.');
} else {
console.warn('Unrecognized Google Analytics ID format:', id);
}
})('<?php echo $gaId; ?>');
</script>
<!-- End Google Analytics -->
// GA4 vs UA fallback
(function(id){
if (/^G-/.test(id)) {
// GA4
gtag('config', id, {
'anonymize_ip': true
});
} else if (/^UA-/.test(id)) {
// Legacy Universal Analytics (sunset by Google, kept for backward compat)
gtag('config', id, {
'anonymize_ip': true
});
console.warn('Using a UA- ID. Universal Analytics is sunset; consider migrating to GA4.');
} else {
console.warn('Unrecognized Google Analytics ID format:', id);
}
})('<?php echo $gaId; ?>');
</script>
<!-- End Google Analytics -->
<?php endif; ?>
<header class="header container-header full-width<?php echo $stickyHeader ? ' ' . $stickyHeader : ''; ?>">
<?php if ($this->countModules('topbar')) : ?>
<div class="container-topbar">
<jdoc:include type="modules" name="topbar" style="none" />
</div>
<?php endif; ?>
<?php if ($this->countModules('topbar')) : ?>
<div class="container-topbar">
<jdoc:include type="modules" name="topbar" style="none" />
</div>
<?php endif; ?>
<div class="header-top">
<?php if ($this->countModules('below-topbar')) : ?>
<div class="grid-child container-below-topbar">
<jdoc:include type="modules" name="below-topbar" style="none" />
</div>
<?php endif; ?>
<div class="header-top">
<?php if ($this->countModules('below-topbar')) : ?>
<div class="grid-child container-below-topbar">
<jdoc:include type="modules" name="below-topbar" style="none" />
</div>
<?php endif; ?>
<?php if ($this->params->get('brand', 1)) : ?>
<div class="grid-child">
<div class="navbar-brand">
<a class="brand-logo" href="<?php echo $this->baseurl; ?>/">
<?php echo $logo; ?>
</a>
<?php if ($this->params->get('siteDescription')) : ?>
<div class="site-description"><?php echo htmlspecialchars($this->params->get('siteDescription')); ?></div>
<?php endif; ?>
</div>
</div>
<?php endif; ?>
<?php if ($this->params->get('brand', 1)) : ?>
<div class="grid-child">
<div class="navbar-brand">
<a class="brand-logo" href="<?php echo $this->baseurl; ?>/">
<?php echo $logo; ?>
</a>
<?php if ($this->params->get('siteDescription')) : ?>
<div class="site-description"><?php echo htmlspecialchars($this->params->get('siteDescription')); ?></div>
<?php endif; ?>
</div>
</div>
<?php endif; ?>
<?php if ($this->countModules('below-logo')) : ?>
<div class="grid container-below-logo">
<jdoc:include type="modules" name="below-logo" style="none" />
</div>
<?php endif; ?>
</div>
<?php if ($this->countModules('below-logo')) : ?>
<div class="grid container-below-logo">
<jdoc:include type="modules" name="below-logo" style="none" />
</div>
<?php endif; ?>
</div>
<!-- Drawer Toggle Buttons -->
<!-- Drawer Toggle Buttons -->
<?php if ($this->countModules('drawer-left')) : ?>
<button class="drawer-toggle-left btn btn-outline-secondary me-2"
type="button"
data-bs-toggle="offcanvas"
data-bs-target="#drawer-left"
aria-controls="drawer-left">
<span class="<?php echo $params_leftIcon; ?>"></span>
type="button"
data-bs-toggle="offcanvas"
data-bs-target="#drawer-left"
aria-controls="drawer-left">
<span class="<?php echo $params_leftIcon; ?>"></span>
</button>
<?php endif; ?>
<?php if ($this->countModules('drawer-right')) : ?>
<button class="drawer-toggle-right btn btn-outline-secondary"
type="button"
data-bs-toggle="offcanvas"
data-bs-target="#drawer-right"
aria-controls="drawer-right">
<span class="<?php echo $params_rightIcon; ?>"></span>
type="button"
data-bs-toggle="offcanvas"
data-bs-target="#drawer-right"
aria-controls="drawer-right">
<span class="<?php echo $params_rightIcon; ?>"></span>
</button>
<?php endif; ?>
<?php if ($this->countModules('menu', true) || $this->countModules('search', true)) : ?>
<div class="grid-child container-nav">
<?php if ($this->countModules('menu', true)) : ?>
<jdoc:include type="modules" name="menu" style="none" />
<?php endif; ?>
<?php if ($this->countModules('search', true)) : ?>
<div class="container-search">
<jdoc:include type="modules" name="search" style="none" />
</div>
<?php endif; ?>
</div>
<?php endif; ?>
<?php if ($this->countModules('menu', true) || $this->countModules('search', true)) : ?>
<div class="grid-child container-nav">
<?php if ($this->countModules('menu', true)) : ?>
<jdoc:include type="modules" name="menu" style="none" />
<?php endif; ?>
<?php if ($this->countModules('search', true)) : ?>
<div class="container-search">
<jdoc:include type="modules" name="search" style="none" />
</div>
<?php endif; ?>
</div>
<?php endif; ?>
</header>
<div class="site-grid">
<?php if ($this->countModules('banner', true)) : ?>
<div class="container-banner full-width">
<jdoc:include type="modules" name="banner" style="none" />
</div>
<?php endif; ?>
<?php if ($this->countModules('banner', true)) : ?>
<div class="container-banner full-width">
<jdoc:include type="modules" name="banner" style="none" />
</div>
<?php endif; ?>
<?php if ($this->countModules('top-a', true)) : ?>
<div class="grid-child container-top-a">
<jdoc:include type="modules" name="top-a" style="card" />
</div>
<?php endif; ?>
<?php if ($this->countModules('top-a', true)) : ?>
<div class="grid-child container-top-a">
<jdoc:include type="modules" name="top-a" style="card" />
</div>
<?php endif; ?>
<?php if ($this->countModules('top-b', true)) : ?>
<div class="grid-child container-top-b">
<jdoc:include type="modules" name="top-b" style="card" />
</div>
<?php endif; ?>
<?php if ($this->countModules('top-b', true)) : ?>
<div class="grid-child container-top-b">
<jdoc:include type="modules" name="top-b" style="card" />
</div>
<?php endif; ?>
<?php if ($this->countModules('sidebar-left', true)) : ?>
<div class="grid-child container-sidebar-left">
<jdoc:include type="modules" name="sidebar-left" style="card" />
</div>
<?php endif; ?>
<?php if ($this->countModules('sidebar-left', true)) : ?>
<div class="grid-child container-sidebar-left">
<jdoc:include type="modules" name="sidebar-left" style="card" />
</div>
<?php endif; ?>
<div class="grid-child container-component">
<jdoc:include type="modules" name="breadcrumbs" style="none" />
<jdoc:include type="modules" name="main-top" style="card" />
<jdoc:include type="message" />
<main>
<jdoc:include type="component" />
</main>
<jdoc:include type="modules" name="main-bottom" style="card" />
</div>
<div class="grid-child container-component">
<jdoc:include type="modules" name="breadcrumbs" style="none" />
<jdoc:include type="modules" name="main-top" style="card" />
<jdoc:include type="message" />
<main>
<jdoc:include type="component" />
</main>
<jdoc:include type="modules" name="main-bottom" style="card" />
</div>
<?php if ($this->countModules('sidebar-right', true)) : ?>
<div class="grid-child container-sidebar-right">
<jdoc:include type="modules" name="sidebar-right" style="card" />
</div>
<?php endif; ?>
<?php if ($this->countModules('sidebar-right', true)) : ?>
<div class="grid-child container-sidebar-right">
<jdoc:include type="modules" name="sidebar-right" style="card" />
</div>
<?php endif; ?>
<?php if ($this->countModules('bottom-a', true)) : ?>
<div class="grid-child container-bottom-a">
<jdoc:include type="modules" name="bottom-a" style="card" />
</div>
<?php endif; ?>
<?php if ($this->countModules('bottom-a', true)) : ?>
<div class="grid-child container-bottom-a">
<jdoc:include type="modules" name="bottom-a" style="card" />
</div>
<?php endif; ?>
<?php if ($this->countModules('bottom-b', true)) : ?>
<div class="grid-child container-bottom-b">
<jdoc:include type="modules" name="bottom-b" style="card" />
</div>
<?php endif; ?>
<?php if ($this->countModules('bottom-b', true)) : ?>
<div class="grid-child container-bottom-b">
<jdoc:include type="modules" name="bottom-b" style="card" />
</div>
<?php endif; ?>
</div>
<footer class="container-footer footer full-width">
<?php if ($this->countModules('footer-menu', true)) : ?>
<div class="grid-child footer-menu">
<jdoc:include type="modules" name="footer-menu" />
</div>
<?php endif; ?>
<?php if ($this->countModules('footer', true)) : ?>
<div class="grid-child">
<jdoc:include type="modules" name="footer" style="none" />
</div>
<?php endif; ?>
<?php if ($this->countModules('footer-menu', true)) : ?>
<div class="grid-child footer-menu">
<jdoc:include type="modules" name="footer-menu" />
</div>
<?php endif; ?>
<?php if ($this->countModules('footer', true)) : ?>
<div class="grid-child">
<jdoc:include type="modules" name="footer" style="none" />
</div>
<?php endif; ?>
</footer>
<?php if ($this->params->get('backTop') == 1) : ?>
<a href="#top" id="back-top" class="back-to-top-link" aria-label="<?php echo Text::_('TPL_MOKO-CASSIOPEIA_BACKTOTOP'); ?>">
<span class="icon-arrow-up icon-fw" aria-hidden="true"></span>
</a>
<a href="#top" id="back-top" class="back-to-top-link" aria-label="<?php echo Text::_('TPL_MOKO-CASSIOPEIA_BACKTOTOP'); ?>">
<span class="icon-arrow-up icon-fw" aria-hidden="true"></span>
</a>
<?php endif; ?>
<?php if ($this->countModules('drawer-left', true)) : ?>
@@ -400,10 +400,10 @@ if (!empty($params_googleanalytics) && !empty($params_googleanalyticsid)) :
<aside class="offcanvas offcanvas-start" tabindex="-1" id="drawer-left">
<div class="offcanvas-header">
<button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="<?php echo Text::_('JLIB_HTML_BEHAVIOR_CLOSE'); ?>"></button>
<button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="<?php echo Text::_('JLIB_HTML_BEHAVIOR_CLOSE'); ?>"></button>
</div>
<div class="offcanvas-body">
<jdoc:include type="modules" name="drawer-left" style="none" />
<jdoc:include type="modules" name="drawer-left" style="none" />
</div>
</aside>
<?php endif; ?>
@@ -413,14 +413,74 @@ if (!empty($params_googleanalytics) && !empty($params_googleanalyticsid)) :
<aside class="offcanvas offcanvas-end" tabindex="-1" id="drawer-right">
<div class="offcanvas-header">
<button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="<?php echo Text::_('JLIB_HTML_BEHAVIOR_CLOSE'); ?>"></button>
<button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="<?php echo Text::_('JLIB_HTML_BEHAVIOR_CLOSE'); ?>"></button>
</div>
<div class="offcanvas-body">
<jdoc:include type="modules" name="drawer-right" style="none" />
<jdoc:include type="modules" name="drawer-right" style="none" />
</div>
</aside>
<?php endif; ?>
<jdoc:include type="modules" name="debug" style="none" />
<div class='position-fixed bottom-0 end-0 p-3' style='z-index:1080;'>
<div class='d-flex align-items-center gap-2 bg-body border rounded-pill shadow-sm px-3 py-2'>
<span class='small text-body'>Light</span>
<div class='form-check form-switch m-0'>
<input class='form-check-input' type='checkbox' role='switch' id='themeSwitch' aria-label='Toggle dark mode'>
</div>
<span class='small text-body'>Dark</span>
<button id='themeAuto' class='btn btn-sm btn-link text-decoration-none px-2' type='button' aria-label='Follow system theme'>Auto</button>
</div>
</div>
<script>
(function () {
var storageKey = 'theme';
var doc = document.documentElement;
var mql = window.matchMedia('(prefers-color-scheme: dark)');
var switchEl, autoBtn;
function getStored() { try { return localStorage.getItem(storageKey); } catch (e) { return null; } }
function setStored(v) { try { localStorage.setItem(storageKey, v); } catch (e) {} }
function clearStored() { try { localStorage.removeItem(storageKey); } catch (e) {} }
function systemTheme() { return mql.matches ? 'dark' : 'light'; }
function applyTheme(theme) {
doc.setAttribute('data-bs-theme', theme);
if (switchEl) switchEl.checked = (theme === 'dark');
}
function init() {
switchEl = document.getElementById('themeSwitch');
autoBtn = document.getElementById('themeAuto');
var stored = getStored();
applyTheme(stored ? stored : systemTheme());
if (switchEl) {
switchEl.addEventListener('change', function () {
var theme = switchEl.checked ? 'dark' : 'light';
applyTheme(theme);
setStored(theme);
});
}
if (autoBtn) {
autoBtn.addEventListener('click', function () {
clearStored();
applyTheme(systemTheme());
});
}
var onMqlChange = function () {
if (!getStored()) applyTheme(systemTheme());
};
if (typeof mql.addEventListener === 'function') mql.addEventListener('change', onMqlChange);
else if (typeof mql.addListener === 'function') mql.addListener(onMqlChange);
}
if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init);
else init();
})();
</script>
</body>
</html>

View File

@@ -1,4 +1,5 @@
<?php
/**
* @package Joomla.Site
* @subpackage Templates.moko-cassiopeia
@@ -259,3 +260,4 @@ if ($app->get('offline_image')){
<jdoc:include type="modules" name="debug" style="none" />
</body>
</html>

View File

@@ -1,25 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
@package Joomla.Site
@subpackage Templates.moko-cassiopeia
@file /templates/moko-cassiopeia/templateDetails.xml
© 2025 Moko Consulting — All Rights Reserved
@license GNU General Public License version 2 or later; see LICENSE.txt
Website: https://mokoconsulting.tech
Email: hello@mokoconsulting.tech
Phone: +1 (931) 279-6313
@package Joomla.Site
@subpackage Templates.moko-cassiopeia
@file /templates/moko-cassiopeia/templateDetails.xml
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-->
<extension type="template" client="site" method="upgrade">
<updateservers>
<server type="extension" name="Moko Consulting">https://mokoconsulting.tech/updates/updates.xml</server>
<server type="extension" name="Moko Consulting">https://raw.githubusercontent.com/mokoconsulting-tech/MokoUpdates/refs/heads/main/joomla/moko-cassiopeia/updates.xml</server>
</updateservers>
<name>moko-cassiopeia</name>
<version>1.13</version>
<creationDate>2025-08-09</creationDate>
<version>1.15</version>
<creationDate>2025-08-20</creationDate>
<author>Jonathan Miller || Moko Consulting</author>
<authorEmail>jmiller@mokoconsulting.tech</authorEmail>
<authorEmail>hello@mokoconsulting.tech</authorEmail>
<copyright>(C)GNU General Public License Version 2 - 2025 Moko Consulting</copyright>
<description>TPL_MOKO-CASSIOPEIA_XML_DESCRIPTION</description>
<inheritable>1</inheritable>
@@ -72,29 +77,20 @@
<config>
<fields name="params">
<fieldset name="advanced">
<field name="developmentmode" type="radio" label="TPL_MOKO-CASSIOPEIA_DEVELOPMENTMODE_LABEL"
description="TPL_MOKO-CASSIOPEIA_DEVELOPMENTMODE_DESC" default="1" layout="joomla.form.field.radio.switcher"
filter="boolean">
<field name="developmentmode" type="radio" label="TPL_MOKO-CASSIOPEIA_DEVELOPMENTMODE_LABEL" description="TPL_MOKO-CASSIOPEIA_DEVELOPMENTMODE_DESC" default="1" layout="joomla.form.field.radio.switcher" filter="boolean">
<option value="0">JNO</option>
<option value="1">JYES</option>
</field>
<field name="brand" type="radio" label="TPL_MOKO-CASSIOPEIA_BRAND_LABEL"
default="1" layout="joomla.form.field.radio.switcher" filter="boolean">
<field name="brand" type="radio" label="TPL_MOKO-CASSIOPEIA_BRAND_LABEL" default="1" layout="joomla.form.field.radio.switcher" filter="boolean">
<option value="0">JNO</option>
<option value="1">JYES</option>
</field>
<field name="logoFile" type="media" default="media/templates/site/moko-cassiopeia/images/logo.svg"
label="TPL_MOKO-CASSIOPEIA_LOGO_LABEL" showon="brand:1" />
<field name="siteTitle" type="text" default="" label="TPL_MOKO-CASSIOPEIA_TITLE"
filter="string" showon="brand:1" />
<field name="siteDescription" type="text" default="" label="TPL_MOKO-CASSIOPEIA_TAGLINE_LABEL"
description="TPL_MOKO-CASSIOPEIA_TAGLINE_DESC" filter="string" showon="brand:1" />
<field name="fA6KitCode" type="text" default="" label="TPL_MOKO-CASSIOPEIA_FA6KITCODE_LABEL"
description="TPL_MOKO-CASSIOPEIA_FA6KITCODE_DESC" filter="string" />
<field name="offlineEmbed" type="text" default="" label="TPL_MOKO-CASSIOPEIA_OFFLINEEMBED_LABEL"
description="TPL_MOKO-CASSIOPEIA_OFFLINEEMBED_DESC" filter="raw" />
<field name="useFontScheme" type="groupedlist" label="TPL_MOKO-CASSIOPEIA_FONT_LABEL"
default="0">
<field name="logoFile" type="media" default="media/templates/site/moko-cassiopeia/images/logo.svg" label="TPL_MOKO-CASSIOPEIA_LOGO_LABEL" showon="brand:1" />
<field name="siteTitle" type="text" default="" label="TPL_MOKO-CASSIOPEIA_TITLE" filter="string" showon="brand:1" />
<field name="siteDescription" type="text" default="" label="TPL_MOKO-CASSIOPEIA_TAGLINE_LABEL" description="TPL_MOKO-CASSIOPEIA_TAGLINE_DESC" filter="string" showon="brand:1" />
<field name="fA6KitCode" type="text" default="" label="TPL_MOKO-CASSIOPEIA_FA6KITCODE_LABEL" description="TPL_MOKO-CASSIOPEIA_FA6KITCODE_DESC" filter="string" />
<field name="offlineEmbed" type="text" default="" label="TPL_MOKO-CASSIOPEIA_OFFLINEEMBED_LABEL" description="TPL_MOKO-CASSIOPEIA_OFFLINEEMBED_DESC" filter="raw" />
<field name="useFontScheme" type="groupedlist" label="TPL_MOKO-CASSIOPEIA_FONT_LABEL" default="0">
<option value="0">JNONE</option>
<group label="TPL_MOKO-CASSIOPEIA_FONT_GROUP_LOCAL">
<option value="media/templates/site/moko-cassiopeia/css/global/fonts-local_roboto.css">Roboto
@@ -107,64 +103,45 @@
+ Noto Sans (web)</option>
</group>
</field>
<field name="noteFontScheme" type="note" description="TPL_MOKO-CASSIOPEIA_FONT_NOTE_TEXT"
class="alert alert-warning" />
<field name="colorName" type="list" label="TPL_MOKO-CASSIOPEIA_COLOR_NAME_LABEL"
default="colors_standard">
<field name="noteFontScheme" type="note" description="TPL_MOKO-CASSIOPEIA_FONT_NOTE_TEXT" class="alert alert-warning" />
<field name="colorName" type="list" label="TPL_MOKO-CASSIOPEIA_COLOR_NAME_LABEL" default="colors_standard">
<option value="colors_standard">TPL_MOKO-CASSIOPEIA_COLOR_NAME_STANDARD</option>
<option value="colors_alternative">TPL_MOKO-CASSIOPEIA_COLOR_NAME_ALTERNATIVE</option>
<option value="colors_custom">TPL_MOKO-CASSIOPEIA_COLOR_NAME_CUSTOM</option>
</field>
<field name="fluidContainer" type="radio" layout="joomla.form.field.radio.switcher"
default="0" label="TPL_MOKO-CASSIOPEIA_FLUID_LABEL">
<field name="fluidContainer" type="radio" layout="joomla.form.field.radio.switcher" default="0" label="TPL_MOKO-CASSIOPEIA_FLUID_LABEL">
<option value="0">TPL_MOKO-CASSIOPEIA_STATIC</option>
<option value="1">TPL_MOKO-CASSIOPEIA_FLUID</option>
</field>
<field name="stickyHeader" type="radio" label="TPL_MOKO-CASSIOPEIA_STICKY_LABEL"
layout="joomla.form.field.radio.switcher" default="0" filter="integer">
<field name="stickyHeader" type="radio" label="TPL_MOKO-CASSIOPEIA_STICKY_LABEL" layout="joomla.form.field.radio.switcher" default="0" filter="integer">
<option value="0">JNO</option>
<option value="1">JYES</option>
</field>
<field name="backTop" type="radio" label="TPL_MOKO-CASSIOPEIA_BACKTOTOP_LABEL"
layout="joomla.form.field.radio.switcher" default="0" filter="integer">
<field name="backTop" type="radio" label="TPL_MOKO-CASSIOPEIA_BACKTOTOP_LABEL" layout="joomla.form.field.radio.switcher" default="0" filter="integer">
<option value="0">JNO</option>
<option value="1">JYES</option>
</field>
</fieldset>
<fieldset name="google">
<field name="googletagmanager" type="radio" label="TPL_MOKO-CASSIOPEIA_GOOGLETAGMANAGER_LABEL"
description="TPL_MOKO-CASSIOPEIA_GOOGLETAGMANAGER_DESC" layout="joomla.form.field.radio.switcher"
filter="boolean">
<field name="googletagmanager" type="radio" label="TPL_MOKO-CASSIOPEIA_GOOGLETAGMANAGER_LABEL" description="TPL_MOKO-CASSIOPEIA_GOOGLETAGMANAGER_DESC" layout="joomla.form.field.radio.switcher" filter="boolean">
<option value="0">JNO</option>
<option value="1">JYES</option>
</field>
<field name="googletagmanagerid" type="text" default="" label="TPL_MOKO-CASSIOPEIA_GOOGLETAGMANAGERID_LABEL"
description="TPL_MOKO-CASSIOPEIA_GOOGLETAGMANAGERID_DESC" filter="string"
showon="googletagmanager:1" />
<field name="googleanalytics" type="radio" label="TPL_MOKO-CASSIOPEIA_GOOGLEANALYTICS_LABEL"
description="TPL_MOKO-CASSIOPEIA_GOOGLEANALYTICS_DESC" layout="joomla.form.field.radio.switcher"
filter="boolean">
<field name="googletagmanagerid" type="text" default="" label="TPL_MOKO-CASSIOPEIA_GOOGLETAGMANAGERID_LABEL" description="TPL_MOKO-CASSIOPEIA_GOOGLETAGMANAGERID_DESC" filter="string" showon="googletagmanager:1" />
<field name="googleanalytics" type="radio" label="TPL_MOKO-CASSIOPEIA_GOOGLEANALYTICS_LABEL" description="TPL_MOKO-CASSIOPEIA_GOOGLEANALYTICS_DESC" layout="joomla.form.field.radio.switcher" filter="boolean">
<option value="0">JNO</option>
<option value="1">JYES</option>
</field>
<field name="googleanalyticsid" type="text" default="" label="TPL_MOKO-CASSIOPEIA_GOOGLEANALYTICSID_LABEL"
description="TPL_MOKO-CASSIOPEIA_GOOGLEANALYTICSID_DESC" filter="string"
showon="googleanalytics:1" />
<field name="googleanalyticsid" type="text" default="" label="TPL_MOKO-CASSIOPEIA_GOOGLEANALYTICSID_LABEL" description="TPL_MOKO-CASSIOPEIA_GOOGLEANALYTICSID_DESC" filter="string" showon="googleanalytics:1" />
</fieldset>
<fieldset name="custom_head">
<field name="custom_head_start" type="textarea" default="" label="TPL_MOKO-CASSIOPEIA_CUSTOM_HEAD_START_LABEL"
description="TPL_MOKO-CASSIOPEIA_CUSTOM_HEAD_START_DESC" filter="raw" />
<field name="custom_head_end" type="textarea" default="" label="TPL_MOKO-CASSIOPEIA_CUSTOM_HEAD_END_LABEL"
description="TPL_MOKO-CASSIOPEIA_CUSTOM_HEAD_END_DESC" filter="raw" />
<field name="custom_head_start" type="textarea" default="" label="TPL_MOKO-CASSIOPEIA_CUSTOM_HEAD_START_LABEL" description="TPL_MOKO-CASSIOPEIA_CUSTOM_HEAD_START_DESC" filter="raw" />
<field name="custom_head_end" type="textarea" default="" label="TPL_MOKO-CASSIOPEIA_CUSTOM_HEAD_END_LABEL" description="TPL_MOKO-CASSIOPEIA_CUSTOM_HEAD_END_DESC" filter="raw" />
</fieldset>
<fieldset name="drawers">
<field name="drawerLeftIcon" type="text" default="fa-solid fa-chevron-right"
label="TPL_MOKO-CASSIOPEIA_DRAWER_LEFT_ICON_LABEL" description="TPL_MOKO-CASSIOPEIA_DRAWER_LEFT_ICON_DESC"
filter="string" />
<field name="drawerRightIcon" type="text" default="fa-solid fa-chevron-left"
label="TPL_MOKO-CASSIOPEIA_DRAWER_RIGHT_ICON_LABEL" description="TPL_MOKO-CASSIOPEIA_DRAWER_RIGHT_ICON_DESC"
filter="string" />
<field name="drawerLeftIcon" type="text" default="fa-solid fa-chevron-right" label="TPL_MOKO-CASSIOPEIA_DRAWER_LEFT_ICON_LABEL" description="TPL_MOKO-CASSIOPEIA_DRAWER_LEFT_ICON_DESC" filter="string" />
<field name="drawerRightIcon" type="text" default="fa-solid fa-chevron-left" label="TPL_MOKO-CASSIOPEIA_DRAWER_RIGHT_ICON_LABEL" description="TPL_MOKO-CASSIOPEIA_DRAWER_RIGHT_ICON_DESC" filter="string" />
</fieldset>
</fields>
</config>
</extension>
</extension>