// Copyright 2013 Web Notes Technologies Pvt Ltd
// License: MIT. See license.txt
// wn._("Form")
wn.ui.AppFrame = Class.extend({
init: function(parent, title, module) {
this.set_document_title = true;
this.buttons = {};
this.$w = $('
').prependTo(parent);
$('\
\
\
\
\
\
').appendTo(this.$w);
this.$w.find('.close').click(function() {
window.history.back();
})
if(title)
this.set_title(title);
},
get_title_area: function() {
return this.$w.find(".title-area");
},
set_title: function(txt, full_text) {
this.title = txt;
this.$w.find(".breadcrumb .appframe-title").html(txt);
this.$w.find(".title-text").html(txt);
},
set_sub_title: function(txt) {
this.$w.find(".sub-title-area").html(txt);
},
clear_breadcrumbs: function() {
this.$w.find(".breadcrumb").empty();
},
add_breadcrumb: function(icon, link, title) {
if(link) {
$(repl('\
/', {
icon: icon,
link: link,
title: wn._(title)
})).appendTo(this.$w.find(".breadcrumb"));
} else {
$(repl(" \
\
", {
icon: icon,
})).appendTo(this.$w.find(".breadcrumb"));
if(this.title) this.set_title(this.title);
}
},
add_home_breadcrumb: function() {
this.add_breadcrumb("icon-home", wn.home_page, "Home");
},
add_list_breadcrumb: function(doctype) {
this.add_breadcrumb("icon-list", "List/" + encodeURIComponent(doctype), doctype + " List");
},
add_module_icon: function(module) {
var module_info = wn.modules[module];
if(module_info) {
this.$w.find(".title-icon").html(' ')
.css({"cursor":"pointer"})
.attr("module-name", module)
.click(function() {
wn.set_route(wn.modules[$(this).attr("module-name")].link);
});
}
},
set_views_for: function(doctype, active_view) {
this.doctype = doctype;
var me = this;
var views = [{
icon: "icon-file-alt",
route: "",
type: "form",
set_route: function() {
if(wn.views.formview[me.doctype]) {
wn.set_route("Form", me.doctype, wn.views.formview[me.doctype].frm.docname);
} else {
new_doc(doctype);
}
}
}];
if(!locals.DocType[doctype].issingle) {
views.push({
icon: "icon-list",
route: "List/" + doctype,
type: "list"
});
}
if(locals.DocType[doctype].__calendar_js) {
views.push({
icon: "icon-calendar",
route: "Calendar/" + doctype,
type: "calendar"
});
}
if(wn.model.can_get_report(doctype)) {
views.push({
icon: "icon-table",
route: "Report2/" + doctype,
type: "report"
});
}
this.set_views(views, active_view);
},
set_views: function(views, active_view) {
var me = this;
$right = this.$w.find(".appframe-right .btn-group");
$.each(views, function(i, e) {
var btn = $(repl('', e))
.click(e.set_route || function() {
window.location.hash = "#" + $(this).attr("data-route");
})
.css({
width: "39px"
})
.attr("title", wn._(toTitle(e.type)))
.appendTo($right);
if(e.type==active_view) {
btn.addClass("btn-inverse");
}
});
},
add_help_button: function(txt) {
this.add_toolbar();
$('')
.data('help-text', txt)
.click(function() { msgprint($(this).data('help-text'), 'Help'); })
.appendTo(this.toolbar);
},
clear_buttons: function() {
this.toolbar && this.toolbar.empty();
$(".custom-menu").remove();
},
add_toolbar: function() {
if(!this.toolbar) {
this.toolbar = $('').appendTo(this.$w.find(".toolbar-area")).find(".nav");
}
},
add_button: function(label, click, icon) {
this.add_toolbar();
args = { label: label, icon:'' };
if(icon) {
args.icon = '';
}
this.buttons[label] = $(repl('\
%(icon)s %(label)s', args))
.appendTo(this.toolbar)
.find("a")
.click(click);
return this.buttons[label];
},
add_title_button: function(label, click, icon) {
args = { label: label, icon:'' };
if(icon) {
args.icon = '';
}
this.buttons[label] = $(repl('', args))
.appendTo(this.$w.find(".title-button-area"))
.click(click);
return this.buttons[label];
},
add_dropdown: function(label) {
this.add_toolbar();
this.buttons[label] = $('\
'
+label+' \
')
.appendTo(this.toolbar);
this.buttons[label].find(".dropdown-toggle").dropdown();
return this.buttons[label];
},
add_dropdown_button: function(parent, label, click, icon) {
var menu = $("#navbar-" + parent.toLowerCase());
if(!menu.find(".divider").length) {
$('').appendTo(menu);
}
return $('')
.appendTo(menu)
.find("a")
.click(function() {
click();
return false;
});
},
add_label: function(label) {
return $(""+label+" ")
.appendTo($("").appendTo(this.toolbar));
},
add_select: function(label, options) {
this.add_toolbar();
return $("