← Back to team overview

openerp-dev-web team mailing list archive

[Merge] lp:~openerp-dev/openobject-client-web/image-widget-dialogbox into lp:openobject-client-web

 

vda(Open ERP) has proposed merging lp:~openerp-dev/openobject-client-web/image-widget-dialogbox into lp:openobject-client-web.

Requested reviews:
  OpenERP SA's Web Client R&D (openerp-dev-web)
Related bugs:
  #701042 loading a logo in company configuration is still in a popup window
  https://bugs.launchpad.net/bugs/701042
  #701415 the client doesn't propose to save the record if there is only a m2m modification
  https://bugs.launchpad.net/bugs/701415

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-client-web/image-widget-dialogbox/+merge/45838

Dialog box for image editing.
-- 
https://code.launchpad.net/~openerp-dev/openobject-client-web/image-widget-dialogbox/+merge/45838
Your team OpenERP SA's Web Client R&D is requested to review the proposed merge of lp:~openerp-dev/openobject-client-web/image-widget-dialogbox into lp:openobject-client-web.
=== modified file 'addons/openerp/controllers/image.py'
--- addons/openerp/controllers/image.py	2010-09-23 13:37:20 +0000
+++ addons/openerp/controllers/image.py	2011-01-11 11:41:56 +0000
@@ -33,7 +33,7 @@
 from openerp.utils import rpc
 from openerp.widgets.form import get_temp_file
 
-from openobject.tools import expose, redirect
+from openobject.tools import expose, redirect, ast
 
 
 class Image(SecuredController):
@@ -46,6 +46,8 @@
         saved = kw.get('saved') or None
         model = kw.get('model')
         id = kw.get('id')
+        if id:
+            id = ast.literal_eval(id)
         field = kw.get('field')
         value = kw.get('value') or None
         return dict(model=model, saved=saved, id=id, field=field, value=value)
@@ -54,8 +56,9 @@
     def get_image(self, **kw):
         model = kw.get('model')
         field = kw.get('field')
-        id = int(kw.get('id'))
-        
+        id = kw.get('id')
+        if id:
+            id = ast.literal_eval(id)
         proxy = rpc.RPCProxy(model)
         res = proxy.read([id], [field])[0]
         res = res.get(field)
@@ -81,9 +84,9 @@
         datas = upimage.file.read()
 
         model = kw.get('model')
-        id = kw.get('id')
+        id = kw.get('id') or False
         if id:
-            id = int(id)
+            id = ast.literal_eval(id)
         field = kw.get('field')
 
         value = base64.encodestring(datas)
@@ -96,7 +99,6 @@
     
             if res:
                 saved = 1
-            value = None
         else:
             saved = 0
         return dict(model=model, saved=saved, id=id, field=field, value=value)

=== modified file 'addons/openerp/controllers/templates/image.mako'
--- addons/openerp/controllers/templates/image.mako	2010-12-13 07:26:35 +0000
+++ addons/openerp/controllers/templates/image.mako	2011-01-11 11:41:56 +0000
@@ -14,17 +14,15 @@
         }
 
         jQuery(document).ready(function(){
+            
             var saved = openobject.dom.get('saved').value;
-            var img = window.opener.document.getElementById('${field}');
-            if(saved != '' && !parseInt(saved, 10)) {
+            var img = window.top.document.getElementById('${field}');
+            if(document.getElementById('value').value) {
                 img.src = "data:image/png;base64," + document.getElementById('value').value;
-                jQuery('input[id=${field}][type="hidden"][is_image]', window.opener.document).val(document.getElementById('value').value);
-            }
-            else{
-                img.src = img.src + '&' + Math.random();
-            }
-            if(saved)
-                window.close();
+                jQuery('input[id=${field}][type="hidden"][is_image]', window.top.document).val(document.getElementById('value').value);
+                window.frameElement.close();
+                return null;
+            }
         });
 
     </script>
@@ -67,7 +65,7 @@
                                 <a href="javascript: void(0)" class="button-a" onclick="do_delete('add_image', '${id}', '${field}')">${_("Delete")}</a>
                                 </td>
                                 <td>
-                                	<a href="javascript: void(0)" class="button-a" onclick="window.close()">${_("Close")}</a>
+                                	<a href="javascript: void(0)" class="button-a" onclick="window.frameElement.close();">${_("Close")}</a>
                                 </td>
                             </tr>
                         </table>

=== modified file 'addons/openerp/widgets/form/_binary.py'
--- addons/openerp/widgets/form/_binary.py	2010-12-02 14:19:59 +0000
+++ addons/openerp/widgets/form/_binary.py	2011-01-11 11:41:56 +0000
@@ -96,7 +96,11 @@
         self.field = self.name.split('/')[-1]
         if attrs.get('widget'):
             if self.id:
-                self.src = tools.url('/openerp/image/get_image', model=self.model, id=self.id, field=self.field)
+                src = rpc.RPCProxy(self.model).read([self.id], [self.field])[0][self.field]
+                if src:
+                    self.bin_src = src
+                else:
+                    self.src = self.bin_src = ''
             elif attrs.get('value'):
                 self.bin_src =attrs['value']
             else:

=== modified file 'addons/openerp/widgets/form/templates/image.mako'
--- addons/openerp/widgets/form/templates/image.mako	2011-01-07 14:38:02 +0000
+++ addons/openerp/widgets/form/templates/image.mako	2011-01-11 11:41:56 +0000
@@ -13,8 +13,7 @@
             % if height:
                 height="${height}"
             % endif
-            ${py.attrs(attrs)}
-            onclick="openobject.tools.openWindow(openobject.http.getURL('/openerp/image', {model: '${model}', id: '${id}', field : '${field}'}), {width: 500, height: 300});" 
+            ${py.attrs(attrs)} 
         />
     % elif bin_src:
         <img
@@ -29,7 +28,6 @@
                 height="${height}"
             % endif
             ${py.attrs(attrs)}
-            onclick="openobject.tools.openWindow(openobject.http.getURL('/openerp/image', {model: '${model}', id: '${id}', field : '${field}'}), {width: 500, height: 300});"
         />
     % else:
         <img 
@@ -43,7 +41,6 @@
             height="100"
             class="${css_class} no_image"
             ${py.attrs(attrs)}
-            onclick="openobject.tools.openWindow(openobject.http.getURL('/openerp/image', {model: '${model}', id: '${id}', field : '${field}'}), {width: 500, height: 300});" 
         />
     % endif
 % else:
@@ -95,3 +92,17 @@
     % endif
 % endif
 <input type="hidden" id="${name}" name="${name}" is_image="true" value="${src or bin_src or ''}"/>
+% if editable:
+<script type="text/javascript">
+    jQuery(idSelector('${name}')).click(function(){=
+       return jQuery.frame_dialog({
+           src: openobject.http.getURL('/openerp/image', {model: '${model}', id: '${id or False}', field : '${field}'}),
+           'class': 'action-dialog'
+       },
+       {'source-window': $(window)[0],
+        source_id: '${name}'
+       }  
+       ) 
+    });
+</script>
+% endif


Follow ups