Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 26 additions & 26 deletions commitlint.config.js
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
module.exports = {
parserPreset: "conventional-changelog-conventionalcommits",
rules: {
"subject-empty": [2, "never"],
"type-case": [2, "always", "lower-case"],
"type-empty": [2, "never"],
"type-enum": [
2,
"always",
[
"build",
"chore",
"ci",
"docs",
"feat",
"fix",
"perf",
"refactor",
"revert",
"style",
"test",
"deprecate", // deprecation decision
],
],
},
};
module.exports = {
parserPreset: "conventional-changelog-conventionalcommits",
rules: {
"subject-empty": [2, "never"],
"type-case": [2, "always", "lower-case"],
"type-empty": [2, "never"],
"type-enum": [
2,
"always",
[
"build",
"chore",
"ci",
"docs",
"feat",
"fix",
"perf",
"refactor",
"revert",
"style",
"test",
"deprecate", // deprecation decision
],
],
},
};
48 changes: 25 additions & 23 deletions frappe_desk_theme/api.py
Original file line number Diff line number Diff line change
@@ -1,31 +1,33 @@
import frappe
from frappe import _


@frappe.whitelist(allow_guest=True)
def get_custom_theme():
theme = frappe.get_doc("Desk Theme")
data = theme.as_dict()
# Add carousel data if present
carousel_data = theme.get_carousel_data() if hasattr(theme, 'get_carousel_data') else None
if carousel_data:
data["carousel"] = carousel_data
return data
theme = frappe.get_doc("Desk Theme")
data = theme.as_dict()
# Add carousel data if present
carousel_data = theme.get_carousel_data() if hasattr(theme, "get_carousel_data") else None
if carousel_data:
data["carousel"] = carousel_data
return data


@frappe.whitelist(allow_guest=True)
def get_footer_html():
"""Get rendered footer HTML template with theme data"""
try:
theme = frappe.get_doc("Desk Theme")
# Prepare context for template
context = {
'copyright_text': theme.copyright_text,
'footer_powered_by': theme.footer_powered_by,
'sticky_footer': theme.sticky_footer
}
# Render the template
return frappe.render_template("frappe_desk_theme/templates/includes/desk_footer.html", context)
except Exception as e:
frappe.log_error(f"Error rendering footer template: {str(e)}")
return ""
"""Get rendered footer HTML template with theme data"""
try:
theme = frappe.get_doc("Desk Theme")

# Prepare context for template
context = {
"copyright_text": theme.copyright_text,
"footer_powered_by": theme.footer_powered_by,
"sticky_footer": theme.sticky_footer,
}

# Render the template
return frappe.render_template("frappe_desk_theme/templates/includes/desk_footer.html", context)
except Exception as e:
frappe.log_error(f"Error rendering footer template: {str(e)}")
return ""
Original file line number Diff line number Diff line change
Expand Up @@ -21,22 +21,22 @@ frappe.ui.form.on("Desk Theme", {
method: "frappe.client.get_value",
args: {
doctype: "System Settings",
fieldname: "default_app"
fieldname: "default_app",
},
callback: function(r) {
callback: function (r) {
if (r.message && r.message.default_app) {
frm.set_value("default_app", r.message.default_app);
}
}
},
});
}

// Add refresh theme button
frm.add_custom_button(__('Refresh Theme'), function() {
window.frappeDeskTheme?.clearCache();
window.frappeDeskTheme?.refreshTheme();
frappe.show_alert({message: __('Theme refreshed'), indicator: 'green'});
});
// Add refresh theme button
frm.add_custom_button(__("Refresh Theme"), function () {
window.frappeDeskTheme?.clearCache();
window.frappeDeskTheme?.refreshTheme();
frappe.show_alert({ message: __("Theme refreshed"), indicator: "green" });
});
},

hide_app_switcher(frm) {
Expand All @@ -46,13 +46,13 @@ frappe.ui.form.on("Desk Theme", {
method: "frappe.client.get_value",
args: {
doctype: "System Settings",
fieldname: "default_app"
fieldname: "default_app",
},
callback: function(r) {
callback: function (r) {
if (r.message && r.message.default_app) {
frm.set_value("default_app", r.message.default_app);
}
}
},
});
} else {
// Clear default_app when hide_app_switcher is unchecked
Expand All @@ -73,17 +73,17 @@ frappe.ui.form.on("Desk Theme", {
frappe.call({
method: "frappe_desk_theme.frappe_desk_theme.doctype.desk_theme.desk_theme.update_system_default_app",
args: {
default_app: frm.doc.default_app
default_app: frm.doc.default_app,
},
callback: function(r) {
callback: function (r) {
if (r.message && r.message.success) {
frappe.show_alert({
message: __("System default app updated successfully"),
indicator: "green"
indicator: "green",
});
}
}
},
});
}
}
},
});
Original file line number Diff line number Diff line change
Expand Up @@ -22,26 +22,26 @@ def on_update(self):
# Update system settings with the selected default app
if self.hide_app_switcher and self.default_app:
update_system_default_app(self.default_app)

# Update website settings with footer information
self.update_website_settings()

def update_website_settings(self):
"""Update Website Settings with copyright and powered by text from Desk Theme"""
try:
website_settings = frappe.get_single("Website Settings")

# Update copyright text if provided
if self.copyright_text:
website_settings.copyright = self.copyright_text

# Update footer powered by text if provided
if self.footer_powered_by:
website_settings.footer_powered = self.footer_powered_by

# Save without triggering permissions check
website_settings.save(ignore_permissions=True)

except Exception as e:
frappe.log_error(f"Error updating website settings: {str(e)}")

Expand All @@ -65,12 +65,12 @@ def update_system_default_app(default_app):
installed_apps = frappe.get_installed_apps()
if default_app not in installed_apps:
frappe.throw(f"App '{default_app}' is not installed")

# Update system settings
system_settings = frappe.get_single("System Settings")
system_settings.default_app = default_app
system_settings.save(ignore_permissions=True)

return {"success": True}
except Exception as e:
frappe.log_error(f"Error updating system default app: {str(e)}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,13 @@
# 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 IntegrationTestDeskTheme(IntegrationTestCase):
"""
Integration tests for DeskTheme.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@


class DeskThemeCarouselImages(Document):
def validate(self):
# Validate image size (max 5 MB)
if self.image:
file_doc = frappe.get_doc('File', {'file_url': self.image})
if file_doc.file_size > 1 * 1024 * 1024:
frappe.throw('Carousel image size must be 1 MB or less.')
def validate(self):
# Validate image size (max 5 MB)
if self.image:
file_doc = frappe.get_doc("File", {"file_url": self.image})
if file_doc.file_size > 1 * 1024 * 1024:
frappe.throw("Carousel image size must be 1 MB or less.")
2 changes: 1 addition & 1 deletion frappe_desk_theme/hooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
# Includes in <head>
# ------------------
import time

# include js, css files in header of desk.html
app_include_css = "/assets/frappe_desk_theme/css/frappe_desk_theme.css?v={}".format(time.time())
app_include_js = "/assets/frappe_desk_theme/js/frappe_desk_theme.js?v={}".format(time.time())
Expand Down Expand Up @@ -236,4 +237,3 @@
# default_log_clearing_doctypes = {
# "Logging DocType Name": 30 # days to retain logs
# }

Loading
Loading