11<?php
2-
32namespace Ajax \common \html ;
43
5-
64use Ajax \JsUtils ;
75use Ajax \semantic \html \collections \form \HtmlFormField ;
86use Ajax \semantic \html \collections \form \HtmlForm ;
7+
98class HtmlDoubleElement extends HtmlSingleElement {
9+
1010 /**
1111 *
1212 * @var mixed
1313 */
1414 protected $ content ;
15- protected $ wrapContentBefore ="" ;
16- protected $ wrapContentAfter ="" ;
15+
16+ protected $ wrapContentBefore = "" ;
17+
18+ protected $ wrapContentAfter = "" ;
19+
1720 protected $ _editableContent ;
1821
19- public function __construct ($ identifier , $ tagName= "p " ) {
22+ public function __construct ($ identifier , $ tagName = "p " ) {
2023 parent ::__construct ($ identifier , $ tagName );
21- $ this ->_template = '<%tagName% id="%identifier%" %properties%>%wrapContentBefore%%content%%wrapContentAfter%</%tagName%> ' ;
24+ $ this ->_template = '<%tagName% id="%identifier%" %properties%>%wrapContentBefore%%content%%wrapContentAfter%</%tagName%> ' ;
2225 }
2326
2427 public function setContent ($ content ) {
25- $ this ->content = $ content ;
28+ $ this ->content = $ content ;
2629 return $ this ;
2730 }
2831
2932 public function getContent () {
3033 return $ this ->content ;
3134 }
3235
33- public function addContent ($ content ,$ before =false ) {
34- if (!\is_array ($ this ->content )) {
35- if (isset ($ this ->content ))
36- $ this ->content =array ($ this ->content );
36+ public function addContent ($ content , $ before = false ) {
37+ if (! \is_array ($ this ->content )) {
38+ if (isset ($ this ->content ))
39+ $ this ->content = array (
40+ $ this ->content
41+ );
3742 else
38- $ this ->content = array ();
43+ $ this ->content = array ();
3944 }
40- if ($ before )
41- array_unshift ($ this ->content ,$ content );
45+ if ($ before )
46+ array_unshift ($ this ->content , $ content );
4247 else
43- $ this ->content []= $ content ;
48+ $ this ->content [] = $ content ;
4449 return $ this ;
4550 }
4651
@@ -53,93 +58,103 @@ public function run(JsUtils $js) {
5358 if ($ this ->content instanceof HtmlDoubleElement) {
5459 $ this ->content ->run ($ js );
5560 } else if (\is_array ($ this ->content )) {
56- foreach ( $ this ->content as $ itemContent ) {
61+ foreach ($ this ->content as $ itemContent ) {
5762 if ($ itemContent instanceof HtmlDoubleElement) {
5863 $ itemContent ->run ($ js );
5964 }
6065 }
6166 }
6267 }
6368
64- public function setValue ($ value ) {
65- }
69+ public function setValue ($ value ) {}
6670
67- public function wrapContent ($ before , $ after= "" ) {
68- $ this ->wrapContentBefore .= $ before ;
69- $ this ->wrapContentAfter = $ after. $ this ->wrapContentAfter ;
71+ public function wrapContent ($ before , $ after = "" ) {
72+ $ this ->wrapContentBefore .= $ before ;
73+ $ this ->wrapContentAfter = $ after . $ this ->wrapContentAfter ;
7074 return $ this ;
7175 }
7276
73- public function getContentInstances ($ class ){
74- return $ this ->_getContentInstances ($ class ,$ this ->content );
77+ /**
78+ * Wraps the element with a container.
79+ *
80+ * @param HtmlDoubleElement $container
81+ * @return \Ajax\common\html\HtmlDoubleElement
82+ */
83+ public function wrapWith (HtmlDoubleElement $ container ) {
84+ return $ container ->setContent ($ this );
85+ }
86+
87+ public function getContentInstances ($ class ) {
88+ return $ this ->_getContentInstances ($ class , $ this ->content );
7589 }
7690
77- protected function _getContentInstances ($ class ,$ content ){
78- $ instances= [];
79- if ($ content instanceof $ class ){
80- $ instances []= $ content ;
81- }elseif ($ content instanceof HtmlDoubleElement){
82- $ instances= \array_merge ($ instances ,$ content ->getContentInstances ($ class ));
83- }elseif (\is_array ($ content )){
84- foreach ($ content as $ element ){
85- $ instances= \array_merge ($ instances ,$ this ->_getContentInstances ($ class , $ element ));
91+ protected function _getContentInstances ($ class , $ content ) {
92+ $ instances = [];
93+ if ($ content instanceof $ class ) {
94+ $ instances [] = $ content ;
95+ } elseif ($ content instanceof HtmlDoubleElement) {
96+ $ instances = \array_merge ($ instances , $ content ->getContentInstances ($ class ));
97+ } elseif (\is_array ($ content )) {
98+ foreach ($ content as $ element ) {
99+ $ instances = \array_merge ($ instances , $ this ->_getContentInstances ($ class , $ element ));
86100 }
87101 }
88102 return $ instances ;
89103 }
90104
91105 /**
92106 * Transforms the element into a link
107+ *
93108 * @return HtmlDoubleElement
94109 */
95- public function asLink ($ href= NULL ,$ target= NULL ) {
110+ public function asLink ($ href = NULL , $ target = NULL ) {
96111 if (isset ($ href ))
97112 $ this ->setProperty ("href " , $ href );
98- if (isset ($ target ))
113+ if (isset ($ target ))
99114 $ this ->setProperty ("target " , $ target );
100115 return $ this ->setTagName ("a " );
101116 }
102-
103- public function getTextContent (){
104- if (is_array ($ this ->content )){
117+
118+ public function getTextContent () {
119+ if (is_array ($ this ->content )) {
105120 return strip_tags (implode ("" , $ this ->content ));
106121 }
107122 return strip_tags ($ this ->content );
108123 }
109-
110- public function asEditable (HtmlFormField $ field ,$ asForm= false ,$ setValueProperty= "val() " ){
111- $ idF= $ field ->getIdentifier ();
112- $ idE= $ idF ;
113- if ($ asForm ){
114- $ frm= new HtmlForm ("frm- " . $ field ->getIdentifier ());
124+
125+ public function asEditable (HtmlFormField $ field , $ asForm = false , $ setValueProperty = "val() " ) {
126+ $ idF = $ field ->getIdentifier ();
127+ $ idE = $ idF ;
128+ if ($ asForm ) {
129+ $ frm = new HtmlForm ("frm- " . $ field ->getIdentifier ());
115130 $ frm ->setProperty ("onsubmit " , "return false; " );
116- $ fields= $ frm ->addFields ();
117- $ idE= $ frm ->getIdentifier ();
131+ $ fields = $ frm ->addFields ();
132+ $ idE = $ frm ->getIdentifier ();
118133 $ fields ->addItem ($ field );
119- $ fields ->addButtonIcon ("bt-okay " , "check " ,"green mini " ,"\$('# " . $ idE. "').trigger('validate',{value: $('#'+idF+' input').val()}); " );
120- $ fields ->addButtonIcon ("bt-cancel " , "close " ,"mini " ,"\$('# " . $ idE. "').trigger('endEdit'); " );
121- $ this ->_editableContent = $ frm ;
122- $ keypress= "" ;
123- $ focusOut= "" ;
124- }else {
125- $ focusOut= "if(e.relatedTarget==null)elm.trigger('endEdit'); " ;
126- $ this ->_editableContent = $ field ;
127- $ keypress= "$('# " . $ idF. "').keyup(function(e){if(e.which == 13) { \$('# " . $ idE. "').trigger('validate',{value: $('#'+idF+' input').val()});}if(e.keyCode===27) { \$('# " . $ idE. "').trigger('endEdit');}}); " ;
134+ $ fields ->addButtonIcon ("bt-okay " , "check " , "green mini " , "\$('# " . $ idE . "').trigger('validate',{value: $('#'+idF+' input').val()}); " );
135+ $ fields ->addButtonIcon ("bt-cancel " , "close " , "mini " , "\$('# " . $ idE . "').trigger('endEdit'); " );
136+ $ this ->_editableContent = $ frm ;
137+ $ keypress = "" ;
138+ $ focusOut = "" ;
139+ } else {
140+ $ focusOut = "if(e.relatedTarget==null)elm.trigger('endEdit'); " ;
141+ $ this ->_editableContent = $ field ;
142+ $ keypress = "$('# " . $ idF . "').keyup(function(e){if(e.which == 13) { \$('# " . $ idE . "').trigger('validate',{value: $('#'+idF+' input').val()});}if(e.keyCode===27) { \$('# " . $ idE . "').trigger('endEdit');}}); " ;
128143 }
129144 $ this ->_editableContent ->setProperty ("style " , "display:none; " );
130- $ this ->onCreate ("let idF=' " . $ idF. "';let idE=' " . $ idE. "';let elm=$('#'+idE);let self=$('# " . $ this ->getIdentifier (). "'); " . $ keypress. "elm.on('validate',function(){self.html($('#'+idE+' input'). " . $ setValueProperty. ");elm.trigger('endEdit');});elm.on('endEdit',function(){self.show();$(this).hide();});elm.focusout(function(e){ " . $ focusOut. "}); " );
131- $ this ->onClick ("let self=$(this);self.hide(); " . $ field ->setJsContent ("self.html() " ). ";$('# " . $ idF. " input').trigger('change');elm.show();$('#'+idE+' input').focus(); " );
145+ $ this ->onCreate ("let idF=' " . $ idF . "';let idE=' " . $ idE . "';let elm=$('#'+idE);let self=$('# " . $ this ->getIdentifier () . "'); " . $ keypress . "elm.on('validate',function(){self.html($('#'+idE+' input'). " . $ setValueProperty . ");elm.trigger('endEdit');});elm.on('endEdit',function(){self.show();$(this).hide();});elm.focusout(function(e){ " . $ focusOut . "}); " );
146+ $ this ->onClick ("let self=$(this);self.hide(); " . $ field ->setJsContent ("self.html() " ) . ";$('# " . $ idF . " input').trigger('change');elm.show();$('#'+idE+' input').focus(); " );
132147 }
148+
133149 /**
134- * {@inheritDoc}
150+ *
151+ * {@inheritdoc}
135152 * @see \Ajax\common\html\BaseHtml::compile_once()
136153 */
137154 protected function compile_once (\Ajax \JsUtils $ js = NULL , &$ view = NULL ) {
138- if (! $ this ->_compiled && isset ($ this ->_editableContent )){
139- $ this ->wrap ("" ,$ this ->_editableContent );
155+ if (! $ this ->_compiled && isset ($ this ->_editableContent )) {
156+ $ this ->wrap ("" , $ this ->_editableContent );
140157 }
141- parent ::compile_once ($ js ,$ view );
142-
158+ parent ::compile_once ($ js , $ view );
143159 }
144-
145160}
0 commit comments