[MERGE]: with main
bzr revid: aja@tinyerp.com-20131217061515-0ps865qvyiw5o4x5
This commit is contained in:
@@ -25,6 +25,7 @@ import openerp
|
||||
from openerp.osv import orm, fields
|
||||
from openerp.tools import ustr, DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
|
||||
from openerp.addons.web.http import request
|
||||
from openerp.addons.base.ir import ir_qweb
|
||||
|
||||
REMOTE_CONNECTION_TIMEOUT = 2.5
|
||||
|
||||
@@ -198,7 +199,6 @@ class ManyToOne(orm.AbstractModel):
|
||||
matches = self.pool[column._obj].name_search(
|
||||
cr, uid, name=element.text_content().strip(), context=context)
|
||||
# FIXME: no match? More than 1 match?
|
||||
print element.text_content().strip()
|
||||
assert len(matches) == 1
|
||||
return matches[0][0]
|
||||
|
||||
@@ -239,10 +239,10 @@ class Image(orm.AbstractModel):
|
||||
if options is None: options = {}
|
||||
classes = ['img', 'img-responsive'] + options.get('class', '').split()
|
||||
|
||||
return '<img class="%s" src="/website/image?model=%s&field=%s&id=%s"/>' % (
|
||||
return ir_qweb.HTMLSafe('<img class="%s" src="/website/image?model=%s&field=%s&id=%s"/>' % (
|
||||
' '.join(itertools.imap(werkzeug.utils.escape, classes)),
|
||||
record._model._name,
|
||||
field_name, record.id)
|
||||
field_name, record.id))
|
||||
|
||||
local_url_re = re.compile(r'^/(?P<module>[^]]+)/static/(?P<rest>.+)$')
|
||||
def from_html(self, cr, uid, model, column, element, context=None):
|
||||
@@ -390,4 +390,4 @@ class Contact(orm.AbstractModel):
|
||||
'options': options
|
||||
}, engine='website.qweb', context=context)
|
||||
|
||||
return html
|
||||
return ir_qweb.HTMLSafe(html)
|
||||
|
||||
@@ -203,7 +203,7 @@ html, body, #wrapwrap {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
header, #wrap, footer {
|
||||
header, main, footer {
|
||||
display: table-row;
|
||||
}
|
||||
|
||||
|
||||
@@ -127,7 +127,7 @@ html,body, #wrapwrap
|
||||
display: table
|
||||
width: 100%
|
||||
|
||||
header, #wrap, footer
|
||||
header, main, footer
|
||||
display: table-row
|
||||
|
||||
footer
|
||||
|
||||
@@ -32,6 +32,27 @@
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* An editing host is an HTML element with @contenteditable=true, or the
|
||||
* child of a document in designMode=on (but that one's not supported)
|
||||
*
|
||||
* https://dvcs.w3.org/hg/editing/raw-file/tip/editing.html#editing-host
|
||||
*/
|
||||
function is_editing_host(element) {
|
||||
return element.getAttribute('contentEditable') === 'true';
|
||||
}
|
||||
/**
|
||||
* Checks that both the element's content *and the element itself* are
|
||||
* editable: an editing host is considered non-editable because its content
|
||||
* is editable but its attributes should not be considered editable
|
||||
*/
|
||||
function is_editable_node(element) {
|
||||
return !(element.data('oe-model') === 'ir.ui.view'
|
||||
|| element.data('cke-realelement')
|
||||
|| is_editing_host(element)
|
||||
|| element.isReadOnly());
|
||||
}
|
||||
|
||||
function link_dialog(editor) {
|
||||
return new website.editor.RTELinkDialog(editor).appendTo(document.body);
|
||||
}
|
||||
@@ -54,18 +75,13 @@
|
||||
init: function (editor) {
|
||||
editor.on('doubleclick', function (evt) {
|
||||
var element = evt.data.element;
|
||||
if (element.is('img')
|
||||
&& !element.data('cke-realelement')
|
||||
&& !element.isReadOnly()
|
||||
&& (element.data('oe-model') !== 'ir.ui.view')) {
|
||||
if (element.is('img') && is_editable_node(element)) {
|
||||
image_dialog(editor, element);
|
||||
return;
|
||||
}
|
||||
|
||||
element = get_selected_link(editor) || evt.data.element;
|
||||
if (element.isReadOnly()
|
||||
|| !element.is('a')
|
||||
|| element.data('oe-model')) {
|
||||
if (!(element.is('a') && is_editable_node(element))) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -360,7 +376,8 @@
|
||||
});
|
||||
$body.css('padding-top', '50px'); // Not working properly: editor.$el.outerHeight());
|
||||
};
|
||||
/* ----- TOP EDITOR BAR FOR ADMIN ---- */
|
||||
|
||||
/* ----- TOP EDITOR BAR FOR ADMIN ---- */
|
||||
website.EditorBar = openerp.Widget.extend({
|
||||
template: 'website.editorbar',
|
||||
events: {
|
||||
@@ -597,9 +614,7 @@
|
||||
if (previous && previous === this) { return; }
|
||||
|
||||
var selected = new CKEDITOR.dom.element(this);
|
||||
if (selected.data('oe-model') === 'ir.ui.view'
|
||||
|| selected.data('cke-realelement')
|
||||
|| selected.isReadOnly()) {
|
||||
if (!is_editable_node(selected)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
$doc.one('shown.bs.modal', function () {
|
||||
$('.modal button.btn-primary').one('click', function () {
|
||||
$doc.off('hide.bs.modal', onStop);
|
||||
self.moveToStep(step.trigger.modal.afterSubmit);
|
||||
(callback || self.moveToNextStep).apply(self, [step.trigger.modal.afterSubmit]);
|
||||
});
|
||||
(callback || self.moveToNextStep).apply(self);
|
||||
});
|
||||
@@ -290,6 +290,7 @@
|
||||
return this._super();
|
||||
},
|
||||
registerTour: function (tour) {
|
||||
var self = this;
|
||||
var testId = 'test_'+tour.id+'_tour';
|
||||
this.tours.push(tour);
|
||||
var test = {
|
||||
@@ -343,9 +344,17 @@
|
||||
currentStep = actionSteps.shift();
|
||||
}
|
||||
}
|
||||
setTimeout(function () {
|
||||
executeStep(currentStep);
|
||||
}, 0);
|
||||
if (currentStep.snippet && $(currentStep.element).length === 0) {
|
||||
self.on('rte:ready', this, function () {
|
||||
executeStep(currentStep);
|
||||
});
|
||||
} else {
|
||||
setTimeout(function () {
|
||||
setTimeout(function () {
|
||||
executeStep(currentStep);
|
||||
}, 0);
|
||||
}, 0);
|
||||
}
|
||||
}
|
||||
},
|
||||
reset: function () {
|
||||
|
||||
@@ -114,7 +114,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<t t-raw="0"/>
|
||||
<main>
|
||||
<t t-raw="0"/>
|
||||
</main>
|
||||
<footer>
|
||||
<div class="container" id="footer_container">
|
||||
<div class="row">
|
||||
|
||||
@@ -209,6 +209,7 @@ class WebsiteBlog(http.Controller):
|
||||
'tags': tags,
|
||||
'tag': tag and request.registry['blog.tag'].browse(cr, uid, int(tag), context=context) or None,
|
||||
'blog_post': blog_post,
|
||||
'main_object': blog_post,
|
||||
'pager': pager,
|
||||
'nav_list': self.nav_list(),
|
||||
'enable_editor': enable_editor,
|
||||
|
||||
@@ -96,4 +96,5 @@ class WebsiteCrmPartnerAssign(http.Controller):
|
||||
values = website_partner.get_partner_template_value(partner)
|
||||
if not values:
|
||||
return self.partners(**post)
|
||||
values['main_object'] = values['partner']
|
||||
return request.website.render("website_crm_partner_assign.partner", values)
|
||||
|
||||
@@ -6,4 +6,4 @@ class res_partner_grade(osv.osv):
|
||||
_inherit = 'res.partner.grade'
|
||||
_columns = {
|
||||
'website_description': fields.html('Description for the website'),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,11 +81,11 @@ class WebsiteCustomer(http.Controller):
|
||||
return self.customers(**post)
|
||||
|
||||
partner_obj = request.registry['res.partner']
|
||||
if values['partner_data']['assigned_partner_id']:
|
||||
if values['partner_data'].get('assigned_partner_id', None):
|
||||
values['assigned_partner_data'] = partner_obj.read(
|
||||
request.cr, openerp.SUPERUSER_ID, [values['partner_data']['assigned_partner_id'][0]],
|
||||
request.website.get_partner_white_list_fields(), context=request.context)[0]
|
||||
if values['partner_data']['implemented_partner_ids']:
|
||||
if values['partner_data'].get('implemented_partner_ids', None):
|
||||
implemented_partners_data = partner_obj.read(
|
||||
request.cr, openerp.SUPERUSER_ID, values['partner_data']['implemented_partner_ids'],
|
||||
request.website.get_partner_white_list_fields(), context=request.context)
|
||||
@@ -94,4 +94,5 @@ class WebsiteCustomer(http.Controller):
|
||||
if data.get('website_published'):
|
||||
values['implemented_partners_data'].append(data)
|
||||
|
||||
values['main_object'] = values['partner']
|
||||
return request.website.render("website_customer.details", values)
|
||||
|
||||
@@ -166,6 +166,7 @@ class website_event(http.Controller):
|
||||
website.preload_records(event, on_error="website_event.404")
|
||||
values = {
|
||||
'event': event,
|
||||
'main_object': event
|
||||
}
|
||||
return request.website.render(page, values)
|
||||
|
||||
@@ -185,7 +186,9 @@ class website_event(http.Controller):
|
||||
website.preload_records(event, on_error="website_event.404")
|
||||
values = {
|
||||
'event': event,
|
||||
'main_object': event,
|
||||
'range': range,
|
||||
'main_object': event,
|
||||
}
|
||||
return request.website.render("website_event.event_description_full", values)
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ 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
|
||||
values = { 'track': track, 'event': track.event_id}
|
||||
values = { 'track': track, 'event': track.event_id, 'main_object': track }
|
||||
return request.website.render("website_event_track.track_view", values)
|
||||
|
||||
@website.route([
|
||||
@@ -55,6 +55,7 @@ class website_event(http.Controller):
|
||||
|
||||
values = {
|
||||
'event': event,
|
||||
'main_object': event,
|
||||
'tracks': tracks,
|
||||
'tags': event.tracks_tag_ids,
|
||||
'searches': searches,
|
||||
@@ -64,7 +65,7 @@ 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):
|
||||
values = { 'event': event }
|
||||
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)
|
||||
|
||||
@@ -59,7 +59,7 @@ class event_track_location(osv.osv):
|
||||
class event_track(osv.osv):
|
||||
_name = "event.track"
|
||||
_order = 'date'
|
||||
_inherit = ['mail.thread', 'ir.needaction_mixin']
|
||||
_inherit = ['mail.thread', 'ir.needaction_mixin', 'website.seo.metadata']
|
||||
_columns = {
|
||||
'name': fields.char('Track Title', required=True),
|
||||
'user_id': fields.many2one('res.users', 'Responsible'),
|
||||
|
||||
@@ -49,7 +49,7 @@ class website_hr_recruitment(http.Controller):
|
||||
|
||||
@website.route(['/job/detail/<model("hr.job"):job>'], type='http', auth="public", multilang=True)
|
||||
def detail(self, job, **kwargs):
|
||||
return request.website.render("website_hr_recruitment.detail", {'job': job})
|
||||
return request.website.render("website_hr_recruitment.detail", { 'job': job, 'main_object': job })
|
||||
|
||||
@website.route(['/job/success'], methods=['POST'], type='http', auth="admin", multilang=True)
|
||||
def success(self, **post):
|
||||
|
||||
@@ -5,7 +5,8 @@ from openerp.osv import osv, fields
|
||||
|
||||
class hr_job(osv.osv):
|
||||
""" Override to add website-related columns: published, description. """
|
||||
_inherit = "hr.job"
|
||||
_name = 'hr.job'
|
||||
_inherit = ['hr.job','website.seo.metadata']
|
||||
|
||||
def _website_url(self, cr, uid, ids, field_name, arg, context=None):
|
||||
res = dict.fromkeys(ids, '')
|
||||
|
||||
@@ -87,4 +87,5 @@ class WebsiteMembership(http.Controller):
|
||||
values = website_partner.get_partner_template_value(partner)
|
||||
if not values:
|
||||
return self.members(**post)
|
||||
values['main_object'] = values['partner']
|
||||
return request.website.render("website_membership.partner", values)
|
||||
|
||||
@@ -4,7 +4,8 @@ from openerp.osv import osv, fields
|
||||
|
||||
|
||||
class WebsiteResPartner(osv.Model):
|
||||
_inherit = 'res.partner'
|
||||
_name = 'res.partner'
|
||||
_inherit = ['res.partner','website.seo.metadata']
|
||||
|
||||
_columns = {
|
||||
'website_published': fields.boolean(
|
||||
|
||||
Reference in New Issue
Block a user