added patches for build_website and removed website template frappe/frappe#600
This commit is contained in:
parent
b0036a27ec
commit
c49f517e96
11 changed files with 50 additions and 402 deletions
|
|
@ -230,7 +230,7 @@ def setup_utilities(parser):
|
|||
# clear
|
||||
parser.add_argument("--clear_web", default=False, action="store_true",
|
||||
help="Clear website cache")
|
||||
parser.add_argument("--build_sitemap", default=False, action="store_true",
|
||||
parser.add_argument("--build_website", default=False, action="store_true",
|
||||
help="Build Website Route")
|
||||
parser.add_argument("--sync_statics", default=False, action="store_true",
|
||||
help="Sync files from templates/statics to Web Pages")
|
||||
|
|
@ -352,7 +352,7 @@ def add_to_installed_apps(*apps):
|
|||
all_apps = frappe.get_all_apps(with_frappe=True)
|
||||
for each in apps:
|
||||
if each in all_apps:
|
||||
add_to_installed_apps(each, rebuild_sitemap=False)
|
||||
add_to_installed_apps(each, rebuild_website=False)
|
||||
frappe.destroy()
|
||||
|
||||
@cmd
|
||||
|
|
@ -402,10 +402,9 @@ def update(remote=None, branch=None, reload_gunicorn=False):
|
|||
subprocess.check_output("killall -HUP gunicorn".split())
|
||||
|
||||
@cmd
|
||||
def latest(rebuild_website_config=True, quiet=False):
|
||||
def latest(rebuild_website=True, quiet=False):
|
||||
import frappe.modules.patch_handler
|
||||
import frappe.model.sync
|
||||
from frappe.website import rebuild_config
|
||||
from frappe.utils.fixtures import sync_fixtures
|
||||
import frappe.translate
|
||||
from frappe.website import statics
|
||||
|
|
@ -425,8 +424,8 @@ def latest(rebuild_website_config=True, quiet=False):
|
|||
sync.start()
|
||||
sync.start(rebuild=True)
|
||||
# build website config if any changes in templates etc.
|
||||
if rebuild_website_config:
|
||||
rebuild_config()
|
||||
if rebuild_website:
|
||||
build_website()
|
||||
|
||||
frappe.translate.clear_cache()
|
||||
|
||||
|
|
@ -561,10 +560,10 @@ def clear_all_sessions():
|
|||
frappe.destroy()
|
||||
|
||||
@cmd
|
||||
def build_sitemap():
|
||||
from frappe.website import rebuild_config
|
||||
def build_website():
|
||||
import frappe.website.sync
|
||||
frappe.connect()
|
||||
rebuild_config()
|
||||
frappe.website.sync.sync()
|
||||
frappe.destroy()
|
||||
|
||||
@cmd
|
||||
|
|
|
|||
|
|
@ -120,16 +120,16 @@ def install_app(name, verbose=False, set_as_patched=True):
|
|||
|
||||
frappe.flags.in_install_app = False
|
||||
|
||||
def add_to_installed_apps(app_name, rebuild_sitemap=True):
|
||||
def add_to_installed_apps(app_name, rebuild_website=True):
|
||||
installed_apps = frappe.get_installed_apps()
|
||||
if not app_name in installed_apps:
|
||||
installed_apps.append(app_name)
|
||||
frappe.db.set_global("installed_apps", json.dumps(installed_apps))
|
||||
frappe.db.commit()
|
||||
|
||||
if rebuild_sitemap:
|
||||
from frappe.website.doctype.website_template.website_template import rebuild_website_template
|
||||
rebuild_website_template()
|
||||
if rebuild_website:
|
||||
import frappe.website.sync
|
||||
frappe.website.sync.sync()
|
||||
|
||||
frappe.clear_cache()
|
||||
|
||||
|
|
|
|||
|
|
@ -41,3 +41,5 @@ frappe.patches.v4_0.fix_attach_field_file_url
|
|||
execute:frappe.reset_perms("User") #2014-06-13
|
||||
execute:frappe.db.sql("""delete from `tabUserRole` where ifnull(parentfield, '')=''""") #2014-06-17
|
||||
frappe.patches.v4_0.remove_user_owner_custom_field
|
||||
execute:frappe.delete_doc("DocType", "Website Template")
|
||||
execute:frappe.get_attr("frappe.website.sync.sync")() #2014-06-17
|
||||
|
|
|
|||
|
|
@ -17,11 +17,11 @@ def execute():
|
|||
frappe.reload_doc("website", "doctype", frappe.scrub(d))
|
||||
rename_field_if_exists(d, "parent_website_sitemap", "parent_website_route")
|
||||
|
||||
frappe.reload_doc("website", "doctype", "website_template")
|
||||
#frappe.reload_doc("website", "doctype", "website_template")
|
||||
frappe.reload_doc("website", "doctype", "website_route")
|
||||
frappe.reload_doc("website", "doctype", "website_route_permission")
|
||||
|
||||
rename_field_if_exists("Website Route", "website_sitemap_config", "website_template")
|
||||
#rename_field_if_exists("Website Route", "website_sitemap_config", "website_template")
|
||||
rename_field_if_exists("Website Route Permission", "website_sitemap", "website_route")
|
||||
|
||||
for d in ("blog_category", "blog_post", "web_page", "website_route", "website_group", "post", "user_vote"):
|
||||
|
|
|
|||
|
|
@ -1,23 +1,24 @@
|
|||
import frappe
|
||||
|
||||
def execute():
|
||||
from frappe.website.doctype.website_template.website_template import \
|
||||
get_pages_and_generators, get_template_controller
|
||||
|
||||
frappe.reload_doc("website", "doctype", "website_template")
|
||||
frappe.reload_doc("website", "doctype", "website_route")
|
||||
|
||||
for app in frappe.get_installed_apps():
|
||||
pages, generators = get_pages_and_generators(app)
|
||||
for g in generators:
|
||||
doctype = frappe.get_attr(get_template_controller(app, g["path"], g["fname"]) + ".doctype")
|
||||
module = frappe.db.get_value("DocType", doctype, "module")
|
||||
frappe.reload_doc(frappe.scrub(module), "doctype", frappe.scrub(doctype))
|
||||
|
||||
frappe.db.sql("""update `tabBlog Category` set `title`=`name` where ifnull(`title`, '')=''""")
|
||||
frappe.db.sql("""update `tabWebsite Route` set idx=null""")
|
||||
for doctype in ["Blog Category", "Blog Post", "Web Page", "Website Group"]:
|
||||
frappe.db.sql("""update `tab{}` set idx=null""".format(doctype))
|
||||
|
||||
from frappe.website.doctype.website_template.website_template import rebuild_website_template
|
||||
rebuild_website_template()
|
||||
pass
|
||||
# from frappe.website.doctype.website_template.website_template import \
|
||||
# get_pages_and_generators, get_template_controller
|
||||
#
|
||||
# frappe.reload_doc("website", "doctype", "website_template")
|
||||
# frappe.reload_doc("website", "doctype", "website_route")
|
||||
#
|
||||
# for app in frappe.get_installed_apps():
|
||||
# pages, generators = get_pages_and_generators(app)
|
||||
# for g in generators:
|
||||
# doctype = frappe.get_attr(get_template_controller(app, g["path"], g["fname"]) + ".doctype")
|
||||
# module = frappe.db.get_value("DocType", doctype, "module")
|
||||
# frappe.reload_doc(frappe.scrub(module), "doctype", frappe.scrub(doctype))
|
||||
#
|
||||
# frappe.db.sql("""update `tabBlog Category` set `title`=`name` where ifnull(`title`, '')=''""")
|
||||
# frappe.db.sql("""update `tabWebsite Route` set idx=null""")
|
||||
# for doctype in ["Blog Category", "Blog Post", "Web Page", "Website Group"]:
|
||||
# frappe.db.sql("""update `tab{}` set idx=null""".format(doctype))
|
||||
#
|
||||
# from frappe.website.doctype.website_template.website_template import rebuild_website_template
|
||||
# rebuild_website_template()
|
||||
|
|
|
|||
|
|
@ -6,9 +6,9 @@ from __future__ import unicode_literals
|
|||
import frappe
|
||||
|
||||
def execute():
|
||||
frappe.db.sql("""update `tabWebsite Route` ws set ref_doctype=(select wsc.ref_doctype
|
||||
from `tabWebsite Template` wsc where wsc.name=ws.website_template)
|
||||
where ifnull(page_or_generator, '')!='Page'""")
|
||||
# frappe.db.sql("""update `tabWebsite Route` ws set ref_doctype=(select wsc.ref_doctype
|
||||
# from `tabWebsite Template` wsc where wsc.name=ws.website_template)
|
||||
# where ifnull(page_or_generator, '')!='Page'""")
|
||||
|
||||
frappe.reload_doc("website", "doctype", "website_settings")
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ class WebsiteRoute(NestedSet):
|
|||
|
||||
def autoname(self):
|
||||
self.name = self.get_url()
|
||||
print self.name
|
||||
|
||||
def get_url(self):
|
||||
url = self.page_name
|
||||
|
|
|
|||
|
|
@ -1,130 +0,0 @@
|
|||
{
|
||||
"autoname": "field:link_name",
|
||||
"creation": "2013-11-18 15:35:00.000000",
|
||||
"docstatus": 0,
|
||||
"doctype": "DocType",
|
||||
"document_type": "System",
|
||||
"fields": [
|
||||
{
|
||||
"fieldname": "page_or_generator",
|
||||
"fieldtype": "Select",
|
||||
"label": "Page or Generator",
|
||||
"options": "Page\nGenerator",
|
||||
"permlevel": 0,
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "ref_doctype",
|
||||
"fieldtype": "Link",
|
||||
"label": "Ref DocType",
|
||||
"options": "DocType",
|
||||
"permlevel": 0,
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "link_name",
|
||||
"fieldtype": "Data",
|
||||
"label": "Link Name",
|
||||
"permlevel": 0,
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "page_title",
|
||||
"fieldtype": "Data",
|
||||
"label": "Page Title",
|
||||
"permlevel": 0
|
||||
},
|
||||
{
|
||||
"fieldname": "base_template_path",
|
||||
"fieldtype": "Data",
|
||||
"label": "Base Template Path",
|
||||
"permlevel": 0,
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "template_path",
|
||||
"fieldtype": "Data",
|
||||
"label": "Template Path",
|
||||
"permlevel": 0,
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "controller",
|
||||
"fieldtype": "Data",
|
||||
"label": "Controller",
|
||||
"permlevel": 0,
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "lastmod",
|
||||
"fieldtype": "Data",
|
||||
"label": "Lastmod",
|
||||
"permlevel": 0
|
||||
},
|
||||
{
|
||||
"fieldname": "no_cache",
|
||||
"fieldtype": "Check",
|
||||
"label": "No Cache",
|
||||
"permlevel": 0,
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "no_sitemap",
|
||||
"fieldtype": "Check",
|
||||
"label": "No Sitemap",
|
||||
"permlevel": 0,
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "no_sidebar",
|
||||
"fieldtype": "Check",
|
||||
"label": "No Sidebar",
|
||||
"permlevel": 0
|
||||
},
|
||||
{
|
||||
"fieldname": "page_name_field",
|
||||
"fieldtype": "Data",
|
||||
"label": "Page Name Field",
|
||||
"permlevel": 0,
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "condition_field",
|
||||
"fieldtype": "Data",
|
||||
"label": "Condition Field",
|
||||
"permlevel": 0,
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "sort_by",
|
||||
"fieldtype": "Data",
|
||||
"label": "Sort By",
|
||||
"permlevel": 0
|
||||
},
|
||||
{
|
||||
"fieldname": "sort_order",
|
||||
"fieldtype": "Data",
|
||||
"label": "Sort Order",
|
||||
"permlevel": 0
|
||||
}
|
||||
],
|
||||
"idx": 1,
|
||||
"modified": "2014-02-24 12:47:44.000000",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Website",
|
||||
"name": "Website Template",
|
||||
"owner": "Administrator",
|
||||
"permissions": [
|
||||
{
|
||||
"cancel": 0,
|
||||
"create": 0,
|
||||
"delete": 1,
|
||||
"export": 0,
|
||||
"permlevel": 0,
|
||||
"read": 1,
|
||||
"report": 1,
|
||||
"role": "System Manager",
|
||||
"write": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,141 +0,0 @@
|
|||
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
|
||||
# MIT License. See license.txt
|
||||
|
||||
# For license information, please see license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
import frappe.utils
|
||||
import os
|
||||
from frappe import _
|
||||
from frappe.website.doctype.website_route.website_route import add_to_sitemap, update_sitemap, cleanup_sitemap
|
||||
from frappe.utils.nestedset import rebuild_tree
|
||||
|
||||
from frappe.model.document import Document
|
||||
|
||||
class WebsiteTemplate(Document):
|
||||
def after_insert(self):
|
||||
if self.page_or_generator == "Page":
|
||||
website_route = frappe.db.get_value("Website Route",
|
||||
{"website_template": self.name, "page_or_generator": "Page"})
|
||||
|
||||
opts = self.as_dict()
|
||||
opts.update({"public_read": 1})
|
||||
|
||||
if website_route:
|
||||
update_sitemap(website_route, opts)
|
||||
else:
|
||||
add_to_sitemap(opts)
|
||||
|
||||
else:
|
||||
condition = ""
|
||||
if self.condition_field:
|
||||
condition = " where ifnull(%s, 0)=1" % self.condition_field
|
||||
|
||||
for name in frappe.db.sql_list("""select name from `tab{doctype}`
|
||||
{condition} order by idx asc, {sort_field} {sort_order}""".format(
|
||||
doctype = self.ref_doctype,
|
||||
condition = condition,
|
||||
sort_field = getattr(self, "sort_field", "name"),
|
||||
sort_order = getattr(self, "sort_order", "asc")
|
||||
)):
|
||||
doc = frappe.get_doc(self.ref_doctype, name)
|
||||
|
||||
# regenerate route
|
||||
doc.run_method("on_update")
|
||||
|
||||
def rebuild_website_template():
|
||||
# TODO
|
||||
frappe.flags.in_rebuild_config = True
|
||||
|
||||
frappe.db.sql("""delete from `tabWebsite Template`""")
|
||||
for app in frappe.get_installed_apps():
|
||||
if app=="webnotes": app="frappe"
|
||||
build_website_template(app)
|
||||
|
||||
cleanup_sitemap()
|
||||
|
||||
frappe.flags.in_rebuild_config = False
|
||||
|
||||
# enable nested set and rebuild
|
||||
rebuild_tree("Website Route", "parent_website_route")
|
||||
|
||||
frappe.db.commit()
|
||||
|
||||
|
||||
def build_website_template(app):
|
||||
config = {"pages": {}, "generators":{}}
|
||||
|
||||
pages, generators = get_pages_and_generators(app)
|
||||
|
||||
for args in pages:
|
||||
add_website_template(**args)
|
||||
|
||||
for args in generators:
|
||||
add_website_template(**args)
|
||||
|
||||
frappe.db.commit()
|
||||
|
||||
def get_pages_and_generators(app):
|
||||
pages = []
|
||||
generators = []
|
||||
app_path = frappe.get_app_path(app)
|
||||
|
||||
for config_type in ("pages", "generators"):
|
||||
path = os.path.join(app_path, "templates", config_type)
|
||||
if os.path.exists(path):
|
||||
for fname in os.listdir(path):
|
||||
fname = frappe.utils.cstr(fname)
|
||||
if fname.split(".")[-1] in ("html", "xml", "js", "css"):
|
||||
if config_type=="pages":
|
||||
pages.append({"page_or_generator": "Page", "app": app, "path": path,
|
||||
"fname":fname, "app_path":app_path})
|
||||
else:
|
||||
generators.append({"page_or_generator": "Generator", "app": app, "path": path,
|
||||
"fname":fname, "app_path":app_path})
|
||||
|
||||
return pages, generators
|
||||
|
||||
def add_website_template(page_or_generator, app, path, fname, app_path):
|
||||
name = fname[:-5] if fname.endswith(".html") else fname
|
||||
|
||||
wsc = frappe._dict({
|
||||
"doctype": "Website Template",
|
||||
"page_or_generator": page_or_generator,
|
||||
"link_name": name,
|
||||
"template_path": os.path.relpath(os.path.join(path, fname), app_path),
|
||||
})
|
||||
|
||||
wsc.controller = get_template_controller(app, path, fname)
|
||||
|
||||
if wsc.controller:
|
||||
# verbose print wsc.controller
|
||||
module = frappe.get_module(wsc.controller)
|
||||
wsc.no_cache = getattr(module, "no_cache", 0)
|
||||
wsc.no_sitemap = wsc.no_cache or getattr(module, "no_sitemap", 0)
|
||||
wsc.no_sidebar = wsc.no_sidebar or getattr(module, "no_sidebar", 0)
|
||||
wsc.ref_doctype = getattr(module, "doctype", None)
|
||||
wsc.page_name_field = getattr(module, "page_name_field", "page_name")
|
||||
wsc.condition_field = getattr(module, "condition_field", None)
|
||||
wsc.sort_by = getattr(module, "sort_by", "name")
|
||||
wsc.sort_order = getattr(module, "sort_order", "asc")
|
||||
wsc.base_template_path = getattr(module, "base_template_path", None)
|
||||
wsc.page_title = getattr(module, "page_title", _(name.title()))
|
||||
|
||||
if frappe.db.exists("Website Template", wsc.link_name):
|
||||
# found by earlier app, override
|
||||
frappe.db.sql("""delete from `tabWebsite Template` where name=%s""", (wsc.link_name,))
|
||||
|
||||
frappe.get_doc(wsc).insert()
|
||||
|
||||
return name
|
||||
|
||||
def get_template_controller(app, path, fname):
|
||||
controller = None
|
||||
controller_name = fname.split(".")[0].replace("-", "_") + ".py"
|
||||
controller_path = os.path.join(path, controller_name)
|
||||
if os.path.exists(controller_path):
|
||||
controller = app + "." + os.path.relpath(controller_path[:-3], frappe.get_app_path(app)).replace(os.path.sep, ".")
|
||||
|
||||
return controller
|
||||
|
||||
|
|
@ -1,24 +1,23 @@
|
|||
// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
|
||||
// MIT License. See license.txt"
|
||||
|
||||
frappe.pages['sitemap-browser'].onload = function(wrapper) {
|
||||
frappe.pages['sitemap-browser'].onload = function(wrapper) {
|
||||
frappe.ui.make_app_page({
|
||||
parent: wrapper,
|
||||
title: 'Sitemap Browser',
|
||||
});
|
||||
});
|
||||
wrapper.appframe.add_module_icon("Website")
|
||||
|
||||
wrapper.appframe.set_title_right('Refresh', function() {
|
||||
wrapper.appframe.set_title_right('Refresh', function() {
|
||||
frappe.website.sitemap.tree.rootnode.reload();
|
||||
});
|
||||
|
||||
$(wrapper)
|
||||
.find(".layout-side-section")
|
||||
.html('<div class="text-muted">'+
|
||||
__('Click on a link to get options to expand get options ') +
|
||||
__('Add') + ' / ' + __('Edit') + ' / '+ __('Remove') + '.</div>')
|
||||
.html('<div class="text-muted">'+
|
||||
__('Click on a link to get options') + '</div>')
|
||||
|
||||
frappe.website.sitemap = new frappe.website.SitemapBrowser(
|
||||
frappe.website.sitemap = new frappe.website.SitemapBrowser(
|
||||
$(wrapper)
|
||||
.find(".layout-main-section")
|
||||
.css({
|
||||
|
|
@ -34,31 +33,13 @@ frappe.website.SitemapBrowser = Class.extend({
|
|||
$(parent).empty();
|
||||
var me = this;
|
||||
this.tree = new frappe.ui.Tree({
|
||||
parent: $(parent),
|
||||
parent: $(parent),
|
||||
label: "Sitemap",
|
||||
method: 'frappe.website.page.sitemap_browser.sitemap_browser.get_children',
|
||||
toolbar: [
|
||||
{
|
||||
toggle_btn: true,
|
||||
},
|
||||
{
|
||||
label: __("Update Parent"),
|
||||
click: function(node, btn) {
|
||||
me.update_parent();
|
||||
}
|
||||
},
|
||||
{
|
||||
label: __("Up"),
|
||||
click: function(node, btn) {
|
||||
me.up_or_down("up");
|
||||
}
|
||||
},
|
||||
{
|
||||
label: __("Down"),
|
||||
click: function(node, btn) {
|
||||
me.up_or_down("down");
|
||||
}
|
||||
},
|
||||
{
|
||||
label: __("Open"),
|
||||
click: function(node, btn) {
|
||||
|
|
@ -66,7 +47,7 @@ frappe.website.SitemapBrowser = Class.extend({
|
|||
}
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
// drop: function(dragged_node, dropped_node, dragged_element, dropped_element) {
|
||||
// frappe.website.sitemap.update_parent(dragged_node.label, dropped_node.label, function(r) {
|
||||
// if(!r.exc) {
|
||||
|
|
@ -78,7 +59,7 @@ frappe.website.SitemapBrowser = Class.extend({
|
|||
});
|
||||
this.tree.rootnode.$a
|
||||
.data('node-data', {value: "Sitemap", expandable:1})
|
||||
.click();
|
||||
.click();
|
||||
},
|
||||
selected_node: function() {
|
||||
return this.tree.$w.find('.tree-link.selected');
|
||||
|
|
@ -87,67 +68,4 @@ frappe.website.SitemapBrowser = Class.extend({
|
|||
var node = this.selected_node();
|
||||
frappe.set_route("Form", "Website Route", node.data("label"));
|
||||
},
|
||||
up_or_down: function(up_or_down) {
|
||||
var node = this.tree.get_selected_node();
|
||||
frappe.call({
|
||||
method: "frappe.website.page.sitemap_browser.sitemap_browser.move",
|
||||
args: {
|
||||
"name": node.label,
|
||||
"up_or_down": up_or_down
|
||||
},
|
||||
callback: function(r) {
|
||||
if(r.message==="ok") {
|
||||
node.parent.insertBefore(up_or_down==="up" ?
|
||||
node.parent.prev() : node.parent.next().next());
|
||||
//(node.parent_node || node).reload();
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
update_parent: function() {
|
||||
var me = this;
|
||||
if(!this.move_dialog) {
|
||||
this.move_dialog = new frappe.ui.Dialog({
|
||||
title: __("Move"),
|
||||
fields: [
|
||||
{
|
||||
fieldtype: "Link",
|
||||
fieldname: "new_parent",
|
||||
label: "New Parent",
|
||||
reqd: 1,
|
||||
options: "Website Route"
|
||||
},
|
||||
{
|
||||
fieldtype: "Button",
|
||||
fieldname: "update",
|
||||
label: "Update",
|
||||
}
|
||||
]
|
||||
});
|
||||
this.move_dialog.get_input("update").on("click", function() {
|
||||
var node = me.tree.get_selected_node();
|
||||
var values = me.move_dialog.get_values();
|
||||
if(!values) return;
|
||||
me._update_parent(node.label, values.new_parent, function(r) {
|
||||
me.move_dialog.hide();
|
||||
(node.parent_node || node).reload();
|
||||
})
|
||||
});
|
||||
}
|
||||
this.move_dialog.show();
|
||||
this.move_dialog.get_input("new_parent").val("");
|
||||
},
|
||||
_update_parent: function(name, parent, callback) {
|
||||
frappe.call({
|
||||
method: "frappe.website.page.sitemap_browser.sitemap_browser.update_parent",
|
||||
args: {
|
||||
"name": name,
|
||||
"new_parent": parent
|
||||
},
|
||||
callback: function(r) {
|
||||
callback(r);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue