Commit 4c335bd72d742cfb4b61641c4401ca6a96f5457c
1 parent
0a2a2263
Initial revision. Display one row from a db table in an editable format
git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@566 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
1 changed file
with
159 additions
and
0 deletions
lib/visualpatterns/PatternEditableListFromQuery.inc
0 → 100644
| 1 | +<?php | ||
| 2 | +/** | ||
| 3 | +* Class PatternEditableListFromQuery | ||
| 4 | +* Takes a SQL query, an array of column names and and an array of column types | ||
| 5 | +* and displays the data in an editable two column list format | ||
| 6 | +* | ||
| 7 | +* @author Rob Cherry, Jam Warehouse (Pty) Ltd, South Africa | ||
| 8 | +* @date 27 January 2003 | ||
| 9 | +* @package lib.visualpatterns | ||
| 10 | +* | ||
| 11 | +* @todo implement HyperLinkURL option | ||
| 12 | +*/ | ||
| 13 | + | ||
| 14 | +class PatternEditableListFromQuery { | ||
| 15 | + | ||
| 16 | + /** SQL query to execute */ | ||
| 17 | + var $sQuery; | ||
| 18 | + /** table on which to perform store/create */ | ||
| 19 | + var $sTableName; | ||
| 20 | + /** array of columns to display */ | ||
| 21 | + var $aDisplayColumns; | ||
| 22 | + /** columns to store */ | ||
| 23 | + var $aStoreColumns; | ||
| 24 | + /** names of columns to display */ | ||
| 25 | + var $aColumnNames; | ||
| 26 | + /** array of column types (1 = text, 2 = boolean, 3 = dropdown list) */ | ||
| 27 | + var $aDisplayColumnTypes; | ||
| 28 | + /** database column types (0 = id, 1 = text, 2 = boolean) */ | ||
| 29 | + var $aDatabaseColumnTypes; | ||
| 30 | + /** number of rows for text area if text area option is being used */ | ||
| 31 | + var $iTextAreaRows = 6; | ||
| 32 | + /** number of colums for text area if text area option is being used */ | ||
| 33 | + var $iTextAreaColums = 20; | ||
| 34 | + /** heading for table */ | ||
| 35 | + var $sTableHeading; | ||
| 36 | + /** set the table width */ | ||
| 37 | + var $iTableWidth = null; | ||
| 38 | + /** unique name to prepend to form variables */ | ||
| 39 | + var $sUniqueName; | ||
| 40 | + | ||
| 41 | + /** | ||
| 42 | + * Default constructor | ||
| 43 | + * | ||
| 44 | + * @param String Query to execute | ||
| 45 | + * @param | ||
| 46 | + */ | ||
| 47 | + function PatternEditableListFromQuery($sNewQuery, $sNewTableName, $aNewDisplayColumns, $aNewStoreColumns, $aNewColumnNames, $aNewDisplayColumnTypes, $aNewDatabaseColumnTypes) { | ||
| 48 | + $this->sQuery = $sNewQuery; | ||
| 49 | + $this->sTableName = $sNewTableName; | ||
| 50 | + $this->aDisplayColumns = $aNewDisplayColumns; | ||
| 51 | + $this->aStoreColumns = $aNewStoreColumns; | ||
| 52 | + $this->aColumnNames = $aNewColumnNames; | ||
| 53 | + $this->aDisplayColumnTypes = $aNewDisplayColumnTypes; | ||
| 54 | + $this->aDatabaseColumnTypes = $aNewDatabaseColumnTypes; | ||
| 55 | + } | ||
| 56 | + | ||
| 57 | + function setUniqueName($sNewValue) { | ||
| 58 | + $this->sUniqueName = $sNewValue; | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + function setTableWidth($iNewValue) { | ||
| 62 | + $this->iTableWidth = $iNewValue; | ||
| 63 | + } | ||
| 64 | + | ||
| 65 | + function setTextAreaRows($iNewValue) { | ||
| 66 | + $this->iTextAreaRows = $iNewValue; | ||
| 67 | + } | ||
| 68 | + | ||
| 69 | + function setTextAreaDisplayColumns($iNewValue) { | ||
| 70 | + $this->iTextAreaDisplayColumns = $iNewValue; | ||
| 71 | + } | ||
| 72 | + | ||
| 73 | + function setTableHeading($sNewValue) { | ||
| 74 | + $this->sTableHeading = $sNewValue; | ||
| 75 | + } | ||
| 76 | + | ||
| 77 | + function setRenderIndividualTableForEachResult($bNewValue) { | ||
| 78 | + $this->bIndividualTableForEachResult = $bNewValue; | ||
| 79 | + } | ||
| 80 | + | ||
| 81 | + function & render() { | ||
| 82 | + $sql = new Owl_DB(); | ||
| 83 | + $sql->query($this->sQuery); | ||
| 84 | + if ($sql->next_record()) {; | ||
| 85 | + $sToRender = ""; | ||
| 86 | + $sToRender .= "<table border = 0, cellpadding = 5 " . (isset($this->iTableWidth) ? ", width = $this->iTableWidth" : "") . " >\n"; | ||
| 87 | + $sToRender .= "<input type=\"hidden\" name=\"unique_start_" . $this->sUniqueName . "\" value=\"\" />\n"; | ||
| 88 | + $sToRender .= "<input type=\"hidden\" name=\"$this->sUniqueName\" value=\"" . $sql->f("id") . "\" />\n"; | ||
| 89 | + $sToRender .= "<input type=\"hidden\" name=\"" . $this->sUniqueName . "_tn\" value=\"$this->sTableName\" />\n"; | ||
| 90 | + | ||
| 91 | + if (isset($this->sTableHeading)) { | ||
| 92 | + $sToRender .= "<caption align = left><b>$this->sTableHeading</b></caption>\n"; | ||
| 93 | + } | ||
| 94 | + | ||
| 95 | + if ($sql->num_rows() == 0) { | ||
| 96 | + $sToRender .= "<tr>\n"; | ||
| 97 | + $sToRender .= "<td colspan=" . count($this->aDisplayColumns) . ">No " . (isset($this->sTableHeading) ? "$this->sTableHeading" : "") . " data</td>\n"; | ||
| 98 | + $sToRender .= "</tr>\n"; | ||
| 99 | + } else { | ||
| 100 | + for ($i = 0; $i < count($this->aDisplayColumns); $i++) { | ||
| 101 | + $sToRender .= "<tr>\n"; | ||
| 102 | + $sToRender .= "<input type=\"hidden\" name=\"" . $this->sUniqueName . "_tc\" value=\"" . $this->aStoreColumns[$i] . "\" />\n"; | ||
| 103 | + $sToRender .= "<input type=\"hidden\" name=\"" . $this->sUniqueName . "_type\" value=\"" . $this->aDatabaseColumnTypes[$i] . "\" />\n"; | ||
| 104 | + $sToRender .= "\t<td>" . $this->aColumnNames[$i] . "</td>\n"; | ||
| 105 | + switch ($this->aDisplayColumnTypes[$i]) { | ||
| 106 | + case 1: | ||
| 107 | + //plain text field | ||
| 108 | + $sToRender .= "\t<td><input type=\"text\" name=\"" . $this->sUniqueName . "_" . $i . "_value\" value=\"" . $sql->f($this->aDisplayColumns[$i]) . "\"</td>\n"; | ||
| 109 | + break; | ||
| 110 | + case 2: | ||
| 111 | + //boolean value | ||
| 112 | + //$sToRender .= "\t<td><textarea cols=$this->iTextAreaDisplayColumns rows=$this->iTextAreaRows READONLY>" . $sql->f($this->aDisplayColumns[$i]) . "</textarea></td>\n"; | ||
| 113 | + break; | ||
| 114 | + case 3: | ||
| 115 | + break; | ||
| 116 | + default: | ||
| 117 | + break; | ||
| 118 | + } | ||
| 119 | + $sToRender .= "</tr>\n"; | ||
| 120 | + } | ||
| 121 | + | ||
| 122 | + /*while ($sql->next_record()) { | ||
| 123 | + //$sToRender .= "<tr><td>\n"; | ||
| 124 | + for ($i = 0; $i < count($this->aDisplayColumns); $i++) { | ||
| 125 | + $sToRender .= "<tr>\n"; | ||
| 126 | + $sToRender .= "<input type=\"hidden\" name=\"" . $this->sUniqueName . "_tc\" value=\"" . $this->aStoreColumns[$i] . "\" />\n"; | ||
| 127 | + $sToRender .= "<input type=\"hidden\" name=\"" . $this->sUniqueName . "_type\" value=\"" . $this->aDatabaseColumnTypes[$i] . "\" />\n"; | ||
| 128 | + $sToRender .= "\t<td>" . $this->aColumnNames[$i] . "</td>\n"; | ||
| 129 | + switch ($this->aDisplayColumnTypes[$i]) { | ||
| 130 | + case 1: | ||
| 131 | + //plain text field | ||
| 132 | + $sToRender .= "\t<td><input type=\"text\" name=\"" . $this->sUniqueName . "_" . $i . "_value\" value=\"" . $sql->f($this->aDisplayColumns[$i]) . "\"</td>\n"; | ||
| 133 | + break; | ||
| 134 | + case 2: | ||
| 135 | + //boolean value | ||
| 136 | + //$sToRender .= "\t<td><textarea cols=$this->iTextAreaDisplayColumns rows=$this->iTextAreaRows READONLY>" . $sql->f($this->aDisplayColumns[$i]) . "</textarea></td>\n"; | ||
| 137 | + break; | ||
| 138 | + case 3: | ||
| 139 | + break; | ||
| 140 | + default: | ||
| 141 | + break; | ||
| 142 | + } | ||
| 143 | + $sToRender .= "</tr>\n"; | ||
| 144 | + } | ||
| 145 | + }*/ | ||
| 146 | + } | ||
| 147 | + $sToRender .= "<input type=\"hidden\" name=\"unique_end_" . $this->sUniqueName . "\" value=\"\" />\n"; | ||
| 148 | + $sToRender .= "</table>\n"; | ||
| 149 | + } | ||
| 150 | + return $sToRender; | ||
| 151 | + } | ||
| 152 | + | ||
| 153 | + function replaceValues($sQueryStringText, $sql) { | ||
| 154 | + return $sQueryStringText; | ||
| 155 | + } | ||
| 156 | + | ||
| 157 | +} | ||
| 158 | + | ||
| 159 | +?> |