Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Form buttons should always get a (correct) btn style class #24443

Closed
wants to merge 2 commits into from

Commits on Apr 26, 2018

  1. [REF] web: make cleaner code for the renderButton helper

    In particular, allow to create a button without a sizing class.
    qsm-odoo committed Apr 26, 2018
    Configuration menu
    Copy the full SHA
    28f6041 View commit details
    Browse the repository at this point in the history
  2. [FIX] web: form buttons should always get a btn style class

    Here is the story of the problem: back in 10.0, everything *seemed*
    fine with button rendering except it was very messy duplicated codes.
    The system was still not consistent:
    
    -> In Header, button with:
    no class -> btn-default
    btn-primary -> btn-default btn-primary
    oe_highlight -> btn-primary
    btn-default -> btn-default
    btn-link -> btn-default btn-link
    oe_link -> btn-default oe_link
    btn-danger -> btn-default btn-danger
    some_class -> btn-default some_class
    
    -> Not in header, button with:
    no class -> no class
    btn-primary -> btn-primary
    oe_highlight -> btn-primary
    btn-default -> btn-default
    btn-link -> btn-link
    oe_link -> oe_link
    btn-danger -> btn-danger
    some_class -> some_class
    
    So, outside the header, the system seemed to not process anything except
    transforming the oe_highlight class. In the header, the btn-default was
    always added, except if using the oe_highlight class. The style is fine
    for those, except for .btn-default.btn-link and .btn-default.oe_link
    where the link class has no effect (which is fine as header are not
    supposed to contain links).
    
    In 11.0, the new views were introduced alongside websitepocalypse. The
    new system led to:
    
    -> In Header, button with:
    no class -> btn-default
    btn-primary -> btn-default btn-primary
    oe_highlight -> btn-default oe_highlight
    btn-default -> btn-default
    btn-link -> btn-default btn-link
    oe_link -> btn-default oe_link
    btn-danger -> btn-default btn-danger
    some_class -> btn-default some_class
    
    -> Not in header, button with:
    no class -> btn-default
    btn-primary -> btn-primary
    oe_highlight -> oe_highlight
    btn-default -> btn-default
    btn-link -> btn-link
    oe_link -> oe_link
    btn-danger -> btn-danger
    some_class -> some_class
    
    So, it worsened the header button by not processing the oe_highlight
    class and adding the btn-default class in all cases. This is even
    worse since in 11.0 .btn-default.btn-link do have a specific style and
    thus not appear as .btn-default anymore. Those may be invisible "bugs"
    though as .btn-link are not supposed to be in header and oe_highlight
    is styled correctly in css. For buttons outside the header, a little
    processing was added to add "btn-default" class for buttons which did
    not specified a class (and oe_highlight is not processed anymore there
    too).
    
    In master, with the less2scss task, the system had to change again but
    led this time to visible bugs:
    
    -> In Header, button with:
    no class -> btn-default
    btn-primary -> btn-primary
    oe_highlight -> btn-primary
    btn-default -> btn-default
    btn-link -> btn-link
    oe_link -> btn-link
    btn-danger -> btn-danger
    some_class -> some_class
    
    -> Not in header, button with:
    no class -> btn-default
    btn-primary -> btn-primary
    oe_highlight -> btn-primary
    btn-default -> btn-default
    btn-link -> btn-link
    oe_link -> btn-link
    btn-danger -> btn-danger
    some_class -> some_class
    
    As you can see, the system is now the same for both header button and
    normal buttons. The system is also better for all cases as it produce
    only *one* *bootstrap* class for all cases. However, the problematic
    case is the last one for header buttons: it did not receive the
    btn-default class automatically. Even though this is the API for the
    rest of odoo (dialogs, renderButton (old WidgetButton), ...), this is
    a problem here as fixing this would require to add the 'btn-default'
    class in every view which is using this case.
    
    While waiting for a better solution, this commit is instead forcing
    the btn-default class in that header case only (so only when a class
    was mentioned but it did not contain any bootstrap btn type class).
    So the new system gives:
    
    -> In Header, button with:
    no class -> btn-default
    btn-primary -> btn-primary
    oe_highlight -> btn-primary
    btn-default -> btn-default
    btn-link -> btn-link
    oe_link -> btn-link
    btn-danger -> btn-danger
    some_class -> btn-default some_class
    
    -> Not in header, button with:
    no class -> btn-default
    btn-primary -> btn-primary
    oe_highlight -> btn-primary
    btn-default -> btn-default
    btn-link -> btn-link
    oe_link -> btn-link
    btn-danger -> btn-danger
    some_class -> some_class
    
    This commit also adds tests which will prevent the system to change
    again without noticing it.
    qsm-odoo committed Apr 26, 2018
    Configuration menu
    Copy the full SHA
    5b3279b View commit details
    Browse the repository at this point in the history