Compare commits
12 commits
5f73586e63
...
5cbe87e6bf
| Author | SHA1 | Date | |
|---|---|---|---|
| 5cbe87e6bf | |||
| 25118c683b | |||
| 353073f996 | |||
| 7d99357ac7 | |||
| b42b2cd1ad | |||
| 6b5a69b9da | |||
|
|
21417c67b1 | ||
|
|
0cf2e3fd41 | ||
|
|
61e5378469 | ||
|
|
a8c429ecbe | ||
|
|
4cc122af48 | ||
|
|
22a8d8dd66 |
34 changed files with 253 additions and 133 deletions
3
.github/workflows/review-po-prs.yml
vendored
3
.github/workflows/review-po-prs.yml
vendored
|
|
@ -3,6 +3,9 @@ name: Review translation PRs
|
|||
on:
|
||||
pull_request_target:
|
||||
types: [opened, reopened, synchronize, ready_for_review]
|
||||
branches:
|
||||
- develop
|
||||
- "version-[0-9][0-9]-hotfix"
|
||||
paths:
|
||||
- "**/*.po"
|
||||
|
||||
|
|
|
|||
8
frappe/contacts/doctype/pronouns/pronouns.js
Normal file
8
frappe/contacts/doctype/pronouns/pronouns.js
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
// Copyright (c) 2026, Frappe Technologies and contributors
|
||||
// For license information, please see license.txt
|
||||
|
||||
// frappe.ui.form.on("Pronouns", {
|
||||
// refresh(frm) {
|
||||
|
||||
// },
|
||||
// });
|
||||
57
frappe/contacts/doctype/pronouns/pronouns.json
Normal file
57
frappe/contacts/doctype/pronouns/pronouns.json
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
{
|
||||
"actions": [],
|
||||
"allow_rename": 1,
|
||||
"autoname": "field:pronouns",
|
||||
"creation": "2026-03-24 20:39:16.401720",
|
||||
"doctype": "DocType",
|
||||
"engine": "InnoDB",
|
||||
"field_order": [
|
||||
"pronouns"
|
||||
],
|
||||
"fields": [
|
||||
{
|
||||
"fieldname": "pronouns",
|
||||
"fieldtype": "Data",
|
||||
"label": "Pronouns",
|
||||
"unique": 1
|
||||
}
|
||||
],
|
||||
"grid_page_length": 50,
|
||||
"index_web_pages_for_search": 1,
|
||||
"links": [],
|
||||
"modified": "2026-03-24 20:58:54.860631",
|
||||
"modified_by": "admin@seitimegames.com",
|
||||
"module": "Contacts",
|
||||
"name": "Pronouns",
|
||||
"naming_rule": "By fieldname",
|
||||
"owner": "admin@seitimegames.com",
|
||||
"permissions": [
|
||||
{
|
||||
"create": 1,
|
||||
"delete": 1,
|
||||
"email": 1,
|
||||
"export": 1,
|
||||
"print": 1,
|
||||
"read": 1,
|
||||
"report": 1,
|
||||
"role": "System Manager",
|
||||
"share": 1,
|
||||
"write": 1
|
||||
},
|
||||
{
|
||||
"create": 1,
|
||||
"email": 1,
|
||||
"export": 1,
|
||||
"print": 1,
|
||||
"read": 1,
|
||||
"report": 1,
|
||||
"role": "Guest",
|
||||
"share": 1
|
||||
}
|
||||
],
|
||||
"row_format": "Dynamic",
|
||||
"rows_threshold_for_grid_search": 20,
|
||||
"sort_field": "creation",
|
||||
"sort_order": "DESC",
|
||||
"states": []
|
||||
}
|
||||
20
frappe/contacts/doctype/pronouns/pronouns.py
Normal file
20
frappe/contacts/doctype/pronouns/pronouns.py
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
# Copyright (c) 2026, Frappe Technologies and contributors
|
||||
# For license information, please see license.txt
|
||||
|
||||
# import frappe
|
||||
from frappe.model.document import Document
|
||||
|
||||
|
||||
class Pronouns(Document):
|
||||
# begin: auto-generated types
|
||||
# This code is auto-generated. Do not modify anything in this block.
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from frappe.types import DF
|
||||
|
||||
pronouns: DF.Data | None
|
||||
# end: auto-generated types
|
||||
|
||||
pass
|
||||
22
frappe/contacts/doctype/pronouns/test_pronouns.py
Normal file
22
frappe/contacts/doctype/pronouns/test_pronouns.py
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
# Copyright (c) 2026, Frappe Technologies and Contributors
|
||||
# See license.txt
|
||||
|
||||
# import frappe
|
||||
from frappe.tests import IntegrationTestCase
|
||||
|
||||
|
||||
# On IntegrationTestCase, the doctype test records and all
|
||||
# link-field test record dependencies are recursively loaded
|
||||
# Use these module variables to add/remove to/from that list
|
||||
EXTRA_TEST_RECORD_DEPENDENCIES = [] # eg. ["User"]
|
||||
IGNORE_TEST_RECORD_DEPENDENCIES = [] # eg. ["User"]
|
||||
|
||||
|
||||
|
||||
class IntegrationTestPronouns(IntegrationTestCase):
|
||||
"""
|
||||
Integration tests for Pronouns.
|
||||
Use this class for testing interactions between multiple components.
|
||||
"""
|
||||
|
||||
pass
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
"actions": [],
|
||||
"allow_import": 1,
|
||||
"allow_rename": 1,
|
||||
"autoname": "hash",
|
||||
"creation": "2017-01-11 04:21:35.217943",
|
||||
"doctype": "DocType",
|
||||
|
|
@ -227,7 +228,7 @@
|
|||
],
|
||||
"grid_page_length": 50,
|
||||
"links": [],
|
||||
"modified": "2025-05-22 16:59:35.484376",
|
||||
"modified": "2026-03-31 20:37:16.503023",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Core",
|
||||
"name": "Custom DocPerm",
|
||||
|
|
|
|||
|
|
@ -40,6 +40,9 @@ class CustomDocPerm(Document):
|
|||
def get_permission_log_options(self, event=None):
|
||||
return {"for_doctype": "DocType", "for_document": self.parent}
|
||||
|
||||
# def autoname(self):
|
||||
# self.name = f"{self.parent}-{self.role}-{self.permlevel}"
|
||||
|
||||
|
||||
def update_custom_docperm(docperm, values):
|
||||
custom_docperm = frappe.get_doc("Custom DocPerm", docperm)
|
||||
|
|
|
|||
|
|
@ -97,6 +97,11 @@ frappe.ui.form.on("User", {
|
|||
frm.roles_editor.show();
|
||||
}
|
||||
}
|
||||
|
||||
if (!frappe.user.has_role("System Manager") && frm.doc.birth_date == null) {
|
||||
var df = frappe.meta.get_docfield("User", "birth_date", cur_frm.doc.name);
|
||||
df.read_only = 1;
|
||||
}
|
||||
},
|
||||
refresh: function (frm) {
|
||||
let doc = frm.doc;
|
||||
|
|
@ -376,8 +381,9 @@ frappe.ui.form.on("User", {
|
|||
},
|
||||
setup_impersonation: function (frm) {
|
||||
if (
|
||||
frappe.session.user === "Administrator" &&
|
||||
(frappe.session.user === "Administrator" || frappe.user.has_role("System Manager")) &&
|
||||
frm.doc.name != "Administrator" &&
|
||||
frm.doc.name != frappe.session.user &&
|
||||
!frm.is_new()
|
||||
) {
|
||||
frm.add_custom_button(__("Impersonate"), () => {
|
||||
|
|
|
|||
|
|
@ -35,15 +35,16 @@
|
|||
"block_modules",
|
||||
"home_settings",
|
||||
"short_bio",
|
||||
"gender",
|
||||
"pronouns",
|
||||
"birth_date",
|
||||
"discord_username",
|
||||
"interest",
|
||||
"gender",
|
||||
"column_break_26",
|
||||
"phone",
|
||||
"location",
|
||||
"bio",
|
||||
"column_break_22",
|
||||
"phone",
|
||||
"mobile_no",
|
||||
"location",
|
||||
"settings_tab",
|
||||
"desk_settings_section",
|
||||
"mute_sounds",
|
||||
|
|
@ -144,7 +145,7 @@
|
|||
{
|
||||
"fieldname": "first_name",
|
||||
"fieldtype": "Data",
|
||||
"label": "First Name",
|
||||
"label": "Preferred Name",
|
||||
"oldfieldname": "first_name",
|
||||
"oldfieldtype": "Data",
|
||||
"reqd": 1
|
||||
|
|
@ -152,6 +153,7 @@
|
|||
{
|
||||
"fieldname": "middle_name",
|
||||
"fieldtype": "Data",
|
||||
"hidden": 1,
|
||||
"label": "Middle Name",
|
||||
"oldfieldname": "middle_name",
|
||||
"oldfieldtype": "Data"
|
||||
|
|
@ -160,6 +162,7 @@
|
|||
"bold": 1,
|
||||
"fieldname": "last_name",
|
||||
"fieldtype": "Data",
|
||||
"hidden": 1,
|
||||
"label": "Last Name",
|
||||
"oldfieldname": "last_name",
|
||||
"oldfieldtype": "Data"
|
||||
|
|
@ -167,6 +170,7 @@
|
|||
{
|
||||
"fieldname": "full_name",
|
||||
"fieldtype": "Data",
|
||||
"hidden": 1,
|
||||
"in_global_search": 1,
|
||||
"in_standard_filter": 1,
|
||||
"label": "Full Name",
|
||||
|
|
@ -206,6 +210,7 @@
|
|||
{
|
||||
"fieldname": "language",
|
||||
"fieldtype": "Link",
|
||||
"hidden": 1,
|
||||
"label": "Language",
|
||||
"options": "Language"
|
||||
},
|
||||
|
|
@ -265,6 +270,7 @@
|
|||
{
|
||||
"fieldname": "gender",
|
||||
"fieldtype": "Link",
|
||||
"hidden": 1,
|
||||
"label": "Gender",
|
||||
"oldfieldname": "gender",
|
||||
"oldfieldtype": "Select",
|
||||
|
|
@ -273,12 +279,14 @@
|
|||
{
|
||||
"fieldname": "phone",
|
||||
"fieldtype": "Data",
|
||||
"hidden": 1,
|
||||
"label": "Phone",
|
||||
"options": "Phone"
|
||||
},
|
||||
{
|
||||
"fieldname": "mobile_no",
|
||||
"fieldtype": "Data",
|
||||
"hidden": 1,
|
||||
"label": "Mobile No",
|
||||
"options": "Phone",
|
||||
"unique": 1
|
||||
|
|
@ -286,24 +294,23 @@
|
|||
{
|
||||
"fieldname": "birth_date",
|
||||
"fieldtype": "Date",
|
||||
"label": "Birth Date",
|
||||
"label": "Special Day",
|
||||
"no_copy": 1,
|
||||
"oldfieldname": "birth_date",
|
||||
"oldfieldtype": "Date"
|
||||
"oldfieldtype": "Date",
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "location",
|
||||
"fieldtype": "Data",
|
||||
"hidden": 1,
|
||||
"label": "Location",
|
||||
"no_copy": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "column_break_22",
|
||||
"fieldtype": "Column Break"
|
||||
},
|
||||
{
|
||||
"fieldname": "interest",
|
||||
"fieldtype": "Small Text",
|
||||
"hidden": 1,
|
||||
"label": "Interests"
|
||||
},
|
||||
{
|
||||
|
|
@ -852,6 +859,18 @@
|
|||
"fieldname": "form_navigation_buttons",
|
||||
"fieldtype": "Check",
|
||||
"label": "Show navigation buttons"
|
||||
},
|
||||
{
|
||||
"fieldname": "pronouns",
|
||||
"fieldtype": "Link",
|
||||
"label": "Pronouns",
|
||||
"options": "Pronouns"
|
||||
},
|
||||
{
|
||||
"fieldname": "discord_username",
|
||||
"fieldtype": "Data",
|
||||
"label": "Discord Username",
|
||||
"reqd": 1
|
||||
}
|
||||
],
|
||||
"icon": "fa fa-user",
|
||||
|
|
@ -905,8 +924,8 @@
|
|||
}
|
||||
],
|
||||
"make_attachments_public": 1,
|
||||
"modified": "2026-02-22 13:44:36.317890",
|
||||
"modified_by": "Administrator",
|
||||
"modified": "2026-03-24 21:30:57.199337",
|
||||
"modified_by": "admin@seitimegames.com",
|
||||
"module": "Core",
|
||||
"name": "User",
|
||||
"owner": "Administrator",
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ class User(Document):
|
|||
api_key: DF.Data | None
|
||||
api_secret: DF.Password | None
|
||||
bio: DF.SmallText | None
|
||||
birth_date: DF.Date | None
|
||||
birth_date: DF.Date
|
||||
block_modules: DF.Table[BlockModule]
|
||||
bulk_actions: DF.Check
|
||||
bypass_restrict_ip_check_if_2fa_enabled: DF.Check
|
||||
|
|
@ -86,6 +86,7 @@ class User(Document):
|
|||
default_workspace: DF.Link | None
|
||||
defaults: DF.Table[DefaultValue]
|
||||
desk_theme: DF.Literal["Light", "Dark", "Automatic"]
|
||||
discord_username: DF.Data
|
||||
document_follow_frequency: DF.Literal["Hourly", "Daily", "Weekly"]
|
||||
document_follow_notify: DF.Check
|
||||
email: DF.Data
|
||||
|
|
@ -124,6 +125,7 @@ class User(Document):
|
|||
notifications: DF.Check
|
||||
onboarding_status: DF.SmallText | None
|
||||
phone: DF.Data | None
|
||||
pronouns: DF.Link | None
|
||||
redirect_url: DF.SmallText | None
|
||||
reset_password_key: DF.Data | None
|
||||
restrict_ip: DF.SmallText | None
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@
|
|||
"print_width",
|
||||
"alignment",
|
||||
"no_copy",
|
||||
"set_only_once",
|
||||
"allow_on_submit",
|
||||
"in_list_view",
|
||||
"in_standard_filter",
|
||||
|
|
@ -484,6 +485,12 @@
|
|||
"fieldtype": "Select",
|
||||
"label": "Button Color",
|
||||
"options": "\nDefault\nPrimary\nInfo\nSuccess\nWarning\nDanger"
|
||||
},
|
||||
{
|
||||
"default": "0",
|
||||
"fieldname": "set_only_once",
|
||||
"fieldtype": "Check",
|
||||
"label": "Set only once"
|
||||
}
|
||||
],
|
||||
"grid_page_length": 50,
|
||||
|
|
@ -491,7 +498,7 @@
|
|||
"idx": 1,
|
||||
"index_web_pages_for_search": 1,
|
||||
"links": [],
|
||||
"modified": "2025-11-12 01:14:24.753774",
|
||||
"modified": "2026-03-22 10:35:32.555267",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Custom",
|
||||
"name": "Custom Field",
|
||||
|
|
|
|||
|
|
@ -22,9 +22,9 @@ class CustomField(Document):
|
|||
if TYPE_CHECKING:
|
||||
from frappe.types import DF
|
||||
|
||||
alignment: DF.Literal["", "Left", "Center", "Right"]
|
||||
allow_in_quick_entry: DF.Check
|
||||
allow_on_submit: DF.Check
|
||||
alignment: DF.Literal["", "Left", "Center", "Right"]
|
||||
bold: DF.Check
|
||||
button_color: DF.Literal["", "Default", "Primary", "Info", "Success", "Warning", "Danger"]
|
||||
collapsible: DF.Check
|
||||
|
|
@ -114,6 +114,7 @@ class CustomField(Document):
|
|||
report_hide: DF.Check
|
||||
reqd: DF.Check
|
||||
search_index: DF.Check
|
||||
set_only_once: DF.Check
|
||||
show_dashboard: DF.Check
|
||||
sort_options: DF.Check
|
||||
translatable: DF.Check
|
||||
|
|
|
|||
|
|
@ -810,6 +810,7 @@ docfield_properties = {
|
|||
"placeholder": "Data",
|
||||
"button_color": "Select",
|
||||
"mask": "Check",
|
||||
"set_only_once": "Check",
|
||||
}
|
||||
|
||||
doctype_link_properties = {
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
"in_preview",
|
||||
"bold",
|
||||
"no_copy",
|
||||
"set_only_once",
|
||||
"allow_in_quick_entry",
|
||||
"translatable",
|
||||
"mask",
|
||||
|
|
@ -509,6 +510,12 @@
|
|||
"fieldname": "mask",
|
||||
"fieldtype": "Check",
|
||||
"label": "Mask"
|
||||
},
|
||||
{
|
||||
"default": "0",
|
||||
"fieldname": "set_only_once",
|
||||
"fieldtype": "Check",
|
||||
"label": "Set only once"
|
||||
}
|
||||
],
|
||||
"grid_page_length": 50,
|
||||
|
|
@ -516,7 +523,7 @@
|
|||
"index_web_pages_for_search": 1,
|
||||
"istable": 1,
|
||||
"links": [],
|
||||
"modified": "2025-12-23 14:17:10.458916",
|
||||
"modified": "2026-03-22 10:36:12.968197",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Custom",
|
||||
"name": "Customize Form Field",
|
||||
|
|
|
|||
|
|
@ -13,10 +13,10 @@ class CustomizeFormField(Document):
|
|||
if TYPE_CHECKING:
|
||||
from frappe.types import DF
|
||||
|
||||
alignment: DF.Literal["", "Left", "Center", "Right"]
|
||||
allow_bulk_edit: DF.Check
|
||||
allow_in_quick_entry: DF.Check
|
||||
allow_on_submit: DF.Check
|
||||
alignment: DF.Literal["", "Left", "Center", "Right"]
|
||||
bold: DF.Check
|
||||
button_color: DF.Literal["", "Default", "Primary", "Info", "Success", "Warning", "Danger"]
|
||||
collapsible: DF.Check
|
||||
|
|
@ -109,6 +109,7 @@ class CustomizeFormField(Document):
|
|||
remember_last_selected_value: DF.Check
|
||||
report_hide: DF.Check
|
||||
reqd: DF.Check
|
||||
set_only_once: DF.Check
|
||||
show_dashboard: DF.Check
|
||||
sort_options: DF.Check
|
||||
translatable: DF.Check
|
||||
|
|
|
|||
|
|
@ -502,6 +502,11 @@ frappe.views.ReportView = class ReportView extends frappe.views.ListView {
|
|||
// show chart if saved via report or user settings
|
||||
if (!this.chart) {
|
||||
if (this.chart_args) {
|
||||
if (!this.chart_axes_valid(this.chart_args)) {
|
||||
this.reset_chart_state();
|
||||
return;
|
||||
}
|
||||
|
||||
this.build_chart_args(
|
||||
this.chart_args.x_axis,
|
||||
this.chart_args.y_axes,
|
||||
|
|
@ -643,12 +648,30 @@ frappe.views.ReportView = class ReportView extends frappe.views.ListView {
|
|||
|
||||
refresh_charts() {
|
||||
if (!this.chart || !this.chart_args) return;
|
||||
|
||||
if (!this.chart_axes_valid(this.chart_args)) {
|
||||
this.reset_chart_state();
|
||||
return;
|
||||
}
|
||||
|
||||
this.$charts_wrapper.removeClass("hidden");
|
||||
const { x_axis, y_axes, chart_type } = this.chart_args;
|
||||
this.build_chart_args(x_axis, y_axes, chart_type);
|
||||
this.chart.update(this.chart_args);
|
||||
}
|
||||
|
||||
chart_axes_valid(chart_args) {
|
||||
const { x_axis, y_axes } = chart_args;
|
||||
return this.columns_map[x_axis] && y_axes.every((y_axis) => this.columns_map[y_axis]);
|
||||
}
|
||||
|
||||
reset_chart_state() {
|
||||
this.chart = null;
|
||||
this.chart_args = null;
|
||||
this.$charts_wrapper.addClass("hidden");
|
||||
this.save_view_user_settings({ chart_args: null });
|
||||
}
|
||||
|
||||
get_editing_object(colIndex, rowIndex, value, parent) {
|
||||
const control = this.render_editing_input(colIndex, value, parent);
|
||||
if (!control) return false;
|
||||
|
|
|
|||
|
|
@ -608,7 +608,7 @@
|
|||
}
|
||||
|
||||
&.active {
|
||||
color: var(--primary);
|
||||
/*color: var(--primary);*/
|
||||
font-weight: 600;
|
||||
border-bottom-color: var(--primary);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -529,7 +529,7 @@
|
|||
&.active {
|
||||
font-weight: 400;
|
||||
border-bottom: 1px solid var(--text-color);
|
||||
color: var(--text-neutral);
|
||||
/* color: var(--text-neutral); */
|
||||
padding-bottom: 9px;
|
||||
}
|
||||
&:focus-visible {
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
.web-footer {
|
||||
padding: 3rem 0;
|
||||
min-height: 140px;
|
||||
background-color: var(--fg-color);
|
||||
border-top: 1px solid $border-color;
|
||||
margin-top: auto;
|
||||
}
|
||||
|
||||
|
|
@ -21,11 +19,11 @@
|
|||
.footer-child-item a {
|
||||
font-size: $font-size-sm;
|
||||
font-weight: 500;
|
||||
color: $gray-700;
|
||||
color: var(--body-text-color);
|
||||
|
||||
&:hover {
|
||||
color: $primary;
|
||||
text-decoration: none;
|
||||
color: var(--body-text-color);
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -81,7 +79,7 @@
|
|||
}
|
||||
|
||||
.footer-info {
|
||||
color: $text-muted;
|
||||
color: var(--body-text-color);
|
||||
font-size: $font-size-sm;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -37,7 +37,6 @@
|
|||
}
|
||||
|
||||
.navbar-light {
|
||||
border-bottom: 1px solid $border-color;
|
||||
background: $navbar-bg;
|
||||
|
||||
.navbar-toggler .icon {
|
||||
|
|
@ -128,14 +127,15 @@
|
|||
}
|
||||
|
||||
.navbar-light .navbar-nav .nav-link {
|
||||
color: $gray-700;
|
||||
color: var(--body-text-color);
|
||||
font-size: $font-size-sm;
|
||||
font-weight: 500;
|
||||
|
||||
&:hover,
|
||||
&:focus,
|
||||
&.active {
|
||||
color: $primary;
|
||||
color: var(--body-text-color);
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -90,38 +90,38 @@
|
|||
}
|
||||
|
||||
.section-padding {
|
||||
padding-top: 3rem;
|
||||
padding-bottom: 3rem;
|
||||
padding-top: 1rem;
|
||||
padding-bottom: 1rem;
|
||||
|
||||
@include media-breakpoint-up(sm) {
|
||||
padding-top: 5rem;
|
||||
padding-bottom: 5rem;
|
||||
padding-top: 2rem;
|
||||
padding-bottom: 2rem;
|
||||
}
|
||||
@include media-breakpoint-up(xl) {
|
||||
padding-top: 8rem;
|
||||
padding-bottom: 8rem;
|
||||
padding-top: 3rem;
|
||||
padding-bottom: 3rem;
|
||||
}
|
||||
}
|
||||
|
||||
.section-padding-top {
|
||||
padding-top: 3rem;
|
||||
padding-top: 1rem;
|
||||
|
||||
@include media-breakpoint-up(sm) {
|
||||
padding-top: 5rem;
|
||||
padding-top: 2rem;
|
||||
}
|
||||
@include media-breakpoint-up(xl) {
|
||||
padding-top: 8rem;
|
||||
padding-top: 3rem;
|
||||
}
|
||||
}
|
||||
|
||||
.section-padding-bottom {
|
||||
padding-bottom: 3rem;
|
||||
padding-bottom: 1rem;
|
||||
|
||||
@include media-breakpoint-up(sm) {
|
||||
padding-bottom: 5rem;
|
||||
padding-bottom: 2rem;
|
||||
}
|
||||
@include media-breakpoint-up(xl) {
|
||||
padding-bottom: 8rem;
|
||||
padding-bottom: 3rem;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -230,22 +230,16 @@
|
|||
padding-bottom: 1px;
|
||||
|
||||
.nav-link {
|
||||
color: $gray-800;
|
||||
font-weight: 500;
|
||||
border: none;
|
||||
padding: 1rem 0.5rem;
|
||||
margin-right: 2rem;
|
||||
white-space: nowrap;
|
||||
@include transition();
|
||||
|
||||
&:hover {
|
||||
color: $primary;
|
||||
}
|
||||
}
|
||||
|
||||
.nav-link.active,
|
||||
.nav-item.show .nav-link {
|
||||
color: darken($primary, 5%);
|
||||
background-color: transparent;
|
||||
border-bottom: 2px solid $primary;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@
|
|||
<div class="container">
|
||||
{% include "templates/includes/footer/footer_logo_extension.html" %}
|
||||
|
||||
{% if footer_items -%}
|
||||
<!-- {% if footer_items -%}
|
||||
{% include "templates/includes/footer/footer_grouped_links.html" %}
|
||||
{% endif %}
|
||||
{% endif %} -->
|
||||
|
||||
{% include "templates/includes/footer/footer_links.html" %}
|
||||
{% include "templates/includes/footer/footer_info.html" %}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<div class="footer-info">
|
||||
<div class="row">
|
||||
<div class="footer-col-left col-sm-6 col-12">
|
||||
<!-- <div class="footer-col-left col-sm-6 col-12"> -->
|
||||
<div class="col-12">
|
||||
{% if copyright %}
|
||||
© {{ copyright }}
|
||||
{% endif %}
|
||||
|
|
@ -10,6 +11,7 @@
|
|||
{% endif %}
|
||||
</div>
|
||||
{# powered #}
|
||||
<!--
|
||||
<div class="footer-col-right col-sm-6 col-12 footer-powered">
|
||||
{% block powered %}
|
||||
{%- if footer_powered -%}
|
||||
|
|
@ -19,5 +21,6 @@
|
|||
{%- endif -%}
|
||||
{% endblock %}
|
||||
</div>
|
||||
-->
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -9,16 +9,18 @@
|
|||
{% endmacro %}
|
||||
<div class="footer-links">
|
||||
<div class="row">
|
||||
<div class="footer-col-left col-sm-6">
|
||||
<!-- <div class="footer-col-left col-sm-6"> -->
|
||||
<div class="col-12">
|
||||
{%- for item in footer_items if item.label and not (item.parent_label or item.child_items) and not item.right %}
|
||||
{{ footer_link(item) }}
|
||||
{{ "|" if not loop.last }}
|
||||
{% endfor -%}
|
||||
</div>
|
||||
|
||||
<div class="footer-col-right col-sm-6">
|
||||
<!-- <div class="footer-col-right col-sm-6">
|
||||
{%- for item in footer_items if item.label and not (item.parent_label or item.child_items) and item.right %}
|
||||
{{ footer_link(item) }}
|
||||
{% endfor -%}
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -52,19 +52,10 @@
|
|||
{% endif %}
|
||||
{% endmacro %}
|
||||
|
||||
{% if top_bar_items -%}
|
||||
<ul class="mr-auto navbar-nav">
|
||||
{%- for item in top_bar_items -%}
|
||||
{% if not item.parent_label and not item.right -%}
|
||||
{{ render_item(item, parent=True) }}
|
||||
{%- endif -%}
|
||||
{%- endfor %}
|
||||
</ul>
|
||||
{%- endif %}
|
||||
<ul class="ml-auto navbar-nav">
|
||||
<ul class="mx-auto navbar-nav">
|
||||
{% include "templates/includes/navbar/navbar_search.html" %}
|
||||
{%- for item in top_bar_items -%}
|
||||
{% if not item.parent_label and item.right -%}
|
||||
{% if not item.parent_label -%}
|
||||
{{ render_item(item, parent=True) }}
|
||||
{%- endif -%}
|
||||
{%- endfor %}
|
||||
|
|
@ -98,9 +89,12 @@
|
|||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% include "templates/includes/navbar/navbar_login.html" %}
|
||||
|
||||
</ul>
|
||||
|
||||
<ul class="navbar-nav">
|
||||
{% include "templates/includes/navbar/navbar_login.html" %}
|
||||
</ul>
|
||||
|
||||
{%- if call_to_action -%}
|
||||
<a class="btn btn-primary navbar-cta" href="{{ call_to_action_url | abs_url }}">
|
||||
{{ call_to_action }}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ $font-family-sans-serif: "{{ google_font }}", "InterVariable", "Inter", -apple-s
|
|||
{% if primary_color %}$primary: {{ frappe.db.get_value('Color', primary_color, 'color') }};{% endif -%}
|
||||
{% if dark_color %}$dark: {{ frappe.db.get_value('Color', dark_color, 'color') }};{% endif -%}
|
||||
{% if text_color %}$body-text-color: {{ frappe.db.get_value('Color', text_color, 'color') }};{% endif -%}
|
||||
{% if light_color %}$light: {{ frappe.db.get_value('Color', light_color, 'color') }};{% endif -%}
|
||||
{% if background_color %}$body-bg: {{ frappe.db.get_value('Color', background_color, 'color') }};{% endif -%}
|
||||
|
||||
$enable-shadows: {{ button_shadows and "true" or "false" }};
|
||||
|
|
|
|||
|
|
@ -1,29 +0,0 @@
|
|||
<nav class="navbar navbar-primary navbar-expand-lg">
|
||||
<div class="container">
|
||||
<a class="navbar-brand" href="{{ url_prefix }}{{ home_page or "/" }}">
|
||||
{%- if brand_html -%}
|
||||
{{ brand_html }}
|
||||
{%- elif banner_image -%}
|
||||
<img src='{{ banner_image }}'>
|
||||
{%- else -%}
|
||||
<span>{{ (frappe.get_hooks("brand_html") or [_("Home")])[0] }}</span>
|
||||
{%- endif -%}
|
||||
</a>
|
||||
<button class="navbar-toggler" type="button"
|
||||
data-toggle="collapse"
|
||||
data-target="#navbarSupportedContent"
|
||||
aria-controls="navbarSupportedContent"
|
||||
aria-expanded="false"
|
||||
aria-label="Toggle navigation">
|
||||
<span>
|
||||
<svg class="icon icon-lg">
|
||||
<use href="#icon-menu"></use>
|
||||
</svg>
|
||||
</span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
{% include "templates/includes/navbar/navbar_items.html" %}
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
{
|
||||
"__islocal": true,
|
||||
"__unsaved": 1,
|
||||
"creation": "2021-01-20 13:20:46.147656",
|
||||
"docstatus": 0,
|
||||
"doctype": "Web Template",
|
||||
"fields": [],
|
||||
"idx": 0,
|
||||
"modified": "2021-01-20 13:20:46.147656",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Website",
|
||||
"name": "Primary Navbar",
|
||||
"owner": "Administrator",
|
||||
"standard": 1,
|
||||
"template": "",
|
||||
"type": "Navbar"
|
||||
}
|
||||
|
|
@ -1 +0,0 @@
|
|||
{% include "templates/includes/navbar/navbar.html" %}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
{
|
||||
"creation": "2020-08-19 17:49:37.288380",
|
||||
"docstatus": 0,
|
||||
"doctype": "Web Template",
|
||||
"fields": [],
|
||||
"idx": 0,
|
||||
"modified": "2020-08-19 17:50:44.342765",
|
||||
"modified_by": "Administrator",
|
||||
"name": "Standard Navbar",
|
||||
"owner": "Administrator",
|
||||
"standard": 1,
|
||||
"type": "Navbar"
|
||||
}
|
||||
|
|
@ -1,20 +1,27 @@
|
|||
{
|
||||
"background_color": "Background",
|
||||
"button_gradients": 0,
|
||||
"button_rounded_corners": 1,
|
||||
"button_shadows": 0,
|
||||
"creation": "2015-02-19 13:37:33.925909",
|
||||
"custom": 0,
|
||||
"custom_overrides": "",
|
||||
"dark_color": "Primary",
|
||||
"docstatus": 0,
|
||||
"doctype": "Website Theme",
|
||||
"font_properties": "wght:400;500;600;700;800",
|
||||
"google_font": "Ethnocentric",
|
||||
"idx": 28,
|
||||
"modified": "2020-06-15 13:10:16.618476",
|
||||
"ignored_apps": [],
|
||||
"light_color": "Gold Text",
|
||||
"modified": "2026-03-17 20:45:47.424219",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Website",
|
||||
"name": "Standard",
|
||||
"owner": "Administrator",
|
||||
"primary_color": "Primary",
|
||||
"text_color": "Gold Text",
|
||||
"theme": "Standard",
|
||||
"theme_scss": "$enable-shadows: false;\n$enable-gradients: false;\n$enable-rounded: true;\n\n// Bootstrap Variable Overrides\n\n\n@import \"frappe/public/scss/website\";\n\n\n\n// Custom Theme\n",
|
||||
"theme_url": "/assets/css/standard_style.css"
|
||||
"theme_scss": "\n@import url(\"https://fonts.googleapis.com/css2?family=Ethnocentric:wght:400;500;600;700;800&display=swap\");\n// backward compatibility. deprecated in v15\n$font-family-sans-serif: \"Ethnocentric\", \"InterVariable\", \"Inter\", -apple-system, BlinkMacSystemFont,\n\t\"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\",\n\t\"Droid Sans\", \"Helvetica Neue\", sans-serif;\n\n// override font stack if custom font is set in website theme\n:root {\n\t--font-stack: \"Ethnocentric\", \"InterVariable\", \"Inter\", -apple-system, BlinkMacSystemFont,\n\t\"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\",\n\t\"Droid Sans\", \"Helvetica Neue\", sans-serif !important;\n}\n$primary: #8139c4;$dark: #8139c4;$body-text-color: #e6c96c;$body-bg: #4e3269;$enable-shadows: false;\n$enable-gradients: false;\n$enable-rounded: true;\n\n// Bootstrap Variable Overrides\n\n\n// Import themes from installed apps\n@import \"frappe/public/scss/website.bundle\";\n\n\n\n// Custom Theme\n\n\n:root {\n\t\n\t--primary: #{$primary};\n\t--primary-color: #{$primary};\n\t\n\t--bg-color: #{$body-bg};\n\t\n\t--text-color: #{$body-text-color};\n\t--text-light: #{$body-text-color};\n\t}\n",
|
||||
"theme_url": "/files/website_theme/standard_style.css"
|
||||
}
|
||||
|
|
@ -6,5 +6,5 @@
|
|||
max-width: 100vw;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
background: var(--bg-light-gray);
|
||||
/* background: var(--bg-light-gray); */
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue