@@ -34,6 +34,7 @@ class DataTable extends Widget {
3434 protected $ _hasCheckedMessage =false ;
3535 protected $ _targetSelector ;
3636 protected $ _checkedMessage ;
37+ protected $ _checkedClass ;
3738
3839 public function __construct ($ identifier ,$ model ,$ modelInstance =NULL ) {
3940 parent ::__construct ($ identifier , $ model ,$ modelInstance );
@@ -66,6 +67,9 @@ protected function _runCheckboxes(JsUtils $js){
6667 \$('#checked-count- " .$ this ->identifier ."').contents().filter(function() {return this.nodeType == 3;}).each(function(){this.textContent = msg.replace('{count}',count);});
6768 \$('#toolbar- {$ this ->identifier } .visibleOnChecked').toggle(count>0);} \$('#toolbar- " .$ this ->identifier ." .visibleOnChecked').hide(); " ;
6869 $ checkedMessageCall ="updateChecked(); " ;
70+ if (isset ($ this ->_checkedClass )){
71+ $ checkedMessageCall .="$(this).closest('tr').toggleClass(' " .$ this ->_checkedClass ."',$(this).prop('checked')); " ;
72+ }
6973 $ js ->exec ($ checkedMessageFunction ,true );
7074 }
7175 $ js ->execOn ("change " , "# " .$ this ->identifier ." [name='selection[]'] " , "
@@ -135,11 +139,20 @@ private function _generateMainCheckbox(&$captions){
135139 $ checkedMessageCall ="" ;
136140 if ($ this ->_hasCheckedMessage )
137141 $ checkedMessageCall ="updateChecked(); " ;
138- $ ck ->setOnChecked ("$('# " .$ this ->identifier ." [name=%quote%selection[]%quote%]').prop('checked',true); " .$ checkedMessageCall );
139- $ ck ->setOnUnchecked ("$('# " .$ this ->identifier ." [name=%quote%selection[]%quote%]').prop('checked',false); " .$ checkedMessageCall );
142+
143+ $ ck ->setOnChecked ($ this ->_setAllChecked ("true " ).$ checkedMessageCall );
144+ $ ck ->setOnUnchecked ($ this ->_setAllChecked ("false " ).$ checkedMessageCall );
140145 \array_unshift ($ captions , $ ck );
141146 }
142147
148+ private function _setAllChecked ($ checked ){
149+ $ result ="$('# " .$ this ->identifier ." [name=%quote%selection[]%quote%]').prop('checked', " .$ checked ."); " ;
150+ if (isset ($ this ->_checkedClass )){
151+ $ result .="$('# " .$ this ->identifier ." tr').toggleClass(' " .$ this ->_checkedClass ."', " .$ checked ."); " ;
152+ }
153+ return $ result ;
154+ }
155+
143156 protected function _generateContent ($ table ){
144157 $ objects =$ this ->_modelInstance ;
145158 if (isset ($ this ->_pagination )){
@@ -344,5 +357,8 @@ public function addCountCheckedInToolbar(array $checkedMessage=null,$callback=nu
344357 $ this ->addInToolbar ($ element ,$ callback );
345358 }
346359
347-
360+ public function setCheckedClass ($ _checkedClass ) {
361+ $ this ->_checkedClass =$ _checkedClass ;
362+ return $ this ;
363+ }
348364}
0 commit comments