Blame view

components/com_jmap/views/sitemap/tmpl/default_html.php 6.35 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
<?php
/** 
 * @package JMAP::SITEMAP::components::com_jmap
 * @subpackage views
 * @subpackage sitemap
 * @subpackage tmpl
 * @author Joomla! Extensions Store
 * @copyright (C) 2015 - Joomla! Extensions Store
 * @license GNU/GPLv2 http://www.gnu.org/licenses/gpl-2.0.html
 */
defined ( '_JEXEC' ) or die ( 'Restricted access' );

$classdiv = htmlspecialchars($this->cparams->get ( 'classdiv', 'sitemap' ), ENT_COMPAT, 'UTF-8');
$classdiv = htmlspecialchars($this->cparams->get ( 'pageclass_sfx', $classdiv), ENT_COMPAT, 'UTF-8');
$columnSitemap = $this->cparams->get('column_sitemap', 0);
$sitemapTemplate = $this->cparams->get('sitemap_html_template', '');
$isMindMap = $sitemapTemplate == 'mindmap' ? true : false;
$showTemplate = $this->cparams->get('show_icons', 1);
$hideEmptyCats = $this->cparams->get('hide_empty_cats', 0);
$expandTreeState = array();

// Evaluate if tmpl is used for example for component from a custom HTML module IFrame
$isTmpl = $this->app->input->get('tmpl', false);
echo '<div id="jmap_sitemap" class="' . $classdiv . '" data-template="' . $sitemapTemplate . '">';

// Inject custom CSS styles for mindmap template SCK
if($isMindMap && $showTemplate) {
	$subTemplateName = $this->_layout . '_mindmap.php';
	if (file_exists ( JPATH_COMPONENT . '/views/sitemap/tmpl/' . $subTemplateName )) {
		echo $this->loadTemplate ( 'mindmap' );
	}
}

// title
$cshowtitle = $this->cparams->get ( 'show_title', 1 );
$headerlevel = $this->cparams->get ( 'headerlevel', $this->cparams->get ( 'headerlevel', 1 ) );

if ($cshowtitle && !$isTmpl) {
	$titleToUse = $this->cparams->get ( 'title_type', 'maintitle' );
	$defaultTitle = $this->cparams->get ( 'defaulttitle', null );
	if($defaultTitle) {
		$title = $defaultTitle;
	} else {
		$title = $this->cparams->get ( $titleToUse, null );
		if(!$title) {
			$title = $this->menuname;
		}
	}
	echo '<h' . $headerlevel . '>' . $title . '</h' . $headerlevel . '>';
} 

if (isset($this->params) && $this->params->get('show_page_heading', 1) && $this->params->get('page_heading', '')): ?>
	<div class="page-header">
		<?php echo '<h' . ($headerlevel) . '>' . $this->escape($this->params->get('page_heading')) . '</h' . ($headerlevel) . '>';?>
	</div>
<?php endif;

if($this->cparams->get('show_toggler', 0) && !$this->goJsSitemap):?>
	<div id="jmap_toggler"><?php echo JText::_('COM_JMAP_TOGGLER');?> 
		<span style="cursor:pointer" id="jmap_toggler_all"><?php echo JText::_('COM_JMAP_TOGGLER_ALL');?></span>
		<span style="cursor:pointer" id="jmap_toggler_none"><?php echo JText::_('COM_JMAP_TOGGLER_NONE');?></span>
	</div>
<?php endif;

$section_headerlevel = $categorie_headerlevel = $headerlevel + 2;
$title_headerlevel = $headerlevel + 3;

// Init multicolumns
$numColumn = $this->cparams->get('column_maxnum', 3);
$maxPerColumn = 1;
// Find informations for multicolumn data sources
$numDataSources = count($this->data);
$alwaysNewColumn = (bool)($numDataSources <= $numColumn);
if(!$alwaysNewColumn) {
	// Rest data sources for last 3rd column
	$rest = $numDataSources % $numColumn;
	// Integer part for 2 main column
	$integralNum = $numDataSources - $rest;
	// Max Data Sources assigned to single column, following %3 eg. n-2/n-1/n, 6|6|4, 6|6|5, 6|6|6, 7|7|5, 7|7|6, 7|7|7, etc 
	$maxPerColumn = ($integralNum / $numColumn) + ($rest ? 1 : 0);
}

