Commit c217daac55cd74c8003ea384b00078b2f7bff6fb

Authored by nbm
1 parent 9f717f27

No longer used.


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@4538 c91229c3-7414-0410-bfa2-8a42b809f60b
lib/visualpatterns/PatternBrowsableSearchResults.inc deleted
1 -<?php  
2 -/**  
3 - * $Id$  
4 - *  
5 - * Renders paginated query results in a table.  
6 - *  
7 - * Copyright (c) 2003 Jam Warehouse http://www.jamwarehouse.com  
8 - *  
9 - * This program is free software; you can redistribute it and/or modify  
10 - * it under the terms of the GNU General Public License as published by  
11 - * the Free Software Foundation; either version 2 of the License, or  
12 - * (at your option) any later version.  
13 - *  
14 - * This program is distributed in the hope that it will be useful,  
15 - * but WITHOUT ANY WARRANTY; without even the implied warranty of  
16 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the  
17 - * GNU General Public License for more details.  
18 - *  
19 - * You should have received a copy of the GNU General Public License  
20 - * along with this program; if not, write to the Free Software  
21 - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA  
22 - *  
23 - * @version $Revision$  
24 - * @author Rob Cherry, Jam Warehouse (Pty) Ltd, South Africa  
25 - * @package lib.visualpatterns  
26 - */  
27 -  
28 -require_once(KT_LIB_DIR . '/visualpatterns/PatternTableSqlQuery.inc');  
29 -  
30 -class PatternBrowseableSearchResults {  
31 -  
32 - /** query to be executed */  
33 - var $sQuery;  
34 - /** columns in query to be displayed */  
35 - var $aColumns;  
36 - /** column types */  
37 - var $aColumnTypes;  
38 - /** column headings to display */  
39 - var $aColumnHeadings;  
40 - /** link href for column type 3 */  
41 - var $aLinkURLs;  
42 - /** database column values to append to link url if a column type of 3 is specified */  
43 - var $aDBQueryStringColumns;  
44 - /** variables names to give $aDBQueryStringColumns on the query string */  
45 - var $aQueryStringVariableNames;  
46 - /** number of results to display per page */  
47 - var $iResultsToDisplay;  
48 - /* Result number to start on */  
49 - var $iStartIndex;  
50 - /** Column to order by */  
51 - var $sOrderByColumn;  
52 - /** direction of ordering, ascending or descending */  
53 - var $sOrderDirection = "ASC";  
54 - /** New QueryString when submitting to self */  
55 - var $sQueryString;  
56 - /** Search criteria **/  
57 - var $sSearchText;  
58 - /** Advanced Search Criteria to remember **/  
59 - var $aRememberValues;  
60 -  
61 - function PatternBrowseableSearchResults($sTmpQuery, $iTmpResultsToDisplay, $aTmpColumns, $aTmpColumnTypes, $aTmpColumnHeaders, $aTmpLinkURLs = null, $aTmpDBQueryStringColumns = null, $aTmpQueryStringVariableNames = null) {  
62 - $this->sQuery = $sTmpQuery;  
63 - $this->iResultsToDisplay = $iTmpResultsToDisplay;  
64 - $this->aColumns = $aTmpColumns;  
65 - $this->aColumnHeadings = $aTmpColumnHeaders;  
66 - $this->aColumnTypes = $aTmpColumnTypes;  
67 - $this->aLinkURLs = $aTmpLinkURLs;  
68 - $this->aDBQueryStringColumns = $aTmpDBQueryStringColumns;  
69 - $this->aQueryStringVariableNames = $aTmpQueryStringVariableNames;  
70 - $this->sQueryString = "";  
71 - $this->aRememberValues = array();  
72 - }  
73 -  
74 - function setQueryString($sNewQueryString) {  
75 - $this->sQueryString = $sNewQueryString;  
76 - }  
77 -  
78 - function getQueryString() {  
79 - return $this->sOrderByColumn;  
80 - }  
81 -  
82 - function setStartIndex($iNewValue) {  
83 - $this->iStartIndex = $iNewValue;  
84 - }  
85 -  
86 - function setOrderByColumn($sNewValue) {  
87 - $this->sOrderByColumn = $sNewValue;  
88 - }  
89 -  
90 - function setOrderDirection($sNewValue) {  
91 - $this->sOrderDirection = $sNewValue;  
92 - }  
93 - function setSearchText($sNewValue) {  
94 - $this->sSearchText = $sNewValue;  
95 - }  
96 -  
97 - function setRememberValues($aRemember) {  
98 - $this->aRememberValues = $aRemember;  
99 - }  
100 -  
101 - /**  
102 - * Build the HTML string used to render the object  
103 - *  
104 - * @return String of HTML used to render object  
105 - *  
106 - * @todo possibly add in image size restraints for link types 2 and 3  
107 - */  
108 - function & render() {  
109 - global $default;  
110 -  
111 - $sSectionName = $default->siteMap->getSectionName(substr($_SERVER["PHP_SELF"], strlen($default->rootUrl), strlen($_SERVER["PHP_SELF"])));  
112 - $sTHBGColour = $default->siteMap->getSectionColour($sSectionName, "th");  
113 -  
114 - // run the query first and get the number of rows  
115 - $iTotalResults = $this->getResultCount();  
116 -  
117 - // now add the limit and offset stuff for cutting down result set  
118 - // decrement startIndex because LIMIT starts at zero and startIndex starts at 1 (for display purposes)  
119 - if (is_array($this->sQuery)) {  
120 - $sQuery = $this->sQuery[0];  
121 - $aParams = $this->sQuery[1];  
122 - } else {  
123 - $sQuery = $this->sQuery;  
124 - $aParams = array();  
125 - }  
126 - $sQuery = $sQuery . " LIMIT ?, ?";  
127 - $aParams[] = $this->iStartIndex - 1;  
128 - $aParams[] = $this->iResultsToDisplay;  
129 -  
130 - $oResult = DBUtil::runQuery(array($sQuery, $aParams));  
131 - if (PEAR::isError($oResult)) {  
132 - $GLOBALS['default']->log->error('PatternBrowsableSearchResults: query returned error: ' . $oResult->getMessage());  
133 - return $oResult;  
134 - }  
135 - $oResultSet = new SqlResultSetAdapter($oResult);  
136 -  
137 - if ($oResultSet->isEmpty()) {  
138 - //no results  
139 - $sToRender .= "<table width=\"100%\" height=\"80%\">\n";  
140 - $sToRender .= "<tr>\n";  
141 - $sToRender .= "<td><p class=\"errorText\">" . _("No results matched your criteria") . "</p></td>\n";  
142 - $sToRender .= "</tr>\n";  
143 - $sToRender .= "</table>\n";  
144 - } else {  
145 -  
146 - $sToRender .= "<table width=\"100%\" height=\"80%\">\n";  
147 -  
148 - // display the number of results  
149 - $iEndIndex = $this->iStartIndex+$this->iResultsToDisplay-1 < $iTotalResults ? $this->iStartIndex+$this->iResultsToDisplay-1 : $iTotalResults;  
150 -  
151 - if ($this->sSearchText) {  
152 - $sToRender .= "<tr><td colspan=\"3\">" . sprintf(_("Searched the KnowledgeTree for '%s'."), $this->sSearchText) . "</td></tr>";  
153 - }  
154 -  
155 - $sToRender .= "<tr><td colspan=\"3\" align=\"right\">" . sprintf(_("Displaying results %s - %s of %s"), $this->iStartIndex, $iEndIndex, $iTotalResults) . "</td></tr>\n";  
156 -  
157 - $sToRender .= "<tr>\n";  
158 - for ($i = 0; $i < count($this->aColumnHeadings); $i++) {  
159 - if (! (strcmp($this->sOrderByColumn, $this->aColumns[$i]) === false) && (strcmp($this->sOrderByColumn, $this->aColumns[$i]) == 0)) {  
160 - if (!(strcmp($this->sOrderDirection,"ASC") === false) && (strcmp($this->sOrderDirection,"ASC") == 0)) {  
161 - $sToRender .= "<th align=\"left\" bgcolor=\"" . $sTHBGColour . "\">" . $this->aColumnHeadings[$i]. "</th>\n";  
162 - } else {  
163 - $sToRender .= "<th align=\"left\" bgcolor=\"" . $sTHBGColour . "\">" . $this->aColumnHeadings[$i]. "</th>\n";  
164 - }  
165 - } else {  
166 - $sToRender .= "<th align=\"left\" bgcolor=\"" . $sTHBGColour . "\">" . $this->aColumnHeadings[$i]. "</th>\n";  
167 - }  
168 - }  
169 - $sToRender .= "</tr>\n";  
170 - $iColour = 0;  
171 - $iDisplayed = 0;  
172 -  
173 - //limit the result set displayed  
174 - while($oRow = $oResultSet->next()) {  
175 - $sToRender .= "<tr bgcolor=\"" . getColour($iColour) . "\">";  
176 - $iColour++; $iDisplayed++;  
177 -  
178 - for ($i = 0; $i < count($this->aColumns); $i++) {  
179 - switch ($this->aColumnTypes[$i]) {  
180 - case 1:  
181 - //display text  
182 - $sToRender .= "<td>" . $oRow->get($this->aColumns[$i]) . "</td>\n";  
183 - break;  
184 - case 2:  
185 - //display a checkbox  
186 - $sToRender .= "<td>" . ($oRow->get($this->aColumns[$i]) ? "Yes" : "No") . "</td>\n";  
187 - break;  
188 - case 3:  
189 - //display a url  
190 - $sToRender .= "<td><a href=\"" ;  
191 - $sURLplusQuery = $this->aLinkURLs[$i];  
192 - for ($j = 0; $j < count($this->aDBQueryStringColumns); $j++) {  
193 - if (strpos($sURLplusQuery, "?") === false) {  
194 - $sURLplusQuery .= "?" . $this->aQueryStringVariableNames[$j] . "=" . $oRow->get($this->aDBQueryStringColumns[$j]);  
195 - } else {  
196 - $sURLplusQuery .= "&" . $this->aQueryStringVariableNames[$j] . "=" . $oRow->get($this->aDBQueryStringColumns[$j]);  
197 - }  
198 - }  
199 - $sToRender .= $sURLplusQuery;  
200 - $sToRender .= "\">" . $oRow->get($this->aColumns[$i]) . "</a></td>\n";  
201 -  
202 - break;  
203 - case 4:  
204 - //diplay an image URL  
205 - $sToRender .= "<td><a href=\"" . $this->aLinkURLs[$i];  
206 - for ($j = 0; $j < count($this->aDBQueryStringColumns); $j++) {  
207 - if (strpos($sToRender, "?") === false) {  
208 - $sToRender .= "?" . $this->aQueryStringVariableNames[$j] . "=" . $oRow->get($this->aDBQueryStringColumns[$j]);  
209 - } else {  
210 - $sToRender .= "&" . $this->aQueryStringVariableNames[$j] . "=" . $oRow->get($this->aDBQueryStringColumns[$j]);  
211 - }  
212 - }  
213 - $sToRender .= "\"><img src=\"" . $oRow->get($this->aColumns[$i]) . "\" border=\"0\" /></a></td>\n";  
214 - break;  
215 - default:  
216 - break;  
217 - }  
218 - }  
219 - $sToRender .= "</tr>\n";  
220 - }  
221 -  
222 - //if we displayed less results than the number to display  
223 - //simply pad the table  
224 - while ($iDisplayed < $this->iResultsToDisplay) {  
225 - $sToRender .= "<tr><td>&nbsp;</td></tr>\n";  
226 - $iDisplayed++;  
227 - }  
228 - $sToRender .= "</table>";  
229 -  
230 - $sToRender .= "<table>";  
231 - $sToRender .= "<tr>\n";  
232 - foreach ($this->aRememberValues as $k => $v) {  
233 - $v = htmlentities(urlencode($v));  
234 - $sToRender .= "<input type=\"hidden\" name=\"$k\" value=\"$v\" />\n";  
235 - }  
236 - // Display only the next button  
237 - if (($this->iStartIndex + $this->iResultsToDisplay - 1) < $iTotalResults && $this->iStartIndex == 1) {  
238 - $sToRender .= "<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>";  
239 - $sToRender .= "<td align=\"left\">";  
240 - $sToRender .= "<input type=\"image\" src=\"" . KTHtml::getNextButton() . "\" onClick=\"setActionAndSubmit('" . $_SERVER["PHP_SELF"] . "?fStartIndex=" . ($this->iStartIndex + $this->iResultsToDisplay) . $this->sQueryString . "')\" />";  
241 - $sToRender .= "</td>\n";  
242 - }  
243 - // Display both the next and the previous buttons  
244 - else if (($this->iStartIndex + $this->iResultsToDisplay - 1) < $iTotalResults && $this->iStartIndex > 1) {  
245 - $sToRender .= "<td>";  
246 - $sToRender .= "<input type=\"image\" src=\"" . KTHtml::getPreviousButton() . "\" onClick=\"setActionAndSubmit('" . $_SERVER["PHP_SELF"] . "?fStartIndex=" . ($this->iStartIndex - $this->iResultsToDisplay) . $this->sQueryString . "')\" />";  
247 - $sToRender .= "</td>";  
248 - $sToRender .= "<td>";  
249 - $sToRender .= "<input type=\"image\" src=\"" . KTHtml::getNextButton() . "\" onClick=\"setActionAndSubmit('" . $_SERVER["PHP_SELF"] . "?fStartIndex=" . ($this->iStartIndex + $this->iResultsToDisplay) . $this->sQueryString . "')\" />";  
250 - $sToRender .= "</td>\n";  
251 -  
252 - }  
253 - // Display only the previous button  
254 - else if ($this->iStartIndex > 1) {  
255 - $sToRender .= "<td align=\"left\">\n";  
256 - $sToRender .= "<input type=\"image\" src=\"" . KTHtml::getPreviousButton() . "\" onClick=\"setActionAndSubmit('" . $_SERVER["PHP_SELF"] . "?fStartIndex=" . ($this->iStartIndex - $this->iResultsToDisplay) . $this->sQueryString . "')\" />";  
257 - $sToRender .= "</td>";  
258 - }  
259 -  
260 - $sToRender .= "</tr>\n";  
261 - $sToRender .= "</table>\n";  
262 - }  
263 - return $sToRender;  
264 - }  
265 -  
266 - function getResultCount() {  
267 - global $default;  
268 - $sql = & $default->db;  
269 - if ($sql->query($this->sQuery)) {  
270 - return $sql->num_rows();  
271 - } else {  
272 - return 0;  
273 - }  
274 - }  
275 -}  
276 -?>  
lib/visualpatterns/PatternCustom.inc deleted
1 -<?php  
2 -/**  
3 - * $Id$  
4 - *  
5 - * Used to specify html code that is not catered for by any of the other patterns.  
6 - *  
7 - * Copyright (c) 2003 Jam Warehouse http://www.jamwarehouse.com  
8 - *  
9 - * This program is free software; you can redistribute it and/or modify  
10 - * it under the terms of the GNU General Public License as published by  
11 - * the Free Software Foundation; either version 2 of the License, or  
12 - * (at your option) any later version.  
13 - *  
14 - * This program is distributed in the hope that it will be useful,  
15 - * but WITHOUT ANY WARRANTY; without even the implied warranty of  
16 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the  
17 - * GNU General Public License for more details.  
18 - *  
19 - * You should have received a copy of the GNU General Public License  
20 - * along with this program; if not, write to the Free Software  
21 - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA  
22 - *  
23 - * @version $Revision$  
24 - * @author Rob Cherry, Jam Warehouse (Pty) Ltd, South Africa  
25 - * @package lib.visualpatterns  
26 - */  
27 -class PatternCustom {  
28 -  
29 - /** Custom HTML string */  
30 - var $sHtml;  
31 -  
32 - /**  
33 - * Set the HTML string  
34 - *  
35 - * @param string new HTML string  
36 - */  
37 - function setHtml($sNewValue) {  
38 - $this->sHtml = $sNewValue;  
39 - }  
40 -  
41 - /**  
42 - * Appends to the html string  
43 - *  
44 - * @param string the html to append  
45 - */  
46 - function addHtml($sMoreHtml) {  
47 - $this->sHtml = $this->sHtml . $sMoreHtml;  
48 - }  
49 -  
50 - /**  
51 - * Render the object  
52 - *  
53 - * @return string html string  
54 - */  
55 - function & render() {  
56 - return $this->sHtml;  
57 - }  
58 -}  
59 -?>  
lib/visualpatterns/PatternEditableTableSqlQuery.inc deleted
1 -<?php  
2 -/**  
3 - * $Id$  
4 - *  
5 - * Will take a query that generates a table like  
6 - * result and create and editable HTML table from it that can  
7 - * be used as part of a form.  
8 - *  
9 - * 1 columns is REQUIRED in the Sql query:  
10 - * o column giving primary key of entry in table (primary key column name specified in $aPrimaryKey)  
11 - *  
12 - * 3 hidden fields are generated for each editable entry:  
13 - * o <uniquename>_id: holds the primary key of the entry in the table (-1 = no entry in table i.e. create not update)  
14 - * o <uniquename>_tn: holds the tablename for which the primary key is valid  
15 - * o <uniquename>_type: holds the type of entry (text/boolean/list) - for parsing purposes  
16 - *  
17 - * The actual value is held in a form field name <uniquename>  
18 - *  
19 - * Copyright (c) 2003 Jam Warehouse http://www.jamwarehouse.com  
20 - *  
21 - * This program is free software; you can redistribute it and/or modify  
22 - * it under the terms of the GNU General Public License as published by  
23 - * the Free Software Foundation; either version 2 of the License, or  
24 - * (at your option) any later version.  
25 - *  
26 - * This program is distributed in the hope that it will be useful,  
27 - * but WITHOUT ANY WARRANTY; without even the implied warranty of  
28 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the  
29 - * GNU General Public License for more details.  
30 - *  
31 - * You should have received a copy of the GNU General Public License  
32 - * along with this program; if not, write to the Free Software  
33 - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA  
34 - *  
35 - * @version $Revision$  
36 - * @author Rob Cherry, Jam Warehouse (Pty) Ltd, South Africa  
37 - * @package lib.visualpatterns  
38 - * @todo - add client side validation stuff  
39 - * @todo - add column type 3 -> select field stuff  
40 - */  
41 -class PatternEditableTableSqlQuery {  
42 -  
43 - /** query to execute*/  
44 - var $sQuery;  
45 - /** table to perform insert/update on */  
46 - var $sTableName;  
47 - /** columns names in $sQuery to display */  
48 - var $aDisplayColumnNames;  
49 - /** column names in $sQuery that will be stored/updated */  
50 - var $aStoreColumnNames;  
51 - /** Array of boolean values dictating column editability */  
52 - var $aColumnsEditable;  
53 - /** columns visible or not (store columns) */  
54 - var $aColumnsVisible;  
55 - /** column types: 1 = text, 2 = boolean, 3 = drop down list, 4 = meta data lookup */  
56 - var $aColumnDisplayTypes;  
57 - /** 0 = id, 1 = text, 2 = boolean*/  
58 - var $aColumnDatabaseTypes;  
59 - /** Unique name */  
60 - var $sUniqueName;  
61 - /** message that will be displayed if the table is empty*/  
62 - var $sEmptyTableMessage;  
63 - /** whether or not to include javascript validation rendering automatically */  
64 - var $bRenderJavascriptValidation = true;  
65 - /** temporary array holding the required fields */  
66 - var $aRequiredVariables;  
67 -  
68 - var $aRequiredColumnNames;  
69 - var $aRequiredFieldNames;  
70 - var $aMetaDataFields;  
71 -  
72 - var $sPreCode;  
73 -  
74 - function PatternEditableTableSqlQuery($sTmpQuery, $sTmpTableName, $aTmpStoreColumnNames, $aTmpDisplayColumnNames, $aTmpColumnsEditable, $aTmpColumnsVisible, $aTmpColumnDisplayTypes, $aTmpColumnDatabaseTypes) {  
75 - $this->sQuery = $sTmpQuery;  
76 - $this->sTableName = $sTmpTableName;  
77 - $this->aStoreColumnNames = $aTmpStoreColumnNames;  
78 - $this->aDisplayColumnNames = $aTmpDisplayColumnNames;  
79 - $this->aColumnsEditable = $aTmpColumnsEditable;  
80 - $this->sUniqueName = $sTmpUniqueName;  
81 - $this->aColumnsVisible = $aTmpColumnsVisible;  
82 - $this->aColumnDisplayTypes = $aTmpColumnDisplayTypes;  
83 - $this->aColumnDatabaseTypes = $aTmpColumnDatabaseTypes;  
84 - }  
85 -  
86 - function setUniqueName($sNewValue) { $this->sUniqueName = $sNewValue; }  
87 - function setMetaDataFields($aNewValue) { $this->aMetaDataFields = $aNewValue; }  
88 - function setDisplayColumnHeadings($bNewValue) { $this->bDisplayColumnHeadings = $bNewValue; }  
89 - function setTableCaption($sNewValue) { $this->sTableCaption = $sNewValue; }  
90 - function setColumnHeaderNames($aNewValue) { $this->aColumnHeaderNames = $aNewValue; }  
91 - function setRequiredColumnNames($aNewValue) { $this->aRequiredColumnNames = $aNewValue; }  
92 - function setEmptyTableMessage($sNewValue) { $this->sEmptyTableMessage = $sNewValue; }  
93 - function setRenderJavascriptValidation($bNewValue) { $this->bRenderJavascriptValidation = $bNewValue; }  
94 - function setPreCode($sNewValue) { $this->sPreCode = $sNewValue; }  
95 - function setPostCode($sNewValue) { $this->sPostCode = $sNewValue; }  
96 -  
97 - function & render() {  
98 - global $default;  
99 -  
100 - $sToRender = "<table cellpadding=\"5\" border=\"0\">\n";  
101 - if (isset($this->sTableCaption)) {  
102 - $sToRender .= "<caption align=\"top\" colspan=\"" . count($this->aColumnsSql) . "\" align=\"left\"><b>$this->sTableCaption</b></caption>\n";  
103 - }  
104 - if ($this->bDisplayColumnHeadings) {  
105 - for ($i = 0; $i < count($this->aColumnHeaderNames); $i++) {  
106 - $sToRender .= "<th align=left>" . $this->aColumnHeaderNames[$i] . "</th>\n";  
107 - }  
108 - }  
109 -  
110 - $this->sUniqueName .= KTUtil::randomString();  
111 -  
112 - $sql = $default->db;  
113 - $sql->query($this->sQuery);  
114 - if ($sql->num_rows() == 0) {  
115 - $sToRender .= "<tr>\n";  
116 - if (isset($this->sEmptyTableMessage)) {  
117 - $sToRender .= "<td colspan=" . count($this->aStoreColumnNames) . ">$this->sEmptyTableMessage</td>\n";  
118 - } else {  
119 - $sToRender .= "<td colspan=" . count($this->aStoreColumnNames) . ">" .  
120 - sprintf(_("No %s data"), (isset($this->sTableCaption) ? $this->sTableCaption : "")) .  
121 - "</td>\n";  
122 - }  
123 - $sToRender .= "</tr>\n";  
124 - } else {  
125 - $this->aRequiredVariables = array();  
126 - $iRowCount = 0;  
127 - while ($sql->next_record()) {  
128 - $sToRender .= "<tr>\n";  
129 - $_SESSION["pelfq_" . $this->sUniqueName . $iRowCount . "_id"] = $sql->f("id");  
130 - $_SESSION["pelfq_" . $this->sUniqueName . $iRowCount . "_code_pre"] = $this->sPreCode;  
131 - $_SESSION["pelfq_" . $this->sUniqueName . $iRowCount . "_code_post"] = $this->sPostCode;  
132 - $_SESSION["pelfq_" . $this->sUniqueName . $iRowCount . "_tn"] = $this->sTableName;  
133 - $_SESSION["pelfq_" . $this->sUniqueName . $iRowCount . "_columns"] = $this->aStoreColumnNames;  
134 - $sToRender .= "<input type=\"hidden\" name=\"unique_start_" . $this->sUniqueName . $iRowCount . "\" value=\"\" />\n";  
135 - // $sToRender .= "<input type=\"hidden\" name=\"" . $this->sUniqueName . "_" . $iRowCount . "\" value=\"" . $sql->f("id") . "\" />\n";  
136 - // $sToRender .= "<input type=\"hidden\" name=\"" . $this->sUniqueName . "_" . $iRowCount . "_tn\" value=\"" . $this->sTableName . "\" />\n";  
137 -  
138 - // check for is_mandatory field validation  
139 - if ($sql->f("is_mandatory") == "1") {  
140 - $this->aRequiredVariables[]["formName"] = $this->sUniqueName . "_" . $iRowCount . (count($this->aStoreColumnNames)-1) . "_value";  
141 - }  
142 - for ($i = 0; $i < count($this->aStoreColumnNames); $i++) {  
143 - if (isset($this->aRequiredColumnNames)) {  
144 - for ($k = 0; $k < count($this->aRequiredColumnNames); $k++) {  
145 - if (strcmp($this->aStoreColumnNames[$i], $this->aRequiredColumnNames[$k]) == 0) {  
146 - $this->aRequiredVariables[count($this->aRequiredVariables)]["formName"] = $this->sUniqueName . "_" . $iRowCount . $i . "_value";  
147 - }  
148 - }  
149 - }  
150 -  
151 - //generate the right kind of editable field  
152 - $sToRender .= "\t<td>\n";  
153 - switch ($this->aColumnDisplayTypes[$i]) {  
154 - case 1:  
155 - //output the table column name  
156 - $sToRender .= "\t<input type=\"hidden\" name=\"" . $this->sUniqueName . "_" . $iRowCount . $i . "_tc\" value=\"" . $this->aStoreColumnNames[$i] . "\" />\n";  
157 - //output the column type  
158 - $sToRender .= "\t<input type=\"hidden\" name=\"" . $this->sUniqueName . "_" . $iRowCount . $i . "_type\" value=\"" . $this->aColumnDatabaseTypes[$i] . "\" />\n";  
159 - //output the value  
160 - if ($this->aColumnsVisible[$i]) {  
161 - if ($this->aColumnsEditable[$i]) {  
162 - $sToRender .= "\t<input type=\"text\" name=\"" . $this->sUniqueName . "_" . $iRowCount . $i . "_value\" value=\"" . $sql->f($this->aStoreColumnNames[$i]) . "\" />\n";  
163 - } else {  
164 - $sToRender .= "\t<input type=\"hidden\" name=\"" . $this->sUniqueName . "_" . $iRowCount . $i . "_value\" value=\"" . $sql->f($this->aStoreColumnNames[$i]) . "\" />" . $sql->f($this->aDisplayColumnNames[$i])."\n";  
165 - }  
166 - } else {  
167 - $sToRender .= "\t<input type=\"hidden\" name=\"" . $this->sUniqueName . "_" . $iRowCount . $i . "_value\" value=\"" . $sql->f($this->aStoreColumnNames[$i]) . "\" />\n";  
168 - }  
169 - break;  
170 - case 2:  
171 - //output the table column name  
172 - $sToRender .= "\t<input type=\"hidden\" name=\"tc_" . $this->sUniqueName . "_" . $iRowCount . $i . "_tc\" value=\"" . $this->aStoreColumnNames[$i] . "\" />\n";  
173 - //output the column type  
174 - $sToRender .= "\t<input type=\"hidden\" name=\"" . $this->sUniqueName . "_" . $iRowCount . $i . "_type\" value=\"" . $this->aColumnDatabaseTypes[$i] . "\" />\n";  
175 - //output the value  
176 - if ($this->aColumnsVisible[$i]) {  
177 - if ($this->aColumnsEditable[$i]) {  
178 - $sToRender .= "\t<input type=\"checkbox\" name=\"" . $this->sUniqueName . "_" . $iRowCount . $i . "_value\" value=\"" . ($sql->f($this->aStoreColumnNames[$i] ? "1\" checked" : "0\"")) . " />\n";  
179 - } else {  
180 - $sToRender .= "\t<input type=\"hidden\" name=\"" . $this->sUniqueName . "_" . $iRowCount . $i . "_value\" value=\"" . $sql->f($this->aStoreColumnNames[$i]) . "\" />".$sql->f($this->aDisplayColumnNames[$i])."\n";  
181 - }  
182 - } else {  
183 - $sToRender .= "\t<input type=\"hidden\" name=\"" . $this->sUniqueName . "_" . $iRowCount . $i . "_value\" value=\"" . $sql->f($this->aStoreColumnNames[$i]) . "\" />\n";  
184 - }  
185 - break;  
186 - case 3:  
187 - $sToRender .= "<b>" . _("The column type for drop downs is not implemented yet") . "</b>\n";  
188 - break;  
189 - case 4:  
190 - //meta data  
191 - //could either be a drop down or a text field, depending  
192 -  
193 - //output the table column name  
194 - $sToRender .= "\t<input type=\"hidden\" name=\"" . $this->sUniqueName . "_" . $iRowCount . $i . "_tc\" value=\"" . $this->aStoreColumnNames[$i] . "\" />\n";  
195 - //output the column type  
196 - $sToRender .= "\t<input type=\"hidden\" name=\"" . $this->sUniqueName . "_" . $iRowCount . $i . "_type\" value=\"" . $this->aColumnDatabaseTypes[$i] . "\" />\n";  
197 - if ($this->aColumnsVisible[$i]) {  
198 - if ($this->aColumnsEditable[$i]) {  
199 - $oPattern = & new PatternMetaData($sql->f($this->aMetaDataFields[$i]), $this->sUniqueName . "_" . $iRowCount . $i . "_value", $sql->f($this->aStoreColumnNames[$i]));  
200 - $sToRender .= $oPattern->render();  
201 - } else {  
202 - $sToRender .= "\t<input type=\"hidden\" name=\"" . $this->sUniqueName . "_" . $iRowCount . $i . "_value\" value=\"" . $sql->f($this->aStoreColumnNames[$i]) . "\" />".$sql->f($this->aDisplayColumnNames[$i])."\n";  
203 - }  
204 - } else {  
205 - $sToRender .= "\t<input type=\"hidden\" name=\"" . $this->sUniqueName . "_" . $iRowCount . $i . "_value\" value=\"" . $sql->f($this->aStoreColumnNames[$i]) . "\" />\n";  
206 - }  
207 - break;  
208 -  
209 - break;  
210 - default:  
211 - $sToRender .= "<b>" .  
212 - sprintf(_("You are attempting to render an unknown column type %s in PatternEditableTableSqlQuery"),  
213 - ($this->aColumnTypes[$i])) .  
214 - "</b>\n";  
215 - break;  
216 - }  
217 -  
218 - $sToRender .= "\t</td>\n";  
219 - }  
220 - $sToRender .= "<input type=\"hidden\" name=\"unique_end_" . $this->sUniqueName . $iRowCount . "\" value=\"\" />\n";  
221 - $sToRender .= "</tr>\n";  
222 - $iRowCount++;  
223 - }  
224 - }  
225 - $sToRender .= "</table>";  
226 - if (isset($this->aRequiredVariables)) {  
227 - if ($this->bRenderJavascriptValidation) {  
228 - $sToRender .= $this->generateRequiredFieldValidation($this->aRequiredVariables);  
229 - }  
230 - }  
231 - return $sToRender;  
232 - }  
233 -  
234 - function generateRequiredFieldValidation($aValidationColumnNames) {  
235 - $sToRender .= "\n\n<script language=\"javascript\">\n<!--\n";  
236 - $sToRender .= "function validateForm(theForm) {\n";  
237 - for ($i = 0; $i < count($aValidationColumnNames); $i++) {  
238 - $sToRender .= "\tif (!(validRequired(document.MainForm." . $aValidationColumnNames[$i]["formName"] . ", 'selected'))) {\n";  
239 - $sToRender .= "\t\treturn false;\n\t}\n";  
240 - }  
241 - $sToRender .= "return true;\n}\n";  
242 - $sToRender .= "//-->\n</script>\n\n";  
243 - return $sToRender;  
244 - }  
245 -  
246 - function getValidationJavascript() {  
247 - for ($i = 0; $i < count($this->aRequiredVariables); $i++) {  
248 - $sToRender .= "\tif (!(validRequired(document.MainForm." . $this->aRequiredVariables[$i]["formName"] . ", 'selected'))) {\n";  
249 - $sToRender .= "\t\treturn false;\n\t}\n";  
250 - }  
251 - return $sToRender;  
252 - }  
253 -}  
254 -?>  
lib/visualpatterns/PatternListBox.inc deleted
1 -<?php  
2 -/**  
3 - * $Id$  
4 - *  
5 - * Creates a drop down list box using a table name and  
6 - * two column names (one column is the display value, the other  
7 - * is the option value). The option value column should always  
8 - * be an ID that is a primary key in a table  
9 - *  
10 - * Copyright (c) 2003 Jam Warehouse http://www.jamwarehouse.com  
11 - *  
12 - * This program is free software; you can redistribute it and/or modify  
13 - * it under the terms of the GNU General Public License as published by  
14 - * the Free Software Foundation; either version 2 of the License, or  
15 - * (at your option) any later version.  
16 - *  
17 - * This program is distributed in the hope that it will be useful,  
18 - * but WITHOUT ANY WARRANTY; without even the implied warranty of  
19 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the  
20 - * GNU General Public License for more details.  
21 - *  
22 - * You should have received a copy of the GNU General Public License  
23 - * along with this program; if not, write to the Free Software  
24 - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA  
25 - *  
26 - * @version $Revision$  
27 - * @author Rob Cherry, Jam Warehouse (Pty) Ltd, South Africa  
28 - * @package lib.visualpatterns  
29 - * @todo - if the list is set to submit on change, it submits the form. Investigate ways  
30 - * to get a list action to occur, instead of the default form action  
31 - */  
32 -class PatternListBox {  
33 -  
34 - /** Database table to get information from */  
35 - var $sTableName;  
36 - /** Column in table to display */  
37 - var $sDisplayColumn;  
38 - /** Column in table to use as option value */  
39 - var $sValueColumn;  
40 - /** Select name */  
41 - var $sSelectName;  
42 - /** Where clause */  
43 - var $sWhereClause;  
44 - /**from clause, use to add extra inner joins. The default selected table gets  
45 - a name of ST and the two selected columns are 'value' and 'display' */  
46 - var $sFromClause;  
47 - /** Order columns ascending*/  
48 - var $bOrderAsc;  
49 - /** set this to true to cause the list box to post back on a change */  
50 - var $bPostBackOnChange = false;  
51 - /** action to perform on a postback */  
52 - var $sOnChangeAction = "document.MainForm.submit();";  
53 - /** currently selected value */  
54 - var $selectedValue;  
55 - /** error message for an empty list box */  
56 - var $sEmptyErrorMessage = "No values";  
57 - /** whether to include 'None' as an option*/  
58 - var $bIncludeDefaultValue = true;  
59 - /** additional list box items */  
60 - var $aAdditionalEntries;  
61 - /** override display name */  
62 - var $sCompositeDisplayColumnName;  
63 - /** override query */  
64 - var $sQuery;  
65 -  
66 - /**  
67 - * Constructor  
68 - *  
69 - * @param Table in database that information will come from  
70 - * @param Column in table that will be display in list box  
71 - * @param Column in table that will be assigned to the 'option' attribute  
72 - * @param 'name' attribute of 'select' tab  
73 - * @param Where clause  
74 - */  
75 - function PatternListBox($sNewTableName, $sNewDisplayColumn, $sNewValueColumn, $sNewSelectName, $sNewWhereClause = null, $bNewOrderAsc = true) {  
76 - $this->sTableName = $sNewTableName;  
77 - $this->sDisplayColumn = $sNewDisplayColumn;  
78 - $this->sValueColumn = $sNewValueColumn;  
79 - $this->sSelectName = $sNewSelectName;  
80 - $this->sWhereClause = $sNewWhereClause;  
81 - $this->bOrderAsc = $bNewOrderAsc;  
82 - }  
83 -  
84 - function setQuery($sQuery) {  
85 - $this->sQuery = $sQuery;  
86 - }  
87 - function setSelectName($sNewSelectName) {  
88 - $this->sSelectName = $sNewSelectName;  
89 - }  
90 -  
91 - function setPostBackOnChange($bNewValue) {  
92 - $this->bPostBackOnChange = $bNewValue;  
93 - }  
94 -  
95 - function setOnChangeAction($sNewValue) {  
96 - $this->sOnChangeAction = $sNewValue;  
97 - }  
98 -  
99 - function setSelectedValue($NewValue) {  
100 - $this->selectedValue = $NewValue;  
101 - }  
102 -  
103 - function setWhereClause($sNewValue) {  
104 - $this->sWhereClause = $sNewValue;  
105 - }  
106 -  
107 - function setFromClause($sNewValue) {  
108 - $this->sFromClause = $sNewValue;  
109 - }  
110 -  
111 - function setEmptyErrorMessage($sNewValue) {  
112 - $this->sEmptyErrorMessage = $sNewValue;  
113 - }  
114 -  
115 - function setIncludeDefaultValue($bNewValue) {  
116 - $this->bIncludeDefaultValue = $bNewValue;  
117 - }  
118 -  
119 - function setAdditionalEntries($aNewValue) {  
120 - $this->aAdditionalEntries = $aNewValue;  
121 - }  
122 -  
123 - function setCompositeDisplayName($sNewValue) {  
124 - $this->sCompositeDisplayColumnName = $sNewValue;  
125 - }  
126 -  
127 - /**  
128 - * Create the HTML string that will be used to render the list box  
129 - *  
130 - * @return String html used to render the list box  
131 - *  
132 - */  
133 - function & render() {  
134 - global $default;  
135 -  
136 - $sql = $default->db;  
137 - if (isset($this->sQuery)) {  
138 - $sQuery = $this->sQuery;  
139 - } else {  
140 - $sQuery = "SELECT ";/*wc*/  
141 - if (isset($this->sCompositeDisplayColumnName)) {  
142 - $sQuery .= "$this->sCompositeDisplayColumnName";  
143 - } else {  
144 - $sQuery .= "DISTINCT ST." . $this->sDisplayColumn;  
145 - }  
146 - $sQuery .= " AS display, ST." . $this->sValueColumn . " AS value FROM $this->sTableName AS ST ";  
147 - if (isset($this->sFromClause)) {  
148 - $sQuery .= $this->sFromClause . " ";  
149 - }  
150 - if (isset($this->sWhereClause)) {  
151 - $sQuery .= "WHERE " . $this->sWhereClause . " ";  
152 - }  
153 - $sQuery .= "ORDER BY ST.$this->sDisplayColumn " . ($this->bOrderAsc ? "ASC" : "DESC");  
154 - }  
155 - $sql->query($sQuery);  
156 - if ($sql->num_rows() > 0 || $this->bIncludeDefaultValue && (strlen($this->sEmptyErrorMessage) == 0)) {  
157 - if (isset($this->sOnChangeAction)) {  
158 - $sToRender = "<SELECT NAME=\"$this->sSelectName\" ". ($this->bPostBackOnChange ? "onChange=\"$this->sOnChangeAction\" " : " ") . ">\n";  
159 - } else {  
160 - $sToRender = "<SELECT NAME=\"$this->sSelectName\" ". ($this->bPostBackOnChange ? "onChange=\"document.MainForm.submit();\" " : " ") . ">\n";  
161 - }  
162 - if ($this->bIncludeDefaultValue) {  
163 - $sToRender .= "<OPTION value=\"\">None</OPTION>\n";  
164 - }  
165 - while ($sql->next_record()) {  
166 - if ($this->selectedValue == $sql->f("value")) {  
167 - $sToRender .= "<OPTION value=\"" . $sql->f("value") . "\" SELECTED>" . $sql->f("display") . "</OPTION>\n";  
168 - } else {  
169 - $sToRender .= "<OPTION value=\"" . $sql->f("value") . "\">" . $sql->f("display") . "</OPTION>\n";  
170 - }  
171 - }  
172 - if (isset($this->aAdditionalEntries)) {  
173 - for ($i=0; $i<count($this->aAdditionalEntries); $i++) {  
174 - $sToRender .= "<OPTION value=\"" . $this->aAdditionalEntries[$i]["value"] . "\">" . $this->aAdditionalEntries[$i]["display"] . "</OPTION>\n";  
175 - }  
176 - }  
177 - $sToRender .= "</SELECT>\n";  
178 - } else {  
179 - $sToRender .= "<label class=\"errorText\">$this->sEmptyErrorMessage</label>\n";  
180 - }  
181 - return $sToRender;  
182 - }  
183 -  
184 - function getEntries() {  
185 - global $default;  
186 -  
187 - $sql = $default->db;  
188 - $sQuery = "SELECT DISTINCT ST." . $this->sDisplayColumn . " AS display, ST." . $this->sValueColumn . " AS value FROM $this->sTableName AS ST ";/*wc*/  
189 - if (isset($this->sFromClause)) {  
190 - $sQuery .= $this->sFromClause . " ";  
191 - }  
192 - if (isset($this->sWhereClause)) {  
193 - $sQuery .= "WHERE " . $this->sWhereClause . " ";  
194 -  
195 - }  
196 -  
197 - $sQuery .= "ORDER BY ST.$this->sDisplayColumn " . ($this->bOrderAsc ? "ASC" : "DESC");  
198 -  
199 - $sql->query($sQuery);  
200 - $aValues = array();  
201 - while ($sql->next_record()) {  
202 - $aValues[] = array("value" => $sql->f("value"),  
203 - "display" => $sql->f("display"));  
204 - }  
205 - return $aValues;  
206 - }  
207 -}  
208 -?>  
lib/visualpatterns/PatternListFromQuery.inc deleted
1 -<?php  
2 -/**  
3 - * $Id$  
4 - *  
5 - * Takes a SQL query, an array of column names and and an array of column types  
6 - * and displays the data in a two column list format.  
7 - *  
8 - * Copyright (c) 2003 Jam Warehouse http://www.jamwarehouse.com  
9 - *  
10 - * This program is free software; you can redistribute it and/or modify  
11 - * it under the terms of the GNU General Public License as published by  
12 - * the Free Software Foundation; either version 2 of the License, or  
13 - * (at your option) any later version.  
14 - *  
15 - * This program is distributed in the hope that it will be useful,  
16 - * but WITHOUT ANY WARRANTY; without even the implied warranty of  
17 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the  
18 - * GNU General Public License for more details.  
19 - *  
20 - * You should have received a copy of the GNU General Public License  
21 - * along with this program; if not, write to the Free Software  
22 - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA  
23 - *  
24 - * @version $Revision$  
25 - * @author Rob Cherry, Jam Warehouse (Pty) Ltd, South Africa  
26 - * @package lib.visualpatterns  
27 - * @todo implement HyperLinkURL option  
28 - */  
29 -  
30 -require_once(KT_LIB_DIR . '/templating/templating.inc.php');  
31 -  
32 -class PatternListFromQuery {  
33 -  
34 - /** SQL query to execute */  
35 - var $sQuery;  
36 - /** array of columns to display */  
37 - var $aColumns;  
38 - /** array of column types (1 = text, 2 = boolean, 3 = hyperlink) */  
39 - var $aColumnTypes;  
40 - /** names of columns to display */  
41 - var $aColumnNames;  
42 - /** array of hyperlink URLS */  
43 - var $aHyperLinkURL;  
44 - /** array of text to be used on querystring with a hyperlink */  
45 - var $aQueryStringText;  
46 - /** number of rows for text area if text area option is being used */  
47 - var $iTextAreaRows = 6;  
48 - /** number of colums for text area if text area option is being used */  
49 - var $iTextAreaColums = 20;  
50 - /** heading for table */  
51 - var $sTableHeading;  
52 - /** set the table width */  
53 - var $iTableWidth = null;  
54 - /** Picture paths */  
55 - var $sChkPicPath = "widgets/checked.gif";  
56 - var $sUnChkPicPath = "widgets/unchecked.gif";  
57 - /** message that will be displayed if the table is empty*/  
58 - var $sEmptyTableMessage;  
59 -  
60 - /**  
61 - * Default constructor  
62 - *  
63 - * @param String Query to execute  
64 - * @param  
65 - */  
66 - function PatternListFromQuery($sNewQuery, $aNewColumns, $aNewColumnNames, $aNewColumnTypes, $aNewHyperLinkURL = null, $aNewQueryStringText = null) {  
67 - $this->sQuery = $sNewQuery;  
68 - $this->aColumns = $aNewColumns;  
69 - $this->aColumnNames = $aNewColumnNames;  
70 - $this->aColumnTypes = $aNewColumnTypes;  
71 - $this->aHyperLinkURL = $aNewHyperLinkURL;  
72 - $this->aQueryStringText = $aNewQueryStringText;  
73 - }  
74 -  
75 - function setTableWidth($iNewValue) {  
76 - $this->iTableWidth = $iNewValue;  
77 - }  
78 -  
79 - function setTextAreaRows($iNewValue) {  
80 - $this->iTextAreaRows = $iNewValue;  
81 - }  
82 -  
83 - function setTextAreaColumns($iNewValue) {  
84 - $this->iTextAreaColumns = $iNewValue;  
85 - }  
86 -  
87 - function setTableHeading($sNewValue) {  
88 - $this->sTableHeading = $sNewValue;  
89 - }  
90 -  
91 - function setRenderIndividualTableForEachResult($bNewValue) {  
92 - $this->bIndividualTableForEachResult = $bNewValue;  
93 - }  
94 -  
95 - function setEmptyTableMessage($sNewValue) {  
96 - $this->sEmptyTableMessage = $sNewValue;  
97 - }  
98 -  
99 - function & render() {  
100 - global $default;  
101 - $sSectionName = $default->siteMap->getSectionName(substr($_SERVER["PHP_SELF"], strlen($default->rootUrl), strlen($_SERVER["PHP_SELF"])));  
102 - $sTDBGColour = $default->siteMap->getSectionColour($sSectionName, "td");  
103 -  
104 - $aRows = DBUtil::getResultArray($this->sQuery);  
105 - $sToRender = "";  
106 - $sToRender .= "<table border=\"0\" cellpadding=\"5\" " . (isset($this->iTableWidth) ? " width=\"$this->iTableWidth\"" : "") . " >\n";  
107 -  
108 - if (isset($this->sTableHeading)) {  
109 - $sToRender .= "<caption align=\"top\" colspan=\"" . count($this->aColumns) . "\"><b>$this->sTableHeading</b></caption>\n";  
110 - }  
111 -  
112 - if (count($aRows) == 0) {  
113 - $sToRender .= "<tr>\n";  
114 - if (isset($this->sEmptyTableMessage)) {  
115 - $sToRender .= "<td colspan=" . count($this->aColumns) . ">$this->sEmptyTableMessage</td>\n";  
116 - } else {  
117 - $sToRender .= "<td colspan=" . count($this->aColumns) . ">" .  
118 - sprintf(_("No %s data"), (isset($this->sTableHeading) ? "$this->sTableHeading" : "")) .  
119 - "</td>\n";  
120 - }  
121 - $sToRender .= "</tr>\n";  
122 - $sToRender .= "</table>\n";  
123 - return $sToRender;  
124 - }  
125 -  
126 - $map = array();  
127 - foreach ($this->aColumns as $sColumn) {  
128 - $map[$sColumn] = array();  
129 - }  
130 -  
131 - $iColour = 0;  
132 - foreach ($aRows as $aRow) {  
133 - $i = 0;  
134 - foreach ($this->aColumns as $sColumn) {  
135 - switch ($this->aColumnTypes[$i]) {  
136 - //plain text field  
137 - case 1:  
138 - $value = $aRow[$this->aColumns[$i]];  
139 - break;  
140 - case 2:  
141 - $value = $aRow[$this->aColumns[$i]];  
142 - if (!empty($value)) {  
143 - if ($value) {  
144 - $value = "<img src=\"$default->graphicsUrl/" . $this->sChkPicPath . "\">";  
145 - } else {  
146 - $value = "<img src=\"$default->graphicsUrl/" . $this->sUnChkPicPath . "\">";  
147 - }  
148 - $value .= "&nbsp;";  
149 - }  
150 - break;  
151 - case 3:  
152 - $value = $aRow[$this->aColumns[$i]];  
153 - $value = sprintf('<a href="%s?%s">%s</a>',  
154 - $this->aHyperLinkURL[$i],  
155 - $this->replaceValues($this->aQueryStringText[$i], ""),  
156 - $value);  
157 - break;  
158 - default:  
159 - break;  
160 - }  
161 -  
162 - $map[$sColumn][] = $value;  
163 - $i++;  
164 - }  
165 - }  
166 - $oTemplating =& KTTemplating::getSingleton();  
167 - $oTemplate = $oTemplating->loadTemplate('ktcore/document_data');  
168 - $aColumnNames = array();  
169 - $iLen = count($this->aColumnNames);  
170 - for ($c = 0; $c < $iLen; $c++) {  
171 - $aColumnNames[$this->aColumns[$c]] = $this->aColumnNames[$c];  
172 - }  
173 - $sToRender = $oTemplate->render(array(  
174 - 'map' => $map,  
175 - 'cnames' => $aColumnNames,  
176 - ));  
177 - return $sToRender;  
178 - }  
179 -  
180 - function replaceValues($sQueryStringText, $sql) {  
181 - return $sQueryStringText;  
182 - }  
183 -}  
184 -?>  
lib/visualpatterns/PatternMetaData.inc deleted
1 -<?php  
2 -  
3 -require_once("PatternListBox.inc");  
4 -require_once(KT_LIB_DIR . "/documentmanagement/MDTree.inc");  
5 -  
6 -/**  
7 - * $Id$  
8 - *  
9 - * Renders document field appropriately (as a listbox if required).  
10 - *  
11 - * Copyright (c) 2003 Jam Warehouse http://www.jamwarehouse.com  
12 - *  
13 - * This program is free software; you can redistribute it and/or modify  
14 - * it under the terms of the GNU General Public License as published by  
15 - * the Free Software Foundation; either version 2 of the License, or  
16 - * (at your option) any later version.  
17 - *  
18 - * This program is distributed in the hope that it will be useful,  
19 - * but WITHOUT ANY WARRANTY; without even the implied warranty of  
20 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the  
21 - * GNU General Public License for more details.  
22 - *  
23 - * You should have received a copy of the GNU General Public License  
24 - * along with this program; if not, write to the Free Software  
25 - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA  
26 - *  
27 - * @version $Revision$  
28 - * @author Rob Cherry, Jam Warehouse (Pty) Ltd, South Africa  
29 - * @package lib.visualpatterns  
30 - */  
31 -class PatternMetaData {  
32 -  
33 - var $sMetaDataField;  
34 - var $sFormName;  
35 - var $sValue;  
36 - /** 1 = drop down, 2 = text field */  
37 - var $iType;  
38 -  
39 -  
40 - function PatternMetaData($sNewMetaDataField, $sNewFormName, $sNewValue = null) {  
41 - $this->sMetaDataField = $sNewMetaDataField;  
42 - $this->sFormName = $sNewFormName;  
43 - $this->sValue = $sNewValue;  
44 - }  
45 -  
46 -  
47 - function render() {  
48 - global $default;  
49 - $sQuery = "SELECT has_lookup, data_type, has_lookuptree, id FROM $default->document_fields_table WHERE name LIKE '" . DBUtil::escapeSimple($this->sMetaDataField) . "'";/*ok*/  
50 -  
51 - $sql = $default->db;  
52 - $sql->query($sQuery);  
53 - if ($sql->next_record()) {  
54 - if ($sql->f("has_lookup") and (!$sql->f("has_lookuptree"))) {  
55 - //is a lookup, so display a drop down list  
56 - $sWhereClause = "DF.name LIKE '" . $this->sMetaDataField . "'";  
57 - $sFromClause = "INNER JOIN $default->document_fields_table AS DF ON ST.document_field_id = DF.id";  
58 - $oPatternListBox = & new PatternListBox("$default->metadata_table", "name", "name", $this->sFormName);  
59 - if ($this->sValue != null) {  
60 - $oPatternListBox->setSelectedValue($this->sValue);  
61 - }  
62 - $oPatternListBox->setFromClause($sFromClause);  
63 - $oPatternListBox->setWhereClause($sWhereClause);  
64 - return $oPatternListBox->render();  
65 - } else if ($sql->f("has_lookup") and ($sql->f("has_lookuptree"))) {  
66 - $fieldTree = new MDTree();  
67 - $fieldTree->buildForField($sql->f("id"));  
68 - $fieldTree->setActiveItem($this->sValue);  
69 - return $fieldTree->_evilTreeRenderer($fieldTree, $this->sFormName);  
70 - } else {  
71 - $textboxlength = null;  
72 - switch($sql->f("data_type")) {  
73 - case "TEXT":  
74 - $sToRender = '<textarea name="%s" rows="5" cols="44">%s</textarea>';  
75 - break;  
76 - case "INT":  
77 - case "FLOAT":  
78 - $sToRender = '<input type="text" size="30" name="%s" value="%s" />';  
79 - break;  
80 - case "STRING":  
81 - default:  
82 - $sToRender = '<input type="text" size="60" name="%s" value="%s" />';  
83 - }  
84 - return sprintf($sToRender, $this->sFormName, $this->sValue);  
85 - }  
86 - } else {  
87 - return "Error in PatternMetaData";  
88 - }  
89 - }  
90 -  
91 -}  
92 -  
93 -?>  
lib/visualpatterns/PatternTableGeneric.inc deleted
1 -<?php  
2 -/**  
3 - * $Id$  
4 - * $BasedOnId: PatternTableSqlQuery.inc,v 1.39 2003/09/09 09:20:36 michael Exp $  
5 - *  
6 - * Renders an iterable result set in a table.  
7 - *  
8 - * The first column in the table can be rendered as a link  
9 - * to the document/folder using the $iLinkType variable to specify the link type,  
10 - * the $sLinkPageURL to specify the page URL to link to and $sLinkImageURL to specify  
11 - * the image to display in the case of either a $iLinkType of 2 (image only) or 3 (image + text)  
12 - *  
13 - * If you wish to include images, there are two ways to do this  
14 - * o set the image url - this means that all rows will use the same image  
15 - * o set $bUseImageURLFromQuery to true - this will look for a column entitled image_url in  
16 - * the sql result set, allowing you to specify different images for each entry  
17 - *  
18 - * Copyright (c) 2004 Jam Warehouse http://www.jamwarehouse.com  
19 - *  
20 - * This program is free software; you can redistribute it and/or modify  
21 - * it under the terms of the GNU General Public License as published by  
22 - * the Free Software Foundation; either version 2 of the License, or  
23 - * (at your option) any later version.  
24 - *  
25 - * This program is distributed in the hope that it will be useful,  
26 - * but WITHOUT ANY WARRANTY; without even the implied warranty of  
27 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the  
28 - * GNU General Public License for more details.  
29 - *  
30 - * You should have received a copy of the GNU General Public License  
31 - * along with this program; if not, write to the Free Software  
32 - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA  
33 - *  
34 - * @version $Revision$  
35 - * @author Neil Blakey-Milner, Jam Warehouse (Pty) Ltd, South Africa  
36 - * @package lib.visualpatterns  
37 - * @todo $iLinkImageURL is hard coded - change  
38 - * @todo $sLinkPageURL is hard coded - change  
39 - */  
40 -class PatternTableGeneric {  
41 - /** query to execute*/  
42 - var $oResultSet;  
43 - /* Columns in table to query (ID is included by default) */  
44 - var $aColumns;  
45 - /* Column types. Possibles are 1 = text, 2 = boolean, 3 = hyperlink url */  
46 - var $aColumnTypes;  
47 - /** header names to display */  
48 - var $aColumnHeaderNames;  
49 - /** table width, either in pixels or as a percentage e.g. 600 or 100%*/  
50 - var $sWidth;  
51 - /** link url used if a column type of 3 is specified */  
52 - var $aLinkURLs;  
53 - /** database column values to append to link url if a column type of 3 is specified */  
54 - var $aDBQueryStringColumns;  
55 - /** variables names to give $aDBQueryStringColumns on the query string */  
56 - var $aQueryStringVariableNames;  
57 - /** display the column headings or not */  
58 - var $bDisplayColumnHeadings;  
59 - /** table heading */  
60 - var $sTableHeading;  
61 - /** specify an image at the start of each row in the table */  
62 - var $sImageURL;  
63 - /** specify whether to use $sImageURL or to get the image url from the sql result set */  
64 - var $bUseImageURLFromQuery = false;  
65 - /** message that will be displayed if the table is empty*/  
66 - var $sEmptyTableMessage;  
67 - /** Picture paths */  
68 - var $sChkPicPath = "widgets/checked.gif";  
69 - var $sUnChkPicPath = "widgets/unchecked.gif";  
70 - /** whether to force entries to wrap */  
71 - var $bWordWrap = false;  
72 - /** whether the table cannot be edited */  
73 - var $bDisabled = false;  
74 -  
75 - function PatternTableGeneric($oResultSet, $aTmpColumns, $aTmpColumnTypes, $aTmpColumnHeaderNames, $sTmpWidth, $aTmpLinkURLs = null, $aTmpDBQueryStringColumns = null, $aNewQueryStringVariableNames = null) {  
76 - $this->oResultSet =& $oResultSet;  
77 - $this->aColumns = & $aTmpColumns;  
78 - $this->aColumnTypes = $aTmpColumnTypes;  
79 - $this->aColumnHeaderNames = $aTmpColumnHeaderNames;  
80 - $this->sWidth = $sTmpWidth;  
81 - $this->bDisplayColumnHeadings = $bTmpDisplayColumnHeadings;  
82 - $this->aLinkURLs = $aTmpLinkURLs;  
83 - $this->aDBQueryStringColumns = $aTmpDBQueryStringColumns;  
84 - $this->aQueryStringVariableNames = $aNewQueryStringVariableNames;  
85 - }  
86 -  
87 - function setEmptyTableMessage($sNewValue) { $this->sEmptyTableMessage = $sNewValue; }  
88 - function setTableHeading($sNewValue) { $this->sTableHeading = $sNewValue; }  
89 - function setImageURL($sNewValue) { $this->sImageURL = $sNewValue; }  
90 - function setUseImageURLFromQuery($bNewValue) { $this->bUseImageURLFromQuery = $bNewValue; }  
91 - function setDisplayColumnHeadings($bNewValue) { $this->bDisplayColumnHeadings = $bNewValue; }  
92 - function setIncludeBorder($bNewValue) { $this->bIncludeBorder = $bNewValue; }  
93 - function setChkPicPath($sNewChkPicPath) { $this->sChkPicPath = $sNewChkPicPath; }  
94 - function getChkPicPath() { return $this->sChkPicPath ; }  
95 - function setWordWrap($bNewValue) { $this->bWordWrap = $bNewValue; }  
96 - function setDisabled($bNewValue) { $this->bDisabled = $bNewValue; }  
97 -  
98 - /**  
99 - * Build the HTML string used to render the object  
100 - *  
101 - * @return String of HTML used to render object  
102 - *  
103 - * @todo possibly add in image size restraints for link types 2 and 3  
104 - */  
105 - function & render() {  
106 - global $default;  
107 -  
108 - $sToRender = "<table cellpadding=\"5\" border=\"" . ($this->bIncludeBorder ? "1" : "0") . "\" width=\"" . $this->sWidth . "\">\n";  
109 - if (isset($this->sTableHeading)) {  
110 - $sToRender .= "<caption align=\"top\" colspan=\"" . count($this->aColumns) . "\" align=\"left\"><b>$this->sTableHeading</b></caption>\n";  
111 - }  
112 - if ($this->bDisplayColumnHeadings) {  
113 - for ($i = 0; $i < count($this->aColumnHeaderNames); $i++) {  
114 - $sToRender .= "<th align=left>" . $this->aColumnHeaderNames[$i] . "</th>\n";  
115 - }  
116 - }  
117 - # $sql->query($this->sQuery);  
118 - $oResultSet =& $this->oResultSet;  
119 - if ($oResultSet->isEmpty()) {  
120 - $sToRender .= "<tr>\n";  
121 - if (isset($this->sEmptyTableMessage)) {  
122 - $sToRender .= "<td colspan=" . count($this->aColumns) . ">$this->sEmptyTableMessage</td>\n";  
123 - } else {  
124 - $sToRender .= "<td colspan=" . count($this->aColumns) . ">" .  
125 - sprintf(_("No %s data admin"), (isset($this->sTableHeading) ? $this->sTableHeading : "")) .  
126 - "</td>\n";  
127 - }  
128 - $sToRender .= "</tr>\n";  
129 - } else {  
130 - $iColour = 0;  
131 - while ($oResult = $oResultSet->next()) {  
132 - $sToRender .= "<tr bgcolor=\"" . getColour($iColour) . "\">\n";  
133 - $iColour++;  
134 - for ($i = 0; $i < count($this->aColumns); $i++) {  
135 - switch ($this->aColumnTypes[$i]) {  
136 - case 1:  
137 - //text  
138 - $sToRender .= "<td>";  
139 - if (isset($this->sImageURL)) {  
140 - $sToRender .= $this->generateImageURL($this->sImageURL);  
141 - } else if ($this->bUseImageURLFromQuery) {  
142 - $sToRender .= $this->generateImageURL($oResult->get("image_url"));  
143 - }  
144 - if ($oResult->get($this->aColumns[$i]) != null) {  
145 - if ($this->bWordWrap) {  
146 - $sToRender .= wordwrap($oResult->get($this->aColumns[$i]), 25, " ", 1) . "</td>";  
147 - } else {  
148 - $sToRender .= $oResult->get($this->aColumns[$i]) . "</td>";  
149 - }  
150 - } else {  
151 - $sToRender .= "&nbsp;</td>";  
152 - }  
153 - break;  
154 - case 2:  
155 - //boolean  
156 - $sToRender .= "<td>";  
157 - if ($oResult->get($this->aColumns[$i]) != null) {  
158 - $value = $oResult->get($this->aColumns[$i]);  
159 - if ($value) {  
160 - $sToRender .= "<img src=\"$default->graphicsUrl/" . $this->sChkPicPath . "\">";  
161 - } else {  
162 - $sToRender .= "<img src=\"$default->graphicsUrl/" . $this->sUnChkPicPath . "\">";  
163 - }  
164 - $sToRender .= "&nbsp;</td>";  
165 - } else {  
166 - $sToRender .= "&nbsp;</td>";  
167 - }  
168 -  
169 - break;  
170 - case 3:  
171 - if ($this->bDisabled === true) {  
172 - $sToRender .= '<td><span style="background-color: #CCCCCC; color: #222222;">';  
173 - $sToRender .= $oResult->get($this->aColumns[$i]);  
174 - $sToRender .= '</span></td>';  
175 - $sToRender .= "\n";  
176 - break;  
177 - }  
178 - //hyperlink  
179 - $sToRender .= "<td><a href=\"";  
180 - $sLink = $this->aLinkURLs[$i];  
181 - for ($j = 0; $j < count($this->aDBQueryStringColumns); $j++) {  
182 - if (strpos($sLink, "?") === false) {  
183 - $sLink .= "?" . $this->aQueryStringVariableNames[$j] . "=" . $oResult->get($this->aDBQueryStringColumns[$j]);  
184 - } else {  
185 - $sLink .= "&" . $this->aQueryStringVariableNames[$j] . "=" . $oResult->get($this->aDBQueryStringColumns[$j]);  
186 - }  
187 - }  
188 - $sToRender .= $sLink . "\">";  
189 -  
190 - if (isset($this->sImageURL)) {  
191 - $sToRender .= $this->generateImageURL($this->sImageURL);  
192 - } else if ($this->bUseImageURLFromQuery) {  
193 - $sToRender .= $this->generateImageURL($oResult->get("image_url"));  
194 - }  
195 - $sToRender .= $oResult->get($this->aColumns[$i]) . "</a></td>\n";  
196 - break;  
197 - default:  
198 - break;  
199 - }  
200 - }  
201 - $sToRender .= "</tr>\n";  
202 - }  
203 - }  
204 - $sToRender .= "</table>";  
205 - return $sToRender;  
206 - }  
207 -  
208 - function generateImageURL($sURL) {  
209 - return "<img src=\"" . $sURL . "\" border=\"0\"/>";  
210 - }  
211 -}  
212 -?>  
lib/visualpatterns/PatternTableSqlQuery.inc deleted
1 -<?php  
2 -/**  
3 - * $Id$  
4 - *  
5 - * Renders query results in a table.  
6 - *  
7 - * The first column in the table can be rendered as a link  
8 - * to the document/folder using the $iLinkType variable to specify the link type,  
9 - * the $sLinkPageURL to specify the page URL to link to and $sLinkImageURL to specify  
10 - * the image to display in the case of either a $iLinkType of 2 (image only) or 3 (image + text)  
11 - *  
12 - * If you wish to include images, there are two ways to do this  
13 - * o set the image url - this means that all rows will use the same image  
14 - * o set $bUseImageURLFromQuery to true - this will look for a column entitled image_url in  
15 - * the sql result set, allowing you to specify different images for each entry  
16 - *  
17 - * Copyright (c) 2003 Jam Warehouse http://www.jamwarehouse.com  
18 - *  
19 - * This program is free software; you can redistribute it and/or modify  
20 - * it under the terms of the GNU General Public License as published by  
21 - * the Free Software Foundation; either version 2 of the License, or  
22 - * (at your option) any later version.  
23 - *  
24 - * This program is distributed in the hope that it will be useful,  
25 - * but WITHOUT ANY WARRANTY; without even the implied warranty of  
26 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the  
27 - * GNU General Public License for more details.  
28 - *  
29 - * You should have received a copy of the GNU General Public License  
30 - * along with this program; if not, write to the Free Software  
31 - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA  
32 - *  
33 - * @version $Revision$  
34 - * @author Rob Cherry, Jam Warehouse (Pty) Ltd, South Africa  
35 - * @package lib.visualpatterns  
36 - * @todo $iLinkImageURL is hard coded - change  
37 - * @todo $sLinkPageURL is hard coded - change  
38 - */  
39 -  
40 -require_once('PatternTableGeneric.inc');  
41 -  
42 -class SqlResultSetAdapter {  
43 - // Has there been an error setting up the result set?  
44 - var $broken = false;  
45 -  
46 - function SqlResultSetAdapter ($oResultSet) {  
47 - global $default;  
48 - $this->oResultSet = $oResultSet;  
49 - if (PEAR::isError($oResultSet)) {  
50 - $this->broken = true;  
51 - }  
52 - }  
53 -  
54 - function isEmpty () {  
55 - global $default;  
56 - if ($this->broken) {  
57 - return $this->oResultSet;  
58 - }  
59 - return ($this->oResultSet->numRows() == 0);  
60 - }  
61 -  
62 - function next () {  
63 - global $default;  
64 - if ($this->broken) {  
65 - return $this->oResultSet;  
66 - }  
67 - $aNextResult = $this->oResultSet->fetchRow(DB_FETCHMODE_ASSOC);  
68 - if ($aNextResult === null) {  
69 - return null;  
70 - }  
71 - return new SqlResultAdapter ($aNextResult);  
72 - }  
73 -}  
74 -  
75 -class SqlResultAdapter {  
76 - function SqlResultAdapter ($oResult) {  
77 - $this->oResult = $oResult;  
78 - }  
79 - function get ($sField) {  
80 - global $default;  
81 - return $this->oResult[$sField];  
82 - }  
83 -}  
84 -  
85 -class PatternTableSqlQuery extends PatternTableGeneric {  
86 - function PatternTableSqlQuery($sTmpQuery, $aTmpColumns, $aTmpColumnTypes, $aTmpColumnHeaderNames, $sTmpWidth, $aTmpLinkURLs = null, $aTmpDBQueryStringColumns = null, $aNewQueryStringVariableNames = null) {  
87 - $oResult = DBUtil::runQuery($sTmpQuery);  
88 - $oResultSet =& new SqlResultSetAdapter ($oResult);  
89 - $this->PatternTableGeneric($oResultSet, $aTmpColumns, $aTmpColumnTypes, $aTmpColumnHeaderNames, $sTmpWidth, $aTmpLinkURLs, $aTmpDBQueryStringColumns, $aNewQueryStringVariableNames);  
90 - }  
91 -}  
92 -  
93 -?>