summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorniv-openerp <nicolas.vanhoren@openerp.com>2012-03-19 17:13:58 +0100
committerniv-openerp <nicolas.vanhoren@openerp.com>2012-03-19 17:13:58 +0100
commite3a8b30a153a00b26b81f3e82ee3b6deec7fffd7 (patch)
treefc230448233595cb274891b21a992239c54bd806 /addons/web/static/src
parente3ba4192e46317aaea7ebb7c40331002a8740790 (diff)
[imp] refactored fields binary & image
bzr revid: nicolas.vanhoren@openerp.com-20120319161358-uw9h91fakkc1e2fu
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/view_form.js67
-rw-r--r--addons/web/static/src/js/view_page.js22
-rw-r--r--addons/web/static/src/xml/base.xml103
3 files changed, 96 insertions, 96 deletions
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js
index c5ec17d378c..b88aa9a9c6c 100644
--- a/addons/web/static/src/js/view_form.js
+++ b/addons/web/static/src/js/view_form.js
@@ -3290,14 +3290,17 @@ openerp.web.form.FieldReference = openerp.web.form.AbstractField.extend(_.extend
}
}));
-openerp.web.form.FieldBinary = openerp.web.form.AbstractField.extend({
+openerp.web.form.FieldBinary = openerp.web.form.AbstractField.extend(_.extend({}, openerp.web.form.ReinitializeFieldMixin, {
init: function(view, node) {
this._super(view, node);
this.iframe = this.element_id + '_iframe';
this.binary_value = false;
},
start: function() {
- this._super.apply(this, arguments);
+ this._super();
+ openerp.web.form.ReinitializeFieldMixin.start.call(this);
+ },
+ bind_events: function() {
this.$element.find('input.oe-binary-file').change(this.on_file_change);
this.$element.find('button.oe-binary-file-save').click(this.on_save_as);
this.$element.find('.oe-binary-file-clear').click(this.on_clear);
@@ -3361,27 +3364,41 @@ openerp.web.form.FieldBinary = openerp.web.form.AbstractField.extend({
}
return false;
}
-});
+}));
openerp.web.form.FieldBinaryFile = openerp.web.form.FieldBinary.extend({
template: 'FieldBinaryFile',
- start: function() {
- this._super();
- },
- update_dom: function() {
- this._super.apply(this, arguments);
- this.$element.find('.oe-binary-file-set, .oe-binary-file-clear').toggle(!this.readonly);
- this.$element.find('input[type=text]').prop('readonly', this.readonly);
+ bind_events: function() {
+ if (this.get("effective_readonly")) {
+ var self = this;
+ this.$element.find('a').click(function() {
+ if (self.value) {
+ self.on_save_as();
+ }
+ return false;
+ });
+ }
},
set_value: function(value) {
this._super.apply(this, arguments);
- var show_value;
- if (this.node.attrs.filename) {
- show_value = this.view.datarecord[this.node.attrs.filename] || '';
+ this.render_value();
+ },
+ render_value: function() {
+ if (!this.get("effective_readonly")) {
+ var show_value;
+ if (this.node.attrs.filename) {
+ show_value = this.view.datarecord[this.node.attrs.filename] || '';
+ } else {
+ show_value = (this.value != null && this.value !== false) ? this.value : '';
+ }
+ this.$element.find('input').eq(0).val(show_value);
} else {
- show_value = (value != null && value !== false) ? value : '';
+ this.$element.find('a').show(!!this.value);
+ if (this.value) {
+ var show_value = _t("Download") + " " + (this.view.datarecord[this.node.attrs.filename] || '');
+ this.$element.find('a').text(show_value);
+ }
}
- this.$element.find('input').eq(0).val(show_value);
},
on_file_uploaded_and_valid: function(size, name, content_type, file_base64) {
this.value = file_base64;
@@ -3406,24 +3423,22 @@ openerp.web.form.FieldBinaryFile = openerp.web.form.FieldBinary.extend({
openerp.web.form.FieldBinaryImage = openerp.web.form.FieldBinary.extend({
template: 'FieldBinaryImage',
- start: function() {
- this._super.apply(this, arguments);
+ bind_events: function() {
this.$image = this.$element.find('img.oe-binary-image');
- var check_visibility = function() {
- if (!this.get("effective_readonly"))
- this.$element.find('.oe-binary').show();
- else
- this.$element.find('.oe-binary').hide();
- }
- this.on("change:effective_readonly", this, check_visibility);
- _.bind(check_visibility, this)();
+ if (!this.get("effective_readonly"))
+ this.$element.find('.oe-binary').show();
+ else
+ this.$element.find('.oe-binary').hide();
},
set_value: function(value) {
this._super.apply(this, arguments);
+ this.render_value();
+ },
+ render_value: function() {
this.set_image_maxwidth();
var url;
- if (value && value.substr(0, 10).indexOf(' ') == -1) {
+ if (this.value && this.value.substr(0, 10).indexOf(' ') == -1) {
url = 'data:image/png;base64,' + this.value;
} else {
url = '/web/binary/image?session_id=' + this.session.session_id + '&model=' +
diff --git a/addons/web/static/src/js/view_page.js b/addons/web/static/src/js/view_page.js
index 2805989f70b..2d5828cf295 100644
--- a/addons/web/static/src/js/view_page.js
+++ b/addons/web/static/src/js/view_page.js
@@ -68,29 +68,7 @@ openerp.web.page = function (openerp) {
/** @namespace */
openerp.web.page = {};
- openerp.web.page.FieldBinaryFileReadonly = openerp.web.form.FieldBinary.extend({
- form_template: 'FieldURI.readonly',
- start: function() {
- this._super.apply(this, arguments);
- var self = this;
- this.$element.find('a').click(function() {
- if (self.value) {
- self.on_save_as();
- }
- return false;
- });
- },
- set_value: function(value) {
- this._super.apply(this, arguments);
- this.$element.find('a').show(!!value);
- if (value) {
- var show_value = _t("Download") + " " + (this.view.datarecord[this.node.attrs.filename] || '');
- this.$element.find('a').text(show_value);
- }
- }
- });
openerp.web.page.readonly = openerp.web.form.widgets.extend({
- 'binary': 'openerp.web.page.FieldBinaryFileReadonly',
});
diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml
index c8df69c2bdc..37ca7e25e0a 100644
--- a/addons/web/static/src/xml/base.xml
+++ b/addons/web/static/src/xml/base.xml
@@ -1152,54 +1152,61 @@
</table>
</t>
<t t-name="FieldBinaryFile">
- <table t-attf-class="oe_form_field_#{widget.type}" cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td>
- <input type="text" size="1" readonly="readonly"
- t-att-name="widget.name"
- t-att-id="widget.element_id + '_field'"
- t-attf-class="field_#{widget.type}"
- />
- </td>
- <td class="oe-binary" nowrap="true">
- <table cellspacing="0" cellpadding="0" border="0">
- <tr>
- <td>
- <div class="oe-binary-file-set" style="width: 80px; height:22px;">
- <form class="oe-binary-form" t-att-target="widget.iframe"
- method="post" enctype="multipart/form-data" action="/web/binary/upload">
- <input type="hidden" name="session_id" value=""/>
- <input type="hidden" name="callback" t-att-value="widget.iframe"/>
- <button class="oe_button oe_field_button" type="button" title="Set Image">
- <img t-att-src='_s + "/web/static/src/img/icons/STOCK_DIRECTORY.png"'/>
- <span>Select</span>
- </button>
- <input type="file" class="oe-binary-file" name="ufile"/>
- </form>
- </div>
- </td>
- <td>
- <button class="oe_button oe-binary-file-save" type="button" title="Save As">
- <img t-att-src='_s + "/web/static/src/img/icons/gtk-save.png"'/>
- <span>Save As</span>
- </button>
- </td>
- <td>
- <button class="oe_button oe-binary-file-clear" type="button" title="Clear">
- <img t-att-src='_s + "/web/static/src/img/icons/STOCK_MISSING_IMAGE.png"'/>
- <span>Clear</span>
- </button>
- </td>
- </tr>
- </table>
- </td>
- <td class="oe-binary-progress" style="display: none" nowrap="true">
- <img t-att-src='_s + "/web/static/src/img/throbber.gif"' width="16" height="16"/>
- <b>Uploading ...</b>
- <iframe t-att-id="widget.iframe" t-att-name="widget.iframe" style="display: none"/>
- </td>
- </tr>
- </table>
+ <t t-if="!widget.get('effective_readonly')">
+ <table t-attf-class="oe_form_field_#{widget.type}" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td>
+ <input type="text" size="1" readonly="readonly"
+ t-att-name="widget.name"
+ t-att-id="widget.element_id + '_field'"
+ t-attf-class="field_#{widget.type}"
+ />
+ </td>
+ <td class="oe-binary" nowrap="true">
+ <table cellspacing="0" cellpadding="0" border="0">
+ <tr>
+ <td>
+ <div class="oe-binary-file-set" style="width: 80px; height:22px;">
+ <form class="oe-binary-form" t-att-target="widget.iframe"
+ method="post" enctype="multipart/form-data" action="/web/binary/upload">
+ <input type="hidden" name="session_id" value=""/>
+ <input type="hidden" name="callback" t-att-value="widget.iframe"/>
+ <button class="oe_button oe_field_button" type="button" title="Set Image">
+ <img t-att-src='_s + "/web/static/src/img/icons/STOCK_DIRECTORY.png"'/>
+ <span>Select</span>
+ </button>
+ <input type="file" class="oe-binary-file" name="ufile"/>
+ </form>
+ </div>
+ </td>
+ <td>
+ <button class="oe_button oe-binary-file-save" type="button" title="Save As">
+ <img t-att-src='_s + "/web/static/src/img/icons/gtk-save.png"'/>
+ <span>Save As</span>
+ </button>
+ </td>
+ <td>
+ <button class="oe_button oe-binary-file-clear" type="button" title="Clear">
+ <img t-att-src='_s + "/web/static/src/img/icons/STOCK_MISSING_IMAGE.png"'/>
+ <span>Clear</span>
+ </button>
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td class="oe-binary-progress" style="display: none" nowrap="true">
+ <img t-att-src='_s + "/web/static/src/img/throbber.gif"' width="16" height="16"/>
+ <b>Uploading ...</b>
+ <iframe t-att-id="widget.iframe" t-att-name="widget.iframe" style="display: none"/>
+ </td>
+ </tr>
+ </table>
+ </t>
+ <t t-if="widget.get('effective_readonly')">
+ <div>
+ <a href="javascript:void(0)" class="oe_form_uri"/>
+ </div>
+ </t>
</t>
<t t-name="WidgetButton">
<div t-attf-class="oe_form_field_#{widget.type}">