Bläddra i källkod

fixed install and tree cleanup

version-14
Rushabh Mehta 11 år sedan
förälder
incheckning
c168d1f1f6
7 ändrade filer med 151 tillägg och 88 borttagningar
  1. +1
    -0
      frappe/public/build.json
  2. +0
    -7
      frappe/public/css/app.css
  3. +31
    -0
      frappe/public/css/tree.css
  4. +78
    -43
      frappe/public/js/frappe/ui/tree.js
  5. +2
    -1
      frappe/website/doctype/website_sitemap/website_sitemap.py
  6. +2
    -7
      frappe/website/doctype/website_sitemap_config/website_sitemap_config.py
  7. +37
    -30
      frappe/website/page/sitemap_browser/sitemap_browser.js

+ 1
- 0
frappe/public/build.json Visa fil

@@ -41,6 +41,7 @@
"public/css/navbar.css",
"public/css/slickgrid.css",
"public/css/tree_grid.css",
"public/css/tree.css",
"public/css/nprogress.css"
],
"js/frappe.min.js": [


+ 0
- 7
frappe/public/css/app.css Visa fil

@@ -344,13 +344,6 @@ ul.linked-with-list li {
font-weight: bold;
}

.tree-node-toolbar {
padding: 2px 5px;
margin-left: 15px;
border-radius: 3px;
background-color: #ddd;
}

.print-preview {
padding: 50px 20px;
margin: 0px -15px;


+ 31
- 0
frappe/public/css/tree.css Visa fil

@@ -0,0 +1,31 @@
.tree li {
list-style: none;
}
.tree ul {
margin-top: 2px;
}
.tree-link {
cursor: pointer;
}
.tree-hover {
background-color: #eee;
min-height: 20px;
border: 1px solid #ddd;
}
.tree-node-toolbar {
display: inline-block;
padding: 0px 5px;
margin-left: 15px;
border-radius: 3px;
background-color: #ddd;
}
.tree-toolbar-item {
display: inline-block;
padding: 0px 5px;
padding-top: 1px;
border-right: 1px solid #aaa;
font-size: 90%;
}
.tree-toolbar-item:last-child {
border-right: 0px;
}

+ 78
- 43
frappe/public/js/frappe/ui/tree.js Visa fil

@@ -16,38 +16,45 @@ frappe.ui.Tree = Class.extend({
parent_label: null,
expandable: true
});
this.set_style();
this.rootnode.toggle();
},
get_selected_node: function() {
return this.$w.find('.tree-link.selected').data('node');
return this.selected_node;
},
set_style: function() {
frappe.dom.set_style("\
.tree li { list-style: none; }\
.tree ul { margin-top: 2px; }\
.tree-link { cursor: pointer; }\
.tree-hover { background-color: #eee; min-height: 20px; border: 1px solid #ddd; }\
")
toggle: function() {
this.get_selected_node().toggle();
}
})

