openerp-dev-web team mailing list archive
-
openerp-dev-web team
-
Mailing list archive
-
Message #00514
[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