1: <?php
2: /**
3: * Description of DTable
4: *
5: * @author Sartaj
6: */
7: namespace {
8:
9: class DTable extends \Sphp\tools\Control{
10: private $strFormat = '';
11: public $fields = array();
12: private $app = '';
13: public $RenderComp;
14: private $form = '';
15: private $blnDontuseFormat = false;
16:
17:
18: public function __construct($name='',$fieldName='',$tableName='') {
19: $tblName = \SphpBase::page()->tblName;
20: $this->init($name,'','');
21: if($tableName==''){
22: $this->dtable = $tblName;
23: }else{
24: $this->dtable = $tableName;
25: }
26: $this->RenderComp = new \Sphp\tools\RenderComp();
27: }
28:
29: public function setMsgName($val) { $this->msgName = $val;}
30: public function setApp($val){
31: $this->app = $val;
32: }
33: public function setForm($val){
34: $this->form = $val;
35: }
36:
37: public function setField($dfield,$label='',$type='',$req='',$min='',$max=''){
38: if($label==''){
39: $label = $dfield;
40: }
41: $this->fields[] = array($label,$dfield,$type,$req,$min,$max);
42: }
43: public function setDontUseFormat(){
44: $this->blnDontuseFormat = true;
45: }
46:
47: public function createComp($id,$path='',$class=''){
48: $comp = $this->RenderComp->createComp2($id,$path,$class,$id);
49: $comp->setForm($this->form);
50: $comp->setTempobj($this->tempobj);
51: $this->tempobj->setComponent($comp->name,$comp);
52: \SphpBase::sphp_api()->addComponent($comp->name,$comp);
53: return $comp;
54: }
55:
56: public function genComp(){
57: $comppath = \SphpBase::sphp_settings()->comp_path;
58: $libpath = \SphpBase::sphp_settings()->slib_path;
59: // count total page
60: foreach($this->fields as $key=>$arrn){
61: $label = $arrn[0];
62: $id = $arrn[1];
63: $type = $arrn[2];
64: $minlen = $arrn[4];
65: $maxlen = $arrn[5];
66: $req = $arrn[3];
67: switch($type){
68: case 'text':{
69: $ctrl = $this->createComp($id,"{$libpath}/comp/html/TextField.php","Sphp\\comp\\html\\TextField");
70: $ctrl->tagName = "input";
71: if($minlen!=""){
72: $ctrl->setMinLen($minlen);
73: }
74: if($maxlen!=""){
75: $ctrl->setMaxLen($maxlen);
76: }
77: if($req=="r"){
78: $ctrl->setRequired();
79: }
80: break;
81: }
82: case 'hidden':{
83: $ctrl = $this->createComp($id,"{$libpath}/comp/html/TextField.php","Sphp\\comp\\html\\TextField");
84: $ctrl->tagName = "input";
85: $ctrl->unsetVisible();
86: break;
87: }
88: case 'pass':{
89: $ctrl = $this->createComp($id,"{$libpath}/comp/html/TextField.php","Sphp\\comp\\html\\TextField");
90: $ctrl->tagName = "input";
91: $ctrl->setPassword();
92: if($minlen!=""){
93: $ctrl->setMinLen($minlen);
94: }
95: if($maxlen!=""){
96: $ctrl->setMaxLen($maxlen);
97: }
98: if($req=="r"){
99: $ctrl->setRequired();
100: }
101: break;
102: }
103: case 'num':{
104: $ctrl = $this->createComp($id,"{$libpath}/comp/html/TextField.php","Sphp\\comp\\html\\TextField");
105: $ctrl->tagName = "input";
106: $ctrl->setNumeric();
107: if($minlen!=""){
108: $ctrl->setMinLen($minlen);
109: }
110: if($maxlen!=""){
111: $ctrl->setMaxLen($maxlen);
112: }
113: if($req=="r"){
114: $ctrl->setRequired();
115: }
116: break;
117: }
118: case 'numeric':{
119: $ctrl = $this->createComp($id,"{$libpath}/comp/html/TextField.php","Sphp\\comp\\html\\TextField");
120: $ctrl->tagName = "input";
121: $ctrl->setNumeric();
122: if($minlen!=""){
123: $ctrl->setMinLen($minlen);
124: }
125: if($maxlen!=""){
126: $ctrl->setMaxLen($maxlen);
127: }
128: if($req=="r"){
129: $ctrl->setRequired();
130: }
131: break;
132: }
133: case 'email':{
134: $ctrl = $this->createComp($id,"{$libpath}/comp/html/TextField.php","Sphp\\comp\\html\\TextField");
135: $ctrl->tagName = "input";
136: $ctrl->setEmail();
137: if($minlen!=""){
138: $ctrl->setMinLen($minlen);
139: }
140: if($maxlen!=""){
141: $ctrl->setMaxLen($maxlen);
142: }
143: if($req=="r"){
144: $ctrl->setRequired();
145: }
146: break;
147: }
148: case 'textarea':{
149: $ctrl = $this->createComp($id,"{$libpath}/comp/html/TextArea.php","Sphp\\comp\\html\\TextArea");
150: $ctrl->tagName = "textarea";
151: if($minlen!=""){
152: $ctrl->setMinLen($minlen);
153: }
154: if($maxlen!=""){
155: $ctrl->setMaxLen($maxlen);
156: }
157: if($req=="r"){
158: $ctrl->setRequired();
159: }
160: break;
161: }
162: case 'select':{
163: $ctrl = $this->createComp($id,"{$libpath}/comp/html/Select.php","Sphp\\comp\\html\\Select");
164: $ctrl->tagName = "select";
165: $ctrl->setOptions($req);
166: break;
167: }
168: case 'date':{
169: $ctrl = $this->createComp($id,"controls/jquery/DateField2.php");
170: $ctrl->tagName = "input";
171: if($req=="r"){
172: $ctrl->setRequired();
173: }
174: break;
175: }
176: case 'file':{
177: $ctrl = $this->createComp($id,"{$libpath}/comp/html/FileUploader.php","Sphp\\comp\\html\\FileUploader");
178: $ctrl->tagName = "input";
179: $ctrl->setParameterA('type', 'file');
180: if($minlen!=""){
181: $ctrl->setFileMinLen($minlen);
182: }
183: if($maxlen!=""){
184: $ctrl->setFileMaxLen($maxlen);
185: }
186: if($req=="r"){
187: $ctrl->setRequired();
188: }
189: break;
190: }
191: default:{
192: $ctrl = $this->createComp($id,"$type");
193: if($minlen!=""){
194: $ctrl->setMinLen($minlen);
195: }
196: if($maxlen!=""){
197: $ctrl->setMaxLen($maxlen);
198: }
199: if($req=="r"){
200: $ctrl->setRequired();
201: }
202: break;
203: }
204: }
205:
206: $ctrl->setMsgName($label);
207: }
208: }
209:
210: public function firecompcreate(){
211: $idobj = null;
212: foreach($this->fields as $key=>$arrn){
213: $id = $arrn[1];
214: $idobj = readGlobal($id);
215: $this->RenderComp->compcreate($idobj);
216: }
217:
218: }
219:
220: public function genForm(){
221: // count total page
222: $stro = '';
223: $idobj = null;
224: if($this->strFormat==''){
225: $stro = '<table class="pagtable">';
226: $blnf = true;
227: foreach($this->fields as $key=>$arrn){
228: $label = $arrn[0];
229: $id = $arrn[1];
230: $type = $arrn[2];
231: $minlen = $arrn[4];
232: $maxlen = $arrn[5];
233: $req = $arrn[3];
234: $idobj = readGlobal($id);
235: $idobj->setMsgName($label);
236: $field = $this->RenderComp->render($idobj);
237:
238: if($blnf){
239: $stro .= "<tr class=\"pagrow1\">";
240: $blnf = false;
241: }else{
242: $stro .= "<tr class=\"pagrow2\">";
243: $blnf = true;
244: }
245: $stro .= "<td class=\"paglabel\">$label</td><td class=\"pagfield\">$field</td></tr>";
246: }
247: $stro .= "</table>";
248: }
249: else{
250: $stro = $this->loadScript('<?php
251: $idobj = null;
252: foreach($this->fields as $key=>$arrn){
253: $label = $arrn[0];
254: $id = $arrn[1];
255: $type = $arrn[2];
256: $minlen = $arrn[4];
257: $maxlen = $arrn[5];
258: $req = $arrn[3];
259: $idobj = readGlobal($id);
260: $idobj->setMsgName($label);
261: $field = $'.$this->name.'->RenderComp->render($idobj);
262:
263: ?>'.$this->strFormat.'<?php } ?>');
264: }
265: return $stro;
266:
267: }
268:
269: public function oncreate($element){
270: if(!$this->blnDontuseFormat){
271: $this->strFormat = $element->innertext;
272: }
273: $element->innertext = '';
274: $str = $this->loadScript($element->getAttribute('oncreate'));
275: $element->removeAttribute("oncreate");
276: $this->genComp();
277: }
278:
279:
280: public function onjsrender(){
281: }
282:
283: public function onrender(){
284: // set default values
285: //$this->parameterA['class'] = 'pag';
286: $this->innerHTML = $this->genForm();
287: $this->unsetrenderTag();
288: }
289:
290: // javascript functions used by ajax control and other control
291: public function getJSValue(){
292: return "document.getElementById('$this->name').value" ;
293: }
294:
295: public function setJSValue($exp){
296: return "document.getElementById('$this->name').value = $exp;" ;
297: }
298:
299:
300:
301: }
302: }
303: