N°2847 - Refactor

This commit is contained in:
Eric
2020-09-17 11:01:41 +02:00
parent f100e9bd09
commit 68b8490288
8 changed files with 14 additions and 117 deletions

View File

@@ -284,102 +284,7 @@ class TabManager
*/
public function RenderIntoContent(string $sContent, WebPage $oPage)
{
// Render the tabs in the page (if any)
$container_index = 0;
foreach ($this->m_aTabs as $sTabContainerName => $aTabs) {
$sTabs = '';
$sPrefix = $aTabs['prefix'];
if (count($aTabs['tabs']) > 0) {
// Clean tabs
foreach ($aTabs['tabs'] as $sTabCode => $aTabData) {
// Sometimes people set an empty tab to force content NOT to be rendered in the previous one. We need to remove them.
// Note: Look for "->SetCurrentTab('');" for examples.
if ($sTabCode === '') {
unset($aTabs['tabs'][$sTabCode]);
}
}
// Render tabs
if ($oPage->IsPrintableVersion()) {
$oPage->add_ready_script(
<<< EOF
oHiddeableChapters = {};
EOF
);
$sTabs = "<!-- tabs -->\n<div id=\"tabbedContent_{$sPrefix}{$container_index}\" class=\"light\">\n";
$i = 0;
foreach ($aTabs['tabs'] as $sTabCode => $aTabData) {
$sTabCodeForJs = addslashes($sTabCode);
$sTabTitleForHtml = utils::HtmlEntities($aTabData['title']);
$sTabId = "tab_{$sPrefix}{$container_index}$i";
switch ($aTabData['type']) {
case static::ENUM_TAB_TYPE_AJAX:
$sTabHtml = '';
$sUrl = $aTabData['url'];
$oPage->add_ready_script(
<<< EOF
$.post('$sUrl', {printable: '1'}, function(data){
$('#$sTabId > .printable-tab-content').append(data);
});
EOF
);
break;
case static::ENUM_TAB_TYPE_HTML:
default:
$sTabHtml = $aTabData['html'];
}
$sTabs .= "<div class=\"printable-tab\" id=\"$sTabId\"><h2 class=\"printable-tab-title\">$sTabTitleForHtml</h2><div class=\"printable-tab-content\">".$sTabHtml."</div></div>\n";
$oPage->add_ready_script(
<<< EOF
oHiddeableChapters['$sTabId'] = '$sTabTitleForHtml';
EOF
);
$i++;
}
$sTabs .= "</div>\n<!-- end of tabs-->\n";
} else {
$sTabs = "<!-- tabs -->\n<div id=\"tabbedContent_{$sPrefix}{$container_index}\" class=\"light\">\n";
$sTabs .= "<ul>\n";
// Display the unordered list that will be rendered as the tabs
$i = 0;
foreach ($aTabs['tabs'] as $sTabCode => $aTabData) {
$sTabCodeForHtml = utils::HtmlEntities($sTabCode);
$sTabTitleForHtml = utils::HtmlEntities($aTabData['title']);
switch ($aTabData['type']) {
case static::ENUM_TAB_TYPE_AJAX:
$sTabs .= "<li data-cache=\"".($aTabData['cache'] ? 'true' : 'false')."\"><a href=\"{$aTabData['url']}\" class=\"tab\" data-tab-id=\"$sTabCodeForHtml\"><span>$sTabTitleForHtml</span></a></li>\n";
break;
case static::ENUM_TAB_TYPE_HTML:
default:
$sTabs .= "<li><a href=\"#tab_{$sPrefix}{$container_index}$i\" class=\"tab\" data-tab-id=\"$sTabCodeForHtml\"><span>$sTabTitleForHtml</span></a></li>\n";
}
$i++;
}
$sTabs .= "</ul>\n";
// Now add the content of the tabs themselves
$i = 0;
foreach ($aTabs['tabs'] as $sTabCode => $aTabData) {
switch ($aTabData['type']) {
case static::ENUM_TAB_TYPE_AJAX:
// Nothing to add
break;
case static::ENUM_TAB_TYPE_HTML:
default:
$sTabs .= "<div id=\"tab_{$sPrefix}{$container_index}$i\">".$aTabData['html']."</div>\n";
}
$i++;
}
$sTabs .= "</div>\n<!-- end of tabs-->\n";
}
}
$sContent = str_replace("\$Tabs:$sTabContainerName\$", $sTabs, $sContent);
$container_index++;
}
return $sContent;
return '';
}
/**