← Back to team overview

openerp-dev-web team mailing list archive

[Merge] lp:~openerp-dev/openobject-client-web/widget-per-user into lp:openobject-client-web

 

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

Requested reviews:
  OpenERP SA's Web Client R&D (openerp-dev-web)


Widget per user.
-- 
https://code.launchpad.net/~openerp-dev/openobject-client-web/widget-per-user/+merge/41128
Your team OpenERP SA's Web Client R&D is requested to review the proposed merge of lp:~openerp-dev/openobject-client-web/widget-per-user into lp:openobject-client-web.
=== modified file 'addons/openerp/controllers/root.py'
--- addons/openerp/controllers/root.py	2010-11-02 16:47:18 +0000
+++ addons/openerp/controllers/root.py	2010-11-18 06:07:55 +0000
@@ -132,9 +132,33 @@
                 tree.tree.onselection = None
                 tree.tree.onheaderclick = None
                 tree.tree.showheaders = 0
+                
         widgets = rpc.RPCProxy('res.widget')
+        user_widget = rpc.RPCProxy('res.widget.user')
+        user_widget_ids = rpc.RPCProxy('res.widget.user').search([('user_id', '=', rpc.session.uid)], 0, 0, 0, ctx)
+        show_user_widgets = []
+        close_widget = False
+        if user_widget_ids:
+            close_widget = True
+            for wid in user_widget.read(user_widget_ids, ['widget_id'], ctx):
+                widget = widgets.read([wid['widget_id'][0]], [], ctx)[0]
+                if widget not in show_user_widgets:
+                    widget.update(**{'user_widget_id': wid['id']})
+                    show_user_widgets.append(widget)
+        else:
+            show_user_widgets = widgets.read(widgets.search([], 0, 0, 0, ctx), [], ctx)
+        
         return dict(parents=parents, tools=tools, load_content=(next and next or ''),
-                    widgets=widgets.read(widgets.search([], 0, 0, 0, ctx), [], ctx))
+                    widgets=show_user_widgets, close_widget = close_widget)
+    
+    @expose('json', methods=('POST',))
+    def close_user_widget(self, widget_id):
+        rpc.RPCProxy('res.widget.user').unlink(widget_id, rpc.session.context)
+    
+    @expose()
+    def add_user_widget(self):
+        return actions.execute_window([False], 'res.widget.wizard')
+        
 
     @expose(allow_json=True)
     @unsecured

=== modified file 'addons/openerp/controllers/templates/index.mako'
--- addons/openerp/controllers/templates/index.mako	2010-10-21 12:53:16 +0000
+++ addons/openerp/controllers/templates/index.mako	2010-11-18 06:07:55 +0000
@@ -116,16 +116,50 @@
                                             </li>
                                         </ul>
                                     </div>
-                                    <div class="box-a">
-                                        <ul class="side">
-                                        </ul>
+                                    <div class="sideheader-a">
+                                        % if close_widget:
+                                            <ul class="side">
+                                                <li>
+                                                    <a class="button-a" href="${py.url('/openerp/add_user_widget')}" id="add_user_widget">${_("Add")}</a>
+                                                </li>
+                                            </ul>
+                                        % endif
+                                        <h2>${_("Widgets")}</h2>
+                                    </div>
+                                    <div class="box-a" id="user_widgets">
                                         % for widget in widgets:
+                                            % if close_widget:
+                                                <ul class="side">
+                                                    <li>
+                                                        <a id="${widget['user_widget_id']}" class="close" href="${py.url('/openerp/close_user_widget', widget_id=widget['user_widget_id'])}">${_("Close")}</a>
+                                                    </li>
+                                                </ul>
+                                            % endif
                                             <div>
                                                 <h3>${widget['title']}</h3>
                                                 ${widget['content']|n}
                                             </div>
                                         % endfor
                                     </div>
+                                    % if close_widget:
+                                        <script type="text/javascript">
+                                            jQuery(document).ready(function(){
+                                                jQuery('#user_widgets.box-a ul.side a.close').click(function(){
+                                                    jQuery.post(this.href);
+                                                    var $p1 = jQuery(this).closest('.side').next();
+                                                    var $p2 =  jQuery(this).closest('.side');
+                                                    $p1.remove();
+                                                    $p2.remove();
+                                                    return false;
+                                                });
+                                                
+                                                jQuery('#add_user_widget').click(function(){
+                                                    window.open(openobject.http.getURL(this.href));
+                                                    return false;
+                                                });
+                                            });
+                                        </script>
+                                    % endif
                                 </td>
                             </tr>
                         </table>

=== modified file 'addons/openerp/static/css/screen.css'
--- addons/openerp/static/css/screen.css	2010-11-15 11:17:05 +0000
+++ addons/openerp/static/css/screen.css	2010-11-18 06:07:55 +0000
@@ -1972,7 +1972,7 @@
 
 .sideheader-a {
     position: relative;
-    padding-right: 21px;
+    padding-right: 30px;
     border-top: 1px solid #e1dede;
     border-bottom: 1px solid #d2cfcf;
     background: url(../images/sideheader-a-bg.png) 0 100% repeat-x;
@@ -1995,6 +1995,7 @@
     padding-left: 3px;
     padding-right: 3px;
     font-size: 0.9em;
+    cursor: pointer;
 }
 
 .sideheader-a h2 {
@@ -2259,6 +2260,42 @@
 .w50 {
     width: 50% !important;
 }
+
+div.box-a ul.side {
+    float: right;
+    list-style: none;
+    margin: 7px 10px 0 0;
+    padding: 0;
+}
+
+div.box-a ul.side li {
+    display: inline;
+    float: left;
+    margin: 0 0 0 5px;
+}
+
+div.box-a ul.side li a {
+    float: left;
+    overflow: hidden;
+    width: 10px;
+    height: 10px;
+    background: url(../images/sideicons-a.gif) no-repeat;
+    text-indent: -10001px;
+}
+
+div.box-a ul.side li a.move {
+    background-position: 0 0;
+    cursor: move;
+}
+
+div.box-a ul.side li a.minimize {
+    background-position: -10px 0;
+}
+
+div.box-a ul.side li a.close {
+    background-position: -20px 0;
+}
+
 /* SPECIFIC
 ------------------------------------------- */
 


Follow ups