+++ /dev/null
-<?xml version="1.0"?>
-<openerp>
- <data>
- <record id="view_calendar_contacts" model="ir.ui.view">
- <field name="name">My Coworkers</field>
- <field name="model">calendar.contacts</field>
- <field name="arch" type="xml">
- <tree string="contacts" editable="bottom">
- <field name="partner_id"/>
- </tree>
- </field>
- </record>
-
- <record id="action_calendar_contacts" model="ir.actions.act_window">
- <field name="name">Calendar Contacts</field>
- <field name="res_model">calendar.contacts</field>
- <field name="view_type">form</field>
- <field name="view_mode">tree</field>
- <field name="domain">[('user_id','=',uid)]</field>
- <field name="view_id" ref="view_calendar_contacts" />
- <field name="help" type="html">
- <p class="oe_view_nocontent_create">
- Click on "<b>create</b>" to select colleagues you want to see meetings.
- </p><p>
- Your colleagues will appear in the right list to see them in the calendar view. You will easily manage collaboration and meeting with them.
- </p>
- </field>
- </record>
-
- </data>
-</openerp>
\ No newline at end of file
openerp.calendar = function(instance) {
- var _t = instance.web._t;
+ var _t = instance.web._t,
+ _lt = instance.web._lt;
var QWeb = instance.web.qweb;
instance.calendar = {};
+function reload_favorite_list(result) {
+ var self = current = result;
+ if (result.view) {
+ self = result.view;
+ }
+ new instance.web.Model("res.users").query(["partner_id"]).filter([["id", "=",self.dataset.context.uid]]).first()
+ .done(
+ function(result) {
+ var sidebar_items = {};
+ var filter_value = result.partner_id[0];
+ var filter_item = {
+ value: filter_value,
+ label: result.partner_id[1] + _lt(" [Me]"),
+ color: self.get_color(filter_value),
+ avatar_model: self.avatar_model,
+ is_checked: true,
+ is_remove: false,
+ };
+
+ sidebar_items[0] = filter_item ;
+ filter_item = {
+ value: -1,
+ label: _lt("Everybody's calendars"),
+ color: self.get_color(-1),
+ avatar_model: self.avatar_model,
+ is_checked: false
+ };
+ sidebar_items[-1] = filter_item ;
+ //Get my coworkers/contacts
+ new instance.web.Model("calendar.contacts").query(["partner_id"]).filter([["user_id", "=",self.dataset.context.uid]]).all().then(function(result) {
+ _.each(result, function(item) {
+ filter_value = item.partner_id[0];
+ filter_item = {
+ value: filter_value,
+ label: item.partner_id[1],
+ color: self.get_color(filter_value),
+ avatar_model: self.avatar_model,
+ is_checked: true
+ };
+ sidebar_items[filter_value] = filter_item ;
+ });
+ self.all_filters = sidebar_items;
+ self.now_filter_ids = $.map(self.all_filters, function(o) { return o.value; });
+
+ self.sidebar.filter.events_loaded(self.all_filters);
+ self.sidebar.filter.set_filters();
+ self.sidebar.filter.set_distroy_filters();
+ self.sidebar.filter.addInputBox();
+ self.sidebar.filter.destroy_filter();
+ }).done(function () {
+ self.$calendar.fullCalendar('refetchEvents');
+ if (current.ir_model_m2o) {
+ current.ir_model_m2o.set_value(false);
+ }
+ });
+ });
+ }
+ instance.web_calendar.CalendarView.include({
+ extraSideBar: function(){
+ this._super();
+ if (this.useContacts){
+ new reload_favorite_list(this);
+ }
+ }
+ });
+
+ instance.web_calendar.SidebarFilter.include({
+ set_distroy_filters: function() {
+ var self = this;
+ // When mouse-enter the favorite list it will show the 'X' for removing partner from the favorite list.
+ if (self.view.useContacts){
+ self.$('.oe_calendar_all_responsibles').on('mouseenter mouseleave', function(e) {
+ self.$('.oe_remove_follower').toggleClass('hidden', e.type == 'mouseleave');
+ });
+ }
+ },
+ addInputBox: function() {
+ var self = this;
+ if (this.dfm)
+ return;
+ this.dfm = new instance.web.form.DefaultFieldManager(self);
+ this.dfm.extend_field_desc({
+ partner_id: {
+ relation: "res.partner",
+ },
+ });
+ this.ir_model_m2o = new instance.web.form.FieldMany2One(self.dfm, {
+ attrs: {
+ class: 'oe_add_input_box',
+ name: "partner_id",
+ type: "many2one",
+ options: '{"no_open": True}',
+ placeholder: _t("Select Favorite Calendar"),
+ },
+ });
+ this.ir_model_m2o.insertAfter($('div.oe_calendar_filter'));
+ this.ir_model_m2o.on('change:value', self, function() {
+ self.add_filter();
+ });
+ },
+ add_filter: function() {
+ var self = this;
+ new instance.web.Model("res.users").query(["partner_id"]).filter([["id", "=",this.view.dataset.context.uid]]).first().done(function(result){
+ $.map(self.ir_model_m2o.display_value, function(element,index) {
+ if (result.partner_id[0] != index){
+ self.ds_message = new instance.web.DataSetSearch(self, 'calendar.contacts');
+ self.ds_message.call("create", [{'partner_id': index}]);
+ }
+ });
+ });
+ new reload_favorite_list(this);
+ },
+ destroy_filter: function(e) {
+ var self= this;
+ this.$(".oe_remove_follower").on('click', function(e) {
+ self.ds_message = new instance.web.DataSetSearch(self, 'calendar.contacts');
+ if (! confirm(_t("Do you really want to delete this filter from favorite?"))) { return false; }
+ var id = $(e.currentTarget)[0].dataset.id;
+ self.ds_message.call('search', [[['partner_id', '=', parseInt(id)]]]).then(function(record){
+ return self.ds_message.unlink(record);
+ }).done(function() {
+ new reload_favorite_list(self);
+ });
+ });
+ },
+ });
instance.web.WebClient = instance.web.WebClient.extend({
firstDay: translate.firstDay,
});
-
- if (this.useContacts) {
- //Get my Partner ID
-
- new instance.web.Model("res.users").query(["partner_id"]).filter([["id", "=",this.dataset.context.uid]]).first()
- .done(
- function(result) {
- var sidebar_items = {};
- var filter_value = result.partner_id[0];
- var filter_item = {
- value: filter_value,
- label: result.partner_id[1] + _lt(" [Me]"),
- color: self.get_color(filter_value),
- avatar_model: self.avatar_model,
- is_checked: true
- };
-
- sidebar_items[filter_value] = filter_item ;
- filter_item = {
- value: -1,
- label: _lt("Everybody's calendars"),
- color: self.get_color(-1),
- avatar_model: self.avatar_model,
- is_checked: false
- };
- sidebar_items[-1] = filter_item ;
- //Get my coworkers/contacts
- new instance.web.Model("calendar.contacts").query(["partner_id"]).filter([["user_id", "=",self.dataset.context.uid]]).all().then(function(result) {
- _.each(result, function(item) {
- filter_value = item.partner_id[0];
- filter_item = {
- value: filter_value,
- label: item.partner_id[1],
- color: self.get_color(filter_value),
- avatar_model: self.avatar_model,
- is_checked: true
- };
- sidebar_items[filter_value] = filter_item ;
- });
-
- self.all_filters = sidebar_items;
- self.now_filter_ids = $.map(self.all_filters, function(o) { return o.value; });
-
- self.sidebar.filter.events_loaded(self.all_filters);
- self.sidebar.filter.set_filters();
-
- self.sidebar.filter.addUpdateButton();
- }).done(function () {
- self.$calendar.fullCalendar('refetchEvents');
- });
- }
- );
- }
this.extraSideBar();
}
self.$calendar.fullCalendar(self.get_fc_init_options());
this.$el.html(QWeb.render('CalendarView.sidebar.responsible', { filters: filters }));
},
filter_click: function(e) {
- var self = this;
- self.view.all_filters[parseInt(e.target.value)].is_checked = e.target.checked;
+ var self = this;
+ if (self.view.all_filters[0] && e.target.value == self.view.all_filters[0].value) {
+ self.view.all_filters[0].is_checked = e.target.checked;
+ } else {
+ self.view.all_filters[parseInt(e.target.value)].is_checked = e.target.checked;
+ }
self.view.$calendar.fullCalendar('refetchEvents');
},
- addUpdateButton: function() {
- var self=this;
- this.$('div.oe_calendar_all_responsibles').append(QWeb.render('CalendarView.sidebar.button_add_contact'));
- this.$(".add_contacts_link_btn").on('click', function() {
- self.rpc("/web/action/load", {
- action_id: "calendar.action_calendar_contacts"
- }).then( function(result) { return self.do_action(result); });
- });
-
- },
});
};