[wp-trac] [WordPress Trac] #30951: Customizer: visible values (choices) not correct after setting it through javascript
WordPress Trac
noreply at wordpress.org
Thu Jan 8 18:40:26 UTC 2015
#30951: Customizer: visible values (choices) not correct after setting it through
javascript
--------------------------+------------------------------
Reporter: katazina | Owner:
Type: defect (bug) | Status: new
Priority: normal | Milestone: Awaiting Review
Component: Customize | Version: 4.1
Severity: normal | Resolution:
Keywords: has-patch | Focuses: javascript
--------------------------+------------------------------
Changes (by westonruter):
* keywords: => has-patch
Old description:
> I have one template which is highly customizable and I created
> "subtemplates" from that by javascript using the wp.customize api.
>
> After I upgraded to v4.1, I found out, that now the customizer is capable
> to refresh the values if I change it from javascript and I don't have to
> reload the customizer page.
>
> '''But, it has some small issues:'''
> 1. if I set empty for color in one subtemplate and I changed from a
> subtemplate which had this color set, then the color value is empty, but
> the color box, beside the input is colored.
> `api.instance('background_color').set('');` <- I mean that for empty
>
> 2. radio buttons don't get checked correctly. I can say, they are not
> checked at all, after changed one subtemplate to another.
>
> I try to explain the second one (2):
>
> I added new setting:
> {{{
> #!php
> $wp_customize->add_setting('title_align', array(
> 'default' => 0,
> 'sanitize_callback' => 'absint'
> ));
> $wp_customize->add_control('title_align', array(
> 'label' => 'Title alignment',
> 'settings'=> 'title_align',
> 'section' => 'content_sidebar_title',
> 'type' => 'radio',
> 'choices' => array(
> 0 => 'Left',
> 1 => 'Center',
> 2 => 'Right',
> )
> ));
> }}}
>
> I attached an image, how it lookes like.
>
> With javascript I'm changing the settings (values):
> {{{
> #!javascript
> (function($)
> {
> $(document).ready(function ()
> {
> var rTSelect = $('input[name="ready_templates"]');
> var api = wp.customize;
>
> rTSelect.click(function()
> {
> var template = $(this).val();
> switch(template)
> {
> case "orange": template_orange(); break;
> case "green": template_green(); break;
> default: template_default(); break;
> }
> });
>
> var template_default = function() {
> api.instance('title_align').set(1); //center
> };
>
> var template_orange = function() {
> api.instance('title_align').set(0); //left
> };
>
> var template_green = function() {
> api.instance('title_align').set(2); //right
> };
> }
> });
> }}}
>
> Now I select the orange template after the green template was selected
> and saved, and I see, that the "Left" labeled checkbox is not selected.
> Instead the "Right" labeled checkbox what is selected (checked).
>
> It is only visually incorrect, because if I click on the save button, the
> data is saved correctly.
> But, it will be visually correct, only if I reload the customizer page.
> The same happens with case 1 (color)
New description:
I have one template which is highly customizable and I created
"subtemplates" from that by javascript using the wp.customize api.
After I upgraded to v4.1, I found out, that now the customizer is capable
to refresh the values if I change it from javascript and I don't have to
reload the customizer page.
'''But, it has some small issues, including:'''
radio buttons don't get checked correctly. I can say, they are not checked
at all, after changed one subtemplate to another.
I try to explain:
I added new setting:
{{{
#!php
$wp_customize->add_setting('title_align', array(
'default' => 0,
'sanitize_callback' => 'absint'
));
$wp_customize->add_control('title_align', array(
'label' => 'Title alignment',
'settings'=> 'title_align',
'section' => 'content_sidebar_title',
'type' => 'radio',
'choices' => array(
0 => 'Left',
1 => 'Center',
2 => 'Right',
)
));
}}}
I attached an image, how it lookes like.
With javascript I'm changing the settings (values):
{{{
#!javascript
(function($)
{
$(document).ready(function ()
{
var rTSelect = $('input[name="ready_templates"]');
var api = wp.customize;
rTSelect.click(function()
{
var template = $(this).val();
switch(template)
{
case "orange": template_orange(); break;
case "green": template_green(); break;
default: template_default(); break;
}
});
var template_default = function() {
api.instance('title_align').set(1); //center
};
var template_orange = function() {
api.instance('title_align').set(0); //left
};
var template_green = function() {
api.instance('title_align').set(2); //right
};
}
});
}}}
Now I select the orange template after the green template was selected and
saved, and I see, that the "Left" labeled checkbox is not selected.
Instead the "Right" labeled checkbox what is selected (checked).
It is only visually incorrect, because if I click on the save button, the
data is saved correctly.
But, it will be visually correct, only if I reload the customizer page.
--
Comment:
Please file a separate ticket for the other issue you reported, which I've
removed from the description. It is surely a different issue, probably
something specific with the color picker control.
--
Ticket URL: <https://core.trac.wordpress.org/ticket/30951#comment:2>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list