218 lines
7.5 KiB
PHP
218 lines
7.5 KiB
PHP
<?php
|
|
/**
|
|
* @package OSMap
|
|
* @contact www.joomlashack.com, help@joomlashack.com
|
|
* @copyright 2007-2014 XMap - Joomla! Vargas - Guillermo Vargas. All rights reserved.
|
|
* @copyright 2016-2024 Joomlashack.com. All rights reserved.
|
|
* @license https://www.gnu.org/licenses/gpl.html GNU/GPL
|
|
*
|
|
* This file is part of OSMap.
|
|
*
|
|
* OSMap is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* OSMap 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.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with OSMap. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
use Joomla\CMS\HTML\HTMLHelper;
|
|
use Joomla\CMS\Language\Text;
|
|
use Joomla\CMS\Version;
|
|
|
|
defined('_JEXEC') or die();
|
|
|
|
|
|
$frequncyOptions = HTMLHelper::_('osmap.frequencyList');
|
|
array_walk(
|
|
$frequncyOptions,
|
|
function (string &$text, string $value) {
|
|
$text = HTMLHelper::_('select.option', $value, $text);
|
|
}
|
|
);
|
|
|
|
$priorityOptions = array_map(
|
|
function (float $priority) {
|
|
return HTMLHelper::_('select.option', $priority, $priority);
|
|
},
|
|
HTMLHelper::_('osmap.priorityList')
|
|
);
|
|
|
|
$showItemUid = $this->osmapParams->get('show_item_uid', 0);
|
|
$showExternalLinks = (int)$this->osmapParams->get('show_external_links', 0);
|
|
$items = [];
|
|
|
|
$this->sitemap->traverse(
|
|
/**
|
|
* @param object $item
|
|
*
|
|
* @return bool
|
|
*/
|
|
function (object $item) use (&$items, &$showItemUid, &$showExternalLinks) {
|
|
if (
|
|
($item->isInternal == false && $showExternalLinks === 0)
|
|
|| $item->hasCompatibleLanguage() == false
|
|
) :
|
|
return false;
|
|
endif;
|
|
|
|
if ($showExternalLinks === 2) :
|
|
// Display only in the HTML sitemap
|
|
$item->addAdminNote('COM_OSMAP_ADMIN_NOTE_IGNORED_EXTERNAL_HTML');
|
|
endif;
|
|
|
|
// Add notes about sitemap visibility
|
|
if ($item->visibleForXML == false) :
|
|
$item->addAdminNote('COM_OSMAP_ADMIN_NOTE_VISIBLE_HTML_ONLY');
|
|
endif;
|
|
|
|
if ($item->visibleForHTML == false) :
|
|
$item->addAdminNote('COM_OSMAP_ADMIN_NOTE_VISIBLE_XML_ONLY');
|
|
endif;
|
|
|
|
if ($item->visibleForRobots == false) :
|
|
$item->addAdminNote('COM_OSMAP_ADMIN_NOTE_INVISIBLE_FOR_ROBOTS');
|
|
endif;
|
|
|
|
if ($item->parentIsVisibleForRobots == false) :
|
|
$item->addAdminNote('COM_OSMAP_ADMIN_NOTE_PARENT_INVISIBLE_FOR_ROBOTS');
|
|
endif;
|
|
|
|
$items[] = $item;
|
|
|
|
return true;
|
|
},
|
|
false,
|
|
true
|
|
);
|
|
|
|
$count = count($items);
|
|
?>
|
|
<table class="adminlist table table-striped" id="itemList">
|
|
<thead>
|
|
<tr>
|
|
<th style="width: 1%;min-width:55px" class="text-center center">
|
|
<?php echo Text::_('COM_OSMAP_HEADING_STATUS'); ?>
|
|
</th>
|
|
|
|
<th class="title">
|
|
<?php echo Text::_('COM_OSMAP_HEADING_URL'); ?>
|
|
</th>
|
|
|
|
<th class="title">
|
|
<?php echo Text::_('COM_OSMAP_HEADING_TITLE'); ?>
|
|
</th>
|
|
|
|
<th class="text-center center">
|
|
<?php echo Text::_('COM_OSMAP_HEADING_PRIORITY'); ?>
|
|
</th>
|
|
|
|
<th class="text-center center">
|
|
<?php echo Text::_('COM_OSMAP_HEADING_CHANGE_FREQ'); ?>
|
|
</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<?php
|
|
foreach ($items as $row => $item) : ?>
|
|
<tr class="sitemapitem <?php echo 'row' . $row; ?> <?php echo ($showItemUid) ? 'with-uid' : ''; ?>"
|
|
data-uid="<?php echo $item->uid; ?>"
|
|
data-settings-hash="<?php echo $item->settingsHash; ?>">
|
|
|
|
<td class="text-center center">
|
|
<div class="sitemapitem-published"
|
|
data-original="<?php echo $item->published ? '1' : '0'; ?>"
|
|
data-value="<?php echo $item->published ? '1' : '0'; ?>">
|
|
|
|
<?php
|
|
$class = $item->published ? 'publish' : 'unpublish';
|
|
$title = $item->published
|
|
? 'COM_OSMAP_TOOLTIP_CLICK_TO_UNPUBLISH'
|
|
: 'COM_OSMAP_TOOLTIP_CLICK_TO_PUBLISH';
|
|
?>
|
|
|
|
<span title="<?php echo Text::_($title); ?>"
|
|
class="hasTooltip icon-<?php echo $class; ?>">
|
|
</span>
|
|
</div>
|
|
<?php
|
|
if ($notes = $item->getAdminNotesString()) : ?>
|
|
<span class="icon-warning hasTooltip osmap-info" title="<?php echo $notes; ?>"></span>
|
|
<?php endif; ?>
|
|
</td>
|
|
|
|
<td class="sitemapitem-link">
|
|
<?php if ($item->level > 0) : ?>
|
|
<span class="level-mark"><?php echo str_repeat('—', $item->level); ?></span>
|
|
<?php endif;
|
|
|
|
if ($item->rawLink !== '#' && $item->link !== '#') :
|
|
if (Version::MAJOR_VERSION < 4) :
|
|
echo '<span class="icon-new-tab"></span>';
|
|
endif;
|
|
|
|
echo HTMLHelper::_(
|
|
'link',
|
|
$item->rawLink,
|
|
$item->rawLink,
|
|
[
|
|
'target' => '_blank',
|
|
'class' => 'hasTooltip',
|
|
'title' => $item->link,
|
|
]
|
|
);
|
|
|
|
else :
|
|
echo sprintf('<span>%s</span>', $item->name ?? '');
|
|
endif;
|
|
|
|
if ($showItemUid) :
|
|
echo sprintf(
|
|
'<br><div class="small osmap-item-uid">%s: %s</div>',
|
|
Text::_('COM_OSMAP_UID'),
|
|
$item->uid
|
|
);
|
|
endif;
|
|
?>
|
|
</td>
|
|
|
|
<td class="sitemapitem-name">
|
|
<?php echo $item->name ?? ''; ?>
|
|
</td>
|
|
|
|
<td class="text-center center">
|
|
<div class="sitemapitem-priority"
|
|
data-original="<?php echo $item->priority; ?>"
|
|
data-value="<?php echo sprintf('%03.1f', $item->priority); ?>">
|
|
|
|
<?php echo sprintf('%03.1f', $item->priority); ?>
|
|
</div>
|
|
</td>
|
|
|
|
<td class="text-center center">
|
|
<div class="sitemapitem-changefreq"
|
|
data-original="<?php echo $item->changefreq; ?>"
|
|
data-value="<?php echo $item->changefreq; ?>">
|
|
|
|
<?php echo Text::_('COM_OSMAP_' . strtoupper($item->changefreq)); ?>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<?php endforeach; ?>
|
|
</tbody>
|
|
</table>
|
|
<div><?php echo Text::sprintf('COM_OSMAP_NUMBER_OF_ITEMS_FOUND', $count); ?></div>
|
|
|
|
<?php if (empty($count)) : ?>
|
|
<div class="alert alert-warning">
|
|
<?php echo Text::_('COM_OSMAP_NO_ITEMS'); ?>
|
|
</div>
|
|
<?php endif;
|