From 0bd224bf4e17064b5253f6bab944627860c39a89 Mon Sep 17 00:00:00 2001 From: Ronald Portier Date: Tue, 15 Jan 2013 21:28:10 +0100 Subject: [PATCH] [IMP] Add possibility to hide Create and Delete buttons on web, if requested through context for action. --- web_hide_buttons/AUTHORS | 3 + web_hide_buttons/__init__.py | 0 web_hide_buttons/__openerp__.py | 43 ++++++++++++++ .../static/src/js/web_hide_buttons.js | 57 +++++++++++++++++++ 4 files changed, 103 insertions(+) create mode 100644 web_hide_buttons/AUTHORS create mode 100644 web_hide_buttons/__init__.py create mode 100755 web_hide_buttons/__openerp__.py create mode 100644 web_hide_buttons/static/src/js/web_hide_buttons.js diff --git a/web_hide_buttons/AUTHORS b/web_hide_buttons/AUTHORS new file mode 100644 index 00000000..9675b642 --- /dev/null +++ b/web_hide_buttons/AUTHORS @@ -0,0 +1,3 @@ +Ronald Portier +Stefan Rijnhart + diff --git a/web_hide_buttons/__init__.py b/web_hide_buttons/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/web_hide_buttons/__openerp__.py b/web_hide_buttons/__openerp__.py new file mode 100755 index 00000000..8991da13 --- /dev/null +++ b/web_hide_buttons/__openerp__.py @@ -0,0 +1,43 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# Copyright (C) 2013 Therp B.V. () +# +# 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': 'web hide buttons', + 'application': False, + 'version': '6.1.r003', + 'category': 'Web', + 'description': ''' +This module makes it possible to hide Create and Delete buttons from the +user, if requested through the context of the action defining the window. +To hide both buttons add the following element to the xml for the +ir.actions.act_window: +{'nodelete': '1', 'nocreate': '1'} +''', + 'author': 'Therp B.V.', + 'website': 'http://www.therp.nl', + 'license': 'AGPLv3', + 'depends': [ + 'web', + ], + 'init_xml': [], + 'update_xml': [], + 'demo_xml': [], + 'installable': True, + 'js': ['static/src/js/web_hide_buttons.js'], + } diff --git a/web_hide_buttons/static/src/js/web_hide_buttons.js b/web_hide_buttons/static/src/js/web_hide_buttons.js new file mode 100644 index 00000000..c368b0c5 --- /dev/null +++ b/web_hide_buttons/static/src/js/web_hide_buttons.js @@ -0,0 +1,57 @@ +/* -----------------------------------------------------------\ + * web functions for web_hide_buttons + * --------------------------------------------------------- */ + +/* comments to control jslint */ +/*jslint nomen: true, white: true, */ +/*global window, openerp, $, _ */ + +openerp.web_hide_buttons = function (openerp) { + 'use strict'; + + /** Change ListView to not show Create and Delete buttons when that + has been requested through the context passed from the action. + */ + openerp.web.ListView.include({ + + on_loaded : function (record) { + var result, context; + result = this._super.apply(this, arguments); + if (this.groups.datagroup.context) { + context = this.groups.datagroup.context; + if (context.nocreate) { + this.$element.find('.oe-list-add') + .attr('disabled', true).hide(); + } + if (context.nodelete) { + this.$element.find('.oe-list-delete') + .attr('disabled', true).hide(); + } + } + return result; + } + }); + + openerp.web.FormView.include({ + + on_loaded : function (record) { + var result, context; + result = this._super.apply(this, arguments); + context = this.dataset.get_context(); + if (context) { + if (context.nocreate) { + this.$element.find('.oe_form_button_create') + .attr('disabled', true).hide(); + this.$element.find('.oe_form_button_duplicate') + .attr('disabled', true).hide(); + } + if (context.nodelete) { + this.$element.find('.oe_form_button_delete') + .attr('disabled', true).hide(); + } + } + return result; + } + }); + +};