Commit 236db07a61e480809c19df144a2f0c427b93c367

Authored by michael
1 parent 3e0ed804

integrated dashboard news into dashboard


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@1800 c91229c3-7414-0410-bfa2-8a42b809f60b
lib/dashboard/Dashboard.inc 0 → 100644
  1 +<?php
  2 +
  3 +require_once("$default->fileSystemRoot/lib/subscriptions/SubscriptionManager.inc");
  4 +require_once("$default->fileSystemRoot/lib/web/WebDocument.inc");
  5 +require_once("$default->fileSystemRoot/lib/links/link.inc");
  6 +
  7 +/**
  8 + * $Id$
  9 + *
  10 + * Contains dashboard helper functions
  11 + *
  12 + * Licensed under the GNU GPL. For full terms see the file COPYING.
  13 + *
  14 + * @version $Revision$
  15 + * @author Michael Joseph <michael@jamwarehouse.com>, Jam Warehouse (Pty) Ltd, South Africa
  16 + * @package lib.dashboard
  17 + */
  18 +
  19 +class Dashboard {
  20 +
  21 + /**
  22 + * The user id of the user viewing the dashboard
  23 + */
  24 + var $iUserID;
  25 +
  26 + /**
  27 + * Constructs a new instance of the Dashboard
  28 + * @param integer the user id of the current user
  29 + */
  30 + function Dashboard($iUserID){
  31 + $this->iUserID = $iUserID;
  32 + }
  33 +
  34 + /**
  35 + * Retrieves the collaboration documents that the current user has pending
  36 + *
  37 + * @param integer the user to retrieve pending collaboration documents for
  38 + */
  39 + function getPendingCollaborationDocuments(){
  40 + global $default;
  41 +
  42 + $sQuery = "SELECT document_id FROM $default->owl_folders_user_roles_table WHERE active=1 AND user_id=" . $this->iUserID;
  43 + $aDocumentList = array();
  44 + $sql = $default->db;
  45 + if ($sql->query($sQuery)) {
  46 + while ($sql->next_record()) {
  47 + $aDocumentList[] = & Document::get($sql->f("document_id"));
  48 + }
  49 + }
  50 + return $aDocumentList;
  51 + }
  52 +
  53 + /**
  54 + * Retrieve checked out documents for this user
  55 + *
  56 + * @return array of documents
  57 + */
  58 + function getCheckedOutDocuments(){
  59 + return Document::getList("checked_out_user_id=" . $this->iUserID);
  60 + }
  61 +
  62 + /**
  63 + * Retrieve subscription alerts for this user.
  64 + *
  65 + * @return array of subscription alerts
  66 + */
  67 + function getSubscriptionAlerts(){
  68 + return SubscriptionManager::listSubscriptionAlerts($this->iUserID);
  69 + }
  70 +
  71 + /**
  72 + * Retrieve quicklinks
  73 + *
  74 + * @return array of link objects
  75 + */
  76 + function getQuickLinks(){
  77 + return Link::getList("ORDER BY rank");
  78 + }
  79 +
  80 + /**
  81 + * Retrieves the web documents that the current user has pending
  82 + *
  83 + * @param integer the user to retrieve pending web documents for
  84 + */
  85 + function getPendingWebDocuments(){
  86 + global $default;
  87 + $sQuery = "SELECT wd.id FROM web_documents wd " .
  88 + "INNER JOIN web_sites ws ON wd.web_site_id = ws.id " .
  89 + "WHERE ws.web_master_id=" . $this->iUserID . " AND wd.status_id=1";
  90 + $aDocumentList = array();
  91 + $sql = $default->db;
  92 + if ($sql->query($sQuery)) {
  93 + while ($sql->next_record()) {
  94 + $aDocumentList[] = & WebDocument::get($sql->f("id"));
  95 + }
  96 + }
  97 + return $aDocumentList;
  98 + }
  99 +}
