[IMP] website snippet new option, gallery
website.snippet: The methods described in javascript will be called automatically from the data-method_name = value on li snippets options. The methods are called in the order relative to children of xml (eg: <li data-method1=value1> ... <li data-method2=value2> ... </ li>, the method1 is then called method2). Methods receive two arguments: type (over, click, reset) and value. data-snippet-id-option becomes data-snippet-id. Several xml options can use the same data-snippet-id. add a new gallery snippet convert website_sale to the new option system
This commit is contained in:
@@ -39,7 +39,7 @@
|
||||
<field name="model_id" ref="mass_mailing.model_mail_mass_mailing_contact"/>
|
||||
<field name="use_default_to" eval="True"/>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
<field name="body_html"><![CDATA[<div data-snippet-id="big-picture" style="padding:0px; margin:0px">
|
||||
<field name="body_html"><![CDATA[<div style="padding:0px; margin:0px">
|
||||
<table cellpadding="0" cellspacing="0" style="margin:10px 0px 0px;vertical-align:top;padding:0px;font-family:arial;font-size:12px;color:rgb(51,51,51)">
|
||||
<tbody>
|
||||
<tr>
|
||||
@@ -64,7 +64,7 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div data-snippet-id="three-columns" style="padding:0px; margin:0px">
|
||||
<div style="padding:0px; margin:0px">
|
||||
<table cellpadding="0" cellspacing="0" style="margin:10px 0px 0px;vertical-align:top;padding:0px;font-family:arial;font-size:12px;color:rgb(51,51,51)">
|
||||
<tbody>
|
||||
<tr>
|
||||
@@ -108,7 +108,7 @@
|
||||
<field name="mailing_domain">[('customer', '=', True)]</field>
|
||||
<field name="reply_to_mode">email</field>
|
||||
<field name="reply_to"><![CDATA[Info <info@yourcompany.example.com>]]></field>
|
||||
<field name="body_html"><![CDATA[<div data-snippet-id="big-picture" style="padding:0px; margin:0px">
|
||||
<field name="body_html"><![CDATA[<div style="padding:0px; margin:0px">
|
||||
<table cellpadding="0" cellspacing="0" style="margin:10px 0px 0px;vertical-align:top;padding:0px;font-family:arial;font-size:12px;color:rgb(51,51,51)">
|
||||
<tbody>
|
||||
<tr>
|
||||
@@ -133,7 +133,7 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div data-snippet-id="three-columns" style="padding:0px; margin:0px">
|
||||
<div style="padding:0px; margin:0px">
|
||||
<table cellpadding="0" cellspacing="0" style="margin:10px 0px 0px;vertical-align:top;padding:0px;font-family:arial;font-size:12px;color:rgb(51,51,51)">
|
||||
<tbody>
|
||||
<tr>
|
||||
|
||||
@@ -5,8 +5,9 @@
|
||||
var _t = openerp._t;
|
||||
|
||||
website.snippet.options.mailing_list_subscribe = website.snippet.Option.extend({
|
||||
on_prompt: function () {
|
||||
choose_mailing_list: function (type, value) {
|
||||
var self = this;
|
||||
if (type !== "click") return;
|
||||
return website.prompt({
|
||||
id: "editor_new_mailing_list_subscribe_button",
|
||||
window_title: _t("Add a Newsletter Subscribe Button"),
|
||||
@@ -22,15 +23,10 @@
|
||||
drop_and_build_snippet: function() {
|
||||
var self = this;
|
||||
this._super();
|
||||
this.on_prompt().fail(function () {
|
||||
this.choose_mailing_list('click').fail(function () {
|
||||
self.editor.on_remove();
|
||||
});
|
||||
},
|
||||
start : function () {
|
||||
var self = this;
|
||||
this.$el.find(".js_mailing_list").on("click", _.bind(this.on_prompt, this));
|
||||
this._super();
|
||||
},
|
||||
clean_for_save: function () {
|
||||
this.$target.addClass("hidden");
|
||||
},
|
||||
|
||||
@@ -29,13 +29,10 @@
|
||||
</xpath>
|
||||
|
||||
<xpath expr="//div[@id='snippet_options']" position="inside">
|
||||
<div data-snippet-option-id='mailing_list_subscribe'
|
||||
<div data-option='mailing_list_subscribe'
|
||||
data-selector=".js_subscribe"
|
||||
data-selector-siblings="p, h1, h2, h3, blockquote, .well, .panel"
|
||||
>
|
||||
<li>
|
||||
<a href="#" class="button js_mailing_list">Change Newsletter</a>
|
||||
</li>
|
||||
data-selector-siblings="p, h1, h2, h3, blockquote, .well, .panel">
|
||||
<li data-choose_mailing_list=""><a>Change Newsletter</a></li>
|
||||
</div>
|
||||
</xpath>
|
||||
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
{
|
||||
'name': 'Bootswatch Theme',
|
||||
'description': 'Bootswatch Theme',
|
||||
'category': 'Website',
|
||||
'category': 'Theme',
|
||||
'version': '1.0',
|
||||
'author': 'OpenERP SA',
|
||||
'depends': ['website'],
|
||||
'data': [
|
||||
'views/layout.xml',
|
||||
'views/theme.xml',
|
||||
],
|
||||
'application': True,
|
||||
|
||||
@@ -1,107 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<templates id="template" xml:space="preserve">
|
||||
|
||||
<t t-extend="website.theme_customize">
|
||||
<t t-jquery="#theme_customize_modal" t-operation="replace">
|
||||
|
||||
<div id="theme_customize_modal" class="modal fade bs-example-modal-sm">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="loading_backdrop"></div>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close">×</button>
|
||||
<h4 class="modal-title" id="mySmallModalLabel">Customize your theme</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<label class="checked">
|
||||
<img style="width: 120px; height: 70px;" src="/theme_bootswatch/static/src/img/bootswatch_default_thumbnail.png" alt="Default Theme"/>
|
||||
<input name="theme" type="radio" data-xmlid="" checked="checked"/>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label>
|
||||
<img style="width: 120px; height: 70px;" src="/theme_bootswatch/static/src/less/amelia/thumbnail.png" alt="Amelia"/>
|
||||
<input name="theme" type="radio" data-xmlid="website.theme_amelia"/>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label>
|
||||
<img style="width: 120px; height: 70px;" src="/theme_bootswatch/static/src/less/cerulean/thumbnail.png" alt="Cerulean"/>
|
||||
<input name="theme" type="radio" data-xmlid="website.theme_cerulean"/>
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label>
|
||||
<img style="width: 120px; height: 70px;" src="/theme_bootswatch/static/src/less/cosmo/thumbnail.png" alt="Cosmo"/>
|
||||
<input name="theme" type="radio" data-xmlid="website.theme_cosmo" data-disable="ee"/>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label>
|
||||
<img style="width: 120px; height: 70px;" src="/theme_bootswatch/static/src/less/cyborg/thumbnail.png" alt="Cyborg"/>
|
||||
<input name="theme" type="radio" data-xmlid="website.theme_cyborg"/>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label>
|
||||
<img style="width: 120px; height: 70px;" src="/theme_bootswatch/static/src/less/flatly/thumbnail.png" alt="Flatly"/>
|
||||
<input name="theme" type="radio" data-xmlid="website.theme_flatly"/>
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label>
|
||||
<img style="width: 120px; height: 70px;" src="/theme_bootswatch/static/src/less/journal/thumbnail.png" alt="Journal"/>
|
||||
<input name="theme" type="radio" data-xmlid="website.theme_journal"/>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label>
|
||||
<img style="width: 120px; height: 70px;" src="/theme_bootswatch/static/src/less/readable/thumbnail.png" alt="Readable"/>
|
||||
<input name="theme" type="radio" data-xmlid="website.theme_readable"/>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label>
|
||||
<img style="width: 120px; height: 70px;" src="/theme_bootswatch/static/src/less/simplex/thumbnail.png" alt="Simplex"/>
|
||||
<input name="theme" type="radio" data-xmlid="website.theme_simplex"/>
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label>
|
||||
<img style="width: 120px; height: 70px;" src="/theme_bootswatch/static/src/less/slate/thumbnail.png" alt="Slate"/>
|
||||
<input name="theme" type="radio" data-xmlid="website.theme_slate"/>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label>
|
||||
<img style="width: 120px; height: 70px;" src="/theme_bootswatch/static/src/less/spacelab/thumbnail.png" alt="Spacelab"/>
|
||||
<input name="theme" type="radio" data-xmlid="website.theme_spacelab"/>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label>
|
||||
<img style="width: 120px; height: 70px;" src="/theme_bootswatch/static/src/less/united/thumbnail.png" alt="United"/>
|
||||
<input name="theme" type="radio" data-xmlid="website.theme_united"/>
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</t>
|
||||
</t>
|
||||
|
||||
|
||||
</templates>
|
||||
@@ -1,17 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<template id="script" inherit_id="website.assets_editor" name="Clean scripts">
|
||||
<xpath expr="/t" position="inside">
|
||||
<script type="text/javascript">
|
||||
(function() {
|
||||
'use strict';
|
||||
openerp.website.add_template_file('/theme_bootswatch/static/src/xml/theme.xml');
|
||||
})();
|
||||
</script>
|
||||
</xpath>
|
||||
</template>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -2,6 +2,108 @@
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<template id="theme_customize" inherit_id="website.theme_customize" name="theme_customize Bootswatch">
|
||||
<xpath expr="div" position="replace">
|
||||
|
||||
<div id="theme_customize_modal" class="modal fade bs-example-modal-sm">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="loading_backdrop"></div>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close">×</button>
|
||||
<h4 class="modal-title" id="mySmallModalLabel">Customize your theme</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<label class="checked">
|
||||
<img style="width: 120px; height: 70px;" src="/theme_bootswatch/static/src/img/bootswatch_default_thumbnail.png" alt="Default Theme"/>
|
||||
<input name="theme" type="radio" data-xmlid="" checked="checked"/>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label>
|
||||
<img style="width: 120px; height: 70px;" src="/theme_bootswatch/static/src/less/amelia/thumbnail.png" alt="Amelia"/>
|
||||
<input name="theme" type="radio" data-xmlid="website.theme_amelia"/>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label>
|
||||
<img style="width: 120px; height: 70px;" src="/theme_bootswatch/static/src/less/cerulean/thumbnail.png" alt="Cerulean"/>
|
||||
<input name="theme" type="radio" data-xmlid="website.theme_cerulean"/>
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label>
|
||||
<img style="width: 120px; height: 70px;" src="/theme_bootswatch/static/src/less/cosmo/thumbnail.png" alt="Cosmo"/>
|
||||
<input name="theme" type="radio" data-xmlid="website.theme_cosmo" data-disable="ee"/>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label>
|
||||
<img style="width: 120px; height: 70px;" src="/theme_bootswatch/static/src/less/cyborg/thumbnail.png" alt="Cyborg"/>
|
||||
<input name="theme" type="radio" data-xmlid="website.theme_cyborg"/>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label>
|
||||
<img style="width: 120px; height: 70px;" src="/theme_bootswatch/static/src/less/flatly/thumbnail.png" alt="Flatly"/>
|
||||
<input name="theme" type="radio" data-xmlid="website.theme_flatly"/>
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label>
|
||||
<img style="width: 120px; height: 70px;" src="/theme_bootswatch/static/src/less/journal/thumbnail.png" alt="Journal"/>
|
||||
<input name="theme" type="radio" data-xmlid="website.theme_journal"/>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label>
|
||||
<img style="width: 120px; height: 70px;" src="/theme_bootswatch/static/src/less/readable/thumbnail.png" alt="Readable"/>
|
||||
<input name="theme" type="radio" data-xmlid="website.theme_readable"/>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label>
|
||||
<img style="width: 120px; height: 70px;" src="/theme_bootswatch/static/src/less/simplex/thumbnail.png" alt="Simplex"/>
|
||||
<input name="theme" type="radio" data-xmlid="website.theme_simplex"/>
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label>
|
||||
<img style="width: 120px; height: 70px;" src="/theme_bootswatch/static/src/less/slate/thumbnail.png" alt="Slate"/>
|
||||
<input name="theme" type="radio" data-xmlid="website.theme_slate"/>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label>
|
||||
<img style="width: 120px; height: 70px;" src="/theme_bootswatch/static/src/less/spacelab/thumbnail.png" alt="Spacelab"/>
|
||||
<input name="theme" type="radio" data-xmlid="website.theme_spacelab"/>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label>
|
||||
<img style="width: 120px; height: 70px;" src="/theme_bootswatch/static/src/less/united/thumbnail.png" alt="United"/>
|
||||
<input name="theme" type="radio" data-xmlid="website.theme_united"/>
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</xpath>
|
||||
</template>
|
||||
|
||||
<!--
|
||||
Apply Bootstrap less files
|
||||
-->
|
||||
|
||||
@@ -273,46 +273,51 @@ class Website(openerp.addons.web.controllers.main.Home):
|
||||
|
||||
@http.route('/website/attach', type='http', auth='user', methods=['POST'], website=True)
|
||||
def attach(self, func, upload=None, url=None):
|
||||
Attachments = request.registry['ir.attachment']
|
||||
# the upload argument doesn't allow us to access the files if more than
|
||||
# one file is uploaded, as upload references the first file
|
||||
# therefore we have to recover the files from the request object
|
||||
Attachments = request.registry['ir.attachment'] # registry for the attachment table
|
||||
|
||||
website_url = message = None
|
||||
if not upload:
|
||||
website_url = url
|
||||
name = url.split("/").pop()
|
||||
uploads = []
|
||||
message = None
|
||||
if not upload: # no image provided, storing the link and the image name
|
||||
uploads.append({'website_url': url})
|
||||
name = url.split("/").pop() # recover filename
|
||||
attachment_id = Attachments.create(request.cr, request.uid, {
|
||||
'name':name,
|
||||
'type': 'url',
|
||||
'url': url,
|
||||
'res_model': 'ir.ui.view',
|
||||
}, request.context)
|
||||
else:
|
||||
else: # images provided
|
||||
try:
|
||||
image_data = upload.read()
|
||||
image = Image.open(cStringIO.StringIO(image_data))
|
||||
w, h = image.size
|
||||
if w*h > 42e6: # Nokia Lumia 1020 photo resolution
|
||||
raise ValueError(
|
||||
u"Image size excessive, uploaded images must be smaller "
|
||||
u"than 42 million pixel")
|
||||
|
||||
attachment_id = Attachments.create(request.cr, request.uid, {
|
||||
'name': upload.filename,
|
||||
'datas': image_data.encode('base64'),
|
||||
'datas_fname': upload.filename,
|
||||
'res_model': 'ir.ui.view',
|
||||
}, request.context)
|
||||
|
||||
[attachment] = Attachments.read(
|
||||
request.cr, request.uid, [attachment_id], ['website_url'],
|
||||
context=request.context)
|
||||
website_url = attachment['website_url']
|
||||
for c_file in request.httprequest.files.getlist('upload'):
|
||||
image_data = c_file.read()
|
||||
image = Image.open(cStringIO.StringIO(image_data))
|
||||
w, h = image.size
|
||||
if w*h > 42e6: # Nokia Lumia 1020 photo resolution
|
||||
raise ValueError(
|
||||
u"Image size excessive, uploaded images must be smaller "
|
||||
u"than 42 million pixel")
|
||||
|
||||
attachment_id = Attachments.create(request.cr, request.uid, {
|
||||
'name': c_file.filename,
|
||||
'datas': image_data.encode('base64'),
|
||||
'datas_fname': c_file.filename,
|
||||
'res_model': 'ir.ui.view',
|
||||
}, request.context)
|
||||
|
||||
[attachment] = Attachments.read(
|
||||
request.cr, request.uid, [attachment_id], ['website_url'],
|
||||
context=request.context)
|
||||
uploads.append(attachment)
|
||||
except Exception, e:
|
||||
logger.exception("Failed to upload image to attachment")
|
||||
message = unicode(e)
|
||||
|
||||
return """<script type='text/javascript'>
|
||||
window.parent['%s'](%s, %s);
|
||||
</script>""" % (func, json.dumps(website_url), json.dumps(message))
|
||||
</script>""" % (func, json.dumps(uploads), json.dumps(message))
|
||||
|
||||
@http.route(['/website/publish'], type='json', auth="public", website=True)
|
||||
def publish(self, id, object):
|
||||
|
||||
@@ -52,6 +52,18 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_module_theme" model="ir.actions.act_window">
|
||||
<field name="name">Website Theme</field>
|
||||
<field name="res_model">ir.module.module</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">kanban,form</field>
|
||||
<field name="context" eval="'{\'search_default_category_id\':'+str(ref('base.module_category_theme'))+'}'"/>
|
||||
<field name="help" type="html">
|
||||
<p><b>No theme module found!</b></p>
|
||||
<p>You should try others search criteria.</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_website" model="ir.actions.act_url">
|
||||
<field name="name">Website</field>
|
||||
<field name="url">/</field>
|
||||
|
||||
@@ -0,0 +1,134 @@
|
||||
Website Snippet & Blocks
|
||||
========================
|
||||
|
||||
The building blocks appear in the edit bar website. These prebuilt html block
|
||||
allowing the designer to easily generate content on a page (drag and drop).
|
||||
Snippets bind javascript object on custom part html code according to their
|
||||
selector (jQuery) and javascript object. The snippets is also used to create
|
||||
the drop zone.
|
||||
|
||||
|
||||
Building Blocks
|
||||
+++++++++++++++
|
||||
|
||||
Overwrite ``_get_snippet_url`` to set an other file to load the snippets (use by
|
||||
website_mail for example)
|
||||
Overwrite ``_add_check_selector`` to enable or disable other snippets. By default
|
||||
the builder check if the node or his parent have the attribute data-oe-model
|
||||
|
||||
Trigger:
|
||||
- ``snippet-dropped`` is triggered on ``#oe_snippets`` whith $target as attribute when a snippet is dropped
|
||||
- ``snippet-activated`` is triggered on ``#oe_snippets`` (and on snippet) when a snippet is activated
|
||||
|
||||
|
||||
Blocks
|
||||
++++++
|
||||
|
||||
The ``blocks`` are the HTML code that can be drop in the page. The blocks consist
|
||||
of a body and a thumbnail:
|
||||
- thumbnail:
|
||||
(have class ``oe_snippet_thumbnail``) contains a picture and a text used to
|
||||
display a preview in the edit bar that contains all the block list
|
||||
- body:
|
||||
(have class ``oe_snippet_body``) is the real part dropped in the page. The class
|
||||
``oe_snippet_body`` is removed before inserting the block in the page.
|
||||
e.g.:
|
||||
<div>
|
||||
<div class="oe_snippet_thumbnail">
|
||||
<img class="oe_snippet_thumbnail_img" src="...image src..."/>
|
||||
<span class="oe_snippet_thumbnail_title">...Block Name...</span>
|
||||
</div>
|
||||
<div class="oe_snippet_body">
|
||||
<!--
|
||||
The block with class 'oe_snippet_body' is inserted in the page.
|
||||
This class is removed when the block is dropped.
|
||||
The block can be made of any html tag and content. -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
Editor
|
||||
++++++
|
||||
|
||||
The ``editor`` is the frame placed above the block being edited who contains buttons
|
||||
(move, delete, clone) and customize menu. The ``editor`` load ``options`` based on
|
||||
selectors defined in snippets
|
||||
|
||||
|
||||
Options
|
||||
+++++++
|
||||
|
||||
The ``option`` is the javascript object used to customize the HTML code.
|
||||
|
||||
Object:
|
||||
- this.``$target``:
|
||||
block html inserted inside the page
|
||||
- this.``$el``:
|
||||
html li list of this options
|
||||
- this.``$overlay``:
|
||||
html editor overlay who content resize bar, customize menu...
|
||||
|
||||
Methods:
|
||||
- ``set_active``:
|
||||
highlight the customize menu item when the user click on customize, and click on
|
||||
an item.
|
||||
- ``start``:
|
||||
called when the editor is created on the DOM
|
||||
- ``on_focus``:
|
||||
called when the user click inside the block inserted in page and when the
|
||||
user drop on block into the page
|
||||
- ``on_blur``:
|
||||
called when the user click outside the block inserted in page, if the block
|
||||
is focused
|
||||
- ``on_clone``:
|
||||
called when the snippet is duplicate
|
||||
@variables: $clone is allready inserted is the page
|
||||
- ``on_remove``:
|
||||
called when the snippet is removed (dom is removing after this tigger)
|
||||
- ``drop_and_build_snippet:
|
||||
called just after that a thumbnail is drag and dropped into a drop zone.
|
||||
The content is already inserted in the page.
|
||||
- ``clean_for_save``:
|
||||
is called just before to save the vue. Sometime it's important to remove or add
|
||||
some datas (contentEditable, added classes to a running animation...)
|
||||
|
||||
Customize Methods:
|
||||
All javascript option can defiend method call from the template on mouse over, on
|
||||
click or to reset the default value (<li data-your_js_method="your_value"><a>...</a></li>).
|
||||
The method receive the variable type (``over``, ``click`` or ``reset``), the method
|
||||
value and the jQuery object of the HTML li item. (can be use for multi methods)
|
||||
|
||||
By default to custom method are defined:
|
||||
|
||||
- ``check_class(type, className, $li)``:
|
||||
li must have data-check_class="a_classname_for_test" to call this method. This method
|
||||
toggle the className on $target
|
||||
- ``select_class(type, className, $li)``:
|
||||
This method remove all other select_class value (for this option) and add this current ClassName
|
||||
|
||||
|
||||
Snippet
|
||||
+++++++
|
||||
|
||||
The ``snippets`` are the HTML code to defined the drop zone and the linked javascript object.
|
||||
All HTML li tag defined inside the snippets HTML are insert into the customize menu. All
|
||||
data attributes is optional:
|
||||
|
||||
- ``data-selector``:
|
||||
Apply options on all The part of html who match with this jQuery selector.
|
||||
E.g.: If the selector is div, all div will be selected and can be highlighted and assigned an editor.
|
||||
- ``data-option``:
|
||||
javascript ``option`` to call when the ``editor`` is loaded
|
||||
- ``data-drop-in``:
|
||||
The html part can be insert or move beside the selected html block (jQuery selector)
|
||||
- ``data-drop-near``:
|
||||
The html part can be insert or move inside the selected html block (jQuery selector)
|
||||
- ``data-drop-in-vertical``:
|
||||
The html part can be insert or move inside the selected html block. The drop zone is displayed
|
||||
vertically (jQuery selector)
|
||||
- HTML content like <li data-your_js_method="your_value"><a>...</a></li>:
|
||||
List of HTML li menu items displayed in customize menu. If the li tag have datas the methods are
|
||||
automatically called
|
||||
- ``no-check``:
|
||||
The selectors are automatically compute to have elements inside the branding. If you use this option
|
||||
the check is not apply (for e.g.: to have a snippet for the grid view of website_sale)
|
||||
@@ -46,6 +46,7 @@
|
||||
display: inline-block;
|
||||
white-space: nowrap;
|
||||
background: black;
|
||||
margin-right: 60px;
|
||||
}
|
||||
#oe_snippets .tab-content > div {
|
||||
background: black;
|
||||
@@ -119,6 +120,12 @@
|
||||
.oe_snippet > :not(.oe_snippet_thumbnail) {
|
||||
display: none !important;
|
||||
}
|
||||
.oe_snippet.disable .oe_snippet_thumbnail {
|
||||
background-color: rgba(255, 0, 0, 0.75);
|
||||
}
|
||||
.oe_snippet.disable .oe_snippet_thumbnail_img {
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
#oe_snippets .oe_snippet_thumbnail {
|
||||
background: #747474, -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, rgba(0, 0, 0, 0.25)), color-stop(100%, rgba(0, 0, 0, 0.4)));
|
||||
@@ -381,6 +388,9 @@
|
||||
float: none;
|
||||
margin: 0 -3px;
|
||||
}
|
||||
.oe_overlay .oe_overlay_options > .btn-group > div {
|
||||
float: none;
|
||||
}
|
||||
.oe_overlay .oe_overlay_options .btn, .oe_overlay .oe_overlay_options a {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
display: inline-block
|
||||
white-space: nowrap
|
||||
background: black
|
||||
margin-right: 60px
|
||||
> div
|
||||
background: rgb(0,0,0)
|
||||
label
|
||||
@@ -87,7 +88,11 @@
|
||||
line-height: 18px
|
||||
& > :not(.oe_snippet_thumbnail)
|
||||
display: none !important
|
||||
|
||||
&.disable
|
||||
.oe_snippet_thumbnail
|
||||
background-color: rgba(255, 0, 0, 0.75)
|
||||
.oe_snippet_thumbnail_img
|
||||
opacity: 0.8
|
||||
#oe_snippets .oe_snippet_thumbnail
|
||||
@include background(#747474, radial-gradient(rgba(0,0,0,0.25),rgba(0,0,0,0.4)))
|
||||
|
||||
@@ -286,6 +291,8 @@
|
||||
display: inline-block
|
||||
float: none
|
||||
margin: 0 -3px
|
||||
> div
|
||||
float: none
|
||||
.btn, a
|
||||
cursor: pointer
|
||||
.dropdown
|
||||
|
||||
@@ -356,6 +356,114 @@ ul.nav-stacked > li > a {
|
||||
padding: 4px 0;
|
||||
}
|
||||
|
||||
/* gallery */
|
||||
.o_gallery.o_grid.o_spc-none div.row, .o_gallery.o_masonry.o_spc-none div.row {
|
||||
margin: 0;
|
||||
}
|
||||
.o_gallery.o_grid.o_spc-none div.row > *, .o_gallery.o_masonry.o_spc-none div.row > * {
|
||||
padding: 0;
|
||||
}
|
||||
.o_gallery.o_grid.o_spc-small div.row, .o_gallery.o_masonry.o_spc-small div.row {
|
||||
margin: 5px 0;
|
||||
}
|
||||
.o_gallery.o_grid.o_spc-small div.row > *, .o_gallery.o_masonry.o_spc-small div.row > * {
|
||||
padding: 0 5px;
|
||||
}
|
||||
.o_gallery.o_grid.o_spc-medium div.row, .o_gallery.o_masonry.o_spc-medium div.row {
|
||||
margin: 10px 0;
|
||||
}
|
||||
.o_gallery.o_grid.o_spc-medium div.row > *, .o_gallery.o_masonry.o_spc-medium div.row > * {
|
||||
padding: 0 10px;
|
||||
}
|
||||
.o_gallery.o_grid.o_spc-big div.row, .o_gallery.o_masonry.o_spc-big div.row {
|
||||
margin: 15px 0;
|
||||
}
|
||||
.o_gallery.o_grid.o_spc-big div.row > *, .o_gallery.o_masonry.o_spc-big div.row > * {
|
||||
padding: 0 15px;
|
||||
}
|
||||
.o_gallery.o_grid .img, .o_gallery.o_masonry .img {
|
||||
width: 100%;
|
||||
}
|
||||
.o_gallery.o_grid.size-auto .row {
|
||||
height: auto;
|
||||
}
|
||||
.o_gallery.o_grid.size-small .row {
|
||||
height: 100px;
|
||||
}
|
||||
.o_gallery.o_grid.size-medium .row {
|
||||
height: 250px;
|
||||
}
|
||||
.o_gallery.o_grid.size-big .row {
|
||||
height: 400px;
|
||||
}
|
||||
.o_gallery.o_grid.size-small .img, .o_gallery.o_grid.size-medium .img, .o_gallery.o_grid.size-big .img {
|
||||
height: 100%;
|
||||
}
|
||||
.o_gallery.o_nomode.o_spc-none .img {
|
||||
padding: 0;
|
||||
}
|
||||
.o_gallery.o_nomode.o_spc-small .img {
|
||||
padding: 5px;
|
||||
}
|
||||
.o_gallery.o_nomode.o_spc-medium .img {
|
||||
padding: 10px;
|
||||
}
|
||||
.o_gallery.o_nomode.o_spc-big .img {
|
||||
padding: 15px;
|
||||
}
|
||||
.o_gallery.o_slideshow .carousel ul.carousel-indicators li {
|
||||
border: 1px solid #aaaaaa;
|
||||
}
|
||||
.o_gallery .carousel-inner .item img {
|
||||
max-width: none;
|
||||
}
|
||||
|
||||
.o_gallery.o_slideshow > .container {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.o_gallery.o_slideshow .carousel, .modal-body.o_slideshow .carousel {
|
||||
height: 100%;
|
||||
}
|
||||
.o_gallery.o_slideshow .carousel img, .modal-body.o_slideshow .carousel img {
|
||||
max-height: 100%;
|
||||
max-width: 100%;
|
||||
margin: auto;
|
||||
position: relative;
|
||||
top: 50%;
|
||||
-webkit-transform: translateY(-50%);
|
||||
-ms-transform: translateY(-50%);
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
.o_gallery.o_slideshow .carousel ul.carousel-indicators, .modal-body.o_slideshow .carousel ul.carousel-indicators {
|
||||
display: block;
|
||||
height: auto;
|
||||
padding: 0;
|
||||
border-width: 0;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
}
|
||||
.o_gallery.o_slideshow .carousel ul.carousel-indicators li, .modal-body.o_slideshow .carousel ul.carousel-indicators li {
|
||||
list-style-image: none;
|
||||
display: inline-block;
|
||||
width: 35px;
|
||||
height: 35px;
|
||||
margin: 0 0px 5px 5px;
|
||||
padding: 0;
|
||||
border: 1px solid #aaaaaa;
|
||||
text-indent: initial;
|
||||
background-size: cover;
|
||||
opacity: 0.5;
|
||||
background-color: black;
|
||||
}
|
||||
.o_gallery.o_slideshow .carousel ul.carousel-indicators li.active, .modal-body.o_slideshow .carousel ul.carousel-indicators li.active {
|
||||
opacity: 1;
|
||||
}
|
||||
.o_gallery.o_slideshow .carousel .carousel-control.left, .o_gallery.o_slideshow .carousel .carousel-control.right, .modal-body.o_slideshow .carousel .carousel-control.left, .modal-body.o_slideshow .carousel .carousel-control.right {
|
||||
background-image: none;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/* Parallax Theme */
|
||||
div.carousel .carousel-indicators li {
|
||||
border: 1px solid grey;
|
||||
|
||||
@@ -285,6 +285,102 @@ ul.nav-stacked > li > a
|
||||
.hr
|
||||
padding: 4px 0
|
||||
|
||||
/* gallery */
|
||||
|
||||
.o_gallery
|
||||
&.o_grid, &.o_masonry
|
||||
&.o_spc-none
|
||||
div.row
|
||||
margin: 0
|
||||
div.row > *
|
||||
padding: 0
|
||||
&.o_spc-small
|
||||
div.row
|
||||
margin: 5px 0
|
||||
div.row > *
|
||||
padding: 0 5px
|
||||
&.o_spc-medium
|
||||
div.row
|
||||
margin: 10px 0
|
||||
div.row > *
|
||||
padding: 0 10px
|
||||
&.o_spc-big
|
||||
div.row
|
||||
margin: 15px 0
|
||||
div.row > *
|
||||
padding: 0 15px
|
||||
.img
|
||||
width: 100%
|
||||
&.o_grid
|
||||
&.size-auto .row
|
||||
height: auto
|
||||
&.size-small .row
|
||||
height: 100px
|
||||
&.size-medium .row
|
||||
height: 250px
|
||||
&.size-big .row
|
||||
height: 400px
|
||||
&.size-small, &.size-medium, &.size-big
|
||||
.img
|
||||
height: 100%
|
||||
&.o_nomode
|
||||
&.o_spc-none
|
||||
.img
|
||||
padding: 0
|
||||
&.o_spc-small
|
||||
.img
|
||||
padding: 5px
|
||||
&.o_spc-medium
|
||||
.img
|
||||
padding: 10px
|
||||
&.o_spc-big
|
||||
.img
|
||||
padding: 15px
|
||||
|
||||
&.o_slideshow .carousel ul.carousel-indicators li
|
||||
border: 1px solid #aaa
|
||||
.carousel-inner .item img
|
||||
max-width: none
|
||||
|
||||
.o_gallery.o_slideshow > .container
|
||||
height: 100%
|
||||
|
||||
.o_gallery.o_slideshow .carousel, .modal-body.o_slideshow .carousel
|
||||
height: 100%
|
||||
img
|
||||
max-height: 100%
|
||||
max-width: 100%
|
||||
margin: auto
|
||||
position: relative
|
||||
top: 50%
|
||||
-webkit-transform: translateY(-50%)
|
||||
-ms-transform: translateY(-50%)
|
||||
transform: translateY(-50%)
|
||||
ul.carousel-indicators
|
||||
display: block
|
||||
height: auto
|
||||
padding: 0
|
||||
border-width: 0
|
||||
position: absolute
|
||||
bottom: 0
|
||||
li
|
||||
list-style-image: none
|
||||
display: inline-block
|
||||
width: 35px
|
||||
height: 35px
|
||||
margin: 0 0px 5px 5px
|
||||
padding: 0
|
||||
border: 1px solid #aaa
|
||||
text-indent: initial
|
||||
background-size: cover
|
||||
opacity: 0.5
|
||||
background-color: #000
|
||||
li.active
|
||||
opacity: 1
|
||||
.carousel-control.left, .carousel-control.right
|
||||
background-image: none
|
||||
background-color: transparent
|
||||
|
||||
/* Parallax Theme */
|
||||
|
||||
div.carousel
|
||||
|
||||
@@ -1568,9 +1568,9 @@
|
||||
}
|
||||
var callback = _.uniqueId('func_');
|
||||
this.$('input[name=func]').val(callback);
|
||||
window[callback] = function (url, error) {
|
||||
window[callback] = function (attachments, error) {
|
||||
delete window[callback];
|
||||
self.file_selected(url, error);
|
||||
self.file_selected(attachments[0]['website_url'], error);
|
||||
};
|
||||
},
|
||||
file_selection: function () {
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
|
||||
var website = openerp.website;
|
||||
|
||||
if (!website.snippet) website.snippet = {};
|
||||
website.snippet.readyAnimation = [];
|
||||
|
||||
@@ -37,7 +39,14 @@
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
$(document).ready(function () {
|
||||
if ($(".o_gallery:not(.oe_slideshow)").size()) {
|
||||
// load gallery modal template
|
||||
website.add_template_file('/website/static/src/xml/website.gallery.xml');
|
||||
}
|
||||
|
||||
website.snippet.start_animation();
|
||||
});
|
||||
|
||||
@@ -69,7 +78,7 @@
|
||||
website.snippet.animationRegistry.slider = website.snippet.Animation.extend({
|
||||
selector: ".carousel",
|
||||
start: function () {
|
||||
this.$target.carousel({interval: 10000});
|
||||
this.$target.carousel();
|
||||
},
|
||||
stop: function () {
|
||||
this.$target.carousel('pause');
|
||||
@@ -154,4 +163,70 @@
|
||||
this.$target.html('<div class="css_editable_mode_display"> </div><iframe src="'+this.$target.data("src")+'" frameborder="0" allowfullscreen="allowfullscreen"></iframe>');
|
||||
},
|
||||
});
|
||||
|
||||
/* -------------------------------------------------------------------------
|
||||
Gallery Animation
|
||||
|
||||
This ads a Modal window containing a slider when an image is clicked
|
||||
inside a gallery
|
||||
-------------------------------------------------------------------------*/
|
||||
website.snippet.animationRegistry.gallery = website.snippet.Animation.extend({
|
||||
selector: ".o_gallery:not(.o_slideshow)",
|
||||
start: function() {
|
||||
var self = this;
|
||||
this.$el.on("click", "img", this.click_handler);
|
||||
},
|
||||
click_handler : function(event) {
|
||||
var self = this;
|
||||
var $cur = $(event.currentTarget);
|
||||
var edition_mode = ($cur.closest("[contenteditable='true']").size() !== 0);
|
||||
|
||||
// show it only if not in edition mode
|
||||
if (!edition_mode) {
|
||||
var urls = [],
|
||||
idx = undefined,
|
||||
milliseconds = undefined,
|
||||
params = undefined,
|
||||
$images = $cur.closest(".o_gallery").find("img"),
|
||||
dimensions = {
|
||||
min_width : Math.round( window.innerWidth * 0.7),
|
||||
min_height : Math.round( window.innerHeight * 0.7),
|
||||
max_width : Math.round( window.innerWidth * 0.7),
|
||||
max_height : Math.round( window.innerHeight * 0.7),
|
||||
height : Math.round( window.innerHeight * 0.7)
|
||||
};
|
||||
|
||||
$images.each(function() {
|
||||
urls.push($(this).attr("src"));
|
||||
});
|
||||
var $img = ($cur.is("img") === true) ? $cur : $cur.closest("img");
|
||||
idx = urls.indexOf($img.attr("src"));
|
||||
|
||||
milliseconds = $cur.closest(".o_gallery").data("interval") || false;
|
||||
var params = {
|
||||
srcs : urls,
|
||||
index: idx,
|
||||
dim : dimensions,
|
||||
interval : milliseconds,
|
||||
id: _.uniqueId("slideshow_")
|
||||
};
|
||||
var $modal = $(openerp.qweb.render('website.gallery.slideshow.lightbox', params));
|
||||
$modal.modal({
|
||||
keyboard : true,
|
||||
backdrop : true
|
||||
});
|
||||
$modal.on('hidden.bs.modal', function() {
|
||||
$(this).hide();
|
||||
$(this).siblings().filter(".modal-backdrop").remove(); // bootstrap leaves a modal-backdrop
|
||||
$(this).remove();
|
||||
|
||||
});
|
||||
$modal.find(".modal-content, .modal-body.o_slideshow").css("height", "100%");
|
||||
|
||||
$modal.appendTo(document.body);
|
||||
$modal.find(".carousel").carousel();
|
||||
}
|
||||
} // click_handler
|
||||
});
|
||||
|
||||
})();
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,348 @@
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
var website = openerp.website,
|
||||
_t = openerp._t;
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
Template files to load
|
||||
--------------------------------------------------------------------------*/
|
||||
website.add_template_file('/website/static/src/xml/website.gallery.xml');
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
Gallery Snippet
|
||||
|
||||
This is the snippet responsible for configuring the image galleries.
|
||||
Look at /website/views/snippets.xml for the available options
|
||||
------------------------------------------------------------------------*/
|
||||
website.snippet.options.gallery = website.snippet.Option.extend({
|
||||
start : function() {
|
||||
this._super();
|
||||
this.bind_change();
|
||||
},
|
||||
styling : function(type, value) {
|
||||
var classes = this.$el.find('li[data-styling]').map(function () {
|
||||
return $(this).data('styling');
|
||||
}).get().join(' ');
|
||||
this.$target.find("img").removeClass(classes).addClass(value);
|
||||
},
|
||||
interval : function(type, value) {
|
||||
this.$target.find('.carousel:first').attr("data-interval", value);
|
||||
},
|
||||
reapply : function() {
|
||||
var self = this,
|
||||
modes = [ 'o_nomode', 'o_grid', 'o_masonry', 'o_slideshow' ],
|
||||
classes = this.$target.attr("class").split(/\s+/);
|
||||
if (this.block) return;
|
||||
modes.forEach(function(mode) {
|
||||
if (classes.indexOf(mode) != -1) {
|
||||
self.mode("reapply", mode);
|
||||
return;
|
||||
}
|
||||
});
|
||||
},
|
||||
bind_change: function () {
|
||||
var self = this;
|
||||
return this.$target.find("img").off('saved').on('saved', function (event, img) {
|
||||
var $parent = $(img).parent();
|
||||
$parent.addClass("saved_active");
|
||||
var index = self.$target.find(".item.saved_active").index();
|
||||
$parent.removeClass("saved_active");
|
||||
self.$target.find(".carousel:first li[data-target]:eq("+index+")").css("background-image", "url("+$(img).attr("src")+")");
|
||||
});
|
||||
},
|
||||
get_imgs: function () {
|
||||
return this.$target.find("img").addClass("img img-thumbnail img-responsive mb8 mt8").detach();
|
||||
},
|
||||
mode: function (type, value) {
|
||||
if (this.block) return;
|
||||
if (!value) value = 'nomode';
|
||||
this[value]();
|
||||
this.$target.removeClass('o_nomode o_masonry o_grid o_slideshow').addClass("o_"+value);
|
||||
this.bind_change();
|
||||
},
|
||||
replace: function ($content) {
|
||||
var $container = this.$target.find(".container:first");
|
||||
$container.empty().append($content);
|
||||
return $container;
|
||||
},
|
||||
nomode : function() {
|
||||
var self = this,
|
||||
$row = $('<div class="row"></div>'),
|
||||
$imgs = this.get_imgs().wrap('<div>').parent();
|
||||
|
||||
this.replace($row);
|
||||
|
||||
$imgs.each(function () {
|
||||
var img = this.childNodes[0];
|
||||
if (img.width >= img.height * 2) {
|
||||
$(this).addClass("col-md-6");
|
||||
} else if (img.width > 600) {
|
||||
$(this).addClass("col-md-6");
|
||||
} else {
|
||||
$(this).addClass("col-md-3");
|
||||
}
|
||||
});
|
||||
$row.append($imgs);
|
||||
this.$target.css("height", "");
|
||||
},
|
||||
masonry : function() {
|
||||
var self = this,
|
||||
$imgs = this.get_imgs(),
|
||||
columns = this.get_columns(),
|
||||
colClass = undefined,
|
||||
$cols = [];
|
||||
|
||||
var $row = $("<div class='row'/>");
|
||||
this.replace($row);
|
||||
|
||||
// if no columns let's default to 3, here we must update the DOM accordingly :'(
|
||||
if (columns === 0) {
|
||||
columns = 3;
|
||||
this.$target.attr("data-columns", columns);
|
||||
}
|
||||
colClass = "col-md-"+(12/columns);
|
||||
|
||||
// create columns
|
||||
for (var c = 0; c < columns; c++) {
|
||||
var $col = $('<div class="col"></div>').addClass(colClass);
|
||||
$row.append($col);
|
||||
$cols.push($col.get()[0]);
|
||||
}
|
||||
|
||||
this.block = true;
|
||||
$cols = $($cols);
|
||||
var imgs = $imgs.get();
|
||||
function add() {
|
||||
self.lowest($cols).append(imgs.pop());
|
||||
if (imgs.length) setTimeout(add, 0);
|
||||
else self.block = false;
|
||||
}
|
||||
if (imgs.length) add();
|
||||
this.$target.css("height", "");
|
||||
},
|
||||
grid : function() {
|
||||
var self = this,
|
||||
$cols = this.get_imgs().wrap('<div>').parent(),
|
||||
$col, $img,
|
||||
$row = $('<div class="row"></div>'),
|
||||
columns = this.get_columns() || 3,
|
||||
colClass = "col-md-"+(12/columns),
|
||||
$container = this.replace($row);
|
||||
|
||||
$cols.each(function(index) { // 0 based index
|
||||
$col = $(this);
|
||||
$img = $col.find('img');
|
||||
self.img_preserve_styles($img);
|
||||
self.img_responsive($img);
|
||||
$col.addClass(colClass);
|
||||
$col.appendTo($row);
|
||||
if ( (index+1) % columns === 0) {
|
||||
$row = $('<div class="row"></div>');
|
||||
$row.appendTo($container);
|
||||
}
|
||||
});
|
||||
this.$target.css("height", "");
|
||||
},
|
||||
slideshow :function () {
|
||||
var self = this;
|
||||
var $imgs = this.$target.find("img").detach(),
|
||||
urls = $imgs.map(function() { return $(this).attr("src"); } ).get(),
|
||||
params = {
|
||||
srcs : urls,
|
||||
index: 1,
|
||||
title: "",
|
||||
interval : this.$target.data("interval") || false,
|
||||
id: _.uniqueId("slideshow_")
|
||||
},
|
||||
$slideshow = $(openerp.qweb.render('website.gallery.slideshow', params));
|
||||
this.replace($slideshow);
|
||||
this.$target.css("height", Math.round(window.innerHeight*0.7));
|
||||
},
|
||||
columns : function(type, value) {
|
||||
if (this.block) return;
|
||||
this.$target.attr("data-columns", value);
|
||||
this.reapply();
|
||||
},
|
||||
albumimages : function(type, value) {
|
||||
if(type === "click") this[value]();
|
||||
},
|
||||
images_add : function() {
|
||||
/* will be moved in ImageDialog from MediaManager */
|
||||
var self = this,
|
||||
$container = this.$target.find(".container:first"),
|
||||
$upload_form = $(openerp.qweb.render('website.gallery.dialog.upload')),
|
||||
$progress = $upload_form.find(".fa");
|
||||
|
||||
$upload_form.appendTo(document.body);
|
||||
|
||||
$upload_form.on('modal.bs.hide', function() { $(this).remove(); } );
|
||||
|
||||
$upload_form.find(".alert-success").hide();
|
||||
$upload_form.find(".alert-danger").hide();
|
||||
|
||||
$upload_form.on("change", 'input[name="upload"]', function(event) {
|
||||
$upload_form.find('input[type="submit"]').parent().removeClass("hidden");
|
||||
$upload_form.find(".alert").hide();
|
||||
});
|
||||
|
||||
$upload_form.find("form").on("submit", function(event) {
|
||||
event.preventDefault();
|
||||
var files = $(this).find('input[type="file"]')[0].files;
|
||||
var formData = new FormData();
|
||||
for (var i = 0; i < files.length; i++ ) {
|
||||
var file = files[i];
|
||||
formData.append('upload', file, file.name);
|
||||
}
|
||||
|
||||
/*
|
||||
* hide submit button
|
||||
*/
|
||||
$('input[name="upload"], input[type="submit"]', this).parent().addClass("hidden");
|
||||
|
||||
/*
|
||||
* show progress
|
||||
*/
|
||||
$progress.removeClass("hidden");
|
||||
|
||||
/*
|
||||
* Images upload callback
|
||||
*/
|
||||
var callback = _.uniqueId('func_');
|
||||
formData.append("func", callback);
|
||||
window[callback] = function (attachments, error) {
|
||||
delete window[callback];
|
||||
|
||||
$('input[name="upload"]', this).parent().removeClass("hidden");
|
||||
|
||||
if (error) { /* failure */
|
||||
|
||||
$upload_form.find(".alert-danger").show();
|
||||
|
||||
} else { /* success */
|
||||
|
||||
$upload_form.find(".alert-success").show();
|
||||
for (var i = 0 ; i < attachments.length; i++) {
|
||||
$('<img class="img img-thumbnail img-responsive mb8 mt8"/>')
|
||||
.attr("src", attachments[i].website_url)
|
||||
.appendTo($container);
|
||||
}
|
||||
$progress.addClass("hidden");
|
||||
$upload_form.remove();
|
||||
self.reapply(); // refresh the $target
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
* Images upload : don't change order of contentType & processData
|
||||
* and don't change their values, otherwise the XHR will be
|
||||
* wrongly conceived by jQuery.
|
||||
*
|
||||
* (missing boundary in the content-type header field)
|
||||
* Leading to an upload failure.
|
||||
*/
|
||||
$.ajax('/website/attach', {
|
||||
type: 'POST',
|
||||
data: formData,
|
||||
contentType: false, /* multipart/form-data for files */
|
||||
processData: false,
|
||||
dataType: 'text'
|
||||
}).done(function (script) {
|
||||
$(script).appendTo('head').remove();
|
||||
});
|
||||
});
|
||||
$upload_form.modal({ backdrop : false });
|
||||
|
||||
$upload_form.find('input[name="upload"]').click();
|
||||
},
|
||||
images_rm : function() {
|
||||
this.replace($('<div class="alert alert-info css_editable_mode_display" style="display: none;"/>').text(_t("Add Images from the 'Customize' menu")));
|
||||
},
|
||||
sizing : function() { // done via css, keep it to avoid undefined error
|
||||
},
|
||||
/*
|
||||
* helpers
|
||||
*/
|
||||
styles_to_preserve : function($img) {
|
||||
var styles = [ 'img-rounded', 'img-thumbnail', 'img-circle', 'shadow', 'fa-spin' ];
|
||||
var preserved = [];
|
||||
|
||||
for (var style in styles) {
|
||||
if ($img.hasClass(style)) {
|
||||
preserved.push(style);
|
||||
}
|
||||
}
|
||||
return preserved.join(' ');
|
||||
},
|
||||
img_preserve_styles : function($img) {
|
||||
var classes = this.styles_to_preserve($img);
|
||||
$img.removeAttr("class");
|
||||
$img.addClass(classes);
|
||||
return $img;
|
||||
},
|
||||
img_from_src : function(src) {
|
||||
var self = this;
|
||||
var $img = $("<img/>").attr("src", src);
|
||||
return $img;
|
||||
},
|
||||
img_responsive : function(img) {
|
||||
img.addClass("img img-responsive");
|
||||
return img;
|
||||
},
|
||||
lowest : function($cols) {
|
||||
var height = 0, min = -1, col=0, lowest = undefined;
|
||||
$cols.each(function () {
|
||||
var $col = $(this);
|
||||
height = $col.height();
|
||||
if (min === -1 || height < min) {
|
||||
min = height;
|
||||
lowest = $col;
|
||||
}
|
||||
});
|
||||
return lowest;
|
||||
},
|
||||
get_columns : function() {
|
||||
return parseInt(this.$target.attr("data-columns") || 3);
|
||||
},
|
||||
|
||||
clean_for_save: function() {
|
||||
var self = this;
|
||||
if (this.$target.hasClass("slideshow")) {
|
||||
this.$target.removeAttr("style");
|
||||
}
|
||||
},
|
||||
|
||||
set_active: function () {
|
||||
this._super();
|
||||
var classes = _.uniq((this.$target.attr("class").replace(/(^|\s)o_/g, ' ') || '').split(/\s+/));
|
||||
var $li = this.$el.find('[data-mode]')
|
||||
.removeClass("active")
|
||||
.filter('[data-mode="' + classes.join('"], [data-mode="') + '"]').addClass("active");
|
||||
var mode = this.$el.find('[data-mode].active').data('mode');
|
||||
|
||||
var classes = _.uniq((this.$target.find("img:first").attr("class") || '').split(/\s+/));
|
||||
var $li = this.$el.find('[data-styling]')
|
||||
.removeClass("active")
|
||||
.filter('[data-styling="' + classes.join('"], [data-styling="') + '"]').addClass("active");
|
||||
|
||||
this.$el.find('li[data-interval]').removeClass("active")
|
||||
.filter('li[data-interval='+this.$target.find(".carousel:first").attr("data-interval")+']')
|
||||
.addClass("active");
|
||||
|
||||
var interval = this.$target.find('.carousel:first').attr("data-interval");
|
||||
var $li = this.$el.find('[data-interval]')
|
||||
.removeClass("active")
|
||||
.filter('[data-interval=' + interval + ']').addClass("active");
|
||||
|
||||
var columns = this.get_columns();
|
||||
var $li = this.$el.find('[data-columns]')
|
||||
.removeClass("active")
|
||||
.filter('[data-columns=' + columns + ']').addClass("active");
|
||||
|
||||
this.$el.find('[data-columns]:first, [data-select_class="spc-none"]')
|
||||
.parent().parent().toggle(["grid", "masonry"].indexOf(mode) !== -1);
|
||||
this.$el.find('[data-interval]:first').parent().parent().toggle(mode === "slideshow");
|
||||
},
|
||||
}); // website.snippet.Option.extend
|
||||
|
||||
})(); // anonymous function
|
||||
@@ -1,7 +1,20 @@
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
openerp.website.add_template_file('/website/static/src/xml/website.theme.xml');
|
||||
openerp.jsonRpc('/web/dataset/call', 'call', {
|
||||
'model': 'ir.ui.view',
|
||||
'method': 'read_template',
|
||||
'args': ['website.theme_customize', openerp.website.get_context()]
|
||||
}).done(function (data) {
|
||||
openerp.qweb.add_template(data);
|
||||
});
|
||||
openerp.jsonRpc('/web/dataset/call', 'call', {
|
||||
'model': 'ir.ui.view',
|
||||
'method': 'read_template',
|
||||
'args': ['website.colorpicker', openerp.website.get_context()]
|
||||
}).done(function (data) {
|
||||
openerp.qweb.add_template(data);
|
||||
});
|
||||
|
||||
openerp.website.Theme = openerp.Widget.extend({
|
||||
template: 'website.theme_customize',
|
||||
|
||||
@@ -203,7 +203,7 @@
|
||||
class="form-inline">
|
||||
<div class="well">
|
||||
<div class="form-group pull-left">
|
||||
<input type="file" name="upload" accept="image/*" style="position: absolute; opacity: 0; width: 1px; height: 1px;"/>
|
||||
<input type="file" name="upload" accept="image/*" multiple="multiple" style="position: absolute; opacity: 0; width: 1px; height: 1px;"/>
|
||||
<button type="button" class="btn btn-primary filepicker">Upload an image from your computer</button>
|
||||
<button type="button" class="btn hidden wait" disabled="disabled">Uploading...</button>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,102 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<templates xml:space="preserve">
|
||||
<!--
|
||||
=======================================================================
|
||||
Gallery Dialog
|
||||
|
||||
This template is shown when creating a gallery, allowing users to upload
|
||||
images.
|
||||
=======================================================================
|
||||
-->
|
||||
|
||||
<t t-name="website.gallery.dialog.upload">
|
||||
<div class="modal fade" >
|
||||
<div class="modal-dialog" style="max-width: 50%;">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"><![CDATA[×]]></button>
|
||||
<h4 class="modal-title">Add images</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form action="/website/attach" method="post" enctype="multipart/form-data" >
|
||||
<div class="form-group">
|
||||
<input name="upload" type="file" value="Choose images" multiple="multiple" accept="image/*"/>
|
||||
</div>
|
||||
<div class="form-group hidden">
|
||||
<input type="submit" value="Upload images" class="btn btn-default" />
|
||||
</div>
|
||||
</form>
|
||||
<div class="text-center"><span class="fa fa-refresh fa-5x fa-spin hidden"></span></div>
|
||||
<div class="alert alert-success" role="alert">Upload successful.</div>
|
||||
<div class="alert alert-danger" role="alert">Upload failed, some images might not have been uploaded. Check your network connectivity.</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
<!--
|
||||
========================================================================
|
||||
Gallery Slideshow
|
||||
|
||||
This template is used to display a slideshow of images inside a
|
||||
bootstrap carousel.
|
||||
|
||||
========================================================================
|
||||
-->
|
||||
|
||||
<t t-name="website.gallery.slideshow">
|
||||
<div t-attf-id="#{id}" class="carousel slide" data-ride="carousel" t-attf-data-interval="#{interval}">
|
||||
<div class="carousel-inner container">
|
||||
<t t-foreach="srcs" t-as="src">
|
||||
<div t-attf-class="item #{src_index == index and 'active' or ''}">
|
||||
<img class="img" t-att-src="src"/>
|
||||
</div>
|
||||
</t>
|
||||
</div>
|
||||
|
||||
<ul class="carousel-indicators">
|
||||
<t t-foreach="srcs" t-as="src">
|
||||
<li t-attf-data-target="##{id}" t-att-data-slide-to="src_index" t-att-class="src_index == index and 'active'" t-attf-style="background-image: url(#{src})"></li>
|
||||
</t>
|
||||
</ul>
|
||||
|
||||
<a class="carousel-control left" t-attf-href="##{id}" data-slide="prev"><span class="glyphicon glyphicon-chevron-left" /></a>
|
||||
<a class="carousel-control right" t-attf-href="##{id}" data-slide="next"><span class="glyphicon glyphicon-chevron-right" /></a>
|
||||
</div> <!-- carousel-id -->
|
||||
<script type="text/javascript">
|
||||
(function() {
|
||||
$(".slideshow").css("height", Math.round(window.innerHeight*0.7));
|
||||
$(window).on("resize", function() { $(".slideshow").css("height", Math.round(window.innerHeight*0.7)); });
|
||||
})();
|
||||
</script>
|
||||
</t>
|
||||
|
||||
<!--
|
||||
========================================================================
|
||||
Gallery Slideshow LightBox
|
||||
|
||||
This template is used to display a lightbox with a slideshow.
|
||||
|
||||
This template wraps website.gallery.slideshow in a bootstrap modal
|
||||
dialog.
|
||||
========================================================================
|
||||
-->
|
||||
<t t-name="website.gallery.slideshow.lightbox">
|
||||
|
||||
<div class="modal fade" aria-labbelledby="Image Gallery Dialog" aria-hidden="true">
|
||||
|
||||
<div class="modal-dialog modal-lg" role="Picture Gallery"
|
||||
t-attf-style="min-width: #{dim.min_width}px ; min-height: #{dim.min_height}px ; max-width: #{dim.max_width}px ; max-height: #{dim.max_height}px ; height: #{dim.height}px ;">
|
||||
<div class="modal-content">
|
||||
<div class="modal-body o_slideshow">
|
||||
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
|
||||
<t t-call="website.gallery.slideshow"></t>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
@@ -4,7 +4,7 @@
|
||||
<!-- Snippet loader -->
|
||||
<t t-name="website.snippets_button">
|
||||
<li class="navbar-form js_hide_on_translate" style="margin-top: 6px;">
|
||||
<button type="button" data-action="snippet" class="hidden btn btn-primary btn-xs">Insert Blocks</button>
|
||||
<button type="button" data-action="snippet" class="btn btn-primary btn-xs">Insert Blocks</button>
|
||||
</li>
|
||||
</t>
|
||||
<t t-name="website.snippets_style">
|
||||
@@ -53,13 +53,4 @@
|
||||
<div class='oe_snippet_manipulator'></div>
|
||||
</t>
|
||||
|
||||
<!-- snippet objects -->
|
||||
|
||||
<div t-name="website.snippets.resize" data-snippet-id='resize'>
|
||||
<!-- custom data for the widget -->
|
||||
<div class='oe_snippet_thumbnail'>Margin resize</div>
|
||||
</div>
|
||||
|
||||
<div t-name="website.snippets.colmd" data-snippet-id='colmd' data-selector-vertical-children='.row'></div>
|
||||
|
||||
</templates>
|
||||
|
||||
@@ -1,159 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<templates id="template" xml:space="preserve">
|
||||
|
||||
<!--
|
||||
Customize Themes
|
||||
|
||||
Use INPUT type 'checkbox' or 'radio' or use OPTION in select box
|
||||
'data-xmlid' (optional) xml id of the template to add if the input is checked.
|
||||
You can set a list of xml id separate by comma (all template is enable or
|
||||
disable in same time)
|
||||
'data-enable' (optional) to checked one or more HTML ids, or list separate by comma
|
||||
'data-disable' (optional) to unchecked one or more HTML ids, or list separate by comma
|
||||
'data-reload="/"' (optional) force the reloading of the page if the url match with
|
||||
the string ( = regexp).
|
||||
Otherwise, only the '/web/css/website.assets_frontend' is reloaded
|
||||
|
||||
For the sets (data-enable and/or data-disable without data-xmlid), the set is
|
||||
automatically checked if:
|
||||
- all related fields are enabled for data-enable
|
||||
- all related fields are disabled for data-disable
|
||||
else unchecked
|
||||
|
||||
HTML apply classes:
|
||||
- 'checked': on the parent label when input is checked
|
||||
- 'in': on the container (e.g.: bootstrap modal) after added in DOM (removed together
|
||||
out is added)
|
||||
- 'out': on the container 1 second before removed from ths DOM
|
||||
- 'loading': on the container/modal when the new css is loading
|
||||
-->
|
||||
|
||||
<t t-name="website.theme_customize">
|
||||
<div id="theme_customize_modal" class="modal fade">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<input id="less" data-xmlid="website.option_bootstrap_less" style="display: none;"/>
|
||||
|
||||
<div class="loading_backdrop"></div>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close">×</button>
|
||||
<h4 class="modal-title" id="mySmallModalLabel">Customize your theme</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<h5 class="modal-h5">LAYOUT</h5>
|
||||
<table name="layout">
|
||||
<tr>
|
||||
<td class=" text-center" width="50%">
|
||||
<label class=" center-block">
|
||||
<div class="text-center" style="background-image: url(/website/static/src/img/theme/layout-full.gif); background-size: 100%; line-height: 40px;">FULL WIDTH</div>
|
||||
<input name="layoutvar" type="radio" data-xmlid=""/>
|
||||
</label>
|
||||
</td>
|
||||
<td class=" text-center">
|
||||
<label class=" center-block">
|
||||
<div class="text-center" style="background-image: url(/website/static/src/img/theme/layout-boxed.gif); background-size: 100%; line-height: 40px;">BOXED</div>
|
||||
<input name="layoutvar" type="radio" data-xmlid="website.option_layout_boxed" data-enable="less"/>
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h5 class="modal-h5">MAIN COLOR</h5>
|
||||
<table name="color">
|
||||
<tr>
|
||||
<td>
|
||||
<label class="chd-color-combi">
|
||||
<img src="/website/static/src/img/theme/variant-stone.gif" alt="Stone" class="chd-color-combi-img"/>
|
||||
<input name="colorvar" type="radio" data-xmlid="" data-disable="less"/>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label class="chd-color-combi">
|
||||
<img src="/website/static/src/img/theme/variant-emerald.gif" alt="Emerald" class="chd-color-combi-img"/>
|
||||
<input name="colorvar" type="radio" data-xmlid="website.option_color_emerald" data-enable="less"/>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label class="chd-color-combi">
|
||||
<img src="/website/static/src/img/theme/variant-cobalt.gif" alt="Cobalt" class="chd-color-combi-img"/>
|
||||
<input name="colorvar" type="radio" data-xmlid="website.option_color_cobalt" data-enable="less"/>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label class="chd-color-combi">
|
||||
<img src="/website/static/src/img/theme/variant-amethyst.gif" alt="Amethyst" class="chd-color-combi-img"/>
|
||||
<input name="colorvar" type="radio" data-xmlid="website.option_color_amethyst" data-enable="less"/>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label class="chd-color-combi">
|
||||
<img src="/website/static/src/img/theme/variant-ruby.gif" alt="Blue" class="chd-color-combi-img"/>
|
||||
<input name="colorvar" type="radio" data-xmlid="website.option_color_ruby" data-enable="less"/>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label class="chd-color-combi">
|
||||
<img src="/website/static/src/img/theme/variant-gold.gif" alt="Gold" class="chd-color-combi-img"/>
|
||||
<input name="colorvar" type="radio" data-xmlid="website.option_color_gold" data-enable="less"/>
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h5 class="modal-h5">FONTS COMBINATIONS</h5>
|
||||
<table name="font">
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<label>
|
||||
<div>
|
||||
<span style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif; font-size:11px">Helvetica</span>
|
||||
<span style="font-family:Georgia, 'Times New Roman', Times, serif; font-size:11px" >/ Georgia</span>
|
||||
</div>
|
||||
<input name="theme" type="radio" data-xmlid=""/>
|
||||
</label>
|
||||
</td>
|
||||
<td width="50%">
|
||||
<label>
|
||||
<div>
|
||||
<span style="font-family:Georgia, 'Times New Roman', Times, serif; font-size:11px" >Georgia</span>
|
||||
<span style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif; font-size:11px">/ Helvetica</span>
|
||||
<input name="theme" type="radio" data-xmlid="website.option_font" data-enable="less"/>
|
||||
</div>
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
<!-- color-picker -->
|
||||
<!-- HTML class to hide option for one mode : only-text, only-bg -->
|
||||
|
||||
<t t-name="website.colorpicker">
|
||||
<table class="colorpicker">
|
||||
<tr>
|
||||
<td><button class="automatic-color" title="Automatic Color"/></td>
|
||||
<td><button class="bg-primary" title="Primary Color"/></td>
|
||||
<td><button class="bg-success" title="Success Color"/></td>
|
||||
<td><button class="bg-info" title="Info Color"/></td>
|
||||
<td><button class="bg-warning" title="Warning Color"/></td>
|
||||
<td><button class="bg-danger" title="Danger Color"/></td>
|
||||
</tr>
|
||||
<tr><td colspan="8"><hr style="width: 100%; height: 1px;"/></td></tr>
|
||||
<tr>
|
||||
<td><button class="bg-blue"/></td>
|
||||
<td><button class="bg-turquoise"/></td>
|
||||
<td><button class="bg-green"/></td>
|
||||
<td><button class="bg-yellow"/></td>
|
||||
<td><button class="bg-red"/></td>
|
||||
<td><button class="bg-pink"/></td>
|
||||
<td><button class="bg-purple"/></td>
|
||||
<td><button class="bg-brown"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
</t>
|
||||
|
||||
</templates>
|
||||
@@ -18,7 +18,7 @@
|
||||
<img class="oe_snippet_thumbnail_img" src="/website/static/src/img/blocks/block_banner.png"/>
|
||||
<span class="oe_snippet_thumbnail_title">Banner</span>
|
||||
</div>
|
||||
<div id="myCarousel" class="oe_snippet_body carousel slide mb32" style="height: 320px;">
|
||||
<div id="myCarousel" class="oe_snippet_body carousel slide mb32" data-interval="10000" style="height: 320px;">
|
||||
<!-- Indicators -->
|
||||
<ol class="carousel-indicators hidden">
|
||||
<li data-target="#myCarousel" data-slide-to="0" class="active"></li>
|
||||
@@ -365,36 +365,32 @@
|
||||
<img class="oe_snippet_thumbnail_img" src="/website/static/src/img/blocks/block_image_gallery.png"/>
|
||||
<span class="oe_snippet_thumbnail_title">Image Gallery</span>
|
||||
</div>
|
||||
<section class="oe_snippet_body">
|
||||
<section class="oe_snippet_body o_gallery o_nomode o_spc-none">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center mt16 mb32">
|
||||
<h2>Our Customer References</h2>
|
||||
<h4 class="text-muted">More than 500 successful projects</h4>
|
||||
<div class="col-md-6">
|
||||
<img class="img img-thumbnail img-responsive mb8 mt8" src="/website/static/src/img/desert.jpg"/>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<img class="img img-thumbnail img-responsive mb8 mt8" src="/website/static/src/img/china_thumb.jpg"/>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<img class="img img-thumbnail img-responsive mb8 mt8" src="/website/static/src/img/deers_thumb.jpg"/>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<img class="img img-thumbnail img-responsive mb8 mt8" src="/website/static/src/img/desert_thumb.jpg"/>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<img class="img img-thumbnail img-responsive mb8 mt8" src="/website/static/src/img/china_thumb.jpg"/>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<img class="img img-thumbnail img-responsive mb8 mt8" src="/website/static/src/img/deers_thumb.jpg"/>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<img class="img img-thumbnail img-responsive mb16" src="/website/static/src/img/desert.jpg"/>
|
||||
<img class="img img-thumbnail img-responsive mb8 mt8" src="/website/static/src/img/landscape.jpg"/>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<img class="img img-thumbnail img-responsive mb16" src="/website/static/src/img/china_thumb.jpg"/>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<img class="img img-thumbnail img-responsive mb16" src="/website/static/src/img/deers_thumb.jpg"/>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<img class="img img-thumbnail img-responsive mb16" src="/website/static/src/img/desert_thumb.jpg"/>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<img class="img img-thumbnail img-responsive mb16" src="/website/static/src/img/china_thumb.jpg"/>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<img class="img img-thumbnail img-responsive mb16" src="/website/static/src/img/deers_thumb.jpg"/>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<img class="img img-thumbnail img-responsive mb16" src="/website/static/src/img/landscape.jpg"/>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<img class="img img-thumbnail img-responsive mb16" src="/website/static/src/img/china_thumb.jpg"/>
|
||||
<img class="img img-thumbnail img-responsive mb8 mt8" src="/website/static/src/img/china_thumb.jpg"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -641,7 +637,7 @@
|
||||
<img class="oe_snippet_thumbnail_img" src="/website/static/src/img/blocks/block_quotes_slider.png"/>
|
||||
<span class="oe_snippet_thumbnail_title">Quotes Slider</span>
|
||||
</div>
|
||||
<div id="myQuoteCarousel" class="oe_snippet_body carousel quotecarousel slide mb0">
|
||||
<div id="myQuoteCarousel" class="oe_snippet_body carousel quotecarousel slide mb0" data-interval="10000">
|
||||
<!-- Indicators -->
|
||||
<ol class="carousel-indicators mb0">
|
||||
<li data-target="#myQuoteCarousel" data-slide-to="0" class="active"></li>
|
||||
@@ -770,7 +766,7 @@
|
||||
style="background-image: url('/website/static/src/img/parallax/quote.png')"
|
||||
data-scroll-background-ratio="0.3">
|
||||
<div><div><div class="oe_structure">
|
||||
<div id="myQuoteCarousel" class="carousel quotecarousel slide mb0">
|
||||
<div id="myQuoteCarousel" class="carousel quotecarousel slide mb0" data-interval="10000">
|
||||
<!-- Indicators -->
|
||||
<ol class="carousel-indicators mb0">
|
||||
<li data-target="#myQuoteCarousel" data-slide-to="0" class="active"></li>
|
||||
@@ -834,48 +830,113 @@
|
||||
|
||||
<template id="snippet_options">
|
||||
|
||||
<div data-snippet-option-id='blog-style'
|
||||
data-selector="section:not(.carousel):not(.parallax)">
|
||||
<div data-option='blog-style'
|
||||
data-selector="section:not(.carousel):not(.parallax):not(.o_gallery)">
|
||||
<li class="dropdown-submenu">
|
||||
<a tabindex="-1" href="#">Style</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li data-value="para_large"><a>Bigger Text</a></li>
|
||||
<li data-value="readable"><a>Narrow</a></li>
|
||||
<li data-check_class="para_large"><a>Bigger Text</a></li>
|
||||
<li data-check_class="readable"><a>Narrow</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</div>
|
||||
|
||||
<div data-snippet-option-id='background'
|
||||
data-selector="section, .carousel, .parallax">
|
||||
<li class="dropdown-submenu" data-required="true">
|
||||
<div data-option='background'
|
||||
data-selector="section, :not(.o_gallery > .container) > .carousel, .parallax">
|
||||
<li class="dropdown-submenu" data-select_class="oe_img_bg" data-background="">
|
||||
<a tabindex="-1" href="#">Background</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li data-value="oe_img_bg" data-src="/website/static/src/img/parallax/parallax_bg.jpg"><a>Sunflower</a></li>
|
||||
<li data-value="oe_img_bg" data-src="/website/static/src/img/banner/business_guy.jpg"><a>Business Guy</a></li>
|
||||
<li data-value="oe_img_bg" data-src="/website/static/src/img/banner/flower_field.jpg"><a>Flowers Field</a></li>
|
||||
<li data-value="oe_img_bg" data-src="/website/static/src/img/banner/landscape.jpg"><a>Landscape</a></li>
|
||||
<li data-value="oe_img_bg" data-src="/website/static/src/img/banner/mountains.jpg"><a>Mountains</a></li>
|
||||
<li data-value="oe_img_bg" data-src="/website/static/src/img/banner/greenfields.jpg"><a>Greenfields</a></li>
|
||||
<li data-value="oe_img_bg" data-src="/website/static/src/img/banner/aqua.jpg"><a>Aqua</a></li>
|
||||
<li data-value="oe_img_bg" data-src="/website/static/src/img/banner/baby_blue.jpg"><a>Baby Blue</a></li>
|
||||
<li data-value="oe_img_bg" data-src="/website/static/src/img/banner/black.jpg"><a>Black</a></li>
|
||||
<li data-value="oe_img_bg" data-src="/website/static/src/img/banner/color_splash.jpg"><a>Color Splash</a></li>
|
||||
<li data-value="oe_img_bg" data-src="/website/static/src/img/banner/mango.jpg"><a>Mango</a></li>
|
||||
<li data-value="oe_img_bg" data-src="/website/static/src/img/banner/orange_red.jpg"><a>Orange Red</a></li>
|
||||
<li data-value="oe_img_bg" data-src="/website/static/src/img/banner/flower.jpg"><a>Purple</a></li>
|
||||
<li data-value="oe_img_bg" data-src="/website/static/src/img/banner/velour.jpg"><a>Velour</a></li>
|
||||
<li data-value="oe_img_bg" data-src="/website/static/src/img/banner/wood.jpg"><a>Wood</a></li>
|
||||
<li data-value="oe_img_bg" data-src="/website/static/src/img/banner/yellow_green.jpg"><a>Yellow Green</a></li>
|
||||
<li data-value="oe_img_bg" data-src="/website/static/src/img/parallax/quote.png"><a>Quote</a></li>
|
||||
<li data-value=""><a>None</a></li>
|
||||
<li data-background="/website/static/src/img/parallax/parallax_bg.jpg"><a>Sunflower</a></li>
|
||||
<li data-background="/website/static/src/img/banner/business_guy.jpg"><a>Business Guy</a></li>
|
||||
<li data-background="/website/static/src/img/banner/flower_field.jpg"><a>Flowers Field</a></li>
|
||||
<li data-background="/website/static/src/img/banner/landscape.jpg"><a>Landscape</a></li>
|
||||
<li data-background="/website/static/src/img/banner/mountains.jpg"><a>Mountains</a></li>
|
||||
<li data-background="/website/static/src/img/banner/greenfields.jpg"><a>Greenfields</a></li>
|
||||
<li data-background="/website/static/src/img/banner/aqua.jpg"><a>Aqua</a></li>
|
||||
<li data-background="/website/static/src/img/banner/baby_blue.jpg"><a>Baby Blue</a></li>
|
||||
<li data-background="/website/static/src/img/banner/black.jpg"><a>Black</a></li>
|
||||
<li data-background="/website/static/src/img/banner/color_splash.jpg"><a>Color Splash</a></li>
|
||||
<li data-background="/website/static/src/img/banner/mango.jpg"><a>Mango</a></li>
|
||||
<li data-background="/website/static/src/img/banner/orange_red.jpg"><a>Orange Red</a></li>
|
||||
<li data-background="/website/static/src/img/banner/flower.jpg"><a>Purple</a></li>
|
||||
<li data-background="/website/static/src/img/banner/velour.jpg"><a>Velour</a></li>
|
||||
<li data-background="/website/static/src/img/banner/wood.jpg"><a>Wood</a></li>
|
||||
<li data-background="/website/static/src/img/banner/yellow_green.jpg"><a>Yellow Green</a></li>
|
||||
<li data-background="/website/static/src/img/parallax/quote.png"><a>Quote</a></li>
|
||||
<li data-select_class=""><a>None</a></li>
|
||||
<li><a style="background: none; padding: 5px; border-top: 1px solid #ddd;"></a></li>
|
||||
<li class="oe_custom_bg" data-value="oe_img_bg"><a><b>Choose an image...</b></a></li>
|
||||
<li data-select_class="oe_custom_bg" data-choose_image="choose_image" data-background=""><a><b>Choose an image...</b></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</div>
|
||||
|
||||
<div data-option='gallery' data-selector=".o_gallery">
|
||||
<li class="dropdown-submenu">
|
||||
<a tabindex="-2" href="#">Mode</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li data-mode="nomode" > <a>None</a></li>
|
||||
<li data-mode="masonry" > <a>Masonry</a> </li>
|
||||
<li data-mode="grid" > <a>Grid</a> </li>
|
||||
<li data-mode="slideshow"> <a>Slideshow</a> </li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown-submenu">
|
||||
<a tabindex="-2" href="#">Slideshow speed</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li data-interval="1000"> <a>1s</a> </li>
|
||||
<li data-interval="2000"> <a>2s</a> </li>
|
||||
<li data-interval="3000"> <a>3s</a> </li>
|
||||
<li data-interval="5000"> <a>5s</a> </li>
|
||||
<li data-interval="10000"> <a>10s</a></li>
|
||||
<li data-interval="0" > <a>Disable autoplay</a> </li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown-submenu">
|
||||
<a tabindex="-2" href="#">Columns</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li data-columns="1" > <a>1</a> </li>
|
||||
<li data-columns="2" > <a>2</a> </li>
|
||||
<li data-columns="3" > <a>3</a> </li>
|
||||
<li data-columns="4" > <a>4</a> </li>
|
||||
<li data-columns="6" > <a>6</a> </li>
|
||||
<li data-columns="12" > <a>12</a> </li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown-submenu">
|
||||
<a tabindex="-2" href="#">Images spacing</a>
|
||||
|
||||
<div data-snippet-option-id='colorpicker'
|
||||
data-selector="section, .carousel, .parallax">
|
||||
<ul class="dropdown-menu">
|
||||
<li data-select_class="o_spc-none" > <a>None</a> </li>
|
||||
<li data-select_class="o_spc-small" > <a>Small</a> </li>
|
||||
<li data-select_class="o_spc-medium"> <a>Medium</a> </li>
|
||||
<li data-select_class="o_spc-big" > <a>Big</a> </li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown-submenu">
|
||||
<a tabindex="-2" href="#">Album</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li data-albumimages="images_add"> <a>Add images</a></li>
|
||||
<li data-albumimages="images_rm"><a>Remove all images</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown-submenu">
|
||||
<a tabindex="-2" href="#">Styling</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li data-styling="img-rounded" ><a>Rounded corners</a></li>
|
||||
<li data-styling="img-thumbnail" ><a>Thumbnails</a></li>
|
||||
<li data-styling="img-circle" ><a>Circle</a></li>
|
||||
<li data-styling="shadow" ><a>Shadows</a></li>
|
||||
<li data-styling="fa-spin" ><a>Spinning</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</div>
|
||||
|
||||
<div data-option='colorpicker'
|
||||
data-selector="section, :not(.o_gallery > .container) > .carousel, .parallax">
|
||||
<li class="dropdown-submenu">
|
||||
<a tabindex="-1" href="#">Color</a>
|
||||
<ul class="dropdown-menu">
|
||||
@@ -883,77 +944,149 @@
|
||||
</ul>
|
||||
</li>
|
||||
</div>
|
||||
|
||||
<div data-option='gallery' data-selector=".gallery">
|
||||
<li class="dropdown-submenu">
|
||||
<a tabindex="-2" href="#">Mode</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li data-mode="nomode" > <a>None</a></li>
|
||||
<li data-mode="masonry" > <a>Masonry</a> </li>
|
||||
<li data-mode="grid" > <a>Grid</a> </li>
|
||||
<li data-mode="slideshow"> <a>Slideshow</a> </li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown-submenu">
|
||||
<a tabindex="-2" href="#">Slideshow speed</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li data-interval="1000"> <a>1s</a> </li>
|
||||
<li data-interval="2000"> <a>2s</a> </li>
|
||||
<li data-interval="3000"> <a>3s</a> </li>
|
||||
<li data-interval="5000"> <a>5s</a> </li>
|
||||
<li data-interval="10000"> <a>10s</a></li>
|
||||
<li data-interval="0" > <a>Disable autoplay</a> </li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown-submenu">
|
||||
<a tabindex="-2" href="#">Columns</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li data-columns="1" > <a>1</a> </li>
|
||||
<li data-columns="2" > <a>2</a> </li>
|
||||
<li data-columns="3" > <a>3</a> </li>
|
||||
<li data-columns="4" > <a>4</a> </li>
|
||||
<li data-columns="6" > <a>6</a> </li>
|
||||
<li data-columns="12" > <a>12</a> </li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown-submenu">
|
||||
<a tabindex="-2" href="#">Images spacing</a>
|
||||
|
||||
<div data-snippet-option-id='carousel'
|
||||
data-selector=".carousel">
|
||||
<ul class="dropdown-menu">
|
||||
<li data-select_class="spc-none" > <a>None</a> </li>
|
||||
<li data-select_class="spc-small" > <a>Small</a> </li>
|
||||
<li data-select_class="spc-medium"> <a>Medium</a> </li>
|
||||
<li data-select_class="spc-big" > <a>Big</a> </li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown-submenu">
|
||||
<a tabindex="-2" href="#">Album</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li data-albumimages="images_add"> <a>Add images</a></li>
|
||||
<li data-albumimages="images_rm"><a>Remove all images</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown-submenu">
|
||||
<a tabindex="-2" href="#">Styling</a>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li data-styling="img-rounded" ><a>Rounded corners</a></li>
|
||||
<li data-styling="img-thumbnail" ><a>Thumbnails</a></li>
|
||||
<li data-styling="img-circle" ><a>Circle</a></li>
|
||||
<li data-styling="shadow" ><a>Shadows</a></li>
|
||||
<li data-styling="fa-spin" ><a>Spinning</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</div>
|
||||
|
||||
<div data-option='carousel'
|
||||
data-selector=":not(.o_gallery > .container) > .carousel">
|
||||
<li class="dropdown-submenu">
|
||||
<a tabindex="-2" href="#">Slideshow speed</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li data-interval="1000"> <a>1s</a> </li>
|
||||
<li data-interval="2000"> <a>2s</a> </li>
|
||||
<li data-interval="3000"> <a>3s</a> </li>
|
||||
<li data-interval="5000"> <a>5s</a> </li>
|
||||
<li data-interval="10000"> <a>10s</a></li>
|
||||
<li data-interval="0" > <a>Disable autoplay</a> </li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li>
|
||||
<a href="#" class="button js_add">Add Slide</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" class="button js_remove">Remove Slide</a>
|
||||
</li>
|
||||
<li data-add_slide="true"> <a href="#">Add Slide</a> </li>
|
||||
<li data-remove_slide="true"> <a href="#" >Remove Slide</a></li>
|
||||
</div>
|
||||
|
||||
<div data-snippet-option-id='margin-y'
|
||||
data-selector="section, .row > [class*='col-md-'], .carousel, .parallax, hr">
|
||||
<div data-option='margin-y'
|
||||
data-selector="section, .row > [class*='col-md-'], :not(.o_gallery > .container) > .carousel, .parallax, hr">
|
||||
</div>
|
||||
|
||||
<div data-snippet-option-id='resize'
|
||||
data-selector="section, .carousel, .parallax"
|
||||
data-selector-children=".oe_structure, [data-oe-type=html]">
|
||||
<div data-option='resize'
|
||||
data-selector="section, :not(.o_gallery > .container) > .carousel, .parallax"
|
||||
data-drop-in=".oe_structure, [data-oe-type=html]">
|
||||
</div>
|
||||
|
||||
<div data-snippet-option-id='margin-x'
|
||||
<div data-option='margin-x'
|
||||
data-selector=".row > [class*='col-md-']"
|
||||
data-selector-vertical-children='.row'>
|
||||
data-drop-in-vertical='.row'>
|
||||
</div>
|
||||
|
||||
<div data-snippet-option-id='content'
|
||||
<div data-option='content'
|
||||
data-selector="blockquote, .well, .panel, .oe_share"
|
||||
data-selector-siblings="p, h1, h2, h3, blockquote, .well, .panel, .oe_share"
|
||||
data-selector-children=".content">
|
||||
data-drop-near="p, h1, h2, h3, blockquote, .well, .panel, .oe_share"
|
||||
data-drop-in=".content">
|
||||
</div>
|
||||
|
||||
<div data-snippet-option-id='separator'
|
||||
<div data-option='separator'
|
||||
data-selector="hr"
|
||||
data-selector-children=".oe_structure, [data-oe-type=html]">
|
||||
data-drop-in=".oe_structure, [data-oe-type=html]">
|
||||
</div>
|
||||
|
||||
<div data-snippet-option-id='parallax'
|
||||
<div data-option='parallax'
|
||||
data-selector=".parallax">
|
||||
<li class="dropdown-submenu">
|
||||
<a tabindex="-1" href="#">Scroll Speed</a>
|
||||
<ul class="dropdown-menu" name="parallax-scroll">
|
||||
<li data-value="0"><a>Static</a></li>
|
||||
<li data-value="0.3"><a>Very Slow</a></li>
|
||||
<li data-value="0.6"><a>Slow</a></li>
|
||||
<li data-value="1"><a>Fixed</a></li>
|
||||
<li data-value="1.4"><a>Fast</a></li>
|
||||
<li data-value="1.7"><a>Very Fast</a></li>
|
||||
<li data-scroll="0"><a>Static</a></li>
|
||||
<li data-scroll="0.3"><a>Very Slow</a></li>
|
||||
<li data-scroll="0.6"><a>Slow</a></li>
|
||||
<li data-scroll="1"><a>Fixed</a></li>
|
||||
<li data-scroll="1.4"><a>Fast</a></li>
|
||||
<li data-scroll="1.7"><a>Very Fast</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</div>
|
||||
|
||||
<div data-snippet-option-id='media'
|
||||
<div data-option='media'
|
||||
data-selector="img:not(.cke_iframe), .media_iframe_video, span.fa, i.fa, .glyphicon">
|
||||
<li><a href="#" class="edition">Change...</a></li>
|
||||
</div>
|
||||
|
||||
<div data-snippet-option-id='transform'
|
||||
<div data-option='transform'
|
||||
data-selector="img:not(.cke_iframe), .media_iframe_video, span.fa, i.fa">
|
||||
<li class="dropdown-submenu">
|
||||
<a tabindex="-1" href="#">Style</a>
|
||||
<ul class="dropdown-menu" name="parallax-scroll">
|
||||
<li data-value="img-rounded"><a>Rounded corners</a></li>
|
||||
<li data-value="img-thumbnail"><a>Box</a></li>
|
||||
<li data-value="img-circle"><a>Circle</a></li>
|
||||
<li data-value="shadow"><a>Shadow</a></li>
|
||||
<li data-value="fa-spin"><a>Spin</a></li>
|
||||
<li data-select_class="img-rounded"><a>Rounded corners</a></li>
|
||||
<li data-select_class="img-thumbnail"><a>Box</a></li>
|
||||
<li data-select_class="img-circle"><a>Circle</a></li>
|
||||
<li data-select_class="shadow"><a>Shadow</a></li>
|
||||
<li data-select_class="fa-spin"><a>Spin</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#" class="style">Transform</a></li>
|
||||
<li><a href="#" class="clear-style">Reset Transformation</a></li>
|
||||
<li data-style=""><a>Transform</a></li>
|
||||
<li data-clear_style=""><a>Reset Transformation</a></li>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
@@ -2,6 +2,162 @@
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
|
||||
<!--
|
||||
Customize Themes
|
||||
|
||||
Use INPUT type 'checkbox' or 'radio' or use OPTION in select box
|
||||
'data-xmlid' (optional) xml id of the template to add if the input is checked.
|
||||
You can set a list of xml id separate by comma (all template is enable or
|
||||
disable in same time)
|
||||
'data-enable' (optional) to checked one or more HTML ids, or list separate by comma
|
||||
'data-disable' (optional) to unchecked one or more HTML ids, or list separate by comma
|
||||
'data-reload="/"' (optional) force the reloading of the page if the url match with
|
||||
the string ( = regexp).
|
||||
Otherwise, only the '/web/css/website.assets_frontend' is reloaded
|
||||
|
||||
For the sets (data-enable and/or data-disable without data-xmlid), the set is
|
||||
automatically checked if:
|
||||
- all related fields are enabled for data-enable
|
||||
- all related fields are disabled for data-disable
|
||||
else unchecked
|
||||
|
||||
HTML apply classes:
|
||||
- 'checked': on the parent label when input is checked
|
||||
- 'in': on the container (e.g.: bootstrap modal) after added in DOM (removed together
|
||||
out is added)
|
||||
- 'out': on the container 1 second before removed from ths DOM
|
||||
- 'loading': on the container/modal when the new css is loading
|
||||
-->
|
||||
|
||||
<template id="website.theme_customize" name="Theme Modal for Customization">
|
||||
<div id="theme_customize_modal" class="modal fade">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<input id="less" data-xmlid="website.option_bootstrap_less" style="display: none;"/>
|
||||
|
||||
<div class="loading_backdrop"></div>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close">×</button>
|
||||
<h4 class="modal-title" id="mySmallModalLabel">Customize your theme</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<h5 class="modal-h5">LAYOUT</h5>
|
||||
<table name="layout">
|
||||
<tr>
|
||||
<td class=" text-center" width="50%">
|
||||
<label class=" center-block">
|
||||
<div class="text-center" style="background-image: url(/website/static/src/img/theme/layout-full.gif); background-size: 100%; line-height: 40px;">FULL WIDTH</div>
|
||||
<input name="layoutvar" type="radio" data-xmlid=""/>
|
||||
</label>
|
||||
</td>
|
||||
<td class=" text-center">
|
||||
<label class=" center-block">
|
||||
<div class="text-center" style="background-image: url(/website/static/src/img/theme/layout-boxed.gif); background-size: 100%; line-height: 40px;">BOXED</div>
|
||||
<input name="layoutvar" type="radio" data-xmlid="website.option_layout_boxed" data-enable="less"/>
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h5 class="modal-h5">MAIN COLOR</h5>
|
||||
<table name="color">
|
||||
<tr>
|
||||
<td>
|
||||
<label class="chd-color-combi">
|
||||
<img src="/website/static/src/img/theme/variant-stone.gif" alt="Stone" class="chd-color-combi-img"/>
|
||||
<input name="colorvar" type="radio" data-xmlid="" data-disable="less"/>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label class="chd-color-combi">
|
||||
<img src="/website/static/src/img/theme/variant-emerald.gif" alt="Emerald" class="chd-color-combi-img"/>
|
||||
<input name="colorvar" type="radio" data-xmlid="website.option_color_emerald" data-enable="less"/>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label class="chd-color-combi">
|
||||
<img src="/website/static/src/img/theme/variant-cobalt.gif" alt="Cobalt" class="chd-color-combi-img"/>
|
||||
<input name="colorvar" type="radio" data-xmlid="website.option_color_cobalt" data-enable="less"/>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label class="chd-color-combi">
|
||||
<img src="/website/static/src/img/theme/variant-amethyst.gif" alt="Amethyst" class="chd-color-combi-img"/>
|
||||
<input name="colorvar" type="radio" data-xmlid="website.option_color_amethyst" data-enable="less"/>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label class="chd-color-combi">
|
||||
<img src="/website/static/src/img/theme/variant-ruby.gif" alt="Blue" class="chd-color-combi-img"/>
|
||||
<input name="colorvar" type="radio" data-xmlid="website.option_color_ruby" data-enable="less"/>
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<label class="chd-color-combi">
|
||||
<img src="/website/static/src/img/theme/variant-gold.gif" alt="Gold" class="chd-color-combi-img"/>
|
||||
<input name="colorvar" type="radio" data-xmlid="website.option_color_gold" data-enable="less"/>
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h5 class="modal-h5">FONTS COMBINATIONS</h5>
|
||||
<table name="font">
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<label>
|
||||
<div>
|
||||
<span style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif; font-size:11px">Helvetica</span>
|
||||
<span style="font-family:Georgia, 'Times New Roman', Times, serif; font-size:11px" >/ Georgia</span>
|
||||
</div>
|
||||
<input name="theme" type="radio" data-xmlid=""/>
|
||||
</label>
|
||||
</td>
|
||||
<td width="50%">
|
||||
<label>
|
||||
<div>
|
||||
<span style="font-family:Georgia, 'Times New Roman', Times, serif; font-size:11px" >Georgia</span>
|
||||
<span style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif; font-size:11px">/ Helvetica</span>
|
||||
<input name="theme" type="radio" data-xmlid="website.option_font" data-enable="less"/>
|
||||
</div>
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<!-- color-picker -->
|
||||
<!-- HTML class to hide option for one mode : only-text, only-bg -->
|
||||
|
||||
<template id="website.colorpicker" name="Color-Picker">
|
||||
<table class="colorpicker">
|
||||
<tr>
|
||||
<td><button class="automatic-color" title="Automatic Color"/></td>
|
||||
<td><button class="bg-primary" title="Primary Color"/></td>
|
||||
<td><button class="bg-success" title="Success Color"/></td>
|
||||
<td><button class="bg-info" title="Info Color"/></td>
|
||||
<td><button class="bg-warning" title="Warning Color"/></td>
|
||||
<td><button class="bg-danger" title="Danger Color"/></td>
|
||||
</tr>
|
||||
<tr><td colspan="8"><hr style="width: 100%; height: 1px;"/></td></tr>
|
||||
<tr>
|
||||
<td><button class="bg-blue"/></td>
|
||||
<td><button class="bg-turquoise"/></td>
|
||||
<td><button class="bg-green"/></td>
|
||||
<td><button class="bg-yellow"/></td>
|
||||
<td><button class="bg-red"/></td>
|
||||
<td><button class="bg-pink"/></td>
|
||||
<td><button class="bg-purple"/></td>
|
||||
<td><button class="bg-brown"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
</template>
|
||||
|
||||
<!--
|
||||
Theme
|
||||
-->
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
<script type="text/javascript" src="/website/static/src/js/website.snippets.animation.js"></script>
|
||||
<script type="text/javascript" src="/web/static/lib/bootstrap/js/bootstrap.js"></script>
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
<template id="assets_backend" name="website assets for backend" inherit_id="web.assets_backend">
|
||||
@@ -208,6 +208,7 @@
|
||||
<script type="text/javascript" src="/website/static/src/js/website.tour.js"></script>
|
||||
<script type="text/javascript" src="/website/static/src/js/website.tour.banner.js"></script> <!-- groups="base.group_website_designer" -->
|
||||
<script type="text/javascript" src="/website/static/src/js/website.snippets.editor.js"></script>
|
||||
<script type="text/javascript" src="/website/static/src/js/website.snippets.gallery.js" />
|
||||
<script type="text/javascript" src="/website/static/src/js/website.ace.js"></script>
|
||||
<script type="text/javascript" src="/website/static/src/js/website.translator.js"></script>
|
||||
<script type="text/javascript" src="/website/static/src/js/website.theme.js"></script>
|
||||
@@ -236,7 +237,7 @@
|
||||
<template id="footer_custom" inherit_id="website.layout" name="Footer">
|
||||
<xpath expr="//div[@id='footer_container']" position="replace">
|
||||
<div class="oe_structure" id="footer">
|
||||
<section data-snippet-id='three-columns' class="mt16 mb16">
|
||||
<section data-option='three-columns' class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
@@ -762,7 +763,7 @@ Sitemap: <t t-esc="url_root"/>sitemap.xml
|
||||
<div id="wrap">
|
||||
<div class="oe_structure">
|
||||
|
||||
<section data-snippet-id="title">
|
||||
<section>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
@@ -773,7 +774,7 @@ Sitemap: <t t-esc="url_root"/>sitemap.xml
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section data-snippet-id="text-image">
|
||||
<section>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-6 mt32">
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
<t t-set="classname">pull-right</t>
|
||||
</t>
|
||||
</section>
|
||||
<section data-snippet-id="title" class="container">
|
||||
<section class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
<h1>Latest Posts</h1>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<t t-call="website.layout">
|
||||
<div id="wrap">
|
||||
<div class="oe_structure">
|
||||
<section data-snippet-id="title">
|
||||
<section>
|
||||
<h1 class="text-center">
|
||||
Our References
|
||||
</h1><h2 class="text-center text-muted">
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<field name="website_published">True</field>
|
||||
<field name="twitter_hashtag">openerp</field>
|
||||
<field name="description"><![CDATA[
|
||||
<div class="carousel slide oe_small mb16" data-interval="10000" data-snippet-id="carousel" id="myCarousel3">
|
||||
<div class="carousel slide oe_small mb16" data-interval="10000" id="myCarousel3">
|
||||
<div class="carousel-inner">
|
||||
<div class="item active image_text"><img height="100%" src="/website/static/src/img/banner/orange_red.jpg" width="100%"><div class="container">
|
||||
<div class="carousel-caption content">
|
||||
@@ -26,11 +26,11 @@
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center mb8 mt0" data-snippet-id="colmd">
|
||||
<div class="col-md-12 text-center mb8 mt0">
|
||||
<h2>Course Summary</h2>
|
||||
</div>
|
||||
|
||||
<div class="col-md-12 mt16 mb0" data-snippet-id="colmd">
|
||||
<div class="col-md-12 mt16 mb0">
|
||||
<p><span style="text-align: -webkit-center; ">This course is dedicated to developers who need to grasp knowledge of the <strong>business applications development </strong>process. This course is for new developers or for IT professionals eager to learn more about technical aspects.</span></p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -38,11 +38,11 @@
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center mt0 mb16" data-snippet-id="colmd">
|
||||
<div class="col-md-12 text-center mt0 mb16">
|
||||
<h2>What you will learn?</h2>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4" data-snippet-id="colmd">
|
||||
<div class="col-md-4">
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading text-center">
|
||||
<h2 style="margin: 0">Day 1</h2>
|
||||
@@ -62,7 +62,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4" data-snippet-id="colmd">
|
||||
<div class="col-md-4">
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading text-center">
|
||||
<h2 style="margin: 0">Day 2</h2>
|
||||
@@ -83,7 +83,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4" data-snippet-id="colmd">
|
||||
<div class="col-md-4">
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading text-center">
|
||||
<h2 style="margin: 0">Day 3</h2>
|
||||
@@ -108,11 +108,11 @@
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center mb16 mt0" data-snippet-id="colmd">
|
||||
<div class="col-md-12 text-center mb16 mt0">
|
||||
<h2>Requirements</h2>
|
||||
</div>
|
||||
|
||||
<div class="col-md-12 mb16 mt16" data-snippet-id="colmd">
|
||||
<div class="col-md-12 mb16 mt16">
|
||||
<p><strong>Objectives:</strong></p>
|
||||
|
||||
<p><strong>Having attended this course, participants should be able to:</strong></p>
|
||||
@@ -144,20 +144,20 @@
|
||||
|
||||
<div class="container oe_dark">
|
||||
<div class="row">
|
||||
<div class="col-md-12" data-snippet-id="colmd">
|
||||
<div class="col-md-12">
|
||||
<h1 class="text-center">Read Great Contents</h1>
|
||||
|
||||
<h3 class="text-muted text-center">What do people say about this course?</h3>
|
||||
</div>
|
||||
|
||||
<div class="mt16 mb32 col-md-6" data-snippet-id="colmd">
|
||||
<blockquote data-snippet-id="quote">
|
||||
<div class="mt16 mb32 col-md-6">
|
||||
<blockquote>
|
||||
<p>I did not expect such a great learning experience. I feel like I can develop anything now.</p>
|
||||
<small>John Doe, CEO</small></blockquote>
|
||||
</div>
|
||||
|
||||
<div class="mt16 mb32 col-md-6" data-snippet-id="colmd">
|
||||
<blockquote data-snippet-id="quote">
|
||||
<div class="mt16 mb32 col-md-6">
|
||||
<blockquote>
|
||||
<p>This course help me build my first application within a month. Definetly worth its price.</p>
|
||||
<small>John Doe, CEO</small></blockquote>
|
||||
</div>
|
||||
@@ -172,7 +172,7 @@
|
||||
<field name="website_published">True</field>
|
||||
<field name="twitter_hashtag">openerp</field>
|
||||
<field name="description"><![CDATA[
|
||||
<div class="carousel slide oe_small mb16" data-interval="10000" data-snippet-id="carousel" id="myCarousel3">
|
||||
<div class="carousel slide oe_small mb16" data-interval="10000" id="myCarousel3">
|
||||
<div class="carousel-inner">
|
||||
<div class="item active image_text"><img height="100%" src="/website/static/src/img/banner/orange_red.jpg" width="100%"><div class="container">
|
||||
<div class="carousel-caption content">
|
||||
@@ -188,11 +188,11 @@
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center mb8 mt0" data-snippet-id="colmd">
|
||||
<div class="col-md-12 text-center mb8 mt0">
|
||||
<h2>Course Summary</h2>
|
||||
</div>
|
||||
|
||||
<div class="col-md-12 mt16 mb0" data-snippet-id="colmd">
|
||||
<div class="col-md-12 mt16 mb0">
|
||||
<p><span style="text-align: -webkit-center; ">This course is dedicated to developers who need to grasp knowledge of the <strong>business applications development </strong>process. This course is for new developers or for IT professionals eager to learn more about technical aspects.</span></p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -200,11 +200,11 @@
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center mt0 mb16" data-snippet-id="colmd">
|
||||
<div class="col-md-12 text-center mt0 mb16">
|
||||
<h2>What you will learn?</h2>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4" data-snippet-id="colmd">
|
||||
<div class="col-md-4">
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading text-center">
|
||||
<h2 style="margin: 0">Day 1</h2>
|
||||
@@ -224,7 +224,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4" data-snippet-id="colmd">
|
||||
<div class="col-md-4">
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading text-center">
|
||||
<h2 style="margin: 0">Day 2</h2>
|
||||
@@ -245,7 +245,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4" data-snippet-id="colmd">
|
||||
<div class="col-md-4">
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading text-center">
|
||||
<h2 style="margin: 0">Day 3</h2>
|
||||
@@ -270,11 +270,11 @@
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center mb16 mt0" data-snippet-id="colmd">
|
||||
<div class="col-md-12 text-center mb16 mt0">
|
||||
<h2>Requirements</h2>
|
||||
</div>
|
||||
|
||||
<div class="col-md-12 mb16 mt16" data-snippet-id="colmd">
|
||||
<div class="col-md-12 mb16 mt16">
|
||||
<p><strong>Objectives:</strong></p>
|
||||
|
||||
<p><strong>Having attended this course, participants should be able to:</strong></p>
|
||||
@@ -306,20 +306,20 @@
|
||||
|
||||
<div class="container oe_dark">
|
||||
<div class="row">
|
||||
<div class="col-md-12" data-snippet-id="colmd">
|
||||
<div class="col-md-12">
|
||||
<h1 class="text-center">Read Great Contents</h1>
|
||||
|
||||
<h3 class="text-muted text-center">What do people say about this course?</h3>
|
||||
</div>
|
||||
|
||||
<div class="mt16 mb32 col-md-6" data-snippet-id="colmd">
|
||||
<blockquote data-snippet-id="quote">
|
||||
<div class="mt16 mb32 col-md-6">
|
||||
<blockquote>
|
||||
<p>I did not expect such a great learning experience. I feel like I can develop anything now.</p>
|
||||
<small>John Doe, CEO</small></blockquote>
|
||||
</div>
|
||||
|
||||
<div class="mt16 mb32 col-md-6" data-snippet-id="colmd">
|
||||
<blockquote data-snippet-id="quote">
|
||||
<div class="mt16 mb32 col-md-6">
|
||||
<blockquote>
|
||||
<p>This course help me build my first application within a month. Definetly worth its price.</p>
|
||||
<small>John Doe, CEO</small></blockquote>
|
||||
</div>
|
||||
@@ -346,7 +346,7 @@
|
||||
<field name="website_published">True</field>
|
||||
<field name="twitter_hashtag">openerp</field>
|
||||
<field name="description"><![CDATA[
|
||||
<div class="carousel slide oe_small mb16" data-interval="10000" data-snippet-id="carousel" id="myCarousel3">
|
||||
<div class="carousel slide oe_small mb16" data-interval="10000" id="myCarousel3">
|
||||
<div class="carousel-inner">
|
||||
<div class="item active image_text"><img height="100%" src="/website/static/src/img/banner/orange_red.jpg" width="100%"><div class="container">
|
||||
<div class="carousel-caption content">
|
||||
@@ -363,11 +363,11 @@
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center mb8 mt0" data-snippet-id="colmd">
|
||||
<div class="col-md-12 text-center mb8 mt0">
|
||||
<h2>Course Summary</h2>
|
||||
</div>
|
||||
|
||||
<div class="col-md-12 mt16 mb0" data-snippet-id="colmd">
|
||||
<div class="col-md-12 mt16 mb0">
|
||||
<p><span style="text-align: -webkit-center; ">This course is dedicated to developers who need to grasp knowledge of the <strong>business applications development </strong>process. This course is for new developers or for IT professionals eager to learn more about technical aspects.</span></p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -375,11 +375,11 @@
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center mt0 mb16" data-snippet-id="colmd">
|
||||
<div class="col-md-12 text-center mt0 mb16">
|
||||
<h2>What you will learn?</h2>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4" data-snippet-id="colmd">
|
||||
<div class="col-md-4">
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading text-center">
|
||||
<h2 style="margin: 0">Day 1</h2>
|
||||
@@ -399,7 +399,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4" data-snippet-id="colmd">
|
||||
<div class="col-md-4">
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading text-center">
|
||||
<h2 style="margin: 0">Day 2</h2>
|
||||
@@ -420,7 +420,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4" data-snippet-id="colmd">
|
||||
<div class="col-md-4">
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading text-center">
|
||||
<h2 style="margin: 0">Day 3</h2>
|
||||
@@ -445,11 +445,11 @@
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center mb16 mt0" data-snippet-id="colmd">
|
||||
<div class="col-md-12 text-center mb16 mt0">
|
||||
<h2>Requirements</h2>
|
||||
</div>
|
||||
|
||||
<div class="col-md-12 mb16 mt16" data-snippet-id="colmd">
|
||||
<div class="col-md-12 mb16 mt16">
|
||||
<p><strong>Objectives:</strong></p>
|
||||
|
||||
<p><strong>Having attended this course, participants should be able to:</strong></p>
|
||||
@@ -481,20 +481,20 @@
|
||||
|
||||
<div class="container oe_dark">
|
||||
<div class="row">
|
||||
<div class="col-md-12" data-snippet-id="colmd">
|
||||
<div class="col-md-12">
|
||||
<h1 class="text-center">Read Great Contents</h1>
|
||||
|
||||
<h3 class="text-muted text-center">What do people say about this course?</h3>
|
||||
</div>
|
||||
|
||||
<div class="mt16 mb32 col-md-6" data-snippet-id="colmd">
|
||||
<blockquote data-snippet-id="quote">
|
||||
<div class="mt16 mb32 col-md-6">
|
||||
<blockquote>
|
||||
<p>I did not expect such a great learning experience. I feel like I can develop anything now.</p>
|
||||
<small>John Doe, CEO</small></blockquote>
|
||||
</div>
|
||||
|
||||
<div class="mt16 mb32 col-md-6" data-snippet-id="colmd">
|
||||
<blockquote data-snippet-id="quote">
|
||||
<div class="mt16 mb32 col-md-6">
|
||||
<blockquote>
|
||||
<p>This course help me build my first application within a month. Definetly worth its price.</p>
|
||||
<small>John Doe, CEO</small></blockquote>
|
||||
</div>
|
||||
|
||||
@@ -229,7 +229,7 @@
|
||||
|
||||
<template id="template_location">
|
||||
<t t-call="website_event.layout">
|
||||
<section class="container" data-snippet-id="title">
|
||||
<section class="container">
|
||||
<h1 class="text-center">Event Location</h1>
|
||||
</section>
|
||||
<div class="oe_structure oe_empty"/>
|
||||
@@ -238,7 +238,7 @@
|
||||
|
||||
<template id="template_intro">
|
||||
<t t-call="website_event.layout">
|
||||
<section class="container" data-snippet-id="title">
|
||||
<section class="container">
|
||||
<h1 class="text-center">Event Introduction</h1>
|
||||
</section>
|
||||
<div class="oe_structure oe_empty"/>
|
||||
@@ -382,7 +382,7 @@
|
||||
</div>
|
||||
</xpath>
|
||||
<xpath expr="//div[@id='snippet_options']" position="inside">
|
||||
<div data-snippet-option-id='country_events'
|
||||
<div data-option='country_events'
|
||||
data-selector=".oe_country_events"
|
||||
data-selector-siblings="p, h1, h2, h3, blockquote, .well, .panel"
|
||||
data-selector-children=".content"
|
||||
|
||||
@@ -151,7 +151,7 @@ class website_event(http.Controller):
|
||||
tags.append(tag.id)
|
||||
|
||||
e = openerp.tools.escape
|
||||
track_description = '''<section data-snippet-id="text-block">
|
||||
track_description = '''<section data-option="text-block">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<template name="Sponsors" id="event_sponsor" optional="enabled" inherit_id="website_event.layout">
|
||||
<xpath expr="//div[@id='wrap']" position="inside">
|
||||
<div class="container mt32 mb16 hidden-print" t-if="event.sponsor_ids">
|
||||
<section data-snippet-id="title">
|
||||
<section>
|
||||
<h2 class="text-center mb32">Our Sponsors</h2>
|
||||
</section>
|
||||
<div class="row">
|
||||
@@ -267,7 +267,7 @@
|
||||
<t t-call="website_event.layout">
|
||||
<div class="oe_structure"/>
|
||||
<div class="container">
|
||||
<section data-snippet-id="title">
|
||||
<section>
|
||||
<h1 class="text-center mb0">Call for Proposals</h1>
|
||||
<h2 class="text-center text-muted mb32" t-esc="event.name"></h2>
|
||||
</section>
|
||||
@@ -280,7 +280,7 @@
|
||||
<section class="row">
|
||||
<div class="col-md-8">
|
||||
<div class="oe_structure">
|
||||
<section data-snippet-id="text">
|
||||
<section>
|
||||
<h3 class="page-header mt16">
|
||||
Introduction
|
||||
</h3>
|
||||
@@ -294,7 +294,7 @@
|
||||
inclusion in the programme.
|
||||
</p>
|
||||
</section>
|
||||
<section data-snippet-id="text">
|
||||
<section>
|
||||
<h3 class="page-header">Application</h3>
|
||||
<p>
|
||||
Fill this form to propose your talk.
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<record id="hr.job_marketing" model="hr.job">
|
||||
<field name="website_published">True</field>
|
||||
<field name="website_description" type="html">
|
||||
<section data-snippet-id="text-block" class="mt16 mb16 oe_dark">
|
||||
<section class="mt16 mb16 oe_dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-offset-1 col-md-10 mb16 mt16">
|
||||
@@ -15,7 +15,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="pricing" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-4 mt16">
|
||||
@@ -92,7 +92,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="image-text" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
@@ -107,7 +107,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="image-text" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
@@ -137,7 +137,7 @@
|
||||
<record id="hr.job_developer" model="hr.job">
|
||||
<field name="website_published">True</field>
|
||||
<field name="website_description" type="html">
|
||||
<section data-snippet-id="text-block" class="mt16 mb16 oe_dark">
|
||||
<section class="mt16 mb16 oe_dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-offset-1 col-md-10 mb16 mt16">
|
||||
@@ -146,7 +146,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="pricing" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-4 mt16">
|
||||
@@ -225,7 +225,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="image-text" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
@@ -240,7 +240,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="image-text" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
@@ -270,7 +270,7 @@
|
||||
<record id="hr.job_consultant" model="hr.job">
|
||||
<field name="website_published">True</field>
|
||||
<field name="website_description" type="html">
|
||||
<section data-snippet-id="text-block" class="mt16 mb16 oe_dark">
|
||||
<section class="mt16 mb16 oe_dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-offset-1 col-md-10 mb16 mt16">
|
||||
@@ -279,7 +279,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="pricing" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-4 mt16">
|
||||
@@ -359,7 +359,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="image-text" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
@@ -374,7 +374,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="image-text" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
@@ -403,7 +403,7 @@
|
||||
|
||||
<record id="hr.job_ceo" model="hr.job">
|
||||
<field name="website_description" type="html">
|
||||
<section data-snippet-id="text-block" class="mt16 mb16 oe_dark">
|
||||
<section class="mt16 mb16 oe_dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-offset-1 col-md-10 mb16 mt16">
|
||||
@@ -413,7 +413,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="pricing" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-4 mt16">
|
||||
@@ -488,7 +488,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="image-text" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
@@ -503,7 +503,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="image-text" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
@@ -532,7 +532,7 @@
|
||||
|
||||
<record id="hr.job_cto" model="hr.job">
|
||||
<field name="website_description" type="html">
|
||||
<section data-snippet-id="text-block" class="mt16 mb16 oe_dark">
|
||||
<section class="mt16 mb16 oe_dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-offset-1 col-md-10 mb16 mt16">
|
||||
@@ -541,7 +541,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="pricing" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-4 mt16">
|
||||
@@ -616,7 +616,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="image-text" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
@@ -631,7 +631,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="image-text" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
@@ -660,7 +660,7 @@
|
||||
|
||||
<record id="hr.job_trainee" model="hr.job">
|
||||
<field name="website_description" type="html">
|
||||
<section data-snippet-id="text-block" class="mt16 mb16 oe_dark">
|
||||
<section class="mt16 mb16 oe_dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-offset-1 col-md-10 mb16 mt16">
|
||||
@@ -669,7 +669,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="pricing" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-4 mt16">
|
||||
@@ -744,7 +744,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="image-text" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
@@ -759,7 +759,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="image-text" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
@@ -788,7 +788,7 @@
|
||||
|
||||
<record id="hr.job_hrm" model="hr.job">
|
||||
<field name="website_description" type="html">
|
||||
<section data-snippet-id="text-block" class="mt16 mb16 oe_dark">
|
||||
<section class="mt16 mb16 oe_dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-offset-1 col-md-10 mb16 mt16">
|
||||
@@ -798,7 +798,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="pricing" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-4 mt16" style="width:30%;">
|
||||
@@ -873,7 +873,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="image-text" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
@@ -888,7 +888,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="image-text" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center">
|
||||
|
||||
@@ -12,14 +12,14 @@
|
||||
<t t-call="website.layout">
|
||||
<div id="wrap">
|
||||
<div class="oe_structure">
|
||||
<section data-snippet-id="text-block" class="mb16">
|
||||
<section class="mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center mb16" data-snippet-id="colmd">
|
||||
<div class="col-md-12 text-center mb16">
|
||||
<h2>Our Job Offers</h2>
|
||||
<h3 class="text-muted">Join us and help disrupt the enterprise market!</h3>
|
||||
</div>
|
||||
<div class="col-md-12" data-snippet-id="colmd">
|
||||
<div class="col-md-12">
|
||||
<p>
|
||||
With a small team of smart people, we released the most
|
||||
disruptive enterprise management software in the world.
|
||||
@@ -123,7 +123,7 @@
|
||||
<div t-field="job.website_description"/>
|
||||
|
||||
<div class="oe_structure">
|
||||
<section data-snippet-id="cta" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center mt16 mb16">
|
||||
@@ -210,7 +210,7 @@
|
||||
we will get back to you soon.
|
||||
</p>
|
||||
</div>
|
||||
<section data-snippet-id="cta" class="oe_dark">
|
||||
<section class="oe_dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center mt16 mb16">
|
||||
|
||||
@@ -481,7 +481,7 @@
|
||||
</div>
|
||||
|
||||
<div id="snippet_options" class="hidden">
|
||||
<div data-snippet-option-id='content'
|
||||
<div data-option='content'
|
||||
data-selector="[data-oe-field='body_html'] > div, .oe_snippet_body"
|
||||
data-selector-siblings="[data-oe-field='body_html'] > *"
|
||||
data-selector-children="[data-oe-field='body_html']">
|
||||
|
||||
@@ -5,8 +5,9 @@
|
||||
var _t = openerp._t;
|
||||
|
||||
website.snippet.options.subscribe = website.snippet.Option.extend({
|
||||
on_prompt: function () {
|
||||
choose_mailing_list: function (type, value) {
|
||||
var self = this;
|
||||
if (type !== "click") return;
|
||||
return website.prompt({
|
||||
id: "editor_new_subscribe_button",
|
||||
window_title: _t("Add a Subscribe Button"),
|
||||
@@ -22,15 +23,10 @@
|
||||
drop_and_build_snippet: function() {
|
||||
var self = this;
|
||||
this._super();
|
||||
this.on_prompt().fail(function () {
|
||||
this.choose_mailing_list("click").fail(function () {
|
||||
self.editor.on_remove();
|
||||
});
|
||||
},
|
||||
start : function () {
|
||||
var self = this;
|
||||
this.$el.find(".js_mailing_list").on("click", _.bind(this.on_prompt, this));
|
||||
this._super();
|
||||
},
|
||||
clean_for_save: function () {
|
||||
this.$target.addClass("hidden");
|
||||
},
|
||||
|
||||
@@ -37,13 +37,11 @@
|
||||
|
||||
|
||||
<xpath expr="//div[@id='snippet_options']" position="inside">
|
||||
<div data-snippet-option-id='subscribe'
|
||||
<div data-option='subscribe'
|
||||
data-selector=".js_follow_alias"
|
||||
data-selector-siblings="p, h1, h2, h3, blockquote, .well, .panel"
|
||||
>
|
||||
<li>
|
||||
<a href="#" class="button js_mailing_list">Change Discussion List</a>
|
||||
</li>
|
||||
<li data-choose_mailing_list=""><a>Change Discussion List</a></li>
|
||||
</div>
|
||||
</xpath>
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<t t-set="additional_title">Members</t>
|
||||
<div id="wrap">
|
||||
<div class="oe_structure">
|
||||
<section data-snippet-id="title">
|
||||
<section>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
|
||||
@@ -54,10 +54,10 @@
|
||||
<field name="number_of_days">45</field>
|
||||
<field name="website_description" type="xml">
|
||||
|
||||
<section data-snippet-id="title">
|
||||
<section>
|
||||
<h1 class="page-header">Our Partnership Offer</h1>
|
||||
</section>
|
||||
<section data-snippet-id="text-block">
|
||||
<section>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<p>
|
||||
@@ -78,7 +78,7 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section data-snippet-id="pricing">
|
||||
<section>
|
||||
<div class="row mt32">
|
||||
<div class="col-md-4">
|
||||
<div class="panel panel-info">
|
||||
@@ -133,7 +133,7 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section data-snippet-id="text-block">
|
||||
<section>
|
||||
<h2>A Dedicated Account Manager</h2>
|
||||
<p>
|
||||
We will assign you a dedicated account manager, an
|
||||
@@ -145,7 +145,7 @@
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section data-snippet-id="text-block">
|
||||
<section>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h2>Get access to our experts</h2>
|
||||
@@ -165,7 +165,7 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section data-snippet-id="text-block">
|
||||
<section>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h2>Official certified partner</h2>
|
||||
@@ -186,7 +186,7 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section data-snippet-id="text-block">
|
||||
<section>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h2>Access to the Lead</h2>
|
||||
@@ -207,8 +207,8 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section data-snippet-id="text-block">
|
||||
<h2>Benefit from the Odoo branding</h2>
|
||||
<section>
|
||||
<h2>Benefit from the OpenERP branding</h2>
|
||||
<p>
|
||||
Every year, we redirect more than 100,000 customer
|
||||
requests to our official partners. These are prospects
|
||||
@@ -219,7 +219,7 @@
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section class="mb32" data-snippet-id="text-block">
|
||||
<section class="mb32">
|
||||
<h2>Test developments automatically</h2>
|
||||
<div class="row">
|
||||
<div class="col-md-5">
|
||||
@@ -254,10 +254,10 @@
|
||||
<field name="price_unit">12950.00</field>
|
||||
<field name="discount">10.00</field>
|
||||
<field name="website_description" type="html">
|
||||
<section data-snippet-id="title">
|
||||
<section>
|
||||
<h1>Online Training + Certification</h1>
|
||||
</section>
|
||||
<section data-snippet-id="text-image">
|
||||
<section>
|
||||
<div class="row">
|
||||
<div class="col-md-12 mb32">
|
||||
<p>These courses feature the same high quality course content found in our traditional classroom trainings, supplemented with modular sessions and cloud-based labs. Many of our online learning courses also include dozens of recorded webinars and live sessions by our senior instructors. At the end of the training, you can pass the Odoo Certification exam in one of the 5000+ Pearson VUE test centers worldwide.</p>
|
||||
@@ -298,26 +298,26 @@
|
||||
<field name="product_uom_id" ref="product.product_uom_unit"/>
|
||||
<field name="price_unit">00.00</field>
|
||||
<field name="website_description" type="html">
|
||||
<section data-snippet-id="title">
|
||||
<section>
|
||||
<h1>Technical Training</h1>
|
||||
</section>
|
||||
<section id="whatsuit" data-snippet-id="text-block">
|
||||
<section id="whatsuit">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center mb8 mt0" data-snippet-id="colmd">
|
||||
<div class="col-md-12 text-center mb8 mt0">
|
||||
<h2>Course Summary</h2>
|
||||
</div>
|
||||
<div class="col-md-12 mt16 mb0" data-snippet-id="colmd">
|
||||
<div class="col-md-12 mt16 mb0">
|
||||
<p><span style="text-align: -webkit-center; ">This course is dedicated to developers who need to grasp knowledge of the <strong>business applications development </strong>process. This course is for new developers or for IT professionals eager to learn more about technical aspects.</span></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center mt0 mb16" data-snippet-id="colmd">
|
||||
<div class="col-md-12 text-center mt0 mb16">
|
||||
<h2>What you will learn?</h2>
|
||||
</div>
|
||||
<div class="col-md-4" data-snippet-id="colmd">
|
||||
<div class="col-md-4">
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading text-center">
|
||||
<h3 style="margin: 0">Day 1</h3>
|
||||
@@ -336,7 +336,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4" data-snippet-id="colmd">
|
||||
<div class="col-md-4">
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading text-center">
|
||||
<h3 style="margin: 0">Day 2</h3>
|
||||
@@ -357,7 +357,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4" data-snippet-id="colmd">
|
||||
<div class="col-md-4">
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading text-center">
|
||||
<h3 style="margin: 0">Day 3</h3>
|
||||
@@ -383,11 +383,11 @@
|
||||
</div>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center mb16 mt0" data-snippet-id="colmd">
|
||||
<div class="col-md-12 text-center mb16 mt0">
|
||||
<h2>Requirements</h2>
|
||||
</div>
|
||||
|
||||
<div class="col-md-12 mb16 mt16" data-snippet-id="colmd">
|
||||
<div class="col-md-12 mb16 mt16">
|
||||
<p><strong>Objectives:</strong></p>
|
||||
|
||||
<p><strong>Having attended this course, participants should be able to:</strong></p>
|
||||
@@ -427,16 +427,16 @@
|
||||
<field name="price_unit">9000.00</field>
|
||||
<field name="discount">10</field>
|
||||
<field name="website_description" type="html">
|
||||
<section data-snippet-id="title">
|
||||
<section>
|
||||
<h1>Advanced CRM Functional</h1>
|
||||
</section>
|
||||
<section data-snippet-id="text-image">
|
||||
<section>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center mb8 mt0" data-snippet-id="colmd">
|
||||
<div class="col-md-12 text-center mb8 mt0">
|
||||
<h2>Objectives</h2>
|
||||
</div>
|
||||
<div class="col-md-12 mt16 mb0" data-snippet-id="colmd">
|
||||
<div class="col-md-12 mt16 mb0">
|
||||
<p><span style="text-align: -webkit-center; ">Upon completion of the training, the participant will be able to:</span></p>
|
||||
<ul class="list-group">
|
||||
<li class="list-group-item"> Install and administer Odoo.</li>
|
||||
@@ -453,10 +453,10 @@
|
||||
</div>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center mt0 mb16" data-snippet-id="colmd">
|
||||
<div class="col-md-12 text-center mt0 mb16">
|
||||
<h2>What you will learn?</h2>
|
||||
</div>
|
||||
<div class="col-md-4" data-snippet-id="colmd">
|
||||
<div class="col-md-4">
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading text-center">
|
||||
<h3 style="margin: 0">Day 1</h3>
|
||||
@@ -472,7 +472,7 @@
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4" data-snippet-id="colmd">
|
||||
<div class="col-md-4">
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading text-center">
|
||||
<h3 style="margin: 0">Day 2</h3>
|
||||
@@ -488,7 +488,7 @@
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4" data-snippet-id="colmd">
|
||||
<div class="col-md-4">
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading text-center">
|
||||
<h3 style="margin: 0">Day 3</h3>
|
||||
@@ -508,7 +508,7 @@
|
||||
</div>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 mb16 mt16" data-snippet-id="colmd">
|
||||
<div class="col-md-12 mb16 mt16">
|
||||
<h2>Requirements</h2>
|
||||
|
||||
<ul><li>Bring your own laptop.</li>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<openerp>
|
||||
<data>
|
||||
<template id="pricing" name="Price">
|
||||
<section data-snippet-id="title">
|
||||
<section>
|
||||
<h1 class="page-header">Pricing</h1>
|
||||
</section>
|
||||
<section id="quote">
|
||||
@@ -404,7 +404,7 @@
|
||||
|
||||
<template id="optional_products">
|
||||
<div class="container mt32" t-if="option">
|
||||
<section data-snippet-id="title">
|
||||
<section>
|
||||
<h1 class="page-header">Options</h1>
|
||||
</section>
|
||||
<section id="options">
|
||||
|
||||
@@ -16,6 +16,7 @@ OpenERP E-Commerce
|
||||
'views/templates.xml',
|
||||
'views/payment.xml',
|
||||
'views/sale_order.xml',
|
||||
'views/snippets.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'security/website_sale.xml',
|
||||
],
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<field name="website_sequence">5</field>
|
||||
<field name="website_style_ids" eval="[(6,0,[ref('website_sale.image_full')])]"/>
|
||||
<field name="website_description" type="html">
|
||||
<section data-snippet-id="text-image" class="mt16 mb16 oe_dark">
|
||||
<section class="mt16 mb16 oe_dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-5 col-md-offset-1 mt64">
|
||||
@@ -37,7 +37,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="image-text" class="mt16">
|
||||
<section class="mt16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-5 col-md-offset-1">
|
||||
@@ -65,7 +65,7 @@
|
||||
<field name="website_size_x">2</field>
|
||||
<field name="website_style_ids" eval="[(6,0,[ref('website_sale.image_promo')])]"/>
|
||||
<field name="website_description" type="html">
|
||||
<section data-snippet-id="text-image" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-5 col-md-offset-1 mt32">
|
||||
@@ -77,7 +77,7 @@
|
||||
experience music just about anywhere.
|
||||
</p>
|
||||
|
||||
<div class="panel panel-default mt48" data-snippet-id="panel">
|
||||
<div class="panel panel-default mt48">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">Characteristics</h3>
|
||||
</div>
|
||||
@@ -101,7 +101,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="text-image" class="mt16 mb16 oe_dark">
|
||||
<section class="mt16 mb16 oe_dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-5 col-md-offset-1 mt16">
|
||||
@@ -135,7 +135,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="text-image" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-5 col-md-offset-1 mt32 mb16">
|
||||
@@ -179,7 +179,7 @@ Ultrafast wireless
|
||||
iOS7
|
||||
</field>
|
||||
<field name="website_description" type="html">
|
||||
<section data-snippet-id="text-image" class="mb16 oe_dark">
|
||||
<section class="mb16 oe_dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-5 col-md-offset-1 mt64">
|
||||
@@ -198,7 +198,7 @@ iOS7
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="image-text" class="mt16">
|
||||
<section class="mt16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-5 col-md-offset-1">
|
||||
@@ -217,7 +217,7 @@ iOS7
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="text-image" class="mb16 oe_dark">
|
||||
<section class="mb16 oe_dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-5 col-md-offset-1 mt32">
|
||||
@@ -236,7 +236,7 @@ iOS7
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="image-text" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-5 col-md-offset-1">
|
||||
@@ -255,7 +255,7 @@ iOS7
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="text-image" class="mt16 mb16 oe_dark">
|
||||
<section class="mt16 mb16 oe_dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-5 col-md-offset-1 mt64">
|
||||
@@ -290,7 +290,7 @@ Cable length: 1065 mm
|
||||
Weight: 0.4 ounce
|
||||
</field>
|
||||
<field name="website_description" type="html">
|
||||
<section data-snippet-id="text-image" class="mt32">
|
||||
<section class="mt32">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-8 col-md-offset-2 text-center">
|
||||
@@ -346,7 +346,7 @@ Weight: 0.4 ounce
|
||||
Intel Iris Pro graphics
|
||||
</field>
|
||||
<field name="website_description" type="html">
|
||||
<section data-snippet-id="image-text">
|
||||
<section>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-5 mt32 col-md-offset-1">
|
||||
@@ -362,7 +362,7 @@ Weight: 0.4 ounce
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="text-image" class="mb16 oe_dark">
|
||||
<section class="mb16 oe_dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="text-center col-md-8 col-md-offset-2 mt16">
|
||||
@@ -378,7 +378,7 @@ Weight: 0.4 ounce
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="image-text" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-5 col-md-offset-1 mt64">
|
||||
@@ -418,7 +418,7 @@ Weight: 0.4 ounce
|
||||
</field>
|
||||
<field name="website_description" type="html">
|
||||
<hr/>
|
||||
<section data-snippet-id="image-text" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-10 col-md-offset-1 mt32 mb32">
|
||||
@@ -445,7 +445,7 @@ Width: 1.56 inches
|
||||
Depth: 0.21 inch
|
||||
Weight: 1.1 ounces</field>
|
||||
<field name="website_description" type="html">
|
||||
<section data-snippet-id="image-text" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-9 col-md-offset-1 mb16">
|
||||
@@ -454,7 +454,7 @@ Weight: 1.1 ounces</field>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="text-image" class="mt16 mb16 oe_dark">
|
||||
<section class="mt16 mb16 oe_dark">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-5 col-md-offset-1 mt64">
|
||||
@@ -475,7 +475,7 @@ Weight: 1.1 ounces</field>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="image-text" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-10 col-md-offset-1">
|
||||
@@ -505,7 +505,7 @@ Weight: 1.1 ounces</field>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section data-snippet-id="image-text" class="mt16 mb16">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center mb16">
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
@charset "utf-8";
|
||||
/* ---- Default Styles ---- */
|
||||
.oe_product {
|
||||
border: 1px solid rgba(100, 100, 100, 0.2);
|
||||
@@ -341,21 +342,10 @@ label.css_attribute_color.css_not_available {
|
||||
}
|
||||
|
||||
/* ---- Publish managment and options ---- */
|
||||
#products_grid .css_options {
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: -6px;
|
||||
left: 50%;
|
||||
z-index: 10;
|
||||
}
|
||||
#products_grid .css_options .dropdown {
|
||||
position: relative;
|
||||
left: -50%;
|
||||
}
|
||||
#products_grid .css_options .dropdown [name="size"] table {
|
||||
.oe_overlay_options .dropdown ul[name="size"] table {
|
||||
margin-left: 20px;
|
||||
}
|
||||
#products_grid .css_options .dropdown [name="size"] td {
|
||||
.oe_overlay_options .dropdown ul[name="size"] td {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 20px;
|
||||
@@ -363,20 +353,16 @@ label.css_attribute_color.css_not_available {
|
||||
border: 1px #dddddd solid;
|
||||
cursor: pointer;
|
||||
}
|
||||
#products_grid .css_options .dropdown [name="size"] td.selected {
|
||||
.oe_overlay_options .dropdown ul[name="size"] td.selected {
|
||||
background-color: #b1d4f1;
|
||||
}
|
||||
#products_grid .css_options .dropdown [name="size"] table.oe_hover td.selected {
|
||||
.oe_overlay_options .dropdown ul[name="size"] table.oe_hover td.selected {
|
||||
background-color: transparent;
|
||||
}
|
||||
#products_grid .css_options .dropdown [name="size"] table.oe_hover td.select {
|
||||
.oe_overlay_options .dropdown ul[name="size"] table.oe_hover td.select {
|
||||
background-color: #b1d4f1;
|
||||
}
|
||||
|
||||
.cke_editable #products_grid .oe_product_cart:hover > .css_options {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Wizard */
|
||||
ul.wizard {
|
||||
padding: 0;
|
||||
|
||||
@@ -289,16 +289,9 @@ label.css_attribute_color.css_not_available
|
||||
|
||||
/* ---- Publish managment and options ---- */
|
||||
|
||||
#products_grid .css_options
|
||||
display: none
|
||||
position: absolute
|
||||
top: -6px
|
||||
left: 50%
|
||||
z-index: 10
|
||||
.oe_overlay_options
|
||||
.dropdown
|
||||
position: relative
|
||||
left: -50%
|
||||
[name="size"]
|
||||
ul[name="size"]
|
||||
table
|
||||
margin-left: 20px
|
||||
td
|
||||
@@ -315,10 +308,6 @@ label.css_attribute_color.css_not_available
|
||||
table.oe_hover td.select
|
||||
background-color: #B1D4F1
|
||||
|
||||
.cke_editable
|
||||
#products_grid .oe_product_cart:hover > .css_options
|
||||
display: block
|
||||
|
||||
/* Wizard */
|
||||
|
||||
|
||||
|
||||
@@ -18,68 +18,83 @@
|
||||
},
|
||||
});
|
||||
|
||||
function reload_enable_editor() {
|
||||
var search = location.search.replace(/\?|$/, '?enable_editor=1&');
|
||||
location.href = location.href.replace(/(\?|#|$).*/, search + location.hash);
|
||||
}
|
||||
website.snippet.options.website_sale = website.snippet.Option.extend({
|
||||
start: function () {
|
||||
var self = this;
|
||||
this.product_tmpl_id = parseInt(this.$target.find('[data-oe-model="product.template"]').data('oe-id'));
|
||||
|
||||
$(document).on('click', '.js_options .js_go_to_top,.js_options .js_go_to_bottom,.js_options .js_go_up,.js_options .js_go_down', function (event) {
|
||||
var $a = $(event.currentTarget);
|
||||
var $data = $a.parents(".js_options:first");
|
||||
var sequence = "top";
|
||||
if ($a.hasClass('js_go_to_bottom'))
|
||||
sequence = "bottom";
|
||||
else if ($a.hasClass('js_go_up'))
|
||||
sequence = "up";
|
||||
else if ($a.hasClass('js_go_down'))
|
||||
sequence = "down";
|
||||
openerp.jsonRpc('/shop/change_sequence', 'call', {'id': $data.data('id'), 'sequence': sequence})
|
||||
.then(reload_enable_editor);
|
||||
});
|
||||
var size_x = parseInt(this.$target.attr("colspan") || 1);
|
||||
var size_y = parseInt(this.$target.attr("rowspan") || 1);
|
||||
|
||||
$(document).on('click', '.js_options ul[name="style"] a', function (event) {
|
||||
var $a = $(event.currentTarget);
|
||||
var $li = $a.parent();
|
||||
var $data = $a.parents(".js_options:first");
|
||||
var $product = $a.parents(".oe_product:first");
|
||||
var $size = this.$el.find('ul[name="size"]');
|
||||
var $select = $size.find('tr:eq(0) td:lt('+size_x+')');
|
||||
if (size_y >= 2) $select = $select.add($size.find('tr:eq(1) td:lt('+size_x+')'));
|
||||
if (size_y >= 3) $select = $select.add($size.find('tr:eq(2) td:lt('+size_x+')'));
|
||||
if (size_y >= 4) $select = $select.add($size.find('tr:eq(3) td:lt('+size_x+')'));
|
||||
$select.addClass("selected");
|
||||
|
||||
$li.parent().removeClass("active");
|
||||
openerp.jsonRpc('/shop/change_styles', 'call', {'id': $data.data('id'), 'style_id': $a.data("id")})
|
||||
.then(function (result) {
|
||||
$product.toggleClass($a.data("class"));
|
||||
$li.toggleClass("active", result);
|
||||
website.session.model('product.style')
|
||||
.call('search_read', [[]])
|
||||
.then(function (data) {
|
||||
var $ul = self.$el.find('ul[name="style"]');
|
||||
for (var k in data) {
|
||||
$ul.append(
|
||||
$('<li data-style="'+data[k]['id']+'" data-check_class="'+data[k]['html_class']+'"/>')
|
||||
.append( $('<a/>').text(data[k]['name']) ));
|
||||
}
|
||||
});
|
||||
|
||||
this.bind_resize();
|
||||
},
|
||||
reload: function () {
|
||||
if (location.href.match(/\?enable_editor/)) {
|
||||
location.reload();
|
||||
} else {
|
||||
location.href = location.href.replace(/\?(enable_editor=1&)?|#.*|$/, '?enable_editor=1&');
|
||||
}
|
||||
},
|
||||
bind_resize: function () {
|
||||
var self = this;
|
||||
this.$el.on('mouseenter', 'ul[name="size"] table', function (event) {
|
||||
$(event.currentTarget).addClass("oe_hover");
|
||||
});
|
||||
});
|
||||
this.$el.on('mouseleave', 'ul[name="size"] table', function (event) {
|
||||
$(event.currentTarget).removeClass("oe_hover");
|
||||
});
|
||||
this.$el.on('mouseover', 'ul[name="size"] td', function (event) {
|
||||
var $td = $(event.currentTarget);
|
||||
var $table = $td.closest("table");
|
||||
var x = $td.index()+1;
|
||||
var y = $td.parent().index()+1;
|
||||
|
||||
$(document).on('mouseenter', '#products_grid .js_options ul[name="size"] table', function (event) {
|
||||
$(event.currentTarget).addClass("oe_hover");
|
||||
});
|
||||
$(document).on('mouseleave', '#products_grid .js_options ul[name="size"] table', function (event) {
|
||||
$(event.currentTarget).removeClass("oe_hover");
|
||||
});
|
||||
$(document).on('mouseover', '#products_grid .js_options ul[name="size"] td', function (event) {
|
||||
var $td = $(event.currentTarget);
|
||||
var $table = $td.parents("table:first");
|
||||
var x = $td.index()+1;
|
||||
var y = $td.parent().index()+1;
|
||||
var tr = [];
|
||||
for (var yi=0; yi<y; yi++) tr.push("tr:eq("+yi+")");
|
||||
var $select_tr = $table.find(tr.join(","));
|
||||
var td = [];
|
||||
for (var xi=0; xi<x; xi++) td.push("td:eq("+xi+")");
|
||||
var $select_td = $select_tr.find(td.join(","));
|
||||
|
||||
var tr = [];
|
||||
for (var yi=0; yi<y; yi++) tr.push("tr:eq("+yi+")");
|
||||
var $select_tr = $table.find(tr.join(","));
|
||||
var td = [];
|
||||
for (var xi=0; xi<x; xi++) td.push("td:eq("+xi+")");
|
||||
var $select_td = $select_tr.find(td.join(","));
|
||||
|
||||
$table.find("td").removeClass("select");
|
||||
$select_td.addClass("select");
|
||||
});
|
||||
$(document).on('click', '#products_grid .js_options ul[name="size"] td', function (event) {
|
||||
var $td = $(event.currentTarget);
|
||||
var $data = $td.parents(".js_options:first");
|
||||
var x = $td.index()+1;
|
||||
var y = $td.parent().index()+1;
|
||||
openerp.jsonRpc('/shop/change_size', 'call', {'id': $data.data('id'), 'x': x, 'y': y})
|
||||
.then(reload_enable_editor);
|
||||
$table.find("td").removeClass("select");
|
||||
$select_td.addClass("select");
|
||||
});
|
||||
this.$el.on('click', 'ul[name="size"] td', function (event) {
|
||||
var $td = $(event.currentTarget);
|
||||
var $data = $td.closest(".js_options:first");
|
||||
var x = $td.index()+1;
|
||||
var y = $td.parent().index()+1;
|
||||
openerp.jsonRpc('/shop/change_size', 'call', {'id': self.product_tmpl_id, 'x': x, 'y': y})
|
||||
.then(self.reload);
|
||||
});
|
||||
},
|
||||
style: function (type, value, $li) {
|
||||
if(type !== "click") return;
|
||||
openerp.jsonRpc('/shop/change_styles', 'call', {'id': this.product_tmpl_id, 'style_id': value});
|
||||
},
|
||||
go_to: function (type, value) {
|
||||
if(type !== "click") return;
|
||||
openerp.jsonRpc('/shop/change_sequence', 'call', {'id': this.product_tmpl_id, 'sequence': value})
|
||||
.then(this.reload);
|
||||
}
|
||||
});
|
||||
|
||||
})();
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<template id="website_sale" inherit_id="website.snippets" name="Snippet Ecommerce">
|
||||
|
||||
<xpath expr="//div[@id='snippet_options']" position="inside">
|
||||
<div data-option='website_sale'
|
||||
data-selector=".oe_product.oe_grid"
|
||||
data-no-check="true">
|
||||
|
||||
<li class='dropdown-submenu'>
|
||||
<a tabindex="-1" href="#">Size</a>
|
||||
<ul class="dropdown-menu" name="size">
|
||||
<li><a href="#">
|
||||
<table>
|
||||
<tr><td class="selected"></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td></td><td></td><td></td></tr>
|
||||
</table>
|
||||
</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class='dropdown-submenu'>
|
||||
<a tabindex="-1" href="#">Styles</a>
|
||||
<ul class="dropdown-menu" name="style">
|
||||
</ul>
|
||||
</li>
|
||||
<li class='dropdown-submenu'>
|
||||
<a tabindex="-1" href="#">Promote</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li data-go_to="top"><a>Push to top</a></li>
|
||||
<li data-go_to="up"><a>Push up</a></li>
|
||||
<li data-go_to="down"><a>Push down</a></li>
|
||||
<li data-go_to="bottom"><a>Push to bottom</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</div>
|
||||
</xpath>
|
||||
|
||||
</template>
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -156,65 +156,6 @@
|
||||
t-attf-class="oe_product oe_grid oe-height-#{td_product['y']*2} #{ td_product['class'] }">
|
||||
|
||||
<div class="oe_product_cart" t-att-data-publish="product.website_published and 'on' or 'off'">
|
||||
|
||||
<div class="css_options" t-ignore="true" groups="base.group_website_publisher">
|
||||
<div t-attf-class="dropdown js_options" t-att-data-id="product.id">
|
||||
<button class="btn btn-default" t-att-id="'dopprod-%s' % product.id" role="button" data-toggle="dropdown">Options <span class="caret"></span></button>
|
||||
<ul class="dropdown-menu" role="menu" t-att-aria-labelledby="'dopprod-%s' % product.id">
|
||||
<li class='dropdown-submenu'>
|
||||
<a tabindex="-1" href="#">Size</a>
|
||||
<ul class="dropdown-menu" name="size">
|
||||
<li><a href="#">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="selected"></td>
|
||||
<td t-att-class="product.website_size_x > 1 and 'selected'"></td>
|
||||
<td t-att-class="product.website_size_x > 2 and 'selected'"></td>
|
||||
<td t-att-class="product.website_size_x > 3 and 'selected'"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td t-att-class="product.website_size_y > 1 and 'selected'"></td>
|
||||
<td t-att-class="product.website_size_y > 1 and product.website_size_x > 1 and 'selected'"></td>
|
||||
<td t-att-class="product.website_size_y > 1 and product.website_size_x > 2 and 'selected'"></td>
|
||||
<td t-att-class="product.website_size_y > 1 and product.website_size_x > 3 and 'selected'"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td t-att-class="product.website_size_y > 2 and 'selected'"></td>
|
||||
<td t-att-class="product.website_size_y > 2 and product.website_size_x > 1 and 'selected'"></td>
|
||||
<td t-att-class="product.website_size_y > 2 and product.website_size_x > 2 and 'selected'"></td>
|
||||
<td t-att-class="product.website_size_y > 2 and product.website_size_x > 3 and 'selected'"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td t-att-class="product.website_size_y > 3 and 'selected'"></td>
|
||||
<td t-att-class="product.website_size_y > 3 and product.website_size_x > 1 and 'selected'"></td>
|
||||
<td t-att-class="product.website_size_y > 3 and product.website_size_x > 2 and 'selected'"></td>
|
||||
<td t-att-class="product.website_size_y > 3 and product.website_size_x > 3 and 'selected'"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class='dropdown-submenu'>
|
||||
<a tabindex="-1" href="#">Styles</a>
|
||||
<ul class="dropdown-menu" name="style">
|
||||
<t t-foreach="styles" t-as="style">
|
||||
<li t-att-class="style_in_product(style, product) and 'active' or ''"><a href="#" t-att-data-id="style.id" t-att-data-class="style.html_class"><t t-esc="style.name"/></a></li>
|
||||
</t>
|
||||
</ul>
|
||||
</li>
|
||||
<li class='dropdown-submenu'>
|
||||
<a tabindex="-1" href="#">Promote</a>
|
||||
<ul class="dropdown-menu" name="sequence">
|
||||
<li><a href="#" class="js_go_to_top">Push to top</a></li>
|
||||
<li><a href="#" class="js_go_up">Push up</a>
|
||||
</li>
|
||||
<li><a href="#" class="js_go_down">Push down</a></li>
|
||||
<li><a href="#" class="js_go_to_bottom">Push to bottom</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<t t-set="product_image_big" t-value="td_product['x']+td_product['y'] > 2"/>
|
||||
<t t-call="website_sale.products_item"/>
|
||||
</div>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
</template>
|
||||
<template id="website_twitter_options" name="Twitter Options" inherit_id="website.snippet_options">
|
||||
<xpath expr="//div" position="after">
|
||||
<div data-snippet-option-id='twitter'
|
||||
<div data-option='twitter'
|
||||
data-selector=".twitter"
|
||||
data-selector-children=".oe_structure, [data-oe-type=html]">
|
||||
</div>
|
||||
|
||||
@@ -113,6 +113,11 @@
|
||||
<field name="sequence">16</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.module.category" id="module_category_theme">
|
||||
<field name="name">Theme</field>
|
||||
<field name="sequence">17</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.module.category" id="module_category_administration">
|
||||
<field name="name">Administration</field>
|
||||
<field name="sequence">100</field>
|
||||
|
||||
@@ -64,23 +64,23 @@ OERP_WEBSITE_HTML_1 = """
|
||||
<div>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center mt16 mb16" data-snippet-id="colmd">
|
||||
<div class="col-md-12 text-center mt16 mb16">
|
||||
<h2>OpenERP HR Features</h2>
|
||||
<h3 class="text-muted">Manage your company most important asset: People</h3>
|
||||
</div>
|
||||
<div class="col-md-4" data-snippet-id="colmd">
|
||||
<div class="col-md-4">
|
||||
<img class="img-rounded img-responsive" src="/website/static/src/img/china_thumb.jpg">
|
||||
<h4 class="mt16">Streamline Recruitments</h4>
|
||||
<p>Post job offers and keep track of each application received. Follow applicants in your recruitment process with the smart kanban view.</p>
|
||||
<p>Save time by automating some communications with email templates. Resumes are indexed automatically, allowing you to easily find for specific profiles.</p>
|
||||
</div>
|
||||
<div class="col-md-4" data-snippet-id="colmd">
|
||||
<div class="col-md-4">
|
||||
<img class="img-rounded img-responsive" src="/website/static/src/img/desert_thumb.jpg">
|
||||
<h4 class="mt16">Enterprise Social Network</h4>
|
||||
<p>Break down information silos. Share knowledge and best practices amongst all employees. Follow specific people or documents and join groups of interests to share expertise and documents.</p>
|
||||
<p>Interact with your collegues in real time with live chat.</p>
|
||||
</div>
|
||||
<div class="col-md-4" data-snippet-id="colmd">
|
||||
<div class="col-md-4">
|
||||
<img class="img-rounded img-responsive" src="/website/static/src/img/deers_thumb.jpg">
|
||||
<h4 class="mt16">Leaves Management</h4>
|
||||
<p>Keep track of the vacation days accrued by each employee. Employees enter their requests (paid holidays, sick leave, etc), for managers to approve and validate. It's all done in just a few clicks. The agenda of each employee is updated accordingly.</p>
|
||||
@@ -101,16 +101,16 @@ OERP_WEBSITE_HTML_1_OUT = [
|
||||
|
||||
OERP_WEBSITE_HTML_2 = """
|
||||
<div class="mt16 cke_widget_editable cke_widget_element oe_editable oe_dirty" data-oe-model="blog.post" data-oe-id="6" data-oe-field="content" data-oe-type="html" data-oe-translate="0" data-oe-expression="blog_post.content" data-cke-widget-data="{}" data-cke-widget-keep-attr="0" data-widget="oeref" contenteditable="true" data-cke-widget-editable="text">
|
||||
<section class="mt16 mb16" data-snippet-id="text-block">
|
||||
<section class="mt16 mb16">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center mt16 mb32" data-snippet-id="colmd">
|
||||
<div class="col-md-12 text-center mt16 mb32">
|
||||
<h2>
|
||||
OpenERP Project Management
|
||||
</h2>
|
||||
<h3 class="text-muted">Infinitely flexible. Incredibly easy to use.</h3>
|
||||
</div>
|
||||
<div class="col-md-12 mb16 mt16" data-snippet-id="colmd">
|
||||
<div class="col-md-12 mb16 mt16">
|
||||
<p>
|
||||
OpenERP's <b>collaborative and realtime</b> project
|
||||
management helps your team get work done. Keep
|
||||
@@ -128,13 +128,13 @@ OERP_WEBSITE_HTML_2 = """
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="" data-snippet-id="image-text">
|
||||
<section class="">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-6 mt16 mb16" data-snippet-id="colmd">
|
||||
<div class="col-md-6 mt16 mb16">
|
||||
<img class="img-responsive shadow" src="/website/static/src/img/image_text.jpg">
|
||||
</div>
|
||||
<div class="col-md-6 mt32" data-snippet-id="colmd">
|
||||
<div class="col-md-6 mt32">
|
||||
<h3>Manage Your Shops</h3>
|
||||
<p>
|
||||
OpenERP's Point of Sale introduces a super clean
|
||||
@@ -150,10 +150,10 @@ OERP_WEBSITE_HTML_2 = """
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="" data-snippet-id="text-image">
|
||||
<section class="">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-6 mt32" data-snippet-id="colmd">
|
||||
<div class="col-md-6 mt32">
|
||||
<h3>Enterprise Social Network</h3>
|
||||
<p>
|
||||
Make every employee feel more connected and engaged
|
||||
@@ -167,29 +167,29 @@ OERP_WEBSITE_HTML_2 = """
|
||||
and business applications.
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-md-6 mt16 mb16" data-snippet-id="colmd">
|
||||
<div class="col-md-6 mt16 mb16">
|
||||
<img class="img-responsive shadow" src="/website/static/src/img/text_image.png">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section><section class="" data-snippet-id="portfolio">
|
||||
</section><section class="">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-center mt16 mb32" data-snippet-id="colmd">
|
||||
<div class="col-md-12 text-center mt16 mb32">
|
||||
<h2>Our Porfolio</h2>
|
||||
<h4 class="text-muted">More than 500 successful projects</h4>
|
||||
</div>
|
||||
<div class="col-md-4" data-snippet-id="colmd">
|
||||
<div class="col-md-4">
|
||||
<img class="img-thumbnail img-responsive" src="/website/static/src/img/deers.jpg">
|
||||
<img class="img-thumbnail img-responsive" src="/website/static/src/img/desert.jpg">
|
||||
<img class="img-thumbnail img-responsive" src="/website/static/src/img/china.jpg">
|
||||
</div>
|
||||
<div class="col-md-4" data-snippet-id="colmd">
|
||||
<div class="col-md-4">
|
||||
<img class="img-thumbnail img-responsive" src="/website/static/src/img/desert.jpg">
|
||||
<img class="img-thumbnail img-responsive" src="/website/static/src/img/china.jpg">
|
||||
<img class="img-thumbnail img-responsive" src="/website/static/src/img/deers.jpg">
|
||||
</div>
|
||||
<div class="col-md-4" data-snippet-id="colmd">
|
||||
<div class="col-md-4">
|
||||
<img class="img-thumbnail img-responsive" src="/website/static/src/img/landscape.jpg">
|
||||
<img class="img-thumbnail img-responsive" src="/website/static/src/img/china.jpg">
|
||||
<img class="img-thumbnail img-responsive" src="/website/static/src/img/desert.jpg">
|
||||
|
||||
@@ -49,7 +49,7 @@ allowed_tags = clean.defs.tags | frozenset('article section header footer hgroup
|
||||
safe_attrs = clean.defs.safe_attrs | frozenset(
|
||||
['style',
|
||||
'data-oe-model', 'data-oe-id', 'data-oe-field', 'data-oe-type', 'data-oe-expression', 'data-oe-translate', 'data-oe-nodeid',
|
||||
'data-snippet-id', 'data-publish', 'data-id', 'data-res_id', 'data-member_id', 'data-view-id'
|
||||
'data-publish', 'data-id', 'data-res_id', 'data-member_id', 'data-view-id'
|
||||
])
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user