From be85d2a1ba1b2365982ae68f166384d2e7cbf245 Mon Sep 17 00:00:00 2001 From: Ivan Yelizariev Date: Thu, 4 Aug 2016 15:01:02 +0500 Subject: [PATCH 1/4] [DOC] update categories to Discuss --- mail_check_immediately/__openerp__.py | 2 +- mail_delete_access_link/__openerp__.py | 2 +- mail_delete_odoo_footer/__openerp__.py | 2 +- mail_fix_553/__openerp__.py | 2 +- mail_fix_empty_body/__openerp__.py | 2 +- mail_fix_header_from/__openerp__.py | 2 +- mail_move_message/__openerp__.py | 2 +- mail_outgoing/__openerp__.py | 2 +- mail_partner_lang/__openerp__.py | 2 +- mail_todo_custom/__openerp__.py | 2 +- mail_wall_menu/__openerp__.py | 2 +- mass_mailing_extra/__openerp__.py | 2 +- res_partner_mails_count/__openerp__.py | 2 +- res_partner_strip_email/__openerp__.py | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/mail_check_immediately/__openerp__.py b/mail_check_immediately/__openerp__.py index 4ed2708..ba2c7bb 100644 --- a/mail_check_immediately/__openerp__.py +++ b/mail_check_immediately/__openerp__.py @@ -3,7 +3,7 @@ 'version' : '1.0.1', 'author' : 'IT-Projects LLC, Ivan Yelizariev', 'license': 'GPL-3', - 'category' : 'Social Network', + "category": "Discuss", 'website' : 'https://twitter.com/yelizariev', 'price': 9.00, 'currency': 'EUR', diff --git a/mail_delete_access_link/__openerp__.py b/mail_delete_access_link/__openerp__.py index 2b632e1..a6895e5 100644 --- a/mail_delete_access_link/__openerp__.py +++ b/mail_delete_access_link/__openerp__.py @@ -3,7 +3,7 @@ 'version' : '1.0.0', 'author' : 'IT-Projects LLC, Ivan Yelizariev', 'license': 'GPL-3', - 'category' : 'Social Network', + "category": "Discuss", 'website' : 'https://twitter.com/yelizariev', 'price': 9.00, 'currency': 'EUR', diff --git a/mail_delete_odoo_footer/__openerp__.py b/mail_delete_odoo_footer/__openerp__.py index 31acbe4..f04034a 100644 --- a/mail_delete_odoo_footer/__openerp__.py +++ b/mail_delete_odoo_footer/__openerp__.py @@ -3,7 +3,7 @@ 'version' : '1.0.0', 'author' : 'IT-Projects LLC, Ivan Yelizariev', 'license': 'GPL-3', - 'category' : 'Social Network', + "category": "Discuss", 'website' : 'https://yelizariev.github.io', 'depends' : ['mail_delete_access_link', 'mail_delete_sent_by_footer'], 'data':[ diff --git a/mail_fix_553/__openerp__.py b/mail_fix_553/__openerp__.py index e9620f7..ae3e6e5 100644 --- a/mail_fix_553/__openerp__.py +++ b/mail_fix_553/__openerp__.py @@ -3,7 +3,7 @@ "version" : "0.3", "author" : "IT-Projects LLC, Ivan Yelizariev", 'license': 'GPL-3', - "category" : "Social Network", + "category": "Discuss", "website" : "https://yelizariev.github.io", "depends" : ["base", "mail"], "data": ["data.xml"], diff --git a/mail_fix_empty_body/__openerp__.py b/mail_fix_empty_body/__openerp__.py index 9337fd5..e5031f4 100644 --- a/mail_fix_empty_body/__openerp__.py +++ b/mail_fix_empty_body/__openerp__.py @@ -3,7 +3,7 @@ 'version' : '1.0.0', 'author' : 'IT-Projects LLC, Ivan Yelizariev', 'license': 'GPL-3', - 'category': 'Social Network', + "category": "Discuss", 'website' : 'https://twitter.com/yelizariev', 'price': 9.00, 'currency': 'EUR', diff --git a/mail_fix_header_from/__openerp__.py b/mail_fix_header_from/__openerp__.py index d057ca9..2023021 100644 --- a/mail_fix_header_from/__openerp__.py +++ b/mail_fix_header_from/__openerp__.py @@ -3,7 +3,7 @@ "version" : "0.3", "author" : "IT-Projects LLC, Ivan Yelizariev", 'license': 'GPL-3', - "category" : "Social Network", + "category": "Discuss", "website" : "https://yelizariev.github.io", "description": """ Obsolete in odoo 8.0 since Sep 10, 2014 https://github.com/odoo/odoo/commit/f2cf6ced17d3477b8858e3a8f955a42cc8a629ff . You can install this module, if you use older version. diff --git a/mail_move_message/__openerp__.py b/mail_move_message/__openerp__.py index 5b2868e..ff3c087 100644 --- a/mail_move_message/__openerp__.py +++ b/mail_move_message/__openerp__.py @@ -3,7 +3,7 @@ 'version' : '1.0.4', 'author' : 'IT-Projects LLC, Ivan Yelizariev', 'license': 'GPL-3', - 'category' : 'Social Network', + "category": "Discuss", 'website' : 'https://twitter.com/yelizariev', 'price': 100.00, 'currency': 'EUR', diff --git a/mail_outgoing/__openerp__.py b/mail_outgoing/__openerp__.py index f79a3b4..e86852e 100644 --- a/mail_outgoing/__openerp__.py +++ b/mail_outgoing/__openerp__.py @@ -3,7 +3,7 @@ 'version' : '1.0.0', 'author' : 'IT-Projects LLC, Ivan Yelizariev', 'license': 'GPL-3', - 'category' : 'Social Network', + "category": "Discuss", 'website' : 'https://yelizariev.github.io', 'description': """ Allows to check outgoing mails, i.e. failed or delayed. diff --git a/mail_partner_lang/__openerp__.py b/mail_partner_lang/__openerp__.py index 1cd112a..5d04c95 100644 --- a/mail_partner_lang/__openerp__.py +++ b/mail_partner_lang/__openerp__.py @@ -3,7 +3,7 @@ 'version' : '1.0.0', 'author' : 'IT-Projects LLC, Ivan Yelizariev', 'license': 'GPL-3', - 'category' : 'Mail', + "category": "Discuss", 'website' : 'https://yelizariev.github.io', 'depends' : ['mail'], diff --git a/mail_todo_custom/__openerp__.py b/mail_todo_custom/__openerp__.py index 0d295e0..2b70a6b 100644 --- a/mail_todo_custom/__openerp__.py +++ b/mail_todo_custom/__openerp__.py @@ -5,7 +5,7 @@ 'author': 'IT-Projects LLC', 'license': 'GPL-3', 'website': "https://yelizariev.github.io", - 'category': 'Tools', + "category": "Discuss", 'depends': ['mail'], 'data': ['mail_todo_custom.xml'], 'demo': [], diff --git a/mail_wall_menu/__openerp__.py b/mail_wall_menu/__openerp__.py index 03e22ef..30d798e 100644 --- a/mail_wall_menu/__openerp__.py +++ b/mail_wall_menu/__openerp__.py @@ -3,7 +3,7 @@ 'version' : '1.0.0', 'author' : 'IT-Projects LLC, Ivan Yelizariev', 'license': 'GPL-3', - 'category' : 'Social Network', + "category": "Discuss", 'website' : 'https://yelizariev.github.io', 'description': """ Module creates special menu at Messaging section to show only gamification-like blocks there. diff --git a/mass_mailing_extra/__openerp__.py b/mass_mailing_extra/__openerp__.py index f26db7a..02aac3f 100644 --- a/mass_mailing_extra/__openerp__.py +++ b/mass_mailing_extra/__openerp__.py @@ -3,7 +3,7 @@ 'version' : '1.0.0', 'author' : 'IT-Projects LLC, Ivan Yelizariev', 'license': 'GPL-3', - 'category' : 'Mail', + "category": "Discuss", 'website' : 'https://yelizariev.github.io', 'description': """ Modules adds: diff --git a/res_partner_mails_count/__openerp__.py b/res_partner_mails_count/__openerp__.py index 8d66d84..a943466 100644 --- a/res_partner_mails_count/__openerp__.py +++ b/res_partner_mails_count/__openerp__.py @@ -2,7 +2,7 @@ { "name": """Partner mails count""", "summary": """Displays amount of incoming and outgoing partner mails.""", - "category": "Sales Management", + "category": "Discuss", "images": ['images/1.png'], "version": "1.0.0", diff --git a/res_partner_strip_email/__openerp__.py b/res_partner_strip_email/__openerp__.py index 0633988..a869523 100644 --- a/res_partner_strip_email/__openerp__.py +++ b/res_partner_strip_email/__openerp__.py @@ -9,7 +9,7 @@ # Categories can be used to filter modules in modules listing # Check https://github.com/odoo/odoo/blob/master/openerp/addons/base/module/module_data.xml # for the full list - 'category': 'Tools', + "category": "Discuss", 'version': '1.0.0', # any module necessary for this one to work correctly From d48927cbf788c8b70d78cb1cc1cda26783c5dedb Mon Sep 17 00:00:00 2001 From: Ivan Yelizariev Date: Thu, 4 Aug 2016 15:02:14 +0500 Subject: [PATCH 2/4] [DOC] add donation section --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 511745a..3228260 100644 --- a/README.md +++ b/README.md @@ -13,3 +13,7 @@ List of repositories: * https://github.com/it-projects-llc/l10n-addons * https://github.com/it-projects-llc/odoo-telegram * https://github.com/it-projects-llc/odoo-saas-tools + +Donation +======== +Feel free to support our efforts by purchasing [our mail modules at app store](https://apps.odoo.com/apps/modules/category/Discuss/browse?price=Paid&order=Newest&author=IT-Projects+LLC) From 4991ebe269b9b59fa8925d3764042c71477922cd Mon Sep 17 00:00:00 2001 From: Ivan Yelizariev Date: Thu, 4 Aug 2016 15:10:07 +0500 Subject: [PATCH 3/4] [REM] delete mail_delete_access_link (fix merging) --- mail_delete_access_link/__openerp__.py | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 mail_delete_access_link/__openerp__.py diff --git a/mail_delete_access_link/__openerp__.py b/mail_delete_access_link/__openerp__.py deleted file mode 100644 index a6895e5..0000000 --- a/mail_delete_access_link/__openerp__.py +++ /dev/null @@ -1,14 +0,0 @@ -{ - 'name' : 'Delete access link in email footer', - 'version' : '1.0.0', - 'author' : 'IT-Projects LLC, Ivan Yelizariev', - 'license': 'GPL-3', - "category": "Discuss", - 'website' : 'https://twitter.com/yelizariev', - 'price': 9.00, - 'currency': 'EUR', - 'depends' : ['mail'], - 'data':[ - ], - 'installable': True -} From 46669ad7c500d106a10194dc159999b10fcb1cfe Mon Sep 17 00:00:00 2001 From: Ivan Yelizariev Date: Thu, 4 Aug 2016 15:12:20 +0500 Subject: [PATCH 4/4] [REM] delete obsolete mail_wall_* modules --- mail_wall_custom/README.rst | 4 - mail_wall_custom/__init__.py | 1 - mail_wall_custom/__openerp__.py | 25 -- mail_wall_custom/data.xml | 402 ------------------ mail_wall_custom/models.py | 13 - mail_wall_custom/static/description/icon.png | Bin 2140 -> 0 bytes mail_wall_custom/views.xml | 20 - mail_wall_menu/__init__.py | 1 - mail_wall_menu/__openerp__.py | 18 - mail_wall_menu/mail_wall_menu_views.xml | 33 -- mail_wall_menu/models.py | 1 - mail_wall_menu/static/description/icon.png | Bin 2140 -> 0 bytes mail_wall_menu/static/lib/masonry.pkgd.min.js | 1 - .../static/src/css/mail_wall_menu.css | 29 -- .../static/src/js/mail_wall_menu.js | 36 -- mail_wall_widgets/__init__.py | 1 - mail_wall_widgets/__openerp__.py | 20 - mail_wall_widgets/models.py | 283 ------------ .../security/ir.model.access.csv | 2 - mail_wall_widgets/static/description/icon.png | Bin 2140 -> 0 bytes mail_wall_widgets/static/src/css/main.css | 58 --- mail_wall_widgets/static/src/js/main.js | 155 ------- mail_wall_widgets/static/src/xml/main.xml | 131 ------ mail_wall_widgets/views.xml | 105 ----- 24 files changed, 1339 deletions(-) delete mode 100644 mail_wall_custom/README.rst delete mode 100644 mail_wall_custom/__init__.py delete mode 100644 mail_wall_custom/__openerp__.py delete mode 100644 mail_wall_custom/data.xml delete mode 100644 mail_wall_custom/models.py delete mode 100644 mail_wall_custom/static/description/icon.png delete mode 100644 mail_wall_custom/views.xml delete mode 100644 mail_wall_menu/__init__.py delete mode 100644 mail_wall_menu/__openerp__.py delete mode 100644 mail_wall_menu/mail_wall_menu_views.xml delete mode 100644 mail_wall_menu/models.py delete mode 100644 mail_wall_menu/static/description/icon.png delete mode 100644 mail_wall_menu/static/lib/masonry.pkgd.min.js delete mode 100644 mail_wall_menu/static/src/css/mail_wall_menu.css delete mode 100644 mail_wall_menu/static/src/js/mail_wall_menu.js delete mode 100644 mail_wall_widgets/__init__.py delete mode 100644 mail_wall_widgets/__openerp__.py delete mode 100644 mail_wall_widgets/models.py delete mode 100644 mail_wall_widgets/security/ir.model.access.csv delete mode 100644 mail_wall_widgets/static/description/icon.png delete mode 100644 mail_wall_widgets/static/src/css/main.css delete mode 100644 mail_wall_widgets/static/src/js/main.js delete mode 100644 mail_wall_widgets/static/src/xml/main.xml delete mode 100644 mail_wall_widgets/views.xml diff --git a/mail_wall_custom/README.rst b/mail_wall_custom/README.rst deleted file mode 100644 index d9aad6e..0000000 --- a/mail_wall_custom/README.rst +++ /dev/null @@ -1,4 +0,0 @@ -Custom mail wall -================ - -Tested on Odoo 8.0 ab7b5d7732a7c222a0aea45bd173742acd47242d diff --git a/mail_wall_custom/__init__.py b/mail_wall_custom/__init__.py deleted file mode 100644 index bff786c..0000000 --- a/mail_wall_custom/__init__.py +++ /dev/null @@ -1 +0,0 @@ -import models diff --git a/mail_wall_custom/__openerp__.py b/mail_wall_custom/__openerp__.py deleted file mode 100644 index 98b7224..0000000 --- a/mail_wall_custom/__openerp__.py +++ /dev/null @@ -1,25 +0,0 @@ -{ - 'name' : 'Custom mail wall', - 'version' : '1.0.0', - 'author' : 'IT-Projects LLC, Ivan Yelizariev', - 'license': 'LGPL-3', - 'category' : 'Custom', - 'website' : 'https://yelizariev.github.io', - 'depends' : ['gamification', - 'gamification_extra', - 'hr', - 'sale', - 'sales_team', - 'crm', - 'calendar', - 'project', - 'mail_wall_widgets', - 'sale_mediation_custom', - 'access_custom', - ], - 'data':[ - 'views.xml', - 'data.xml', - ], - 'installable': False, -} diff --git a/mail_wall_custom/data.xml b/mail_wall_custom/data.xml deleted file mode 100644 index c6878f0..0000000 --- a/mail_wall_custom/data.xml +++ /dev/null @@ -1,402 +0,0 @@ - - - - - Average payment time - - - days - avg - progress - - - - lower - [('user_id','=', user.id),('state','in', ['done'])] - - - Average payment time [ALL] - - - days - avg - progress - - - - lower - [('state','in', ['done'])] - - - Average deal time - - - days - avg - progress - - - - lower - [('user_id','=', user.id), ('sales_funnel_type', 'in', ['won']), ('date_closed', '!=', False)] - - - Average deal time [ALL] - - - days - avg - progress - - - - lower - [('sales_funnel_type', 'in', ['won']), ('date_closed', '!=', False)] - - - Oldest lead - - - days - max - progress - lower - [('user_id','=', user.id), ('sales_funnel_type', '=', 'lead')] - - - - - Oldest lead [ALL] - - - days - max - progress - lower - [('sales_funnel_type', '=', 'lead')] - - - - - Oldest Opportunity - - - days - max - progress - lower - [('user_id','=', user.id), '|', ('sales_funnel_type', '=', 'quotation'),('sales_funnel_type', '=', 'negotiation')] - - - - - Oldest Opportunity [ALL] - - - days - max - progress - lower - ['|', ('sales_funnel_type', '=', 'quotation'),('sales_funnel_type', '=', 'negotiation')] - - - - - - Personal comission - - - python - progress - higher - [('state','!=','cancel'),('user_id','=',user.id),('type','=','out_invoice')] - - - - -personal_comission = object.user_id.employee_ids and object.user_id.employee_ids[0].personal_comission or 0.0 -result = object.sum * personal_comission / 100.0 - - - - - Team bonus - Monthly team bonus - - python - progress - higher - [('state','!=','cancel'),('section_id','=',user.default_section_id.id),('type','=','out_invoice')] - - - - - - - - - - dashboard_accountant - - Shows dashboard to accountant - - - dashboard_sales_managment - - Shows sales management dashboard - - - dashboard_managment - - Shows management dashboard. It includes: sales management + accountant dashboard + EXTRA - - - - - dashboard_sales_person - - Shows dashboard to salesperson - - - - dashboard_admin - - Shows admin dashboard - - - - Outstanding sale orders - - [('user_id', '=', user.id),('state', 'in', ['progress', 'manual'])] - - - ${record.partner_id.name}, ${record.date_order}]]> - - list - 10 - - - - - Outstanding sale orders [ALL] - - [('state', 'in', ['progress', 'manual'])] - - - ${record.partner_id.name}, ${record.date_order}]]> - - list - 10 - - - - - Sent invoices [ALL] - - [('type', 'in', ['out_invoice']),('state','in',['open'])] - - - ${record.partner_id.name}, ${record.date_invoice}]]> - - list - 10 - - - - - Received invoices [ALL] - - [('type', 'in', ['in_invoice']),('state','in',['open'])] - - - ${record.partner_id.name}, ${record.date_invoice}]]> - - list - 10 - - - - - Task deadlines - - [('user_id', '=', user.id),('date_deadline','!=',False)] - ${record.project_id and record.project_id.name or 'NO PROJECT'}, ${record.date_deadline}]]> - - - - list - 10 - priority DESC - - - - Task deadlines [ALL] - - [('date_deadline','!=',False)] - ${record.project_id and record.project_id.name or 'NO PROJECT'}, ${record.date_deadline}]]> - - - - list - 10 - priority DESC - - - - - - Next action - - [('user_id', '=', user.id), '|',('date_action','!=',False),('title_action', '!=', False)] - ${record.date_action} - ${record.title_action}]]> - - - - - - list - 10 - priority DESC,probability DESC,planned_revenue DESC - - - - Next action [ALL] - - ['|',('date_action','!=',False),('title_action', '!=', False)] - ${record.date_action} - ${record.title_action}]]> - - - - - - list - 10 - priority DESC,probability DESC,planned_revenue DESC - - - - - Calls - - [('user_id', '=', user.id),('state', 'not in', ['cancel'])] - ${record.partner_id.name}, ${record.date}]]> - - - - list - 10 - date DESC - - - - Calls [ALL] - - [('state', 'not in', ['cancel'])] - ${record.partner_id.name}, ${record.date}]]> - - - - list - 10 - date DESC - - - - - Meetings - - [('partner_ids', 'in', [user.partner_id.id])] - - - - - list - 10 - start_datetime DESC - - - - - Meetings [ALL] - - [] - - - - - - - list - 10 - start_datetime DESC - - - - - Conversion Rate - - [('user_id','=', user.id), ('sales_funnel_type', 'in', ['won', 'lost'])] - - funnel - - - - [('sales_funnel_type', 'in', ['won'])] - - - - Conversion Rate [ALL] - - [('sales_funnel_type', 'in', ['won', 'lost'])] - - funnel - - - - [('sales_funnel_type', 'in', ['won'])] - - - - - Sales contributed - - [('state', 'in', ['done'])] - [('user_id','=', user.id), ('state', 'in', ['done'])] - - slice - - - - - - - - - diff --git a/mail_wall_custom/models.py b/mail_wall_custom/models.py deleted file mode 100644 index 0d8b14f..0000000 --- a/mail_wall_custom/models.py +++ /dev/null @@ -1,13 +0,0 @@ -from openerp import api,models,fields -from openerp.osv import fields as old_fields - -class hr_employee(models.Model): - _inherit = 'hr.employee' - - default_section_id = fields.Many2one('crm.case.section', 'Default Sales Team', related='user_id.default_section_id') - - personal_comission = fields.Float('Personal comission', help='Personal comission for sales. Value 1.0 is equal 1%') - - team_bonus = fields.Float('Team bonus', help='Maximum team bonus (per year). Value 1.0 is equal 1%') - - company_bonus = fields.Float('Company bonus', help='Maximum team bonus (per year). Value 1.0 is equal 1%') diff --git a/mail_wall_custom/static/description/icon.png b/mail_wall_custom/static/description/icon.png deleted file mode 100644 index 79f7d8fe294f838cf2996940c40dc08dde60642f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2140 zcmV-i2&4CjP)=D+Wys1fe}G$Q#Z2832St25n<}h#$%L7sUBHn zgVlR~4gtNOs+KA#@5q|?_&of{fCW3h;+eI-@is^))^C>Ap=O06Yq-$?c7APo?&VKv z))(zizAhAwtYInZ&irDhM>SGBFM>?d${LzoxNVMo=er+dj|dVX82(itvPy&nJI7R} zxal|{b!VXeY~=?NW24HG!g#W&q%^mz9C_k)O~vB$l!nR>c7Azkc41B0?h`G%re>$6 zR3XK_wP$L$`wA`+vfQ*It2kJ&bC8N#=Y*z`?T#poH4<6rMKBSth@G$Anh#P6geeX3 z66#s7^ZuFn%%U9v!&L5`a;i`|jy4C6tV1;wvTsBRf(1LrR7N-{7FL;Ru=vP|@loCg zW(jHMC_PwJ+DqF+1@u$zm8o8m$Y1m0V>0T?5;C37EIq_^W|6qn&f)G(Em&B}uDzZf z*)+}sw{t=Y4awlQ*0UI=qn@0G^f!D}&U?lzXXnrqYS25*U`_+Qpa)L`slkiwNPnpt zbLhf?onzn&_-r^=Y+@25re#c%ToI(Yb5h;e6h}ke&V&2_vM3~m`<859t@^AmkXN#4 zp3=nL641^=Hb@NJ0y10#e8NYUd#FM=yd}$j-ZOZiJuPn=y})eY?Y#H?ythe(9+=(P z=pO{n_Ag1zK#!ilNhilfXs;Am_;fC9#?QGvtNfjZ8h);==7&rFJ5QsnusaH>>SjHY zMC`QRjtOGt!fz}(jiG1vi5A$ZVuAvl9f!Vzpm3p#doq~Eg#RkU_3sSy1kxiU%8{*-oYZcOz=#QLgi{iP%6NR;q2W-(ziFHtAxczhQ%>g55VsxmVxu{OgA(z8>)V_eL6l3DJe$G5=tJp1|FDThBVI=FE7j=3tSDuEI+K+>VJ0yjG=W@S`oh zY;UN?#paSycm6BhAH$yR>Hg=JAHz8+5-u#Cw5f387dA))IagN=LE)YiRtGqa4{&&- z?Akk2Q!(?$O{HOxfl1vpCei`ivon?ZK`rFDC~Jz{*?3agX(WqeLDAmP6g%rA0{0<> zeqtzKYj)#fyZMfN2OiuS5UVdK(E;HAX;YO|@Z}oGtA&1=LO(l>HnWdoj~#w9CnQPu zz$YVGP~7xI^+ijcUcstRfTEHe{7dZ7Q=w&u@tA}I)g3C3b#`)vCi?y*=jMs3M4_;7 z>sC2k0T-cEZ{)}r0)&rGk$e2;VuY_meg`{ogL|Bk!JluaKhH%NZ8kn?5uft;?gWym z*MCY|fYs06&r)EvXweNU2#O3lwsaSN3LjB|<)5GbI&(^F8Ja$Saf5Dn zfe8N*NS_HTjLe(YbWiuKO3@!C&=suZc=@z@*Skh)DrGicOE-M=A%!7Zj9>aSC(&v#nWVj-o?-d4Br_8Z zDP85P;LTw*XT(K^Ln=~W$+dIA7^DnX@{`gzERF6PYOuNDqSwU8{M+dh76b)Z$^Np8 zK`L@#(IcfdSX4>r$FmU4GvlLe(Pp~uq7PD-^kM2p`;8cbRHVRCk`&s%0t^5+Kg1eL SSUIi$0000 - - - - hr.employee.form - hr.employee - - - - - - - - - - - - - - diff --git a/mail_wall_menu/__init__.py b/mail_wall_menu/__init__.py deleted file mode 100644 index bff786c..0000000 --- a/mail_wall_menu/__init__.py +++ /dev/null @@ -1 +0,0 @@ -import models diff --git a/mail_wall_menu/__openerp__.py b/mail_wall_menu/__openerp__.py deleted file mode 100644 index 49d36e1..0000000 --- a/mail_wall_menu/__openerp__.py +++ /dev/null @@ -1,18 +0,0 @@ -{ - 'name' : 'Menu for widgets at Messaging section', - 'version' : '1.0.0', - 'author' : 'IT-Projects LLC, Ivan Yelizariev', - 'license': 'LGPL-3', - "category": "Discuss", - 'website' : 'https://yelizariev.github.io', - 'description': """ -Module creates special menu at Messaging section to show only gamification-like blocks there. - -Tested on Odoo 8.0 ab7b5d7732a7c222a0aea45bd173742acd47242d - """, - 'depends' : ['mail'], - 'data':[ - 'mail_wall_menu_views.xml', - ], - 'installable': False -} diff --git a/mail_wall_menu/mail_wall_menu_views.xml b/mail_wall_menu/mail_wall_menu_views.xml deleted file mode 100644 index 7966bbe..0000000 --- a/mail_wall_menu/mail_wall_menu_views.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - Dashboard - mail.wall - { - 'default_model': 'res.users', - 'default_res_id': uid, - 'thread_model': 'res.partner', - 'needaction_menu_ref': ['mail.mail_tomefeeds', 'mail.mail_starfeeds'] - } - - - - - - - - - - diff --git a/mail_wall_menu/models.py b/mail_wall_menu/models.py deleted file mode 100644 index d7d73c9..0000000 --- a/mail_wall_menu/models.py +++ /dev/null @@ -1 +0,0 @@ -from openerp import api,models,fields diff --git a/mail_wall_menu/static/description/icon.png b/mail_wall_menu/static/description/icon.png deleted file mode 100644 index 79f7d8fe294f838cf2996940c40dc08dde60642f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2140 zcmV-i2&4CjP)=D+Wys1fe}G$Q#Z2832St25n<}h#$%L7sUBHn zgVlR~4gtNOs+KA#@5q|?_&of{fCW3h;+eI-@is^))^C>Ap=O06Yq-$?c7APo?&VKv z))(zizAhAwtYInZ&irDhM>SGBFM>?d${LzoxNVMo=er+dj|dVX82(itvPy&nJI7R} zxal|{b!VXeY~=?NW24HG!g#W&q%^mz9C_k)O~vB$l!nR>c7Azkc41B0?h`G%re>$6 zR3XK_wP$L$`wA`+vfQ*It2kJ&bC8N#=Y*z`?T#poH4<6rMKBSth@G$Anh#P6geeX3 z66#s7^ZuFn%%U9v!&L5`a;i`|jy4C6tV1;wvTsBRf(1LrR7N-{7FL;Ru=vP|@loCg zW(jHMC_PwJ+DqF+1@u$zm8o8m$Y1m0V>0T?5;C37EIq_^W|6qn&f)G(Em&B}uDzZf z*)+}sw{t=Y4awlQ*0UI=qn@0G^f!D}&U?lzXXnrqYS25*U`_+Qpa)L`slkiwNPnpt zbLhf?onzn&_-r^=Y+@25re#c%ToI(Yb5h;e6h}ke&V&2_vM3~m`<859t@^AmkXN#4 zp3=nL641^=Hb@NJ0y10#e8NYUd#FM=yd}$j-ZOZiJuPn=y})eY?Y#H?ythe(9+=(P z=pO{n_Ag1zK#!ilNhilfXs;Am_;fC9#?QGvtNfjZ8h);==7&rFJ5QsnusaH>>SjHY zMC`QRjtOGt!fz}(jiG1vi5A$ZVuAvl9f!Vzpm3p#doq~Eg#RkU_3sSy1kxiU%8{*-oYZcOz=#QLgi{iP%6NR;q2W-(ziFHtAxczhQ%>g55VsxmVxu{OgA(z8>)V_eL6l3DJe$G5=tJp1|FDThBVI=FE7j=3tSDuEI+K+>VJ0yjG=W@S`oh zY;UN?#paSycm6BhAH$yR>Hg=JAHz8+5-u#Cw5f387dA))IagN=LE)YiRtGqa4{&&- z?Akk2Q!(?$O{HOxfl1vpCei`ivon?ZK`rFDC~Jz{*?3agX(WqeLDAmP6g%rA0{0<> zeqtzKYj)#fyZMfN2OiuS5UVdK(E;HAX;YO|@Z}oGtA&1=LO(l>HnWdoj~#w9CnQPu zz$YVGP~7xI^+ijcUcstRfTEHe{7dZ7Q=w&u@tA}I)g3C3b#`)vCi?y*=jMs3M4_;7 z>sC2k0T-cEZ{)}r0)&rGk$e2;VuY_meg`{ogL|Bk!JluaKhH%NZ8kn?5uft;?gWym z*MCY|fYs06&r)EvXweNU2#O3lwsaSN3LjB|<)5GbI&(^F8Ja$Saf5Dn zfe8N*NS_HTjLe(YbWiuKO3@!C&=suZc=@z@*Skh)DrGicOE-M=A%!7Zj9>aSC(&v#nWVj-o?-d4Br_8Z zDP85P;LTw*XT(K^Ln=~W$+dIA7^DnX@{`gzERF6PYOuNDqSwU8{M+dh76b)Z$^Np8 zK`L@#(IcfdSX4>r$FmU4GvlLe(Pp~uq7PD-^kM2p`;8cbRHVRCk`&s%0t^5+Kg1eL SSUIi$0000h;h++){var j=this[h],k=a.data(j,b);if(k)if(a.isFunction(k[e])&&"_"!==e.charAt(0)){var l=k[e].apply(k,g);if(void 0!==l)return l}else f("no such method '"+e+"' for "+b+" instance");else f("cannot call methods on "+b+" prior to initialization; attempted to call '"+e+"'")}return this}return this.each(function(){var d=a.data(this,b);d?(d.option(e),d._init()):(d=new c(this,e),a.data(this,b,d))})}}if(a){var f="undefined"==typeof console?b:function(a){console.error(a)};return a.bridget=function(a,b){c(b),e(a,b)},a.bridget}}var d=Array.prototype.slice;"function"==typeof define&&define.amd?define("jquery-bridget/jquery.bridget",["jquery"],c):c("object"==typeof exports?require("jquery"):a.jQuery)}(window),function(a){function b(b){var c=a.event;return c.target=c.target||c.srcElement||b,c}var c=document.documentElement,d=function(){};c.addEventListener?d=function(a,b,c){a.addEventListener(b,c,!1)}:c.attachEvent&&(d=function(a,c,d){a[c+d]=d.handleEvent?function(){var c=b(a);d.handleEvent.call(d,c)}:function(){var c=b(a);d.call(a,c)},a.attachEvent("on"+c,a[c+d])});var e=function(){};c.removeEventListener?e=function(a,b,c){a.removeEventListener(b,c,!1)}:c.detachEvent&&(e=function(a,b,c){a.detachEvent("on"+b,a[b+c]);try{delete a[b+c]}catch(d){a[b+c]=void 0}});var f={bind:d,unbind:e};"function"==typeof define&&define.amd?define("eventie/eventie",f):"object"==typeof exports?module.exports=f:a.eventie=f}(this),function(a){function b(a){"function"==typeof a&&(b.isReady?a():g.push(a))}function c(a){var c="readystatechange"===a.type&&"complete"!==f.readyState;b.isReady||c||d()}function d(){b.isReady=!0;for(var a=0,c=g.length;c>a;a++){var d=g[a];d()}}function e(e){return"complete"===f.readyState?d():(e.bind(f,"DOMContentLoaded",c),e.bind(f,"readystatechange",c),e.bind(a,"load",c)),b}var f=a.document,g=[];b.isReady=!1,"function"==typeof define&&define.amd?define("doc-ready/doc-ready",["eventie/eventie"],e):"object"==typeof exports?module.exports=e(require("eventie")):a.docReady=e(a.eventie)}(window),function(){function a(){}function b(a,b){for(var c=a.length;c--;)if(a[c].listener===b)return c;return-1}function c(a){return function(){return this[a].apply(this,arguments)}}var d=a.prototype,e=this,f=e.EventEmitter;d.getListeners=function(a){var b,c,d=this._getEvents();if(a instanceof RegExp){b={};for(c in d)d.hasOwnProperty(c)&&a.test(c)&&(b[c]=d[c])}else b=d[a]||(d[a]=[]);return b},d.flattenListeners=function(a){var b,c=[];for(b=0;be;e++)if(b=c[e]+a,"string"==typeof d[b])return b}}var c="Webkit Moz ms Ms O".split(" "),d=document.documentElement.style;"function"==typeof define&&define.amd?define("get-style-property/get-style-property",[],function(){return b}):"object"==typeof exports?module.exports=b:a.getStyleProperty=b}(window),function(a){function b(a){var b=parseFloat(a),c=-1===a.indexOf("%")&&!isNaN(b);return c&&b}function c(){}function d(){for(var a={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},b=0,c=g.length;c>b;b++){var d=g[b];a[d]=0}return a}function e(c){function e(){if(!m){m=!0;var d=a.getComputedStyle;if(j=function(){var a=d?function(a){return d(a,null)}:function(a){return a.currentStyle};return function(b){var c=a(b);return c||f("Style returned "+c+". Are you running this code in a hidden iframe on Firefox? See http://bit.ly/getsizebug1"),c}}(),k=c("boxSizing")){var e=document.createElement("div");e.style.width="200px",e.style.padding="1px 2px 3px 4px",e.style.borderStyle="solid",e.style.borderWidth="1px 2px 3px 4px",e.style[k]="border-box";var g=document.body||document.documentElement;g.appendChild(e);var h=j(e);l=200===b(h.width),g.removeChild(e)}}}function h(a){if(e(),"string"==typeof a&&(a=document.querySelector(a)),a&&"object"==typeof a&&a.nodeType){var c=j(a);if("none"===c.display)return d();var f={};f.width=a.offsetWidth,f.height=a.offsetHeight;for(var h=f.isBorderBox=!(!k||!c[k]||"border-box"!==c[k]),m=0,n=g.length;n>m;m++){var o=g[m],p=c[o];p=i(a,p);var q=parseFloat(p);f[o]=isNaN(q)?0:q}var r=f.paddingLeft+f.paddingRight,s=f.paddingTop+f.paddingBottom,t=f.marginLeft+f.marginRight,u=f.marginTop+f.marginBottom,v=f.borderLeftWidth+f.borderRightWidth,w=f.borderTopWidth+f.borderBottomWidth,x=h&&l,y=b(c.width);y!==!1&&(f.width=y+(x?0:r+v));var z=b(c.height);return z!==!1&&(f.height=z+(x?0:s+w)),f.innerWidth=f.width-(r+v),f.innerHeight=f.height-(s+w),f.outerWidth=f.width+t,f.outerHeight=f.height+u,f}}function i(b,c){if(a.getComputedStyle||-1===c.indexOf("%"))return c;var d=b.style,e=d.left,f=b.runtimeStyle,g=f&&f.left;return g&&(f.left=b.currentStyle.left),d.left=c,c=d.pixelLeft,d.left=e,g&&(f.left=g),c}var j,k,l,m=!1;return h}var f="undefined"==typeof console?c:function(a){console.error(a)},g=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"];"function"==typeof define&&define.amd?define("get-size/get-size",["get-style-property/get-style-property"],e):"object"==typeof exports?module.exports=e(require("desandro-get-style-property")):a.getSize=e(a.getStyleProperty)}(window),function(a){function b(a,b){return a[g](b)}function c(a){if(!a.parentNode){var b=document.createDocumentFragment();b.appendChild(a)}}function d(a,b){c(a);for(var d=a.parentNode.querySelectorAll(b),e=0,f=d.length;f>e;e++)if(d[e]===a)return!0;return!1}function e(a,d){return c(a),b(a,d)}var f,g=function(){if(a.matchesSelector)return"matchesSelector";for(var b=["webkit","moz","ms","o"],c=0,d=b.length;d>c;c++){var e=b[c],f=e+"MatchesSelector";if(a[f])return f}}();if(g){var h=document.createElement("div"),i=b(h,"div");f=i?b:e}else f=d;"function"==typeof define&&define.amd?define("matches-selector/matches-selector",[],function(){return f}):"object"==typeof exports?module.exports=f:window.matchesSelector=f}(Element.prototype),function(a){function b(a,b){for(var c in b)a[c]=b[c];return a}function c(a){for(var b in a)return!1;return b=null,!0}function d(a){return a.replace(/([A-Z])/g,function(a){return"-"+a.toLowerCase()})}function e(a,e,f){function h(a,b){a&&(this.element=a,this.layout=b,this.position={x:0,y:0},this._create())}var i=f("transition"),j=f("transform"),k=i&&j,l=!!f("perspective"),m={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"otransitionend",transition:"transitionend"}[i],n=["transform","transition","transitionDuration","transitionProperty"],o=function(){for(var a={},b=0,c=n.length;c>b;b++){var d=n[b],e=f(d);e&&e!==d&&(a[d]=e)}return a}();b(h.prototype,a.prototype),h.prototype._create=function(){this._transn={ingProperties:{},clean:{},onEnd:{}},this.css({position:"absolute"})},h.prototype.handleEvent=function(a){var b="on"+a.type;this[b]&&this[b](a)},h.prototype.getSize=function(){this.size=e(this.element)},h.prototype.css=function(a){var b=this.element.style;for(var c in a){var d=o[c]||c;b[d]=a[c]}},h.prototype.getPosition=function(){var a=g(this.element),b=this.layout.options,c=b.isOriginLeft,d=b.isOriginTop,e=parseInt(a[c?"left":"right"],10),f=parseInt(a[d?"top":"bottom"],10);e=isNaN(e)?0:e,f=isNaN(f)?0:f;var h=this.layout.size;e-=c?h.paddingLeft:h.paddingRight,f-=d?h.paddingTop:h.paddingBottom,this.position.x=e,this.position.y=f},h.prototype.layoutPosition=function(){var a=this.layout.size,b=this.layout.options,c={};b.isOriginLeft?(c.left=this.position.x+a.paddingLeft+"px",c.right=""):(c.right=this.position.x+a.paddingRight+"px",c.left=""),b.isOriginTop?(c.top=this.position.y+a.paddingTop+"px",c.bottom=""):(c.bottom=this.position.y+a.paddingBottom+"px",c.top=""),this.css(c),this.emitEvent("layout",[this])};var p=l?function(a,b){return"translate3d("+a+"px, "+b+"px, 0)"}:function(a,b){return"translate("+a+"px, "+b+"px)"};h.prototype._transitionTo=function(a,b){this.getPosition();var c=this.position.x,d=this.position.y,e=parseInt(a,10),f=parseInt(b,10),g=e===this.position.x&&f===this.position.y;if(this.setPosition(a,b),g&&!this.isTransitioning)return void this.layoutPosition();var h=a-c,i=b-d,j={},k=this.layout.options;h=k.isOriginLeft?h:-h,i=k.isOriginTop?i:-i,j.transform=p(h,i),this.transition({to:j,onTransitionEnd:{transform:this.layoutPosition},isCleaning:!0})},h.prototype.goTo=function(a,b){this.setPosition(a,b),this.layoutPosition()},h.prototype.moveTo=k?h.prototype._transitionTo:h.prototype.goTo,h.prototype.setPosition=function(a,b){this.position.x=parseInt(a,10),this.position.y=parseInt(b,10)},h.prototype._nonTransition=function(a){this.css(a.to),a.isCleaning&&this._removeStyles(a.to);for(var b in a.onTransitionEnd)a.onTransitionEnd[b].call(this)},h.prototype._transition=function(a){if(!parseFloat(this.layout.options.transitionDuration))return void this._nonTransition(a);var b=this._transn;for(var c in a.onTransitionEnd)b.onEnd[c]=a.onTransitionEnd[c];for(c in a.to)b.ingProperties[c]=!0,a.isCleaning&&(b.clean[c]=!0);if(a.from){this.css(a.from);var d=this.element.offsetHeight;d=null}this.enableTransition(a.to),this.css(a.to),this.isTransitioning=!0};var q=j&&d(j)+",opacity";h.prototype.enableTransition=function(){this.isTransitioning||(this.css({transitionProperty:q,transitionDuration:this.layout.options.transitionDuration}),this.element.addEventListener(m,this,!1))},h.prototype.transition=h.prototype[i?"_transition":"_nonTransition"],h.prototype.onwebkitTransitionEnd=function(a){this.ontransitionend(a)},h.prototype.onotransitionend=function(a){this.ontransitionend(a)};var r={"-webkit-transform":"transform","-moz-transform":"transform","-o-transform":"transform"};h.prototype.ontransitionend=function(a){if(a.target===this.element){var b=this._transn,d=r[a.propertyName]||a.propertyName;if(delete b.ingProperties[d],c(b.ingProperties)&&this.disableTransition(),d in b.clean&&(this.element.style[a.propertyName]="",delete b.clean[d]),d in b.onEnd){var e=b.onEnd[d];e.call(this),delete b.onEnd[d]}this.emitEvent("transitionEnd",[this])}},h.prototype.disableTransition=function(){this.removeTransitionStyles(),this.element.removeEventListener(m,this,!1),this.isTransitioning=!1},h.prototype._removeStyles=function(a){var b={};for(var c in a)b[c]="";this.css(b)};var s={transitionProperty:"",transitionDuration:""};return h.prototype.removeTransitionStyles=function(){this.css(s)},h.prototype.removeElem=function(){this.element.parentNode.removeChild(this.element),this.emitEvent("remove",[this])},h.prototype.remove=function(){if(!i||!parseFloat(this.layout.options.transitionDuration))return void this.removeElem();var a=this;this.on("transitionEnd",function(){return a.removeElem(),!0}),this.hide()},h.prototype.reveal=function(){delete this.isHidden,this.css({display:""});var a=this.layout.options;this.transition({from:a.hiddenStyle,to:a.visibleStyle,isCleaning:!0})},h.prototype.hide=function(){this.isHidden=!0,this.css({display:""});var a=this.layout.options;this.transition({from:a.visibleStyle,to:a.hiddenStyle,isCleaning:!0,onTransitionEnd:{opacity:function(){this.isHidden&&this.css({display:"none"})}}})},h.prototype.destroy=function(){this.css({position:"",left:"",right:"",top:"",bottom:"",transition:"",transform:""})},h}var f=a.getComputedStyle,g=f?function(a){return f(a,null)}:function(a){return a.currentStyle};"function"==typeof define&&define.amd?define("outlayer/item",["eventEmitter/EventEmitter","get-size/get-size","get-style-property/get-style-property"],e):"object"==typeof exports?module.exports=e(require("wolfy87-eventemitter"),require("get-size"),require("desandro-get-style-property")):(a.Outlayer={},a.Outlayer.Item=e(a.EventEmitter,a.getSize,a.getStyleProperty))}(window),function(a){function b(a,b){for(var c in b)a[c]=b[c];return a}function c(a){return"[object Array]"===l.call(a)}function d(a){var b=[];if(c(a))b=a;else if(a&&"number"==typeof a.length)for(var d=0,e=a.length;e>d;d++)b.push(a[d]);else b.push(a);return b}function e(a,b){var c=n(b,a);-1!==c&&b.splice(c,1)}function f(a){return a.replace(/(.)([A-Z])/g,function(a,b,c){return b+"-"+c}).toLowerCase()}function g(c,g,l,n,o,p){function q(a,c){if("string"==typeof a&&(a=h.querySelector(a)),!a||!m(a))return void(i&&i.error("Bad "+this.constructor.namespace+" element: "+a));this.element=a,this.options=b({},this.constructor.defaults),this.option(c);var d=++r;this.element.outlayerGUID=d,s[d]=this,this._create(),this.options.isInitLayout&&this.layout()}var r=0,s={};return q.namespace="outlayer",q.Item=p,q.defaults={containerStyle:{position:"relative"},isInitLayout:!0,isOriginLeft:!0,isOriginTop:!0,isResizeBound:!0,isResizingContainer:!0,transitionDuration:"0.4s",hiddenStyle:{opacity:0,transform:"scale(0.001)"},visibleStyle:{opacity:1,transform:"scale(1)"}},b(q.prototype,l.prototype),q.prototype.option=function(a){b(this.options,a)},q.prototype._create=function(){this.reloadItems(),this.stamps=[],this.stamp(this.options.stamp),b(this.element.style,this.options.containerStyle),this.options.isResizeBound&&this.bindResize()},q.prototype.reloadItems=function(){this.items=this._itemize(this.element.children)},q.prototype._itemize=function(a){for(var b=this._filterFindItemElements(a),c=this.constructor.Item,d=[],e=0,f=b.length;f>e;e++){var g=b[e],h=new c(g,this);d.push(h)}return d},q.prototype._filterFindItemElements=function(a){a=d(a);for(var b=this.options.itemSelector,c=[],e=0,f=a.length;f>e;e++){var g=a[e];if(m(g))if(b){o(g,b)&&c.push(g);for(var h=g.querySelectorAll(b),i=0,j=h.length;j>i;i++)c.push(h[i])}else c.push(g)}return c},q.prototype.getItemElements=function(){for(var a=[],b=0,c=this.items.length;c>b;b++)a.push(this.items[b].element);return a},q.prototype.layout=function(){this._resetLayout(),this._manageStamps();var a=void 0!==this.options.isLayoutInstant?this.options.isLayoutInstant:!this._isLayoutInited;this.layoutItems(this.items,a),this._isLayoutInited=!0},q.prototype._init=q.prototype.layout,q.prototype._resetLayout=function(){this.getSize()},q.prototype.getSize=function(){this.size=n(this.element)},q.prototype._getMeasurement=function(a,b){var c,d=this.options[a];d?("string"==typeof d?c=this.element.querySelector(d):m(d)&&(c=d),this[a]=c?n(c)[b]:d):this[a]=0},q.prototype.layoutItems=function(a,b){a=this._getItemsForLayout(a),this._layoutItems(a,b),this._postLayout()},q.prototype._getItemsForLayout=function(a){for(var b=[],c=0,d=a.length;d>c;c++){var e=a[c];e.isIgnored||b.push(e)}return b},q.prototype._layoutItems=function(a,b){function c(){d.emitEvent("layoutComplete",[d,a])}var d=this;if(!a||!a.length)return void c();this._itemsOn(a,"layout",c);for(var e=[],f=0,g=a.length;g>f;f++){var h=a[f],i=this._getItemLayoutPosition(h);i.item=h,i.isInstant=b||h.isLayoutInstant,e.push(i)}this._processLayoutQueue(e)},q.prototype._getItemLayoutPosition=function(){return{x:0,y:0}},q.prototype._processLayoutQueue=function(a){for(var b=0,c=a.length;c>b;b++){var d=a[b];this._positionItem(d.item,d.x,d.y,d.isInstant)}},q.prototype._positionItem=function(a,b,c,d){d?a.goTo(b,c):a.moveTo(b,c)},q.prototype._postLayout=function(){this.resizeContainer()},q.prototype.resizeContainer=function(){if(this.options.isResizingContainer){var a=this._getContainerSize();a&&(this._setContainerMeasure(a.width,!0),this._setContainerMeasure(a.height,!1))}},q.prototype._getContainerSize=k,q.prototype._setContainerMeasure=function(a,b){if(void 0!==a){var c=this.size;c.isBorderBox&&(a+=b?c.paddingLeft+c.paddingRight+c.borderLeftWidth+c.borderRightWidth:c.paddingBottom+c.paddingTop+c.borderTopWidth+c.borderBottomWidth),a=Math.max(a,0),this.element.style[b?"width":"height"]=a+"px"}},q.prototype._itemsOn=function(a,b,c){function d(){return e++,e===f&&c.call(g),!0}for(var e=0,f=a.length,g=this,h=0,i=a.length;i>h;h++){var j=a[h];j.on(b,d)}},q.prototype.ignore=function(a){var b=this.getItem(a);b&&(b.isIgnored=!0)},q.prototype.unignore=function(a){var b=this.getItem(a);b&&delete b.isIgnored},q.prototype.stamp=function(a){if(a=this._find(a)){this.stamps=this.stamps.concat(a);for(var b=0,c=a.length;c>b;b++){var d=a[b];this.ignore(d)}}},q.prototype.unstamp=function(a){if(a=this._find(a))for(var b=0,c=a.length;c>b;b++){var d=a[b];e(d,this.stamps),this.unignore(d)}},q.prototype._find=function(a){return a?("string"==typeof a&&(a=this.element.querySelectorAll(a)),a=d(a)):void 0},q.prototype._manageStamps=function(){if(this.stamps&&this.stamps.length){this._getBoundingRect();for(var a=0,b=this.stamps.length;b>a;a++){var c=this.stamps[a];this._manageStamp(c)}}},q.prototype._getBoundingRect=function(){var a=this.element.getBoundingClientRect(),b=this.size;this._boundingRect={left:a.left+b.paddingLeft+b.borderLeftWidth,top:a.top+b.paddingTop+b.borderTopWidth,right:a.right-(b.paddingRight+b.borderRightWidth),bottom:a.bottom-(b.paddingBottom+b.borderBottomWidth)}},q.prototype._manageStamp=k,q.prototype._getElementOffset=function(a){var b=a.getBoundingClientRect(),c=this._boundingRect,d=n(a),e={left:b.left-c.left-d.marginLeft,top:b.top-c.top-d.marginTop,right:c.right-b.right-d.marginRight,bottom:c.bottom-b.bottom-d.marginBottom};return e},q.prototype.handleEvent=function(a){var b="on"+a.type;this[b]&&this[b](a)},q.prototype.bindResize=function(){this.isResizeBound||(c.bind(a,"resize",this),this.isResizeBound=!0)},q.prototype.unbindResize=function(){this.isResizeBound&&c.unbind(a,"resize",this),this.isResizeBound=!1},q.prototype.onresize=function(){function a(){b.resize(),delete b.resizeTimeout}this.resizeTimeout&&clearTimeout(this.resizeTimeout);var b=this;this.resizeTimeout=setTimeout(a,100)},q.prototype.resize=function(){this.isResizeBound&&this.needsResizeLayout()&&this.layout()},q.prototype.needsResizeLayout=function(){var a=n(this.element),b=this.size&&a;return b&&a.innerWidth!==this.size.innerWidth},q.prototype.addItems=function(a){var b=this._itemize(a);return b.length&&(this.items=this.items.concat(b)),b},q.prototype.appended=function(a){var b=this.addItems(a);b.length&&(this.layoutItems(b,!0),this.reveal(b))},q.prototype.prepended=function(a){var b=this._itemize(a);if(b.length){var c=this.items.slice(0);this.items=b.concat(c),this._resetLayout(),this._manageStamps(),this.layoutItems(b,!0),this.reveal(b),this.layoutItems(c)}},q.prototype.reveal=function(a){var b=a&&a.length;if(b)for(var c=0;b>c;c++){var d=a[c];d.reveal()}},q.prototype.hide=function(a){var b=a&&a.length;if(b)for(var c=0;b>c;c++){var d=a[c];d.hide()}},q.prototype.getItem=function(a){for(var b=0,c=this.items.length;c>b;b++){var d=this.items[b];if(d.element===a)return d}},q.prototype.getItems=function(a){if(a&&a.length){for(var b=[],c=0,d=a.length;d>c;c++){var e=a[c],f=this.getItem(e);f&&b.push(f)}return b}},q.prototype.remove=function(a){a=d(a);var b=this.getItems(a);if(b&&b.length){this._itemsOn(b,"remove",function(){this.emitEvent("removeComplete",[this,b])});for(var c=0,f=b.length;f>c;c++){var g=b[c];g.remove(),e(g,this.items)}}},q.prototype.destroy=function(){var a=this.element.style;a.height="",a.position="",a.width="";for(var b=0,c=this.items.length;c>b;b++){var d=this.items[b];d.destroy()}this.unbindResize();var e=this.element.outlayerGUID;delete s[e],delete this.element.outlayerGUID,j&&j.removeData(this.element,this.constructor.namespace)},q.data=function(a){var b=a&&a.outlayerGUID;return b&&s[b]},q.create=function(a,c){function d(){q.apply(this,arguments)}return Object.create?d.prototype=Object.create(q.prototype):b(d.prototype,q.prototype),d.prototype.constructor=d,d.defaults=b({},q.defaults),b(d.defaults,c),d.prototype.settings={},d.namespace=a,d.data=q.data,d.Item=function(){p.apply(this,arguments)},d.Item.prototype=new p,g(function(){for(var b=f(a),c=h.querySelectorAll(".js-"+b),e="data-"+b+"-options",g=0,k=c.length;k>g;g++){var l,m=c[g],n=m.getAttribute(e);try{l=n&&JSON.parse(n)}catch(o){i&&i.error("Error parsing "+e+" on "+m.nodeName.toLowerCase()+(m.id?"#"+m.id:"")+": "+o);continue}var p=new d(m,l);j&&j.data(m,a,p)}}),j&&j.bridget&&j.bridget(a,d),d},q.Item=p,q}var h=a.document,i=a.console,j=a.jQuery,k=function(){},l=Object.prototype.toString,m="function"==typeof HTMLElement||"object"==typeof HTMLElement?function(a){return a instanceof HTMLElement}:function(a){return a&&"object"==typeof a&&1===a.nodeType&&"string"==typeof a.nodeName},n=Array.prototype.indexOf?function(a,b){return a.indexOf(b)}:function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1};"function"==typeof define&&define.amd?define("outlayer/outlayer",["eventie/eventie","doc-ready/doc-ready","eventEmitter/EventEmitter","get-size/get-size","matches-selector/matches-selector","./item"],g):"object"==typeof exports?module.exports=g(require("eventie"),require("doc-ready"),require("wolfy87-eventemitter"),require("get-size"),require("desandro-matches-selector"),require("./item")):a.Outlayer=g(a.eventie,a.docReady,a.EventEmitter,a.getSize,a.matchesSelector,a.Outlayer.Item)}(window),function(a){function b(a,b){var d=a.create("masonry");return d.prototype._resetLayout=function(){this.getSize(),this._getMeasurement("columnWidth","outerWidth"),this._getMeasurement("gutter","outerWidth"),this.measureColumns();var a=this.cols;for(this.colYs=[];a--;)this.colYs.push(0);this.maxY=0},d.prototype.measureColumns=function(){if(this.getContainerWidth(),!this.columnWidth){var a=this.items[0],c=a&&a.element;this.columnWidth=c&&b(c).outerWidth||this.containerWidth}this.columnWidth+=this.gutter,this.cols=Math.floor((this.containerWidth+this.gutter)/this.columnWidth),this.cols=Math.max(this.cols,1)},d.prototype.getContainerWidth=function(){var a=this.options.isFitWidth?this.element.parentNode:this.element,c=b(a);this.containerWidth=c&&c.innerWidth},d.prototype._getItemLayoutPosition=function(a){a.getSize();var b=a.size.outerWidth%this.columnWidth,d=b&&1>b?"round":"ceil",e=Math[d](a.size.outerWidth/this.columnWidth);e=Math.min(e,this.cols);for(var f=this._getColGroup(e),g=Math.min.apply(Math,f),h=c(f,g),i={x:this.columnWidth*h,y:g},j=g+a.size.outerHeight,k=this.cols+1-f.length,l=0;k>l;l++)this.colYs[h+l]=j;return i},d.prototype._getColGroup=function(a){if(2>a)return this.colYs;for(var b=[],c=this.cols+1-a,d=0;c>d;d++){var e=this.colYs.slice(d,d+a);b[d]=Math.max.apply(Math,e)}return b},d.prototype._manageStamp=function(a){var c=b(a),d=this._getElementOffset(a),e=this.options.isOriginLeft?d.left:d.right,f=e+c.outerWidth,g=Math.floor(e/this.columnWidth);g=Math.max(0,g);var h=Math.floor(f/this.columnWidth);h-=f%this.columnWidth?0:1,h=Math.min(this.cols-1,h);for(var i=(this.options.isOriginTop?d.top:d.bottom)+c.outerHeight,j=g;h>=j;j++)this.colYs[j]=Math.max(i,this.colYs[j])},d.prototype._getContainerSize=function(){this.maxY=Math.max.apply(Math,this.colYs);var a={height:this.maxY};return this.options.isFitWidth&&(a.width=this._getContainerFitWidth()),a},d.prototype._getContainerFitWidth=function(){for(var a=0,b=this.cols;--b&&0===this.colYs[b];)a++;return(this.cols-a)*this.columnWidth-this.gutter},d.prototype.needsResizeLayout=function(){var a=this.containerWidth;return this.getContainerWidth(),a!==this.containerWidth},d}var c=Array.prototype.indexOf?function(a,b){return a.indexOf(b)}:function(a,b){for(var c=0,d=a.length;d>c;c++){var e=a[c];if(e===b)return c}return-1};"function"==typeof define&&define.amd?define(["outlayer/outlayer","get-size/get-size"],b):"object"==typeof exports?module.exports=b(require("outlayer"),require("get-size")):a.Masonry=b(a.Outlayer,a.getSize)}(window); \ No newline at end of file diff --git a/mail_wall_menu/static/src/css/mail_wall_menu.css b/mail_wall_menu/static/src/css/mail_wall_menu.css deleted file mode 100644 index df121e0..0000000 --- a/mail_wall_menu/static/src/css/mail_wall_menu.css +++ /dev/null @@ -1,29 +0,0 @@ -.openerp .oe_mail_wall .dashboard_only .oe_mail{ - display:none; -} - -.openerp .oe_mail_wall .oe_mail_wall_aside{ - display:none; -} - -.openerp .oe_mail_wall .dashboard_only .oe_mail_wall_aside{ - margin:0; - padding: 16px; - display: block; - position: static; - width:100%; -} - -.openerp .oe_mail_wall .dashboard_only .oe_mail_wall_aside .oe_gamification_challenge_list { - background-color:inherit; -} -.openerp .oe_mail_wall .dashboard_only .oe_goal{ - background-color: #ededf6; - width:280px; - margin:5px; - border: solid 1px #888; - padding: 4px 9px; - - position:absolute; - left:-300px; -} diff --git a/mail_wall_menu/static/src/js/mail_wall_menu.js b/mail_wall_menu/static/src/js/mail_wall_menu.js deleted file mode 100644 index 1141227..0000000 --- a/mail_wall_menu/static/src/js/mail_wall_menu.js +++ /dev/null @@ -1,36 +0,0 @@ -openerp.mail_wall_menu = function(instance){ - var QWeb = instance.web.qweb; - var _t = instance.web._t; - - instance.mail.Widget.include({ - start: function(){ - if (this.action.params.disable_thread){ - $('.oe_view_manager_body').addClass('dashboard_only'); - var msnry = new Masonry( '.oe_mail_wall_aside', { - // options - columnWidth: 290, - itemSelector: '.oe_goal', - transitionDuration: 0 - }); - var update = -10; - this.msnry_interval = setInterval(function(){ - update++; - if (update > 0 && update % 5 != 0) - return; - if (update > 0) - update = 0; - msnry.reloadItems(); - msnry.layout(); - }, 1000) - - - return; - } - this._super.apply(this, arguments) - }, - destroy: function(){ - clearInterval(this.msnry_interval); - this._super.apply(this, arguments); - } - }) -} \ No newline at end of file diff --git a/mail_wall_widgets/__init__.py b/mail_wall_widgets/__init__.py deleted file mode 100644 index bff786c..0000000 --- a/mail_wall_widgets/__init__.py +++ /dev/null @@ -1 +0,0 @@ -import models diff --git a/mail_wall_widgets/__openerp__.py b/mail_wall_widgets/__openerp__.py deleted file mode 100644 index 655e63f..0000000 --- a/mail_wall_widgets/__openerp__.py +++ /dev/null @@ -1,20 +0,0 @@ -{ - 'name' : 'Extra Widgets for mail wall', - 'version' : '1.0.0', - 'author' : 'IT-Projects LLC, Ivan Yelizariev', - 'license': 'LGPL-3', - 'category' : 'Custom', - 'website' : 'https://yelizariev.github.io', - 'description': """ - -Tested on odoo 8.0 ab7b5d7732a7c222a0aea45bd173742acd47242d - """, - 'depends' : ['mail','gamification'], - 'data':[ - 'views.xml', - #'data.xml', - 'security/ir.model.access.csv', - ], - 'qweb': ['static/src/xml/main.xml'], - 'installable': False, -} diff --git a/mail_wall_widgets/models.py b/mail_wall_widgets/models.py deleted file mode 100644 index 1f8f600..0000000 --- a/mail_wall_widgets/models.py +++ /dev/null @@ -1,283 +0,0 @@ -from openerp.osv import osv,fields as old_fields -from openerp import api, models, fields, tools -from openerp.tools.safe_eval import safe_eval -try: - from openerp.addons.email_template.email_template import mako_template_env -except ImportError: - try: - from openerp.addons.mail.mail_template import mako_template_env - except ImportError: - pass - -import copy -from openerp.tools.translate import _ -from datetime import date, datetime, timedelta -from openerp.tools import DEFAULT_SERVER_DATE_FORMAT -from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT - -class mail_wall_widgets_widget(models.Model): - _name = 'mail.wall.widgets.widget' - _order = "sequence, id" - - _columns = { - 'name': old_fields.char('Name', required=True, translate=True), - 'type': old_fields.selection(string='Type', selection=[ - ('list', 'List'), - ('funnel', 'Funnel'), - ('slice', 'Slice'), - #('', ''), - #('', ''), - #('', ''), - #('', ''), - ], help=''' -Slice - use "domain" for total and "won_domain" for target - '''), - 'description': old_fields.text('Description', translate=True), - 'group_ids': old_fields.many2many('res.groups', relation='mail_wall_widgets_widget_group', column1='widget_id', column2='group_id', string='Groups', help="User groups to show widget"), - 'model_id': old_fields.many2one('ir.model', string='Model', help='The model object for the field to evaluate'), - 'domain': old_fields.char("Filter Domain", help="Domain for filtering records. General rule, not user depending, e.g. [('state', '=', 'done')]. The expression can contain reference to 'user' which is a browse record of the current user if not in batch mode.", required=True), - 'limit': old_fields.integer('Limit', help='Limit count of records to show'), - 'order': old_fields.char('Order', help='Order of records to show'), - 'value_field_id': old_fields.many2one('ir.model.fields', - string='Value field', - help='The field containing the value of record'), - 'stage_field_id': old_fields.many2one('ir.model.fields', - string='Stage field', - help='Field to split records in funnel. It can be selection type or many2one (the later should have "sequence" field)'), - #'stage_field_domain': old_fields.many2one('ir.model.fields', - # string='Stage field domain', - # help='(for many2one stage_field_id) Domain to find stage objects'), - 'won_domain': old_fields.char('Won domain', - help='Domain to find won objects'), - 'field_date_id': old_fields.many2one('ir.model.fields', - string='Date Field', - help='The date to use for the time period evaluated'), - 'start_date': old_fields.date('Start Date'), - 'end_date': old_fields.date('End Date'), # no start and end = always active - 'content': old_fields.char('Line template', help='Mako template to show content'), - 'value_field_monetary': old_fields.boolean('Value is monetary'), - 'cache': old_fields.boolean('Cache'), - 'active': old_fields.boolean('Active'), - 'sequence': old_fields.integer('Sequence', help='Sequence number for ordering'), - } - precision = fields.Float('Precision', help='round(Value/precision) * precision. E.g. 12345,333333 will be rounded to 12345,33 for precision=0.01, and to 12000 for precision=1000', default=0.01) - agenda = fields.Boolean('Agenda', help='Split records by date: overdue, today, tomorrow, later') - _defaults = { - 'active': True, - 'cache': False, - 'limit': None, - 'order': None, - } - - @api.one - def get_data(self, user): - - domain = safe_eval(self.domain, {'user': user}) - won_domain = safe_eval(self.won_domain or '[]', {'user': user}) - - field_date_name = self.field_date_id and self.field_date_id.name - if self.start_date and field_date_name: - domain.append((field_date_name, '>=', self.start_date)) - if self.end_date and field_date_name: - domain.append((field_date_name, '<=', self.end_date)) - - res = { - 'name': self.name, - 'type': self.type, - 'model': self.model_id.model, - 'domain': str(domain), - 'precision': self.precision, - } - obj = self.env[self.model_id.model] - if self.type == 'list': - total_count = obj.search_count(domain) - groups = [{'test': lambda r: True}] - if self.agenda: - today = date.today() - tomorrow = today + timedelta(days=1) - def r2date(r): - d = getattr(r, field_date_name) - if d: - d = datetime.strptime(d, self.field_date_id.ttype=='date' and DEFAULT_SERVER_DATE_FORMAT or DEFAULT_SERVER_DATETIME_FORMAT) - d = d.date() - else: - d = date.today() - return d - groups = [ - { - 'label': _('Overdue'), - 'class': 'overdue', - 'test': lambda r: r2date(r) < today, - 'mandatory': False, - }, - { - 'label': _('Today'), - 'class': 'today', - 'test': lambda r: r2date(r) == today, - 'mandatory': True, - }, - { - 'label': _('Tomorrow'), - 'class': 'tomorrow', - 'test': lambda r: r2date(r) == tomorrow, - 'mandatory': False, - }, - { - 'label': _('Later'), - 'class': 'later', - 'test': lambda r: r2date(r) > tomorrow, - 'mandatory': False, - }, - ] - for g in groups: - g['lines'] = [] - - res.update({ - 'more': self.limit and self.limit < total_count, - 'total_count': total_count, - 'agenda': self.agenda, - 'groups': groups, - }) - for r in obj.search(domain, limit=self.limit, order=self.order): - mako = mako_template_env.from_string(tools.ustr(self.content)) - content = mako.render({'record':r}) - r_json = { - 'id': r.id, - #'fields': dict( (f,getattr(r,f)) for f in fields), - 'display_mode': 'progress', - 'state': 'inprogress', - 'completeness': 0, - 'name': content, - 'description': '', - } - if self.value_field_id: - r_json['current'] = getattr(r, self.value_field_id.name) - if self.value_field_monetary: - r_json['monetary'] = 1 - for g in groups: - if g['test'](r): - g['lines'].append(r_json) - break - for g in groups: - del g['test'] - elif self.type == 'funnel': - stage_ids = [] # [key] - for group in obj.read_group(domain, [], [self.stage_field_id.name]): - key = group[self.stage_field_id.name] - if isinstance(key, (list, tuple)): - key = key[0] - stage_ids.append(key) - - stages = [] # [{'name':Name, 'id': key}] - if self.stage_field_id.ttype == 'selection': - d = dict (self.stage_field_id.selection) - stages = [ {'id':id, 'name':d[id]} for id in stage_ids ] - else: # many2one - stage_model = self.stage_field_id.relation - for r in self.env[stage_model].browse(stage_ids): - stages.append({'id': r.id, 'name':r.name_get()[0][1]}) - - value_field_name = self.value_field_id.name - for stage in stages: - d = copy.copy(domain) - d.append( (self.stage_field_id.name, '=', stage['id']) ) - result = obj.read_group(d, [value_field_name], []) - stage['closed_value'] = result and result[0][value_field_name] or 0.0 - stage['domain'] = str(d) - - # won value - d = domain + won_domain - result = obj.read_group(domain, [value_field_name], []) - won = {'name': _('Won'), - 'id':'__won__', - 'closed_value': result and result[0][value_field_name] or 0.0 - } - stages.append(won) - cur = 0 - for stage in reversed(stages): - cur += stage['closed_value'] - stage['abs_value'] = cur - total_value = stages[0]['abs_value'] - precision = self.precision - for s in stages: - s['rel_value'] = round(100*s['abs_value']/total_value/precision)*precision if total_value else 100 - # dummy fields - s['display_mode'] = 'progress' - s['monetary'] = 1 - - res['stages'] = stages - res['won'] = won - res['conversion_rate'] = stages[-1]['rel_value'] - elif self.type == 'slice': - value_field_name = self.value_field_id.name - for f,d in [('total', domain), ('won', won_domain)]: - result = obj.read_group(d, [value_field_name], []) - res[f] = result and result[0][value_field_name] or 0.0 - - res['domain'] = str(domain) - res['won_domain'] = str(won_domain) - - precision = self.precision - total_value = res['total'] - res['slice'] = round(100*res['won']/res['total']/precision)*precision if res['total'] else 100 - # dummy fields - res['display_mode'] = 'progress' - res['monetary'] = self.value_field_monetary - return res - -class mail_wall_widgets_cache(models.Model): - _name = 'mail.wall.widgets.cache' - - cache = fields.Text('Cached data') - res_id = fields.Integer('Resource ID') - res_model = fields.Integer('Resource Model') - user_id = fields.Many2one('res.users') - -class res_users(models.Model): - _inherit = 'res.users' - - @api.v7 - def get_serialised_mail_wall_widgets_summary(self, cr, uid, excluded_categories=None, context=None): - return self._get_serialised_mail_wall_widgets_summary(cr, uid, uid, excluded_categories=excluded_categories, context=context)[0] - - @api.one - def _get_serialised_mail_wall_widgets_summary(self, excluded_categories=None): - """ - [ - { - 'id': ..., - 'model': ..., - 'currency': , - 'data': (depend on model) - }, - ] - """ - user = self.env.user - res = [] - model = 'mail.wall.widgets.widget' - domain = [('group_ids', 'in', user.groups_id.ids), ('active', '=', True)] - for widget in self.env[model].search(domain, order='sequence'): - if widget.cache: - #TODO - continue - res.append({ - 'model': model, - 'id': widget.id, - 'currency': user.company_id.currency_id.id, - 'data': widget.get_data(user)[0], - }) - return res - - #def get_challenge_suggestions(self, cr, uid, context=None): - # """Return the list of challenges suggested to the user""" - # challenge_info = [] - # challenge_obj = self.pool.get('mail_wall_widgets.challenge') - # challenge_ids = challenge_obj.search(cr, uid, [('invited_user_ids', 'in', uid), ('state', '=', 'inprogress')], context=context) - # for challenge in challenge_obj.browse(cr, uid, challenge_ids, context=context): - # values = { - # 'id': challenge.id, - # 'name': challenge.name, - # 'description': challenge.description, - # } - # challenge_info.append(values) - # return challenge_info diff --git a/mail_wall_widgets/security/ir.model.access.csv b/mail_wall_widgets/security/ir.model.access.csv deleted file mode 100644 index 17465e5..0000000 --- a/mail_wall_widgets/security/ir.model.access.csv +++ /dev/null @@ -1,2 +0,0 @@ -id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -access_mail_wall_widgets,mail.wall.widgets.widget,model_mail_wall_widgets_widget,,1,1,1,1 \ No newline at end of file diff --git a/mail_wall_widgets/static/description/icon.png b/mail_wall_widgets/static/description/icon.png deleted file mode 100644 index 79f7d8fe294f838cf2996940c40dc08dde60642f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2140 zcmV-i2&4CjP)=D+Wys1fe}G$Q#Z2832St25n<}h#$%L7sUBHn zgVlR~4gtNOs+KA#@5q|?_&of{fCW3h;+eI-@is^))^C>Ap=O06Yq-$?c7APo?&VKv z))(zizAhAwtYInZ&irDhM>SGBFM>?d${LzoxNVMo=er+dj|dVX82(itvPy&nJI7R} zxal|{b!VXeY~=?NW24HG!g#W&q%^mz9C_k)O~vB$l!nR>c7Azkc41B0?h`G%re>$6 zR3XK_wP$L$`wA`+vfQ*It2kJ&bC8N#=Y*z`?T#poH4<6rMKBSth@G$Anh#P6geeX3 z66#s7^ZuFn%%U9v!&L5`a;i`|jy4C6tV1;wvTsBRf(1LrR7N-{7FL;Ru=vP|@loCg zW(jHMC_PwJ+DqF+1@u$zm8o8m$Y1m0V>0T?5;C37EIq_^W|6qn&f)G(Em&B}uDzZf z*)+}sw{t=Y4awlQ*0UI=qn@0G^f!D}&U?lzXXnrqYS25*U`_+Qpa)L`slkiwNPnpt zbLhf?onzn&_-r^=Y+@25re#c%ToI(Yb5h;e6h}ke&V&2_vM3~m`<859t@^AmkXN#4 zp3=nL641^=Hb@NJ0y10#e8NYUd#FM=yd}$j-ZOZiJuPn=y})eY?Y#H?ythe(9+=(P z=pO{n_Ag1zK#!ilNhilfXs;Am_;fC9#?QGvtNfjZ8h);==7&rFJ5QsnusaH>>SjHY zMC`QRjtOGt!fz}(jiG1vi5A$ZVuAvl9f!Vzpm3p#doq~Eg#RkU_3sSy1kxiU%8{*-oYZcOz=#QLgi{iP%6NR;q2W-(ziFHtAxczhQ%>g55VsxmVxu{OgA(z8>)V_eL6l3DJe$G5=tJp1|FDThBVI=FE7j=3tSDuEI+K+>VJ0yjG=W@S`oh zY;UN?#paSycm6BhAH$yR>Hg=JAHz8+5-u#Cw5f387dA))IagN=LE)YiRtGqa4{&&- z?Akk2Q!(?$O{HOxfl1vpCei`ivon?ZK`rFDC~Jz{*?3agX(WqeLDAmP6g%rA0{0<> zeqtzKYj)#fyZMfN2OiuS5UVdK(E;HAX;YO|@Z}oGtA&1=LO(l>HnWdoj~#w9CnQPu zz$YVGP~7xI^+ijcUcstRfTEHe{7dZ7Q=w&u@tA}I)g3C3b#`)vCi?y*=jMs3M4_;7 z>sC2k0T-cEZ{)}r0)&rGk$e2;VuY_meg`{ogL|Bk!JluaKhH%NZ8kn?5uft;?gWym z*MCY|fYs06&r)EvXweNU2#O3lwsaSN3LjB|<)5GbI&(^F8Ja$Saf5Dn zfe8N*NS_HTjLe(YbWiuKO3@!C&=suZc=@z@*Skh)DrGicOE-M=A%!7Zj9>aSC(&v#nWVj-o?-d4Br_8Z zDP85P;LTw*XT(K^Ln=~W$+dIA7^DnX@{`gzERF6PYOuNDqSwU8{M+dh76b)Z$^Np8 zK`L@#(IcfdSX4>r$FmU4GvlLe(Pp~uq7PD-^kM2p`;8cbRHVRCk`&s%0t^5+Kg1eL SSUIi$0000 - -
-
-
-
- -
-
- e -

()

-
- - -
-
-
- -
-
- -
-
-
-
-
- -
-
- -
No records
-
-
- -
-
-
- More... -
-
-
-
- -
-
- -
-
-
%
-
-
- - - -
-
-
-
- -
- -
- -
-
-
%
-
-
- from - -
-
-
-
- - -
-
-
- -
-
- - Target: - - - Target: <= - - -
-
-
-
-
- -
-
-
- -
-
-
- - -
- - - - - - - - - - - - - - - - - - -
-
-
-
-
-
-
- - diff --git a/mail_wall_widgets/views.xml b/mail_wall_widgets/views.xml deleted file mode 100644 index 2c2c4e8..0000000 --- a/mail_wall_widgets/views.xml +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - Widgets - mail.wall.widgets.widget - tree,form - -

- Click to create a Widget. -

-

- Widget allows to show some information at the inbox -

-
-
- - - Widget list view - mail.wall.widgets.widget - - - - - - - - - - - - Widget form view - mail.wall.widgets.widget - -
- - -
-
-
- - - Widget Search - mail.wall.widgets.widget - - - - - - - - - - - - - - -
-