fileSystemRoot/presentation/Html.inc"); require_once("$default->uiDirectory/foldermanagement/folderUI.inc"); require_once("$default->uiDirectory/documentmanagement/documentUI.inc"); require_once("$default->uiDirectory/foldermanagement/addFolderUI.inc"); /** * $Id$ * * Document browsing page html UI building functions. * * Licensed under the GNU GPL. For full terms see the file DOCS/COPYING. * * @version $Revision$ * @author Michael Joseph , Jam Warehouse (Pty) Ltd, South Africa * @package presentation.lookAndFeel.knowledgeTree.documentmanagement */ function renderHeading($sHeading) { global $default; $sSectionName = $default->siteMap->getSectionName(substr($_SERVER["PHP_SELF"], strlen($default->rootUrl), strlen($_SERVER["PHP_SELF"]))); $sColor = $default->siteMap->getSectionColour($sSectionName, "th"); $sToRender = "\n"; $sToRender .= "\n"; $sToRender .= "\n"; $sToRender .= "\n"; $sToRender .= "
$sHeading
\n"; return $sToRender; } /** * Generates radio button selects for document browse by type * Javascript refreshes the form when it changes * * @param string the selected browse by option */ function renderBrowseTypeSelect($sBrowseType) { // TODO: write function for onChange that checks if the new value return "\n \tView documents by: Folders\n" . " Category\n" . " Document Type\n"; } // /** * Displays the passed category path as a link * * @param string the category name to display */ function displayCategoryPathLink($aCategories) { // if the first value in arr["categories"] == Categories then we've got a list of categories if ($aCategories[0] == "Categories") { return displayCategoryLink($aCategories[0]); } else { // else the first entry is the category name, so build a little path return displayCategoryLink("Categories") . " > " . displayCategoryLink($aCategories[0]); } } /** * Displays the passed category as a link * * @param string the category name to display */ function displayCategoryLink($sCategoryName) { if ($sCategoryName != "") { return generateLink($_SERVER["PHP_SELF"], "fBrowseType=category" . // if the category title is passed in, link back to the list of categories (($sCategoryName == "Categories") ? "" : "&fCategoryName=" . urlencode($sCategoryName)), $sCategoryName); } else { return false; } } /** * Displays the results for category browsing * * @param array the category browse results */ function renderCategoryResults($aResults) { $sToRender = ""; // if the first value in arr["categories"] == Categories then we've got a list of categories if ($aResults["categories"][0] == "Categories") { // loop through categories and display them for ($i=1; $i"; // category name $sToRender .= "" . displayCategoryLink($aResults["categories"][$i]) . ""; // blank filename $sToRender .= ""; // creator name $sToRender .= ""; // modified date $sToRender .= ""; // document type $sToRender .= ""; $sToRender .= "\n"; } } else { // else the first entry is the category name, so display the documents in the category // with full paths $sToRender .= renderDocumentList($aResults, "This category contains no documents", "You don't have access to the documents in this category", true); } return $sToRender; } // // /** * Displays the passed document type path as a link * * @param string the document type to display */ function displayDocumentTypePathLink($aDocumentTypes) { // if the first value in arr["categories"] == Categories then we've got a list of categories if ($aDocumentTypes[0]["name"] == "Document Types") { return displayDocumentTypeLink($aDocumentTypes[0]); } else { // else the first entry is the category name, so build a little path return displayDocumentTypeLink(array("name"=>"Document Types")) . " > " . displayDocumentTypeLink($aDocumentTypes[0]); } } /** * Displays the passed document type as a link * * @param string the document type to display */ function displayDocumentTypeLink($aDocumentType) { return generateLink($_SERVER["PHP_SELF"], "fBrowseType=documentType" . // if the document type title is passed in, link back to the list of document types (($aDocumentType["name"] == "Document Types") ? "" : "&fDocumentTypeID=" . $aDocumentType["id"]), $aDocumentType["name"]); } /** * Displays the results for document type browsing * * @param array the document type browse results */ function renderDocumentTypeResults($aResults) { $sToRender = ""; // if the first value in arr["documentTypes"] == Document Types then we've got a list of document types if ($aResults["documentTypes"][0]["name"] == "Document Types") { // loop through document types and display them for ($i=1; $i"; // document type name $sToRender .= "" . displayDocumentTypeLink($aResults["documentTypes"][$i]) . ""; // blank filename $sToRender .= ""; // creator name $sToRender .= ""; // modified date $sToRender .= ""; // document type $sToRender .= ""; $sToRender .= "\n"; } } else { // else the first entry is the document type name, so display the documents in the document type // with full paths $sToRender .= renderDocumentList($aResults, "This document type contains no documents", "You don't have access to the documents in this document type", true); } return $sToRender; } // // /** * Displays the folders in the browse results * * @param array the browse result objects */ function renderFolderResults($aResults) { global $default; $sToRender = ""; // now loop through the rest of the folders and display links if (count($aResults["folders"]) > 1) { for ($i=1; $igetCreatorID()); // the first element of the array contains the current folder name $sToRender .= ""; // folder name $sToRender .= "" . $sFolderLink . ""; // blank filename (??: folder description?) $sToRender .= ""; // creator name $sToRender .= "" . $oCreator->getName() . ""; // modified date (TODO: add to db) $sToRender .= ""; // document type (??: display one of the mapped document types?) $sToRender .= ""; $sToRender .= "\n"; } } else { $sToRender .= "This folder contains no sub folders"; } $sToRender .= "" . renderDocumentList($aResults, "This folder contains no documents", "You don't have access to the documents in this folder") . "\n"; return $sToRender; } // /** * Displays the headings for the displayed document details and enables * resorting the contents * * @param string the field currently sorting by * @param string the direction currently sorted in */ function renderSortHeadings($sSortBy, $sSortDirection) { global $default, $oBrowser, $fBrowseType, $fFolderID, $fCategoryName, $fDocumentTypeID; $sSectionName = $default->siteMap->getSectionName(substr($_SERVER["PHP_SELF"], strlen($default->rootUrl), strlen($_SERVER["PHP_SELF"]))); $sTDBGColour = $default->siteMap->getSectionColour($sSectionName, "td"); // need list of display criteria and sort name $aSortCriteria = $oBrowser->getSortCriteria(); $sToRender .= ""; while (list($key, $value) = each ($aSortCriteria)) { $sCurrentSortDirection = "asc"; $displayText = $value["display"]; // if the current heading is being sorted then flip the sort direction if ($sSortBy == $key) { $sCurrentSortDirection = ($sSortDirection == "asc" ? "desc" : "asc"); $displayText = "graphicsUrl/" . $sCurrentSortDirection . ".gif\">" . $displayText; } switch ($fBrowseType) { case "folder" : $queryString = "fFolderID=$fFolderID"; break; case "category" : $queryString = "fCategoryName=$fCategoryName"; break; case "documentType" : $queryString = "fDocumentTypeID=$fDocumentTypeID"; break; } $sToRender .= "" . generateLink($_SERVER["PHP_SELF"], "fBrowseType=$fBrowseType&$queryString&fSortBy=$key&fSortDirection=$sCurrentSortDirection", $displayText) . ""; } $sToRender .= "\n"; return $sToRender; } /** * Displays the documents in the browse results * * @param array the browse result objects * @param string the message to display if there are no documents * @param string the message to display if the current user doesn't have permission to view the documents * @param boolean whether to display the complete path to the document or not */ function renderDocumentList($aResults, $sNoDocumentsMessage, $sNoPermissionMessage, $bDisplayFullPath = false) { $iFolderCount = count($aResults["folders"]) - 1; // loop through the files and display links if (count($aResults["documents"]) > 0) { for ($i=0; $i" . displayDocumentLink($aResults["documents"][$i], $bDisplayFullPath) . ""; $sToRender .= "" . $aResults["documents"][$i]->getFileName() . ""; $oCreator = User::get($aResults["documents"][$i]->getCreatorID()); $sToRender .= "" . $oCreator->getName() . ""; $sToRender .= "" . $aResults["documents"][$i]->getLastModifiedDate() . ""; $oDocumentType = DocumentType::get($aResults["documents"][$i]->getDocumentTypeID()); if ($oDocumentType) { $sToRender .= "" . $oDocumentType->getName() . ""; } $sToRender .= "\n"; } } else if ($aResults["accessDenied"]) { $sToRender .= "$sNoPermissionMessage"; } else { $sToRender .= "$sNoDocumentsMessage"; } return $sToRender; } /** * Displays the browse page- lists folders and documents * * @param array the browse results to display * @param string the browse view (folder, category, document type) * @param string the field to sort the results by * @param string the direction to sort */ function renderPage($aResults, $sBrowseType, $sSortBy, $sSortDirection) { global $default; $sSectionName = $default->siteMap->getSectionName(substr($_SERVER["PHP_SELF"], strlen($default->rootUrl), strlen($_SERVER["PHP_SELF"]))); $sTDBGColour = $default->siteMap->getSectionColour($sSectionName, "td"); $sToRender = renderHeading("Browse Collection"); $sToRender .= "
"; switch ($sBrowseType) { case "folder" : $sToRender .= displayFolderPathLink(Folder::getFolderPathAsArray($aResults["folders"][0]->getID()), Folder::getFolderPathNamesAsArray($aResults["folders"][0]->getID())); break; case "category" : $sToRender .= displayCategoryPathLink($aResults["categories"]); break; case "documentType" : $sToRender .= displayDocumentTypePathLink($aResults["documentTypes"]); break; } $sToRender .= "
\n"; // browse type select $sToRender .= "\n"; $sToRender .= "\t"; $sToRender .= "\t
" . renderBrowseTypeSelect($sBrowseType) . "
"; // display folders|documents $sToRender .= "\n"; $sToRender .= renderSortHeadings($sSortBy, $sSortDirection); $sToRender .= "\n"; $sToRender .= "\t
\n"; switch ($sBrowseType) { case "folder" : $sToRender .= renderFolderResults($aResults, $sSortBy, $sSortDirection); break; case "category" : $sToRender .= renderCategoryResults($aResults); break; case "documentType" : $sToRender .= renderDocumentTypeResults($aResults); break; } $sToRender .= "
"; return $sToRender; } /** * Candy striping helper method */ function getColour($iColourCount) { return ($iColourCount%2 == 0) ? "F5F6EE" : "FFFFFF"; } ?>