mirror of https://github.com/OCA/web.git
Merge 813eb7655a
into c601529924
commit
422f558b17
|
@ -44,6 +44,47 @@ class ResCompany(models.Model):
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
a[href],
|
||||||
|
a[tabindex],
|
||||||
|
.btn-link,
|
||||||
|
.o_external_button {
|
||||||
|
color: %(color_link_text)s !important;
|
||||||
|
}
|
||||||
|
a:hover,
|
||||||
|
.btn-link:hover {
|
||||||
|
color: %(color_link_text_hover)s !important;
|
||||||
|
}
|
||||||
|
.btn-primary:not(.disabled),
|
||||||
|
.ui-autocomplete .ui-menu-item > a.ui-state-active {
|
||||||
|
color: %(color_button_text)s !important;
|
||||||
|
background-color: %(color_button_bg)s !important;
|
||||||
|
border-color: %(color_button_bg)s !important;
|
||||||
|
}
|
||||||
|
.btn-primary:hover:not(.disabled),
|
||||||
|
.ui-autocomplete .ui-menu-item > a.ui-state-active:hover {
|
||||||
|
color: %(color_button_text)s !important;
|
||||||
|
background-color: %(color_button_bg_hover)s !important;
|
||||||
|
border-color: %(color_button_bg_hover)s !important;
|
||||||
|
}
|
||||||
|
.o_searchview .o_searchview_facet .o_searchview_facet_label {
|
||||||
|
color: %(color_button_text)s !important;
|
||||||
|
background-color: %(color_button_bg)s !important;
|
||||||
|
}
|
||||||
|
.o_form_view .o_horizontal_separator {
|
||||||
|
color: %(color_link_text)s !important;
|
||||||
|
}
|
||||||
|
.o_form_view .oe_button_box .oe_stat_button .o_button_icon,
|
||||||
|
.o_form_view .oe_button_box .oe_stat_button .o_stat_info .o_stat_value,
|
||||||
|
.o_form_view .oe_button_box .oe_stat_button > span .o_stat_value {
|
||||||
|
color: %(color_link_text)s !important;
|
||||||
|
}
|
||||||
|
.o_form_view .o_form_statusbar > .o_statusbar_status >
|
||||||
|
.o_arrow_button.btn-primary.disabled {
|
||||||
|
color: %(color_link_text)s !important;
|
||||||
|
}
|
||||||
|
.o_required_modifier.o_input, .o_required_modifier .o_input {
|
||||||
|
background-color: lighten(%(color_button_bg)s, 10%%) !important;
|
||||||
|
}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
company_colors = fields.Serialized()
|
company_colors = fields.Serialized()
|
||||||
|
@ -52,6 +93,16 @@ class ResCompany(models.Model):
|
||||||
"Navbar Background Color Hover", sparse="company_colors"
|
"Navbar Background Color Hover", sparse="company_colors"
|
||||||
)
|
)
|
||||||
color_navbar_text = fields.Char("Navbar Text Color", sparse="company_colors")
|
color_navbar_text = fields.Char("Navbar Text Color", sparse="company_colors")
|
||||||
|
color_button_text = fields.Char("Button Text Color", sparse="company_colors")
|
||||||
|
color_button_bg = fields.Char("Button Background Color", sparse="company_colors")
|
||||||
|
color_button_bg_hover = fields.Char(
|
||||||
|
"Button Background Color Hover", sparse="company_colors"
|
||||||
|
)
|
||||||
|
color_link_text = fields.Char("Link Text Color", sparse="company_colors")
|
||||||
|
color_link_text_hover = fields.Char(
|
||||||
|
"Link Text Color Hover", sparse="company_colors"
|
||||||
|
)
|
||||||
|
scss_modif_timestamp = fields.Char("SCSS Modif. Timestamp")
|
||||||
|
|
||||||
@api.model_create_multi
|
@api.model_create_multi
|
||||||
def create(self, vals_list):
|
def create(self, vals_list):
|
||||||
|
@ -73,6 +124,11 @@ class ResCompany(models.Model):
|
||||||
"color_navbar_bg",
|
"color_navbar_bg",
|
||||||
"color_navbar_bg_hover",
|
"color_navbar_bg_hover",
|
||||||
"color_navbar_text",
|
"color_navbar_text",
|
||||||
|
"color_button_bg",
|
||||||
|
"color_button_bg_hover",
|
||||||
|
"color_button_text",
|
||||||
|
"color_link_text",
|
||||||
|
"color_link_text_hover",
|
||||||
)
|
)
|
||||||
result = super().write(values)
|
result = super().write(values)
|
||||||
if any([field in values for field in fields_to_check]):
|
if any([field in values for field in fields_to_check]):
|
||||||
|
@ -95,13 +151,27 @@ class ResCompany(models.Model):
|
||||||
# Calc. optimal text color (b/w)
|
# Calc. optimal text color (b/w)
|
||||||
# Grayscale human vision perception (Rec. 709 values)
|
# Grayscale human vision perception (Rec. 709 values)
|
||||||
_a = 1 - (0.2126 * _r + 0.7152 * _g + 0.0722 * _b)
|
_a = 1 - (0.2126 * _r + 0.7152 * _g + 0.0722 * _b)
|
||||||
|
color_navbar_bg = n_rgb_to_hex(_r, _g, _b)
|
||||||
|
|
||||||
|
_s += 0.25 if _s < 0.5 else -0.25
|
||||||
|
color_button_bg = n_rgb_to_hex(*hls_to_rgb(_h, _l, _s))
|
||||||
|
color_button_bg_hover = n_rgb_to_hex(
|
||||||
|
*hls_to_rgb(_h, _l, _s + 0.2 if _s < 0.8 else 1.0)
|
||||||
|
)
|
||||||
|
|
||||||
values.update(
|
values.update(
|
||||||
{
|
{
|
||||||
"color_navbar_bg": n_rgb_to_hex(_r, _g, _b),
|
"color_navbar_bg": color_navbar_bg,
|
||||||
"color_navbar_bg_hover": n_rgb_to_hex(_rd, _gd, _bd),
|
"color_navbar_bg_hover": n_rgb_to_hex(_rd, _gd, _bd),
|
||||||
"color_navbar_text": "#000" if _a < 0.5 else "#fff",
|
"color_navbar_text": "#000" if _a < 0.5 else "#fff",
|
||||||
|
"color_button_bg": color_button_bg,
|
||||||
|
"color_button_bg_hover": color_button_bg_hover,
|
||||||
|
"color_button_text": "#000" if _a < 0.5 else "#fff",
|
||||||
|
"color_link_text": color_navbar_bg,
|
||||||
|
"color_link_text_hover": color_button_bg,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
self.write(values)
|
self.write(values)
|
||||||
|
|
||||||
def _scss_get_sanitized_values(self):
|
def _scss_get_sanitized_values(self):
|
||||||
|
@ -118,6 +188,14 @@ class ResCompany(models.Model):
|
||||||
or "$o-navbar-inverse-link-hover-bg"
|
or "$o-navbar-inverse-link-hover-bg"
|
||||||
),
|
),
|
||||||
"color_navbar_text": (values.get("color_navbar_text") or "#FFF"),
|
"color_navbar_text": (values.get("color_navbar_text") or "#FFF"),
|
||||||
|
"color_button_bg": values.get("color_button_bg") or "$primary",
|
||||||
|
"color_button_bg_hover": values.get("color_button_bg_hover")
|
||||||
|
or 'darken(theme-color("primary"), 10%)',
|
||||||
|
"color_button_text": values.get("color_button_text") or "#FFF",
|
||||||
|
"color_link_text": values.get("color_link_text")
|
||||||
|
or 'theme-color("primary")',
|
||||||
|
"color_link_text_hover": values.get("color_link_text_hover")
|
||||||
|
or 'darken(theme-color("primary"), 10%)',
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
return values
|
return values
|
||||||
|
|
|
@ -15,16 +15,21 @@
|
||||||
name="company_styles"
|
name="company_styles"
|
||||||
groups="base.group_system"
|
groups="base.group_system"
|
||||||
>
|
>
|
||||||
<group string="Navbar Colors" name="navbar_colors">
|
<group string="Colors" name="navbar_colors">
|
||||||
<field name="color_navbar_bg" widget="color" />
|
|
||||||
<field name="color_navbar_bg_hover" widget="color" />
|
|
||||||
<field name="color_navbar_text" widget="color" />
|
|
||||||
<button
|
<button
|
||||||
class="btn-primary"
|
class="btn-primary"
|
||||||
name="button_compute_color"
|
name="button_compute_color"
|
||||||
type="object"
|
type="object"
|
||||||
string="Compute colors from logo"
|
string="Compute colors from logo"
|
||||||
/>
|
/>
|
||||||
|
<field name="color_navbar_bg" widget="color" />
|
||||||
|
<field name="color_navbar_bg_hover" widget="color" />
|
||||||
|
<field name="color_navbar_text" widget="color" />
|
||||||
|
<field name="color_button_bg" widget="color" />
|
||||||
|
<field name="color_button_bg_hover" widget="color" />
|
||||||
|
<field name="color_button_text" widget="color" />
|
||||||
|
<field name="color_link_text" widget="color" />
|
||||||
|
<field name="color_link_text_hover" widget="color" />
|
||||||
</group>
|
</group>
|
||||||
<div class="alert alert-info info_icon" role="alert">
|
<div class="alert alert-info info_icon" role="alert">
|
||||||
<span class="fa fa-info fa-2x" />
|
<span class="fa fa-info fa-2x" />
|
||||||
|
|
Loading…
Reference in New Issue