@@ -6,68 +6,70 @@ frappe.provide("frappe.activity"); | |||
frappe.pages['activity'].on_page_load = function(wrapper) { | |||
var me = this; | |||
frappe.require('assets/frappe/js/lib/flot/jquery.flot.js'); | |||
frappe.require('assets/frappe/js/lib/flot/jquery.flot.downsample.js'); | |||
frappe.ui.make_app_page({ | |||
parent: wrapper, | |||
single_column: true | |||
}); | |||
this.page = wrapper.page; | |||
this.page.set_title(__("Activity")); | |||
frappe.model.with_doctype("Communication", function() { | |||
me.page.list = new frappe.ui.Listing({ | |||
hide_refresh: true, | |||
page: me.page, | |||
method: 'frappe.desk.page.activity.activity.get_feed', | |||
parent: $("<div></div>").appendTo(me.page.main), | |||
render_row: function(row, data) { | |||
new frappe.activity.Feed(row, data); | |||
}, | |||
show_filters: true, | |||
doctype: "Communication", | |||
get_args: function() { | |||
if (frappe.route_options && frappe.route_options.show_likes) { | |||
delete frappe.route_options.show_likes; | |||
return { | |||
show_likes: true | |||
me.page = wrapper.page; | |||
me.page.set_title(__("Activity")); | |||
frappe.require(['assets/frappe/js/lib/flot/jquery.flot.js', | |||
'assets/frappe/js/lib/flot/jquery.flot.downsample.js'], function() { | |||
frappe.model.with_doctype("Communication", function() { | |||
me.page.list = new frappe.ui.Listing({ | |||
hide_refresh: true, | |||
page: me.page, | |||
method: 'frappe.desk.page.activity.activity.get_feed', | |||
parent: $("<div></div>").appendTo(me.page.main), | |||
render_row: function(row, data) { | |||
new frappe.activity.Feed(row, data); | |||
}, | |||
show_filters: true, | |||
doctype: "Communication", | |||
get_args: function() { | |||
if (frappe.route_options && frappe.route_options.show_likes) { | |||
delete frappe.route_options.show_likes; | |||
return { | |||
show_likes: true | |||
} | |||
} else { | |||
return {} | |||
} | |||
} | |||
} else { | |||
return {} | |||
} | |||
} | |||
}); | |||
}); | |||
me.page.list.run(); | |||
me.page.list.run(); | |||
me.page.set_primary_action(__("Refresh"), function() { | |||
me.page.list.filter_list.clear_filters(); | |||
me.page.list.run(); | |||
}, "octicon octicon-sync"); | |||
}); | |||
me.page.set_primary_action(__("Refresh"), function() { | |||
me.page.list.filter_list.clear_filters(); | |||
me.page.list.run(); | |||
}, "octicon octicon-sync"); | |||
}); | |||
frappe.activity.render_plot(this.page); | |||
frappe.activity.render_plot(me.page); | |||
this.page.main.on("click", ".activity-message", function() { | |||
var link_doctype = $(this).attr("data-link-doctype"), | |||
link_name = $(this).attr("data-link-name"), | |||
doctype = $(this).attr("data-doctype"), | |||
docname = $(this).attr("data-docname"); | |||
me.page.main.on("click", ".activity-message", function() { | |||
var link_doctype = $(this).attr("data-link-doctype"), | |||
link_name = $(this).attr("data-link-name"), | |||
doctype = $(this).attr("data-doctype"), | |||
docname = $(this).attr("data-docname"); | |||
if (doctype && docname) { | |||
if (link_doctype && link_name) { | |||
frappe.route_options = { | |||
scroll_to: { "doctype": doctype, "name": docname } | |||
} | |||
} | |||
if (doctype && docname) { | |||
if (link_doctype && link_name) { | |||
frappe.route_options = { | |||
scroll_to: { "doctype": doctype, "name": docname } | |||
} | |||
} | |||
frappe.set_route(["Form", link_doctype || doctype, link_name || docname]); | |||
} | |||
frappe.set_route(["Form", link_doctype || doctype, link_name || docname]); | |||
} | |||
}); | |||
}); | |||
// Build Report Button | |||
if(frappe.boot.user.can_get_report.indexOf("Feed")!=-1) { | |||
this.page.add_menu_item(__('Build Report'), function() { | |||
@@ -27,24 +27,20 @@ frappe.pages['setup-wizard'].on_page_load = function(wrapper) { | |||
$(".navbar:first").toggle(false); | |||
$("body").css({"padding-top":"30px"}); | |||
frappe.require("/assets/frappe/css/animate.min.css"); | |||
var requires = ["/assets/frappe/css/animate.min.css"].concat(frappe.boot.setup_wizard_requires || []); | |||
frappe.require(requires, function() { | |||
frappe.wiz.run_event("before_load"); | |||
var wizard_settings = { | |||
page_name: "setup-wizard", | |||
parent: wrapper, | |||
slides: frappe.wiz.slides, | |||
title: __("Welcome") | |||
} | |||
$.each(frappe.boot.setup_wizard_requires || [], function(i, path) { | |||
frappe.require(path); | |||
frappe.wiz.wizard = new frappe.wiz.Wizard(wizard_settings); | |||
frappe.wiz.run_event("after_load"); | |||
}); | |||
frappe.wiz.run_event("before_load"); | |||
var wizard_settings = { | |||
page_name: "setup-wizard", | |||
parent: wrapper, | |||
slides: frappe.wiz.slides, | |||
title: __("Welcome") | |||
} | |||
frappe.wiz.wizard = new frappe.wiz.Wizard(wizard_settings); | |||
frappe.wiz.run_event("after_load"); | |||
} | |||
frappe.pages['setup-wizard'].on_page_show = function(wrapper) { | |||
@@ -32,16 +32,23 @@ def get_contact_list(doctype, fieldname, txt): | |||
"""Returns contacts (from autosuggest)""" | |||
txt = txt.replace('%', '') | |||
def get_users(): | |||
return filter(None, frappe.db.sql_list('select email from tabUser where email like %s', | |||
('%' + txt + '%'))) | |||
try: | |||
return filter(None, frappe.db.sql_list('select `{0}` from `tab{1}` where `{0}` like %s'.format(fieldname, doctype), | |||
out = filter(None, frappe.db.sql_list('select `{0}` from `tab{1}` where `{0}` like %s'.format(fieldname, doctype), | |||
'%' + txt + '%')) | |||
if out: | |||
out = get_users() | |||
except Exception, e: | |||
if e.args[0]==1146: | |||
# no Contact, use User | |||
return filter(None, frappe.db.sql_list('select email from tabUser where email like %s', ('%' + txt + '%'))) | |||
out = get_users() | |||
else: | |||
raise | |||
return out | |||
def get_system_managers(): | |||
return frappe.db.sql_list("""select parent FROM tabUserRole | |||
WHERE role='System Manager' | |||
@@ -67,6 +67,7 @@ | |||
"public/js/lib/d3.min.js", | |||
"public/js/lib/cal-heatmap.js", | |||
"public/js/lib/c3.min.js", | |||
"public/js/lib/markdown.js", | |||
"public/js/frappe/provide.js", | |||
"public/js/frappe/class.js", | |||
@@ -9,7 +9,7 @@ frappe.require = function(items, callback) { | |||
if(typeof items === "string") { | |||
items = [items]; | |||
} | |||
frappe.assets.execute(items); | |||
frappe.assets.execute(items, callback); | |||
}; | |||
frappe.assets = { | |||
@@ -59,7 +59,7 @@ frappe.assets = { | |||
executed_ : [], | |||
// pass on to the handler to set | |||
execute: function(items) { | |||
execute: function(items, callback) { | |||
var to_fetch = [] | |||
for(var i=0, l=items.length; i<l; i++) { | |||
if(!frappe.assets.exists(items[i])) { | |||
@@ -67,9 +67,15 @@ frappe.assets = { | |||
} | |||
} | |||
if(to_fetch.length) { | |||
frappe.assets.fetch(to_fetch); | |||
frappe.assets.fetch(to_fetch, function() { | |||
frappe.assets.eval_assets(items, callback); | |||
}); | |||
} else { | |||
frappe.assets.eval_assets(items, callback); | |||
} | |||
}, | |||
eval_assets: function(items, callback) { | |||
for(var i=0, l=items.length; i<l; i++) { | |||
// execute js/css if not already. | |||
var path = items[i]; | |||
@@ -79,6 +85,7 @@ frappe.assets = { | |||
frappe.assets.executed_.push(path) | |||
} | |||
} | |||
callback(); | |||
}, | |||
// check if the asset exists in | |||
@@ -98,7 +105,7 @@ frappe.assets = { | |||
}, | |||
// load an asset via | |||
fetch: function(items) { | |||
fetch: function(items, callback) { | |||
// this is virtual page load, only get the the source | |||
// *without* the template | |||
@@ -112,10 +119,10 @@ frappe.assets = { | |||
$.each(items, function(i, src) { | |||
frappe.assets.add(src, r.message[i]); | |||
}); | |||
callback(); | |||
}, | |||
async: false, | |||
freeze: true, | |||
}) | |||
}); | |||
}, | |||
add: function(src, txt) { | |||
@@ -618,19 +618,25 @@ frappe.ui.form.ControlDate = frappe.ui.form.ControlData.extend({ | |||
} | |||
}) | |||
import_timepicker = function() { | |||
frappe.require("assets/frappe/js/lib/jquery/jquery.ui.slider.min.js"); | |||
frappe.require("assets/frappe/js/lib/jquery/jquery.ui.sliderAccess.js"); | |||
frappe.require("assets/frappe/js/lib/jquery/jquery.ui.timepicker-addon.css"); | |||
frappe.require("assets/frappe/js/lib/jquery/jquery.ui.timepicker-addon.js"); | |||
import_timepicker = function(callback) { | |||
frappe.require([ | |||
"assets/frappe/js/lib/jquery/jquery.ui.slider.min.js", | |||
"assets/frappe/js/lib/jquery/jquery.ui.sliderAccess.js", | |||
"assets/frappe/js/lib/jquery/jquery.ui.timepicker-addon.css", | |||
"assets/frappe/js/lib/jquery/jquery.ui.timepicker-addon.js" | |||
], callback); | |||
} | |||
frappe.ui.form.ControlTime = frappe.ui.form.ControlData.extend({ | |||
make_input: function() { | |||
import_timepicker(); | |||
this._super(); | |||
this.$input.timepicker({ | |||
timeFormat: 'HH:mm:ss', | |||
var me = this; | |||
var _super = this._super; | |||
import_timepicker(function() { | |||
_super.apply(me); | |||
me.$input.timepicker({ | |||
timeFormat: 'HH:mm:ss', | |||
}); | |||
me.refresh(); | |||
}); | |||
} | |||
}); | |||
@@ -648,8 +654,12 @@ frappe.ui.form.ControlDatetime = frappe.ui.form.ControlDate.extend({ | |||
this.$input.datetimepicker(this.datepicker_options); | |||
}, | |||
make_input: function() { | |||
import_timepicker(); | |||
this._super(); | |||
var me = this; | |||
var _super = this._super; | |||
import_timepicker(function() { | |||
_super.apply(me); | |||
me.refresh(); | |||
}) | |||
}, | |||
parse: function(value) { | |||
if(value) { | |||
@@ -96,7 +96,9 @@ frappe.form.formatters = { | |||
return value || ""; | |||
}, | |||
Datetime: function(value) { | |||
return value ? dateutil.str_to_user(dateutil.convert_to_user_tz(value)) : ""; | |||
return value ? moment(dateutil.convert_to_user_tz(value)) | |||
.tz(frappe.boot.sysdefaults.time_zone).format('MMMM Do YYYY, h:mm a z') : ""; | |||
//return value ? dateutil.str_to_user(dateutil.convert_to_user_tz(value)) : ""; | |||
}, | |||
Text: function(value) { | |||
if(value) { | |||
@@ -179,19 +179,22 @@ frappe.ui.form.PrintPreview = Class.extend({ | |||
.empty().add_options(this.print_formats); | |||
}, | |||
with_old_style: function(opts) { | |||
var me = this; | |||
frappe.require("/assets/js/print_format_v3.min.js"); | |||
_p.build(opts.format, opts.callback, opts.no_letterhead, opts.only_body, opts.no_heading); | |||
frappe.require("/assets/js/print_format_v3.min.js", function() { | |||
_p.build(opts.format, opts.callback, opts.no_letterhead, opts.only_body, opts.no_heading); | |||
}); | |||
}, | |||
print_old_style: function() { | |||
frappe.require("/assets/js/print_format_v3.min.js"); | |||
_p.build(this.print_sel.val(), _p.go, | |||
!this.with_letterhead()); | |||
var me = this; | |||
frappe.require("/assets/js/print_format_v3.min.js", function() { | |||
_p.build(me.print_sel.val(), _p.go, | |||
!me.with_letterhead()); | |||
}); | |||
}, | |||
new_page_preview_old_style: function() { | |||
frappe.require("/assets/js/print_format_v3.min.js"); | |||
_p.build(this.print_sel.val(), _p.preview, | |||
!this.with_letterhead()); | |||
var me = this; | |||
frappe.require("/assets/js/print_format_v3.min.js", function() { | |||
_p.build(me.print_sel.val(), _p.preview, !me.with_letterhead()); | |||
}); | |||
}, | |||
selected_format: function() { | |||
return this.print_sel.val() || this.frm.meta.default_print_format || "Standard"; | |||
@@ -34,7 +34,6 @@ frappe.tools.downloadify = function(data, roles, title) { | |||
frappe.markdown = function(txt) { | |||
if(!frappe.md2html) { | |||
frappe.require('assets/frappe/js/lib/markdown.js'); | |||
frappe.md2html = new Showdown.converter(); | |||
} | |||
@@ -64,7 +64,6 @@ frappe.request.call = function(opts) { | |||
var statusCode = { | |||
200: function(data, xhr) { | |||
if(typeof data === "string") data = JSON.parse(data); | |||
opts.success_callback && opts.success_callback(data, xhr.responseText); | |||
}, | |||
401: function(xhr) { | |||
@@ -136,6 +135,25 @@ frappe.request.call = function(opts) { | |||
frappe.last_request = ajax_args.data; | |||
return $.ajax(ajax_args) | |||
.done(function(data, textStatus, xhr) { | |||
if(typeof data === "string") data = JSON.parse(data); | |||
// sync attached docs | |||
if(data.docs || data.docinfo) { | |||
frappe.model.sync(data); | |||
} | |||
// sync translated messages | |||
if(data.__messages) { | |||
$.extend(frappe._messages, data.__messages); | |||
} | |||
// callbacks | |||
var status_code_handler = statusCode[xhr.statusCode().status]; | |||
if (status_code_handler) { | |||
status_code_handler(data, xhr); | |||
} | |||
}) | |||
.always(function(data, textStatus, xhr) { | |||
if(typeof data==="string") { | |||
data = JSON.parse(data); | |||
@@ -149,12 +167,6 @@ frappe.request.call = function(opts) { | |||
opts.always(data); | |||
} | |||
}) | |||
.done(function(data, textStatus, xhr) { | |||
var status_code_handler = statusCode[xhr.statusCode().status]; | |||
if (status_code_handler) { | |||
status_code_handler(data, xhr); | |||
} | |||
}) | |||
.fail(function(xhr, textStatus) { | |||
var status_code_handler = statusCode[xhr.statusCode().status]; | |||
if (status_code_handler) { | |||
@@ -251,12 +263,6 @@ frappe.request.cleanup = function(opts, r) { | |||
console.log("========"); | |||
} | |||
if(r.docs || r.docinfo) { | |||
frappe.model.sync(r); | |||
} | |||
if(r.__messages) { | |||
$.extend(frappe._messages, r.__messages); | |||
} | |||
frappe.last_response = r; | |||
@@ -310,7 +310,7 @@ frappe.ui.Filter = Class.extend({ | |||
}, | |||
get_selected_value: function() { | |||
var val = this.field.get_parsed_value(); | |||
var val = strip(this.field.get_parsed_value()); | |||
if(this.field.df.original_type == 'Check') { | |||
val = (val=='Yes' ? 1 :0); | |||
@@ -443,9 +443,9 @@ frappe.ui.FieldSelect = Class.extend({ | |||
}, | |||
val: function(value) { | |||
if(value===undefined) { | |||
return this.get_value() | |||
return this.get_value(); | |||
} else { | |||
this.set_value(value) | |||
this.set_value(value); | |||
} | |||
}, | |||
clear: function() { | |||
@@ -8,16 +8,18 @@ frappe.views.CalendarFactory = frappe.views.Factory.extend({ | |||
make: function(route) { | |||
var me = this; | |||
frappe.require('assets/frappe/js/lib/fullcalendar/fullcalendar.min.css'); | |||
frappe.require('assets/frappe/js/lib/fullcalendar/fullcalendar.min.js'); | |||
frappe.model.with_doctype(route[1], function() { | |||
var options = { | |||
doctype: route[1] | |||
}; | |||
$.extend(options, frappe.views.calendar[route[1]] || {}); | |||
frappe.views.calendars[route[1]] = new frappe.views.Calendar(options); | |||
frappe.require([ | |||
'assets/frappe/js/lib/fullcalendar/fullcalendar.min.css', | |||
'assets/frappe/js/lib/fullcalendar/fullcalendar.min.js' | |||
], function() { | |||
frappe.model.with_doctype(route[1], function() { | |||
var options = { | |||
doctype: route[1] | |||
}; | |||
$.extend(options, frappe.views.calendar[route[1]] || {}); | |||
frappe.views.calendars[route[1]] = new frappe.views.Calendar(options); | |||
}); | |||
}); | |||
} | |||
}); | |||
@@ -6,25 +6,25 @@ frappe.provide("frappe.views.calendar"); | |||
frappe.views.GanttFactory = frappe.views.Factory.extend({ | |||
make: function(route) { | |||
var me = this; | |||
me.doctype = route[1]; | |||
frappe.require('assets/frappe/js/lib/jQuery.Gantt/css/style.css'); | |||
frappe.require('assets/frappe/js/lib/jQuery.Gantt/js/jquery.fn.gantt.js'); | |||
frappe.require(['assets/frappe/js/lib/jQuery.Gantt/css/style.css', | |||
'assets/frappe/js/lib/jQuery.Gantt/js/jquery.fn.gantt.js'], function() { | |||
this.doctype = route[1]; | |||
frappe.model.with_doctype(me.doctype, function() { | |||
var page = me.make_page(); | |||
$(page).on("show", function() { | |||
page.ganttview.set_filters_from_route_options(); | |||
}); | |||
frappe.model.with_doctype(this.doctype, function() { | |||
var page = me.make_page(); | |||
$(page).on("show", function() { | |||
page.ganttview.set_filters_from_route_options(); | |||
}); | |||
var options = { | |||
doctype: me.doctype, | |||
parent: page | |||
}; | |||
$.extend(options, frappe.views.calendar[me.doctype] || {}); | |||
var options = { | |||
doctype: me.doctype, | |||
parent: page | |||
}; | |||
$.extend(options, frappe.views.calendar[me.doctype] || {}); | |||
page.ganttview = new frappe.views.Gantt(options); | |||
page.ganttview = new frappe.views.Gantt(options); | |||
}); | |||
}); | |||
} | |||
}); | |||
@@ -666,13 +666,16 @@ frappe.views.GridReportWithPlot = frappe.views.GridReport.extend({ | |||
this.plot_area.toggle(false); | |||
return; | |||
} | |||
frappe.require('assets/frappe/js/lib/flot/jquery.flot.js'); | |||
frappe.require('assets/frappe/js/lib/flot/jquery.flot.downsample.js'); | |||
this.plot = $.plot(this.plot_area.toggle(true), plot_data, | |||
this.get_plot_options()); | |||
var me = this; | |||
frappe.require(['assets/frappe/js/lib/flot/jquery.flot.js', | |||
'assets/frappe/js/lib/flot/jquery.flot.downsample.js'], function() { | |||
me.plot = $.plot(me.plot_area.toggle(true), plot_data, | |||
me.get_plot_options()); | |||
me.setup_plot_hover(); | |||
}); | |||
this.setup_plot_hover(); | |||
}, | |||
setup_plot_check: function() { | |||
var me = this; | |||
@@ -115,12 +115,13 @@ frappe.views.QueryReport = Class.extend({ | |||
callback: function(r) { | |||
frappe.dom.eval(r.message.script || ""); | |||
var report_settings = frappe.query_reports[me.report_name]; | |||
me.html_format = r.message.html_format; | |||
report_settings["html_format"] = r.message.html_format; | |||
me.setup_report(); | |||
frappe.after_ajax(function() { | |||
var report_settings = frappe.query_reports[me.report_name]; | |||
me.html_format = r.message.html_format; | |||
report_settings["html_format"] = r.message.html_format; | |||
me.setup_report(); | |||
}); | |||
} | |||
}); | |||
} else { | |||
@@ -18,10 +18,10 @@ frappe.standard_pages["test-runner"] = function() { | |||
return; | |||
} | |||
frappe.require("assets/frappe/js/lib/jquery/qunit.js"); | |||
frappe.require("assets/frappe/js/lib/jquery/qunit.css"); | |||
var requires = ["assets/frappe/js/lib/jquery/qunit.js", | |||
"assets/frappe/js/lib/jquery/qunit.css"].concat(route.splice(1).join("/")); | |||
QUnit.load(); | |||
frappe.require(route.splice(1).join("/")); | |||
frappe.require(requires, function() { | |||
QUnit.load(); | |||
}); | |||
} |
@@ -168,7 +168,7 @@ _f.Frm.prototype.print_doc = function() { | |||
this.hide_print(); | |||
return; | |||
} | |||
if(!frappe.model.can_print(this.doc.doctype, cur_frm)) { | |||
if(!frappe.model.can_print(this.doc.doctype, this)) { | |||
msgprint(__("You are not allowed to print this document")); | |||
return; | |||
} | |||
@@ -422,10 +422,10 @@ _f.Frm.prototype.refresh = function(docname) { | |||
if(!this.setup_done) this.setup(); | |||
// load the record for the first time, if not loaded (call 'onload') | |||
cur_frm.cscript.is_onload = false; | |||
this.cscript.is_onload = false; | |||
if(!this.opendocs[this.docname]) { | |||
var me = this; | |||
cur_frm.cscript.is_onload = true; | |||
this.cscript.is_onload = true; | |||
this.setnewdoc(); | |||
$(document).trigger("form-load", [this]); | |||
$(this.page.wrapper).on('hide', function(e) { | |||
@@ -534,7 +534,7 @@ _f.Frm.prototype.render_form = function(is_a_different_doc) { | |||
this.refresh_header(is_a_different_doc); | |||
} | |||
$(cur_frm.wrapper).trigger('render_complete'); | |||
$(this.wrapper).trigger('render_complete'); | |||
if(!this.hidden) { | |||
this.layout.show_empty_form_message(); | |||
@@ -544,8 +544,8 @@ _f.Frm.prototype.render_form = function(is_a_different_doc) { | |||
} | |||
_f.Frm.prototype.refresh_field = function(fname) { | |||
if(cur_frm.fields_dict[fname] && cur_frm.fields_dict[fname].refresh) { | |||
cur_frm.fields_dict[fname].refresh(); | |||
if(this.fields_dict[fname] && this.fields_dict[fname].refresh) { | |||
this.fields_dict[fname].refresh(); | |||
this.layout.refresh_dependency(); | |||
} | |||
} | |||
@@ -582,13 +582,13 @@ _f.Frm.prototype.cleanup_refresh = function() { | |||
if(me.meta.autoname && me.meta.autoname.substr(0,6)=='field:' && !me.doc.__islocal) { | |||
var fn = me.meta.autoname.substr(6); | |||
if (cur_frm.doc[fn]) { | |||
cur_frm.toggle_display(fn, false); | |||
if (me.doc[fn]) { | |||
me.toggle_display(fn, false); | |||
} | |||
} | |||
if(me.meta.autoname=="naming_series:" && !me.doc.__islocal) { | |||
cur_frm.toggle_display("naming_series", false); | |||
me.toggle_display("naming_series", false); | |||
} | |||
} | |||
@@ -914,7 +914,7 @@ _f.Frm.prototype.add_fetch = function(link_field, src_field, tar_field) { | |||
} | |||
_f.Frm.prototype.set_print_heading = function(txt) { | |||
this.pformat[cur_frm.docname] = txt; | |||
this.pformat[this.docname] = txt; | |||
} | |||
_f.Frm.prototype.action_perm_type_map = { | |||
@@ -1,7 +1,6 @@ | |||
// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors | |||
// MIT License. See license.txt | |||
frappe.require('assets/frappe/js/lib/jscolor/jscolor.js'); | |||
frappe.provide("frappe.website_theme"); | |||
$.extend(frappe.website_theme, { | |||
@@ -10,10 +9,12 @@ $.extend(frappe.website_theme, { | |||
}); | |||
frappe.ui.form.on("Website Theme", "onload_post_render", function(frm) { | |||
$.each(frappe.website_theme.color_variables, function(i, v) { | |||
$(frm.fields_dict[v].input).addClass('color {required:false,hash:true}'); | |||
frappe.require('assets/frappe/js/lib/jscolor/jscolor.js', function() { | |||
$.each(frappe.website_theme.color_variables, function(i, v) { | |||
$(frm.fields_dict[v].input).addClass('color {required:false,hash:true}'); | |||
}); | |||
jscolor.bind(); | |||
}); | |||
jscolor.bind(); | |||
}); | |||
frappe.ui.form.on("Website Theme", "refresh", function(frm) { | |||