Bläddra i källkod

added todo

version-14
Rushabh Mehta 13 år sedan
förälder
incheckning
42cea47d3a
8 ändrade filer med 80 tillägg och 79 borttagningar
  1. +5
    -4
      css/bootstrap/icons.css
  2. +39
    -0
      css/bootstrap/label.css
  3. +0
    -1
      js/legacy/app.js
  4. +1
    -0
      js/legacy/utils/handler.js
  5. +18
    -11
      js/wn/ui/toolbar.min.js
  6. +17
    -22
      js/wn/ui/toolbar/toolbar.js
  7. +0
    -1
      py/webnotes/boot.py
  8. +0
    -40
      py/webnotes/widgets/menus.py

+ 5
- 4
css/bootstrap/icons.css Visa fil

@@ -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;


+ 39
- 0
css/bootstrap/label.css Visa fil

@@ -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;
}

+ 0
- 1
js/legacy/app.js Visa fil

@@ -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;




+ 1
- 0
js/legacy/utils/handler.js Visa fil

@@ -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);


+ 18
- 11
js/wn/ui/toolbar.min.js Visa fil

@@ -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;}

+ 17
- 22
js/wn/ui/toolbar/toolbar.js Visa fil

@@ -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() {


+ 0
- 1
py/webnotes/boot.py Visa fil

@@ -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


+ 0
- 40
py/webnotes/widgets/menus.py Visa fil

@@ -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


Laddar…
Avbryt
Spara