@@ -1,18 +1,19 @@ | |||||
[class^="icon-"] { | |||||
[class^="icon-"], [class*=" icon-"] { | |||||
display: inline-block; | display: inline-block; | ||||
width: 14px; | width: 14px; | ||||
height: 14px; | height: 14px; | ||||
line-height: 14px; | |||||
vertical-align: text-top; | vertical-align: text-top; | ||||
background-image: url(../img/glyphicons-halflings.png); | |||||
background-image: url("../lib/images/icons/glyphicons-halflings.png"); | |||||
background-position: 14px 14px; | background-position: 14px 14px; | ||||
background-repeat: no-repeat; | background-repeat: no-repeat; | ||||
*margin-right: .3em; | *margin-right: .3em; | ||||
} | } | ||||
[class^="icon-"]:last-child { | |||||
[class^="icon-"]:last-child, [class*=" icon-"]:last-child { | |||||
*margin-left: 0; | *margin-left: 0; | ||||
} | } | ||||
.icon-white { | .icon-white { | ||||
background-image: url(../img/glyphicons-halflings-white.png); | |||||
background-image: url("../lib/images/icons/glyphicons-halflings-white.png"); | |||||
} | } | ||||
.icon-glass { | .icon-glass { | ||||
background-position: 0 0; | background-position: 0 0; | ||||
@@ -0,0 +1,39 @@ | |||||
.label { | |||||
padding: 2px 4px 3px; | |||||
font-size: 11.049999999999999px; | |||||
font-weight: bold; | |||||
color: #ffffff; | |||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); | |||||
background-color: #999999; | |||||
-webkit-border-radius: 3px; | |||||
-moz-border-radius: 3px; | |||||
border-radius: 3px; | |||||
} | |||||
.label:hover { | |||||
color: #ffffff; | |||||
text-decoration: none; | |||||
} | |||||
.label-important { | |||||
background-color: #b94a48; | |||||
} | |||||
.label-important:hover { | |||||
background-color: #953b39; | |||||
} | |||||
.label-warning { | |||||
background-color: #f89406; | |||||
} | |||||
.label-warning:hover { | |||||
background-color: #c67605; | |||||
} | |||||
.label-success { | |||||
background-color: #468847; | |||||
} | |||||
.label-success:hover { | |||||
background-color: #356635; | |||||
} | |||||
.label-info { | |||||
background-color: #3a87ad; | |||||
} | |||||
.label-info:hover { | |||||
background-color: #2d6987; | |||||
} |
@@ -23,7 +23,6 @@ function startup() { | |||||
user_defaults = profile.defaults; | user_defaults = profile.defaults; | ||||
user_roles = profile.roles; | user_roles = profile.roles; | ||||
user_email = profile.email; | user_email = profile.email; | ||||
profile.start_items = r.start_items; | |||||
home_page = r.home_page; | home_page = r.home_page; | ||||
_p.letter_heads = r.letter_heads; | _p.letter_heads = r.letter_heads; | ||||
@@ -147,6 +147,7 @@ function $c_page(module, page, method, arg, call_back, no_spinner, freeze_msg, b | |||||
// generic server call (call page, object) | // generic server call (call page, object) | ||||
wn.call = function(args) { | wn.call = function(args) { | ||||
if(!args.args) args.args = {}; | |||||
if(args.module && args.page) { | if(args.module && args.page) { | ||||
$c_page(args.module, args.page, args.method, args.args, args.callback, | $c_page(args.module, args.page, args.method, args.args, args.callback, | ||||
args.no_spinner, false, args.btn); | args.no_spinner, false, args.btn); | ||||
@@ -1,3 +1,4 @@ | |||||
/* | /* | ||||
* lib/js/wn/ui/toolbar/selector_dialog.js | * lib/js/wn/ui/toolbar/selector_dialog.js | ||||
*/ | */ | ||||
@@ -33,8 +34,7 @@ if(rd[1]){var dt=rd[0];var dn=rd[1];this.add(dt,dn,0);}}}}); | |||||
/* | /* | ||||
* lib/js/wn/ui/toolbar/toolbar.js | * lib/js/wn/ui/toolbar/toolbar.js | ||||
*/ | */ | ||||
wn.ui.toolbar.Toolbar=Class.extend({init:function(){this.make();this.make_home();this.make_document();wn.ui.toolbar.recent=new wn.ui.toolbar.RecentDocs();if(in_list(user_roles,'Administrator')) | |||||
this.make_options();this.make_tools();this.set_user_name();this.make_logout();$('.dropdown-toggle').dropdown();$(document).trigger('toolbar_setup');},make:function(){$('header').append('<div class="navbar navbar-fixed-top">\ | |||||
wn.ui.toolbar.Toolbar=Class.extend({init:function(){this.make();this.make_home();this.make_document();this.make_apps();wn.ui.toolbar.recent=new wn.ui.toolbar.RecentDocs();this.make_tools();this.set_user_name();this.make_logout();$('.dropdown-toggle').dropdown();$(document).trigger('toolbar_setup');},make:function(){$('header').append('<div class="navbar navbar-fixed-top">\ | |||||
<div class="navbar-inner">\ | <div class="navbar-inner">\ | ||||
<div class="container">\ | <div class="container">\ | ||||
<a class="brand"></a>\ | <a class="brand"></a>\ | ||||
@@ -51,13 +51,17 @@ this.make_options();this.make_tools();this.set_user_name();this.make_logout();$( | |||||
</ul>\ | </ul>\ | ||||
</div>\ | </div>\ | ||||
</div>\ | </div>\ | ||||
</div>');},make_home:function(){$('.navbar .nav:first').append('<li data-name="navbar-home"><a href="#'+home_page+'">Home</a></li>')},make_document:function(){wn.ui.toolbar.new_dialog=new wn.ui.toolbar.NewDialog();wn.ui.toolbar.search=new wn.ui.toolbar.Search();wn.ui.toolbar.report=new wn.ui.toolbar.Report();$('.navbar .nav:first').append('<li class="dropdown">\ | |||||
</div>');},make_home:function(){$('.navbar .nav:first').append('<li data-name="navbar-home">\ | |||||
<a href="#!'+home_page+'">Home</a></li>');$('.navbar .brand').attr('href',"#!"+home_page);},make_document:function(){wn.ui.toolbar.new_dialog=new wn.ui.toolbar.NewDialog();wn.ui.toolbar.search=new wn.ui.toolbar.Search();wn.ui.toolbar.report=new wn.ui.toolbar.Report();$('.navbar .nav:first').append('<li class="dropdown">\ | |||||
<a class="dropdown-toggle" href="#" data-toggle="dropdown"\ | <a class="dropdown-toggle" href="#" data-toggle="dropdown"\ | ||||
onclick="return false;">Document<b class="caret"></b></a>\ | onclick="return false;">Document<b class="caret"></b></a>\ | ||||
<ul class="dropdown-menu" id="toolbar-document">\ | <ul class="dropdown-menu" id="toolbar-document">\ | ||||
<li><a href="#" onclick="return wn.ui.toolbar.new_dialog.show();">New</a></li>\ | |||||
<li><a href="#" onclick="return wn.ui.toolbar.search.show();">Search</a></li>\ | |||||
<li><a href="#" onclick="return wn.ui.toolbar.report.show();">Report</a></li>\ | |||||
<li><a href="#" onclick="return wn.ui.toolbar.new_dialog.show();">\ | |||||
<i class="icon-plus"></i> New</a></li>\ | |||||
<li><a href="#" onclick="return wn.ui.toolbar.search.show();">\ | |||||
<i class="icon-search"></i> Search</a></li>\ | |||||
<li><a href="#" onclick="return wn.ui.toolbar.report.show();">\ | |||||
<i class="icon-list"></i> Report</a></li>\ | |||||
</ul>\ | </ul>\ | ||||
</li>');},make_tools:function(){$('.navbar .nav:first').append('<li class="dropdown">\ | </li>');},make_tools:function(){$('.navbar .nav:first').append('<li class="dropdown">\ | ||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#" \ | <a class="dropdown-toggle" data-toggle="dropdown" href="#" \ | ||||
@@ -69,13 +73,16 @@ this.make_options();this.make_tools();this.set_user_name();this.make_logout();$( | |||||
</ul>\ | </ul>\ | ||||
</li>');if(has_common(user_roles,['Administrator','System Manager'])){$('#toolbar-tools').append('<li><a href="#" \ | </li>');if(has_common(user_roles,['Administrator','System Manager'])){$('#toolbar-tools').append('<li><a href="#" \ | ||||
onclick="return wn.ui.toolbar.download_backup();">\ | onclick="return wn.ui.toolbar.download_backup();">\ | ||||
Download Backup</a></li>');}},make_options:function(){$('.navbar .nav:first').append('<li class="dropdown">\ | |||||
Download Backup</a></li>');}},make_apps:function(){$('.navbar .nav:first').append('<li class="dropdown">\ | |||||
<a class="dropdown-toggle" data-toggle="dropdown" \ | <a class="dropdown-toggle" data-toggle="dropdown" \ | ||||
href="#" onclick="return false;">Options<b class="caret"></b></a>\ | |||||
<ul class="dropdown-menu" id="toolbar-options">\ | |||||
href="#" onclick="return false;">Apps<b class="caret"></b></a>\ | |||||
<ul class="dropdown-menu">\ | |||||
<li><a href="#!messages">Messages</a></li>\ | |||||
<li><a href="#!todo">To Do</a></li>\ | |||||
<li><a href="#!calendar">Calendar</a></li>\ | |||||
<li><a href="#!questions">Knowledge Base</a></li>\ | |||||
</ul>\ | </ul>\ | ||||
</li>');profile.start_items.sort(function(a,b){return(a[4]-b[4])});for(var i=0;i<profile.start_items.length;i++){var d=profile.start_items[i];var ispage=d[0]=='Page';$('#toolbar-options').append(repl('<li><a href="#%(type)s%(dt)s%(dn)s">\ | |||||
%(dn)s</a></li>',{type:(ispage?'':'Form/'),dt:(ispage?'':(d[0]+'/')),dn:d[5]||d[1]}));}},set_user_name:function(){var fn=user_fullname;if(fn.length>15)fn=fn.substr(0,12)+'...';$('#toolbar-user-link').html(fn+'<b class="caret"></b>');},make_logout:function(){$('#toolbar-user').append('<li><a href="#" onclick="return logout();">Logout</a></li>');}});wn.ui.toolbar.clear_cache=function(){localStorage&&localStorage.clear();$c('webnotes.session_cache.clear',{},function(r,rt){show_alert(r.message);});return false;} | |||||
</li>');},set_user_name:function(){var fn=user_fullname;if(fn.length>15)fn=fn.substr(0,12)+'...';$('#toolbar-user-link').html(fn+'<b class="caret"></b>');},make_logout:function(){$('#toolbar-user').append('<li><a href="#" onclick="return logout();">Logout</a></li>');}});wn.ui.toolbar.clear_cache=function(){localStorage&&localStorage.clear();$c('webnotes.session_cache.clear',{},function(r,rt){show_alert(r.message);});return false;} | |||||
wn.ui.toolbar.download_backup=function(){$c('webnotes.utils.backups.get_backup',{},function(r,rt){});return false;} | wn.ui.toolbar.download_backup=function(){$c('webnotes.utils.backups.get_backup',{},function(r,rt){});return false;} | ||||
wn.ui.toolbar.show_about=function(){try{wn.require('lib/js/wn/misc/about.js');wn.ui.misc.about();}catch(e){console.log(e);} | wn.ui.toolbar.show_about=function(){try{wn.require('lib/js/wn/misc/about.js');wn.ui.misc.about();}catch(e){console.log(e);} | ||||
return false;} | return false;} |
@@ -26,9 +26,8 @@ wn.ui.toolbar.Toolbar = Class.extend({ | |||||
this.make(); | this.make(); | ||||
this.make_home(); | this.make_home(); | ||||
this.make_document(); | this.make_document(); | ||||
this.make_apps(); | |||||
wn.ui.toolbar.recent = new wn.ui.toolbar.RecentDocs(); | wn.ui.toolbar.recent = new wn.ui.toolbar.RecentDocs(); | ||||
if(in_list(user_roles, 'Administrator')) | |||||
this.make_options(); | |||||
this.make_tools(); | this.make_tools(); | ||||
this.set_user_name(); | this.set_user_name(); | ||||
this.make_logout(); | this.make_logout(); | ||||
@@ -57,7 +56,9 @@ wn.ui.toolbar.Toolbar = Class.extend({ | |||||
</div>'); | </div>'); | ||||
}, | }, | ||||
make_home: function() { | make_home: function() { | ||||
$('.navbar .nav:first').append('<li data-name="navbar-home"><a href="#'+home_page+'">Home</a></li>') | |||||
$('.navbar .nav:first').append('<li data-name="navbar-home">\ | |||||
<a href="#!'+home_page+'">Home</a></li>'); | |||||
$('.navbar .brand').attr('href', "#!" + home_page); | |||||
}, | }, | ||||
make_document: function() { | make_document: function() { | ||||
@@ -68,9 +69,12 @@ wn.ui.toolbar.Toolbar = Class.extend({ | |||||
<a class="dropdown-toggle" href="#" data-toggle="dropdown"\ | <a class="dropdown-toggle" href="#" data-toggle="dropdown"\ | ||||
onclick="return false;">Document<b class="caret"></b></a>\ | onclick="return false;">Document<b class="caret"></b></a>\ | ||||
<ul class="dropdown-menu" id="toolbar-document">\ | <ul class="dropdown-menu" id="toolbar-document">\ | ||||
<li><a href="#" onclick="return wn.ui.toolbar.new_dialog.show();">New</a></li>\ | |||||
<li><a href="#" onclick="return wn.ui.toolbar.search.show();">Search</a></li>\ | |||||
<li><a href="#" onclick="return wn.ui.toolbar.report.show();">Report</a></li>\ | |||||
<li><a href="#" onclick="return wn.ui.toolbar.new_dialog.show();">\ | |||||
<i class="icon-plus"></i> New</a></li>\ | |||||
<li><a href="#" onclick="return wn.ui.toolbar.search.show();">\ | |||||
<i class="icon-search"></i> Search</a></li>\ | |||||
<li><a href="#" onclick="return wn.ui.toolbar.report.show();">\ | |||||
<i class="icon-list"></i> Report</a></li>\ | |||||
</ul>\ | </ul>\ | ||||
</li>'); | </li>'); | ||||
}, | }, | ||||
@@ -92,26 +96,17 @@ wn.ui.toolbar.Toolbar = Class.extend({ | |||||
Download Backup</a></li>'); | Download Backup</a></li>'); | ||||
} | } | ||||
}, | }, | ||||
make_options: function() { | |||||
make_apps: function() { | |||||
$('.navbar .nav:first').append('<li class="dropdown">\ | $('.navbar .nav:first').append('<li class="dropdown">\ | ||||
<a class="dropdown-toggle" data-toggle="dropdown" \ | <a class="dropdown-toggle" data-toggle="dropdown" \ | ||||
href="#" onclick="return false;">Options<b class="caret"></b></a>\ | |||||
<ul class="dropdown-menu" id="toolbar-options">\ | |||||
href="#" onclick="return false;">Apps<b class="caret"></b></a>\ | |||||
<ul class="dropdown-menu">\ | |||||
<li><a href="#!messages">Messages</a></li>\ | |||||
<li><a href="#!todo">To Do</a></li>\ | |||||
<li><a href="#!calendar">Calendar</a></li>\ | |||||
<li><a href="#!questions">Knowledge Base</a></li>\ | |||||
</ul>\ | </ul>\ | ||||
</li>'); | </li>'); | ||||
profile.start_items.sort(function(a,b){return (a[4]-b[4])}); | |||||
for(var i=0;i< profile.start_items.length;i++) { | |||||
var d = profile.start_items[i]; | |||||
var ispage = d[0]=='Page'; | |||||
$('#toolbar-options').append(repl('<li><a href="#%(type)s%(dt)s%(dn)s">\ | |||||
%(dn)s</a></li>', { | |||||
type : (ispage ? '' : 'Form/'), | |||||
dt : (ispage ? '' : (d[0] + '/')), | |||||
dn : d[5] || d[1] | |||||
})); | |||||
} | |||||
}, | }, | ||||
set_user_name: function() { | set_user_name: function() { | ||||
@@ -50,7 +50,6 @@ def get_bootinfo(): | |||||
if webnotes.session['user'] != 'Guest': | if webnotes.session['user'] != 'Guest': | ||||
import webnotes.widgets.menus | import webnotes.widgets.menus | ||||
bootinfo['start_items'] = webnotes.widgets.menus.get_menu_items() | |||||
bootinfo['dt_labels'] = get_dt_labels() | bootinfo['dt_labels'] = get_dt_labels() | ||||
# home page | # home page | ||||
@@ -31,64 +31,24 @@ from webnotes.utils import cint, cstr | |||||
sql = webnotes.conn.sql | sql = webnotes.conn.sql | ||||
@webnotes.whitelist() | |||||
def get_menu_items(): | |||||
""" | |||||
Returns a list of items to show in `Options` of the Web Notes Toolbar | |||||
List contains Pages and Single DocTypes | |||||
""" | |||||
import webnotes.utils | |||||
rl = webnotes.user.get_roles() + [webnotes.session['user']] | |||||
role_options = ["role = '"+r+"'" for r in rl] | |||||
sql = webnotes.conn.sql | |||||
menuitems = [] | |||||
# pages | |||||
pages = sql("select distinct parent from `tabPage Role` where docstatus!=2 and (%s)" % (' OR '.join(role_options))) | |||||
for p in pages: | |||||
tmp = sql("select icon, parent_node, menu_index, show_in_menu from tabPage where name = '%s'" % p[0]) | |||||
if tmp and tmp[0][3]: | |||||
menuitems.append(['Page', p[0] or '', tmp[0][1] or '', tmp[0][0] or '', webnotes.utils.cint(tmp[0][2])]) | |||||
# singles | |||||
tmp = sql("select smallicon, parent_node, menu_index, name from tabDocType where (show_in_menu = 1 and show_in_menu is not null)") | |||||
singles = {} | |||||
for t in tmp: singles[t[3]] = t | |||||
for p in webnotes.user.can_read: | |||||
tmp = singles.get(p, None) | |||||
if tmp: menuitems.append([p, p, tmp[1] or '', tmp[0] or '', int(tmp[2] or 0)]) | |||||
return menuitems | |||||
@webnotes.whitelist() | @webnotes.whitelist() | ||||
def has_result(): | def has_result(): | ||||
"""return Yes if the given dt has any records""" | """return Yes if the given dt has any records""" | ||||
return sql("select name from `tab%s` limit 1" % \ | return sql("select name from `tab%s` limit 1" % \ | ||||
webnotes.form_dict.get('dt')) and 'Yes' or 'No' | webnotes.form_dict.get('dt')) and 'Yes' or 'No' | ||||
# -------------------------------------------------------------- | |||||
def is_submittable(dt): | def is_submittable(dt): | ||||
return sql("select name from tabDocPerm where parent=%s and ifnull(submit,0)=1 and docstatus<1 limit 1", dt) | return sql("select name from tabDocPerm where parent=%s and ifnull(submit,0)=1 and docstatus<1 limit 1", dt) | ||||
# -------------------------------------------------------------- | |||||
def can_cancel(dt): | def can_cancel(dt): | ||||
return sql('select name from tabDocPerm where parent="%s" and ifnull(cancel,0)=1 and docstatus<1 and role in ("%s") limit 1' % (dt, '", "'.join(webnotes.user.get_roles()))) | return sql('select name from tabDocPerm where parent="%s" and ifnull(cancel,0)=1 and docstatus<1 and role in ("%s") limit 1' % (dt, '", "'.join(webnotes.user.get_roles()))) | ||||
# -------------------------------------------------------------- | |||||
def get_dt_trend(dt): | def get_dt_trend(dt): | ||||
ret = {} | ret = {} | ||||
for r in sql("select datediff(now(),modified), count(*) from `tab%s` where datediff(now(),modified) between 0 and 30 group by date(modified)" % dt): | for r in sql("select datediff(now(),modified), count(*) from `tab%s` where datediff(now(),modified) between 0 and 30 group by date(modified)" % dt): | ||||
ret[cint(r[0])] = cint(r[1]) | ret[cint(r[0])] = cint(r[1]) | ||||
return ret | return ret | ||||
# -------------------------------------------------------------- | |||||
def get_columns(out, sf, fl, dt, tag_fields): | def get_columns(out, sf, fl, dt, tag_fields): | ||||
if not fl: | if not fl: | ||||
fl = sf | fl = sf | ||||