<?php

/**
 * @package         Tassos Code Snippets
 * @version         1.0.1-RC2 Free
 *
 * @author          Tassos Marinos <info@tassos.gr>
 * @link            https://www.tassos.gr
 * @copyright       Copyright © 2026 Tassos Marinos All Rights Reserved
 * @license         GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
 */

defined('_JEXEC') or die;

use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Layout\LayoutHelper;
use Joomla\CMS\Router\Route;
use Joomla\CMS\Language\Multilanguage;
use Tassos\CodeSnippets\Administrator\Helper\SnippetsHelper;

/** @var \Tassos\CodeSnippets\Administrator\View\Snippets\HtmlView $this */

$user      = Factory::getApplication()->getIdentity();
$userId    = $user->get('id');
$listOrder = $this->escape($this->state->get('list.ordering'));
$listDirn  = $this->escape($this->state->get('list.direction'));
$saveOrder = $listOrder === 'a.ordering';

if ($saveOrder && !empty($this->items))
{
    $saveOrderingUrl = 'index.php?option=com_tassoscodesnippets&task=snippets.saveOrderAjax&tmpl=component&' . Factory::getApplication()->getFormToken() . '=1';
    HTMLHelper::_('draggablelist.draggable');
}

?>
<form action="<?php echo Route::_('index.php?option=com_tassoscodesnippets&view=snippets'); ?>" method="post" name="adminForm" id="adminForm">
    <div class="row">
        <div class="col-md-12">
            <div id="j-main-container" class="j-main-container">
                <?php echo LayoutHelper::render('joomla.searchtools.default', ['view' => $this]); ?>
                
                <?php if (empty($this->items)) : ?>
                    <div class="alert alert-info">
                        <span class="icon-info-circle" aria-hidden="true"></span><span class="visually-hidden"><?php echo Text::_('INFO'); ?></span>
                        <?php echo Text::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
                    </div>
                <?php else : ?>
                    <table class="table itemList" id="snippetList">
                        <caption class="visually-hidden">
                            <?php echo Text::_('COM_TASSOSCODESNIPPETS_SNIPPETS_TABLE_CAPTION'); ?>
                            <span id="orderedBy"><?php echo Text::_('JGLOBAL_SORTED_BY'); ?></span>
                            <span id="filteredBy"><?php echo Text::_('JGLOBAL_FILTERED_BY'); ?></span>
                        </caption>
                        <thead>
                            <tr>
                                <td class="w-1 text-center">
                                    <?php echo HTMLHelper::_('grid.checkall'); ?>
                                </td>
                                <th scope="col" class="w-1 text-center d-none d-md-table-cell">
                                    <?php echo HTMLHelper::_('searchtools.sort', '', 'a.ordering', $listDirn, $listOrder, null, 'asc', 'JGRID_HEADING_ORDERING', 'icon-sort'); ?>
                                </th>
                                <th scope="col" class="w-1 text-center">
                                    <?php echo HTMLHelper::_('searchtools.sort', 'JSTATUS', 'a.state', $listDirn, $listOrder); ?>
                                </th>
                                <th scope="col">
                                    <?php echo HTMLHelper::_('searchtools.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?>
                                </th>
                                <th scope="col" class="w-10 d-none d-md-table-cell">
                                    <?php echo HTMLHelper::_('searchtools.sort', 'COM_TASSOSCODESNIPPETS_HEADING_CODE_TYPE', 'a.code_type', $listDirn, $listOrder); ?>
                                </th>
                                <th scope="col" class="w-10 d-none d-md-table-cell">
                                    <?php echo HTMLHelper::_('searchtools.sort', 'COM_TASSOSCODESNIPPETS_HEADING_LOCATION', 'a.location', $listDirn, $listOrder); ?>
                                </th>
                                <th scope="col" class="w-10 d-none d-md-table-cell">
                                    <?php echo HTMLHelper::_('searchtools.sort', 'JCATEGORY', 'category_title', $listDirn, $listOrder); ?>
                                </th>
                                <th scope="col" class="w-10 d-none d-md-table-cell">
                                    <?php echo HTMLHelper::_('searchtools.sort', 'JGRID_HEADING_ACCESS', 'a.access', $listDirn, $listOrder); ?>
                                </th>
                                <?php if (Multilanguage::isEnabled()) : ?>
                                    <th scope="col" class="w-10 d-none d-md-table-cell">
                                        <?php echo HTMLHelper::_('searchtools.sort', 'JGRID_HEADING_LANGUAGE', 'a.language', $listDirn, $listOrder); ?>
                                    </th>
                                <?php endif; ?>
                                <th scope="col" class="w-5 d-none d-md-table-cell">
                                    <?php echo HTMLHelper::_('searchtools.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?>
                                </th>
                            </tr>
                        </thead>
                        <tbody <?php if ($saveOrder) : ?> class="js-draggable" data-url="<?php echo $saveOrderingUrl; ?>" data-direction="<?php echo strtolower($listDirn); ?>" data-nested="true"<?php endif; ?>>
                            <?php foreach ($this->items as $i => $item) :
                                $canEdit    = $user->authorise('core.edit', 'com_tassoscodesnippets.snippet.' . $item->id);
                                $canEditOwn = $user->authorise('core.edit.own', 'com_tassoscodesnippets.snippet.' . $item->id) && $item->created_by == $userId;
                                $canChange  = $user->authorise('core.edit.state', 'com_tassoscodesnippets.snippet.' . $item->id);
                            ?>
                                <tr class="row<?php echo $i % 2; ?>" data-draggable-group="<?php echo $item->catid; ?>">
                                    <td class="text-center">
                                        <?php echo HTMLHelper::_('grid.id', $i, $item->id, false, 'cid', 'cb', $item->title); ?>
                                    </td>
                                    <td class="text-center d-none d-md-table-cell">
                                        <?php
                                        $iconClass = '';
                                        if (!$canChange)
                                        {
                                            $iconClass = ' inactive';
                                        }
                                        elseif (!$saveOrder)
                                        {
                                            $iconClass = ' inactive" title="' . Text::_('JORDERINGDISABLED');
                                        }
                                        ?>
                                        <span class="sortable-handler<?php echo $iconClass; ?>">
                                            <span class="icon-ellipsis-v" aria-hidden="true"></span>
                                        </span>
                                        <?php if ($canChange && $saveOrder) : ?>
                                            <input type="text" name="order[]" size="5" value="<?php echo $item->ordering; ?>" class="width-20 text-area-order hidden">
                                        <?php endif; ?>
                                    </td>
                                    <td class="text-center">
                                        <?php if ((int) $item->state === -3) : ?>
                                            <span class="badge bg-danger"
                                                  title="<?php echo $this->escape(substr($item->last_error ?? '', 0, 200)); ?>"
                                                  data-bs-toggle="tooltip"
                                                  data-bs-placement="right">
                                                <?php echo Text::_('COM_TASSOSCODESNIPPETS_STATE_AUTO_DISABLED'); ?>
                                            </span>
                                        <?php else : ?>
                                            <?php echo HTMLHelper::_('jgrid.published', $item->state, $i, 'snippets.', $canChange, 'cb'); ?>
                                        <?php endif; ?>
                                    </td>
                                    <td>
                                        <?php if ($canEdit || $canEditOwn) : ?>
                                            <a href="<?php echo Route::_('index.php?option=com_tassoscodesnippets&task=snippet.edit&id=' . $item->id); ?>">
                                                <?php echo $this->escape($item->title); ?>
                                            </a>

                                            <div class="small">
                                                <?php if ((int) $item->state === -3) : ?>
                                                    <span class="icon-warning" aria-hidden="true" style="color:#dc3545;"></span>
                                                <?php endif; ?>
                                                <?= $this->escape($item->last_error); ?>
                                            </div>
                                        <?php else : ?>
                                            <?php echo $this->escape($item->title); ?>
                                        <?php endif; ?>
                                    </td>
                                    <td class="small d-none d-md-table-cell">
                                        <?php
                                            $snippet = SnippetsHelper::getSnippetClass($item->code_type, $item);
                                            $color = $snippet->getColor();
                                        ?>
                                        <span class="badge" style="background-color: <?= $color ?>;">
                                            <?= Text::_('COM_TASSOSCODESNIPPETS_SNIPPET_TYPE_' . $item->code_type) ?>
                                        </span>
                                    </td>
                                    <td class="small d-none d-md-table-cell">
                                        <?php if ($item->insertion_method === 'shortcode') : ?>
                                            <?php $shortcode = '{tcs snippet.' . $item->alias . '}'; ?>
                                            <code
                                                class="tcs-shortcode-badge"
                                                data-tcs-copy
                                                data-tcs-copy-value="<?php echo $this->escape($shortcode); ?>"
                                                data-tcs-copy-label="<?php echo $this->escape(Text::_('COM_TASSOSCODESNIPPETS_COPIED')); ?>"
                                                title="<?php echo $this->escape(Text::_('COM_TASSOSCODESNIPPETS_COPY_TO_CLIPBOARD')); ?>"
                                                role="button"
                                                tabindex="0"
                                                style="background-color: #f0f0f0; padding: 2px 4px; border-radius: 3px; cursor: pointer;"
                                            ><?php echo $this->escape($shortcode); ?></code>
                                        <?php else : ?>
                                            <?php
                                            $locationLabel = 'COM_TASSOSCODESNIPPETS_LOCATION_' . strtoupper($item->location);
                                            echo Text::_($locationLabel); 
                                            ?>
                                        <?php endif; ?>
                                    </td>
             
                                    <td class="small d-none d-md-table-cell">
                                        <?php echo $this->escape($item->category_title ?: '-'); ?>
                                    </td>
                                    <td class="small d-none d-md-table-cell">
                                        <?php echo $this->escape($item->access_level); ?>
                                    </td>
                                    <?php if (Multilanguage::isEnabled()) : ?>
                                        <td class="small d-none d-md-table-cell">
                                            <?php echo LayoutHelper::render('joomla.content.language', $item); ?>
                                        </td>
                                    <?php endif; ?>
                                    <td class="d-none d-md-table-cell">
                                        <?php echo $item->id; ?>
                                    </td>
                                </tr>
                            <?php endforeach; ?>
                        </tbody>
                    </table>

                    <?php echo $this->pagination->getListFooter(); ?>

                    <?php // Load the batch processing form. ?>
                    <?php if (
                        $user->authorise('core.create', 'com_tassoscodesnippets')
                        && $user->authorise('core.edit', 'com_tassoscodesnippets')
                    ) : ?>
                        <template id="joomla-dialog-batch"><?php echo $this->loadTemplate('batch_body'); ?></template>
                    <?php endif; ?>
                <?php endif; ?>

                <input type="hidden" name="task" value="">
                <input type="hidden" name="boxchecked" value="0">
                <?php echo HTMLHelper::_('form.token'); ?>
            </div>
        </div>
    </div>
</form>

<?= $this->loadTemplate('footer'); ?>