[commit] unified notifications
This commit is contained in:
parent
dd790a57ba
commit
4736c35662
@ -19,28 +19,6 @@ span, div, td, input, textarea, button, select {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar-new-comments {
|
|
||||||
margin: -3px 0px;
|
|
||||||
padding: 2px;
|
|
||||||
min-width: 20px;
|
|
||||||
text-align: center;
|
|
||||||
display: inline-block;
|
|
||||||
border-radius: 2px;
|
|
||||||
color: #999999;
|
|
||||||
background-color: #333131;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-new-comments:hover,
|
|
||||||
.navbar-new-comments:active,
|
|
||||||
.navbar-new-comments:focus {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-new-comments-true {
|
|
||||||
color: #fff;
|
|
||||||
background-color: #B00D07;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*extra size menus for recent*/
|
/*extra size menus for recent*/
|
||||||
.dropdown-menu#toolbar-recent, .dropdown-menu#toolbar-options, .dropdown-menu#toolbar-help{
|
.dropdown-menu#toolbar-recent, .dropdown-menu#toolbar-options, .dropdown-menu#toolbar-help{
|
||||||
min-width: 160px !important;
|
min-width: 160px !important;
|
||||||
|
@ -35,9 +35,6 @@ erpnext.startup.start = function() {
|
|||||||
// setup toolbar
|
// setup toolbar
|
||||||
erpnext.toolbar.setup();
|
erpnext.toolbar.setup();
|
||||||
|
|
||||||
// set interval for updates
|
|
||||||
erpnext.startup.set_periodic_updates();
|
|
||||||
|
|
||||||
// complete registration
|
// complete registration
|
||||||
if(in_list(user_roles,'System Manager') && (wn.boot.setup_complete=='No')) {
|
if(in_list(user_roles,'System Manager') && (wn.boot.setup_complete=='No')) {
|
||||||
wn.require("app/js/complete_setup.js");
|
wn.require("app/js/complete_setup.js");
|
||||||
@ -67,67 +64,6 @@ erpnext.startup.start = function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ========== Update Messages ============
|
|
||||||
erpnext.update_messages = function(reset) {
|
|
||||||
// Updates Team Messages
|
|
||||||
|
|
||||||
if(inList(['Guest'], user) || !wn.session_alive) { return; }
|
|
||||||
|
|
||||||
if(!reset) {
|
|
||||||
var set_messages = function(r) {
|
|
||||||
if(!r.exc) {
|
|
||||||
// This function is defined in toolbar.js
|
|
||||||
erpnext.toolbar.set_new_comments(r.message.unread_messages);
|
|
||||||
|
|
||||||
var show_in_circle = function(parent_id, msg) {
|
|
||||||
var parent = $('#'+parent_id);
|
|
||||||
if(parent) {
|
|
||||||
if(msg) {
|
|
||||||
parent.find('span:first').text(msg);
|
|
||||||
parent.toggle(true);
|
|
||||||
} else {
|
|
||||||
parent.toggle(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
show_in_circle('unread_messages', r.message.unread_messages);
|
|
||||||
show_in_circle('open_support_tickets', r.message.open_support_tickets);
|
|
||||||
show_in_circle('things_todo', r.message.things_todo);
|
|
||||||
show_in_circle('todays_events', r.message.todays_events);
|
|
||||||
show_in_circle('open_tasks', r.message.open_tasks);
|
|
||||||
show_in_circle('unanswered_questions', r.message.unanswered_questions);
|
|
||||||
show_in_circle('open_leads', r.message.open_leads);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
clearInterval(wn.updates.id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
wn.call({
|
|
||||||
method: 'startup.startup.get_global_status_messages',
|
|
||||||
type:"GET",
|
|
||||||
callback: set_messages
|
|
||||||
});
|
|
||||||
|
|
||||||
} else {
|
|
||||||
erpnext.toolbar.set_new_comments(0);
|
|
||||||
$('#unread_messages').toggle(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
erpnext.startup.set_periodic_updates = function() {
|
|
||||||
// Set interval for periodic updates of team messages
|
|
||||||
wn.updates = {};
|
|
||||||
|
|
||||||
if(wn.updates.id) {
|
|
||||||
clearInterval(wn.updates.id);
|
|
||||||
}
|
|
||||||
|
|
||||||
wn.updates.id = setInterval(erpnext.update_messages, 60000);
|
|
||||||
}
|
|
||||||
|
|
||||||
erpnext.hide_naming_series = function() {
|
erpnext.hide_naming_series = function() {
|
||||||
if(cur_frm.fields_dict.naming_series) {
|
if(cur_frm.fields_dict.naming_series) {
|
||||||
cur_frm.toggle_display("naming_series", cur_frm.doc.__islocal?true:false);
|
cur_frm.toggle_display("naming_series", cur_frm.doc.__islocal?true:false);
|
||||||
|
@ -30,15 +30,11 @@ erpnext.toolbar.setup = function() {
|
|||||||
$user.append('<li><a href="http://www.providesupport.com?messenger=iwebnotes" target="_blank">\
|
$user.append('<li><a href="http://www.providesupport.com?messenger=iwebnotes" target="_blank">\
|
||||||
'+wn._('Live Chat')+'</a></li>')
|
'+wn._('Live Chat')+'</a></li>')
|
||||||
|
|
||||||
|
|
||||||
$('.navbar .pull-right').append('\
|
|
||||||
<li><a href="#!messages" title="'+wn._('Unread Messages')
|
|
||||||
+'"><span class="navbar-new-comments"></span></a></li>');
|
|
||||||
|
|
||||||
erpnext.toolbar.set_new_comments();
|
erpnext.toolbar.set_new_comments();
|
||||||
}
|
}
|
||||||
|
|
||||||
erpnext.toolbar.set_new_comments = function(new_comments) {
|
erpnext.toolbar.set_new_comments = function(new_comments) {
|
||||||
|
return;
|
||||||
var navbar_nc = $('.navbar-new-comments');
|
var navbar_nc = $('.navbar-new-comments');
|
||||||
if(cint(new_comments)) {
|
if(cint(new_comments)) {
|
||||||
navbar_nc.addClass('navbar-new-comments-true')
|
navbar_nc.addClass('navbar-new-comments-true')
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import webnotes
|
import webnotes
|
||||||
|
|
||||||
queries = {
|
for_doctype = {
|
||||||
"Support Ticket": {"status":"Open"},
|
"Support Ticket": {"status":"Open"},
|
||||||
"Customer Issue": {"status":"Open"},
|
"Customer Issue": {"status":"Open"},
|
||||||
"Task": {"status":"Open"},
|
"Task": {"status":"Open"},
|
||||||
@ -29,4 +29,39 @@ queries = {
|
|||||||
"Timesheet": {"docstatus":0},
|
"Timesheet": {"docstatus":0},
|
||||||
"Time Log": {"status":"Draft"},
|
"Time Log": {"status":"Draft"},
|
||||||
"Time Log Batch": {"status":"Draft"},
|
"Time Log Batch": {"status":"Draft"},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def get_things_todo():
|
||||||
|
"""Returns a count of incomplete todos"""
|
||||||
|
incomplete_todos = webnotes.conn.sql("""\
|
||||||
|
SELECT COUNT(*) FROM `tabToDo`
|
||||||
|
WHERE IFNULL(checked, 0) = 0
|
||||||
|
AND (owner = %s or assigned_by=%s)""", (webnotes.session.user, webnotes.session.user))
|
||||||
|
return incomplete_todos[0][0]
|
||||||
|
|
||||||
|
def get_todays_events():
|
||||||
|
"""Returns a count of todays events in calendar"""
|
||||||
|
from webnotes.utils import nowdate
|
||||||
|
todays_events = webnotes.conn.sql("""\
|
||||||
|
SELECT COUNT(*) FROM `tabEvent`
|
||||||
|
WHERE owner = %s
|
||||||
|
AND event_type != 'Cancel'
|
||||||
|
AND %s between date(starts_on) and date(ends_on)""", (
|
||||||
|
webnotes.session.user, nowdate()))
|
||||||
|
return todays_events[0][0]
|
||||||
|
|
||||||
|
def get_unread_messages():
|
||||||
|
"returns unread (docstatus-0 messages for a user)"
|
||||||
|
return webnotes.conn.sql("""\
|
||||||
|
SELECT count(*)
|
||||||
|
FROM `tabComment`
|
||||||
|
WHERE comment_doctype IN ('My Company', 'Message')
|
||||||
|
AND comment_docname = %s
|
||||||
|
AND ifnull(docstatus,0)=0
|
||||||
|
""", webnotes.user.name)[0][0]
|
||||||
|
|
||||||
|
for_module = {
|
||||||
|
"To Do": get_things_todo,
|
||||||
|
"Calendar": get_todays_events,
|
||||||
|
"Messages": get_unread_messages
|
||||||
|
}
|
||||||
|
@ -1,75 +0,0 @@
|
|||||||
# ERPNext - web based ERP (http://erpnext.com)
|
|
||||||
# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
import webnotes
|
|
||||||
|
|
||||||
def get_unread_messages():
|
|
||||||
"returns unread (docstatus-0 messages for a user)"
|
|
||||||
return webnotes.conn.sql("""\
|
|
||||||
SELECT count(*)
|
|
||||||
FROM `tabComment`
|
|
||||||
WHERE comment_doctype IN ('My Company', 'Message')
|
|
||||||
AND comment_docname = %s
|
|
||||||
AND ifnull(docstatus,0)=0
|
|
||||||
""", webnotes.user.name)[0][0]
|
|
||||||
|
|
||||||
def get_open_support_tickets():
|
|
||||||
"""Returns a count of open support tickets"""
|
|
||||||
open_support_tickets = webnotes.conn.sql("""\
|
|
||||||
SELECT COUNT(*) FROM `tabSupport Ticket`
|
|
||||||
WHERE status = 'Open'""")
|
|
||||||
return open_support_tickets[0][0]
|
|
||||||
|
|
||||||
def get_open_tasks():
|
|
||||||
"""Returns a count of open tasks"""
|
|
||||||
return webnotes.conn.sql("""\
|
|
||||||
SELECT COUNT(*) FROM `tabTask`
|
|
||||||
WHERE status = 'Open'""")[0][0]
|
|
||||||
|
|
||||||
def get_things_todo():
|
|
||||||
"""Returns a count of incomplete todos"""
|
|
||||||
incomplete_todos = webnotes.conn.sql("""\
|
|
||||||
SELECT COUNT(*) FROM `tabToDo`
|
|
||||||
WHERE IFNULL(checked, 0) = 0
|
|
||||||
AND (owner = %s or assigned_by=%s)""", (webnotes.session.user, webnotes.session.user))
|
|
||||||
return incomplete_todos[0][0]
|
|
||||||
|
|
||||||
def get_todays_events():
|
|
||||||
"""Returns a count of todays events in calendar"""
|
|
||||||
from webnotes.utils import nowdate
|
|
||||||
todays_events = webnotes.conn.sql("""\
|
|
||||||
SELECT COUNT(*) FROM `tabEvent`
|
|
||||||
WHERE owner = %s
|
|
||||||
AND event_type != 'Cancel'
|
|
||||||
AND %s between date(starts_on) and date(ends_on)""", (
|
|
||||||
webnotes.session.user, nowdate()))
|
|
||||||
return todays_events[0][0]
|
|
||||||
|
|
||||||
def get_open_leads():
|
|
||||||
return webnotes.conn.sql("""select count(*) from tabLead
|
|
||||||
where status='Open'""")[0][0]
|
|
||||||
|
|
||||||
@webnotes.whitelist()
|
|
||||||
def get_global_status_messages(arg=None):
|
|
||||||
return {
|
|
||||||
'unread_messages': get_unread_messages(),
|
|
||||||
'open_support_tickets': get_open_support_tickets(),
|
|
||||||
'things_todo': get_things_todo(),
|
|
||||||
'todays_events': get_todays_events(),
|
|
||||||
'open_tasks': get_open_tasks(),
|
|
||||||
'open_leads': get_open_leads()
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user