<?php
/**
 * @var \Laminas\View\Renderer\PhpRenderer $this
 * @var \Log\Api\Representation\LogRepresentation[] $logs
 * @var \Log\Api\Representation\LogRepresentation[] $resources
 * @var \Log\Form\QuickSearchForm $formSearch
 * @var \Omeka\Form\ConfirmForm $formDeleteSelected
 * @var \Omeka\Form\ConfirmForm $formDeleteAll
 */

$plugins = $this->getHelperPluginManager();
$url = $plugins->get('url');
$i18n = $plugins->get('i18n');
$escape = $plugins->get('escapeHtml');
$sortLink = $plugins->get('sortLink');
$assetUrl = $plugins->get('assetUrl');
$translate = $plugins->get('translate');
$hyperlink = $plugins->get('hyperlink');
$escapeAttr = $plugins->get('escapeHtmlAttr');

$this->htmlElement('body')->appendAttribute('class', 'logs browse');

$this->headLink()
    ->appendStylesheet($assetUrl('vendor/webui-popover/jquery.webui-popover.min.css', 'Log'))
    ->appendStylesheet($assetUrl('css/log.css', 'Log'));
$this->headScript()
    ->appendFile($assetUrl('vendor/webui-popover/jquery.webui-popover.min.js', 'Log'), 'text/javascript', ['defer' => 'defer'])
    ->appendFile($assetUrl('js/log.js', 'Log'), 'text/javascript', ['defer' => 'defer']);

$sortHeadings = [
    [
        'label' => $translate('Date'),
        'value' => 'created',
    ],
    [
        'label' => $translate('Reference'),
        'value' => 'reference',
    ],
    [
        'label' => $translate('Severity'),
        'value' => 'severity',
    ],
    [
        'label' => $translate('Job'),
        'value' => 'job',
    ],
    [
        'label' => $translate('User'),
        'value' => 'owner',
    ],
];

$userIsAllowedBatchDelete = $this->userIsAllowed(\Log\Api\Adapter\LogAdapter::class, 'batch_delete');
?>

<?= $this->pageTitle($translate('Logs')) ?>

<?= $this->logSearchFilters() ?>

<div class="browse-controls">
    <?= $this->pagination() ?>
    <button type="button" class="search advanced-search quick-search"><?= $translate('Quick filter') ?></button>
    <?= $this->sortSelector($sortHeadings) ?>
</div>

<div id="page-actions">
</div>

<?php $this->trigger('view.browse.before'); ?>
<?php if (count($logs)): ?>
<form method='post' id="batch-form" class="disable-unsaved-warning">
    <div class="batch-inputs">
        <select class="batch-actions-select" name="batch_action" aria-label="<?= $translate('Batch actions') ?>">
            <option value="default"><?= $translate('Batch actions') ?></option>
            <?php if ($userIsAllowedBatchDelete): ?>
            <option value="delete-selected" class="batch-selected" disabled="disabled"><?= $translate('Delete selected') ?></option>
            <option value="delete-all"><?= $translate('Delete all') ?></option>
            <?php endif; ?>
        </select>
        <div class="batch-actions">
            <button type="button" class="default active" disabled="disabled"><?= $translate('Go') ?></button>
            <input type="hidden" name="query" class="batch-query" value="<?= $escapeAttr(json_encode($this->params()->fromQuery())) ?>">
            <?php if ($userIsAllowedBatchDelete): ?>
            <a class="delete button sidebar-content delete-selected" data-sidebar-selector="#sidebar-delete-selected"><?= $translate('Go') ?></a>
            <a class="delete button sidebar-content delete-all" data-sidebar-selector="#sidebar-delete-all"><?= $translate('Go') ?></a>
            <?php endif; ?>
        </div>
    </div>

    <table class="tablesaw batch-edit" data-tablesaw-mode="stack">
        <thead>
            <tr>
                <th>
                <?php if ($userIsAllowedBatchDelete): ?>
                <input type="checkbox" class="select-all">
                <?php endif; ?>
                <?= $escape($translate('Message')) ?>
                </th>
                <th><?= $sortLink($translate('Date'), 'created') ?></th>
                <th><?= $sortLink($translate('Severity'), 'severity') ?></th>
                <th><?= $sortLink($translate('Reference'), 'reference') ?></th>
                <?php /*
                <th><?= $sortLink($translate('User'), 'owner') ?></th>
                */ ?>
                <th><?= $sortLink($translate('Job'), 'job') ?></th>
            </tr>
        </thead>
        <tbody>
        <?php foreach ($logs as $log): ?>
        <?php $userIsAllowedDelete = $log->userIsAllowed('delete'); ?>
        <tr>
            <td class="webui-popover-parent">
                <?php if ($userIsAllowedBatchDelete): ?>
                <input type="checkbox" name="resource_ids[]" value="<?= $log->id() ?>"<?php if (!$userIsAllowedDelete): ?> disabled="disabled"<?php endif; ?>>
                <?php endif; ?>
                <span class="log-message">
                    <?php $shouldEscape = $log->text()->escapeHtml(); ?>
                    <?php $text = $log->text()->translate(); ?>
                    <?php $isLong = strlen($text) > 240; ?>
                    <?php if ($isLong): ?>
                    <span class="log-message-truncated truncate"><?= nl2br(substr($shouldEscape ? strip_tags($text) : $text, 0, 240)) . '…' ?></span>
                    <?php else: ?>
                    <?= $shouldEscape ? $escape($text) : $text ?>
                    <?php endif; ?>
                </span>
                <ul class="actions">
                    <?php if ($isLong): ?>
                    <li><?= $hyperlink('', '#', [
                            'class' => 'o-icon- fa fa-expand popover',
                            'title' => $translate('Full log'),
                        ]) ?>
                        <div class="log-message-full webui-popover-content webui-popover-current"><?= $shouldEscape ? nl2br($escape($text)) : nl2br($text) ?></div>
                    </li>
                    <?php endif; ?>
                    <?php if ($userIsAllowedDelete): ?>
                    <li><?= $hyperlink('', '#', [
                        'data-sidebar-selector' => '#sidebar',
                        'data-sidebar-content-url' => $log->url('delete-confirm'),
                        'class' => 'o-icon-delete sidebar-content',
                        'title' => $translate('Delete'),
                    ]) ?></li>
                    <?php endif; ?>
                    <li><?= $hyperlink('', '#', [
                        'data-sidebar-selector' => '#sidebar',
                        'data-sidebar-content-url' => $log->url('show-details'),
                        'class' => 'o-icon-more sidebar-content',
                        'title' => $translate('Details'),
                    ]) ?></li>
                </ul>
            </td>
            <td><?= $i18n->dateFormat($log->created(), 'medium', 'medium') ?></td>
            <td><?= $hyperlink($translate($log->severityLabel()), $url(null, [], ['query' => ['page' => null, 'severity' => $log->severity()] + $this->params()->fromQuery()], true)) ?></td>
            <td><?= $hyperlink($translate($log->reference()), $url(null, [], ['query' => ['reference' => $log->reference()]], true)) ?></td>
            <?php /*
            if ($owner = $log->owner()) {
                $ownerText = $hyperlink($owner->email(), $url('admin/id', ['controller' => 'user', 'action' => 'show', 'id' => $owner->id()]));
            } else {
                $ownerText = '';
            }
            ?>
            <td><?= $ownerText ?></td>
            */ ?>
            <td>
            <?php $job = $log->job(); ?>
            <?php if ($job): ?>
                <div>
                    <span class="log-job-status">
                    <?= $hyperlink($translate($job->statusLabel()), $url(null, [], ['query' => ['job_id' => $job->id()]], true)); ?>
                    </span>
                    <span class="log-job-param">
                    <?= $hyperlink($translate('Parameters'), $url('admin/id', ['controller' => 'job', 'action' => 'show', 'id' => $job->id()])) ?>
                    </span>
                    <?php if ($job->log()): ?>
                    <span class="log-job-log">
                    <?= $hyperlink($translate('Log'), $url('admin/id', ['controller' => 'job', 'action' => 'log', 'id' => $job->id()]), ['target' => '_blank']) ?>
                    </span>
                    <?php endif; ?>
                </div>
            <?php endif; ?>
            </td>
        </tr>
        <?php endforeach; ?>
        </tbody>
    </table>
