Hi folks
Quick tip on: CONDITIONAL STATES and MARKUP
So I couldn't work out why CONDITIONAL STATES worked on a Seblod template, but not another template.
The rendered javascript was like this:
(function ($){ $(document).ready(function(){ $("#cck1r_profile__import_profile").conditionalStates({ "states": [{ "type":"isDisabled", "selector":"#profile__import_profile", "revert":"1", "value":"" }], "conditions": [{ "type":"isFilled", "trigger":"article__org_id", "value":"" }], "rule":"and" }); }); })(jQuery);
Notice the prefix added to the field name!
I looked in to the code @ /libraries/cck/rendering/rendering.php and checked out setConditionalStates
// setConditionalStates public function setConditionalStates( &$field ) { if ( $field->markup == 'none' ) { $field->conditional_options = str_replace( array( ' #form#', '#form#' ), '', $field->conditional_options ); $selector = $field->name; } else { $field->conditional_options = str_replace( '#form#', '#'.$field->name, $field->conditional_options ); $selector = $this->id.'_'.$field->name; } $this->addJS( '$("#'.$selector.'").conditionalStates('.$field->conditional_options.');' ); }
My field was being rendered with a prefixed value on the id like this: id= "cckr1_article__user_id".
This is because of the 'else' code.
By selecting 'Markup - None' I used the 'if' code.
Now it renders like this: "article__user_id" and conditionals therefore work
(function ($){ $(document).ready(function(){ $("#profile__import_profile").conditionalStates({ "states": [{ "type":"isDisabled", "selector":"#profile__import_profile", "revert":"1", "value":"" }], "conditions": [{ "type":"isFilled", "trigger":"article__org_id", "value":"" }], "rule":"and" }); }); })(jQuery);
Happy Days