first commit

This commit is contained in:
2026-02-08 21:16:11 +01:00
commit e17b7026fd
8881 changed files with 1160453 additions and 0 deletions

View File

@@ -0,0 +1,176 @@
<?php
/**
* JCH Optimize - Performs several front-end optimizations for fast downloads
*
* @package jchoptimize/joomla-platform
* @author Samuel Marshall <samuel@jch-optimize.net>
* @copyright Copyright (c) 2020 Samuel Marshall / JCH Optimize
* @license GNU/GPLv3, or later. See LICENSE file
*
* If LICENSE file missing, see <http://www.gnu.org/licenses/>.
*/
defined( '_JEXEC' ) or die( 'No direct access' );
use Joomla\CMS\HTML\HTMLHelper;
require_once JPATH_ADMINISTRATOR . '/components/com_menus/helpers/menus.php';
class JFormFieldMenuselection extends JFormField
{
public $type = 'menuselection';
public function setup( SimpleXMLElement $element, $value, $group = null )
{
$script_options = array( 'framework' => false, 'relative' => true );
if ( version_compare( JVERSION, '3.99.99', '<' ) )
{
JHtml::script( 'jui/jquery.min.js' );
JHtml::_( 'script', 'jui/treeselectmenu.jquery.min.js', false, true );
}
else
{
HTMLHelper::_( 'script', 'vendor/jquery/jquery.min.js', $script_options );
$oDocument = JFactory::getDocument();
$oDocument->addScript( JUri::root( true ) . '/media/legacy/js/treeselectmenu.js' );
}
if ( ! is_array( $value ) )
{
$value = array();
}
return parent::setup( $element, $value, $group );
}
protected function getInput()
{
$menuTypes = MenusHelper::getMenuLinks();
$html = '';
if ( ! empty( $menuTypes ) ) :
$id = 'jform_menuselect';
$html .= '<div>
<div class="form-inline">
<span class="small">' . JText::_( 'JSELECT' ) . ':
<a id="treeCheckAll" href="javascript://">' . JText::_( 'JALL' ) . '</a>,
<a id="treeUncheckAll" href="javascript://">' . JText::_( 'JNONE' ) . '</a>
</span>
<span class="width-20">|</span>
<span class="small">' . JText::_( 'JCH_EXPAND' ) . ':
<a id="treeExpandAll" href="javascript://">' . JText::_( 'JALL' ) . '</a>,
<a id="treeCollapseAll" href="javascript://">' . JText::_( 'JNONE' ) . '</a>
</span>
<input type="text" id="treeselectfilter" name="treeselectfilter" class="input-medium search-query pull-right" size="16"
autocomplete="off" placeholder="' . JText::_( 'JSEARCH_FILTER' ) . '" aria-invalid="false" tabindex="-1">
</div>
<div class="clearfix"></div>
<hr class="hr-condensed" />
<ul class="treeselect">';
foreach ( $menuTypes as &$type ) :
if ( count( $type->links ) ) :
$prevlevel = 0;
$html .= '<li>
<div class="treeselect-item pull-left">
<label class="pull-left nav-header">' . $type->title . '</label></div>';
foreach ( $type->links as $i => $link ) :
if ( $prevlevel < $link->level )
{
$html .= '<ul class="treeselect-sub">';
}
elseif ( $prevlevel > $link->level )
{
$html .= str_repeat( '</li></ul>', $prevlevel - $link->level );
}
else
{
$html .= '</li>';
}
// $selected = 0;
// if ($pluginassignment == 0)
// {
// $selected = 1;
// } elseif ($pluginassingment < 0)
// {
// $selected = in_array(-$link->value, $this->value);
// } elseif ($pluginassignment > 0)
// {
$selected = in_array( $link->value, $this->value );
// }
$html .= '<li>
<div class="treeselect-item pull-left">
<input type="checkbox" class="pull-left" name="jform[menuexcluded][]" id="' . $id . $link->value . '" value="' . (int)$link->value . '"' . ( $selected ? ' checked="checked"' : '' ) . ' />
<label for="' . $id . $link->value . '" class="pull-left">
' . $link->text . ' <span class="small">' . JText::sprintf( 'JGLOBAL_LIST_ALIAS', htmlentities( $link->alias ) ) . '</span>
';
if ( JLanguageMultilang::isEnabled() && $link->language != '' && $link->language != '*' )
{
$html .= JHtml::_( 'image', 'mod_languages/' . $link->language_image . '.gif', $link->language_title, array( 'title' => $link->language_title ), true );
}
if ( $link->published == 0 )
{
$html .= ' <span class="label">' . JText::_( 'JUNPUBLISHED' ) . '</span>';
}
$html .= ' </label>
</div>';
$menuitems_limit = 50;
if ( ! isset( $type->links[ $i + 1 ] ) || $i > $menuitems_limit )
{
$html .= str_repeat( '</li></ul>', $link->level );
}
$prevlevel = $link->level;
if ( $i > $menuitems_limit )
{
break;
}
endforeach;
$html .= ' </li>';
endif;
endforeach;
$html .= ' </ul>
<div id="noresultsfound" style="display:none;" class="alert alert-no-items">
' . JText::_( 'JGLOBAL_NO_MATCHING_RESULTS' ) . '
</div>
<div style="display:none;" id="treeselectmenu">
<div class="pull-left nav-hover treeselect-menu">
<div class="btn-group">
<a href="#" data-toggle="dropdown" class="dropdown-toggle btn btn-micro">
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li class="nav-header">' . JText::_( 'JCH_SUBITEMS' ) . '</li> <li class="divider"></li>
<li class=""><a class="checkall" href="javascript://"><span class="icon-checkbox"></span> ' . JText::_( 'JSELECT' ) . '</a>
</li>
<li><a class="uncheckall" href="javascript://"><span class="icon-checkbox-unchecked"></span> ' . JText::_( 'JCH_DESELECT' ) . '</a>
</li>
<div class="treeselect-menu-expand">
<li class="divider"></li>
<li><a class="expandall" href="javascript://"><span class="icon-plus"></span>' . JText::_( 'JCH_EXPAND' ) . '</a></li>
<li><a class="collapseall" href="javascript://"><span class="icon-minus"></span>' . JText::_( 'JCH_COLLAPSE' ) . '</a></li>
</div>
</ul>
</div>
</div>
</div>
</div>';
endif;
return $html;
}
}