phpMv -UI toolkit 2.4.12
jQuery, jQuery UI, Twitter Bootstrap and Semantic-UI library for php & php MVC Frameworks
Loading...
Searching...
No Matches
HtmlDoubleElement.php
Go to the documentation of this file.
1<?php
2namespace Ajax\common\html;
3
7
9
14 protected $content;
15
16 protected $wrapContentBefore = "";
17
18 protected $wrapContentAfter = "";
19
21
22 public function __construct($identifier, $tagName = "p") {
23 parent::__construct($identifier, $tagName);
24 $this->_template = '<%tagName% id="%identifier%" %properties%>%wrapContentBefore%%content%%wrapContentAfter%</%tagName%>';
25 }
26
27 public function setContent($content) {
28 $this->content = $content;
29 return $this;
30 }
31
32 public function getContent() {
33 return $this->content;
34 }
35
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 );
42 else
43 $this->content = array();
44 }
45 if ($before)
46 \array_unshift($this->content, $content);
47 else
48 $this->content[] = $content;
49 return $this;
50 }
51
52 /*
53 * (non-PHPdoc)
54 * @see \Ajax\bootstrap\html\HtmlSingleElement::run()
55 */
56 public function run(JsUtils $js) {
57 parent::run($js);
58 if ($this->content instanceof HtmlDoubleElement) {
59 $this->content->run($js);
60 } else if (\is_array($this->content)) {
61 foreach ($this->content as $itemContent) {
62 if ($itemContent instanceof HtmlDoubleElement) {
63 $itemContent->run($js);
64 }
65 }
66 }
67 }
68
69 public function setValue($value) {}
70
71 public function wrapContent($before, $after = "") {
72 $this->wrapContentBefore .= $before;
73 $this->wrapContentAfter = $after . $this->wrapContentAfter;
74 return $this;
75 }
76
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);
89 }
90
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));
100 }
101 }
102 return $instances;
103 }
104
110 public function asLink($href = NULL, $target = NULL) {
111 if (isset($href))
112 $this->setProperty("href", $href);
113 if (isset($target))
114 $this->setProperty("target", $target);
115 return $this->setTagName("a");
116 }
117
118 public function getTextContent() {
119 if (\is_array($this->content)) {
120 return \strip_tags(implode("", $this->content));
121 }
122 return \strip_tags($this->content);
123 }
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());
130 $frm->setProperty("onsubmit", "return false;");
131 $fields = $frm->addFields();
132 $idE = $frm->getIdentifier();
133 $fields->addItem($field);
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');}});";
143 }
144 $this->_editableContent->setProperty("style", "display:none;");
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();");
147 }
148
154 protected function compile_once(\Ajax\JsUtils $js = NULL, &$view = NULL) {
155 if (! $this->_compiled && isset($this->_editableContent)) {
156 $this->wrap("", $this->_editableContent);
157 }
158 parent::compile_once($js, $view);
159 }
160}
JQuery PHP library.
Definition JsUtils.php:23
wrap($before, $after="")
Definition BaseHtml.php:170
wrapWith(HtmlDoubleElement $container)
Wraps the element with a container.
run(JsUtils $js)
SimpleExtComponent\Ajax\common\html\BaseHtmlrun()
compile_once(\Ajax\JsUtils $js=NULL, &$view=NULL)
{}
asEditable(HtmlFormField $field, $asForm=false, $setValueProperty="val()")
asLink($href=NULL, $target=NULL)
Transforms the element into a link.
__construct($identifier, $tagName="p")
addContent($content, $before=false)
onClick($jsCode, $stopPropagation=false, $preventDefault=true)