_sCategTmplName = 'view_categ.html';
$this->_sCategTmplContent = '';
}
function getCategoriesView ($aTotalCategories, $sHrefTempl, $iColumns) {
$oSysTemplate = BxDolTemplate::getInstance();
if (empty($aTotalCategories))
return MsgBox(_t( '_Empty' ));
if (!$iColumns)
$iColumns = 1;
$iCount = count($aTotalCategories);
$iRowCount = floor($iCount / $iColumns) + (($iCount % $iColumns) ? 1 : 0);
$iWidthPr = floor(100 / $iColumns);
$i = 0;
$sCode = '
';
foreach( $aTotalCategories as $sCategory => $iCatCount )
{
if (!($i % $iRowCount))
{
if ($i)
$sCode .= '
';
$sCode .= '';
}
$aUnit['catHref'] = str_replace( '{tag}', urlencode(title2uri($sCategory)), $sHrefTempl);
$aUnit['category'] = htmlspecialchars_adv($sCategory );
$aUnit['count'] = $iCatCount;
if ($this->_sCategTmplContent)
$sCode .= $oSysTemplate->parseHtmlByContent($this->_sCategTmplContent, $aUnit);
else
$sCode .= $oSysTemplate->parseHtmlByName($this->_sCategTmplName, $aUnit);
$i++;
}
$sCode .= '
';
return $sCode;
}
function getCategTopMenu ($aParam, $sAction = '')
{
$aTopMenu = array();
$aParamTmp = $aParam;
foreach ($this->aTagObjects as $sKey => $aTagUnit)
{
$sName = _t($aTagUnit['LangKey']);
$sHref = bx_html_attribute($_SERVER['PHP_SELF']) . "?tags_mode=$sKey" . ($sAction ? '&action=' . $sAction : '');
if (isset($aParam['filter']) && $aParam['filter'])
{
$aParamTmp['type'] = $sKey;
$sName .= '(' . $this->getTagsCount($aParamTmp) . ')';
$sHref .= '&filter=' . $aParam['filter'];
}
if (isset($aParam['date']) && $aParam['date'])
$sHref .= '&year=' . $aParam['date']['year'] .
'&month=' . $aParam['date']['month'] .
'&day=' . $aParam['date']['day'];
$aTopMenu[$sName] = array('href' => $sHref, 'dynamic' => true, 'active' => ( $sKey == $aParam['type']));
}
return $aTopMenu;
}
function getCategTopMenuHtml($aParam, $iBoxId, $sAction = '')
{
$aItems = array();
$aTopMenu = $this->getCategTopMenu($aParam, $sAction);
foreach ($aTopMenu as $sName => $aItem)
{
$aItems[$sName] = array(
'dynamic' => true,
'active' => $aItem['active'],
'href' => $aItem['href']
);
}
return BxDolPageView::getBlockCaptionItemCode($iBoxId, $aItems);
}
function display($aParam, $iBoxId, $sAction = '', $bOrderPanel = false, $iColumns, $sUrl = '')
{
if (!isset($aParam['type']) || !$aParam['type'])
return MsgBox(_t( '_Empty' ));
$sPaginate = '';
$sCode = '';
$sPageUrl = $sUrl ? $sUrl : bx_html_attribute($_SERVER['PHP_SELF']);
$sPageUrl .= '?tags_mode=' . $aParam['type'];
if (!isset($aParam['orderby']) && isset($_REQUEST['orderby']) && $_REQUEST['orderby'])
$aParam['orderby'] = $_REQUEST['orderby'];
if (isset($aParam['filter']) && $aParam['filter'])
$sPageUrl .= '&filter=' . $aParam['filter'];
if (isset($aParam['orderby']) && $aParam['orderby'])
$sPageUrl .= '&orderby=' . $aParam['orderby'];
if ($sAction)
$sPageUrl .= '&action=' . $sAction;
if (isset($aParam['date']) && $aParam['date'])
{
$sPageUrl .= '&year=' . $aParam['date']['year'] .
'&month=' . $aParam['date']['month'] .
'&day=' . $aParam['date']['day'];
}
if (isset($aParam['pagination']) && $aParam['pagination'])
{
bx_import('BxDolPaginate');
$aPaginate = array(
'page_url' => $sPageUrl . '&page={page}&per_page={per_page}',
'info' => true,
'page_links' => true,
'on_change_page' => "!loadDynamicBlock($iBoxId, this.href)"
);
$aParam['limit'] = $aPaginate['per_page'] = $aParam['pagination'];
$aPaginate['count'] = $this->getTagsCount($aParam);
$aPaginate['page'] = isset($_REQUEST['page']) ? (int)$_REQUEST['page'] : 1;
$aParam['start'] = $aParam['limit'] * ($aPaginate['page'] - 1);
if ($aParam['start'] <=0)
$aParam['start'] = 0;
$oPaginate = new BxDolPaginate($aPaginate);
$sPaginate = ''.$oPaginate->getPaginate();
}
$sHrefTmpl = $this->getHrefWithType($aParam['type']);
$aTotalTags = $this->getTagList($aParam);
if ($aTotalTags)
{
if ($bOrderPanel)
$sCode .= $this->_getTopBox($aParam, $iBoxId, $sPageUrl);
$sCode .= $this->getCategoriesView($aTotalTags, $sHrefTmpl, $iColumns) . $sPaginate;
}
else
return MsgBox(_t( '_Empty' ));
return $sCode;
}
function setTemplateName($sTmplName)
{
$this->_sCategTmplName = $sTmplName;
}
function setTemplateContent($sTmplContent)
{
$this->_sCategTmplContent = $sTmplContent;
}
function _getTopBox($aParam, $iBoxId, $sPageUrl) {
$sCode = '';
$aValues = array(
'none' => _t('_categ_order_none'),
'popular' => _t('_categ_order_popular'),
'recent' => _t('_categ_order_recent')
);
$sTopCode = _t('_categ_order_order_by');
$sTopCode .= '';
$sCode = BxDolTemplate::getInstance()->parseHtmlByName('top_block.html', array('code' => $sTopCode));
return $sCode;
}
}