1: <?php
2: namespace Sphp\tools {
3: use Sphp\core\SphpVersion;
4: class Component extends \Sphp\core\SphpVersion {
5: /** @var string Name of Component */
6: protected $name = "";
7: /** @var string HTML Tag Name of Component */
8: public $tagName = "";
9: /** @var string value of Component, depend on component code */
10: public $value = "";
11: /** @var string Default Value of Component */
12: public $defvalue = "";
13: /** @var string Data Type(STRING) of value of Component */
14: public $dataType = "STRING";
15: /** @var string Bind with Database Table */
16: public $dtable = "";
17: /** @var string Bind with Database Table Field */
18: public $dfield = "";
19: /** @var boolean Database Bind Flag */
20: public $dataBound = false;
21: /** @var boolean Database Fill Flag */
22: public $blnDontFill = false;
23: /** @var boolean Form Submit Flag */
24: public $blnDontSubmit = false;
25: /** @var boolean Database Insert Flag */
26: public $blnDontInsert = false;
27: /** @var boolean Database Update Flag */
28: public $blnDontUpdate = false;
29: /** @var string HTML Tag Name */
30: public $HTMLName = "";
31: /** @var string HTML Tag id */
32: public $HTMLID = "";
33: /** @var boolean Default true */
34: public $visible = true;
35: /** @var boolean Default true */
36: public $renderMe = true;
37: /** @var boolean Default true */
38: public $renderTag = true;
39: /** @var boolean Submit flag check component submit by browser or not */
40: public $issubmit = false;
41: /** @var boolean Set HTML Closing Tag */
42: public $blnendtag = true;
43: /** @var string Component File Directory */
44: public $mypath = "";
45: /** @var string Component File Directory As URL */
46: public $myrespath = "";
47: public $cfilename = "";
48: public $cfilepath = "";
49: /** @var \Sphp\tools\NodeTag Component Node Tag */
50: public $element = null;
51: /** @var \Sphp\tools\Component Component Object */
52: public $parentobj = null;
53: /** @var \Sphp\tools\FrontFile Parent FrontFile */
54: protected $frontobj = null;
55: protected $children = array();
56: protected $proplist = array();
57: /** @var int */
58: protected $styler = 0;
59: /**
60: * Create Component Object. Don't override this function in component,
61: * if you don't understand the life cycle of object.
62: * @param string $name <p>
63: * Name of Component By default this is also HTML tag name and id
64: * </p>
65: * @param string $fieldName Database Field name for binding
66: * @param string $tableName Database Table name for binding
67: */
68: /**
69: * List Fusion Methods Start Here.
70: * Fusion Methods that can bind with FrontFile. These function always public and prefix with
71: * "fi_" and "fu_" and called by Fusion Attributes fui-*,fun-*,fur-* from FrontFile Component Tag.
72: * "fu_" prefix used with those Component methods which is only need for Client Side Configuration
73: * or output and no need on server side processing. It is default behavior and can call on anytime. In
74: * FrontFile you can call them and pass value with "fui_", "fun_" and "fur_" prefix.
75: * "fi_" prefix used with those methods that need to call for server side configurations, like validation
76: * methods, these methods can't call with "fun_" and "fur_" prefix.
77: * "fun_" prefix used to as safe binding and reduce server load with decide automatic processing time.
78: * If value passed is static then it call Fusion Method on Parse Phase of FrontFile and if value need to evaluate then it call
79: * Fusion Method on Execute Phase of FrontFile.
80: * <input type="text" runat="server" fuisetMaxLen="20" />
81: */
82: /**
83: * Set Styler for multi layout html output.
84: * @param int $styler
85: */
86: public function fu_setStyler($styler) {}
87: /**
88: * Set Default Value
89: * It will over write value of component if
90: * component is not submit by browser and it is empty.
91: * @param string|json|mixed $val
92: */
93: public function fi_setDefaultValue($val) {}
94: /**
95: * Set Value of Components which is used for html output.<br>
96: * txtName = new TextField();<br>
97: * txtName->setValue="Ram";<br>
98: * html output equals to <input value="Ram" /><br>
99: * @param String $val
100: */
101: public function fu_setValue($val) {}
102: /**
103: * Not Render if match
104: * @param string $param Comma separated authentication list
105: * @depends \SphpBase::page()->checkUnAuth
106: */
107: public function fu_setUnAuth($param) {}
108: /**
109: * Not Render if not match
110: * @param string $param Comma separated authentication list
111: * @depends \SphpBase::page()->checkAuth
112: */
113: public function fu_setAuth($param) {}
114: /**
115: * Not Render if not match
116: * @param string $param Comma separated permission list
117: * @depends \SphpBase::sphp_permissions()->isPermission
118: */
119: public function fu_setrender($permis = "") {}
120: /**
121: * Not Render if match
122: * @param string $param Comma separated permission list
123: * @depends \SphpBase::sphp_permissions()->isPermission
124: */
125: public function fu_unsetrender($permis = "") {}
126: /**
127: * Not Render Tag if not match
128: * @param string $permis Comma separated permission list
129: * @depends \SphpBase::sphp_permissions()->isPermission
130: */
131: public function fu_setrenderTag($permis = "") {}
132: /**
133: * Not Render Tag if match
134: * @param string $permis Comma separated permission list
135: * @depends \SphpBase::sphp_permissions()->isPermission
136: */
137: public function fu_unsetrenderTag($permis = "") {}
138: /**
139: * Not Auto Fill with viewData method if match
140: * @param string $permis Comma separated permission list
141: * @depends \SphpBase::sphp_permissions()->isPermission
142: */
143: public function fi_setDontFill($permis = "") {}
144: /**
145: * Not Auto Fill with viewData method if not match
146: * @param string $permis Comma separated permission list
147: * @depends \SphpBase::sphp_permissions()->isPermission
148: */
149: public function fi_unsetDontFill($permis = "") {}
150: /**
151: * Not Submit if match
152: * @param string $permis Comma separated permission list
153: * @depends \SphpBase::sphp_permissions()->isPermission
154: */
155: public function fi_setDontSubmit($permis = "") {}
156: /**
157: * Not Submit if not match
158: * @param string $permis Comma separated permission list
159: * @depends \SphpBase::sphp_permissions()->isPermission
160: */
161: public function fi_unsetDontSubmit($permis = "") {}
162: /**
163: * Not Insert with inserData if match
164: * @param string $permis Comma separated permission list
165: * @depends \SphpBase::sphp_permissions()->isPermission
166: */
167: public function fi_setDontInsert($permis = "") {}
168: /**
169: * Not Insert with inserData if not match
170: * @param string $permis Comma separated permission list
171: * @depends \SphpBase::sphp_permissions()->isPermission
172: */
173: public function fi_unsetDontInsert($permis = "") {}
174: /**
175: * Not Update with updateData if match
176: * @param string $permis Comma separated permission list
177: * @depends \SphpBase::sphp_permissions()->isPermission
178: */
179: public function fi_setDontUpdate($permis = "") {}
180: /**
181: * Not Update with updateData if not match
182: * @param string $permis Comma separated permission list
183: * @depends \SphpBase::sphp_permissions()->isPermission
184: */
185: public function fi_unsetDontUpdate($permis = "") {}
186: /**
187: * Set HTML Tag's Name Attribute, By Default it will be empty.
188: */
189: public function fu_setHTMLName($val) {}
190: /**
191: * Set HTML Tag ID Attribute, By Default it will be use object name.
192: * If ref-object is used then only main object will set id from name of object.
193: */
194: public function fu_setHTMLID($val) {}
195: /**
196: * Submit Component value via Ajax Request and it
197: * generate all required JS code automatically.
198: * in front file use:- funsubmitAJAX="click,|index-p1.html,|textarea1,textbox1"
199: * @param type $eventName JS Event Name
200: * @param type $url Optional Default=page_event_compname_$eventName URL to post data
201: * @param type $extracomp Comma Separated list html tag id or class with prefix . to send data
202: */
203: public function fu_submitAjax($eventName, $url = "", $extracomp = "") {}
204: /**
205: * Submit Component value via WS Request and it
206: * generate all required JS code automatically.
207: * in front file use:- funsubmitWS="click,|domain:8084,|textarea1,textbox1,|aigen,|picture"
208: * @param string $eventName JS Event Name
209: * @param string $host Optional Default=find socket in page to post data, it will ignore if socket already exist.
210: * @param string $extracomp Comma Separated list html id to send data
211: * @param string $gate Gate of native Gate to submit data
212: * @param string $evt Event of native Gate to trigger
213: * @param string $evtp Event Parameter to pass any data
214: *
215: */
216: public function fu_submitWS($eventName, $host = "", $extracomp = "",$gate="main",$evt="",$evtp="") {}
217: /**
218: * End List of Fusion Methods
219: */
220: /**
221: * Get Name of Object which is used for html tag id and name.
222: * @return String
223: */
224: public function getName() {}
225: public function getValue() {}
226: /**
227: * escape single or double quotation in value. This don't need DB Connection.
228: * It is not escape sql characters. Use dbEngine->cleanQuery() for properly safe value but
229: * it need db connection.
230: * @return string
231: */
232: public function getSqlSafeValue() {}
233: /**
234: * Set Value From Database Row, only if dfield set. This function don't know table name,
235: * So it is not safe like page_view. It will give error if field not exist in row.
236: * @param array $row Associative array from DB table
237: */
238: public function setFromDatabase($row){}
239: public function getDefaultValue() {}
240: /**
241: * Set HTML Tag Name
242: * @param string $param
243: */
244: public function setTagName($param) {}
245: /**
246: * Set HTML pre Tag. This HTML code will display before component Tag.
247: * @param string $val
248: */
249: public function setPreTag($val) {}
250: /**
251: * Add(Concatenate) HTML pre Tag in previous pre tag.
252: * This HTML code will display before component Tag.
253: * @param string $val
254: */
255: public function addPreTag($val) {}
256: public function getPreTag() {}
257: /**
258: * Set HTML post Tag. This HTML code will display after component Tag.
259: * @param string $val
260: */
261: public function setPostTag($val) {}
262: /**
263: * Add(Concatenate) HTML post Tag in previous post tag.
264: * This HTML code will display after component Tag.
265: * @param string $val
266: */
267: public function addPostTag($val) {}
268: public function getPostTag() {}
269: /**
270: * Set HTML pre Tag for children.
271: * This HTML code will display before any component children Tags.
272: * @param string $val
273: */
274: public function setInnerPreTag($val) {}
275: /**
276: * Get All attributes of Tag
277: * @return array
278: */
279: public function getAttributes() {}
280: /**
281: * Read Attribute of Tag
282: * @param string $name Attribute name
283: * @return string
284: */
285: public function getAttribute($name) {}
286: /**
287: * Set Attribute of Tag
288: * $div1->setAttribute('style','color: #ff6789');
289: * @param string $name Attribute name
290: * @param string $val
291: */
292: public function setAttribute($name, $val) {}
293: /**
294: * Remove Attribute
295: * @param string $name Attribute name
296: */
297: public function removeAttribute($name) {}
298: /**
299: * Set Attribute of Tag if value is empty
300: * $div1->setAttribute('style','color: #ff6789');
301: * @param string $name Attribute name
302: * @param string $val
303: */
304: public function setAttributeDefault($name, $val) {}
305: /**
306: * Set Inner HTML of Tag
307: * @param string $val
308: */
309: public function setInnerHTML($val) {}
310: public function getInnerHTML() {}
311: /**
312: * Append HTML code
313: * @param \Sphp\tools\NodeTag $html
314: */
315: public function appendHTML($html) {}
316: /**
317: * Wrap Tag with valid HTML Tag
318: * @param string $tagname
319: * @return \Sphp\tools\NodeTag
320: */
321: public function wrapTag($tagname) {}
322: /**
323: * Wrap Children Tags with valid HTML Tag Name
324: * @param string $tagname
325: * @return \Sphp\tools\NodeTag
326: */
327: public function wrapInnerTags($tagname) {}
328: public function setVisible() {}
329: public function unsetVisible() {}
330: public function getVisible() {}
331: public function getrender() {}
332: public function getrenderTag() {}
333: public function setDataType($val) {}
334: public function getDataType() {}
335: /**
336: * Bind Component with Database
337: * @param string $table Optional DB Table name
338: * @param string $field Optional DB Table Field name
339: */
340: public function bindToTable($table="",$field="") {}
341: public function setDataBound() {}
342: public function unsetDataBound() {}
343: public function getDataBound() {}
344: /**
345: * Check if Component is bind with Database
346: * @return boolean
347: */
348: public function hasDatabaseBinding() {}
349: public function getDontFill() {}
350: public function getDontSubmit() {}
351: public function getDontInsert() {}
352: public function getDontUpdate() {}
353: public function getEndTag() {}
354: /**
355: * Enable Closing Tag
356: */
357: public function setEndTag() {}
358: /**
359: * Disable Closing Tag
360: */
361: public function unsetEndTag() {}
362: public function setPathRes($val) {}
363: /**
364: * Get Parent FrontFile
365: * @return \Sphp\tools\FrontFile FrontFile Object
366: */
367: public function getFrontobj() {}
368: /**
369: * Advanced Method,Internal use
370: * @param \Sphp\tools\FrontFile $frontobj
371: */
372: /**
373: * Get Children Components Only First Level. Only Component Tags are included as child and
374: * ignored normal HTML tags.
375: * @return array
376: */
377: public function getChildren() {}
378: /**
379: * Get All Children Components All Levels. Only Component Tags are included as child and
380: * ignored normal HTML tags.
381: * @return array
382: */
383: public function getAllChildren() {}
384: /**
385: * Add Child Component
386: * @param \Sphp\tools\Component $child
387: */
388: /**
389: * Get Parent Component if any or null
390: * @return \Sphp\tools\Component
391: */
392: public function getParentComponent() {}
393: /**
394: * Regsiter Event for Object which uses for Event Driven Programming.
395: * @param string $event_name
396: */
397: protected function registerEvent($event_name) {}
398: protected function isRegisterHandler($event_name) {}
399: /**
400: * Set Event Handler of Component.
401: * This is Registered Event in component which can handle by Gate.
402: * @param string $event_name Event Name to handle
403: * @param string $handler Name of Function or Method that handle event
404: * @param object $eventhandlerobj Optional Object handle the event
405: */
406: public function setEventHandler($event_name, $handler, $eventhandlerobj = "null") {}
407: protected function raiseEvent($event_name, $arglst = array()) {}
408: protected function registerEventJS($event_name) {}
409: protected function isRegisterHandlerJS($event_name) {}
410: /**
411: * Set Event Handler for JS Code
412: * @param string $event_name Event Name to handle
413: * @param string $handler Name of JS Function that handle event
414: * @param object $eventhandlerobj Optional not supported
415: */
416: public function setEventHandlerJS($event_name, $handler, $eventhandlerobj = "null") {}
417: /**
418: * Generate JS Code to call event handler which
419: * is set by setEventHandlerJS method.
420: * @param string $event_name
421: * @param array $arglst
422: * @return string
423: */
424: protected function raiseEventJS($event_name, $arglst = array()) {}
425: /**
426: *
427: * @param string $eventName JS Event Name
428: * @param string $handlerFunName JS Function to handle Event
429: * @param boolean $renderonce Optional default=false, true=ignore on ajax request
430: */
431: public function onJsEvent($eventName, $handlerFunName = "", $renderonce = false) {}
432: /**
433: * This function only work if JS Function as also created by addHeaderJSFunction.
434: * @param string $funname JS Function name where code need to insert
435: * @param string $name JS code block id
436: * @param string $code JS Code to insert into JS Function
437: * @param boolean $renderonce Optional default=false, true=ignore on ajax request
438: */
439: public function addHeaderJSFunctionCode($funname, $name, $code, $renderonce = false) {}
440: /**
441: * Add Component as JS variable part of FrontFile JS Object.
442: * HTML Name of component used as variable name in JS code. By default it
443: * is same as tag id.
444: * in JS you can get Component object as front1.getComponent('txtname');
445: */
446: public function addAsJSVar() {}
447: /**
448: * Set Component as JS variable part of FrontFile JS Object. Remember not all component
449: * will automatically create js object. It is created by component code. If component
450: * developer doesn't offer JS integration then there are no any JS object.
451: * in JS you can set Component object as front1.setComponent('txtname','$jscode');
452: * @param string $jscode JS Code as String
453: * @return string JS code
454: */
455: public function setAsJSVar($jscode) {}
456: /**
457: * Get Component as JS Variable.
458: * return code like front1.getComponent('txtname');
459: * @return string JS code
460: */
461: public function getAsJSVar() {}
462: /**
463: * Bind with any JS Event with $handlerFunName.
464: * It generate all required JS code and add into jQuery ready handler.
465: * @param string $selector jQuery selector
466: * @param string $eventName JS Event Name
467: * @param string $handlerFunName JS function name for handling event.
468: * @param boolean $renderonce Optional default=false, true=ignore on ajax request
469: */
470: protected function bindJSEvent($selector, $eventName, $handlerFunName = "", $renderonce = false) {}
471: /**
472: * Bind with any JS Object Event(NON DOM Events) with $handlerFunName.
473: * For Example:- Bind with activate event of bootstrap Tab
474: * $this->bindJSObjEvent("#tabeditor","tabs","activate","comp_tabeditor_activate");
475: * It generate all required JS code and add into jQuery ready handler.
476: * @param string $selector jQuery selector
477: * @param string $obj JS Object variable name
478: * @param string $eventName JS Object Event Name
479: * @param string $handlerFunName JS function name for handling event.
480: * @param boolean $renderonce Optional default=false, true=ignore on ajax request
481: */
482: protected function bindJSObjEvent($selector, $obj, $eventName, $handlerFunName = "", $renderonce = false) {}
483: /**
484: * Create Front File Object and Share All Components with Parent File and also add all components
485: * as children of parent Components.
486: * @param string $filepath File Path of Front File or String
487: * @param bool $blnStringData Optional True mean use string rather then filepath
488: * @return \Sphp\tools\FrontFile
489: */
490: protected function createFrontObjectShare($filepath,$blnStringData = false){}
491: /**
492: * Create Front File Object in Private Space. Nothing Share with Parent Front File.
493: * @param string $filepath File Path of Front File or String
494: * @param bool $blnStringData Optional True mean use string rather then filepath
495: * @return \Sphp\tools\FrontFile
496: */
497: protected function createFrontObjectPrivate($filepath,$blnStringData = false){}
498: /**
499: * Prase HTML string and trigger onprase event for each node
500: * @param string $html
501: * @return string process html by onprocess callback
502: */
503: public function parseHTML($html) {}
504: final public function getHelp() {}
505: /**
506: * Advance Function
507: * Execute Limited PHP Code for Template tags ##{} #{}#.
508: * Global variables are not available, only component object $compobj and its public variables are available
509: * @param string &$strPHPCode Template code
510: * @return string
511: */
512: protected function executePHPCode(&$strPHPCode) {}
513: /**
514: * Advance Function
515: * Read file and process PHP and return result.
516: * Global variables are not available, only component object and its public variables are available
517: * @param string $filepath File Path
518: * @return string
519: */
520: protected function getDynamicContent($filepath) {}
521: /**
522: * Process PHP in Dynamic CSS,JS File and add as url Link. When
523: * \SphpBase::sphp_settings()->translatermode = true then
524: * framework generate file under cache folder. For Example:- CSS Theme component
525: * generate new theme according to settings as a public variables of component.
526: * @param type $fileURL2
527: * @param type $renderonce
528: * @param type $filename
529: * @param type $ext
530: * @param type $ver
531: */
532: public function addDynamicFileLink($fileURL2, $renderonce = false, $filename = "", $ext = "", $ver = "0") {}
533: /** override functions list start here, in order of life cycle events trigger.
534: * You can Design a new Component with override these functions in child class.
535: */
536: /**
537: * override this Life-Cycle event handler in your Component to handle it.
538: * trigger when Component initialize and before any children Components initialize. You can set default values of Component
539: * in this event handler.
540: */
541: protected function oninit() {}
542: /**
543: * override this Life-Cycle event handler in your Component to handle it.
544: * trigger when Component Create and before any children components Create event.
545: * We can read all static attributes and "fui-_*"
546: * dynamic attributes set in FrontFile. So you can decide your default values or
547: * calculate or validate request submit in this handler.
548: * @param \Sphp\tools\NodeTag $element A HTML element of component
549: */
550: protected function oncreate($element) {}
551: /**
552: * override this Life-Cycle event handler in your Component to handle it.
553: * trigger when All Components of FrontFile is created. If Component
554: * settings or input dependent on other components of FrontFile or
555: * it's children Components then we can use this handler to work further. For
556: * Example our component need to read Page Title when it find Title Component in
557: * FrontFile.
558: */
559: protected function onaftercreate() {}
560: /**
561: * override this Life-Cycle event handler in your Component to handle it.
562: * trigger when Component Get Gate ready Event as GateEvent. Trigger after
563: * Gate onrun event.
564: * In this event handler Component can handle it's own PageEvents and reply AJAX directly
565: * to Browser and reduce the work Gate and developer. But this will work only if FrontFile
566: * Object is created on Gate Life-Cycle event handler onstart.
567: */
568: protected function ongateevent() {}
569: /**
570: * override this Life-Cycle event handler in your Component to handle it.
571: * trigger before onprerender,onjsrender,onrender and before any children Components event PreJsRender and PreRender.
572: * This will not work if Front File not Render or disable Component rendering.
573: * You can create JS Function with addHeaderJSFunction and then Children can write their code inside
574: * this JS Function with addHeaderJSFunctionCode. You can divide your logic between various render
575: * event handlers.
576: */
577: protected function onprejsrender() {}
578: /**
579: * override this Life-Cycle event handler in your Component to handle it.
580: * trigger before onjsrender, onrender and PreRender of children Components.
581: * write js,html code which help or need by children for further addition onrender
582: * This will not work if Front File not Render or disable Component rendering.
583: */
584: protected function onprerender() {}
585: /**
586: * override this Life-Cycle event handler in your Component to handle it.
587: * trigger when Component before onrender and after children render. Mostly
588: * use to write own JS code and links external js,css files.
589: * This will not work if Front File not Render or disable Component rendering.
590: */
591: protected function onjsrender() {}
592: /**
593: * override this Life-Cycle event handler in your Component to handle it.
594: * trigger when Component Render and Before RenderLast. Mostly use to
595: * write HTML layout,design or over-write children output
596: * This will not work if Front File not Render or disable Component rendering.
597: */
598: protected function onrender() {}
599: /**
600: * override this Life-Cycle event handler in your Component to handle it.
601: * trigger when Component Rendering Complete After all output is generated.
602: * Use by Complex components. Use for Cleanup temporary resources and
603: * Finalize output or control children components.
604: * This will not work if Front File not Render or disable Component rendering.
605: */
606: protected function onpostrender() {}
607: /**
608: * override this event handler in your Component to handle it.
609: * trigger on Children Component Events. Use for interaction between parent
610: * child. So it is not Life-Cycle event. It will trigger by only first level of children.
611: * @param string $event Name of Event value may be oncreate,onprerender or onrender
612: * @param \Sphp\tools\Component $obj Child Component
613: */
614: protected function onchildevent($event, $obj) {}
615: /**
616: * override this event handler in your Component to handle it.
617: * trigger when Runtime Attribute runas used with value of "holder" and that pass \Sphp\tools\NodeTag
618: * Tag Object to component and then Component can display any type of content on holder object.
619: * With helper attribute only data-comp and leave data-prop.
620: * <div runas="holder" data-comp="pagrid1"></div>
621: * So it is not Life-Cycle event.
622: * @param \Sphp\tools\NodeTag $obj
623: */
624: protected function onholder($obj) {}
625: /**
626: * Advance Function
627: * override this event handler in your Component to handle it.
628: * trigger when HTML text parse with parseHTML function.
629: * @param string $event value may be start or end.
630: * @param \Sphp\tools\HTMLDOMNode $domelement
631: */
632: protected function onparse($event, $domelement) {}
633: public function &__get($name) {}
634: /**
635: * Advance Function, Internal use
636: */
637: /**
638: * Advance Function, Internal use
639: */
640: final public function init($name, $fieldName = "", $tableName = "") {}
641: /**
642: * Add Help for Component
643: * @param string $name prop name
644: * @param string $help Help text
645: * @param string $val value list
646: * @param string $param
647: * @param string $type Data Type
648: * @param string $options
649: */
650: protected function addHelpPropList($name, $help = '', $val = '', $param = '', $type = '', $options = '') {}
651: /**
652: * Add Help for Component
653: * @param string $name function name
654: * @param string $help Help text
655: * @param string $val value list
656: * @param string $param
657: * @param string $type Data Type
658: * @param string $options
659: */
660: protected function addHelpPropFunList($name, $help = '', $val = '', $param = '', $type = '', $options = '') {}
661: /**
662: * Advance Function, Internal use
663: */
664: public function helpPropList() {}
665: /**
666: * Advance Function, Internal use
667: */
668: protected function genhelpPropList() {}
669: }
670: /**
671: * Component use it own Gate to process events and Front File to design own
672: * Complex design for example:- Tiny Editor Component, Web Page Editor
673: */
674: class ComponentGroup extends Component {
675: final public function onaftercreate() {}
676: final public function onrender() {}
677: public function getCompApp() {}
678: }
679: class MenuGen {
680: public $htmlout = "";
681: public $sphp_api = null;
682: public $name = "def";
683: protected function onstart() {}
684: protected function onrun() {}
685: public function getOutput() {}
686: public function render() {}
687: }
688: class RenderComp {
689: public function render($obj) {}
690: public function createComp($id, $path = '', $class = '', $dfield = '', $dtable = '') {}
691: public function createComp2($id, $path = '', $class = '', $dfield = '', $dtable = '') {}
692: public function compcreate($comp) {}
693: }
694: }
695: