public function GetHTMLTable(WebPage $oPage, $aColumns, $sSelectMode, $iPageSize, $bViewLink, $aExtraParams) { $iNbPages = $iPageSize < 1 ? 1 : ceil($this->iNbObjects / $iPageSize); if ($iPageSize < 1) { $iPageSize = -1; // convention: no pagination } $aAttribs = $this->GetHTMLTableConfig($aColumns, $sSelectMode, $bViewLink); $aValues = $this->GetHTMLTableValues($aColumns, $sSelectMode, $iPageSize, $bViewLink, $aExtraParams); $sHtml = $oPage->GetTable($aAttribs, $aValues); return $sHtml; }
protected function GetHistoryTable(WebPage $oPage, DBObjectSet $oSet) { $sHtml = ''; // First the latest change that the user is allowed to see $oSet->Rewind(); // Reset the pointer to the beginning of the set $aChanges = array(); while ($oChangeOp = $oSet->Fetch()) { $sChangeDescription = $oChangeOp->GetDescription(); if ($sChangeDescription != '') { // The change is visible for the current user $changeId = $oChangeOp->Get('change'); $aChanges[$changeId]['date'] = $oChangeOp->Get('date'); $aChanges[$changeId]['userinfo'] = $oChangeOp->Get('userinfo'); if (!isset($aChanges[$changeId]['log'])) { $aChanges[$changeId]['log'] = array(); } $aChanges[$changeId]['log'][] = $sChangeDescription; } } $aAttribs = array('date' => array('label' => Dict::S('UI:History:Date'), 'description' => Dict::S('UI:History:Date+')), 'userinfo' => array('label' => Dict::S('UI:History:User'), 'description' => Dict::S('UI:History:User+')), 'log' => array('label' => Dict::S('UI:History:Changes'), 'description' => Dict::S('UI:History:Changes+'))); $aValues = array(); foreach ($aChanges as $aChange) { $aValues[] = array('date' => $aChange['date'], 'userinfo' => htmlentities($aChange['userinfo'], ENT_QUOTES, 'UTF-8'), 'log' => "<ul><li>" . implode('</li><li>', $aChange['log']) . "</li></ul>"); } $sHtml .= $oPage->GetTable($aAttribs, $aValues); return $sHtml; }
public function GetHTMLTable(WebPage $oPage, $aColumns, $sSelectMode, $iPageSize, $bViewLink, $aExtraParams) { $iNbPages = $iPageSize < 1 ? 1 : ceil($this->iNbObjects / $iPageSize); if ($iPageSize < 1) { $iPageSize = -1; // convention: no pagination } $aAttribs = $this->GetHTMLTableConfig($aColumns, $sSelectMode, $bViewLink); $aValues = $this->GetHTMLTableValues($aColumns, $sSelectMode, $iPageSize, $bViewLink, $aExtraParams); $sHtml = '<table class="listContainer">'; foreach ($this->oSet->GetFilter()->GetInternalParams() as $sName => $sValue) { $aExtraParams['query_params'][$sName] = $sValue; } $sHtml .= "<tr><td>"; $sHtml .= $oPage->GetTable($aAttribs, $aValues); $sHtml .= '</td></tr>'; $sHtml .= '</table>'; $iCount = $this->iNbObjects; $aArgs = $this->oSet->GetArgs(); $sExtraParams = addslashes(str_replace('"', "'", json_encode(array_merge($aExtraParams, $aArgs)))); // JSON encode, change the style of the quotes and escape them $sSelectModeJS = ''; $sHeaders = ''; if ($sSelectMode == 'single' || $sSelectMode == 'multiple') { $sSelectModeJS = $sSelectMode; $sHeaders = 'headers: { 0: {sorter: false}},'; } $sDisplayKey = $bViewLink ? 'true' : 'false'; // Protect against duplicate elements in the Zlist $aUniqueOrderedList = array(); foreach ($this->aClassAliases as $sAlias => $sClassName) { foreach ($aColumns[$sAlias] as $sAttCode => $aData) { if ($aData['checked']) { $aUniqueOrderedList[$sAttCode] = true; } } } $aUniqueOrderedList = array_keys($aUniqueOrderedList); $sJSColumns = json_encode($aColumns); $sJSClassAliases = json_encode($this->aClassAliases); $sCssCount = isset($aExtraParams['cssCount']) ? ", cssCount: '{$aExtraParams['cssCount']}'" : ''; $this->oSet->ApplyParameters(); // Display the actual sort order of the table $aRealSortOrder = $this->oSet->GetRealSortOrder(); $aDefaultSort = array(); $iColOffset = 0; if ($sSelectMode == 'single' || $sSelectMode == 'multiple') { $iColOffset += 1; } if ($bViewLink) { // $iColOffset += 1; } foreach ($aRealSortOrder as $sColCode => $bAscending) { $iPos = array_search($sColCode, $aUniqueOrderedList); if ($iPos !== false) { $aDefaultSort[] = "[" . ($iColOffset + $iPos) . "," . ($bAscending ? '0' : '1') . "]"; } else { if (($iPos = array_search(preg_replace('/_friendlyname$/', '', $sColCode), $aUniqueOrderedList)) !== false) { // if sorted on the friendly name of an external key, then consider it sorted on the column that shows the links $aDefaultSort[] = "[" . ($iColOffset + $iPos) . "," . ($bAscending ? '0' : '1') . "]"; } else { if ($sColCode == 'friendlyname' && $bViewLink) { $aDefaultSort[] = "[" . $iColOffset . "," . ($bAscending ? '0' : '1') . "]"; } } } } $sFakeSortList = ''; if (count($aDefaultSort) > 0) { $sFakeSortList = '[' . implode(',', $aDefaultSort) . ']'; } $sOQL = addslashes($this->oSet->GetFilter()->serialize()); $oPage->add_ready_script(<<<EOF var oTable = \$('#{$this->iListId} table.listResults'); oTable.tablesorter( { {$sHeaders} widgets: ['myZebra', 'truncatedList']} ).tablesorterPager({container: \$('#pager{$this->iListId}'), totalRows:{$iCount}, size: {$iPageSize}, filter: '{$sOQL}', extra_params: '{$sExtraParams}', select_mode: '{$sSelectModeJS}', displayKey: {$sDisplayKey}, columns: {$sJSColumns}, class_aliases: {$sJSClassAliases} {$sCssCount}}); EOF ); if ($sFakeSortList != '') { $oPage->add_ready_script("oTable.trigger(\"fakesorton\", [{$sFakeSortList}]);"); } //if ($iNbPages == 1) if (false) { if (isset($aExtraParams['cssCount'])) { $sCssCount = $aExtraParams['cssCount']; if ($sSelectMode == 'single') { $sSelectSelector = ":radio[name^=selectObj]"; } else { if ($sSelectMode == 'multiple') { $sSelectSelector = ":checkbox[name^=selectObj]"; } } $oPage->add_ready_script(<<<EOF \t\$('#{$this->iListId} table.listResults {$sSelectSelector}').change(function() { \t\tvar c = \$('{$sCssCount}');\t\t\t\t\t\t\t \t\tvar v = \$('#{$this->iListId} table.listResults {$sSelectSelector}:checked').length; \t\tc.val(v); \t\t\$('#{$this->iListId} .selectedCount').text(v); \t\tc.trigger('change');\t \t}); EOF ); } } return $sHtml; }