MIOLO20
Carregando...
Procurando...
Nenhuma entrada encontrada
mtabbedform.class
Ir para a documentação deste ficheiro.
1
<?php
2
class
MTabbedFormPage
extends
MControl
3
{
4
var
$tabbedform
;
// em qual tabbedform esta página está inserida
5
var
$form
;
// form a ser renderizado na pagina
6
var
$index
;
// indice desta pagina dentro do tabbedform (0-based)
7
var
$title
;
// titulo da pagina
8
9
function
__construct
(
$form
)
10
{
11
parent::__construct();
12
$this->form =
$form
;
13
$this->visible =
true
;
14
$this->enabled =
true
;
15
$this->title =
$form
->title;
16
}
17
}
18
19
class
MTabbedForm
extends
MForm
20
{
21
static
$order
= 0;
// número de ordem do form
22
var
$nOrder
;
// número de ordem do form
23
var
$pages
;
// array de TabbedFormPages
24
var
$activepage
;
// referencia a TabbedFormPage sendo mostrada
25
var
$currentpage
;
// indice da TabbedFormPage sendo exibida
26
var
$pagecount
;
// quantas TabbedFormPage associadas a este form
27
var
$pagewidth
= 80;
28
var
$pageheight
= 250;
29
var
$header
;
30
var
$footer
;
31
var
$painterMethod
;
32
33
function
__construct
(
$title
=
''
,
$action
=
''
)
34
{
35
parent::__construct(
$title
,
$action
);
36
$this->nOrder =
MTabbedForm::$order
++;
37
$this->AddStyleFile(
'm_tabforms.css'
);
38
$this->page->AddScript(
'x/x_core.js'
);
39
$this->page->AddScript(
'x/x_dom.js'
);
40
$this->page->AddScript(
'm_tabbed.js'
);
41
$this->fields = array
42
(
43
);
44
$this->
SetCurrentPage
($this->page->Request(
'frm_currpage_'
) + 0);
45
$this->pagecount = 0;
46
// $this->painterMethod = 'html';
47
$this->painterMethod =
'javascript'
;
48
}
49
50
function
AddField
($field, $hint =
false
)
51
{
52
$this->manager->Assert(
false
,
"Tabbed form doesn't yet support AddField Function!!!"
);
53
}
54
55
function
AddPage
($form)
56
{
57
$page
=
new
MTabbedFormPage
($form);
58
$page
->tabbedform = $this;
59
$form->tabbedform = $this;
60
$page
->index =
$this->pagecount
;
61
$this->pages[
$page
->index] =
$page
;
62
++
$this->pagecount
;
63
$this->fields = array_merge($this->fields, $form->fields);
64
65
foreach
($form->fields as $field)
66
{
67
if
(is_array($field))
68
{
69
$namefield = uniqid(
'frm_array'
);
70
}
71
else
72
{
73
$namefield = $field->name;
74
}
75
76
$this->manager->Assert(!isset($this->$namefield),
77
"Err: field [$namefield] already defined in form [$this->title]!"
);
78
$this->fields[$namefield] = $field;
79
}
80
81
$this->defaultButton =
false
;
82
}
83
84
function
SetPages
($forms)
85
{
86
if
(is_array($forms))
87
{
88
foreach
($forms as $form)
89
{
90
$this->
AddPage
($form);
91
}
92
}
93
}
94
95
//
96
// return label of current page
97
//
98
function
GetCurrentPage
()
99
{
100
return
$this->currentpage
;
101
}
102
103
function
SetCurrentPage
($index)
104
{
105
$_POST[
'frm_currpage_'
] = $index;
106
$this->currentpage = $index;
107
}
108
109
//
110
// returns a plain list of all fields contained in the tabbedform
111
//
112
function
GetFieldList
()
113
{
114
$fields
= array
115
(
116
);
117
118
for
($i = 0; $i <
$this->pagecount
; $i++)
119
{
120
$page
= $this->pages[$i];
121
$form =
$page
->form;
122
$fields
= array_merge(
$fields
, $form->GetFieldList());
123
}
124
125
return
$fields
;
126
}
127
128
function
EventHandler
()
129
{
130
$form = $this->pages[$this->
GetCurrentPage
()]->form;
131
$form->EventHandler();
132
parent::EventHandler();
133
}
134
135
function
SetPainterMethod
(
$method
)
136
{
137
$this->painterMethod =
$method
;
138
}
139
/*
140
Renderize
141
*/
142
function
GenerateHeader
()
143
{
144
return
($this->header != NULL) ?
new
MDiv
(
''
,$this->header,
'm-tabform-text'
) : NULL;
145
}
146
147
function
GenerateFooter
()
148
{
149
return
($this->footer != NULL) ?
new
MDiv
(
''
,$this->footer,
'm-tabform-text'
) : NULL;
150
}
151
152
function
GenerateTabs
()
153
{
154
global
$MIOLO
,
$page
;
155
156
$currpage = $this->
GetCurrentPage
();
157
$t = array
158
(
159
);
160
161
for
($i = 0; $i <
$this->pagecount
; $i++)
162
{
163
$t[] =
new
MDiv
(
''
,
''
,
'spacer'
);
164
$page
= &$this->pages[$i];
165
166
if
(
$page
->index == $currpage)
167
{
168
$t[] =
new
MDiv
(
''
,
''
,
'vertical1A'
);
169
$t[] =
new
MDiv
(
''
,
''
,
'vertical2A'
);
170
$t[] =
new
MDiv
(
''
,
new
MSpan
(
''
,
$page
->title,
'm-tabpage-link'
),
'contentA'
);
171
$t[] =
new
MDiv
(
''
,
''
,
'vertical3A'
);
172
$t[] =
new
MDiv
(
''
,
''
,
'vertical4A'
);
173
}
174
else
175
{
176
if
(
$page
->visible)
177
{
178
$pageName = $this->page->name;
179
$href =
"javascript:_MIOLO_TabbedForm_GotoPage('{$pageName}', '$page->index')"
;
180
$t[] =
new
MDiv
(
''
,
''
,
'vertical1B'
);
181
$t[] =
new
MDiv
(
''
,
''
,
'vertical2B'
);
182
183
if
(
$page
->enabled)
184
{
185
$link =
new
MLink
(
''
,
''
, $href,
$page
->title);
186
$link->SetClass(
'm-tabpage-link'
);
187
}
188
else
189
{
190
$link =
new
MSpan
(
''
,
$page
->title);
191
$link->SetClass(
'm-tabpage-link-disable'
);
192
}
193
194
$t[] =
new
MDiv
(
''
, $link,
'contentB'
);
195
$t[] =
new
MDiv
(
''
,
''
,
'vertical2B'
);
196
$t[] =
new
MDiv
(
''
,
''
,
'vertical1B'
);
197
}
198
}
199
}
200
201
$t[] =
new
MDiv
(
''
,
''
,
'contentC'
);
202
return
new
MDiv
(
''
, $t,
'm-tabpage'
);
203
}
204
205
function
GenerateBody
()
206
{
207
global $theme;
208
209
// optionally generate errors
210
if
($this->
HasErrors
())
211
{
212
$this->
GenerateErrors
();
213
}
214
215
$hidden =
null
;
216
$currentPage = $this->
GetCurrentPage
();
217
$width
=
'100%'
;
218
$row = 0;
219
$t =
new
SimpleTable
();
220
$t->SetAttributes(
"border=0 width=$width cellpadding=0 cellspacing=0 "
);
221
// header
222
$t->attributes[
'cell'
][$row][0] =
"colspan=3"
;
223
$t->cell[$row++][0] = $this->
GenerateHeader
();
224
// tabs
225
$t->attributes[
'cell'
][$row][0] =
"colspan=3"
;
226
$t->cell[$row++][0] = $this->
GenerateTabs
();
227
// page
228
$t1 =
new
SimpleTable
();
229
$t1->SetAttributes(
"border=0 width=$width cellpadding=0 cellspacing=5 "
);
230
$hidden =
null
;
231
$this->activepage = $this->pages[$this->
GetCurrentPage
()];
232
$activeForm = $this->activepage->form;
233
$t1->cell[0][0] = $activeForm->GenerateLayoutFields($hidden);
234
$layout
= $this->manager->theme->GetLayout();
235
236
if
(
$layout
!=
'print'
)
237
{
238
$buttons
= $activeForm->GenerateButtons();
239
240
if
(count(
$buttons
))
241
{
242
$t1->attributes[
'cell'
][1][0] =
"colspan=3"
;
243
$t1->cell[1][0] =
$buttons
;
244
}
245
}
246
247
$t->attributes[
'cell'
][$row][0] =
"class=\"m-tabform-body\""
;
248
$t->cell[$row++][0] = &$t1;
249
// script
250
$t->cell[$row++][0] = $activeForm->GenerateScript();
251
252
// footer
253
$t->attributes[
'cell'
][$row][0] =
"colspan=3"
;
254
$t->cell[$row++][0] = $this->
GenerateFooter
();
255
256
// buttons
257
if
(
$layout
!=
'print'
)
258
{
259
$buttons
= $this->
GenerateButtons
();
260
261
if
(count(
$buttons
))
262
{
263
$t->attributes[
'cell'
][$row][0] =
"class=\"m-form-body panel-body card-body\""
;
264
$t->cell[$row++][0] =
$buttons
;
265
}
266
}
267
268
// hidden
269
if
($hidden)
270
{
271
$t->cell[$row++][0] = $this->
GenerateHiddenFields
($hidden);
272
}
273
274
// gera campos 'HIDDEN' para os campos das páginas que não estão visíveis
275
$hidden = array
276
(
277
);
278
279
foreach
($this->pages as
$page
=> $tabbedPage)
280
{
281
if
(
$page
!= $currentPage)
282
{
283
$fields
= $tabbedPage->form->fields;
284
285
foreach
(
$fields
as $f)
286
{
287
if
(is_array($f->value))
288
{
289
foreach
($f->value as $v)
290
{
291
$hidden[] =
new
HiddenField
(
"{$f->name}[]"
, $v);
292
}
293
}
294
else
295
{
296
if
(($f instanceof
MRadioButton
) || ($f instanceof
MCheckBox
))
297
{
298
if
($f->checked)
299
{
300
$hidden[] =
new
MHiddenField
($f->name, $f->value);
301
}
302
}
303
else
304
{
305
$hidden[] =
new
MHiddenField
($f->name, $f->value);
306
}
307
}
308
}
309
}
310
}
311
312
$hidden[] =
new
MHiddenField
(
'frm_currpage_'
, $currentPage);
313
314
if
($hidden)
315
{
316
$t->attributes[
'cell'
][$row][0] =
"colspan=3"
;
317
$t->cell[$row++][0] = $this->
GenerateHiddenFields
($hidden);
318
}
319
320
return
$t;
321
}
322
323
function
GenerateHtml
()
324
{
325
global
$MIOLO
;
326
327
if
(!isset($this->buttons))
328
{
329
if
($this->defaultButton)
330
{
331
$this->buttons[] =
new
FormButton
(
FORM_SUBMIT_BTN_NAME
,
'Enviar'
,
'SUBMIT'
);
332
}
333
}
334
335
$body = $this->
GenerateBody
();
336
337
$b =
new
MDiv
(
''
, $body,
''
);
338
$title
=
new
MSpan
(
''
,$this->title,
'm-tabform-title'
);
339
$f =
new
MDiv
(
''
, array(
$title
, $b),
'm-tabform-box'
);
340
return
$f->Generate();
341
}
342
343
function
GenerateJavascript
()
344
{
345
global
$MIOLO
;
346
347
if
(!isset($this->buttons))
348
{
349
if
($this->defaultButton)
350
{
351
$this->buttons[] =
new
FormButton
(
FORM_SUBMIT_BTN_NAME
,
'Enviar'
,
'SUBMIT'
);
352
}
353
}
354
$id
= $this->name .
'_tab'
.
$this->nOrder
;
355
$w = $this->pagecount *
$this->pagewidth
;
356
$h =
$this->pageheight
;
357
$code =
"var $id = new xTabPanelGroup('{$id}', $w, $h, 25, 'm-tabform-panel','m-tabform-group','m-tabform-default','m-tabform-selected',{$this->currentpage})"
;
358
$this->page->OnLoad($code);
359
360
361
$hidden =
null
;
362
$currentPage = $this->
GetCurrentPage
();
363
$width
=
'100%'
;
364
$row = 0;
365
$body = array();
366
// tabs
367
$tabs = array();
368
for
($i = 0; $i <
$this->pagecount
; $i++)
369
{
370
$page
= $this->pages[$i];
371
$pageName = $this->page->name;
372
$tabs[] =
new
MDiv
(
''
,
$page
->title,
'm-tabform-default'
);
373
}
374
375
$body[] =
new
MDiv
(
''
, $tabs,
'm-tabform-group'
);
376
377
// pages
378
$header
= $this->
GenerateHeader
();
379
$hidden = array();
380
for
($i = 0; $i <
$this->pagecount
; $i++)
381
{
382
$page
= $this->pages[$i];
383
$pgs = array();
384
if
(
$page
->form->HasErrors() )
385
{
386
$pgs[] =
$page
->form->GenerateErrors();
387
}
388
if
( $this->
HasInfos
() )
389
{
390
$pgs[] =
$page
->form->GenerateInfos();
391
}
392
$pgs[] =
$page
->form->GenerateLayoutFields($hidden);
393
$buttons
=
$page
->form->GenerateButtons();
394
if
(count(
$buttons
))
395
{
396
$pgs[] =
new
MDiv
(
''
,
$buttons
,
''
);
397
}
398
$body[] =
new
MDiv
(
''
, $pgs,
'm-tabform-panel'
);
399
$body[] =
$page
->form->generateScript();
400
}
401
$buttons
= $this->
GenerateButtons
();
402
if
(count(
$buttons
))
403
{
404
$body[] =
new
MDiv
(
''
,
$buttons
,
''
);
405
}
406
$hidden[] =
new
MHiddenField
(
'frm_currpage_'
, $this->currentpage);
407
$body[] = $this->
GenerateHiddenFields
($hidden);
408
$b =
new
MDiv
(
$id
,$body,
'm-tabform-panel-group'
);
409
$f =
new
MDiv
(
''
, array(
$header
, $b),
'm-collapsible'
);
410
return
$f->Generate();
411
}
412
413
function
Generate
()
414
{
415
$this->painterMethod =
'javascript'
;
416
$method
=
'Generate'
.
$this->painterMethod
;
417
return
$this->
$method
();
418
}
419
}
420
?>
FormButton
Definição
compatibility.class:72
HiddenField
Definição
compatibility.class:141
MCheckBox
Definição
choicecontrols.class:32
MComponent\$page
$page
Definição
mcomponent.class:12
MControl
Definição
mcontrol.class:35
MControl\$id
$id
Definição
mcontrol.class:69
MDiv
Definição
blockcontrols.class:23
MForm
Definição
mform.class:9
MForm\$method
$method
Definição
mform.class:23
MForm\$buttons
$buttons
Definição
mform.class:28
MForm\$layout
$layout
Definição
mform.class:110
MForm\GenerateButtons
GenerateButtons()
Definição
mform.class:2187
MForm\$width
$width
Definição
mform.class:63
MForm\HasErrors
HasErrors()
Definição
mform.class:1325
MForm\$action
$action
Definição
mform.class:18
MForm\GenerateHiddenFields
GenerateHiddenFields($hidden)
Definição
mform.class:2220
MForm\$fields
$fields
Definição
mform.class:33
MForm\$title
$title
Definição
mform.class:13
MForm\GenerateErrors
GenerateErrors()
Definição
mform.class:1855
MForm\HasInfos
HasInfos()
Definição
mform.class:1377
MHiddenField
Definição
inputcontrols.class:123
MLink
Definição
linkcontrols.class:4
MRadioButton
Definição
choicecontrols.class:53
MSpan
Definição
blockcontrols.class:4
MTabbedFormPage
Definição
mtabbedform.class:3
MTabbedFormPage\$form
$form
Definição
mtabbedform.class:5
MTabbedFormPage\$index
$index
Definição
mtabbedform.class:6
MTabbedFormPage\$tabbedform
$tabbedform
Definição
mtabbedform.class:4
MTabbedFormPage\__construct
__construct($form)
Definição
mtabbedform.class:9
MTabbedFormPage\$title
$title
Definição
mtabbedform.class:7
MTabbedForm
Definição
mtabbedform.class:20
MTabbedForm\GetFieldList
GetFieldList()
Definição
mtabbedform.class:112
MTabbedForm\$activepage
$activepage
Definição
mtabbedform.class:24
MTabbedForm\$order
static $order
Definição
mtabbedform.class:21
MTabbedForm\$pages
$pages
Definição
mtabbedform.class:23
MTabbedForm\$currentpage
$currentpage
Definição
mtabbedform.class:25
MTabbedForm\EventHandler
EventHandler()
Definição
mtabbedform.class:128
MTabbedForm\$pageheight
$pageheight
Definição
mtabbedform.class:28
MTabbedForm\GenerateHeader
GenerateHeader()
Definição
mtabbedform.class:142
MTabbedForm\Generate
Generate()
Definição
mtabbedform.class:413
MTabbedForm\$header
$header
Definição
mtabbedform.class:29
MTabbedForm\$nOrder
$nOrder
Definição
mtabbedform.class:22
MTabbedForm\GenerateTabs
GenerateTabs()
Definição
mtabbedform.class:152
MTabbedForm\AddPage
AddPage($form)
Definição
mtabbedform.class:55
MTabbedForm\$pagewidth
$pagewidth
Definição
mtabbedform.class:27
MTabbedForm\GetCurrentPage
GetCurrentPage()
Definição
mtabbedform.class:98
MTabbedForm\$pagecount
$pagecount
Definição
mtabbedform.class:26
MTabbedForm\SetCurrentPage
SetCurrentPage($index)
Definição
mtabbedform.class:103
MTabbedForm\$painterMethod
$painterMethod
Definição
mtabbedform.class:31
MTabbedForm\SetPainterMethod
SetPainterMethod($method)
Definição
mtabbedform.class:135
MTabbedForm\$footer
$footer
Definição
mtabbedform.class:30
MTabbedForm\SetPages
SetPages($forms)
Definição
mtabbedform.class:84
MTabbedForm\GenerateFooter
GenerateFooter()
Definição
mtabbedform.class:147
MTabbedForm\AddField
AddField($field, $hint=false)
Definição
mtabbedform.class:50
MTabbedForm\__construct
__construct($title='', $action='')
Definição
mtabbedform.class:33
MTabbedForm\GenerateJavascript
GenerateJavascript()
Definição
mtabbedform.class:343
MTabbedForm\GenerateBody
GenerateBody()
Definição
mtabbedform.class:205
MTabbedForm\GenerateHtml
GenerateHtml()
Definição
mtabbedform.class:323
SimpleTable
Definição
compatibility.class:178
$MIOLO
$MIOLO
Definição
mdatetimefield.class:25
FORM_SUBMIT_BTN_NAME
const FORM_SUBMIT_BTN_NAME
Definição
mform.class:2
classes
ui
controls
mtabbedform.class
Gerado por
1.10.0