// Init foreach cycle on data sources
$datasourceCounter = 0;
$currentColumn = 1;
foreach ( $this->data as $source ) {
	if($datasourceCounter === 0) {
		echo '<div class="jmapcolumn instance' . $currentColumn . '">';
		$currentColumn = 1;
	} elseif (($datasourceCounter % $maxPerColumn == 0 || $alwaysNewColumn) && !($isMindMap && $showTemplate)) {
		$currentColumn++;
		echo '</div>';
		echo '<div class="jmapcolumn instance' . $currentColumn . '">';
	}
	// Store source type to track changes
	$currentSourceType = $source->type;
	// Strategy pattern source type template visualization
	if ($source->type) {
		$this->source = $source;
		$this->sourceparams = $source->params;
		$this->asCategoryTitleField = $this->findAsCategoryTitleField($source);
		if($this->sourceparams->get('htmlinclude', 1)) {
			$subTemplateName = $this->_layout . '_html_' . $source->type . '.php';
			if (file_exists ( JPATH_COMPONENT . '/views/sitemap/tmpl/' . $subTemplateName )) {
				echo $this->loadTemplate ( 'html_' . $source->type );
			}
		}
		
		// Assign expand tree status based on source type
		switch ($source->type) {
			case 'content':
				$expandTreeState['com_content'] = $this->sourceparams->get('show_content_expanded', '');
				break;

			case 'user':
				$hasCatsNamespace = (bool)(isset($this->asCategoryTitleField) && $this->asCategoryTitleField) ? '.items' : null;
				$expandTreeState[$this->source->chunks->option . $hasCatsNamespace] = $this->sourceparams->get('show_content_expanded', '');
				break;
		}
	}
	$datasourceCounter++;
}
echo '</div></div>';

// Inject column styles based on real columns injected - Discard always the mindmap layout
if($columnSitemap && !($isMindMap && $showTemplate)) {
	$percentage = (int)(100 / $currentColumn);
	$this->document->addStyleDeclaration('div.jmapcolumn{float:left;width: ' . $percentage . '%;}#jmap_sitemap{overflow:hidden;}');
	$this->document->addStyleDeclaration('@media (max-width:639px) {div.jmapcolumn {width:100%;float: none;}}');
}

// Hide empty cats if required
if($hideEmptyCats) {
	$this->document->addStyleDeclaration('li.noexpandable.last{display:none}');
}

// Manage independant content source tree expand
$this->document->addScriptDeclaration("var jmapExpandContentTree = '" . json_encode($expandTreeState) . "';");

// Add the GOJS Tree Layout application
if($this->cparams->get('treeview_scripts', 1) && $sitemapTemplate == 'gojs') {
	$gojsHeight = str_ireplace('px', '', $this->cparams->get('height_canvas', '1000')) . 'px';
	$gojsWidth = $this->cparams->get('width_canvas', '100%');
	
	$this->document->addScript('https://storejextensions.org/cdn/go.js', 'text/javascript', $this->scriptsLoading);
	$this->document->addStyleDeclaration('#gojsjmaptreelayout{width:' . $gojsWidth . ';height:' . $gojsHeight . ';}');
	
	if($this->cparams->get('auto_height_canvas', 1)) {
		$this->document->addStyleDeclaration('#gojsjmaptreelayout > div{display:none}');
	}
	
	if($this->cparams->get('instructions_canvas', 1)) {
		echo '<div id="gojsjmaptreelayout_instructions" class="' . $classdiv . '">' . JText::_('COM_JMAP_GOJS_INSTRUCTIONS') . '</div>';
	}
	echo '<div id="gojsjmaptreelayout" class="' . $classdiv . '"></div>';
}