Skip to content

Commit c7a9430

Browse files
committed
_notAllChecked hability in checkedList + popup evt bug
1 parent eb7f5d3 commit c7a9430

File tree

3 files changed

+40
-5
lines changed

3 files changed

+40
-5
lines changed

Ajax/semantic/components/jsTemplates/tplCheckedList.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?php
22
return '$("%identifier% .master")
33
.checkbox({
4-
onChecked: function() {$(this).closest(".checkbox").siblings(".list").find(".checkbox").checkbox("check");},
4+
onChecked: function() {if(!$(this).hasClass("_notAllChecked")){$(this).closest(".checkbox").siblings(".list").find(".checkbox").checkbox("check");}},
55
onUnchecked: function() {$(this).closest(".checkbox").siblings(".list").find(".checkbox").checkbox("uncheck");}
66
})
77
;
@@ -28,7 +28,9 @@
2828
$parentCheckbox.checkbox("set checked");
2929
}
3030
else if(allUnchecked) {
31-
$parentCheckbox.checkbox("set unchecked");
31+
if(!$parentCheckbox.children("input").first().hasClass("_notAllChecked")){
32+
$parentCheckbox.checkbox("set unchecked");
33+
}
3234
}
3335
else {
3436
$parentCheckbox.checkbox("set indeterminate");

Ajax/semantic/html/elements/HtmlList.php

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use Ajax\semantic\html\content\HtmlListItem;
77
use Ajax\semantic\html\collections\form\HtmlFormCheckbox;
88
use Ajax\JsUtils;
9+
use Ajax\semantic\html\modules\checkbox\AbstractCheckbox;
910

1011
class HtmlList extends HtmlSemCollection {
1112
protected $_hasCheckedList;
@@ -47,6 +48,13 @@ public function addList($items=array()) {
4748
return $this->addItem($list);
4849
}
4950

51+
protected function getItemToAdd($item){
52+
$itemO=parent::getItemToAdd($item);
53+
if($itemO instanceof AbstractCheckbox)
54+
$itemO->addClass("item");
55+
return $itemO;
56+
}
57+
5058
public function setCelled() {
5159
return $this->addToProperty("class", "celled");
5260
}
@@ -84,11 +92,31 @@ public function setHorizontal() {
8492
return $this->addToProperty("class", "horizontal");
8593
}
8694

87-
public function addCheckedList($items=array(), $masterItem=NULL, $values=array()) {
95+
/**
96+
* Adds a grouped checked box to the list
97+
* @param array $items
98+
* @param string|array|null $masterItem
99+
* @param array|null $values
100+
* @param string $notAllChecked
101+
* @return HtmlList
102+
*/
103+
public function addCheckedList($items=array(), $masterItem=NULL, $values=array(),$notAllChecked=false) {
88104
$count=$this->count();
89105
$identifier=$this->identifier . "-" . $count;
90106
if (isset($masterItem)) {
91-
$masterO=new HtmlFormCheckbox("master-" . $identifier, $masterItem);
107+
if(\is_array($masterItem)){
108+
$masterO=new HtmlFormCheckbox("master-" . $identifier, @$masterItem[0],@$masterItem[1]);
109+
if(isset($masterItem[1])){
110+
if(\array_search($masterItem[1], $values)!==false){
111+
$masterO->getDataField()->setProperty("checked", "");
112+
}
113+
}
114+
}else{
115+
$masterO=new HtmlFormCheckbox("master-" . $identifier, $masterItem);
116+
}
117+
if($notAllChecked){
118+
$masterO->getDataField()->addClass("_notAllChecked");
119+
}
92120
$masterO->getHtmlCk()->addToProperty("class", "master");
93121
$masterO->setClass("item");
94122
$this->addItem($masterO);
@@ -98,7 +126,7 @@ public function addCheckedList($items=array(), $masterItem=NULL, $values=array()
98126
foreach ( $items as $val => $caption ) {
99127
$itemO=new HtmlFormCheckbox($identifier . "-" . $i++, $caption, $val, "child");
100128
if (\array_search($val, $values) !== false) {
101-
$itemO->getField()->setProperty("checked", "");
129+
$itemO->getDataField()->setProperty("checked", "");
102130
}
103131
$itemO->setClass("item");
104132
$fields[]=$itemO;

Ajax/semantic/html/modules/HtmlPopup.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ public function __construct(BaseHtml $container,$identifier, $content="") {
1919
$this->_params=array("on"=>"hover");
2020
}
2121

22+
/**
23+
* {@inheritDoc}
24+
* @see \Ajax\semantic\html\base\HtmlSemDoubleElement::addList()
25+
*/
2226
public function addList($items=array(),$header=NULL){
2327
if(!$this->content instanceof HtmlGrid){
2428
$this->content=new HtmlGrid("Grid-".$this->identifier,0);
@@ -58,6 +62,7 @@ public function setBasic(){
5862
* @see \Ajax\semantic\html\base\HtmlSemDoubleElement::run()
5963
*/
6064
public function run(JsUtils $js){
65+
parent::run($js);
6166
$this->_params["popup"]="#".$this->identifier;
6267
$js->semantic()->popup("#".$this->_container->getIdentifier(),$this->_params);
6368
}

0 commit comments

Comments
 (0)