Commit 0f8e5bac9e7608cf534a174df7fca30777510907

Authored by Michael Joseph
1 parent f8bee8f2

added category name and document type list sorting


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@1746 c91229c3-7414-0410-bfa2-8a42b809f60b
lib/documentmanagement/DocumentBrowser.inc
@@ -92,8 +92,18 @@ class DocumentBrowser { @@ -92,8 +92,18 @@ class DocumentBrowser {
92 // FIXME: in the same unit? 92 // FIXME: in the same unit?
93 93
94 // if we're sorting by name then sort folders in the appropriate direction 94 // if we're sorting by name then sort folders in the appropriate direction
95 - $folderQuery = "SELECT id FROM $default->owl_folders_table WHERE parent_id=" . $folderID . " ORDER BY name " . ($sSortField == "name" ? $sSortDirection : "ASC");  
96 - $default->log->debug("DocumentBrowser::browseByFolder child folder query=$folderQuery"); 95 + $folderQuery = "SELECT f.id FROM $default->owl_folders_table f ";
  96 +
  97 + if ( $sSortField == "creator_id" ) {
  98 + $folderQuery .= "INNER JOIN " . $this->aSortCriteria["creator_id"]["lookup"]["lookupTable"] . " lt ON f.$sSortField=lt.id ";
  99 + }
  100 + $folderQuery .= "WHERE f.parent_id=$folderID ";
  101 + if ( $sSortField == "creator_id" ) {
  102 + $folderQuery .= "ORDER BY lt." . $this->aSortCriteria["creator_id"]["lookup"]["lookupField"] . " $sSortDirection";
  103 + } else {
  104 + $folderQuery .= "ORDER BY name " . ($sSortField == "name" ? $sSortDirection : "ASC");
  105 + }
  106 +
97 if ($sql->query($folderQuery)) { 107 if ($sql->query($folderQuery)) {
98 while ($sql->next_record()) { 108 while ($sql->next_record()) {
99 // add the child folders to the array 109 // add the child folders to the array
@@ -161,8 +171,10 @@ class DocumentBrowser { @@ -161,8 +171,10 @@ class DocumentBrowser {
161 $results["categories"][] = "Categories"; 171 $results["categories"][] = "Categories";
162 172
163 // get a list of category values 173 // get a list of category values
164 - $query = "SELECT DISTINCT value FROM $default->owl_document_fields_table WHERE document_field_id=$categoryFieldID ORDER BY value ASC";  
165 - $default->log->debug("DocumentBrowser::browseByCategory category listing query=$query"); 174 + $query = "SELECT DISTINCT value FROM $default->owl_document_fields_table " .
  175 + "WHERE document_field_id=$categoryFieldID " .
  176 + "ORDER BY value " . ($sSortField == "name" ? $sSortDirection : "ASC");
  177 +
166 $sql->query($query); 178 $sql->query($query);
167 // loop through resultset, build array and return 179 // loop through resultset, build array and return
168 while ($sql->next_record()) { 180 while ($sql->next_record()) {
@@ -210,7 +222,7 @@ class DocumentBrowser { @@ -210,7 +222,7 @@ class DocumentBrowser {
210 */ 222 */
211 function browseByDocumentType($documentTypeID = -1, $sSortField = "name", $sSortDirection = "asc") { 223 function browseByDocumentType($documentTypeID = -1, $sSortField = "name", $sSortDirection = "asc") {
212 global $default; 224 global $default;
213 - 225 +
214 $results = array(); 226 $results = array();
215 $sql = $default->db; 227 $sql = $default->db;
216 228
@@ -220,7 +232,8 @@ class DocumentBrowser { @@ -220,7 +232,8 @@ class DocumentBrowser {
220 $results["documentTypes"][] = array("name" => "Document Types"); 232 $results["documentTypes"][] = array("name" => "Document Types");
221 233
222 // return a list of document types 234 // return a list of document types
223 - $query = "SELECT * FROM $default->owl_document_types_table"; 235 + $query = "SELECT * FROM $default->owl_document_types_table ORDER BY name " . ($sSortField == "name" ? $sSortDirection : "ASC");
  236 +
224 $sql->query($query); 237 $sql->query($query);
225 while ($sql->next_record()) { 238 while ($sql->next_record()) {
226 $results["documentTypes"][] = array ("id" => $sql->f("id"), "name" => $sql->f("name")); 239 $results["documentTypes"][] = array ("id" => $sql->f("id"), "name" => $sql->f("name"));
presentation/lookAndFeel/knowledgeTree/documentmanagement/browseBL.php
@@ -61,7 +61,7 @@ if (checkSession()) { @@ -61,7 +61,7 @@ if (checkSession()) {
61 $oDocBrowser = new DocumentBrowser(); 61 $oDocBrowser = new DocumentBrowser();
62 // instantiate my content pattern 62 // instantiate my content pattern
63 $oContent = new PatternCustom(); 63 $oContent = new PatternCustom();
64 - 64 +
65 switch ($fBrowseType) { 65 switch ($fBrowseType) {
66 case "folder" : // retrieve folderID if present 66 case "folder" : // retrieve folderID if present
67 if (!$fFolderID) { 67 if (!$fFolderID) {
@@ -75,7 +75,7 @@ if (checkSession()) { @@ -75,7 +75,7 @@ if (checkSession()) {
75 case "category" : 75 case "category" :
76 $sectionName = "Manage Categories"; 76 $sectionName = "Manage Categories";
77 if (!$fCategoryName) { 77 if (!$fCategoryName) {
78 - $aResults = $oDocBrowser->browseByCategory(); 78 + $aResults = $oDocBrowser->browseByCategory("", $fSortBy, $fSortDirection);
79 } else { 79 } else {
80 $aResults = $oDocBrowser->browseByCategory($fCategoryName, $fSortBy, $fSortDirection); 80 $aResults = $oDocBrowser->browseByCategory($fCategoryName, $fSortBy, $fSortDirection);
81 } 81 }
@@ -84,7 +84,7 @@ if (checkSession()) { @@ -84,7 +84,7 @@ if (checkSession()) {
84 case "documentType" : 84 case "documentType" :
85 $sectionName = "Manage Document Types"; 85 $sectionName = "Manage Document Types";
86 if (!$fDocumentTypeID) { 86 if (!$fDocumentTypeID) {
87 - $aResults = $oDocBrowser->browseByDocumentType(); 87 + $aResults = $oDocBrowser->browseByDocumentType(-1, $fSortBy, $fSortDirection);
88 } else { 88 } else {
89 $aResults = $oDocBrowser->browseByDocumentType($fDocumentTypeID, $fSortBy, $fSortDirection); 89 $aResults = $oDocBrowser->browseByDocumentType($fDocumentTypeID, $fSortBy, $fSortDirection);
90 } 90 }
presentation/lookAndFeel/knowledgeTree/documentmanagement/browseUI.inc
@@ -21,7 +21,7 @@ function renderHeading($sHeading) { @@ -21,7 +21,7 @@ function renderHeading($sHeading) {
21 global $default; 21 global $default;
22 $sSectionName = $default->siteMap->getSectionName(substr($_SERVER["PHP_SELF"], strlen($default->rootUrl), strlen($_SERVER["PHP_SELF"]))); 22 $sSectionName = $default->siteMap->getSectionName(substr($_SERVER["PHP_SELF"], strlen($default->rootUrl), strlen($_SERVER["PHP_SELF"])));
23 $sColor = $default->siteMap->getSectionColour($sSectionName, "th"); 23 $sColor = $default->siteMap->getSectionColour($sSectionName, "th");
24 - $sToRender = "<table border=\"0\" width=\"100%\">\n"; 24 + $sToRender = "<table border=\"0\" width=\"600\">\n";
25 $sToRender .= "<tr align=\"left\"><th class=\"sectionHeading\" bgcolor=\"$sColor\"><font color=\"ffffff\">$sHeading</font></th></tr>\n"; 25 $sToRender .= "<tr align=\"left\"><th class=\"sectionHeading\" bgcolor=\"$sColor\"><font color=\"ffffff\">$sHeading</font></th></tr>\n";
26 $sToRender .= "<tr/>\n"; 26 $sToRender .= "<tr/>\n";
27 $sToRender .= "<tr/>\n"; 27 $sToRender .= "<tr/>\n";
@@ -46,7 +46,7 @@ function renderBrowseTypeSelect($sBrowseType) { @@ -46,7 +46,7 @@ function renderBrowseTypeSelect($sBrowseType) {
46 (($sBrowseType=="documentType") ? " checked=\"checked\"" : "") . "/> Document Type\n</span>"; 46 (($sBrowseType=="documentType") ? " checked=\"checked\"" : "") . "/> Document Type\n</span>";
47 } 47 }
48 48
49 -// <category display helper methods> 49 +// <category browse helper methods>
50 50
51 /** 51 /**
52 * Displays the passed category path as a link 52 * Displays the passed category path as a link
@@ -92,7 +92,20 @@ function renderCategoryResults($aResults) { @@ -92,7 +92,20 @@ function renderCategoryResults($aResults) {
92 if ($aResults["categories"][0] == "Categories") { 92 if ($aResults["categories"][0] == "Categories") {
93 // loop through categories and display them 93 // loop through categories and display them
94 for ($i=1; $i<count($aResults["categories"]); $i++) { 94 for ($i=1; $i<count($aResults["categories"]); $i++) {
95 - $sToRender .= "<tr><td bgcolor=\"" . getColour($i) . "\">" . displayCategoryLink($aResults["categories"][$i]) . "</td></tr>\n"; 95 + $sToRender .= "<tr bgcolor=\"" . getColour($i) . "\">";
  96 +
  97 + // category name
  98 + $sToRender .= "<td>" . displayCategoryLink($aResults["categories"][$i]) . "</td>";
  99 + // blank filename
  100 + $sToRender .= "<td></td>";
  101 + // creator name
  102 + $sToRender .= "<td></td>";
  103 + // modified date
  104 + $sToRender .= "<td></td>";
  105 + // document type
  106 + $sToRender .= "<td></td>";
  107 +
  108 + $sToRender .= "</tr>\n";
96 } 109 }
97 } else { 110 } else {
98 // else the first entry is the category name, so display the documents in the category 111 // else the first entry is the category name, so display the documents in the category
@@ -102,7 +115,7 @@ function renderCategoryResults($aResults) { @@ -102,7 +115,7 @@ function renderCategoryResults($aResults) {
102 return $sToRender; 115 return $sToRender;
103 } 116 }
104 117
105 -// </category display helper methods> 118 +// </category browse helper methods>
106 119
107 // <document type display helper methods> 120 // <document type display helper methods>
108 /** 121 /**
@@ -145,7 +158,18 @@ function renderDocumentTypeResults($aResults) { @@ -145,7 +158,18 @@ function renderDocumentTypeResults($aResults) {
145 if ($aResults["documentTypes"][0]["name"] == "Document Types") { 158 if ($aResults["documentTypes"][0]["name"] == "Document Types") {
146 // loop through document types and display them 159 // loop through document types and display them
147 for ($i=1; $i<count($aResults["documentTypes"]); $i++) { 160 for ($i=1; $i<count($aResults["documentTypes"]); $i++) {
148 - $sToRender .= "<tr><td bgcolor=\"" . getColour($i) . "\">" . displayDocumentTypeLink($aResults["documentTypes"][$i]) . "</td></tr>"; 161 + $sToRender .= "<tr bgcolor=\"" . getColour($i) . "\">";
  162 + // document type name
  163 + $sToRender .= "<td>" . displayDocumentTypeLink($aResults["documentTypes"][$i]) . "</td>";
  164 + // blank filename
  165 + $sToRender .= "<td></td>";
  166 + // creator name
  167 + $sToRender .= "<td></td>";
  168 + // modified date
  169 + $sToRender .= "<td></td>";
  170 + // document type
  171 + $sToRender .= "<td></td>";
  172 + $sToRender .= "</tr>\n";
149 } 173 }
150 } else { 174 } else {
151 // else the first entry is the document type name, so display the documents in the document type 175 // else the first entry is the document type name, so display the documents in the document type
@@ -154,9 +178,48 @@ function renderDocumentTypeResults($aResults) { @@ -154,9 +178,48 @@ function renderDocumentTypeResults($aResults) {
154 } 178 }
155 return $sToRender; 179 return $sToRender;
156 } 180 }
157 -// </document type display helper methods> 181 +// </document type browse helper methods>
158 182
159 183
  184 +// <folder browse helper methods>
  185 +/**
  186 + * Displays the folders in the browse results
  187 + *
  188 + * @param array the browse result objects
  189 + */
  190 +function renderFolderResults($aResults) {
  191 + global $default;
  192 + $sToRender = "";
  193 +
  194 + // now loop through the rest of the folders and display links
  195 + if (count($aResults["folders"]) > 1) {
  196 + for ($i=1; $i<count($aResults["folders"]); $i++) {
  197 + $sFolderLink = displayFolderLink($aResults["folders"][$i]);
  198 + $oCreator = User::get($aResults["folders"][$i]->getCreatorID());
  199 +
  200 + $sToRender .= "<tr bgcolor=\"" . getColour($i) . "\">";
  201 + // folder name
  202 + $sToRender .= "<td>" . $sFolderLink . "</td>";
  203 + // blank filename (??: folder description?)
  204 + $sToRender .= "<td></td>";
  205 + // creator name
  206 + $sToRender .= "<td>" . $oCreator->getName() . "</td>";
  207 + // modified date (TODO: add to db)
  208 + $sToRender .= "<td></td>";
  209 + // document type (??: display one of the mapped document types?)
  210 + $sToRender .= "<td></td>";
  211 + $sToRender .= "</tr>\n";
  212 + }
  213 + } else {
  214 + $sToRender .= "<tr><td colspan=\"5\">This folder contains no sub folders</td></tr>";
  215 + }
  216 +
  217 + $sToRender .= "<tr><td>" . renderDocumentList($aResults, "This folder contains no documents", "You don't have access to the documents in this folder") . "</td></tr>\n";
  218 +
  219 + return $sToRender;
  220 +}
  221 +// </folder browse helper methods>
  222 +
160 /** 223 /**
161 * Displays the headings for the displayed document details and enables 224 * Displays the headings for the displayed document details and enables
162 * resorting the contents 225 * resorting the contents
@@ -201,31 +264,6 @@ function renderSortHeadings($sSortBy, $sSortDirection) { @@ -201,31 +264,6 @@ function renderSortHeadings($sSortBy, $sSortDirection) {
201 } 264 }
202 265
203 /** 266 /**
204 - * Displays the folders in the browse results  
205 - *  
206 - * @param array the browse result objects  
207 - */  
208 -function renderFolderResults($aResults) {  
209 - global $default;  
210 - $sToRender = "";  
211 -  
212 - // now loop through the rest of the folders and display links  
213 - if (count($aResults["folders"]) > 1) {  
214 - for ($i=1; $i<count($aResults["folders"]); $i++) {  
215 - $sFolderLink = displayFolderLink($aResults["folders"][$i]);  
216 - $oCreator = User::get($aResults["folders"][$i]->getCreatorID());  
217 - $sToRender .= "<tr bgcolor=\"" . getColour($i) . "\"><td colspan=\"2\" nowrap width=\"100%\">" . $sFolderLink . "</td><td>" . $oCreator->getName() . "</td><td colspan=\"2\"></td></tr>\n";  
218 - }  
219 - } else {  
220 - $sToRender .= "<tr><td>This folder contains no sub folders</td></tr>";  
221 - }  
222 -  
223 - $sToRender .= "<tr><td>" . renderDocumentList($aResults, "This folder contains no documents", "You don't have access to the documents in this folder") . "</td></tr>\n";  
224 -  
225 - return $sToRender;  
226 -}  
227 -  
228 -/**  
229 * Displays the documents in the browse results 267 * Displays the documents in the browse results
230 * 268 *
231 * @param array the browse result objects 269 * @param array the browse result objects