commit d2282ecb283344402bb7a50b4008367e9b2f7c2d Author: Fabien Bourgeois Date: Thu Jul 21 10:25:44 2016 +0200 [ADD]Yaltik Odoo Addons : first commit with web widgets, portal projects improvements, yaltik backend theme... diff --git a/web_widget_email_check/__init__.py b/web_widget_email_check/__init__.py new file mode 100644 index 0000000..daa4ccf --- /dev/null +++ b/web_widget_email_check/__init__.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- + +# Author: Fabien Bourgeois. Copyright Yaltik +# Copyright (C) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . diff --git a/web_widget_email_check/__init__.pyc b/web_widget_email_check/__init__.pyc new file mode 100644 index 0000000..caa0dcc Binary files /dev/null and b/web_widget_email_check/__init__.pyc differ diff --git a/web_widget_email_check/__openerp__.py b/web_widget_email_check/__openerp__.py new file mode 100644 index 0000000..2c23524 --- /dev/null +++ b/web_widget_email_check/__openerp__.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- + +# Copyright 2016 Fabien Bourgeois +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +{ + 'name': 'Email widget check syntax', + 'summary': 'Extends Web Email widget to ensure valid syntax', + 'version': '0.1', + 'category': 'Usability', + 'author': 'Fabien Bourgeois', + 'license': 'AGPL-3', + 'installable': True, + 'depends': [ 'web' ], + 'data': [ 'view.xml' ] +} diff --git a/web_widget_email_check/static/src/js/web_widget_email_check.js b/web_widget_email_check/static/src/js/web_widget_email_check.js new file mode 100644 index 0000000..3ba387d --- /dev/null +++ b/web_widget_email_check/static/src/js/web_widget_email_check.js @@ -0,0 +1,31 @@ +/* +* Copyright 2016 Fabien Bourgeois +* +* This program is free software: you can redistribute it and/or modify it +* under the terms of the GNU Affero 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 Affero General Public +* License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* global openerp */ + +openerp.web_widget_email_check = function (instance) { + 'use strict'; + + var reEmail = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; + + instance.web.form.FieldEmail.include({ + is_syntax_valid: function () { + var val = this.$('input').val() || ''; + return ((val.length === 0) || reEmail.test(val)); + } + }); +}; diff --git a/web_widget_email_check/view.xml b/web_widget_email_check/view.xml new file mode 100644 index 0000000..88c39db --- /dev/null +++ b/web_widget_email_check/view.xml @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/web_widget_phone_check_fr/__init__.py b/web_widget_phone_check_fr/__init__.py new file mode 100644 index 0000000..daa4ccf --- /dev/null +++ b/web_widget_phone_check_fr/__init__.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- + +# Author: Fabien Bourgeois. Copyright Yaltik +# Copyright (C) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . diff --git a/web_widget_phone_check_fr/__init__.pyc b/web_widget_phone_check_fr/__init__.pyc new file mode 100644 index 0000000..b2e4403 Binary files /dev/null and b/web_widget_phone_check_fr/__init__.pyc differ diff --git a/web_widget_phone_check_fr/__openerp__.py b/web_widget_phone_check_fr/__openerp__.py new file mode 100644 index 0000000..8cd1da4 --- /dev/null +++ b/web_widget_phone_check_fr/__openerp__.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- + +# Copyright 2016 Fabien Bourgeois +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +{ + 'name': 'French format phone widget check', + 'summary': 'Extends Web Char widget to handle french format phone', + 'version': '0.1', + 'category': 'Usability', + 'author': 'Fabien Bourgeois', + 'license': 'AGPL-3', + 'installable': True, + 'depends': [ 'web' ], + 'data': [ 'view.xml' ] +} diff --git a/web_widget_phone_check_fr/static/src/js/web_widget_phone_check_fr.js b/web_widget_phone_check_fr/static/src/js/web_widget_phone_check_fr.js new file mode 100644 index 0000000..8cf2735 --- /dev/null +++ b/web_widget_phone_check_fr/static/src/js/web_widget_phone_check_fr.js @@ -0,0 +1,43 @@ +/* +* Copyright 2016 Fabien Bourgeois +* +* This program is free software: you can redistribute it and/or modify it +* under the terms of the GNU Affero 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 Affero General Public +* License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* global openerp */ + +openerp.web_widget_phone_check_fr = function (instance) { + 'use strict'; + + var rePhone = /^\d{10}$/; + + openerp.web.form.FieldPhoneFr = + instance.web.form.FieldChar.extend({ + template: 'FieldEmail', + is_syntax_valid: function () { + var val = this.$('input').val() || ''; + return ((val.length === 0) || rePhone.test(val)); + }, + render_value: function() { + if (!this.get('effective_readonly')) { + this._super(); + } else { + var val = this.get('value') || ''; + this.$el.find('a').attr('href', 'tel:' + val).text(val); + } + } + }); + + instance.web.form.widgets.add('phonefr', 'instance.web.form.FieldPhoneFr'); +}; diff --git a/web_widget_phone_check_fr/static/src/xml/qweb.xml b/web_widget_phone_check_fr/static/src/xml/qweb.xml new file mode 100644 index 0000000..98a9ab5 --- /dev/null +++ b/web_widget_phone_check_fr/static/src/xml/qweb.xml @@ -0,0 +1,36 @@ + + + + + + + + +
+ +
+
+
+
+
diff --git a/web_widget_phone_check_fr/view.xml b/web_widget_phone_check_fr/view.xml new file mode 100644 index 0000000..2c810e3 --- /dev/null +++ b/web_widget_phone_check_fr/view.xml @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/web_widget_url_check/__init__.py b/web_widget_url_check/__init__.py new file mode 100644 index 0000000..daa4ccf --- /dev/null +++ b/web_widget_url_check/__init__.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- + +# Author: Fabien Bourgeois. Copyright Yaltik +# Copyright (C) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . diff --git a/web_widget_url_check/__init__.pyc b/web_widget_url_check/__init__.pyc new file mode 100644 index 0000000..caa0dcc Binary files /dev/null and b/web_widget_url_check/__init__.pyc differ diff --git a/web_widget_url_check/__openerp__.py b/web_widget_url_check/__openerp__.py new file mode 100644 index 0000000..0908fed --- /dev/null +++ b/web_widget_url_check/__openerp__.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- + +# Copyright 2016 Fabien Bourgeois +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +{ + 'name': 'URL widget check syntax', + 'summary': 'Extends Web URL widget to ensure valid syntax', + 'version': '0.1', + 'category': 'Usability', + 'author': 'Fabien Bourgeois', + 'license': 'AGPL-3', + 'installable': True, + 'depends': [ 'web' ], + 'data': [ 'view.xml' ] +} diff --git a/web_widget_url_check/static/src/js/web_widget_url_check.js b/web_widget_url_check/static/src/js/web_widget_url_check.js new file mode 100644 index 0000000..a46dc6c --- /dev/null +++ b/web_widget_url_check/static/src/js/web_widget_url_check.js @@ -0,0 +1,31 @@ +/* +* Copyright 2016 Fabien Bourgeois +* +* This program is free software: you can redistribute it and/or modify it +* under the terms of the GNU Affero 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 Affero General Public +* License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +*/ + +/* global openerp */ + +openerp.web_widget_url_check = function (instance) { + 'use strict'; + + var reUrl = /(?:https?:\/\/)?(?:[\w]+\.)([a-zA-Z\.]{2,6})([\/\w\.-]*)*\/?/; + + instance.web.form.FieldUrl.include({ + is_syntax_valid: function () { + var val = this.$('input').val() || ''; + return ((val.length === 0) || reUrl.test(val)); + } + }); +}; diff --git a/web_widget_url_check/view.xml b/web_widget_url_check/view.xml new file mode 100644 index 0000000..7df5bfd --- /dev/null +++ b/web_widget_url_check/view.xml @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/yaltik_backend_theme/__init__.py b/yaltik_backend_theme/__init__.py new file mode 100644 index 0000000..643d893 --- /dev/null +++ b/yaltik_backend_theme/__init__.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- + +# Copyright 2016 Fabien Bourgeois +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . diff --git a/yaltik_backend_theme/__openerp__.py b/yaltik_backend_theme/__openerp__.py new file mode 100644 index 0000000..21e3037 --- /dev/null +++ b/yaltik_backend_theme/__openerp__.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- + +# Copyright 2016 Fabien Bourgeois +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +{ + 'name': 'Yaltik Backend Theme', + 'summary': 'Yaltik Backend Green theme', + 'version': '0.1', + 'category': 'Backend', + 'author': 'Fabien Bourgeois', + 'website': 'http://www.yaltik.com', + 'description': """ Yaltik Backend Green theme, based upon great + DodgerBlue Backend Theme from OpenWorx : + https://github.com/Openworx/themes/tree/8.0/dodgerblue_backend_theme """, + 'installable': True, + 'depends': ['base'], + 'data': ['views.xml'] +} diff --git a/yaltik_backend_theme/static/description/icon.png b/yaltik_backend_theme/static/description/icon.png new file mode 100644 index 0000000..5e4587e Binary files /dev/null and b/yaltik_backend_theme/static/description/icon.png differ diff --git a/yaltik_backend_theme/static/src/css/main.css b/yaltik_backend_theme/static/src/css/main.css new file mode 100644 index 0000000..2b43478 --- /dev/null +++ b/yaltik_backend_theme/static/src/css/main.css @@ -0,0 +1,1647 @@ +.openerp .oe_form_group td, +.openerp td, +enerp th { + vertical-align: top +} + +@font-face { + font-family: Roboto; + src: url(/dodgerblue_backend_theme/static/src/font/Roboto-Regular.ttf) +} + +.openerp, +.ui-widget, +body { + font-family: Roboto, "Helvetica Neue", Helvetica, Arial, sans-serif!important +} + +.openerp.openerp_webclient_container { + height: calc(100% - 55px) +} + +.openerp .oe_horizontal_separator { + color: #007B3E; + font-size: 20px; + font-weight: 700; + margin: 15px 0 10px +} + +#menu_more li a, +#menu_more li button { + padding: 15px!important +} + +#oe_main_menu_navbar { + background: #007B3E!important; + box-shadow: 0 0 8px #666 +} + +#oe_main_menu_navbar .dropdown-menu li a, +#oe_main_menu_navbar .dropdown-menu li button { + padding: 10px 7px!important +} + +#oe_main_menu_navbar .navbar-nav.navbar-right:last-child { + float: right!important +} + +#oe_main_menu_navbar .oe_topbar_avatar { + max-height: 18px!important +} + +#oe_main_menu_navbar li a, +#oe_main_menu_navbar li button { + font-size: 14px!important; + margin-top: 0!important; + padding: 14px 7px!important +} + +.ul_toggle_leftmenu { + padding-left: 0; + list-style: none; + margin-bottom: 0!important; + max-width: 50px +} + +.toggle_leftmenu { + color: #FFF!important; + padding: 14px +} + +.toggle_leftmenu:hover { + color: #FFF!important; + cursor: pointer; + background-color: #383431 +} + +.btn-primary, +.oe_suggestion_follow { + background: #5e35b1!important; + border: none!important; + box-shadow: none!important; + color: #fff!important +} + +.openerp ul.oe_form_status_clickable li.oe_active:hover>.label, +.openerp ul.oe_form_status_clickable li:hover>.label { + text-decoration: underline!important +} + +.btn.oe_follower.oe_notfollow { + background: #007B3E!important +} + +.dropdown-menu .active a { + background: #fff!important; + color: #000!important; + font-weight: 700 +} + +.dropdown-menu a:hover { + background: #f9f9f9!important; + color: #000 +} + +.navbar .oe_topbar_name { + height: 15px!important +} + +.navbar-inverse .navbar-nav>.active>a, +.navbar-inverse .navbar-nav>.active>a:focus, +.navbar-inverse .navbar-nav>.active>a:hover { + background: #383431!important; + font-weight: 700!important +} + +.oe-autocomplete li { + padding: 10px 20px +} + +.oe_application { + background: #f9f9f9!important +} + +.oe_application_menu_placeholder>li.active:hover { + border-bottom: 0!important +} + +.oe_attachment_file * { + cursor: pointer!important +} + +.oe_breadcrumb_item { + font-size: 22px!important; + font-weight: 400!important +} + +.oe_breadcrumb_title span { + color: #007B3E!important; + font-size: 32px!important +} + +.openerp .oe_application .oe_breadcrumb_title>* { + display: inline-block; + font-weight: 700; + overflow: hidden +} + +.openerp .oe_view_manager table.oe_view_manager_header .oe_header_row h2 { + font-weight: 400; + color: #007B3E!important; + font-size: 32px!important +} + +.oe_button { + box-shadow: none!important +} + +.oe_calendar_sidebar .ui-datepicker-month { + margin-left: -10px!important; + text-align: center +} + +.oe_calendar_sidebar span.ui-icon.ui-icon-circle-triangle-e, +.oe_calendar_sidebar span.ui-icon.ui-icon-circle-triangle-w { + top: 4px +} + +.oe_calendar_table.oe_view.oe_cannot_create { + width: 99% +} + +.oe_e a { + border: none!important; + font-size: 48px!important +} + +.oe_facet_category.oe_i { + margin-top: -1px!important +} + +.oe_form header .oe_form_field_status.oe_form_status_clickable li:last-of-type ul.oe_dropdown_menu.oe_opened { + left: initial!important; + right: 5px!important; + width: 150px!important +} + +.oe_form_container.oe_form_nosheet>span { + width: 100%; + margin-top: 5px!important +} + +.oe_form_field_status .label { + margin-right: 5px!important +} + +.oe_form_field_status .oe_active .label { + color: #383431!important; + font-weight: 700 +} + +.oe_form_field_status li .arrow span { + margin-top: 7px!important; + width: 13px!important +} + +.openerp .oe_leftbar { + border-right: 1px solid #bfbfc6 +} + +.oe_leftbar { + background: 0!important; + padding: 0!important +} + +.oe_link { + background: 0 0; + text-shadow: none!important; + padding: 0!important +} + +.openerp_style.oe_im_chatview.ui-droppable { + background: #fff!important; + min-height: 48px +} + +.oe_im_chatview { + width: 230px +} + +.oe_im_chatview .oe_im_chatview_header_name { + height: 20px +} + +.oe_im_chatview .oe_im_chatview_date_separator { + width: auto; + margin: 0 17px +} + +.oe_im, +.oe_im .oe_im_frame_header { + background: #f9f9f9 +} + +.oe_im_user:hover { + background: #eee +} + +.oe_msg { + background: #fff!important; + box-shadow: 0 1px 3px rgba(0, 0, 0, .12), 0 1px 2px rgba(0, 0, 0, .24)!important +} + +.oe_searchview { + background: #f9f9f9!important; + border: none!important; + border-bottom: #e0e0e0 2px solid!important; + border-radius: 0!important; + box-shadow: none!important; + height: 30px; + padding: 10px!important +} + +.oe_secondary_menu_section { + color: #4c4c4c!important; + font-size: 13px!important; + font-weight: bolder!important; + padding-left: 0!important +} + +.oe_secondary_submenu .oe_menu_leaf { + border-left: 2px solid transparent!important; + color: #333!important; + display: block!important; + font-weight: 400!important; + letter-spacing: .1px!important; + padding: 6px 4px 2px 18px!important +} + +.oe_secondary_submenu li.active a { + background: 0!important; + color: #383431!important; + font-weight: 700!important +} + +.oe-selection-focus { + background-color: #007B3E!important +} + +.oe_tag.oe_tag_dark.oe_searchview_facet { + background: #eee!important; + border: 1px solid #ccc!important; + border-radius: 0!important; + padding: 3px 3px 1px!important +} + +.oe_thread { + margin: 10px 0 15px +} + +.oe_tree_table { + background: #fff; + box-shadow: 0 1px 3px rgba(0, 0, 0, .12), 0 1px 2px rgba(0, 0, 0, .24); + margin: 30px 0 +} + +.oe_view_manager_header { + background: 0!important +} + +.oe_view_manager_switch { + background: #f9f9f9!important; + border: none!important +} + +.oe_view_manager_switch li a { + display: block!important +} + +.openerp .nav-pills>li.active .badge, +.openerp a.list-group-item.active .badge { + background: #ddd; + color: #4c4c4c; + font-weight: 700 +} + +.openerp .oe-treeview-table span { + font-weight: 700 +} + +.openerp .oe-treeview-table td { + border: none; + font: 700 13px Roboto, "Helvetica Neue", Helvetica, Arial, sans-serif!important; + min-height: 80px!important; + padding: 15px 0 15px 15px!important +} + +.openerp .oe-treeview-table th { + background: #eee!important; + color: #757575; + padding-left: 25px +} + +.openerp .oe_application .oe_form_sheet { + background: #fff; + border: none; + border-radius: 0; + box-shadow: 0 1px 3px rgba(0, 0, 0, .12), 0 1px 2px rgba(0, 0, 0, .24)!important +} + +.openerp .oe_application .oe_view_manager_pager a, +.openerp .oe_application .oe_view_manager_switch a { + color: #4c4c4c!important +} + +.openerp .oe_application a { + color: #007B3E +} + +.openerp .oe_button.oe_link span { + color: inherit!important +} + +.openerp .oe_button.oe_link span:hover { + color: inherit +} + +.openerp .oe_dropdown_menu>li:hover { + background: #f5f5f5!important +} + +.openerp .oe_followers button.oe_follower.oe_following, +button.btn.oe_follower.oe_notfollow { + border-radius: 0!important +} + +.openerp .oe_followers button.oe_follower.oe_following { + background-color: #383431!important; + background-image: linear-gradient(to bottom, #383431, #383431)!important; + color: #fff +} + +.openerp .oe_form div.oe_chatter { + max-width: none!important; + padding: 8px +} + +.openerp .oe_form_sheet_width { + max-width: none +} + +.openerp .oe_form_sheetbg { + padding: 0 0 10px +} + +.openerp .oe_form_sheetbg.openerp_mail_group_sheet .oe_form_sheet { + padding: 18px +} + +.openerp .oe_leftbar>div a.oe_logo { + height: 100px!important +} + +.openerp .oe_list_content>tbody>tr>td>button, +.openerp .oe_list_content>tbody>tr>th>button { + color: #888!important +} + +.openerp .oe_searchview .oe_searchview_facets { + border-radius: 0!important; + margin-top: -9px!important +} + +.openerp .oe_searchview_drawer .button { + color: #007B3E!important +} + +.openerp .oe_searchview_drawer dt { + color: #2096f3; + font-size: 13px; + line-height: 24px +} + +.openerp .oe_secondary_submenu .oe_menu_opened:before { + margin: 6px 0 0 +} + +.openerp .oe_secondary_submenu .oe_menu_toggler:before { + margin-left: -8px +} + +.openerp .oe_view_manager table.oe_view_manager_header .oe_button_group .active a { + color: #383431!important; + text-shadow: none!important +} + +.openerp .oe_view_manager table.oe_view_manager_header .oe_button_group li { + border: none!important; + margin: 0 5px!important +} + +.oe_facet_category, +.oe_facet_values, +.openerp .oe_tag_dark { + background: 0 0; + border: none!important; + color: #383431!important; + font-size: 12px; + font-weight: 700!important; + text-shadow: none!important +} + +.openerp .oe_view_manager table.oe_view_manager_header .oe_button_group .active { + background: #f9f9f9!important; + border: none!important; + border-radius: 50%!important; + box-shadow: none!important +} + +.openerp button:disabled { + border-radius: 0; + box-shadow: none; + color: #444; + height: auto; + width: auto; + padding: 8px 16px +} + +.oe_form_field_status li, +.oe_form_field_status li span, +.openerp ul.oe_form_status li.oe_active, +.openerp ul.oe_form_status_clickable li.oe_active { + background: 0 0!important; + border: none!important; + text-shadow: none!important +} + +.ui-datepicker-month, +.ui-datepicker-year { + border: none!important; + box-shadow: none!important; + display: inline-block!important; + width: 55px!important; + background: #eee!important +} + +.pull-left { + float: left!important +} + +.stat_button_icon:before { + font-size: 16px!important; + margin: 7px!important +} + +.ui-datepicker { + height: auto +} + +.ui-datepicker-month { + text-align: right!important; + margin: 0 0 0 20px!important +} + +.oe_calendar_sidebar .ui-datepicker .ui-datepicker-next, +.oe_calendar_sidebar .ui-datepicker .ui-datepicker-prev { + top: 12px +} + +.openerp .oe_application .ui-datepicker-calendar a { + color: #383431 +} + +.openerp .oe_application .ui-datepicker-calendar .ui-state-active { + background: #383431; + color: #fff; + border-radius: 0 +} + +.openerp .oe_application .ui-datepicker td .ui-state-hover { + background: #2096F3; + color: #fff; + cursor: pointer +} + +.ui-menu-item .ui-state-focus { + background: 0 0; + text-shadow: none!important +} + +.openerp .oe_remove_follower { + right: 20px +} + +.oe_im_chatview .oe_im_chatview_time { + right: 15px +} + +.ui-menu .ui-menu-item a.ui-state-active, +.ui-menu .ui-menu-item a.ui-state-focus { + background: 0 0; + color: inherit +} + +.oe_im_chatview_header { + height: 48px; + background: #eee!important; + font-weight: 700; + border-bottom: #ccc 1px solid!important +} + +.oe_im_chatview_header_name { + margin: 12px 10px +} + +.oe_im_chatview_message_bubble { + margin-left: 10px!important +} + +.oe_im_chatview_clip { + box-shadow: 0 1px 3px rgba(0, 0, 0, .12), 0 1px 2px rgba(0, 0, 0, .24)!important; + left: -5px +} + +.openerp .oe_list_content td.oe_list_field_handle .oe_list_handle { + margin-top: 6px +} + +.openerp .oe_list_content>tbody>tr>td>button { + box-shadow: none +} + +.openerp .oe_list_content>tbody>tr>td>button:hover { + color: #383431!important +} + +.nav-pills>li>a>.badge { + margin-right: 10px +} + +.openerp .ui-datepicker-calendar thead, +.openerp .ui-datepicker-calendar thead tr th, +.ui-datepicker .ui-datepicker-header { + background: #eee!important; + padding: 5px +} + +.openerp .oe_list.oe_list_editable.oe_editing .oe_form_field textarea { + height: 32px!important; + border-bottom: #ddd 2px solid!important; + outline: 0 +} + +.oe_form_container.oe_form_nosheet>* { + border: none +} + +.modal-header { + min-height: 45px; + background-color: #f9f9f9 +} + +.modal-header button.close { + margin-top: -7px; + color: #444 +} + +.modal-body { + background-color: #fff +} + +.modal-footer { + background-color: #f9f9f9 +} + +.oe_msg_content .oe_full { + margin-top: -5px!important +} + +.oe-treeview-table th { + background: #fff +} + +.navbar-inverse, +.openerp thead th, +.ui-datepicker-buttonpane { + border: none!important +} + +.navbar-inverse .navbar-nav>.open>a, +.navbar-inverse .navbar-nav>.open>a:focus, +.navbar-inverse .navbar-nav>.open>a:hover, +.oe_application_menu_placeholder>li.active a:hover, +.oe_application_menu_placeholder>li:hover { + background: #383431!important +} + +.oe_breadcrumb_title a.oe_breadcrumb_item { + color: #888!important; + font-size: 24px!important +} + +.openerp .oe_fade { + color: #888!important +} + +.oe_form_sheetbg, +.openerp .oe_form header { + padding: 8px +} + +.openerp .oe_form header { + background: #ededed +} + +.openerp .oe_form>.oe_form_nosheet header, +.openerp .oe_form_container.oe_form>:not(.oe_form_nosheet) header { + padding-left: 8px +} + +.openerp .oe_application .oe_form header .oe_button { + float: left +} + +.openerp .oe_application .oe_form .oe_form_configuration header .oe_button { + float: none +} + +.oe_im_user, +.oe_msg.oe_msg_composer { + padding: 10px +} + +.oe_module_desc, +.ui-datepicker-month option, +.ui-datepicker-year option { + color: #888 +} + +.oe_searchview.oe_focused, +.openerp .oe_list.oe_list_editable.oe_editing .oe_form_field textarea:focus { + border-bottom: #007B3E 3px solid!important +} + +.navbar-inverse .navbar-nav>li>a { + color: #fff +} + +.openerp .oe_list_content .oe_group_header th { + padding: 12px 8px 10px!important +} + +.openerp .oe_list_content>tbody>tr:nth-child(odd) { + background: #fff +} + +.openerp thead th { + font-size: 14px +} + +.openerp .oe_list .oe_list_content .oe_group_header { + background-image: none +} + +.openerp .oe_list_content td, +.openerp .oe_list_content th, +.openerp .oe_list_content>tbody>tr>td.oe_list_field_cell, +.openerp .oe_list_editable .oe_list_content td.oe_list_field_cell { + padding: 10px 6px +} + +.openerp .oe_list_content th { + padding: 0 8px!important +} + +.openerp .oe_list_content .oe_list_header_columns th { + padding: 12px 8px 10px!important +} + +.openerp .oe_form_editable .oe_list_editable .oe_list_content td.oe_required { + background: #EDE7F6 +} + +.openerp .oe_list.oe_list_editable.oe_editing .oe_form_field input, +.openerp .oe_list.oe_list_editable.oe_editing .oe_form_field textarea { + border: none; + border-bottom: #ccc 2px solid +} + +.openerp .oe_list.oe_list_editable.oe_editing .oe_form_field input:focus, +.openerp .oe_list.oe_list_editable.oe_editing .oe_form_field textarea:focus { + border-color: #007B3E +} + +.openerp .oe_kanban_view { + background: #8c8c8c!important +} + +.openerp .oe_kanban_group_header span.oe_tag { + background: #fff!important; + color: #000!important +} + +.openerp .oe_kanban_view .oe_kanban_ungrouped .oe_kanban_column .oe_kanban_record { + padding: 10px!important +} + +.openerp .oe_kanban_view.oe_background_grey>table.oe_kanban_groups { + width: 100%!important +} + +.oe_employee_vignette, +.oe_module_vignette, +.openerp .oe_kanban_view .oe_kanban_vignette { + padding: 10px; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, .16); + border-bottom-color: rgba(0, 0, 0, .3); + overflow: hidden; + text-align: left +} + +.openerp .oe_kanban_view .oe_kanban_record, +.openerp .oe_kanban_view.oe_kanban_ungrouped .oe_kanban_column .oe_kanban_column_cards { + text-align: left!important +} + +.openerp .oe_kanban_view .oe_kanban_card, +.openerp .oe_kanban_view .oe_kanban_quick_create { + padding: 10px!important +} + +.openerp .oe_kanban_view .oe_kanban_crm_salesteams { + width: 364px!important +} + +.openerp .oe_kanban_content h4 { + font-size: 16px!important +} + +.openerp .oe_kanban_view .oe_kanban_salesteams_avatars { + margin-top: 10px!important +} + +.openerp .oe_kanban_view .oe_kanban_footer_left .oe_kanban_mail_new { + background-color: #007B3E!important; + font-weight: 400!important; + padding: 0 5px!important +} + +.openerp .oe_kanban_view .oe_kanban_footer_left>span { + border: none!important +} + +.openerp .oe_kanban_view .oe_kanban_footer_left>span .oe_e { + line-height: 16px!important; + font-size: 23px!important +} + +.openerp .oe_kanban_view .oe_dropdown_kanban { + margin-top: -8px!important +} + +.openerp .oe_kanban_view .oe_kanban_project_list { + margin-top: 8px!important +} + +.openerp .oe_kanban_view.oe_kanban_ungrouped .oe_kanban_column .oe_kanban_record { + padding: 4px!important +} + +.openerp .oe_kanban_view .oe_kanban_group_header, +.openerp .oe_kanban_view.oe_kanban_grouped .oe_kanban_column { + color: #fff!important; + background: #8c8c8c!important; + padding: 5px!important; + border-left: none!important; + border-right: none!important +} + +.openerp .oe_form .oe_kanban_view .oe_kanban_column, +.openerp .oe_form .oe_kanban_view .oe_kanban_group_header, +.openerp .oe_kanban_view .oe_kanban_groups_records { + background: #8c8c8c!important +} + +.openerp .oe_kanban_view .oe_kanban_group_header:nth-of-type(2n), +.openerp .oe_kanban_view.oe_kanban_grouped .oe_kanban_column:nth-of-type(2n) { + background: #777!important +} + +.openerp .oe_kanban_view .oe_kanban_group_header.oe_kanban_column_higlight, +.openerp .oe_kanban_view.oe_kanban_grouped .oe_kanban_column.oe_kanban_column_higlight { + background: #424242!important +} + +.openerp .oe_kanban_view.oe_kanban_grouped .oe_kanban_dummy_cell { + background: #8c8c8c!important +} + +.openerp .oe_kanban_view .oe_kanban_group_title { + text-shadow: none!important; + color: #fff!important; + font-size: 18px!important; + font-weight: 400!important +} + +.openerp .oe_kanban_view .oe_kanban_group_title_undefined { + color: #eee +} + +.openerp .oe_kanban_view .oe_kanban_card, +.openerp .oe_kanban_view .oe_kanban_quick_create { + border-radius: 0!important +} + +.openerp .oe_kanban_view .oe_kanban_group_header, +.openerp .oe_kanban_view.oe_kanban_grouped .oe_kanban_column { + border: none!important +} + +.openerp span.oe_tag { + background: #e5e5e5!important; + border-radius: 0!important; + padding: 3px 4px!important; + border: none!important +} + +.openerp .oe_mail_wall .oe_goal, +.openerp .oe_mail_wall .oe_mail_wall_aside>div { + border-bottom: solid 5px #F9F9F9 +} + +.openerp .oe_kanban_view .oe_kanban_footer_left .oe_tags .oe_tag { + padding: 4px!important +} + +.openerp .oe_kanban_view.oe_kanban_grouped .oe_kanban_record { + margin-bottom: 20px!important +} + +.openerp .oe_kanban_view .oe_kanban_bottom_right { + width: 100%!important +} + +.openerp .oe_kanban_view .oe_kanban_text_red { + color: #007B3E!important; + text-decoration: none!important +} + +.openerp .oe_kanban_view .oe_kanban_footer_left>span { + background: 0 0!important; + padding: 0!important; + color: #000 +} + +.openerp .oe_kanban_view .oe_kanban_group_title_vertical { + top: 62px!important +} + +.oe_kanban_details { + height: 120px!important +} + +.openerp .oe_mail .oe_msg .oe_msg_icons { + margin-top: -6px +} + +.openerp .oe_mail_wall .oe_mail { + margin: 0; + width: 70%; + float: left; + padding: 16px +} + +.openerp .oe_mail_wall .oe_mail_wall_aside { + margin: 0; + width: 30%; + float: left; + padding: 16px +} + +.openerp .oe_mail .oe_msg_content.oe_msg_more_message { + text-align: center +} + +.openerp .oe_mail .oe_msg_more_message .oe_msg_fetch_more { + margin-right: 0 +} + +.openerp .oe_mail .oe_msg .oe_msg_left { + left: 7px; + top: 7px +} + +.oe_msg_comment, +.openerp .oe_mail .oe_msg.oe_msg_nobody { + margin: 10px 0!important; + padding: 10px!important +} + +.openerp .oe_mail .oe_msg.oe_msg_notification { + padding: 10px +} + +.openerp .oe_mail button.oe_attach { + color: #aaa!important; + margin-top: -10px!important +} + +.openerp .oe_mail_wall .oe_mail_wall_aside h4 { + text-align: left; + padding-bottom: 0; + font-weight: 400; + font-size: 18px +} + +.openerp .oe_mail_wall .oe_mail_wall_aside .oe_goals_list .oe_thead { + text-align: left; + padding-bottom: 0 +} + +.oe_gamification_challenge_list .openerp h4 { + margin: 10px 0; + font-weight: 400; + font-size: 18px +} + +.openerp .oe_sidebar_suggestion .oe_suggest_items .oe_suggested_item { + margin-left: 0 +} + +.openerp .oe_sidebar_suggestion .oe_suggest_title h2 { + font-size: 18px; + font-weight: 400; + margin-left: 0; + text-align: left; + margin-top: 10px +} + +.openerp .oe_mail_wall_aside .oe_sidebar_suggestion { + padding: 5px 10px +} + +.openerp .oe_mail_wall .oe_goal { + margin-bottom: 0 +} + +.openerp .oe_sidebar_suggestion .oe_suggest_items .oe_suggested_item_content a.oe_suggestion_remove_item { + margin-right: 7px +} + +.openerp .oe_mail_wall .oe_goal .oe_goal_action.oe_e, +.openerp .oe_mail_wall .oe_goal .oe_update_challenge.oe_e { + line-height: 15px; + margin-top: -2px; + float: right; + margin-right: 7px +} + +.openerp .oe_view_manager_current>.oe_view_manager_header { + box-shadow: none; + -webkit-box-shadow: none; + padding: 20px 0 10px; + border-bottom: 1px solid #bfbfc6 +} + +.openerp .oe_searchview_drawer { + padding: 10px 0; + background-color: #fff +} + +.oe_form_field>span>div { + margin-bottom: 5px +} + +.openerp .oe_form input[disabled], +.openerp .oe_form input[readonly], +.openerp .oe_form input[type=text], +.openerp .oe_form input[type=password], +.openerp .oe_form input[type=file], +.openerp .oe_form select, +.openerp .oe_form select[disabled], +.openerp .oe_form select[readonly], +.openerp .oe_form textarea, +.openerp .oe_form textarea[readonly], +.text-core .text-wrap { + background: 0 0; + font-family: inherit +} + +.openerp .oe_form input[type=text], +.openerp .oe_form input[type=password], +.openerp .oe_form input[type=file], +.openerp .oe_form select { + height: 24px +} + +input[type=checkbox], +input[type=radio] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; + outline: 0!important; + background: 0 0; + max-width: 16px; + margin: 1px 0 0!important; + line-height: normal!important +} + +.checkbox-inline+.checkbox-inline, +.radio-inline+.radio-inline { + margin-top: 0; + margin-left: 10px +} + +fieldset[disabled] input[type=checkbox], +fieldset[disabled] input[type=radio], +input[type=checkbox].disabled, +input[type=checkbox][disabled], +input[type=radio].disabled, +input[type=radio][disabled] { + cursor: not-allowed +} + +input[type=radio] { + position: relative; + margin-top: 6px; + margin-right: 4px; + vertical-align: top; + border: none; + background-color: transparent; + -webkit-appearance: none; + appearance: none; + cursor: pointer +} + +.checkbox input[type=checkbox]:focus, +.checkbox-inline input[type=checkbox]:focus, +input[type=checkbox]:focus, +input[type=radio]:focus { + outline: 0 +} + +input[type=radio]:after, +input[type=radio]:before { + content: ""; + display: block; + width: 18px; + height: 18px; + border-radius: 50% +} + +input[type=radio]:before { + position: absolute; + left: 0; + top: -3px; + background-color: #2196f3; + -webkit-transform: scale(0); + -ms-transform: scale(0); + -o-transform: scale(0); + transform: scale(0) +} + +input[type=radio]:after { + position: relative; + top: -3px; + border: 2px solid #666 +} + +input[type=radio]:checked:before { + -webkit-transform: scale(.5); + -ms-transform: scale(.5); + -o-transform: scale(.5); + transform: scale(.5) +} + +input[type=radio]:disabled:checked:before { + background-color: #bbb +} + +input[type=radio]:checked:after { + border-color: #2196f3 +} + +input[type=radio]:disabled:after { + border-color: #bbb +} + +input[type=checkbox] { + position: relative; + border: none; + margin-bottom: -4px; + -webkit-appearance: none; + appearance: none; + cursor: pointer +} + +.checkbox input[type=checkbox]:after, +.checkbox-inline input[type=checkbox]:after, +input[type=checkbox]:after { + content: ""; + display: block; + width: 18px; + height: 18px; + margin-top: -2px; + margin-right: 5px; + border: 2px solid #666; + border-radius: 0 +} + +.checkbox input[type=checkbox]:checked:before, +.checkbox-inline input[type=checkbox]:checked:before, +input[type=checkbox]:checked:before { + content: ""; + position: absolute; + left: 6px; + display: table; + width: 6px; + height: 12px; + border: 2px solid #fff; + border-top-width: 0; + border-left-width: 0; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg) +} + +input[type=checkbox]:checked:after { + background-color: #2196f3; + border-color: #2196f3 +} + +input[type=checkbox]:disabled:after { + border-color: #bbb +} + +input[type=checkbox]:disabled:checked:after { + background-color: #bbb; + border-color: transparent +} + +.openerp .oe_form .oe_form_required input:not([disabled]):not([readonly]) { + background: 0 0!important +} + +.openerp input[type=text], +.openerp input[type=textarea], +.openerp select, +.openerp textarea { + border: none; + border-bottom: #ccc 2px solid; + border-radius: 0; + background: 0 0; + outline: 0 +} + +.openerp input[type=text]:focus, +.openerp input[type=textarea]:focus, +.openerp select:focus, +.openerp textarea:focus { + border-color: #007B3E +} + +.openerp .oe_form .oe_form_required input:not([disabled]):not([readonly]), +.openerp .oe_form .oe_form_required select:not([disabled]):not([readonly]), +.openerp .oe_form .oe_form_required textarea:not([disabled]):not([readonly]) { + background: 0 0!important; + border-color: #383431 +} + +.openerp .oe_form .oe_form_required input:not([disabled]):not([readonly]):focus, +.openerp .oe_form .oe_form_required select:not([disabled]):not([readonly]):focus, +.openerp .oe_form .oe_form_required textarea:not([disabled]):not([readonly]):focus { + border-color: #007B3E!important +} + +.openerp .oe_form_field_radio.oe_vertical label { + margin-left: 10px +} + +.openerp .oe_form_field_radio.oe_form_required .oe_radio_input { + border: 0 +} + +.openerp .oe_form .oe_form_invalid input, +.openerp .oe_form .oe_form_invalid select, +.openerp .oe_form .oe_form_invalid textarea { + border: none!important; + border-bottom: #007B3E 2px solid!important +} + +input { + color: #000 +} + +.btn-default.active, +.btn-default:active, +.btn-default:focus, +.btn-default:hover, +.open>.dropdown-toggle.btn-default, +.openerp .oe_kanban_group_header .oe_dropdown_toggle.oe_dropdown_kanban, +.openerp button.oe_dropdown_toggle { + color: #fff +} + +.openerp .oe_form .oe_form_field { + padding: 2px 8px 2px 0; + vertical-align: middle +} + +.openerp .oe_kanban_view .oe_kanban_action_button { + height: 25px +} + +.openerp .oe_button:focus, +.openerp a.button:focus, +.openerp button:focus, +.openerp input[type=submit]:focus { + background: #383431; + border: none; + outline: 0; + box-shadow: none +} + +.openerp .oe_button, +.openerp a.button:link, +.openerp a.button:visited, +.openerp button, +.openerp input[type=submit] { + background: #007B3E; + border: none; + box-shadow: none; + outline: 0; + padding: 5px 10px; + border-radius: 0; + color: #fff; + text-shadow: none +} + +.openerp .oe_button:hover, +.openerp a.button:hover, +.openerp button:hover, +.openerp input[type=submit]:hover { + background: #383431 +} + +.btn.btn-default.dropdown-toggle { + padding: 5px; + border: none; + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.oe_kanban_show_more { + min-height: 50px +} + +.openerp .badge { + background-color: #383431!important; + color: #fff!important; + font-size: 11px; + font-weight: 700!important +} + +.oe_pager_group a.oe_i { + display: block; + margin-top: -2px; + font-size: 18px +} + +label.btn-default.active span.fa, +label.btn-default:hover span.fa { + color: #000 +} + +.openerp .oe_button:disabled, +.openerp a.button.disabled, +.openerp button:disabled, +.openerp input[type=submit]:disabled { + text-shadow: none!important; + border: none!important; + background: #EEE!important +} + +.openerp button.oe_highlight { + background: #FF0000; +} + +.openerp button.oe_highlight:hover { + background: #383431; +} + +.openerp .oe_view_manager_current .oe_form_editable button.oe_highlight { + background: #383431; + border: none; + outline: 0; + box-shadow: none; + color: #fff +} + +.openerp .oe_view_manager_current .oe_form_editable button.oe_highlight:hover { + background: #004D40; + border: none; + outline: 0; + box-shadow: none; + color: #fff +} + +.openerp .oe_followers button.btn.btn-default.dropdown-toggle, +.openerp .oe_followers button.oe_follower.oe_following { + background: #383431 +} + +.openerp .oe_followers button.btn.btn-default.dropdown-toggle:hover, +.openerp .oe_followers button.oe_follower.oe_following:hover { + background: #007B3E +} + +.openerp .oe_msg_subtype_check { + margin: 7px 7px 0!important +} + +.openerp .oe_button.oe_link { + color: #007B3E; + font-weight: 700; + background: 0 0 +} + +.openerp .oe_searchview_drawer .oe_searchview_section li { + padding: 2px 5px; + background-color: #f2f2f2; + margin: 0 2px 2px 0; + line-height: 21px +} + +.openerp .oe_searchview_drawer .oe_searchview_section .oe_searchview_custom_list li { + padding: 0 5px +} + +.openerp .oe_searchview_drawer .oe_searchview_section li.badge { + background-color: #2096F3; + border-radius: 0; + font-size: 13px; + line-height: 21px +} + +.openerp .oe_searchview_custom_list .badge { + padding: 4px 7px; + border-radius: 0 +} + +.openerp .oe_searchview_drawer h4, +.openerp .oe_searchview_drawer h4 * { + margin: 2px 0; + font-weight: 700; + padding: 2px 5px +} + +.openerp .oe_searchview_drawer .oe_searchview_section ul { + margin: 0 +} + +.openerp .oe_searchview_drawer form { + margin-left: 14px +} + +.openerp ul.oe_form_status li, +.openerp ul.oe_form_status li>.arrow span, +.openerp ul.oe_form_status_clickable li, +.openerp ul.oe_form_status_clickable li.oe_active:hover, +.openerp ul.oe_form_status_clickable li>.arrow span { + background: 0 0 +} + +.openerp ul.oe_form_status li.oe_active>.arrow span, +.openerp ul.oe_form_status_clickable li.oe_active>.arrow span { + background: 0 0!important; + border: 2px solid #383431!important; + box-shadow: none; + -webkit-border-radius: initial; + border-radius: initial +} + +.openerp ul.oe_form_status li>.arrow span, +.openerp ul.oe_form_status_clickable li>.arrow span { + -webkit-border-radius: initial; + border-radius: initial +} + +.openerp .oe_application .oe_form_sheetbg, +.openerp ul.oe_form_status_clickable li:hover { + background: 0 0 +} + +.text-core .text-wrap .text-tags { + padding: 0 35px 0 0 +} + +.openerp .oe_tags .text-wrap textarea { + padding: 4px 5px +} + +.text-core .text-wrap .text-tags .text-tag .text-button { + padding: 2px 17px 2px 6px +} + +.text-core .text-wrap .text-arrow { + top: 4px; + right: 1px; + width: 14px; + height: 9px +} + +.openerp .oe_avatar+div { + margin-bottom: 15px +} + +.openerp .oe_form_nosheet { + padding: 16px; + background-color: #fff; + margin: 0 +} + +.openerp .oe_form div.oe_form_configuration .oe_form_group_cell_label, +.openerp .oe_form td.oe_form_group_cell_label { + font-size: 13px; + padding: 4px 0 0 +} + +.openerp .oe_notebook>li>a { + line-height: 34px +} + +.ui-notify-cross { + font-size: 14px; + text-shadow: none +} + +.ui-notify-message-style { + background: rgba(14, 14, 14, .8); + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none +} + +.ui-notify-message-style span { + margin: 0 5px 0 0!important +} + +.openerp td.oe_calendar_sidebar_container { + vertical-align: top; + padding: 4px 10px +} + +.ui-datepicker .ui-datepicker-next, +.ui-datepicker .ui-datepicker-prev { + cursor: pointer +} + +.ui-widget-content button.ui-state-default:hover, +button.ui-state-default:hover { + background: #E0E0E0 +} + +.ui-datepicker-calendar { + display: block +} + +.ui-datepicker td .ui-state-hover { + background: #9575CD +} + +.ui-datepicker td .ui-state-active { + background: #383431 +} + +.ui-datepicker td:hover { + color: #000; + font-weight: 700; + cursor: default +} + +.ui-datepicker { + width: auto; + padding: 0 +} + +.openerp .ui-datepicker-calendar thead, +.openerp .ui-datepicker-calendar thead tr th, +.ui-datepicker .ui-datepicker-header { + border-bottom: #ccc 1px solid; + border-radius: 0 +} + +.openerp .fc-header-right { + width: 25%; + text-align: right +} + +.openerp .fc-header-center { + text-align: center +} + +.ui-state-default, +.ui-widget-content .ui-state-default, +.ui-widget-header .ui-state-default { + box-shadow: none; + background: #EEE; + border: 1px solid #BDBDBD +} + +.btn-group.kanban_state.open .dropdown-menu.state { + left: -150px +} + +.oe_im_chatview .oe_im_chatview_footer { + background: #f9f9f9!important +} + +.oe_im_chatview .oe_im_chatview_input { + background: 0 0!important; + border: none!important; + border-bottom: #ccc 2px solid!important; + border-radius: 0!important; + box-shadow: none!important; + width: 212px!important; + height: 24px!important; + margin: 5px!important; + outline: 0!important +} + +.oe_im_chatview .oe_im_chatview_input:focus { + border-bottom: #007B3E 3px solid!important +} + +.oe_im .oe_im_frame_header .oe_im_searchbox { + height: 28px!important; + padding: 4px 21px 4px 24px!important; + outline: 0!important; + border-bottom: #ccc 2px solid!important +} + +.oe_im_frame_header .oe_im_searchbox { + border: none!important; + width: 200px!important; + -moz-border-radius: 0!important; + -webkit-border-radius: 0!important; + border-radius: 0!important; + background: #f9f9f9!important +} + +.oe_im .oe_im_frame_header .oe_im_searchbox:focus { + border-bottom: #007B3E 3px solid!important +} + +.oe_im_chatview_footer { + bottom: 0!important +} + +.oe_im_frame_header .oe_im_search_icon { + top: -6px!important +} + +.oe_im_chatview .oe_im_chatview_right { + padding: 10px!important +} + +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet .oe_facet_remove { + top: 6px +} + +.openerp .oe_stat_button { + width: 150px!important +} + +.navbar-collapse { + padding-right: 10px; + padding-left: 10px +} + +.openerp .oe_leftbar.hide { + display: none!important +} + +@media (max-width:767px) { + .openerp .oe_leftbar { + display: none!important + } +} + +.openerp .oe_kanban_view .oe_view_nocontent .oe_view_nocontent_content, +.openerp .oe_kanban_view .oe_view_nocontent .oe_view_nocontent_content .oe_view_nocontent_create { + color: #eee +} + +@media (max-width:600px) { + .openerp .oe_searchview { + min-width: 300px + } +} + +.openerp .oe_loading { + background-color: #383431!important; + border: none!important +} diff --git a/yaltik_backend_theme/static/src/font/Roboto-Regular.ttf b/yaltik_backend_theme/static/src/font/Roboto-Regular.ttf new file mode 100644 index 0000000..8c082c8 Binary files /dev/null and b/yaltik_backend_theme/static/src/font/Roboto-Regular.ttf differ diff --git a/yaltik_backend_theme/static/src/js/menu.js b/yaltik_backend_theme/static/src/js/menu.js new file mode 100644 index 0000000..699ecfd --- /dev/null +++ b/yaltik_backend_theme/static/src/js/menu.js @@ -0,0 +1,7 @@ +$(document).ready(function () { + $(".toggle_leftmenu").click(function() { + $(".oe_leftbar").animate({ + width: 'toggle' + }, 0); + }); +}); diff --git a/yaltik_backend_theme/views.xml b/yaltik_backend_theme/views.xml new file mode 100644 index 0000000..b5ba8c0 --- /dev/null +++ b/yaltik_backend_theme/views.xml @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/yaltik_portal_project/__init__.py b/yaltik_portal_project/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/yaltik_portal_project/__openerp__.py b/yaltik_portal_project/__openerp__.py new file mode 100644 index 0000000..0b4d1e8 --- /dev/null +++ b/yaltik_portal_project/__openerp__.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- + +# Copyright 2016 Fabien Bourgeois +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +{ + 'name': 'Yaltik custom access rights for portal projects', + 'summary': 'Yaltik custom access rights for team members', + 'description': 'Allow portal users to manage whole projects if they are ' + 'added to the team', + 'version': '0.1', + 'category': 'Project Management', + 'author': 'Fabien Bourgeois', + 'license': 'AGPL-3', + 'application': False, + 'installable': True, + 'depends': ['portal_project'], + 'data': [ + 'security/ir.model.access.csv', + 'security/portal_security.xml' + ] +} diff --git a/yaltik_portal_project/security/ir.model.access.csv b/yaltik_portal_project/security/ir.model.access.csv new file mode 100644 index 0000000..5bc68bf --- /dev/null +++ b/yaltik_portal_project/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_issues,project_issue,project_issue.model_project_issue,base.group_portal,1,1,1,0 diff --git a/yaltik_portal_project/security/portal_security.xml b/yaltik_portal_project/security/portal_security.xml new file mode 100644 index 0000000..35c6ff5 --- /dev/null +++ b/yaltik_portal_project/security/portal_security.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + Yaltik portal issue rule : create and edit own issues + + + + ['|', '|', ('create_uid', '=', user.id), ('user_id', '=', user.id), + ('partner_id', '=', user.partner_id.id)] + + + + + + + + + + + + Yaltik portal issue for read only: public or portal and colleagues + following or followers and following + + + ['|', '|', + ('project_id.privacy_visibility', 'in', ['public']), + '&', + ('project_id.privacy_visibility', '=', 'portal'), + ('message_follower_ids', 'child_of', + [user.partner_id.commercial_partner_id.id]), + '&', + ('project_id.privacy_visibility', '=', 'followers'), + ('message_follower_ids', 'in', [user.partner_id.id]), + ] + + + + + + + + + diff --git a/yaltik_portal_project_issue/__init__.py b/yaltik_portal_project_issue/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/yaltik_portal_project_issue/__init__.pyc b/yaltik_portal_project_issue/__init__.pyc new file mode 100644 index 0000000..abd8704 Binary files /dev/null and b/yaltik_portal_project_issue/__init__.pyc differ diff --git a/yaltik_portal_project_issue/__openerp__.py b/yaltik_portal_project_issue/__openerp__.py new file mode 100644 index 0000000..d6cf744 --- /dev/null +++ b/yaltik_portal_project_issue/__openerp__.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- + +# Copyright 2016 Fabien Bourgeois +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +{ + 'name': 'Yaltik custom access rights for portal issues', + 'summary': 'Allow portal users to create issues and edit own issues', + 'description': 'Allows portal users to create issues and edit own issues', + 'version': '0.1', + 'category': 'Project Management', + 'author': 'Fabien Bourgeois', + 'license': 'AGPL-3', + 'application': False, + 'installable': True, + 'depends': ['portal_project_issue'], + 'data': [ + 'security/ir.model.access.csv', + 'security/portal_security.xml' + ] +} diff --git a/yaltik_portal_project_issue/security/ir.model.access.csv b/yaltik_portal_project_issue/security/ir.model.access.csv new file mode 100644 index 0000000..5bc68bf --- /dev/null +++ b/yaltik_portal_project_issue/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_issues,project_issue,project_issue.model_project_issue,base.group_portal,1,1,1,0 diff --git a/yaltik_portal_project_issue/security/portal_security.xml b/yaltik_portal_project_issue/security/portal_security.xml new file mode 100644 index 0000000..875d5ca --- /dev/null +++ b/yaltik_portal_project_issue/security/portal_security.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + Yaltik portal issue rule : create and edit own issues + + + + ['|', '|', ('create_uid', '=', user.id), ('user_id', '=', user.id), + ('partner_id', '=', user.partner_id.id)] + + + + + + + + + + + + Yaltik portal issue for read only: public or portal and colleagues + following or followers and following + + + ['|', '|', + ('project_id.privacy_visibility', 'in', ['public']), + '&', + ('project_id.privacy_visibility', '=', 'portal'), + ('message_follower_ids', 'child_of', + [user.partner_id.commercial_partner_id.id]), + '&', + ('project_id.privacy_visibility', '=', 'followers'), + ('message_follower_ids', 'in', [user.partner_id.id]), + ] + + + + + + + + +