00001 <?php 00002 // dashboard_links.php - Show configured links 00003 // 00004 // SiT (Support Incident Tracker) - Support call tracking system 00005 // Copyright (C) 2010-2011 The Support Incident Tracker Project 00006 // Copyright (C) 2000-2009 Salford Software Ltd. and Contributors 00007 // 00008 // This software may be used and distributed according to the terms 00009 // of the GNU General Public License, incorporated herein by reference. 00010 // 00011 // Author: Paul Heaney <paulheaney[at]users.sourceforge.net> 00012 // Author: Nicolaas du Toit <> 00013 // Author: Carsten Jensen <carsten[at]sitracker.org> 00014 00015 00016 $dashboard_links_version = 1.05; 00017 00018 /* known bugs: 00019 When deleting a link on a site all links that points to the same site is deleted 00020 i18n doesn't work with dashlets so translations are done in the strings below 00021 */ 00022 00023 // i18n section, since dashlets cannot use i18n files 00024 $strAddLink = 'Add Link'; 00025 $strEditLinks = 'Edit Links'; 00026 $strReplaceFileHttp = 'If you want to add a file or folder, use file:// instead of http:// (only works on Internet Explorer)'; 00027 00028 00029 function dashboard_links($dashletid) 00030 { 00031 global $sit, $CONFIG, $iconset; 00032 00033 echo dashlet('links', $dashletid, icon('info', 16), $GLOBALS['strLinks'], '', $content); 00034 } 00035 00036 00037 function dashboard_links_install() 00038 { 00039 global $CONFIG; 00040 00041 $schema = "CREATE TABLE `{$CONFIG['db_tableprefix']}dashboard_links` ( 00042 `owner` smallint(6) NOT NULL, 00043 `url` varchar(255) NOT NULL, 00044 `name` varchar(255) NOT NULL, 00045 `enabled` enum('true','false') NOT NULL, 00046 KEY `owner` (`owner`,`url`) 00047 ) ENGINE = MYISAM ; 00048 "; 00049 $result = mysql_query($schema); 00050 if (mysql_error()) trigger_error(mysql_error(),E_USER_WARNING); 00051 if (mysql_error()) 00052 { 00053 echo "<p>Dashboard Links failed to install, please run the following SQL statement on the SiT database to create the required schema.</p>"; 00054 echo "<pre>{$schema}</pre>"; 00055 $res = FALSE; 00056 } 00057 else $res = TRUE; 00058 00059 $datasql = "INSERT INTO `{$CONFIG['db_tableprefix']}dashboard_links` (`owner`, `url`, `name`, `enabled`) VALUES (1, 'http://sitracker.org', 'SiT', 'true');"; 00060 $result = mysql_query($datasql); 00061 if (mysql_error()) trigger_error(mysql_error(),E_USER_WARNING); 00062 00063 return $res; 00064 } 00065 00066 00067 function dashboard_links_display($dashletid) 00068 { 00069 global $CONFIG, $dbInterfaceStyles, $dbDashboardRSS, $sit, $lib_path; 00070 00071 if ($_SESSION['auth'] == TRUE) $styleid = $_SESSION['style']; 00072 else $styleid = $CONFIG['default_interface_style']; 00073 00074 $csssql = "SELECT cssurl, iconset FROM `{$dbInterfaceStyles}` WHERE id='{$styleid}'"; 00075 $cssresult = mysql_query($csssql); 00076 if (mysql_error()) trigger_error(mysql_error(),E_USER_WARNING); 00077 else list($cssurl, $iconset) = mysql_fetch_row($cssresult); 00078 00079 $sql = "SELECT `url`, `name` FROM `{$CONFIG['db_tableprefix']}dashboard_links` WHERE `owner` = {$sit[2]} AND `enabled` = 'true'"; 00080 $result = mysql_query($sql); 00081 if (mysql_error()) trigger_error(mysql_error(),E_USER_WARNING); 00082 00083 if (mysql_num_rows($result) > 0) 00084 { 00085 echo "<table>\n"; 00086 //echo "<tr><th>{$GLOBALS['strLink']}</th></tr>\n"; 00087 $shade = 'shade1'; 00088 while ($row = mysql_fetch_row($result)) 00089 { 00090 $url = $row[0]; 00091 $urlparts = parse_url($url); 00092 echo "<tr class='$shade'>"; 00093 echo "<td width='16px' align='center'> <img src='{$urlparts['scheme']}://{$urlparts['host']}/favicon.ico' /></td> <td> <a target='_blank' href='{$url}' class='hyperlinks'>{$row[1]} </a></td></td>"; 00094 echo "</tr>\n"; 00095 $counter=0; 00096 00097 if ($shade == 'shade1') $shade = 'shade2'; 00098 else $shade = 'shade1'; 00099 } 00100 echo "</table>\n"; 00101 } 00102 else 00103 { 00104 echo "<p align='center'>{$GLOBALS['strNoRecords']}</p>"; 00105 } 00106 } 00107 00108 00109 function dashboard_links_edit($dashletid) 00110 { 00111 global $CONFIG, $sit; 00112 00113 $action = $_REQUEST['editaction']; 00114 00115 switch ($action) 00116 { 00117 case 'add': 00118 echo "<h2>".icon('add', 32)." {$GLOBALS['strAddLink']}</h2>"; 00119 echo "<form id='linkaddform' action='{$_SERVER['PHP_SELF']}?action=do_add' method='post'>"; 00120 echo "<table class='vertical'>"; 00121 echo "<tr><th><label>{$GLOBALS['strLink']}: </th><td><input type='text' name='url' size='45' value='http://' /></label></td></tr>\n"; 00122 echo "<tr><th><label>{$GLOBALS['strTitle']}: </th><td><input type='text' name='name' size='45' /></label></td></tr>\n"; 00123 echo "</table>"; 00124 // <input name='submit' type='submit' value='{$GLOBALS['strAdd']}' /> 00125 echo "<p align='center'>".dashlet_link('links', $dashletid, $GLOBALS['strAdd'], 'save', array('editaction'=>'do_add'), true, 'linkaddform')."</p>"; 00126 echo "{$GLOBALS['strReplaceFileHttp']}<br>"; 00127 00128 echo "</form>"; 00129 break; 00130 case 'do_add': 00131 $url = cleanvar($_REQUEST['url']); 00132 $enable = cleanvar($_REQUEST['enable']); 00133 $name = cleanvar($_REQUEST['name']); 00134 $sql = "INSERT INTO `{$CONFIG['db_tableprefix']}dashboard_links` (`owner`, `url`, `name`, `enabled`) VALUES ({$sit[2]}, '{$url}', '{$name}', 'true')"; 00135 $result = mysql_query($sql); 00136 if (mysql_error()) trigger_error(mysql_error(),E_USER_WARNING); 00137 00138 if (!$result) 00139 { 00140 echo "<p align='center' class='error'>{$GLOBALS['strFailed']}</p>"; 00141 } 00142 else 00143 { 00144 echo "<p align='center' class='success'>{$GLOBALS['strSuccess']}</p>"; 00145 echo dashlet_link('links', $dashletid, $GLOBALS['strBackToList'], '', '', TRUE); 00146 } 00147 break; 00148 case 'edit': 00149 // $url = cleanvar(urldecode($_REQUEST['url'])); 00150 $url = cleanvar($_REQUEST['url']); 00151 $sql = "SELECT * FROM `{$CONFIG['db_tableprefix']}dashboard_links` WHERE owner = {$sit[2]} AND url = '{$url}' LIMIT 1 "; 00152 if ($CONFIG['debug']) $dbg .= print_r($sql,true); 00153 $result = mysql_query($sql); 00154 if (mysql_error()) trigger_error(mysql_error(),E_USER_WARNING); 00155 if (mysql_num_rows($result) > 0) 00156 { 00157 $link = mysql_fetch_object($result); 00158 00159 echo "<h2>{$GLOBALS['strEditLinks']}</h2>"; 00160 echo "<form id='linkeditform' action='{$_SERVER['PHP_SELF']}?action=do_edit' method='post'>"; 00161 echo "<table class='vertical'>"; 00162 echo "<tr><td><label> ";//<img src='{$CONFIG['application_webpath']}images/icons/{$iconset}/16x16/edit.png' alt='Feed Icon' /> 00163 echo "{$GLOBALS['strLink']}: <input type='text' name='url' size='45' value='{$link->url}' /></label></td></tr>\n"; 00164 echo "<tr><td><label>{$GLOBALS['strTitle']}: <input type='text' name='name' size='45' value='{$link->name}' /></label></td></tr>"; 00165 echo "</table>"; 00166 echo "<input type='hidden' name='oldurl' size='45' value='{$link->url}' />"; 00167 echo "<p align='center'>".dashlet_link('links', $dashletid, $GLOBALS['strSave'], 'save', array('editaction'=>'do_edit'), false, 'linkeditform')."</p>"; 00168 echo "</form>"; 00169 } 00170 else 00171 { 00172 echo "<p align='center' class='error'>{$GLOBALS['strNoRecords']}</p>"; 00173 } 00174 break; 00175 case 'do_edit': 00176 $url = cleanvar($_REQUEST['url']); 00177 $oldurl = cleanvar($_REQUEST['oldurl']); 00178 $name = cleanvar($_REQUEST['name']); 00179 $sql = "UPDATE `{$CONFIG['db_tableprefix']}dashboard_links` SET `url` = '{$url}', `name` = '{$name}' WHERE `url` = '{$oldurl}' AND `owner` = '{$sit[2]}'"; 00180 $result = mysql_query($sql); 00181 if (mysql_error()) trigger_error(mysql_error(),E_USER_ERROR); 00182 00183 if (!$result) 00184 { 00185 echo "<p align='center' class='error'>{$GLOBALS['strFailed']}</p>"; 00186 } 00187 else 00188 { 00189 echo "<p align='center' class='success'>{$GLOBALS['strSuccess']}</p>"; 00190 echo dashlet_link('links', $dashletid, $GLOBALS['strBackToList'], '', '', TRUE); 00191 } 00192 break; 00193 case 'enable': 00194 $url = urldecode(cleanvar($_REQUEST['url'])); 00195 $enable = cleanvar($_REQUEST['enable']); 00196 $sql = "UPDATE `{$CONFIG['db_tableprefix']}dashboard_links` SET `enabled` = '{$enable}' WHERE `url` = '{$url}' AND `owner` = '{$sit[2]}'"; 00197 mysql_query($sql); 00198 if (mysql_error()) trigger_error(mysql_error(),E_USER_ERROR); 00199 00200 if (mysql_affected_rows() < 1) 00201 { 00202 echo "<p align='center' class='error'>{$GLOBALS['strFailed']}</p>"; 00203 } 00204 else 00205 { 00206 echo "<p align='center' class='success'>{$GLOBALS['strSuccess']}</p>"; 00207 echo dashlet_link('links', $dashletid, $GLOBALS['strBackToList'], '', '', TRUE); 00208 } 00209 break; 00210 case 'delete': 00211 $url = $_REQUEST['url']; 00212 $name = $_REQUEST['name']; 00213 $sql = "DELETE FROM `{$CONFIG['db_tableprefix']}dashboard_links` WHERE `url` = '{$url}' AND `owner` = {$sit[2]}"; 00214 $result = mysql_query($sql); 00215 if (mysql_error()) trigger_error(mysql_error(),E_USER_ERROR); 00216 00217 if (!$result) 00218 { 00219 echo "<p align='center' class='error'>{$GLOBALS['strFailed']}</p>"; 00220 } 00221 else 00222 { 00223 echo "<p align='center' class='success'>{$GLOBALS['strSuccess']}</p>"; 00224 echo dashlet_link('links', $dashletid, $GLOBALS['strBackToList'], '', '', true); 00225 } 00226 break; 00227 default: 00228 echo "<h2>".icon('edit', 32)."{$GLOBALS['strEditLinks']}</h2>"; 00229 00230 $sql = "SELECT * FROM `{$CONFIG['db_tableprefix']}dashboard_links` WHERE owner = {$sit[2]}"; 00231 $result = mysql_query($sql); 00232 if (mysql_error()) trigger_error(mysql_error(),E_USER_WARNING); 00233 00234 if (mysql_num_rows($result) > 0) 00235 { 00236 echo "<table align='center'>\n"; 00237 echo "<tr><th>{$GLOBALS['strLink']}</th><th>{$GLOBALS['strTitle']}</th><th>{$GLOBALS['strEnabled']}</th><th>{$GLOBALS['strOperation']}</th></tr>\n"; 00238 $shade = 'shade1'; 00239 while ($obj = mysql_fetch_object($result)) 00240 { 00241 if ($obj->enabled == "true") 00242 { 00243 $opposite = "false"; 00244 } 00245 else 00246 { 00247 $opposite = "true"; 00248 } 00249 00250 $urlparts = parse_url($obj->url); 00251 if ($obj->enabled == 'false') 00252 { 00253 $shade = 'expired'; 00254 } 00255 00256 echo "<tr class='$shade'><td align='left'><a target='_blank' href=\"".htmlentities($obj->url,ENT_NOQUOTES, $GLOBALS['i18ncharset'])."\">"; 00257 //echo icon('feed-icon', 12, $strFeedIcon); 00258 echo "</a> <a target='_blank' href=\"{$obj->url}\">{$urlparts['host']}</a></td>"; 00259 echo "<td>"; 00260 00261 echo "{$obj->name}"; 00262 00263 echo "</td>"; 00264 echo "<td>".dashlet_link('links', $dashletid, $obj->enabled, 'edit', array('editaction'=>'enable', 'enable'=>$opposite, 'url'=>urlencode($obj->url)))."</td>"; 00265 echo "<td>".dashlet_link('links', $dashletid, $GLOBALS['strEdit'], 'edit', array('editaction'=>'edit', 'url'=>urlencode($obj->url))); 00266 echo " | ".dashlet_link('links', $dashletid, $GLOBALS['strRemove'], 'edit', array('editaction'=>'delete', 'url'=>urlencode($obj->url))); 00267 echo "</td></tr>\n"; 00268 if ($shade == 'shade1') $shade = 'shade2'; 00269 else $shade = 'shade1'; 00270 } 00271 echo "</table>\n"; 00272 } 00273 else 00274 { 00275 echo "<p align='center'>{$GLOBALS['strNoLinksCurrentlyPresent']}</p>"; 00276 } 00277 echo "<p align='center'>".dashlet_link('links', $dashletid, $GLOBALS['strAdd'], 'edit', array('editaction'=>'add'))."</p>"; 00278 break; 00279 } 00280 } 00281 00282 00283 function dashboard_links_get_version() 00284 { 00285 global $dashboard_links_version; 00286 return $dashboard_links_version; 00287 } 00288 00289 ?>
For more help developing with SiT! see http://sitracker.org/wiki/DevelopmentHowTo