0 \ No newline at end of file 100 \ No newline at end of file
lib/dashboard/DashboardNews.inc
@@ -11,7 +11,7 @@ require_once(&quot;$default-&gt;fileSystemRoot/lib/documentmanagement/PhysicalDocumentMa @@ -11,7 +11,7 @@ require_once(&quot;$default-&gt;fileSystemRoot/lib/documentmanagement/PhysicalDocumentMa
11 * 11 *
12 * @version $Revision$ 12 * @version $Revision$
13 * @author Michael Joseph <michael@jamwarehouse.com>, Jam Warehouse (Pty) Ltd, South Africa 13 * @author Michael Joseph <michael@jamwarehouse.com>, Jam Warehouse (Pty) Ltd, South Africa
14 - * @package lib.authentication 14 + * @package lib.dashboard
15 */ 15 */
16 16
17 class DashboardNews { 17 class DashboardNews {
@@ -44,6 +44,14 @@ class DashboardNews { @@ -44,6 +44,14 @@ class DashboardNews {
44 * The mime type id of the image 44 * The mime type id of the image
45 */ 45 */
46 var $iImageMimeTypeID; 46 var $iImageMimeTypeID;
  47 + /**
  48 + * The maximum allowable width of an image
  49 + */
  50 + var $iMaxImageWidth = 80;
  51 + /**
  52 + * The maximum allowable height of an image
  53 + */
  54 + var $iMaxImageHeight = 40;
47 55
48 /** 56 /**
49 * Constructs a news item 57 * Constructs a news item
@@ -53,6 +61,8 @@ class DashboardNews { @@ -53,6 +61,8 @@ class DashboardNews {
53 * @param integer the rank 61 * @param integer the rank
54 */ 62 */
55 function DashboardNews($sNewSynopsis, $sNewBody, $iNewRank, $mImage = "") { 63 function DashboardNews($sNewSynopsis, $sNewBody, $iNewRank, $mImage = "") {
  64 + global $default;
  65 +
56 // primary key not set as document is not stored yet 66 // primary key not set as document is not stored yet
57 $this->iId = -1; 67 $this->iId = -1;
58 $this->setSynopsis($sNewSynopsis); 68 $this->setSynopsis($sNewSynopsis);
@@ -64,11 +74,16 @@ class DashboardNews { @@ -64,11 +74,16 @@ class DashboardNews {
64 $this->setImage($mImage["image"]); 74 $this->setImage($mImage["image"]);
65 $this->setImageSize($mImage["filesize"]); 75 $this->setImageSize($mImage["filesize"]);
66 $this->setImageMimeTypeID($mImage["mimetypeid"]); 76 $this->setImageMimeTypeID($mImage["mimetypeid"]);
67 - } else { 77 + } else if (strlen($mImage) > 0){
68 if (file_exists($mImage)) { 78 if (file_exists($mImage)) {
69 // we've been passed a file, so read it in 79 // we've been passed a file, so read it in
70 $this->setImageFile($mImage); 80 $this->setImageFile($mImage);
71 } 81 }
  82 + } else {
  83 + // initialise
  84 + $this->setImage("");
  85 + $this->setImageSize(0);
  86 + $this->setImageMimeTypeID(0);
72 } 87 }
73 } 88 }
74 89
@@ -103,6 +118,13 @@ class DashboardNews { @@ -103,6 +118,13 @@ class DashboardNews {
103 } 118 }
104 119
105 /** 120 /**
  121 + * Returns a fragment of the body
  122 + */
  123 + function getBodyFragment() {
  124 + return substr($this->sBody, 0, 50);
  125 + }
  126 +
  127 + /**
106 * Sets the body 128 * Sets the body
107 * 129 *
108 * @param string the new news body 130 * @param string the new news body
@@ -174,6 +196,47 @@ class DashboardNews { @@ -174,6 +196,47 @@ class DashboardNews {
174 */ 196 */
175 function setImageMimeTypeID($iNewMimeTypeID) { 197 function setImageMimeTypeID($iNewMimeTypeID) {
176 $this->iImageMimeTypeID = $iNewMimeTypeID; 198 $this->iImageMimeTypeID = $iNewMimeTypeID;
  199 + }
  200 +
  201 + /**
  202 + * Retrieve the maximum image width
  203 + */
  204 + function getMaxImageWidth() {
  205 + return $this->iMaxImageWidth;
  206 + }
  207 +
  208 + /**
  209 + * Set the maximum image width
  210 + *
  211 + * @param integer the maximum image width
  212 + */
  213 + function setMaxImageWidth($iNewMaxImageWidth) {
  214 + $this->iMaxImageWidth = $iNewMaxImageWidth;
  215 + }
  216 +
  217 + /**
  218 + * Retrieve the maximum image height
  219 + */
  220 + function getMaxImageHeight() {
  221 + return $this->iMaxImageHeight;
  222 + }
  223 +
  224 + /**
  225 + * Set the maximum image height
  226 + *
  227 + * @param integer the maximum image height
  228 + */
  229 + function setMaxImageHeight($iNewMaxImageHeight) {
  230 + $this->iMaxImageHeight = $iNewMaxImageHeight;
  231 + }
  232 +
  233 + /**
  234 + * Returns the maximum dimensions as a string
  235 + *
  236 + * @param string the maximum image dimensions
  237 + */
  238 + function getMaxImageDimensions() {
  239 + return $this->iMaxImageWidth . "x" . $this->iMaxImageHeight;
177 } 240 }
178 241
179 /** 242 /**
@@ -191,8 +254,10 @@ class DashboardNews { @@ -191,8 +254,10 @@ class DashboardNews {
191 * @param string path to the image on the filesystem 254 * @param string path to the image on the filesystem
192 */ 255 */
193 function setImageFile($sPathToImage){ 256 function setImageFile($sPathToImage){
  257 + global $default;
  258 + $default->log->info("set image file called with $sPathToImage");
194 if (file_exists($sPathToImage)) { 259 if (file_exists($sPathToImage)) {
195 - $aImage = $this->imageToString($sPathToImage); 260 + $aImage = $this->readInImage($sPathToImage);
196 $this->sImage = $aImage["image"]; 261 $this->sImage = $aImage["image"];
197 $this->iImageSize = $aImage["filesize"]; 262 $this->iImageSize = $aImage["filesize"];
198 $this->iImageMimeTypeID = $aImage["mimetypeid"]; 263 $this->iImageMimeTypeID = $aImage["mimetypeid"];
@@ -301,14 +366,14 @@ class DashboardNews { @@ -301,14 +366,14 @@ class DashboardNews {
301 global $default; 366 global $default;
302 $aDashboardNewsArray = array(); 367 $aDashboardNewsArray = array();
303 $sql = $default->db; 368 $sql = $default->db;
304 - $result = $sql->query("SELECT * FROM " . $default->owl_news_table . (isset($sWhereClause) ? " WHERE " . $sWhereClause : "")); 369 + $result = $sql->query("SELECT * FROM " . $default->owl_news_table . (isset($sWhereClause) ? " WHERE " . $sWhereClause : "") . " ORDER BY rank ASC");
305 if ($result) { 370 if ($result) {
306 $iCount = 0; 371 $iCount = 0;
307 while ($sql->next_record()) { 372 while ($sql->next_record()) {
308 $oDashboardNews = & DashboardNews::get($sql->f("id")); 373 $oDashboardNews = & DashboardNews::get($sql->f("id"));
309 $aDashboardNewsArray[$iCount++] = $oDashboardNews; 374 $aDashboardNewsArray[$iCount++] = $oDashboardNews;
310 } 375 }
311 - return $aDocumentArray; 376 + return $aDashboardNewsArray;
312 } 377 }
313 return false; 378 return false;
314 } 379 }
@@ -319,7 +384,7 @@ class DashboardNews { @@ -319,7 +384,7 @@ class DashboardNews {
319 * @param string path to the image file 384 * @param string path to the image file
320 * @return string the image as a string 385 * @return string the image as a string
321 */ 386 */
322 - function imageToString($sImagePath) { 387 + function readInImage($sImagePath) {
323 // check if the image exists 388 // check if the image exists
324 if (file_exists($sImagePath)) { 389 if (file_exists($sImagePath)) {
325 // read in the file 390 // read in the file
@@ -332,4 +397,29 @@ class DashboardNews { @@ -332,4 +397,29 @@ class DashboardNews {
332 return false; 397 return false;
333 } 398 }
334 } 399 }
  400 +
  401 + /**
  402 + * Evaluates the size of the image and returns false if it is too big
  403 + *
  404 + * @param integer the width of the image
  405 + * @param integer the height of the image
  406 + */
  407 + function checkImageSize($iImageWidth, $iImageHeight) {
  408 + global $default;
  409 + $default->log->info("comparing $iImageWidth:" . $this->iMaxImageWidth . "; $iImageHeight:" . $this->iMaxImageHeight);
  410 + if ( ($iImageWidth <= $this->iMaxImageWidth) && ($iImageHeight <= $this->iMaxImageHeight) ) {
  411 + return true;
  412 + } else {
  413 + return false;
  414 + }
  415 + }
  416 +
  417 + /**
  418 + * Returns the link text for linking to the current news item image
  419 + */
  420 + function getImageLink() {
  421 + global $default;
  422 +
  423 + return "<img width=\"$this->iMaxImageWidth\" height=\"$this->iMaxImageHeight\" src=\"$default->rootUrl/" . $default->siteMap->getPage("viewNewsImage") . "?fNewsID=" . $this->getID() . "\" border=\"0\">";
  424 + }
335 } 425 }
336 \ No newline at end of file 426 \ No newline at end of file
presentation/lookAndFeel/knowledgeTree/administration/news/newsUI.inc
@@ -15,19 +15,6 @@ require_once(&quot;$default-&gt;uiDirectory/administration/adminUI.inc&quot;); @@ -15,19 +15,6 @@ require_once(&quot;$default-&gt;uiDirectory/administration/adminUI.inc&quot;);
15 * @package presentation.lookAndFeel.knowledgeTree.administration.news 15 * @package presentation.lookAndFeel.knowledgeTree.administration.news
16 */ 16 */
17 17
18 -  
19 -function renderNewsPopupJavascript() {  
20 - global $default;  
21 - return "\n\n<SCRIPT LANGUAGE=\"javascript\">\n " .  
22 - "<!--\n" .  
23 - "function popupNews() {\n" .  
24 - "window.open ('" . generateControllerUrl("displayNews", "fNewsID=" ) . "', 'newwindow', config='height=400,width=600,left=400,top=300, toolbar=no, menubar=no, scrollbars=yes, resizable=no,location=no, directories=no, status=no');\n" .  
25 - "return false;\n" .  
26 - "}\n" .  
27 - "//-->\n" .  
28 - "</SCRIPT>\n\n";  
29 -}  
30 -  
31 /** 18 /**
32 * Displays an error message 19 * Displays an error message
33 */ 20 */
@@ -67,9 +54,10 @@ function renderNewsItem($oDashboardNews) { @@ -67,9 +54,10 @@ function renderNewsItem($oDashboardNews) {
67 global $default; 54 global $default;
68 55
69 $sToRender .= "<tr><td>Synopsis:</td><td>" . $oDashboardNews->getSynopsis() . "</td></tr>"; 56 $sToRender .= "<tr><td>Synopsis:</td><td>" . $oDashboardNews->getSynopsis() . "</td></tr>";
  57 +
70 $sToRender .= "<tr><td>Body:</td><td>" . $oDashboardNews->getBody() . "</td></tr>"; 58 $sToRender .= "<tr><td>Body:</td><td>" . $oDashboardNews->getBody() . "</td></tr>";
71 $sToRender .= "<tr><td>Rank:</td><td>" . $oDashboardNews->getRank() . "</td></tr>"; 59 $sToRender .= "<tr><td>Rank:</td><td>" . $oDashboardNews->getRank() . "</td></tr>";
72 - $sToRender .= "<tr><td colspan=\"2\">" . $oDashboardNews->getImageLink() . "</td></tr>"; 60 + //$sToRender .= "<tr><td colspan=\"2\">" . $oDashboardNews->getImageLink() . "</td></tr>";
73 61
74 $sToRender .= "<input type=\"hidden\" name=\"fNewsID\" value=\"" . $oDashboardNews->getID() . "\">"; 62 $sToRender .= "<input type=\"hidden\" name=\"fNewsID\" value=\"" . $oDashboardNews->getID() . "\">";
75 return $sToRender; 63 return $sToRender;
@@ -192,18 +180,4 @@ function renderDeleteNewsConfirmationPage($oDashboardNews) { @@ -192,18 +180,4 @@ function renderDeleteNewsConfirmationPage($oDashboardNews) {
192 $sToRender .= "</table>\n"; 180 $sToRender .= "</table>\n";
193 return $sToRender; 181 return $sToRender;
194 } 182 }
195 -  
196 -/**  
197 - * Displays a news item.  
198 - */  
199 -function renderNewsItemPage($oDashboardNews) {  
200 - global $default;  
201 -  
202 - $sToRender .= "<table>\n";  
203 - $sToRender .= renderNewsItem($oDashboardNews);  
204 - //$sToRender .= "<tr><td><a href=\"javascript:window.close()"><img src=\"$default->graphicsUrl/widgets/close.gif\" border=\"0\"></a></td></tr>\n";  
205 - $sToRender .= "<tr><td><a href=\"javascript:window.close()\">close</a></td></tr>\n";  
206 - $sToRender .= "</table>\n";  
207 - return $sToRender;  
208 -}  
209 ?> 183 ?>
210 \ No newline at end of file 184 \ No newline at end of file
presentation/lookAndFeel/knowledgeTree/dashboard/news/displayNewsImage.php
@@ -14,8 +14,9 @@ require_once(&quot;$default-&gt;fileSystemRoot/lib/dashboard/DashboardNews.inc&quot;); @@ -14,8 +14,9 @@ require_once(&quot;$default-&gt;fileSystemRoot/lib/dashboard/DashboardNews.inc&quot;);
14 * @author Michael Joseph <michael@jamwarehouse.com>, Jam Warehouse (Pty) Ltd, South Africa 14 * @author Michael Joseph <michael@jamwarehouse.com>, Jam Warehouse (Pty) Ltd, South Africa
15 * @package presentation.lookAndFeel.knowledgeTree.administration.news 15 * @package presentation.lookAndFeel.knowledgeTree.administration.news
16 */ 16 */
  17 +
17 if (isset($fNewsID)) { 18 if (isset($fNewsID)) {
18 $oNews = DashboardNews::get($fNewsID); 19 $oNews = DashboardNews::get($fNewsID);
19 $oNews->displayImage(); 20 $oNews->displayImage();
20 } 21 }
21 -?>  
22 \ No newline at end of file 22 \ No newline at end of file
  23 + ?>
23 \ No newline at end of file 24 \ No newline at end of file
presentation/lookAndFeel/knowledgeTree/dashboard/news/displayNewsItem.php 0 → 100644
  1 +<?php
  2 +
  3 +require_once("../../../../../config/dmsDefaults.php");
  4 +require_once("$default->fileSystemRoot/lib/dashboard/DashboardNews.inc");
  5 +require_once("$default->uiDirectory/dashboardUI.inc");
  6 +
  7 +/**
  8 + * $Id$
  9 + *
  10 + * Displays a news item.
  11 + *
  12 + * Licensed under the GNU GPL. For full terms see the file DOCS/COPYING.
  13 + *
  14 + * @version $Revision$
  15 + * @author Michael Joseph <michael@jamwarehouse.com>, Jam Warehouse (Pty) Ltd, South Africa
  16 + * @package presentation.lookAndFeel.knowledgeTree.administration.news
  17 + */
  18 +
  19 +if (checkSession()) {
  20 + if (isset($fNewsID)) {
  21 + $oNews = DashboardNews::get($fNewsID);
  22 + //$oNews->displayImage();
  23 + if ($oNews) {
  24 + echo renderNewsItemPage($oNews);
  25 + } else {
  26 + // do something intelligent like closing the popup automatically
  27 + // or more prosaically, printing an error message
  28 + }
  29 + }
  30 +}
  31 +?>
0 \ No newline at end of file 32 \ No newline at end of file
presentation/lookAndFeel/knowledgeTree/dashboardBL.php
@@ -2,10 +2,9 @@ @@ -2,10 +2,9 @@
2 2
3 // main library routines and defaults 3 // main library routines and defaults
4 require_once("../../../config/dmsDefaults.php"); 4 require_once("../../../config/dmsDefaults.php");
5 -require_once("$default->fileSystemRoot/lib/subscriptions/SubscriptionManager.inc");  
6 -require_once("$default->fileSystemRoot/lib/web/WebDocument.inc"); 5 +require_once("$default->fileSystemRoot/lib/dashboard/Dashboard.inc");
  6 +require_once("$default->fileSystemRoot/lib/dashboard/DashboardNews.inc");
7 require_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc"); 7 require_once("$default->fileSystemRoot/lib/visualpatterns/PatternCustom.inc");
8 -require_once("$default->fileSystemRoot/lib/links/link.inc");  
9 require_once("$default->uiDirectory/dashboardUI.inc"); 8 require_once("$default->uiDirectory/dashboardUI.inc");
10 9
11 /** 10 /**
@@ -26,46 +25,6 @@ require_once(&quot;$default-&gt;uiDirectory/dashboardUI.inc&quot;); @@ -26,46 +25,6 @@ require_once(&quot;$default-&gt;uiDirectory/dashboardUI.inc&quot;);
26 // page start 25 // page start
27 // ------------------------------- 26 // -------------------------------
28 27
29 -/**  
30 - * Retrieves the collaboration documents that the current user has pending  
31 - *  
32 - * @param integer the user to retrieve pending collaboration documents for  
33 - */  
34 -function getPendingCollaborationDocuments($iUserID) {  
35 - // TODO: move this to a more logical class/file  
36 - global $default;  
37 - $sQuery = "SELECT document_id FROM $default->owl_folders_user_roles_table WHERE active=1 AND user_id=" . $_SESSION["userID"];  
38 - $aDocumentList = array();  
39 - $sql = $default->db;  
40 - if ($sql->query($sQuery)) {  
41 - while ($sql->next_record()) {  
42 - $aDocumentList[] = & Document::get($sql->f("document_id"));  
43 - }  
44 - }  
45 - return $aDocumentList;  
46 -}  
47 -  
48 -/**  
49 - * Retrieves the web documents that the current user has pending  
50 - *  
51 - * @param integer the user to retrieve pending web documents for  
52 - */  
53 -function getPendingWebDocuments($iUserID) {  
54 - // TODO: move this to a more logical class/file  
55 - global $default;  
56 - $sQuery = "SELECT wd.id FROM web_documents wd " .  
57 - "INNER JOIN web_sites ws ON wd.web_site_id = ws.id " .  
58 - "WHERE ws.web_master_id=$iUserID AND wd.status_id=1";  
59 - $aDocumentList = array();  
60 - $sql = $default->db;  
61 - if ($sql->query($sQuery)) {  
62 - while ($sql->next_record()) {  
63 - $aDocumentList[] = & WebDocument::get($sql->f("id"));  
64 - }  
65 - }  
66 - return $aDocumentList;  
67 -}  
68 -  
69 if (checkSession()) { 28 if (checkSession()) {
70 // include the page template (with navbar) 29 // include the page template (with navbar)
71 require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc"); 30 require_once("$default->fileSystemRoot/presentation/webpageTemplate.inc");
@@ -73,19 +32,23 @@ if (checkSession()) { @@ -73,19 +32,23 @@ if (checkSession()) {
73 // instantiate my content pattern 32 // instantiate my content pattern
74 $oContent = new PatternCustom(); 33 $oContent = new PatternCustom();
75 34
  35 + // construct the dashboard object
  36 + $oDashboard = new Dashboard($_SESSION["userID"]);
  37 +
76 // retrieve collaboration pending documents for this user 38 // retrieve collaboration pending documents for this user
77 - $aPendingDocumentList = getPendingCollaborationDocuments($_SESSION["userID"]); 39 + $aPendingDocumentList = $oDashboard->getPendingCollaborationDocuments();
  40 +
78 // retrieve checked out documents for this user 41 // retrieve checked out documents for this user
79 - $aCheckedOutDocumentList = Document::getList("checked_out_user_id=" . $_SESSION["userID"]); 42 + $aCheckedOutDocumentList = $oDashboard->getCheckedOutDocuments();
80 43
81 // retrieve subscription alerts for this user 44 // retrieve subscription alerts for this user
82 - $aSubscriptionAlertList = SubscriptionManager::listSubscriptionAlerts($_SESSION["userID"]); 45 + $aSubscriptionAlertList = $oDashboard->getSubscriptionAlerts();
83 46
84 // retrieve quicklinks 47 // retrieve quicklinks
85 - $aQuickLinks = Link::getList("ORDER BY rank"); 48 + $aQuickLinks = $oDashboard->getQuickLinks();
86 49
87 // retrieve pending web documents 50 // retrieve pending web documents
88 - $aPendingWebDocuments = getPendingWebDocuments($_SESSION["userID"]); 51 + $aPendingWebDocuments = $oDashboard->getPendingWebDocuments();
89 52
90 // generate the html 53 // generate the html
91 $oContent->setHtml(renderPage($aPendingDocumentList, $aCheckedOutDocumentList, $aSubscriptionAlertList, $aQuickLinks, $aPendingWebDocuments)); 54 $oContent->setHtml(renderPage($aPendingDocumentList, $aCheckedOutDocumentList, $aSubscriptionAlertList, $aQuickLinks, $aPendingWebDocuments));
presentation/lookAndFeel/knowledgeTree/dashboardUI.inc
@@ -24,15 +24,15 @@ function renderPendingWebDocuments($aPendingDocumentList) { @@ -24,15 +24,15 @@ function renderPendingWebDocuments($aPendingDocumentList) {
24 24
25 if (count($aPendingDocumentList) > 0) { 25 if (count($aPendingDocumentList) > 0) {
26 $sBgColor = "#9D9D7F"; 26 $sBgColor = "#9D9D7F";
27 - $sToRender = "\t<tr align=\"left\" bgcolor=\"$sBgColor\">\n"; 27 + $sToRender = "\t\t\t<tr align=\"left\" bgcolor=\"$sBgColor\">\n";
28 28
29 - $sToRender .= "\t\t<th class=\"sectionHeading\" colspan=\"2\"><font color=\"ffffff\">Pending Web Documents</font></th>\n";  
30 - $sToRender .= "\t</tr>\n"; 29 + $sToRender .= "\t\t\t\t<th class=\"sectionHeading\" colspan=\"2\"><font color=\"ffffff\">Pending Web Documents</font></th>\n";
  30 + $sToRender .= "\t\t\t</tr>\n";
31 for ($i = 0; $i < count($aPendingDocumentList); $i++) { 31 for ($i = 0; $i < count($aPendingDocumentList); $i++) {
32 $oWebDocument = $aPendingDocumentList[$i]; 32 $oWebDocument = $aPendingDocumentList[$i];
33 - $sToRender .= "\t<tr>\n";  
34 - $sToRender .= "<td colspan=\"2\">" . generateControllerLink("webDocument", "fWebDocumentID=" . $oWebDocument->getID(), "<img src=\"$default->graphicsUrl/widgets/dstatus.gif\" border=\"0\"/>&nbsp;" . $oWebDocument->getDisplayPath()) . "</td>\n";  
35 - $sToRender .= "\t</tr>\n"; 33 + $sToRender .= "\t\t\t<tr>\n";
  34 + $sToRender .= "\t\t\t\t<td colspan=\"2\">" . generateControllerLink("webDocument", "fWebDocumentID=" . $oWebDocument->getID(), "<img src=\"$default->graphicsUrl/widgets/dstatus.gif\" border=\"0\"/>&nbsp;" . $oWebDocument->getDisplayPath()) . "</td>\n";
  35 + $sToRender .= "\t\t\t</tr>\n";
36 } 36 }
37 return $sToRender; 37 return $sToRender;
38 } else { 38 } else {
@@ -53,15 +53,15 @@ function renderPendingCollaborationDocuments($aPendingDocumentList) { @@ -53,15 +53,15 @@ function renderPendingCollaborationDocuments($aPendingDocumentList) {
53 } else { 53 } else {
54 $sBgColor = "#CECEBF"; 54 $sBgColor = "#CECEBF";
55 } 55 }
56 - $sToRender = "\t<tr align=\"left\" bgcolor=\"$sBgColor\">\n"; 56 + $sToRender = "\t\t\t<tr align=\"left\" bgcolor=\"$sBgColor\">\n";
57 57
58 - $sToRender .= "\t\t<th class=\"sectionHeading\" colspan=\"2\"><font color=\"ffffff\">Pending Documents</font></th>\n";  
59 - $sToRender .= "\t</tr>\n"; 58 + $sToRender .= "\t\t\t\t<th class=\"sectionHeading\" colspan=\"2\"><font color=\"ffffff\">Pending Documents</font></th>\n";
  59 + $sToRender .= "\t\t\t</tr>\n";
60 for ($i = 0; $i < count($aPendingDocumentList); $i++) { 60 for ($i = 0; $i < count($aPendingDocumentList); $i++) {
61 $oDocument = $aPendingDocumentList[$i]; 61 $oDocument = $aPendingDocumentList[$i];
62 - $sToRender .= "\t<tr>\n";  
63 - $sToRender .= "<td colspan=\"2\">" . generateControllerLink("viewDocument", "fDocumentID=" . $oDocument->getID(), "<img src=\"$default->graphicsUrl/widgets/dstatus.gif\" border=\"0\"/>&nbsp;" . $oDocument->getDisplayPath()) . "</td>\n";  
64 - $sToRender .= "\t</tr>\n"; 62 + $sToRender .= "\t\t\t<tr>\n";
  63 + $sToRender .= "\t\t\t\t<td colspan=\"2\">" . generateControllerLink("viewDocument", "fDocumentID=" . $oDocument->getID(), "<img src=\"$default->graphicsUrl/widgets/dstatus.gif\" border=\"0\"/>&nbsp;" . $oDocument->getDisplayPath()) . "</td>\n";
  64 + $sToRender .= "\t\t\t</tr>\n";
65 } 65 }
66 return $sToRender; 66 return $sToRender;
67 } 67 }
@@ -78,27 +78,27 @@ function renderCheckedOutDocuments($aCheckedOutDocumentList) { @@ -78,27 +78,27 @@ function renderCheckedOutDocuments($aCheckedOutDocumentList) {
78 } else { 78 } else {
79 $sBgColor = "#CECEBF"; 79 $sBgColor = "#CECEBF";
80 } 80 }
81 - $sToRender = "\t<tr align=\"left\" bgcolor=\"$sBgColor\">\n";  
82 - $sToRender .= "\t\t<th class=\"sectionHeading\" colspan=\"2\"><font color=\"ffffff\">Checked Out Documents</font></th>\n";  
83 - $sToRender .= "\t</tr>\n"; 81 + $sToRender = "\t\t\t<tr align=\"left\" bgcolor=\"$sBgColor\">\n";
  82 + $sToRender .= "\t\t\t\t<th class=\"sectionHeading\" colspan=\"2\"><font color=\"ffffff\">Checked Out Documents</font></th>\n";
  83 + $sToRender .= "\t\t\t</tr>\n";
84 84
85 if (count($aCheckedOutDocumentList) > 0) { 85 if (count($aCheckedOutDocumentList) > 0) {
86 - $sToRender .= "\t<tr>\n";  
87 - $sToRender .= "<th align=\"left\" width=\"66%\" class=\"sectionColumns\">\n";  
88 - $sToRender .= "Title\n"; 86 + $sToRender .= "\t\t\t<tr>\n";
  87 + $sToRender .= "\t\t\t\t<th align=\"left\" width=\"66%\" class=\"sectionColumns\">";
  88 + $sToRender .= "Title";
89 $sToRender .= "</th>\n"; 89 $sToRender .= "</th>\n";
90 - $sToRender .= "<th align=\"right\" width=\"33%\" class=\"sectionColumns\">\n";  
91 - $sToRender .= "Days\n";  
92 - $sToRender .= "</th>";  
93 - $sToRender .= "\t\t</tr>\n"; 90 + $sToRender .= "\t\t\t\t<th align=\"right\" width=\"33%\" class=\"sectionColumns\">";
  91 + $sToRender .= "Days";
  92 + $sToRender .= "\t\t\t\t</th>\n";
  93 + $sToRender .= "\t\t\t</tr>\n";
94 } 94 }
95 95
96 for ($i = 0; $i < count($aCheckedOutDocumentList); $i++) { 96 for ($i = 0; $i < count($aCheckedOutDocumentList); $i++) {
97 $oDocument = $aCheckedOutDocumentList[$i]; 97 $oDocument = $aCheckedOutDocumentList[$i];
98 - $sToRender .= "\t<tr>\n";  
99 - $sToRender .= "<td>" . generateControllerLink("viewDocument", "fDocumentID=" . $oDocument->getID(), "<img src=\"$default->graphicsUrl/widgets/dstatus.gif\" border=\"0\"/>&nbsp;" . $oDocument->getDisplayPath()) . "</td>\n";  
100 - $sToRender .= "<td align=right>" . $oDocument->getDaysSinceLastModified() . "</td>\n";  
101 - $sToRender .= "\t</tr>\n"; 98 + $sToRender .= "\t\t\t<tr>\n";
  99 + $sToRender .= "\t\t\t\t<td>" . generateControllerLink("viewDocument", "fDocumentID=" . $oDocument->getID(), "<img src=\"$default->graphicsUrl/widgets/dstatus.gif\" border=\"0\"/>&nbsp;" . $oDocument->getDisplayPath()) . "</td>\n";
  100 + $sToRender .= "\t\t\t\t<td align=right>" . $oDocument->getDaysSinceLastModified() . "</td>\n";
  101 + $sToRender .= "\t\t\t</tr>\n";
102 } 102 }
103 return $sToRender; 103 return $sToRender;
104 } 104 }
@@ -115,13 +115,13 @@ function renderSubscriptionAlerts($aSubscriptionAlertList) { @@ -115,13 +115,13 @@ function renderSubscriptionAlerts($aSubscriptionAlertList) {
115 } else { 115 } else {
116 $sBgColor = "#CECEBF"; 116 $sBgColor = "#CECEBF";
117 } 117 }
118 - $sToRender = "\t<tr align=\"left\" bgcolor=\"$sBgColor\">\n";  
119 - $sToRender .= "\t\t<th class=\"sectionHeading\" colspan=\"2\"><font color=\"ffffff\">Subscription Alerts</font></th>\n";  
120 - $sToRender .= "\t</tr>\n"; 118 + $sToRender = "\t\t\t<tr align=\"left\" bgcolor=\"$sBgColor\">\n";
  119 + $sToRender .= "\t\t\t\t<th class=\"sectionHeading\" colspan=\"2\"><font color=\"ffffff\">Subscription Alerts</font></th>\n";
  120 + $sToRender .= "\t\t\t</tr>\n";
121 for ($i = 0; $i < count($aSubscriptionAlertList); $i++) { 121 for ($i = 0; $i < count($aSubscriptionAlertList); $i++) {
122 - $sToRender .= "\t<tr>\n";  
123 - $sToRender .= "<td colspan=\"2\">" . $aSubscriptionAlertList[$i]->getAlertLink() . "</td>\n";  
124 - $sToRender .= "\t</tr>\n"; 122 + $sToRender .= "\t\t\t<tr>\n";
  123 + $sToRender .= "\t\t\t\t<td colspan=\"2\">" . $aSubscriptionAlertList[$i]->getAlertLink() . "</td>\n";
  124 + $sToRender .= "\t\t\t</tr>\n";
125 } 125 }
126 return $sToRender; 126 return $sToRender;
127 } 127 }
@@ -131,18 +131,46 @@ function renderSubscriptionAlerts($aSubscriptionAlertList) { @@ -131,18 +131,46 @@ function renderSubscriptionAlerts($aSubscriptionAlertList) {
131 */ 131 */
132 function renderQuickLinks($aQuickLinks) { 132 function renderQuickLinks($aQuickLinks) {
133 global $default; 133 global $default;
134 - $sToRender .= "\t<tr align=\"left\" bgcolor=\"#9D9D7F\">\n";  
135 - $sToRender .= "\t\t<th class=\"sectionHeading\">Quick Links</th>\n";  
136 - $sToRender .= "\t</tr>\n"; 134 + $sToRender .= "\t\t\t<tr align=\"left\" bgcolor=\"#9D9D7F\">\n";
  135 + $sToRender .= "\t\t\t\t<th class=\"sectionHeading\">Quick Links</th>\n";
  136 + $sToRender .= "\t\t\t</tr>\n";
137 for ($i = 0; $i < count($aQuickLinks); $i++) { 137 for ($i = 0; $i < count($aQuickLinks); $i++) {
138 - $sToRender .= "\t<tr>\n";  
139 - $sToRender .= "<td colspan=\"2\"><a href=\"" . $aQuickLinks[$i]->getUrl() . "\" target=\"_new\"><img src=\"$default->graphicsUrl/widgets/qlink.gif\" border=\"0\"/>" . $aQuickLinks[$i]->getName() . "</a></td>\n";  
140 - $sToRender .= "\t</tr>\n"; 138 + $sToRender .= "\t\t\t<tr>\n";
  139 + $sToRender .= "\t\t\t\t<td colspan=\"2\"><a href=\"" . $aQuickLinks[$i]->getUrl() . "\" target=\"_new\"><img src=\"$default->graphicsUrl/widgets/qlink.gif\" border=\"0\"/>" . $aQuickLinks[$i]->getName() . "</a></td>\n";
  140 + $sToRender .= "\t\t\t</tr>\n";
141 } 141 }
142 return $sToRender; 142 return $sToRender;
143 } 143 }
144 144
145 /** 145 /**
  146 + * Displays the dashboard news items
  147 + *
  148 + */
  149 +function renderDashboardNews() {
  150 + global $default;
  151 +
  152 + // retrieve all news items
  153 + $aDashboardNews = DashboardNews::getList();
  154 +
  155 + $sToRender .= "\t\t\t<table border=\"0\" width=\"100%\">\n";
  156 + // the main news item
  157 + $oMainDashboardNews = $aDashboardNews[0];
  158 + $sToRender .= "\t\t\t\t<tr><td><strong>" . $oMainDashboardNews->getSynopsis() . "</strong></td></tr>\n";
  159 + $sToRender .= "\t\t\t\t<tr><td>" . $oMainDashboardNews->getImageLink() . "</td></tr>\n";
  160 + $sToRender .= "\t\t\t\t<tr><td>" . $oMainDashboardNews->getBodyFragment() . "..... <a href=\"#\" onClick=\"javascript:window.open('" . generateControllerUrl("viewNewsItem", "fNewsID=" . $oMainDashboardNews->getID()) . "', 'newwindow', config='height=200,width=300,left=0,top=0, toolbar=no, menubar=no, scrollbars=yes, resizable=no,location=no, directories=no, status=no');return false;\">more</a></td></tr>\n";
  161 +
  162 + // links to old news items
  163 + /*
  164 + for ($i=1; $i<count($aDashboardNews); $i++) {
  165 + $sToRender .= "\t\t\t\t<tr><td>" . generateControllerLink("viewNewsItem", "fNewsID=" . $aDashboardNews[$i]->getID(), $aDashboardNews[$i]->getSynopsis()) . "</td></tr>\n";
  166 + }
  167 + */
  168 + $sToRender .= "\t\t\t</table>\n";
  169 +
  170 + return $sToRender;
  171 +}
  172 +
  173 +/**
146 * Renders the dashboard 174 * Renders the dashboard
147 * 175 *
148 * @param array pending collaboration documents for this user 176 * @param array pending collaboration documents for this user
@@ -153,18 +181,23 @@ function renderPage($aPendingDocumentList, $aCheckedOutDocumentList, $aSubscript @@ -153,18 +181,23 @@ function renderPage($aPendingDocumentList, $aCheckedOutDocumentList, $aSubscript
153 global $default; 181 global $default;
154 182
155 $sToRender = "<table border=\"0\" width=\"600\" >\n"; 183 $sToRender = "<table border=\"0\" width=\"600\" >\n";
156 - $sToRender .= "\t<tr>\n";  
157 - $sToRender .= "\t\t<td><img src=\"$default->graphicsUrl/welcome.gif\"/></td>\n"; 184 + $sToRender .= "\t<tr valign=\"top\">\n";
  185 + $sToRender .= "\t\t<td><img src=\"$default->graphicsUrl/welcome.gif\" border=\"0\"/></td>\n";
158 186
159 // some arb welcoming text goes here 187 // some arb welcoming text goes here
160 $oUser = & User::get($_SESSION["userID"]); 188 $oUser = & User::get($_SESSION["userID"]);
161 $sUserName = $oUser->getName(); 189 $sUserName = $oUser->getName();
162 $sToRender .= "\t\t<td>Hi" . (strlen($sUserName) > 0 ? " " . $sUserName : "") . ", welcome back to the " . lookupField($default->owl_organisations_table, "name", "id", $default->organisationID) . " DMS, part of the Knowledge Tree.</td>\n"; 190 $sToRender .= "\t\t<td>Hi" . (strlen($sUserName) > 0 ? " " . $sUserName : "") . ", welcome back to the " . lookupField($default->owl_organisations_table, "name", "id", $default->organisationID) . " DMS, part of the Knowledge Tree.</td>\n";
163 - $sToRender .= "\t</tr>\n"; 191 +
  192 + // dashboard news
  193 + $sToRender .= "\t\t<td>\n";
  194 + $sToRender .= renderDashboardNews();
  195 + $sToRender .= "\t\t</td>\n";
  196 + $sToRender .= "\t</tr>\n";
164 197
165 // dashboard alerts 198 // dashboard alerts
166 $sToRender .= "\t<tr>\n"; 199 $sToRender .= "\t<tr>\n";
167 - $sToRender .= "\t\t<td width=\"50%\" valign=\"top\" colspan=2>\n"; 200 + $sToRender .= "\t\t<td width=\"50%\" valign=\"top\" colspan=\"2\">\n";
168 $sToRender .= "\t\t\t<table border=\"0\" width=\"100%\">\n"; 201 $sToRender .= "\t\t\t<table border=\"0\" width=\"100%\">\n";
169 $sToRender .= renderPendingWebDocuments($aWebDocuments) . "\n"; 202 $sToRender .= renderPendingWebDocuments($aWebDocuments) . "\n";
170 $sToRender .= renderPendingCollaborationDocuments($aPendingDocumentList); 203 $sToRender .= renderPendingCollaborationDocuments($aPendingDocumentList);
@@ -185,4 +218,29 @@ function renderPage($aPendingDocumentList, $aCheckedOutDocumentList, $aSubscript @@ -185,4 +218,29 @@ function renderPage($aPendingDocumentList, $aCheckedOutDocumentList, $aSubscript
185 218
186 return $sToRender; 219 return $sToRender;
187 } 220 }
188 -?> 221 +
  222 +/**
  223 + * Displays a news item
  224 + */
  225 +function renderNewsItemPage($oDashboardNews) {
  226 + global $default;
  227 +
  228 + $sToRender .= "<html>\n";
  229 + $sToRender .= "<head>\n";
  230 + $sToRender .= "<meta http-equiv=\"refresh\" content=\"" . ($default->sessionTimeout+3) . "\">\n";
  231 + $sToRender .= "<link rel=\"SHORTCUT ICON\" href=\"$default->graphicsUrl/tree.ico\">\n";
  232 + $sToRender .= "<link rel=\"stylesheet\" href=\"$default->uiUrl/stylesheet.php\">\n";
  233 + $sToRender .= "</head>\n";
  234 + $sToRender .= "<body marginleft=\"0\" marginheight=\"0\">\n";
  235 + $sToRender .= "\t\t\t<table border=\"0\" width=\"100%\">\n";
  236 + $sToRender .= "\t\t\t\t<tr><td><strong>" . $oDashboardNews->getSynopsis() . "</strong></td></tr>\n";
  237 + $sToRender .= "\t\t\t\t<tr><td>" . $oDashboardNews->getImageLink() . "</td></tr>\n";
  238 + $sToRender .= "\t\t\t\t<tr><td>" . $oDashboardNews->getBody() . "</td></tr>\n";
  239 + $sToRender .= "<tr><td><a href=\"javascript:window.close()\">close</a></td></tr>\n";
  240 + $sToRender .= "</table>";
  241 + $sToRender .= "</body>";
  242 + $sToRender .= "</html>";
  243 +
  244 + return $sToRender;
  245 +}
  246 +?>
189 \ No newline at end of file 247 \ No newline at end of file