diff options
| -rw-r--r-- | addons/web/static/src/css/base.css | 6 | ||||
| -rw-r--r-- | addons/web/static/src/css/base.sass | 4 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/form_widgets.js | 24 | ||||
| -rw-r--r-- | addons/web/static/src/xml/base.xml | 5 | ||||
| -rw-r--r-- | openerp/addons/base/res/res_users.py | 5 | ||||
| -rw-r--r-- | openerp/addons/base/res/res_users_view.xml | 9 |
6 files changed, 51 insertions, 2 deletions
diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 10556c1e30f..91b8fe7e927 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -301,6 +301,12 @@ .openerp .oe_button_box .oe_stat_button { display: inline-table; } +.openerp .oe_button_box .oe_stat_button .o_stat_info:not(.is_true) > .o_stat_text.oe_true { + display: none; +} +.openerp .oe_button_box .oe_stat_button .o_stat_info.is_true > .o_stat_text.oe_false { + display: none; +} .openerp button.oe_toggle_button { box-shadow: none; white-space: nowrap; diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index 64a73b8addd..f04f963ae37 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -359,6 +359,10 @@ $sheet-padding: 16px text-align: right .oe_stat_button display: inline-table + .o_stat_info:not(.is_true) > .o_stat_text.oe_true + display: none + .o_stat_info.is_true > .o_stat_text.oe_false + display: none button.oe_toggle_button box-shadow: none white-space: nowrap diff --git a/addons/web/static/src/js/views/form_widgets.js b/addons/web/static/src/js/views/form_widgets.js index 0d42f3d4469..f3fe595fec9 100644 --- a/addons/web/static/src/js/views/form_widgets.js +++ b/addons/web/static/src/js/views/form_widgets.js @@ -630,6 +630,29 @@ var FieldBoolean = common.AbstractField.extend({ }); /** + This widget is intended to be used on stat button boolean fields. + It is a read-only field that will display a simple string "<label of value>". +*/ +var FieldBooleanButton = common.AbstractField.extend({ + template: 'BooleanButton', + init: function() { + this._super.apply(this, arguments); + this.true_string = this.options['true'] || _t('True'); + this.false_string = this.options['false'] || _t('False'); + }, + render_value: function() { + this._super(); + this.$el.toggleClass("is_true", this.get_value()); + if (this.node.attrs.class) { + this.$el.addClass(this.node.attrs.class); + } + }, + is_false: function() { + return false; + }, +}); + +/** The progressbar field expect a float from 0 to 100. */ var FieldProgressBar = common.AbstractField.extend(common.ReinitializeFieldMixin, { @@ -1597,6 +1620,7 @@ core.form_widget_registry .add('radio', FieldRadio) .add('reference', FieldReference) .add('boolean', FieldBoolean) + .add('boolean_button', FieldBooleanButton) .add('toggle_button', FieldToggleBoolean) .add('float', FieldFloat) .add('percentpie', FieldPercentPie) diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 9a73d59e03f..bbed4b59880 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1436,4 +1436,9 @@ <img t-attf-src="#{_s}/web/static/src/img/icons/#{widget.icon}" t-att-alt="widget.string"/> </button> +<div t-name="BooleanButton" class="o_stat_info is_true"> + <span class="o_stat_text oe_true text-success"><t t-esc="widget.true_string"/></span> + <span class="o_stat_text oe_false text-danger"><t t-esc="widget.false_string"/></span> +</div> + </templates> diff --git a/openerp/addons/base/res/res_users.py b/openerp/addons/base/res/res_users.py index dbbb4e52d21..cd955d23ac3 100644 --- a/openerp/addons/base/res/res_users.py +++ b/openerp/addons/base/res/res_users.py @@ -572,6 +572,11 @@ class res_users(osv.osv): def _is_admin(self): return self.id == openerp.SUPERUSER_ID or self.sudo(self).has_group('base.group_erp_manager') + @api.multi + def toggle_active(self): + for user in self: + user.active = not user.active + def get_company_currency_id(self, cr, uid, context=None): return self.browse(cr, uid, uid, context=context).company_id.currency_id.id diff --git a/openerp/addons/base/res/res_users_view.xml b/openerp/addons/base/res/res_users_view.xml index 4e1847610ba..317c6cdff8b 100644 --- a/openerp/addons/base/res/res_users_view.xml +++ b/openerp/addons/base/res/res_users_view.xml @@ -171,7 +171,12 @@ </header> <sheet> <field name="id" invisible="1"/> - <div class="oe_button_box" name="button_box"/> + <div class="oe_button_box" name="button_box"> + <button name="toggle_active" type="object" class="oe_stat_button" icon="fa-check"> + <field name="active" widget="boolean_button" + options='{"true": "Active User", "false": "Inactive User"}'/> + </button> + </div> <field name="image" widget='image' class="oe_avatar" options='{"preview_image": "image_medium"}'/> <div class="oe_title"> <label for="name" class="oe_edit_only"/> @@ -182,7 +187,6 @@ <group> <field name="partner_id" readonly="1" required="0" groups="base.group_no_one" attrs="{'invisible': [('id', '=', False)]}"/> - <field name="active"/> </group> </div> <notebook colspan="4"> @@ -235,6 +239,7 @@ <field name="company_ids" string="Company" groups="base.group_light_multi_company"/> <field name="share"/> <filter name="no_share" string="Internal Users" domain="[('share','=',False)]"/> + <filter name="Inactive" string="Inactive Users" domain="[('active','=',False)]"/> </search> </field> </record> |