frappe.ui.TreeNode = Class.extend({
init: function(args) {
var me = this;
$.extend(this, args);
this.loaded = false;
this.expanded = false;
this.tree.nodes[this.label] = this;
if(this.parent_label)
this.parent_node = this.tree.nodes[this.parent_label];
this.make();
this.setup_drag_drop();
if(this.tree.onrender) {
this.tree.onrender(this);
}
},
make: function() {
var me = this;
this.$a = $('<span class="tree-link">')
.click(function() {
if(me.expandable && me.tree.method && !me.loaded) {
me.load()
} else {
me.selectnode();
me.tree.selected_node = me;
if(me.tree.toolbar) {
me.show_toolbar();
}
if(me.toggle_on_click) {
me.toggle();
}
if(me.tree.click) me.tree.click(this);
if(me.tree.click)
me.tree.click(this);
})
.bind('reload', function() { me.reload(); })
.data('label', this.label)
@@ -55,8 +62,53 @@ frappe.ui.TreeNode = Class.extend({
.appendTo(this.parent);

this.$ul = $('<ul class="tree-children">')
.css({"min-height": "5px"})
.toggle(false).appendTo(this.parent);
this.make_icon();
},
make_icon: function() {
// label with icon
var icon_html = '<i class="icon-fixed-width icon-file"></i>';
if(this.expandable) {
icon_html = '<i class="icon-fixed-width icon-folder-close"></i>';
}
$(icon_html + ' <a class="tree-label">' + this.label + "</a>").
appendTo(this.$a);
},
toggle: function(callback) {
if(this.expandable && this.tree.method && !this.loaded) {
this.load(callback)
} else {
this.toggle_node(callback);
}
},
show_toolbar: function() {
if(this.tree.cur_toolbar)
$(this.tree.cur_toolbar).toggle(false);

if(!this.toolbar)
this.make_toolbar();

this.tree.cur_toolbar = this.toolbar;
this.toolbar.toggle(true);
},
make_toolbar: function() {
var me = this;
this.toolbar = $('<span class="tree-node-toolbar"></span>').insertAfter(this.$a);
$.each(this.tree.toolbar, function(i, d) {
$("<a class='tree-toolbar-item'>")
.html(d.label)
.appendTo(me.toolbar)
.click(function() { d.click(me, this); return false; });
})
},
setup_drag_drop: function() {
// experimental
var me = this;
if(this.tree.drop && this.parent_label) {
this.$ul.droppable({
hoverClass: "tree-hover",
@@ -70,18 +122,7 @@ frappe.ui.TreeNode = Class.extend({
}
});
}
// label with icon
var icon_html = '<i class="icon-fixed-width icon-file"></i>';
if(this.expandable) {
icon_html = '<i class="icon-fixed-width icon-folder-close"></i>';
}
$(icon_html + ' <a class="tree-label">' + this.label + "</a>").
appendTo(this.$a);
if(this.tree.onrender) {
this.tree.onrender(this);
}
},
addnode: function(data) {
var $li = $('<li class="tree-node">');
@@ -95,14 +136,16 @@ frappe.ui.TreeNode = Class.extend({
data: data
});
},
selectnode: function() {
toggle_node: function(callback) {
// expand children
if(this.$ul) {
this.$ul.toggle();
if(this.$ul.children().length) {
this.$ul.toggle(!this.expanded);
}
// open close icon
this.$a.find('i').removeClass();
if(this.$ul.css('display').toLowerCase()=='block') {
if(!this.expanded) {
this.$a.find('i').addClass('icon-fixed-width icon-folder-open');
} else {
this.$a.find('i').addClass('icon-fixed-width icon-folder-close');
@@ -114,30 +157,22 @@ frappe.ui.TreeNode = Class.extend({
.removeClass('selected');
this.$a.toggleClass('selected');
this.expanded = !this.expanded;
if(callback) callback();
},
reload: function() {
if(this.expanded) {
this.$a.click(); // collapse
}
if(this.$ul) {
this.$ul.empty();
}
this.load();
},
load: function() {
load: function(callback) {
var me = this;
args = $.extend(this.tree.args || {}, {
parent: this.data ? this.data.value : null
});

$(me.$a).set_working();

return frappe.call({
method: this.tree.method,
args: args,
callback: function(r) {
$(me.$a).done_working();

me.$ul.empty();
if (r.message) {
$.each(r.message, function(i, v) {
node = me.addnode(v);
@@ -147,10 +182,10 @@ frappe.ui.TreeNode = Class.extend({
});
}
if(!me.expanded)
me.toggle_node(callback);
me.loaded = true;
// expand
me.selectnode();
}
})
}

+ 2
- 1
frappe/website/doctype/website_sitemap/website_sitemap.py Visa fil

@@ -30,7 +30,8 @@ class DocType(DocTypeNestedSet):
self.rename()
self.check_if_page_name_is_unique()
self.make_private_if_parent_is_private()
self.renumber_if_moved()
if not self.doc.is_new():
self.renumber_if_moved()
self.set_idx()

def renumber_if_moved(self):


+ 2
- 7
frappe/website/doctype/website_sitemap_config/website_sitemap_config.py Visa fil

@@ -45,12 +45,7 @@ class DocType:
def rebuild_website_sitemap_config():
# TODO
frappe.flags.in_rebuild_config = True
frappe.conn.sql("""update `tabWeb Page` set idx=null""")
frappe.conn.sql("""update `tabBlog Post` set idx=null""")
frappe.conn.sql("""update `tabBlog Category` set idx=null""")
frappe.conn.sql("""update `tabWebsite Group` set idx=null""")
frappe.conn.sql("""delete from `tabWebsite Sitemap Config`""")
for app in frappe.get_installed_apps():
if app=="webnotes": app="frappe"
@@ -81,7 +76,7 @@ def build_website_sitemap_config(app):
if config_type=="pages":
pages.append(["Page", app, path, fname, basepath])
else:
generators(["Generator", app, path, fname, basepath])
generators.append(["Generator", app, path, fname, basepath])

for args in pages:
add_website_sitemap_config(*args)


+ 37
- 30
frappe/website/page/sitemap_browser/sitemap_browser.js Visa fil

@@ -9,7 +9,7 @@ frappe.pages['sitemap-browser'].onload = function(wrapper) {
wrapper.appframe.add_module_icon("Website")

wrapper.appframe.set_title_right('Refresh', function() {
wrapper.make_tree();
frappe.website.sitemap.tree.rootnode.reload();
});

$(wrapper)
@@ -37,18 +37,41 @@ frappe.website.SitemapBrowser = Class.extend({
parent: $(parent),
label: "Sitemap",
method: 'frappe.website.page.sitemap_browser.sitemap_browser.get_children',
click: function(link) {
if(me.cur_toolbar)
$(me.cur_toolbar).toggle(false);

if(!link.toolbar)
me.make_link_toolbar(link);

if(link.toolbar) {
me.cur_toolbar = link.toolbar;
$(me.cur_toolbar).toggle(true);
toolbar: [
{
label:frappe._("Expand"),
click:function(node, btn) {
node.toggle(function() {
$(btn).html(node.expanded ? frappe._("Collapse") : frappe._("Expand"));
});
}
},
{
label: frappe._("Update Parent"),
click: function(node, btn) {
me.update_parent();
}
},
{
label: frappe._("Up"),
click: function(node, btn) {
me.up_or_down("up");
}
},
{
label: frappe._("Down"),
click: function(node, btn) {
me.up_or_down("down");
}
},
{
label: frappe._("Open"),
click: function(node, btn) {
frappe.set_route("Form", node.data.ref_doctype, node.data.docname);
}
}
},
]
// 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) {
@@ -62,22 +85,6 @@ frappe.website.SitemapBrowser = Class.extend({
.data('node-data', {value: "Sitemap", expandable:1})
.click();
},
make_link_toolbar: function(link) {
var data = $(link).data('node-data');
if(!data) return;

link.toolbar = $('<span class="tree-node-toolbar"></span>').insertAfter(link);
// edit
var node_links = [];
node_links.push('<a onclick="frappe.website.sitemap.open();">'+frappe._('Edit')+'</a>');
node_links.push('<a onclick="frappe.website.sitemap.update_parent();">'+frappe._('Move')+'</a>');
node_links.push('<a onclick="frappe.website.sitemap.up_or_down(\'up\');">'+frappe._('Up')+'</a>');
node_links.push('<a onclick="frappe.website.sitemap.up_or_down(\'down\');">'+frappe._('Down')+'</a>');
link.toolbar.append(node_links.join(" | "));
},
selected_node: function() {
return this.tree.$w.find('.tree-link.selected');
},
@@ -126,7 +133,7 @@ frappe.website.SitemapBrowser = Class.extend({
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._update_parent(node.label, values.new_parent, function(r) {
me.move_dialog.hide();
(node.parent_node || node).reload();
})
@@ -135,7 +142,7 @@ frappe.website.SitemapBrowser = Class.extend({
this.move_dialog.show();
this.move_dialog.get_input("new_parent").val("");
},
update_parent: function(name, parent, callback) {
_update_parent: function(name, parent, callback) {
frappe.call({
method: "frappe.website.page.sitemap_browser.sitemap_browser.update_parent",
args: {


Laddar…
Avbryt
Spara