Browse Source

Merge pull request #57 from StefanRijnhart/8.0-web_tree_image

8.0 web tree image
pull/59/head
Guewen Baconnier 10 years ago
parent
commit
0d8634e23d
  1. 18
      web_tree_image/README.rst
  2. 0
      web_tree_image/__init__.py
  3. 38
      web_tree_image/__openerp__.py
  4. 51
      web_tree_image/static/src/js/web_tree_image.js
  5. 6
      web_tree_image/static/src/xml/widget.xml
  6. 10
      web_tree_image/view/assets.xml

18
web_tree_image/README.rst

@ -0,0 +1,18 @@
Display images and icons in tree view
=====================================
This module defines a tree image widget, to be used with either binary fields
or (function) fields of type character. Use widget='image' in your view
definition. Optionally, set a 'height' tag. Default height is 16px.
If you use the widget with a character field, the content of the field can be
any of the following:
* The absolute or relative location of an image. For example,
"/<module>/static/src/img/youricon.png"
* A standard icon from the web distribution, without path or extension, For
example, 'gtk-open'
* A dynamic image in a data url base 64 format. Prefix with
'data:image/png;base64,'

0
web_tree_image/__init__.py

38
web_tree_image/__openerp__.py

@ -0,0 +1,38 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# This module copyright (C) 2014 Therp BV (<http://therp.nl>).
#
# Snippet from https://github.com/hsd/listview_images
# Copyright (C) 2013 Marcel van der Boom <marcel@hsdev.com>
#
# 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 <http://www.gnu.org/licenses/>.
#
##############################################################################
{
"name": "Show images in tree views",
"version": "1.0",
"author": "Therp BV",
'url': 'https://github.com/OCA/Web',
'depends': [
'web',
],
'qweb': [
'static/src/xml/widget.xml',
],
'data': [
'view/assets.xml',
],
}

51
web_tree_image/static/src/js/web_tree_image.js

@ -0,0 +1,51 @@
/*
OpenERP, Open Source Management Solution
This module copyright (C) 2014 Therp BV (<http://therp.nl>)
(C) 2013 Marcel van der Boom <marcel@hsdev.com>
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 <http://www.gnu.org/licenses/>.
*/
openerp.web_tree_image = function (instance) {
instance.web.list.Image = instance.web.list.Column.extend({
format: function (row_data, options) {
/* Return a valid img tag. For image fields, test if the
field's value contains just the binary size and retrieve
the image from the dedicated controller in that case.
Otherwise, assume a character field containing either a
stock Odoo icon name without path or extension or a fully
fledged location or data url */
if (!row_data[this.id] || !row_data[this.id].value) {
return '';
}
var value = row_data[this.id].value, src;
if (this.type === 'binary') {
if (value && value.substr(0, 10).indexOf(' ') === -1) {
// The media subtype (png) seems to be arbitrary
src = "data:image/png;base64," + value;
} else {
src = instance.session.url('/web/binary/image', {model: options.model, field: this.id, id: options.id});
}
} else {
if (!/\//.test(row_data[this.id].value)) {
src = '/web/static/src/img/icons/' + row_data[this.id].value + '.png';
} else {
src = row_data[this.id].value;
}
}
return instance.web.qweb.render('ListView.row.image', {widget: this, src: src});
}
});
instance.web.list.columns.add('field.image', 'instance.web.list.Image');
};

6
web_tree_image/static/src/xml/widget.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
<img t-name="ListView.row.image"
t-att-height="widget.height || 16"
t-att-src="src" />
</templates>

10
web_tree_image/view/assets.xml

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<template id="assets_backend" name="tree icon assets" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<script type="text/javascript" src="/web_tree_image/static/src/js/web_tree_image.js"></script>
</xpath>
</template>
</data>
</openerp>
Loading…
Cancel
Save