</form>

<?php $this->trigger('view.browse.after'); ?>
<div class="browse-controls">
    <?= $this->pagination() ?>
</div>

<div id="sidebar" class="sidebar">
    <?= $hyperlink('', '#', [
        'class' => 'sidebar-close o-icon-close',
        'title' => $translate('Close'),
    ]) ?>
    <div class="sidebar-content"></div>
</div>

<?php if ($userIsAllowedBatchDelete): ?>

<div id="sidebar-delete-selected" class="sidebar">
    <?= $hyperlink('', '#', [
        'class' => 'sidebar-close o-icon-close',
        'title' => $translate('Close'),
    ]) ?>
    <div class="sidebar-content">
        <div id="sidebar-confirm">
            <h3><?= $translate('Delete logs') ?></h3>
            <p><?= $translate('Are you sure you would like to delete the selected logs?') ?></p>
            <p class="error"><?= sprintf(
                $translate('%s: this action will permanently delete %s logs and cannot be undone.'),
                sprintf('<strong>%s</strong>', $translate('Warning')),
                '<strong><span id="delete-selected-count"></span></strong>'
            ) ?></p>
            <?= $this->form($this->formDeleteSelected) ?>
        </div>
    </div>
</div>
<div id="sidebar-delete-all" class="sidebar">
    <?= $hyperlink('', '#', [
        'class' => 'sidebar-close o-icon-close',
        'title' => $translate('Close'),
    ]) ?>
    <div class="sidebar-content">
        <div id="sidebar-confirm">
            <h3><?= $translate('Delete logs') ?></h3>
            <p><?= $translate('Are you sure you would like to delete all logs of this result?') ?></p>
            <p class="error"><?= sprintf(
                $translate('%s: this action will permanently delete %s logs and cannot be undone.'),
                sprintf('<strong>%s</strong>', $translate('Warning')),
                sprintf('<strong>%s</strong>', number_format($this->pagination()->getPaginator()->getTotalCount()))
            ) ?></p>
            <label><input type="checkbox" name="confirm-delete-all-check"> <?= $translate('Are you sure?') ?></label>
            <?= $this->form($this->formDeleteAll) ?>
        </div>
    </div>
</div>

<?php endif; ?>

<?php else: ?>

<div class="no-resources">
    <p><?= $translate('Omeka could not find any logs, or they are saved in another place.') ?></p>
</div>

<?php endif; ?>

<div id="sidebar-search" class="sidebar search">
    <?= $hyperlink('', '#', [
        'class' => 'sidebar-close o-icon-close',
        'title' => $translate('Close'),
    ]) ?>
    <div class="sidebar-content">
        <div id="sidebar-search-form" class="disable-unsaved-warning">
            <h3><?= $translate('Search logs') ?></h3>
            <?php // echo $hyperlink($translate('Advanced search'), $url(null, ['action' => 'search'], ['query' => $this->params()->fromQuery()], true), ['class' => 'advanced-search']) ?>
            <?= $this->form($formSearch) ?>
        </div>
    </div>
</div>
