summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Mathot (OpenERP) <rim@openerp.com>2013-12-18 13:48:33 +0100
committerRichard Mathot (OpenERP) <rim@openerp.com>2013-12-18 13:48:33 +0100
commit3bfbcfee360e39b83d07bc38d2a331ae2cfe70a0 (patch)
tree7fe90117fb495a6fc54cebf859270cc417fdb177
parentb5de38f2875759230e7f46997761ea442ccbbd97 (diff)
parent90a9e522f3190a314fca289066943f312cd637f3 (diff)
[MERGE] Merge parents
bzr revid: rim@openerp.com-20131218072037-7g2t677f1fryj9tt bzr revid: rim@openerp.com-20131218124833-07mgsnr35oibusn1
-rw-r--r--addons/website/models/ir_qweb.py11
-rw-r--r--addons/website/static/src/css/editor.css8
-rw-r--r--addons/website/static/src/css/editor.sass15
-rw-r--r--addons/website/static/src/js/website.editor.js2
-rw-r--r--addons/website_crm_partner_assign/controllers/main.py1
-rw-r--r--addons/website_customer/controllers/main.py2
-rw-r--r--addons/website_event_track/controllers/event.py7
-rw-r--r--addons/website_membership/controllers/main.py1
-rw-r--r--addons/website_partner/controllers/main.py1
9 files changed, 42 insertions, 6 deletions
diff --git a/addons/website/models/ir_qweb.py b/addons/website/models/ir_qweb.py
index ea982bbe563..64a374119fa 100644
--- a/addons/website/models/ir_qweb.py
+++ b/addons/website/models/ir_qweb.py
@@ -73,12 +73,21 @@ class Field(orm.AbstractModel):
def attributes(self, cr, uid, field_name, record, options,
source_element, g_att, t_att, qweb_context, context=None):
+ if options is None: options = {}
column = record._model._all_columns[field_name].column
+ attrs = [('data-oe-translate', 1 if column.translate else 0)]
+
+ placeholder = options.get('placeholder') \
+ or source_element.getAttribute('placeholder') \
+ or getattr(column, 'placeholder', None)
+ if placeholder:
+ attrs.append(('placeholder', placeholder))
+
return itertools.chain(
super(Field, self).attributes(cr, uid, field_name, record, options,
source_element, g_att, t_att,
qweb_context, context=context),
- [('data-oe-translate', 1 if column.translate else 0)]
+ attrs
)
def value_from_string(self, value):
diff --git a/addons/website/static/src/css/editor.css b/addons/website/static/src/css/editor.css
index e40d6996850..e21bfc1fbe8 100644
--- a/addons/website/static/src/css/editor.css
+++ b/addons/website/static/src/css/editor.css
@@ -211,9 +211,15 @@ ul.oe_menu_editor .disclose {
}
.cke_widget_editable:empty:after {
- content: " ";
+ opacity: 0.3;
white-space: pre-wrap;
}
+.cke_widget_editable:not([placeholder]):empty::after {
+ content: " ";
+}
+.cke_widget_editable[placeholder]:not(:focus):empty::after {
+ content: attr(placeholder);
+}
.oe_carlos_danger {
outline: 1px solid red !important;
diff --git a/addons/website/static/src/css/editor.sass b/addons/website/static/src/css/editor.sass
index 38b1d9f3436..ff62f416d8d 100644
--- a/addons/website/static/src/css/editor.sass
+++ b/addons/website/static/src/css/editor.sass
@@ -171,11 +171,20 @@ ul.oe_menu_editor
// Breaks completely horribly crazy products listing page, so take it out.
.cke_widget_wrapper
position: static !important
+
// prevent inline widgets from entirely disappearing when their (textual)
// content is removed
-.cke_widget_editable:empty:after
- content: " "
- white-space: pre-wrap
+.cke_widget_editable
+ // basic config
+ &:empty:after
+ opacity: 0.3
+ white-space: pre-wrap
+ // no @placeholder -> just add some padding
+ &:not([placeholder]):empty::after
+ content: " "
+ // with placeholder and when not (yet) focused -> display placeholder
+ &[placeholder]:not(:focus):empty::after
+ content: attr(placeholder)
.oe_carlos_danger
outline: 1px solid red !important
diff --git a/addons/website/static/src/js/website.editor.js b/addons/website/static/src/js/website.editor.js
index 1e3ef0da66a..c7c5620c9a4 100644
--- a/addons/website/static/src/js/website.editor.js
+++ b/addons/website/static/src/js/website.editor.js
@@ -859,7 +859,7 @@
var plugins = [
'a11yhelp', 'basicstyles', 'blockquote',
'clipboard', 'colorbutton', 'colordialog', 'dialogadvtab',
- 'elementspath', 'enterkey', 'entities', 'filebrowser',
+ 'elementspath', /*'enterkey',*/ 'entities', 'filebrowser',
'find', 'floatingspace','format', 'htmlwriter', 'iframe',
'indentblock', 'indentlist', 'justify',
'list', 'pastefromword', 'pastetext', 'preview',
diff --git a/addons/website_crm_partner_assign/controllers/main.py b/addons/website_crm_partner_assign/controllers/main.py
index 50ad1e26519..f8e84d912fd 100644
--- a/addons/website_crm_partner_assign/controllers/main.py
+++ b/addons/website_crm_partner_assign/controllers/main.py
@@ -93,6 +93,7 @@ class WebsiteCrmPartnerAssign(http.Controller):
@website.route(['/partners/<model("res.partner"):partner>/'], type='http', auth="public", multilang=True)
def partners_ref(self, partner, **post):
+ website.preload_records(partner)
values = website_partner.get_partner_template_value(partner)
if not values:
return self.partners(**post)
diff --git a/addons/website_customer/controllers/main.py b/addons/website_customer/controllers/main.py
index d0663dfdfdc..a4dd4aa00f5 100644
--- a/addons/website_customer/controllers/main.py
+++ b/addons/website_customer/controllers/main.py
@@ -19,6 +19,7 @@ class WebsiteCustomer(http.Controller):
'/customers/country/<model("res.country"):country>/page/<int:page>/'
], type='http', auth="public", multilang=True)
def customers(self, country=None, page=0, **post):
+ website.preload_records(country)
cr, uid, context = request.cr, request.uid, request.context
partner_obj = request.registry['res.partner']
partner_name = post.get('search', '')
@@ -76,6 +77,7 @@ class WebsiteCustomer(http.Controller):
@website.route(['/customers/<model("res.partner"):partner>/'], type='http', auth="public", multilang=True)
def customer(self, partner, **post):
+ website.preload_records(partner)
values = website_partner.get_partner_template_value(partner)
if not values:
return self.customers(**post)
diff --git a/addons/website_event_track/controllers/event.py b/addons/website_event_track/controllers/event.py
index 22e4c1501a9..4ca9cfa4280 100644
--- a/addons/website_event_track/controllers/event.py
+++ b/addons/website_event_track/controllers/event.py
@@ -31,6 +31,8 @@ class website_event(http.Controller):
@website.route(['/event/<model("event.event"):event>/track/<model("event.track"):track>'], type='http', auth="public", multilang=True)
def event_track_view(self, event, track, **post):
# TODO: not implemented
+ website.preload_records(event, on_error="website_event.404")
+ website.preload_records(track)
values = { 'track': track, 'event': track.event_id, 'main_object': track }
return request.website.render("website_event_track.track_view", values)
@@ -39,6 +41,8 @@ class website_event(http.Controller):
'/event/<model("event.event"):event>/track/tag/<model("event.track.tag"):tag>'
], type='http', auth="public", multilang=True)
def event_tracks(self, event, tag=None, **post):
+ website.preload_records(event, on_error="website_event.404")
+ website.preload_records(tag)
searches = {}
if tag:
@@ -65,15 +69,18 @@ class website_event(http.Controller):
@website.route(['/event/detail/<model("event.event"):event>'], type='http', auth="public", multilang=True)
def event_detail(self, event, **post):
+ website.preload_records(event, on_error="website_event.404")
values = { 'event': event, 'main_object': event }
return request.website.render("website_event_track.event_home", values)
@website.route(['/event/<model("event.event"):event>/track_proposal/'], type='http', auth="public", multilang=True)
def event_track_proposal(self, event, **post):
+ website.preload_records(event, on_error="website_event.404")
values = { 'event': event }
return request.website.render("website_event_track.event_track_proposal", values)
@website.route(['/event/<model("event.event"):event>/track_proposal/success/'], type='http', auth="public", multilang=True)
def event_track_proposal_success(self, event, **post):
+ website.preload_records(event, on_error="website_event.404")
values = { 'event': event }
return request.website.render("website_event_track.event_track_proposal_success", values)
diff --git a/addons/website_membership/controllers/main.py b/addons/website_membership/controllers/main.py
index 6985d4449f2..98a7654c71a 100644
--- a/addons/website_membership/controllers/main.py
+++ b/addons/website_membership/controllers/main.py
@@ -84,6 +84,7 @@ class WebsiteMembership(http.Controller):
@website.route(['/members/<model("res.partner"):partner>/'], type='http', auth="public", multilang=True)
def partners_ref(self, partner, **post):
+ website.preload_records(partner)
values = website_partner.get_partner_template_value(partner)
if not values:
return self.members(**post)
diff --git a/addons/website_partner/controllers/main.py b/addons/website_partner/controllers/main.py
index eab8ef92306..6a246883df6 100644
--- a/addons/website_partner/controllers/main.py
+++ b/addons/website_partner/controllers/main.py
@@ -36,6 +36,7 @@ class WebsitePartner(http.Controller):
@website.route(['/partners/<model("res.partner"):partner>/'], type='http', auth="public", multilang=True)
def partner(self, partner, **post):
""" Route for displaying a single partner / customer. """
+ website.preload_records(partner)
values = get_partner_template_value(partner)
if not values:
raise werkzeug.exceptions.NotFound