// Copyright (c) 2012 Web Notes Technologies Pvt Ltd (http://erpnext.com)
//
// MIT License (MIT)
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
// PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
// OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
// assign to is lined to todo
// refresh - load todos
// create - new todo
// delete to do
wn.provide("wn.ui.form");
wn.ui.form.AssignTo = Class.extend({
init: function(opts) {
$.extend(this, opts);
var me = this;
this.wrapper = $('
').appendTo(this.parent);
this.$list = this.wrapper.find(".alert-list");
this.wrapper.find(".btn").click(function() {
me.add();
});
},
refresh: function() {
if(this.frm.doc.__islocal) {
this.parent.toggle(false);
return;
}
this.parent.toggle(true);
var me = this;
wn.call({
method: 'webnotes.widgets.form.assign_to.get',
type: "GET",
args: {
doctype: me.frm.doctype,
name: me.frm.docname
},
callback: function(r) {
me.render(r.message)
}
})
},
render: function(d) {
var me = this;
this.$list.empty();
if(this.dialog) {
this.dialog.hide();
}
for(var i=0; i\
%(avatar)s %(fullname)s \
×', d[i]))
.appendTo(this.$list);
this.$list.find(".avatar").css("margin-top", "-7px")
this.$list.find('.avatar img').centerImage();
}
// set remove
this.$list.find('a.close').click(function() {
wn.call({
method:'webnotes.widgets.form.assign_to.remove',
args: {
doctype: me.frm.doctype,
name: me.frm.docname,
assign_to: $(this).attr('data-owner')
},
callback:function(r,rt) {me.render(r.message);}
});
return false;
});
},
add: function() {
var me = this;
if(!me.dialog) {
me.dialog = new wn.ui.Dialog({
title: wn._('Add to To Do'),
width: 350,
fields: [
{fieldtype:'Link', fieldname:'assign_to', options:'Profile',
label:wn._("Assign To"),
description:wn._("Add to To Do List of"), reqd:true},
{fieldtype:'Data', fieldname:'description', label:wn._("Comment")},
{fieldtype:'Date', fieldname:'date', label: wn._("Complete By")},
{fieldtype:'Select', fieldname:'priority', label: wn._("Priority"),
options:'Low\nMedium\nHigh', 'default':'Medium'},
{fieldtype:'Check', fieldname:'notify', label: wn._("Notify By Email")},
{fieldtype:'Button', label:wn._("Add"), fieldname:'add_btn'}
]
});
me.dialog.fields_dict.add_btn.input.onclick = function() {
var assign_to = me.dialog.fields_dict.assign_to.get_value();
if(assign_to) {
wn.call({
method:'webnotes.widgets.form.assign_to.add',
args: {
doctype: me.frm.doctype,
name: me.frm.docname,
assign_to: assign_to,
description: me.dialog.fields_dict.description.get_value(),
priority: me.dialog.fields_dict.priority.get_value(),
date: me.dialog.fields_dict.date.get_value(),
notify: me.dialog.fields_dict.notify.get_value()
},
callback: function(r,rt) {
if(!r.exc) {
if(cint(me.dialog.fields_dict.notify.get_value()))
msgprint("Email sent to " + assign_to);
me.render(r.message);
}
},
btn: this
});
}
}
me.dialog.fields_dict.assign_to.get_query = function() {
return "select name, concat_ws(' ', first_name, middle_name, last_name) \
from `tabProfile` where ifnull(enabled, 0)=1 and docstatus < 2 and \
name not in ('Administrator', 'Guest') and (%(key)s like \"%s\" or \
concat_ws(' ', first_name, middle_name, last_name) like \"%%%s\") \
order by \
case when name like \"%s%%\" then 0 else 1 end, \
case when concat_ws(' ', first_name, middle_name, last_name) \
like \"%s%%\" then 0 else 1 end, \
name asc limit 50";
};
}
me.dialog.clear();
me.dialog.show();
}
});